
mp_size_t __gmpn_hgcd(mp_ptr ap,mp_ptr bp,mp_size_t n,hgcd_matrix *M,mp_ptr tp)

{
  mp_size_t mVar1;
  int iVar2;
  mp_size_t mVar3;
  int iVar4;
  int iVar5;
  int iVar6;
  undefined *puVar7;
  int iVar8;
  mp_ptr tp_00;
  hgcd_matrix M1;
  
  puVar7 = PTR___stack_chk_guard_0009d540;
  iVar6 = n / 2;
  iVar4 = iVar6 + 1;
  mVar1 = *(mp_size_t *)PTR___stack_chk_guard_0009d540;
  if (iVar4 < n) {
    if (n < 400) {
      iVar5 = 0;
    }
    else {
      iVar8 = n * 3;
      iVar2 = (*(code *)PTR___gmpn_hgcd_reduce_0009d110)(M,ap,bp,n,iVar6,tp);
      iVar5 = iVar2;
      if (iVar2 != 0) {
        iVar5 = 1;
        n = iVar2;
      }
      while ((iVar8 >> 2) + 1 < n) {
        iVar2 = (*(code *)PTR___gmpn_hgcd_step_0009d51c)(n,ap,bp,iVar4,M,tp);
        if (iVar2 == 0) goto joined_r0x0005847c;
        iVar5 = 1;
        n = iVar2;
      }
      if (iVar6 + 3 < n) {
        iVar6 = (iVar4 * 2 - n) + 1;
        iVar8 = n - iVar6;
        (*(code *)PTR___gmpn_hgcd_matrix_init_0009d3bc)(&M1,iVar8,tp);
        tp_00 = tp + ((iVar8 + 1) / 2 + 1) * 4;
        mVar3 = __gmpn_hgcd(ap + iVar6,bp + iVar6,iVar8,&M1,tp_00);
        if (0 < mVar3) {
          n = (*(code *)PTR___gmpn_hgcd_matrix_adjust_0009d3a8)(&M1,iVar6 + mVar3,ap,bp,iVar6,tp_00)
          ;
          iVar5 = 1;
          (*(code *)PTR___gmpn_hgcd_matrix_mul_0009d1e8)(M,&M1,tp_00);
        }
      }
    }
    while (iVar6 = (*(code *)PTR___gmpn_hgcd_step_0009d51c)(n,ap,bp,iVar4,M,tp), iVar6 != 0) {
      iVar5 = 1;
      n = iVar6;
    }
joined_r0x0005847c:
    if (iVar5 != 0) goto LAB_000583b0;
  }
  n = 0;
LAB_000583b0:
  if (mVar1 != *(int *)puVar7) {
    puVar7 = PTR___stack_chk_fail_0009d4d0;
    (*(code *)PTR___stack_chk_fail_0009d4d0)();
    if (399 < mVar1) {
      if (mVar1 < 0x18f0001) {
        iVar4 = 0x20;
        if (0x18f00 < mVar1) {
          iVar4 = 0x18;
        }
        iVar6 = 9;
        if (0x18f00 >= mVar1) {
          iVar6 = 1;
        }
      }
      else {
        iVar4 = 0x10;
        iVar6 = 0x11;
      }
      mVar1 = (((uint)*(byte *)(*(int *)(puVar7 + 0x44bfc) + ((uint)((mVar1 + -1) / 399) >> iVar6))
               - iVar4) + 0x20) * 0x16 + (mVar1 + 3 >> 2) * 0x14 + 400;
    }
    return mVar1;
  }
  return n;
}



int __gmpn_hgcd(int param_1,int param_2,int param_3,undefined4 param_4,int param_5)

{
  int iVar1;
  int iVar2;
  int iVar3;
  int iVar4;
  int iVar5;
  undefined *puVar6;
  undefined1 auStack_44 [24];
  int local_2c;
  
  puVar6 = PTR___stack_chk_guard_0009d540;
  iVar4 = param_3 / 2;
  iVar2 = iVar4 + 1;
  local_2c = *(int *)PTR___stack_chk_guard_0009d540;
  if (iVar2 < param_3) {
    if (param_3 < 400) {
      iVar3 = 0;
    }
    else {
      iVar5 = param_3 * 3;
      iVar1 = (*(code *)PTR___gmpn_hgcd_reduce_0009d110)
                        (param_4,param_1,param_2,param_3,iVar4,param_5);
      iVar3 = iVar1;
      if (iVar1 != 0) {
        iVar3 = 1;
        param_3 = iVar1;
      }
      while ((iVar5 >> 2) + 1 < param_3) {
        iVar1 = (*(code *)PTR___gmpn_hgcd_step_0009d51c)
                          (param_3,param_1,param_2,iVar2,param_4,param_5);
        if (iVar1 == 0) goto joined_r0x0005847c;
        iVar3 = 1;
        param_3 = iVar1;
      }
      if (iVar4 + 3 < param_3) {
        iVar5 = (iVar2 * 2 - param_3) + 1;
        iVar4 = param_3 - iVar5;
        (*(code *)PTR___gmpn_hgcd_matrix_init_0009d3bc)(auStack_44,iVar4,param_5);
        iVar1 = param_5 + ((iVar4 + 1) / 2 + 1) * 0x10;
        iVar4 = __gmpn_hgcd(param_1 + iVar5 * 4,param_2 + iVar5 * 4,iVar4,auStack_44,iVar1);
        if (0 < iVar4) {
          param_3 = (*(code *)PTR___gmpn_hgcd_matrix_adjust_0009d3a8)
                              (auStack_44,iVar5 + iVar4,param_1,param_2,iVar5,iVar1);
          iVar3 = 1;
          (*(code *)PTR___gmpn_hgcd_matrix_mul_0009d1e8)(param_4,auStack_44,iVar1);
        }
      }
    }
    while (iVar4 = (*(code *)PTR___gmpn_hgcd_step_0009d51c)
                             (param_3,param_1,param_2,iVar2,param_4,param_5), iVar4 != 0) {
      iVar3 = 1;
      param_3 = iVar4;
    }
joined_r0x0005847c:
    if (iVar3 != 0) goto LAB_000583b0;
  }
  param_3 = 0;
LAB_000583b0:
  if (local_2c != *(int *)puVar6) {
    puVar6 = PTR___stack_chk_fail_0009d4d0;
    (*(code *)PTR___stack_chk_fail_0009d4d0)();
    if (399 < local_2c) {
      if (local_2c < 0x18f0001) {
        iVar2 = 0x20;
        if (0x18f00 < local_2c) {
          iVar2 = 0x18;
        }
        iVar4 = 9;
        if (0x18f00 >= local_2c) {
          iVar4 = 1;
        }
      }
      else {
        iVar2 = 0x10;
        iVar4 = 0x11;
      }
      local_2c = (((uint)*(byte *)(*(int *)(puVar6 + 0x44bfc) +
                                  ((uint)((local_2c + -1) / 399) >> iVar4)) - iVar2) + 0x20) * 0x16
                 + (local_2c + 3 >> 2) * 0x14 + 400;
    }
    return local_2c;
  }
  return param_3;
}


lui gp,0x5
addiu gp,gp,-0x32a4
addu gp,gp,t9
addiu sp,sp,-0x70
lw v0,-0x7b00(gp)
sw s6,0x60(sp)
srl s6,a2,0x1f
sw v0,0x20(sp)
addu s6,s6,a2
sw s0,0x48(sp)
sw gp,0x18(sp)
sra s6,s6,0x1
sw s1,0x4c(sp)
sw ra,0x6c(sp)
sw s8,0x68(sp)
addiu s0,s6,0x1
sw s7,0x64(sp)
sw s5,0x5c(sp)
sw s4,0x58(sp)
sw s3,0x54(sp)
sw s2,0x50(sp)
lw v0,0x0(v0)
lw s1,0x80(sp)
sw v0,0x44(sp)
slt v0,s0,a2
beq v0,zero,0x000583a8
_slti v0,a2,0x190
or s8,a2,zero
or s2,a0,zero
or s3,a1,zero
beq v0,zero,0x000583f0
_or s4,a3,zero
or s5,zero,zero
b 0x00058378
_or s6,s8,zero
li s5,0x1
or s6,v0,zero
lw t9,-0x7b24(gp)
or a3,s0,zero
sw s1,0x14(sp)
or a2,s3,zero
sw s4,0x10(sp)
or a1,s2,zero
jalr t9
_or a0,s6,zero
bne v0,zero,0x00058370
_lw gp,0x18(sp)
bne s5,zero,0x000583b0
_lw v1,0x20(sp)
or s6,zero,zero
lw v1,0x20(sp)
or v0,s6,zero
lw a0,0x44(sp)
lw v1,0x0(v1)
bne a0,v1,0x00058578
_lw ra,0x6c(sp)
lw s8,0x68(sp)
lw s7,0x64(sp)
lw s6,0x60(sp)
lw s5,0x5c(sp)
lw s4,0x58(sp)
lw s3,0x54(sp)
lw s2,0x50(sp)
lw s1,0x4c(sp)
lw s0,0x48(sp)
jr ra
_addiu sp,sp,0x70
sll s7,a2,0x1
lw t9,-0x7f30(gp)
or a3,a2,zero
sw s1,0x14(sp)
addu s7,s7,a2
sw s6,0x10(sp)
or a2,a1,zero
sra s7,s7,0x2
or a1,a0,zero
jalr t9
_or a0,s4,zero
addiu s7,s7,0x1
lw gp,0x18(sp)
bne v0,zero,0x0005848c
_or s5,v0,zero
slt v0,s7,s8
bne v0,zero,0x00058450
_or t0,s8,zero
b 0x0005849c
_addiu s6,s6,0x3
or s8,v0,zero
slt v0,s7,v0
beq v0,zero,0x00058498
_li s5,0x1
lw t9,-0x7b24(gp)
or a3,s0,zero
sw s1,0x14(sp)
or a2,s3,zero
sw s4,0x10(sp)
or a1,s2,zero
jalr t9
_or a0,s8,zero
lw gp,0x18(sp)
bne v0,zero,0x00058440
_or t0,v0,zero
beq s5,zero,0x000583a8
_or s6,s8,zero
b 0x000583b0
_lw v1,0x20(sp)
or s8,v0,zero
b 0x0005842c
_li s5,0x1
addiu s6,s6,0x3
slt s6,s6,t0
bne s6,zero,0x000584b0
_lw t9,-0x7c84(gp)
b 0x00058368
_or s8,t0,zero
sll s6,s0,0x1
addiu s7,sp,0x2c
sw t0,0x24(sp)
subu s6,s6,t0
or a2,s1,zero
addiu s6,s6,0x1
or a0,s7,zero
subu s8,t0,s6
jalr t9
_or a1,s8,zero
addiu v1,s8,0x1
lw gp,0x18(sp)
sll a0,s6,0x2
srl v0,v1,0x1f
or a2,s8,zero
addu v0,v0,v1
lw t9,-0x7fc0(gp)
addu a1,s3,a0
sra v1,v0,0x1
addu a0,s2,a0
addiu v1,v1,0x1
addiu t9,t9,-0x7d1c
sll v1,v1,0x4
or a3,s7,zero
addu s8,s1,v1
bal 0x000582e4
_sw s8,0x10(sp)
lw gp,0x18(sp)
blez v0,0x000584a8
_lw t0,0x24(sp)
lw t9,-0x7c98(gp)
addu a1,s6,v0
or a2,s2,zero
sw s8,0x14(sp)
or a0,s7,zero
sw s6,0x10(sp)
jalr t9
_or a3,s3,zero
or a2,s8,zero
lw gp,0x18(sp)
or a1,s7,zero
or a0,s4,zero
sw v0,0x24(sp)
lw t9,-0x7e58(gp)
jalr t9
_li s5,0x1
lw t0,0x24(sp)
lw gp,0x18(sp)
b 0x00058368
_or s8,t0,zero
lw t9,-0x7b70(gp)
jalr t9
_nop
nop
nop
nop
(translation_unit "int __gmpn_hgcd(int param_1,int param_2,int param_3,undefined4 param_4,int param_5)\n\n{\n  int iVar1;\n  int iVar2;\n  int iVar3;\n  int iVar4;\n  int iVar5;\n  undefined *puVar6;\n  undefined1 auStack_44 [24];\n  int local_2c;\n  \n  puVar6 = PTR___stack_chk_guard_0009d540;\n  iVar4 = param_3 / 2;\n  iVar2 = iVar4 + 1;\n  local_2c = *(int *)PTR___stack_chk_guard_0009d540;\n  if (iVar2 < param_3) {\n    if (param_3 < 400) {\n      iVar3 = 0;\n    }\n    else {\n      iVar5 = param_3 * 3;\n      iVar1 = (*(code *)PTR___gmpn_hgcd_reduce_0009d110)\n                        (param_4,param_1,param_2,param_3,iVar4,param_5);\n      iVar3 = iVar1;\n      if (iVar1 != 0) {\n        iVar3 = 1;\n        param_3 = iVar1;\n      }\n      while ((iVar5 >> 2) + 1 < param_3) {\n        iVar1 = (*(code *)PTR___gmpn_hgcd_step_0009d51c)\n                          (param_3,param_1,param_2,iVar2,param_4,param_5);\n        if (iVar1 == 0) goto joined_r0x0005847c;\n        iVar3 = 1;\n        param_3 = iVar1;\n      }\n      if (iVar4 + 3 < param_3) {\n        iVar5 = (iVar2 * 2 - param_3) + 1;\n        iVar4 = param_3 - iVar5;\n        (*(code *)PTR___gmpn_hgcd_matrix_init_0009d3bc)(auStack_44,iVar4,param_5);\n        iVar1 = param_5 + ((iVar4 + 1) / 2 + 1) * 0x10;\n        iVar4 = __gmpn_hgcd(param_1 + iVar5 * 4,param_2 + iVar5 * 4,iVar4,auStack_44,iVar1);\n        if (0 < iVar4) {\n          param_3 = (*(code *)PTR___gmpn_hgcd_matrix_adjust_0009d3a8)\n                              (auStack_44,iVar5 + iVar4,param_1,param_2,iVar5,iVar1);\n          iVar3 = 1;\n          (*(code *)PTR___gmpn_hgcd_matrix_mul_0009d1e8)(param_4,auStack_44,iVar1);\n        }\n      }\n    }\n    while (iVar4 = (*(code *)PTR___gmpn_hgcd_step_0009d51c)\n                             (param_3,param_1,param_2,iVar2,param_4,param_5), iVar4 != 0) {\n      iVar3 = 1;\n      param_3 = iVar4;\n    }\njoined_r0x0005847c:\n    if (iVar3 != 0) goto LAB_000583b0;\n  }\n  param_3 = 0;\nLAB_000583b0:\n  if (local_2c != *(int *)puVar6) {\n    puVar6 = PTR___stack_chk_fail_0009d4d0;\n    (*(code *)PTR___stack_chk_fail_0009d4d0)();\n    if (399 < local_2c) {\n      if (local_2c < 0x18f0001) {\n        iVar2 = 0x20;\n        if (0x18f00 < local_2c) {\n          iVar2 = 0x18;\n        }\n        iVar4 = 9;\n        if (0x18f00 >= local_2c) {\n          iVar4 = 1;\n        }\n      }\n      else {\n        iVar2 = 0x10;\n        iVar4 = 0x11;\n      }\n      local_2c = (((uint)*(byte *)(*(int *)(puVar6 + 0x44bfc) +\n                                  ((uint)((local_2c + -1) / 399) >> iVar4)) - iVar2) + 0x20) * 0x16\n                 + (local_2c + 3 >> 2) * 0x14 + 400;\n    }\n    return local_2c;\n  }\n  return param_3;\n}\n\n" (function_definition "int __gmpn_hgcd(int param_1,int param_2,int param_3,undefined4 param_4,int param_5)\n\n{\n  int iVar1;\n  int iVar2;\n  int iVar3;\n  int iVar4;\n  int iVar5;\n  undefined *puVar6;\n  undefined1 auStack_44 [24];\n  int local_2c;\n  \n  puVar6 = PTR___stack_chk_guard_0009d540;\n  iVar4 = param_3 / 2;\n  iVar2 = iVar4 + 1;\n  local_2c = *(int *)PTR___stack_chk_guard_0009d540;\n  if (iVar2 < param_3) {\n    if (param_3 < 400) {\n      iVar3 = 0;\n    }\n    else {\n      iVar5 = param_3 * 3;\n      iVar1 = (*(code *)PTR___gmpn_hgcd_reduce_0009d110)\n                        (param_4,param_1,param_2,param_3,iVar4,param_5);\n      iVar3 = iVar1;\n      if (iVar1 != 0) {\n        iVar3 = 1;\n        param_3 = iVar1;\n      }\n      while ((iVar5 >> 2) + 1 < param_3) {\n        iVar1 = (*(code *)PTR___gmpn_hgcd_step_0009d51c)\n                          (param_3,param_1,param_2,iVar2,param_4,param_5);\n        if (iVar1 == 0) goto joined_r0x0005847c;\n        iVar3 = 1;\n        param_3 = iVar1;\n      }\n      if (iVar4 + 3 < param_3) {\n        iVar5 = (iVar2 * 2 - param_3) + 1;\n        iVar4 = param_3 - iVar5;\n        (*(code *)PTR___gmpn_hgcd_matrix_init_0009d3bc)(auStack_44,iVar4,param_5);\n        iVar1 = param_5 + ((iVar4 + 1) / 2 + 1) * 0x10;\n        iVar4 = __gmpn_hgcd(param_1 + iVar5 * 4,param_2 + iVar5 * 4,iVar4,auStack_44,iVar1);\n        if (0 < iVar4) {\n          param_3 = (*(code *)PTR___gmpn_hgcd_matrix_adjust_0009d3a8)\n                              (auStack_44,iVar5 + iVar4,param_1,param_2,iVar5,iVar1);\n          iVar3 = 1;\n          (*(code *)PTR___gmpn_hgcd_matrix_mul_0009d1e8)(param_4,auStack_44,iVar1);\n        }\n      }\n    }\n    while (iVar4 = (*(code *)PTR___gmpn_hgcd_step_0009d51c)\n                             (param_3,param_1,param_2,iVar2,param_4,param_5), iVar4 != 0) {\n      iVar3 = 1;\n      param_3 = iVar4;\n    }\njoined_r0x0005847c:\n    if (iVar3 != 0) goto LAB_000583b0;\n  }\n  param_3 = 0;\nLAB_000583b0:\n  if (local_2c != *(int *)puVar6) {\n    puVar6 = PTR___stack_chk_fail_0009d4d0;\n    (*(code *)PTR___stack_chk_fail_0009d4d0)();\n    if (399 < local_2c) {\n      if (local_2c < 0x18f0001) {\n        iVar2 = 0x20;\n        if (0x18f00 < local_2c) {\n          iVar2 = 0x18;\n        }\n        iVar4 = 9;\n        if (0x18f00 >= local_2c) {\n          iVar4 = 1;\n        }\n      }\n      else {\n        iVar2 = 0x10;\n        iVar4 = 0x11;\n      }\n      local_2c = (((uint)*(byte *)(*(int *)(puVar6 + 0x44bfc) +\n                                  ((uint)((local_2c + -1) / 399) >> iVar4)) - iVar2) + 0x20) * 0x16\n                 + (local_2c + 3 >> 2) * 0x14 + 400;\n    }\n    return local_2c;\n  }\n  return param_3;\n}" primitive_type (function_declarator "__gmpn_hgcd(int param_1,int param_2,int param_3,undefined4 param_4,int param_5)" identifier (parameter_list "(int param_1,int param_2,int param_3,undefined4 param_4,int param_5)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "int param_2" primitive_type identifier) , (parameter_declaration "int param_3" primitive_type identifier) , (parameter_declaration "undefined4 param_4" type_identifier identifier) , (parameter_declaration "int param_5" primitive_type identifier) ))) (compound_statement "{\n  int iVar1;\n  int iVar2;\n  int iVar3;\n  int iVar4;\n  int iVar5;\n  undefined *puVar6;\n  undefined1 auStack_44 [24];\n  int local_2c;\n  \n  puVar6 = PTR___stack_chk_guard_0009d540;\n  iVar4 = param_3 / 2;\n  iVar2 = iVar4 + 1;\n  local_2c = *(int *)PTR___stack_chk_guard_0009d540;\n  if (iVar2 < param_3) {\n    if (param_3 < 400) {\n      iVar3 = 0;\n    }\n    else {\n      iVar5 = param_3 * 3;\n      iVar1 = (*(code *)PTR___gmpn_hgcd_reduce_0009d110)\n                        (param_4,param_1,param_2,param_3,iVar4,param_5);\n      iVar3 = iVar1;\n      if (iVar1 != 0) {\n        iVar3 = 1;\n        param_3 = iVar1;\n      }\n      while ((iVar5 >> 2) + 1 < param_3) {\n        iVar1 = (*(code *)PTR___gmpn_hgcd_step_0009d51c)\n                          (param_3,param_1,param_2,iVar2,param_4,param_5);\n        if (iVar1 == 0) goto joined_r0x0005847c;\n        iVar3 = 1;\n        param_3 = iVar1;\n      }\n      if (iVar4 + 3 < param_3) {\n        iVar5 = (iVar2 * 2 - param_3) + 1;\n        iVar4 = param_3 - iVar5;\n        (*(code *)PTR___gmpn_hgcd_matrix_init_0009d3bc)(auStack_44,iVar4,param_5);\n        iVar1 = param_5 + ((iVar4 + 1) / 2 + 1) * 0x10;\n        iVar4 = __gmpn_hgcd(param_1 + iVar5 * 4,param_2 + iVar5 * 4,iVar4,auStack_44,iVar1);\n        if (0 < iVar4) {\n          param_3 = (*(code *)PTR___gmpn_hgcd_matrix_adjust_0009d3a8)\n                              (auStack_44,iVar5 + iVar4,param_1,param_2,iVar5,iVar1);\n          iVar3 = 1;\n          (*(code *)PTR___gmpn_hgcd_matrix_mul_0009d1e8)(param_4,auStack_44,iVar1);\n        }\n      }\n    }\n    while (iVar4 = (*(code *)PTR___gmpn_hgcd_step_0009d51c)\n                             (param_3,param_1,param_2,iVar2,param_4,param_5), iVar4 != 0) {\n      iVar3 = 1;\n      param_3 = iVar4;\n    }\njoined_r0x0005847c:\n    if (iVar3 != 0) goto LAB_000583b0;\n  }\n  param_3 = 0;\nLAB_000583b0:\n  if (local_2c != *(int *)puVar6) {\n    puVar6 = PTR___stack_chk_fail_0009d4d0;\n    (*(code *)PTR___stack_chk_fail_0009d4d0)();\n    if (399 < local_2c) {\n      if (local_2c < 0x18f0001) {\n        iVar2 = 0x20;\n        if (0x18f00 < local_2c) {\n          iVar2 = 0x18;\n        }\n        iVar4 = 9;\n        if (0x18f00 >= local_2c) {\n          iVar4 = 1;\n        }\n      }\n      else {\n        iVar2 = 0x10;\n        iVar4 = 0x11;\n      }\n      local_2c = (((uint)*(byte *)(*(int *)(puVar6 + 0x44bfc) +\n                                  ((uint)((local_2c + -1) / 399) >> iVar4)) - iVar2) + 0x20) * 0x16\n                 + (local_2c + 3 >> 2) * 0x14 + 400;\n    }\n    return local_2c;\n  }\n  return param_3;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "undefined *puVar6;" type_identifier (pointer_declarator "*puVar6" * identifier) ;) (declaration "undefined1 auStack_44 [24];" type_identifier (array_declarator "auStack_44 [24]" identifier [ number_literal ]) ;) (declaration "int local_2c;" primitive_type identifier ;) (expression_statement "puVar6 = PTR___stack_chk_guard_0009d540;" (assignment_expression "puVar6 = PTR___stack_chk_guard_0009d540" identifier = identifier) ;) (expression_statement "iVar4 = param_3 / 2;" (assignment_expression "iVar4 = param_3 / 2" identifier = (binary_expression "param_3 / 2" identifier / number_literal)) ;) (expression_statement "iVar2 = iVar4 + 1;" (assignment_expression "iVar2 = iVar4 + 1" identifier = (binary_expression "iVar4 + 1" identifier + number_literal)) ;) (expression_statement "local_2c = *(int *)PTR___stack_chk_guard_0009d540;" (assignment_expression "local_2c = *(int *)PTR___stack_chk_guard_0009d540" identifier = (pointer_expression "*(int *)PTR___stack_chk_guard_0009d540" * (cast_expression "(int *)PTR___stack_chk_guard_0009d540" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;) (if_statement "if (iVar2 < param_3) {\n    if (param_3 < 400) {\n      iVar3 = 0;\n    }\n    else {\n      iVar5 = param_3 * 3;\n      iVar1 = (*(code *)PTR___gmpn_hgcd_reduce_0009d110)\n                        (param_4,param_1,param_2,param_3,iVar4,param_5);\n      iVar3 = iVar1;\n      if (iVar1 != 0) {\n        iVar3 = 1;\n        param_3 = iVar1;\n      }\n      while ((iVar5 >> 2) + 1 < param_3) {\n        iVar1 = (*(code *)PTR___gmpn_hgcd_step_0009d51c)\n                          (param_3,param_1,param_2,iVar2,param_4,param_5);\n        if (iVar1 == 0) goto joined_r0x0005847c;\n        iVar3 = 1;\n        param_3 = iVar1;\n      }\n      if (iVar4 + 3 < param_3) {\n        iVar5 = (iVar2 * 2 - param_3) + 1;\n        iVar4 = param_3 - iVar5;\n        (*(code *)PTR___gmpn_hgcd_matrix_init_0009d3bc)(auStack_44,iVar4,param_5);\n        iVar1 = param_5 + ((iVar4 + 1) / 2 + 1) * 0x10;\n        iVar4 = __gmpn_hgcd(param_1 + iVar5 * 4,param_2 + iVar5 * 4,iVar4,auStack_44,iVar1);\n        if (0 < iVar4) {\n          param_3 = (*(code *)PTR___gmpn_hgcd_matrix_adjust_0009d3a8)\n                              (auStack_44,iVar5 + iVar4,param_1,param_2,iVar5,iVar1);\n          iVar3 = 1;\n          (*(code *)PTR___gmpn_hgcd_matrix_mul_0009d1e8)(param_4,auStack_44,iVar1);\n        }\n      }\n    }\n    while (iVar4 = (*(code *)PTR___gmpn_hgcd_step_0009d51c)\n                             (param_3,param_1,param_2,iVar2,param_4,param_5), iVar4 != 0) {\n      iVar3 = 1;\n      param_3 = iVar4;\n    }\njoined_r0x0005847c:\n    if (iVar3 != 0) goto LAB_000583b0;\n  }" if (parenthesized_expression "(iVar2 < param_3)" ( (binary_expression "iVar2 < param_3" identifier < identifier) )) (compound_statement "{\n    if (param_3 < 400) {\n      iVar3 = 0;\n    }\n    else {\n      iVar5 = param_3 * 3;\n      iVar1 = (*(code *)PTR___gmpn_hgcd_reduce_0009d110)\n                        (param_4,param_1,param_2,param_3,iVar4,param_5);\n      iVar3 = iVar1;\n      if (iVar1 != 0) {\n        iVar3 = 1;\n        param_3 = iVar1;\n      }\n      while ((iVar5 >> 2) + 1 < param_3) {\n        iVar1 = (*(code *)PTR___gmpn_hgcd_step_0009d51c)\n                          (param_3,param_1,param_2,iVar2,param_4,param_5);\n        if (iVar1 == 0) goto joined_r0x0005847c;\n        iVar3 = 1;\n        param_3 = iVar1;\n      }\n      if (iVar4 + 3 < param_3) {\n        iVar5 = (iVar2 * 2 - param_3) + 1;\n        iVar4 = param_3 - iVar5;\n        (*(code *)PTR___gmpn_hgcd_matrix_init_0009d3bc)(auStack_44,iVar4,param_5);\n        iVar1 = param_5 + ((iVar4 + 1) / 2 + 1) * 0x10;\n        iVar4 = __gmpn_hgcd(param_1 + iVar5 * 4,param_2 + iVar5 * 4,iVar4,auStack_44,iVar1);\n        if (0 < iVar4) {\n          param_3 = (*(code *)PTR___gmpn_hgcd_matrix_adjust_0009d3a8)\n                              (auStack_44,iVar5 + iVar4,param_1,param_2,iVar5,iVar1);\n          iVar3 = 1;\n          (*(code *)PTR___gmpn_hgcd_matrix_mul_0009d1e8)(param_4,auStack_44,iVar1);\n        }\n      }\n    }\n    while (iVar4 = (*(code *)PTR___gmpn_hgcd_step_0009d51c)\n                             (param_3,param_1,param_2,iVar2,param_4,param_5), iVar4 != 0) {\n      iVar3 = 1;\n      param_3 = iVar4;\n    }\njoined_r0x0005847c:\n    if (iVar3 != 0) goto LAB_000583b0;\n  }" { (if_statement "if (param_3 < 400) {\n      iVar3 = 0;\n    }\n    else {\n      iVar5 = param_3 * 3;\n      iVar1 = (*(code *)PTR___gmpn_hgcd_reduce_0009d110)\n                        (param_4,param_1,param_2,param_3,iVar4,param_5);\n      iVar3 = iVar1;\n      if (iVar1 != 0) {\n        iVar3 = 1;\n        param_3 = iVar1;\n      }\n      while ((iVar5 >> 2) + 1 < param_3) {\n        iVar1 = (*(code *)PTR___gmpn_hgcd_step_0009d51c)\n                          (param_3,param_1,param_2,iVar2,param_4,param_5);\n        if (iVar1 == 0) goto joined_r0x0005847c;\n        iVar3 = 1;\n        param_3 = iVar1;\n      }\n      if (iVar4 + 3 < param_3) {\n        iVar5 = (iVar2 * 2 - param_3) + 1;\n        iVar4 = param_3 - iVar5;\n        (*(code *)PTR___gmpn_hgcd_matrix_init_0009d3bc)(auStack_44,iVar4,param_5);\n        iVar1 = param_5 + ((iVar4 + 1) / 2 + 1) * 0x10;\n        iVar4 = __gmpn_hgcd(param_1 + iVar5 * 4,param_2 + iVar5 * 4,iVar4,auStack_44,iVar1);\n        if (0 < iVar4) {\n          param_3 = (*(code *)PTR___gmpn_hgcd_matrix_adjust_0009d3a8)\n                              (auStack_44,iVar5 + iVar4,param_1,param_2,iVar5,iVar1);\n          iVar3 = 1;\n          (*(code *)PTR___gmpn_hgcd_matrix_mul_0009d1e8)(param_4,auStack_44,iVar1);\n        }\n      }\n    }" if (parenthesized_expression "(param_3 < 400)" ( (binary_expression "param_3 < 400" identifier < number_literal) )) (compound_statement "{\n      iVar3 = 0;\n    }" { (expression_statement "iVar3 = 0;" (assignment_expression "iVar3 = 0" identifier = number_literal) ;) }) (else_clause "else {\n      iVar5 = param_3 * 3;\n      iVar1 = (*(code *)PTR___gmpn_hgcd_reduce_0009d110)\n                        (param_4,param_1,param_2,param_3,iVar4,param_5);\n      iVar3 = iVar1;\n      if (iVar1 != 0) {\n        iVar3 = 1;\n        param_3 = iVar1;\n      }\n      while ((iVar5 >> 2) + 1 < param_3) {\n        iVar1 = (*(code *)PTR___gmpn_hgcd_step_0009d51c)\n                          (param_3,param_1,param_2,iVar2,param_4,param_5);\n        if (iVar1 == 0) goto joined_r0x0005847c;\n        iVar3 = 1;\n        param_3 = iVar1;\n      }\n      if (iVar4 + 3 < param_3) {\n        iVar5 = (iVar2 * 2 - param_3) + 1;\n        iVar4 = param_3 - iVar5;\n        (*(code *)PTR___gmpn_hgcd_matrix_init_0009d3bc)(auStack_44,iVar4,param_5);\n        iVar1 = param_5 + ((iVar4 + 1) / 2 + 1) * 0x10;\n        iVar4 = __gmpn_hgcd(param_1 + iVar5 * 4,param_2 + iVar5 * 4,iVar4,auStack_44,iVar1);\n        if (0 < iVar4) {\n          param_3 = (*(code *)PTR___gmpn_hgcd_matrix_adjust_0009d3a8)\n                              (auStack_44,iVar5 + iVar4,param_1,param_2,iVar5,iVar1);\n          iVar3 = 1;\n          (*(code *)PTR___gmpn_hgcd_matrix_mul_0009d1e8)(param_4,auStack_44,iVar1);\n        }\n      }\n    }" else (compound_statement "{\n      iVar5 = param_3 * 3;\n      iVar1 = (*(code *)PTR___gmpn_hgcd_reduce_0009d110)\n                        (param_4,param_1,param_2,param_3,iVar4,param_5);\n      iVar3 = iVar1;\n      if (iVar1 != 0) {\n        iVar3 = 1;\n        param_3 = iVar1;\n      }\n      while ((iVar5 >> 2) + 1 < param_3) {\n        iVar1 = (*(code *)PTR___gmpn_hgcd_step_0009d51c)\n                          (param_3,param_1,param_2,iVar2,param_4,param_5);\n        if (iVar1 == 0) goto joined_r0x0005847c;\n        iVar3 = 1;\n        param_3 = iVar1;\n      }\n      if (iVar4 + 3 < param_3) {\n        iVar5 = (iVar2 * 2 - param_3) + 1;\n        iVar4 = param_3 - iVar5;\n        (*(code *)PTR___gmpn_hgcd_matrix_init_0009d3bc)(auStack_44,iVar4,param_5);\n        iVar1 = param_5 + ((iVar4 + 1) / 2 + 1) * 0x10;\n        iVar4 = __gmpn_hgcd(param_1 + iVar5 * 4,param_2 + iVar5 * 4,iVar4,auStack_44,iVar1);\n        if (0 < iVar4) {\n          param_3 = (*(code *)PTR___gmpn_hgcd_matrix_adjust_0009d3a8)\n                              (auStack_44,iVar5 + iVar4,param_1,param_2,iVar5,iVar1);\n          iVar3 = 1;\n          (*(code *)PTR___gmpn_hgcd_matrix_mul_0009d1e8)(param_4,auStack_44,iVar1);\n        }\n      }\n    }" { (expression_statement "iVar5 = param_3 * 3;" (assignment_expression "iVar5 = param_3 * 3" identifier = (binary_expression "param_3 * 3" identifier * number_literal)) ;) (expression_statement "iVar1 = (*(code *)PTR___gmpn_hgcd_reduce_0009d110)\n                        (param_4,param_1,param_2,param_3,iVar4,param_5);" (assignment_expression "iVar1 = (*(code *)PTR___gmpn_hgcd_reduce_0009d110)\n                        (param_4,param_1,param_2,param_3,iVar4,param_5)" identifier = (call_expression "(*(code *)PTR___gmpn_hgcd_reduce_0009d110)\n                        (param_4,param_1,param_2,param_3,iVar4,param_5)" (parenthesized_expression "(*(code *)PTR___gmpn_hgcd_reduce_0009d110)" ( (pointer_expression "*(code *)PTR___gmpn_hgcd_reduce_0009d110" * (cast_expression "(code *)PTR___gmpn_hgcd_reduce_0009d110" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(param_4,param_1,param_2,param_3,iVar4,param_5)" ( identifier , identifier , identifier , identifier , identifier , identifier )))) ;) (expression_statement "iVar3 = iVar1;" (assignment_expression "iVar3 = iVar1" identifier = identifier) ;) (if_statement "if (iVar1 != 0) {\n        iVar3 = 1;\n        param_3 = iVar1;\n      }" if (parenthesized_expression "(iVar1 != 0)" ( (binary_expression "iVar1 != 0" identifier != number_literal) )) (compound_statement "{\n        iVar3 = 1;\n        param_3 = iVar1;\n      }" { (expression_statement "iVar3 = 1;" (assignment_expression "iVar3 = 1" identifier = number_literal) ;) (expression_statement "param_3 = iVar1;" (assignment_expression "param_3 = iVar1" identifier = identifier) ;) })) (while_statement "while ((iVar5 >> 2) + 1 < param_3) {\n        iVar1 = (*(code *)PTR___gmpn_hgcd_step_0009d51c)\n                          (param_3,param_1,param_2,iVar2,param_4,param_5);\n        if (iVar1 == 0) goto joined_r0x0005847c;\n        iVar3 = 1;\n        param_3 = iVar1;\n      }" while (parenthesized_expression "((iVar5 >> 2) + 1 < param_3)" ( (binary_expression "(iVar5 >> 2) + 1 < param_3" (binary_expression "(iVar5 >> 2) + 1" (parenthesized_expression "(iVar5 >> 2)" ( (binary_expression "iVar5 >> 2" identifier >> number_literal) )) + number_literal) < identifier) )) (compound_statement "{\n        iVar1 = (*(code *)PTR___gmpn_hgcd_step_0009d51c)\n                          (param_3,param_1,param_2,iVar2,param_4,param_5);\n        if (iVar1 == 0) goto joined_r0x0005847c;\n        iVar3 = 1;\n        param_3 = iVar1;\n      }" { (expression_statement "iVar1 = (*(code *)PTR___gmpn_hgcd_step_0009d51c)\n                          (param_3,param_1,param_2,iVar2,param_4,param_5);" (assignment_expression "iVar1 = (*(code *)PTR___gmpn_hgcd_step_0009d51c)\n                          (param_3,param_1,param_2,iVar2,param_4,param_5)" identifier = (call_expression "(*(code *)PTR___gmpn_hgcd_step_0009d51c)\n                          (param_3,param_1,param_2,iVar2,param_4,param_5)" (parenthesized_expression "(*(code *)PTR___gmpn_hgcd_step_0009d51c)" ( (pointer_expression "*(code *)PTR___gmpn_hgcd_step_0009d51c" * (cast_expression "(code *)PTR___gmpn_hgcd_step_0009d51c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(param_3,param_1,param_2,iVar2,param_4,param_5)" ( identifier , identifier , identifier , identifier , identifier , identifier )))) ;) (if_statement "if (iVar1 == 0) goto joined_r0x0005847c;" if (parenthesized_expression "(iVar1 == 0)" ( (binary_expression "iVar1 == 0" identifier == number_literal) )) (goto_statement "goto joined_r0x0005847c;" goto statement_identifier ;)) (expression_statement "iVar3 = 1;" (assignment_expression "iVar3 = 1" identifier = number_literal) ;) (expression_statement "param_3 = iVar1;" (assignment_expression "param_3 = iVar1" identifier = identifier) ;) })) (if_statement "if (iVar4 + 3 < param_3) {\n        iVar5 = (iVar2 * 2 - param_3) + 1;\n        iVar4 = param_3 - iVar5;\n        (*(code *)PTR___gmpn_hgcd_matrix_init_0009d3bc)(auStack_44,iVar4,param_5);\n        iVar1 = param_5 + ((iVar4 + 1) / 2 + 1) * 0x10;\n        iVar4 = __gmpn_hgcd(param_1 + iVar5 * 4,param_2 + iVar5 * 4,iVar4,auStack_44,iVar1);\n        if (0 < iVar4) {\n          param_3 = (*(code *)PTR___gmpn_hgcd_matrix_adjust_0009d3a8)\n                              (auStack_44,iVar5 + iVar4,param_1,param_2,iVar5,iVar1);\n          iVar3 = 1;\n          (*(code *)PTR___gmpn_hgcd_matrix_mul_0009d1e8)(param_4,auStack_44,iVar1);\n        }\n      }" if (parenthesized_expression "(iVar4 + 3 < param_3)" ( (binary_expression "iVar4 + 3 < param_3" (binary_expression "iVar4 + 3" identifier + number_literal) < identifier) )) (compound_statement "{\n        iVar5 = (iVar2 * 2 - param_3) + 1;\n        iVar4 = param_3 - iVar5;\n        (*(code *)PTR___gmpn_hgcd_matrix_init_0009d3bc)(auStack_44,iVar4,param_5);\n        iVar1 = param_5 + ((iVar4 + 1) / 2 + 1) * 0x10;\n        iVar4 = __gmpn_hgcd(param_1 + iVar5 * 4,param_2 + iVar5 * 4,iVar4,auStack_44,iVar1);\n        if (0 < iVar4) {\n          param_3 = (*(code *)PTR___gmpn_hgcd_matrix_adjust_0009d3a8)\n                              (auStack_44,iVar5 + iVar4,param_1,param_2,iVar5,iVar1);\n          iVar3 = 1;\n          (*(code *)PTR___gmpn_hgcd_matrix_mul_0009d1e8)(param_4,auStack_44,iVar1);\n        }\n      }" { (expression_statement "iVar5 = (iVar2 * 2 - param_3) + 1;" (assignment_expression "iVar5 = (iVar2 * 2 - param_3) + 1" identifier = (binary_expression "(iVar2 * 2 - param_3) + 1" (parenthesized_expression "(iVar2 * 2 - param_3)" ( (binary_expression "iVar2 * 2 - param_3" (binary_expression "iVar2 * 2" identifier * number_literal) - identifier) )) + number_literal)) ;) (expression_statement "iVar4 = param_3 - iVar5;" (assignment_expression "iVar4 = param_3 - iVar5" identifier = (binary_expression "param_3 - iVar5" identifier - identifier)) ;) (expression_statement "(*(code *)PTR___gmpn_hgcd_matrix_init_0009d3bc)(auStack_44,iVar4,param_5);" (call_expression "(*(code *)PTR___gmpn_hgcd_matrix_init_0009d3bc)(auStack_44,iVar4,param_5)" (parenthesized_expression "(*(code *)PTR___gmpn_hgcd_matrix_init_0009d3bc)" ( (pointer_expression "*(code *)PTR___gmpn_hgcd_matrix_init_0009d3bc" * (cast_expression "(code *)PTR___gmpn_hgcd_matrix_init_0009d3bc" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(auStack_44,iVar4,param_5)" ( identifier , identifier , identifier ))) ;) (expression_statement "iVar1 = param_5 + ((iVar4 + 1) / 2 + 1) * 0x10;" (assignment_expression "iVar1 = param_5 + ((iVar4 + 1) / 2 + 1) * 0x10" identifier = (binary_expression "param_5 + ((iVar4 + 1) / 2 + 1) * 0x10" identifier + (binary_expression "((iVar4 + 1) / 2 + 1) * 0x10" (parenthesized_expression "((iVar4 + 1) / 2 + 1)" ( (binary_expression "(iVar4 + 1) / 2 + 1" (binary_expression "(iVar4 + 1) / 2" (parenthesized_expression "(iVar4 + 1)" ( (binary_expression "iVar4 + 1" identifier + number_literal) )) / number_literal) + number_literal) )) * number_literal))) ;) (expression_statement "iVar4 = __gmpn_hgcd(param_1 + iVar5 * 4,param_2 + iVar5 * 4,iVar4,auStack_44,iVar1);" (assignment_expression "iVar4 = __gmpn_hgcd(param_1 + iVar5 * 4,param_2 + iVar5 * 4,iVar4,auStack_44,iVar1)" identifier = (call_expression "__gmpn_hgcd(param_1 + iVar5 * 4,param_2 + iVar5 * 4,iVar4,auStack_44,iVar1)" identifier (argument_list "(param_1 + iVar5 * 4,param_2 + iVar5 * 4,iVar4,auStack_44,iVar1)" ( (binary_expression "param_1 + iVar5 * 4" identifier + (binary_expression "iVar5 * 4" identifier * number_literal)) , (binary_expression "param_2 + iVar5 * 4" identifier + (binary_expression "iVar5 * 4" identifier * number_literal)) , identifier , identifier , identifier )))) ;) (if_statement "if (0 < iVar4) {\n          param_3 = (*(code *)PTR___gmpn_hgcd_matrix_adjust_0009d3a8)\n                              (auStack_44,iVar5 + iVar4,param_1,param_2,iVar5,iVar1);\n          iVar3 = 1;\n          (*(code *)PTR___gmpn_hgcd_matrix_mul_0009d1e8)(param_4,auStack_44,iVar1);\n        }" if (parenthesized_expression "(0 < iVar4)" ( (binary_expression "0 < iVar4" number_literal < identifier) )) (compound_statement "{\n          param_3 = (*(code *)PTR___gmpn_hgcd_matrix_adjust_0009d3a8)\n                              (auStack_44,iVar5 + iVar4,param_1,param_2,iVar5,iVar1);\n          iVar3 = 1;\n          (*(code *)PTR___gmpn_hgcd_matrix_mul_0009d1e8)(param_4,auStack_44,iVar1);\n        }" { (expression_statement "param_3 = (*(code *)PTR___gmpn_hgcd_matrix_adjust_0009d3a8)\n                              (auStack_44,iVar5 + iVar4,param_1,param_2,iVar5,iVar1);" (assignment_expression "param_3 = (*(code *)PTR___gmpn_hgcd_matrix_adjust_0009d3a8)\n                              (auStack_44,iVar5 + iVar4,param_1,param_2,iVar5,iVar1)" identifier = (call_expression "(*(code *)PTR___gmpn_hgcd_matrix_adjust_0009d3a8)\n                              (auStack_44,iVar5 + iVar4,param_1,param_2,iVar5,iVar1)" (parenthesized_expression "(*(code *)PTR___gmpn_hgcd_matrix_adjust_0009d3a8)" ( (pointer_expression "*(code *)PTR___gmpn_hgcd_matrix_adjust_0009d3a8" * (cast_expression "(code *)PTR___gmpn_hgcd_matrix_adjust_0009d3a8" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(auStack_44,iVar5 + iVar4,param_1,param_2,iVar5,iVar1)" ( identifier , (binary_expression "iVar5 + iVar4" identifier + identifier) , identifier , identifier , identifier , identifier )))) ;) (expression_statement "iVar3 = 1;" (assignment_expression "iVar3 = 1" identifier = number_literal) ;) (expression_statement "(*(code *)PTR___gmpn_hgcd_matrix_mul_0009d1e8)(param_4,auStack_44,iVar1);" (call_expression "(*(code *)PTR___gmpn_hgcd_matrix_mul_0009d1e8)(param_4,auStack_44,iVar1)" (parenthesized_expression "(*(code *)PTR___gmpn_hgcd_matrix_mul_0009d1e8)" ( (pointer_expression "*(code *)PTR___gmpn_hgcd_matrix_mul_0009d1e8" * (cast_expression "(code *)PTR___gmpn_hgcd_matrix_mul_0009d1e8" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(param_4,auStack_44,iVar1)" ( identifier , identifier , identifier ))) ;) })) })) }))) (while_statement "while (iVar4 = (*(code *)PTR___gmpn_hgcd_step_0009d51c)\n                             (param_3,param_1,param_2,iVar2,param_4,param_5), iVar4 != 0) {\n      iVar3 = 1;\n      param_3 = iVar4;\n    }" while (parenthesized_expression "(iVar4 = (*(code *)PTR___gmpn_hgcd_step_0009d51c)\n                             (param_3,param_1,param_2,iVar2,param_4,param_5), iVar4 != 0)" ( (comma_expression "iVar4 = (*(code *)PTR___gmpn_hgcd_step_0009d51c)\n                             (param_3,param_1,param_2,iVar2,param_4,param_5), iVar4 != 0" (assignment_expression "iVar4 = (*(code *)PTR___gmpn_hgcd_step_0009d51c)\n                             (param_3,param_1,param_2,iVar2,param_4,param_5)" identifier = (call_expression "(*(code *)PTR___gmpn_hgcd_step_0009d51c)\n                             (param_3,param_1,param_2,iVar2,param_4,param_5)" (parenthesized_expression "(*(code *)PTR___gmpn_hgcd_step_0009d51c)" ( (pointer_expression "*(code *)PTR___gmpn_hgcd_step_0009d51c" * (cast_expression "(code *)PTR___gmpn_hgcd_step_0009d51c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(param_3,param_1,param_2,iVar2,param_4,param_5)" ( identifier , identifier , identifier , identifier , identifier , identifier )))) , (binary_expression "iVar4 != 0" identifier != number_literal)) )) (compound_statement "{\n      iVar3 = 1;\n      param_3 = iVar4;\n    }" { (expression_statement "iVar3 = 1;" (assignment_expression "iVar3 = 1" identifier = number_literal) ;) (expression_statement "param_3 = iVar4;" (assignment_expression "param_3 = iVar4" identifier = identifier) ;) })) (labeled_statement "joined_r0x0005847c:\n    if (iVar3 != 0) goto LAB_000583b0;" statement_identifier : (if_statement "if (iVar3 != 0) goto LAB_000583b0;" if (parenthesized_expression "(iVar3 != 0)" ( (binary_expression "iVar3 != 0" identifier != number_literal) )) (goto_statement "goto LAB_000583b0;" goto statement_identifier ;))) })) (expression_statement "param_3 = 0;" (assignment_expression "param_3 = 0" identifier = number_literal) ;) (labeled_statement "LAB_000583b0:\n  if (local_2c != *(int *)puVar6) {\n    puVar6 = PTR___stack_chk_fail_0009d4d0;\n    (*(code *)PTR___stack_chk_fail_0009d4d0)();\n    if (399 < local_2c) {\n      if (local_2c < 0x18f0001) {\n        iVar2 = 0x20;\n        if (0x18f00 < local_2c) {\n          iVar2 = 0x18;\n        }\n        iVar4 = 9;\n        if (0x18f00 >= local_2c) {\n          iVar4 = 1;\n        }\n      }\n      else {\n        iVar2 = 0x10;\n        iVar4 = 0x11;\n      }\n      local_2c = (((uint)*(byte *)(*(int *)(puVar6 + 0x44bfc) +\n                                  ((uint)((local_2c + -1) / 399) >> iVar4)) - iVar2) + 0x20) * 0x16\n                 + (local_2c + 3 >> 2) * 0x14 + 400;\n    }\n    return local_2c;\n  }" statement_identifier : (if_statement "if (local_2c != *(int *)puVar6) {\n    puVar6 = PTR___stack_chk_fail_0009d4d0;\n    (*(code *)PTR___stack_chk_fail_0009d4d0)();\n    if (399 < local_2c) {\n      if (local_2c < 0x18f0001) {\n        iVar2 = 0x20;\n        if (0x18f00 < local_2c) {\n          iVar2 = 0x18;\n        }\n        iVar4 = 9;\n        if (0x18f00 >= local_2c) {\n          iVar4 = 1;\n        }\n      }\n      else {\n        iVar2 = 0x10;\n        iVar4 = 0x11;\n      }\n      local_2c = (((uint)*(byte *)(*(int *)(puVar6 + 0x44bfc) +\n                                  ((uint)((local_2c + -1) / 399) >> iVar4)) - iVar2) + 0x20) * 0x16\n                 + (local_2c + 3 >> 2) * 0x14 + 400;\n    }\n    return local_2c;\n  }" if (parenthesized_expression "(local_2c != *(int *)puVar6)" ( (binary_expression "local_2c != *(int *)puVar6" identifier != (pointer_expression "*(int *)puVar6" * (cast_expression "(int *)puVar6" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) )) (compound_statement "{\n    puVar6 = PTR___stack_chk_fail_0009d4d0;\n    (*(code *)PTR___stack_chk_fail_0009d4d0)();\n    if (399 < local_2c) {\n      if (local_2c < 0x18f0001) {\n        iVar2 = 0x20;\n        if (0x18f00 < local_2c) {\n          iVar2 = 0x18;\n        }\n        iVar4 = 9;\n        if (0x18f00 >= local_2c) {\n          iVar4 = 1;\n        }\n      }\n      else {\n        iVar2 = 0x10;\n        iVar4 = 0x11;\n      }\n      local_2c = (((uint)*(byte *)(*(int *)(puVar6 + 0x44bfc) +\n                                  ((uint)((local_2c + -1) / 399) >> iVar4)) - iVar2) + 0x20) * 0x16\n                 + (local_2c + 3 >> 2) * 0x14 + 400;\n    }\n    return local_2c;\n  }" { (expression_statement "puVar6 = PTR___stack_chk_fail_0009d4d0;" (assignment_expression "puVar6 = PTR___stack_chk_fail_0009d4d0" identifier = identifier) ;) (expression_statement "(*(code *)PTR___stack_chk_fail_0009d4d0)();" (call_expression "(*(code *)PTR___stack_chk_fail_0009d4d0)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_0009d4d0)" ( (pointer_expression "*(code *)PTR___stack_chk_fail_0009d4d0" * (cast_expression "(code *)PTR___stack_chk_fail_0009d4d0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (if_statement "if (399 < local_2c) {\n      if (local_2c < 0x18f0001) {\n        iVar2 = 0x20;\n        if (0x18f00 < local_2c) {\n          iVar2 = 0x18;\n        }\n        iVar4 = 9;\n        if (0x18f00 >= local_2c) {\n          iVar4 = 1;\n        }\n      }\n      else {\n        iVar2 = 0x10;\n        iVar4 = 0x11;\n      }\n      local_2c = (((uint)*(byte *)(*(int *)(puVar6 + 0x44bfc) +\n                                  ((uint)((local_2c + -1) / 399) >> iVar4)) - iVar2) + 0x20) * 0x16\n                 + (local_2c + 3 >> 2) * 0x14 + 400;\n    }" if (parenthesized_expression "(399 < local_2c)" ( (binary_expression "399 < local_2c" number_literal < identifier) )) (compound_statement "{\n      if (local_2c < 0x18f0001) {\n        iVar2 = 0x20;\n        if (0x18f00 < local_2c) {\n          iVar2 = 0x18;\n        }\n        iVar4 = 9;\n        if (0x18f00 >= local_2c) {\n          iVar4 = 1;\n        }\n      }\n      else {\n        iVar2 = 0x10;\n        iVar4 = 0x11;\n      }\n      local_2c = (((uint)*(byte *)(*(int *)(puVar6 + 0x44bfc) +\n                                  ((uint)((local_2c + -1) / 399) >> iVar4)) - iVar2) + 0x20) * 0x16\n                 + (local_2c + 3 >> 2) * 0x14 + 400;\n    }" { (if_statement "if (local_2c < 0x18f0001) {\n        iVar2 = 0x20;\n        if (0x18f00 < local_2c) {\n          iVar2 = 0x18;\n        }\n        iVar4 = 9;\n        if (0x18f00 >= local_2c) {\n          iVar4 = 1;\n        }\n      }\n      else {\n        iVar2 = 0x10;\n        iVar4 = 0x11;\n      }" if (parenthesized_expression "(local_2c < 0x18f0001)" ( (binary_expression "local_2c < 0x18f0001" identifier < number_literal) )) (compound_statement "{\n        iVar2 = 0x20;\n        if (0x18f00 < local_2c) {\n          iVar2 = 0x18;\n        }\n        iVar4 = 9;\n        if (0x18f00 >= local_2c) {\n          iVar4 = 1;\n        }\n      }" { (expression_statement "iVar2 = 0x20;" (assignment_expression "iVar2 = 0x20" identifier = number_literal) ;) (if_statement "if (0x18f00 < local_2c) {\n          iVar2 = 0x18;\n        }" if (parenthesized_expression "(0x18f00 < local_2c)" ( (binary_expression "0x18f00 < local_2c" number_literal < identifier) )) (compound_statement "{\n          iVar2 = 0x18;\n        }" { (expression_statement "iVar2 = 0x18;" (assignment_expression "iVar2 = 0x18" identifier = number_literal) ;) })) (expression_statement "iVar4 = 9;" (assignment_expression "iVar4 = 9" identifier = number_literal) ;) (if_statement "if (0x18f00 >= local_2c) {\n          iVar4 = 1;\n        }" if (parenthesized_expression "(0x18f00 >= local_2c)" ( (binary_expression "0x18f00 >= local_2c" number_literal >= identifier) )) (compound_statement "{\n          iVar4 = 1;\n        }" { (expression_statement "iVar4 = 1;" (assignment_expression "iVar4 = 1" identifier = number_literal) ;) })) }) (else_clause "else {\n        iVar2 = 0x10;\n        iVar4 = 0x11;\n      }" else (compound_statement "{\n        iVar2 = 0x10;\n        iVar4 = 0x11;\n      }" { (expression_statement "iVar2 = 0x10;" (assignment_expression "iVar2 = 0x10" identifier = number_literal) ;) (expression_statement "iVar4 = 0x11;" (assignment_expression "iVar4 = 0x11" identifier = number_literal) ;) }))) (expression_statement "local_2c = (((uint)*(byte *)(*(int *)(puVar6 + 0x44bfc) +\n                                  ((uint)((local_2c + -1) / 399) >> iVar4)) - iVar2) + 0x20) * 0x16\n                 + (local_2c + 3 >> 2) * 0x14 + 400;" (assignment_expression "local_2c = (((uint)*(byte *)(*(int *)(puVar6 + 0x44bfc) +\n                                  ((uint)((local_2c + -1) / 399) >> iVar4)) - iVar2) + 0x20) * 0x16\n                 + (local_2c + 3 >> 2) * 0x14 + 400" identifier = (binary_expression "(((uint)*(byte *)(*(int *)(puVar6 + 0x44bfc) +\n                                  ((uint)((local_2c + -1) / 399) >> iVar4)) - iVar2) + 0x20) * 0x16\n                 + (local_2c + 3 >> 2) * 0x14 + 400" (binary_expression "(((uint)*(byte *)(*(int *)(puVar6 + 0x44bfc) +\n                                  ((uint)((local_2c + -1) / 399) >> iVar4)) - iVar2) + 0x20) * 0x16\n                 + (local_2c + 3 >> 2) * 0x14" (binary_expression "(((uint)*(byte *)(*(int *)(puVar6 + 0x44bfc) +\n                                  ((uint)((local_2c + -1) / 399) >> iVar4)) - iVar2) + 0x20) * 0x16" (parenthesized_expression "(((uint)*(byte *)(*(int *)(puVar6 + 0x44bfc) +\n                                  ((uint)((local_2c + -1) / 399) >> iVar4)) - iVar2) + 0x20)" ( (binary_expression "((uint)*(byte *)(*(int *)(puVar6 + 0x44bfc) +\n                                  ((uint)((local_2c + -1) / 399) >> iVar4)) - iVar2) + 0x20" (parenthesized_expression "((uint)*(byte *)(*(int *)(puVar6 + 0x44bfc) +\n                                  ((uint)((local_2c + -1) / 399) >> iVar4)) - iVar2)" ( (binary_expression "(uint)*(byte *)(*(int *)(puVar6 + 0x44bfc) +\n                                  ((uint)((local_2c + -1) / 399) >> iVar4)) - iVar2" (binary_expression "(uint)*(byte *)(*(int *)(puVar6 + 0x44bfc) +\n                                  ((uint)((local_2c + -1) / 399) >> iVar4))" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)(*(int *)(puVar6 + 0x44bfc) +\n                                  ((uint)((local_2c + -1) / 399) >> iVar4))" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(puVar6 + 0x44bfc) +\n                                  ((uint)((local_2c + -1) / 399) >> iVar4))" ( (binary_expression "*(int *)(puVar6 + 0x44bfc) +\n                                  ((uint)((local_2c + -1) / 399) >> iVar4)" (pointer_expression "*(int *)(puVar6 + 0x44bfc)" * (cast_expression "(int *)(puVar6 + 0x44bfc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar6 + 0x44bfc)" ( (binary_expression "puVar6 + 0x44bfc" identifier + number_literal) )))) + (parenthesized_expression "((uint)((local_2c + -1) / 399) >> iVar4)" ( (binary_expression "(uint)((local_2c + -1) / 399) >> iVar4" (call_expression "(uint)((local_2c + -1) / 399)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((local_2c + -1) / 399)" ( (binary_expression "(local_2c + -1) / 399" (parenthesized_expression "(local_2c + -1)" ( (binary_expression "local_2c + -1" identifier + number_literal) )) / number_literal) ))) >> identifier) ))) )))) - identifier) )) + number_literal) )) * number_literal) + (binary_expression "(local_2c + 3 >> 2) * 0x14" (parenthesized_expression "(local_2c + 3 >> 2)" ( (binary_expression "local_2c + 3 >> 2" (binary_expression "local_2c + 3" identifier + number_literal) >> number_literal) )) * number_literal)) + number_literal)) ;) })) (return_statement "return local_2c;" return identifier ;) }))) (return_statement "return param_3;" return identifier ;) })))
(translation_unit "mp_size_t __gmpn_hgcd(mp_ptr ap,mp_ptr bp,mp_size_t n,hgcd_matrix *M,mp_ptr tp)\n\n{\n  mp_size_t mVar1;\n  int iVar2;\n  mp_size_t mVar3;\n  int iVar4;\n  int iVar5;\n  int iVar6;\n  undefined *puVar7;\n  int iVar8;\n  mp_ptr tp_00;\n  hgcd_matrix M1;\n  \n  puVar7 = PTR___stack_chk_guard_0009d540;\n  iVar6 = n / 2;\n  iVar4 = iVar6 + 1;\n  mVar1 = *(mp_size_t *)PTR___stack_chk_guard_0009d540;\n  if (iVar4 < n) {\n    if (n < 400) {\n      iVar5 = 0;\n    }\n    else {\n      iVar8 = n * 3;\n      iVar2 = (*(code *)PTR___gmpn_hgcd_reduce_0009d110)(M,ap,bp,n,iVar6,tp);\n      iVar5 = iVar2;\n      if (iVar2 != 0) {\n        iVar5 = 1;\n        n = iVar2;\n      }\n      while ((iVar8 >> 2) + 1 < n) {\n        iVar2 = (*(code *)PTR___gmpn_hgcd_step_0009d51c)(n,ap,bp,iVar4,M,tp);\n        if (iVar2 == 0) goto joined_r0x0005847c;\n        iVar5 = 1;\n        n = iVar2;\n      }\n      if (iVar6 + 3 < n) {\n        iVar6 = (iVar4 * 2 - n) + 1;\n        iVar8 = n - iVar6;\n        (*(code *)PTR___gmpn_hgcd_matrix_init_0009d3bc)(&M1,iVar8,tp);\n        tp_00 = tp + ((iVar8 + 1) / 2 + 1) * 4;\n        mVar3 = __gmpn_hgcd(ap + iVar6,bp + iVar6,iVar8,&M1,tp_00);\n        if (0 < mVar3) {\n          n = (*(code *)PTR___gmpn_hgcd_matrix_adjust_0009d3a8)(&M1,iVar6 + mVar3,ap,bp,iVar6,tp_00)\n          ;\n          iVar5 = 1;\n          (*(code *)PTR___gmpn_hgcd_matrix_mul_0009d1e8)(M,&M1,tp_00);\n        }\n      }\n    }\n    while (iVar6 = (*(code *)PTR___gmpn_hgcd_step_0009d51c)(n,ap,bp,iVar4,M,tp), iVar6 != 0) {\n      iVar5 = 1;\n      n = iVar6;\n    }\njoined_r0x0005847c:\n    if (iVar5 != 0) goto LAB_000583b0;\n  }\n  n = 0;\nLAB_000583b0:\n  if (mVar1 != *(int *)puVar7) {\n    puVar7 = PTR___stack_chk_fail_0009d4d0;\n    (*(code *)PTR___stack_chk_fail_0009d4d0)();\n    if (399 < mVar1) {\n      if (mVar1 < 0x18f0001) {\n        iVar4 = 0x20;\n        if (0x18f00 < mVar1) {\n          iVar4 = 0x18;\n        }\n        iVar6 = 9;\n        if (0x18f00 >= mVar1) {\n          iVar6 = 1;\n        }\n      }\n      else {\n        iVar4 = 0x10;\n        iVar6 = 0x11;\n      }\n      mVar1 = (((uint)*(byte *)(*(int *)(puVar7 + 0x44bfc) + ((uint)((mVar1 + -1) / 399) >> iVar6))\n               - iVar4) + 0x20) * 0x16 + (mVar1 + 3 >> 2) * 0x14 + 400;\n    }\n    return mVar1;\n  }\n  return n;\n}\n\n" (function_definition "mp_size_t __gmpn_hgcd(mp_ptr ap,mp_ptr bp,mp_size_t n,hgcd_matrix *M,mp_ptr tp)\n\n{\n  mp_size_t mVar1;\n  int iVar2;\n  mp_size_t mVar3;\n  int iVar4;\n  int iVar5;\n  int iVar6;\n  undefined *puVar7;\n  int iVar8;\n  mp_ptr tp_00;\n  hgcd_matrix M1;\n  \n  puVar7 = PTR___stack_chk_guard_0009d540;\n  iVar6 = n / 2;\n  iVar4 = iVar6 + 1;\n  mVar1 = *(mp_size_t *)PTR___stack_chk_guard_0009d540;\n  if (iVar4 < n) {\n    if (n < 400) {\n      iVar5 = 0;\n    }\n    else {\n      iVar8 = n * 3;\n      iVar2 = (*(code *)PTR___gmpn_hgcd_reduce_0009d110)(M,ap,bp,n,iVar6,tp);\n      iVar5 = iVar2;\n      if (iVar2 != 0) {\n        iVar5 = 1;\n        n = iVar2;\n      }\n      while ((iVar8 >> 2) + 1 < n) {\n        iVar2 = (*(code *)PTR___gmpn_hgcd_step_0009d51c)(n,ap,bp,iVar4,M,tp);\n        if (iVar2 == 0) goto joined_r0x0005847c;\n        iVar5 = 1;\n        n = iVar2;\n      }\n      if (iVar6 + 3 < n) {\n        iVar6 = (iVar4 * 2 - n) + 1;\n        iVar8 = n - iVar6;\n        (*(code *)PTR___gmpn_hgcd_matrix_init_0009d3bc)(&M1,iVar8,tp);\n        tp_00 = tp + ((iVar8 + 1) / 2 + 1) * 4;\n        mVar3 = __gmpn_hgcd(ap + iVar6,bp + iVar6,iVar8,&M1,tp_00);\n        if (0 < mVar3) {\n          n = (*(code *)PTR___gmpn_hgcd_matrix_adjust_0009d3a8)(&M1,iVar6 + mVar3,ap,bp,iVar6,tp_00)\n          ;\n          iVar5 = 1;\n          (*(code *)PTR___gmpn_hgcd_matrix_mul_0009d1e8)(M,&M1,tp_00);\n        }\n      }\n    }\n    while (iVar6 = (*(code *)PTR___gmpn_hgcd_step_0009d51c)(n,ap,bp,iVar4,M,tp), iVar6 != 0) {\n      iVar5 = 1;\n      n = iVar6;\n    }\njoined_r0x0005847c:\n    if (iVar5 != 0) goto LAB_000583b0;\n  }\n  n = 0;\nLAB_000583b0:\n  if (mVar1 != *(int *)puVar7) {\n    puVar7 = PTR___stack_chk_fail_0009d4d0;\n    (*(code *)PTR___stack_chk_fail_0009d4d0)();\n    if (399 < mVar1) {\n      if (mVar1 < 0x18f0001) {\n        iVar4 = 0x20;\n        if (0x18f00 < mVar1) {\n          iVar4 = 0x18;\n        }\n        iVar6 = 9;\n        if (0x18f00 >= mVar1) {\n          iVar6 = 1;\n        }\n      }\n      else {\n        iVar4 = 0x10;\n        iVar6 = 0x11;\n      }\n      mVar1 = (((uint)*(byte *)(*(int *)(puVar7 + 0x44bfc) + ((uint)((mVar1 + -1) / 399) >> iVar6))\n               - iVar4) + 0x20) * 0x16 + (mVar1 + 3 >> 2) * 0x14 + 400;\n    }\n    return mVar1;\n  }\n  return n;\n}" type_identifier (function_declarator "__gmpn_hgcd(mp_ptr ap,mp_ptr bp,mp_size_t n,hgcd_matrix *M,mp_ptr tp)" identifier (parameter_list "(mp_ptr ap,mp_ptr bp,mp_size_t n,hgcd_matrix *M,mp_ptr tp)" ( (parameter_declaration "mp_ptr ap" type_identifier identifier) , (parameter_declaration "mp_ptr bp" type_identifier identifier) , (parameter_declaration "mp_size_t n" type_identifier identifier) , (parameter_declaration "hgcd_matrix *M" type_identifier (pointer_declarator "*M" * identifier)) , (parameter_declaration "mp_ptr tp" type_identifier identifier) ))) (compound_statement "{\n  mp_size_t mVar1;\n  int iVar2;\n  mp_size_t mVar3;\n  int iVar4;\n  int iVar5;\n  int iVar6;\n  undefined *puVar7;\n  int iVar8;\n  mp_ptr tp_00;\n  hgcd_matrix M1;\n  \n  puVar7 = PTR___stack_chk_guard_0009d540;\n  iVar6 = n / 2;\n  iVar4 = iVar6 + 1;\n  mVar1 = *(mp_size_t *)PTR___stack_chk_guard_0009d540;\n  if (iVar4 < n) {\n    if (n < 400) {\n      iVar5 = 0;\n    }\n    else {\n      iVar8 = n * 3;\n      iVar2 = (*(code *)PTR___gmpn_hgcd_reduce_0009d110)(M,ap,bp,n,iVar6,tp);\n      iVar5 = iVar2;\n      if (iVar2 != 0) {\n        iVar5 = 1;\n        n = iVar2;\n      }\n      while ((iVar8 >> 2) + 1 < n) {\n        iVar2 = (*(code *)PTR___gmpn_hgcd_step_0009d51c)(n,ap,bp,iVar4,M,tp);\n        if (iVar2 == 0) goto joined_r0x0005847c;\n        iVar5 = 1;\n        n = iVar2;\n      }\n      if (iVar6 + 3 < n) {\n        iVar6 = (iVar4 * 2 - n) + 1;\n        iVar8 = n - iVar6;\n        (*(code *)PTR___gmpn_hgcd_matrix_init_0009d3bc)(&M1,iVar8,tp);\n        tp_00 = tp + ((iVar8 + 1) / 2 + 1) * 4;\n        mVar3 = __gmpn_hgcd(ap + iVar6,bp + iVar6,iVar8,&M1,tp_00);\n        if (0 < mVar3) {\n          n = (*(code *)PTR___gmpn_hgcd_matrix_adjust_0009d3a8)(&M1,iVar6 + mVar3,ap,bp,iVar6,tp_00)\n          ;\n          iVar5 = 1;\n          (*(code *)PTR___gmpn_hgcd_matrix_mul_0009d1e8)(M,&M1,tp_00);\n        }\n      }\n    }\n    while (iVar6 = (*(code *)PTR___gmpn_hgcd_step_0009d51c)(n,ap,bp,iVar4,M,tp), iVar6 != 0) {\n      iVar5 = 1;\n      n = iVar6;\n    }\njoined_r0x0005847c:\n    if (iVar5 != 0) goto LAB_000583b0;\n  }\n  n = 0;\nLAB_000583b0:\n  if (mVar1 != *(int *)puVar7) {\n    puVar7 = PTR___stack_chk_fail_0009d4d0;\n    (*(code *)PTR___stack_chk_fail_0009d4d0)();\n    if (399 < mVar1) {\n      if (mVar1 < 0x18f0001) {\n        iVar4 = 0x20;\n        if (0x18f00 < mVar1) {\n          iVar4 = 0x18;\n        }\n        iVar6 = 9;\n        if (0x18f00 >= mVar1) {\n          iVar6 = 1;\n        }\n      }\n      else {\n        iVar4 = 0x10;\n        iVar6 = 0x11;\n      }\n      mVar1 = (((uint)*(byte *)(*(int *)(puVar7 + 0x44bfc) + ((uint)((mVar1 + -1) / 399) >> iVar6))\n               - iVar4) + 0x20) * 0x16 + (mVar1 + 3 >> 2) * 0x14 + 400;\n    }\n    return mVar1;\n  }\n  return n;\n}" { (declaration "mp_size_t mVar1;" type_identifier identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "mp_size_t mVar3;" type_identifier identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "undefined *puVar7;" type_identifier (pointer_declarator "*puVar7" * identifier) ;) (declaration "int iVar8;" primitive_type identifier ;) (declaration "mp_ptr tp_00;" type_identifier identifier ;) (declaration "hgcd_matrix M1;" type_identifier identifier ;) (expression_statement "puVar7 = PTR___stack_chk_guard_0009d540;" (assignment_expression "puVar7 = PTR___stack_chk_guard_0009d540" identifier = identifier) ;) (expression_statement "iVar6 = n / 2;" (assignment_expression "iVar6 = n / 2" identifier = (binary_expression "n / 2" identifier / number_literal)) ;) (expression_statement "iVar4 = iVar6 + 1;" (assignment_expression "iVar4 = iVar6 + 1" identifier = (binary_expression "iVar6 + 1" identifier + number_literal)) ;) (expression_statement "mVar1 = *(mp_size_t *)PTR___stack_chk_guard_0009d540;" (assignment_expression "mVar1 = *(mp_size_t *)PTR___stack_chk_guard_0009d540" identifier = (pointer_expression "*(mp_size_t *)PTR___stack_chk_guard_0009d540" * (cast_expression "(mp_size_t *)PTR___stack_chk_guard_0009d540" ( (type_descriptor "mp_size_t *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier))) ;) (if_statement "if (iVar4 < n) {\n    if (n < 400) {\n      iVar5 = 0;\n    }\n    else {\n      iVar8 = n * 3;\n      iVar2 = (*(code *)PTR___gmpn_hgcd_reduce_0009d110)(M,ap,bp,n,iVar6,tp);\n      iVar5 = iVar2;\n      if (iVar2 != 0) {\n        iVar5 = 1;\n        n = iVar2;\n      }\n      while ((iVar8 >> 2) + 1 < n) {\n        iVar2 = (*(code *)PTR___gmpn_hgcd_step_0009d51c)(n,ap,bp,iVar4,M,tp);\n        if (iVar2 == 0) goto joined_r0x0005847c;\n        iVar5 = 1;\n        n = iVar2;\n      }\n      if (iVar6 + 3 < n) {\n        iVar6 = (iVar4 * 2 - n) + 1;\n        iVar8 = n - iVar6;\n        (*(code *)PTR___gmpn_hgcd_matrix_init_0009d3bc)(&M1,iVar8,tp);\n        tp_00 = tp + ((iVar8 + 1) / 2 + 1) * 4;\n        mVar3 = __gmpn_hgcd(ap + iVar6,bp + iVar6,iVar8,&M1,tp_00);\n        if (0 < mVar3) {\n          n = (*(code *)PTR___gmpn_hgcd_matrix_adjust_0009d3a8)(&M1,iVar6 + mVar3,ap,bp,iVar6,tp_00)\n          ;\n          iVar5 = 1;\n          (*(code *)PTR___gmpn_hgcd_matrix_mul_0009d1e8)(M,&M1,tp_00);\n        }\n      }\n    }\n    while (iVar6 = (*(code *)PTR___gmpn_hgcd_step_0009d51c)(n,ap,bp,iVar4,M,tp), iVar6 != 0) {\n      iVar5 = 1;\n      n = iVar6;\n    }\njoined_r0x0005847c:\n    if (iVar5 != 0) goto LAB_000583b0;\n  }" if (parenthesized_expression "(iVar4 < n)" ( (binary_expression "iVar4 < n" identifier < identifier) )) (compound_statement "{\n    if (n < 400) {\n      iVar5 = 0;\n    }\n    else {\n      iVar8 = n * 3;\n      iVar2 = (*(code *)PTR___gmpn_hgcd_reduce_0009d110)(M,ap,bp,n,iVar6,tp);\n      iVar5 = iVar2;\n      if (iVar2 != 0) {\n        iVar5 = 1;\n        n = iVar2;\n      }\n      while ((iVar8 >> 2) + 1 < n) {\n        iVar2 = (*(code *)PTR___gmpn_hgcd_step_0009d51c)(n,ap,bp,iVar4,M,tp);\n        if (iVar2 == 0) goto joined_r0x0005847c;\n        iVar5 = 1;\n        n = iVar2;\n      }\n      if (iVar6 + 3 < n) {\n        iVar6 = (iVar4 * 2 - n) + 1;\n        iVar8 = n - iVar6;\n        (*(code *)PTR___gmpn_hgcd_matrix_init_0009d3bc)(&M1,iVar8,tp);\n        tp_00 = tp + ((iVar8 + 1) / 2 + 1) * 4;\n        mVar3 = __gmpn_hgcd(ap + iVar6,bp + iVar6,iVar8,&M1,tp_00);\n        if (0 < mVar3) {\n          n = (*(code *)PTR___gmpn_hgcd_matrix_adjust_0009d3a8)(&M1,iVar6 + mVar3,ap,bp,iVar6,tp_00)\n          ;\n          iVar5 = 1;\n          (*(code *)PTR___gmpn_hgcd_matrix_mul_0009d1e8)(M,&M1,tp_00);\n        }\n      }\n    }\n    while (iVar6 = (*(code *)PTR___gmpn_hgcd_step_0009d51c)(n,ap,bp,iVar4,M,tp), iVar6 != 0) {\n      iVar5 = 1;\n      n = iVar6;\n    }\njoined_r0x0005847c:\n    if (iVar5 != 0) goto LAB_000583b0;\n  }" { (if_statement "if (n < 400) {\n      iVar5 = 0;\n    }\n    else {\n      iVar8 = n * 3;\n      iVar2 = (*(code *)PTR___gmpn_hgcd_reduce_0009d110)(M,ap,bp,n,iVar6,tp);\n      iVar5 = iVar2;\n      if (iVar2 != 0) {\n        iVar5 = 1;\n        n = iVar2;\n      }\n      while ((iVar8 >> 2) + 1 < n) {\n        iVar2 = (*(code *)PTR___gmpn_hgcd_step_0009d51c)(n,ap,bp,iVar4,M,tp);\n        if (iVar2 == 0) goto joined_r0x0005847c;\n        iVar5 = 1;\n        n = iVar2;\n      }\n      if (iVar6 + 3 < n) {\n        iVar6 = (iVar4 * 2 - n) + 1;\n        iVar8 = n - iVar6;\n        (*(code *)PTR___gmpn_hgcd_matrix_init_0009d3bc)(&M1,iVar8,tp);\n        tp_00 = tp + ((iVar8 + 1) / 2 + 1) * 4;\n        mVar3 = __gmpn_hgcd(ap + iVar6,bp + iVar6,iVar8,&M1,tp_00);\n        if (0 < mVar3) {\n          n = (*(code *)PTR___gmpn_hgcd_matrix_adjust_0009d3a8)(&M1,iVar6 + mVar3,ap,bp,iVar6,tp_00)\n          ;\n          iVar5 = 1;\n          (*(code *)PTR___gmpn_hgcd_matrix_mul_0009d1e8)(M,&M1,tp_00);\n        }\n      }\n    }" if (parenthesized_expression "(n < 400)" ( (binary_expression "n < 400" identifier < number_literal) )) (compound_statement "{\n      iVar5 = 0;\n    }" { (expression_statement "iVar5 = 0;" (assignment_expression "iVar5 = 0" identifier = number_literal) ;) }) (else_clause "else {\n      iVar8 = n * 3;\n      iVar2 = (*(code *)PTR___gmpn_hgcd_reduce_0009d110)(M,ap,bp,n,iVar6,tp);\n      iVar5 = iVar2;\n      if (iVar2 != 0) {\n        iVar5 = 1;\n        n = iVar2;\n      }\n      while ((iVar8 >> 2) + 1 < n) {\n        iVar2 = (*(code *)PTR___gmpn_hgcd_step_0009d51c)(n,ap,bp,iVar4,M,tp);\n        if (iVar2 == 0) goto joined_r0x0005847c;\n        iVar5 = 1;\n        n = iVar2;\n      }\n      if (iVar6 + 3 < n) {\n        iVar6 = (iVar4 * 2 - n) + 1;\n        iVar8 = n - iVar6;\n        (*(code *)PTR___gmpn_hgcd_matrix_init_0009d3bc)(&M1,iVar8,tp);\n        tp_00 = tp + ((iVar8 + 1) / 2 + 1) * 4;\n        mVar3 = __gmpn_hgcd(ap + iVar6,bp + iVar6,iVar8,&M1,tp_00);\n        if (0 < mVar3) {\n          n = (*(code *)PTR___gmpn_hgcd_matrix_adjust_0009d3a8)(&M1,iVar6 + mVar3,ap,bp,iVar6,tp_00)\n          ;\n          iVar5 = 1;\n          (*(code *)PTR___gmpn_hgcd_matrix_mul_0009d1e8)(M,&M1,tp_00);\n        }\n      }\n    }" else (compound_statement "{\n      iVar8 = n * 3;\n      iVar2 = (*(code *)PTR___gmpn_hgcd_reduce_0009d110)(M,ap,bp,n,iVar6,tp);\n      iVar5 = iVar2;\n      if (iVar2 != 0) {\n        iVar5 = 1;\n        n = iVar2;\n      }\n      while ((iVar8 >> 2) + 1 < n) {\n        iVar2 = (*(code *)PTR___gmpn_hgcd_step_0009d51c)(n,ap,bp,iVar4,M,tp);\n        if (iVar2 == 0) goto joined_r0x0005847c;\n        iVar5 = 1;\n        n = iVar2;\n      }\n      if (iVar6 + 3 < n) {\n        iVar6 = (iVar4 * 2 - n) + 1;\n        iVar8 = n - iVar6;\n        (*(code *)PTR___gmpn_hgcd_matrix_init_0009d3bc)(&M1,iVar8,tp);\n        tp_00 = tp + ((iVar8 + 1) / 2 + 1) * 4;\n        mVar3 = __gmpn_hgcd(ap + iVar6,bp + iVar6,iVar8,&M1,tp_00);\n        if (0 < mVar3) {\n          n = (*(code *)PTR___gmpn_hgcd_matrix_adjust_0009d3a8)(&M1,iVar6 + mVar3,ap,bp,iVar6,tp_00)\n          ;\n          iVar5 = 1;\n          (*(code *)PTR___gmpn_hgcd_matrix_mul_0009d1e8)(M,&M1,tp_00);\n        }\n      }\n    }" { (expression_statement "iVar8 = n * 3;" (assignment_expression "iVar8 = n * 3" identifier = (binary_expression "n * 3" identifier * number_literal)) ;) (expression_statement "iVar2 = (*(code *)PTR___gmpn_hgcd_reduce_0009d110)(M,ap,bp,n,iVar6,tp);" (assignment_expression "iVar2 = (*(code *)PTR___gmpn_hgcd_reduce_0009d110)(M,ap,bp,n,iVar6,tp)" identifier = (call_expression "(*(code *)PTR___gmpn_hgcd_reduce_0009d110)(M,ap,bp,n,iVar6,tp)" (parenthesized_expression "(*(code *)PTR___gmpn_hgcd_reduce_0009d110)" ( (pointer_expression "*(code *)PTR___gmpn_hgcd_reduce_0009d110" * (cast_expression "(code *)PTR___gmpn_hgcd_reduce_0009d110" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(M,ap,bp,n,iVar6,tp)" ( identifier , identifier , identifier , identifier , identifier , identifier )))) ;) (expression_statement "iVar5 = iVar2;" (assignment_expression "iVar5 = iVar2" identifier = identifier) ;) (if_statement "if (iVar2 != 0) {\n        iVar5 = 1;\n        n = iVar2;\n      }" if (parenthesized_expression "(iVar2 != 0)" ( (binary_expression "iVar2 != 0" identifier != number_literal) )) (compound_statement "{\n        iVar5 = 1;\n        n = iVar2;\n      }" { (expression_statement "iVar5 = 1;" (assignment_expression "iVar5 = 1" identifier = number_literal) ;) (expression_statement "n = iVar2;" (assignment_expression "n = iVar2" identifier = identifier) ;) })) (while_statement "while ((iVar8 >> 2) + 1 < n) {\n        iVar2 = (*(code *)PTR___gmpn_hgcd_step_0009d51c)(n,ap,bp,iVar4,M,tp);\n        if (iVar2 == 0) goto joined_r0x0005847c;\n        iVar5 = 1;\n        n = iVar2;\n      }" while (parenthesized_expression "((iVar8 >> 2) + 1 < n)" ( (binary_expression "(iVar8 >> 2) + 1 < n" (binary_expression "(iVar8 >> 2) + 1" (parenthesized_expression "(iVar8 >> 2)" ( (binary_expression "iVar8 >> 2" identifier >> number_literal) )) + number_literal) < identifier) )) (compound_statement "{\n        iVar2 = (*(code *)PTR___gmpn_hgcd_step_0009d51c)(n,ap,bp,iVar4,M,tp);\n        if (iVar2 == 0) goto joined_r0x0005847c;\n        iVar5 = 1;\n        n = iVar2;\n      }" { (expression_statement "iVar2 = (*(code *)PTR___gmpn_hgcd_step_0009d51c)(n,ap,bp,iVar4,M,tp);" (assignment_expression "iVar2 = (*(code *)PTR___gmpn_hgcd_step_0009d51c)(n,ap,bp,iVar4,M,tp)" identifier = (call_expression "(*(code *)PTR___gmpn_hgcd_step_0009d51c)(n,ap,bp,iVar4,M,tp)" (parenthesized_expression "(*(code *)PTR___gmpn_hgcd_step_0009d51c)" ( (pointer_expression "*(code *)PTR___gmpn_hgcd_step_0009d51c" * (cast_expression "(code *)PTR___gmpn_hgcd_step_0009d51c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(n,ap,bp,iVar4,M,tp)" ( identifier , identifier , identifier , identifier , identifier , identifier )))) ;) (if_statement "if (iVar2 == 0) goto joined_r0x0005847c;" if (parenthesized_expression "(iVar2 == 0)" ( (binary_expression "iVar2 == 0" identifier == number_literal) )) (goto_statement "goto joined_r0x0005847c;" goto statement_identifier ;)) (expression_statement "iVar5 = 1;" (assignment_expression "iVar5 = 1" identifier = number_literal) ;) (expression_statement "n = iVar2;" (assignment_expression "n = iVar2" identifier = identifier) ;) })) (if_statement "if (iVar6 + 3 < n) {\n        iVar6 = (iVar4 * 2 - n) + 1;\n        iVar8 = n - iVar6;\n        (*(code *)PTR___gmpn_hgcd_matrix_init_0009d3bc)(&M1,iVar8,tp);\n        tp_00 = tp + ((iVar8 + 1) / 2 + 1) * 4;\n        mVar3 = __gmpn_hgcd(ap + iVar6,bp + iVar6,iVar8,&M1,tp_00);\n        if (0 < mVar3) {\n          n = (*(code *)PTR___gmpn_hgcd_matrix_adjust_0009d3a8)(&M1,iVar6 + mVar3,ap,bp,iVar6,tp_00)\n          ;\n          iVar5 = 1;\n          (*(code *)PTR___gmpn_hgcd_matrix_mul_0009d1e8)(M,&M1,tp_00);\n        }\n      }" if (parenthesized_expression "(iVar6 + 3 < n)" ( (binary_expression "iVar6 + 3 < n" (binary_expression "iVar6 + 3" identifier + number_literal) < identifier) )) (compound_statement "{\n        iVar6 = (iVar4 * 2 - n) + 1;\n        iVar8 = n - iVar6;\n        (*(code *)PTR___gmpn_hgcd_matrix_init_0009d3bc)(&M1,iVar8,tp);\n        tp_00 = tp + ((iVar8 + 1) / 2 + 1) * 4;\n        mVar3 = __gmpn_hgcd(ap + iVar6,bp + iVar6,iVar8,&M1,tp_00);\n        if (0 < mVar3) {\n          n = (*(code *)PTR___gmpn_hgcd_matrix_adjust_0009d3a8)(&M1,iVar6 + mVar3,ap,bp,iVar6,tp_00)\n          ;\n          iVar5 = 1;\n          (*(code *)PTR___gmpn_hgcd_matrix_mul_0009d1e8)(M,&M1,tp_00);\n        }\n      }" { (expression_statement "iVar6 = (iVar4 * 2 - n) + 1;" (assignment_expression "iVar6 = (iVar4 * 2 - n) + 1" identifier = (binary_expression "(iVar4 * 2 - n) + 1" (parenthesized_expression "(iVar4 * 2 - n)" ( (binary_expression "iVar4 * 2 - n" (binary_expression "iVar4 * 2" identifier * number_literal) - identifier) )) + number_literal)) ;) (expression_statement "iVar8 = n - iVar6;" (assignment_expression "iVar8 = n - iVar6" identifier = (binary_expression "n - iVar6" identifier - identifier)) ;) (expression_statement "(*(code *)PTR___gmpn_hgcd_matrix_init_0009d3bc)(&M1,iVar8,tp);" (call_expression "(*(code *)PTR___gmpn_hgcd_matrix_init_0009d3bc)(&M1,iVar8,tp)" (parenthesized_expression "(*(code *)PTR___gmpn_hgcd_matrix_init_0009d3bc)" ( (pointer_expression "*(code *)PTR___gmpn_hgcd_matrix_init_0009d3bc" * (cast_expression "(code *)PTR___gmpn_hgcd_matrix_init_0009d3bc" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(&M1,iVar8,tp)" ( (pointer_expression "&M1" & identifier) , identifier , identifier ))) ;) (expression_statement "tp_00 = tp + ((iVar8 + 1) / 2 + 1) * 4;" (assignment_expression "tp_00 = tp + ((iVar8 + 1) / 2 + 1) * 4" identifier = (binary_expression "tp + ((iVar8 + 1) / 2 + 1) * 4" identifier + (binary_expression "((iVar8 + 1) / 2 + 1) * 4" (parenthesized_expression "((iVar8 + 1) / 2 + 1)" ( (binary_expression "(iVar8 + 1) / 2 + 1" (binary_expression "(iVar8 + 1) / 2" (parenthesized_expression "(iVar8 + 1)" ( (binary_expression "iVar8 + 1" identifier + number_literal) )) / number_literal) + number_literal) )) * number_literal))) ;) (expression_statement "mVar3 = __gmpn_hgcd(ap + iVar6,bp + iVar6,iVar8,&M1,tp_00);" (assignment_expression "mVar3 = __gmpn_hgcd(ap + iVar6,bp + iVar6,iVar8,&M1,tp_00)" identifier = (call_expression "__gmpn_hgcd(ap + iVar6,bp + iVar6,iVar8,&M1,tp_00)" identifier (argument_list "(ap + iVar6,bp + iVar6,iVar8,&M1,tp_00)" ( (binary_expression "ap + iVar6" identifier + identifier) , (binary_expression "bp + iVar6" identifier + identifier) , identifier , (pointer_expression "&M1" & identifier) , identifier )))) ;) (if_statement "if (0 < mVar3) {\n          n = (*(code *)PTR___gmpn_hgcd_matrix_adjust_0009d3a8)(&M1,iVar6 + mVar3,ap,bp,iVar6,tp_00)\n          ;\n          iVar5 = 1;\n          (*(code *)PTR___gmpn_hgcd_matrix_mul_0009d1e8)(M,&M1,tp_00);\n        }" if (parenthesized_expression "(0 < mVar3)" ( (binary_expression "0 < mVar3" number_literal < identifier) )) (compound_statement "{\n          n = (*(code *)PTR___gmpn_hgcd_matrix_adjust_0009d3a8)(&M1,iVar6 + mVar3,ap,bp,iVar6,tp_00)\n          ;\n          iVar5 = 1;\n          (*(code *)PTR___gmpn_hgcd_matrix_mul_0009d1e8)(M,&M1,tp_00);\n        }" { (expression_statement "n = (*(code *)PTR___gmpn_hgcd_matrix_adjust_0009d3a8)(&M1,iVar6 + mVar3,ap,bp,iVar6,tp_00)\n          ;" (assignment_expression "n = (*(code *)PTR___gmpn_hgcd_matrix_adjust_0009d3a8)(&M1,iVar6 + mVar3,ap,bp,iVar6,tp_00)" identifier = (call_expression "(*(code *)PTR___gmpn_hgcd_matrix_adjust_0009d3a8)(&M1,iVar6 + mVar3,ap,bp,iVar6,tp_00)" (parenthesized_expression "(*(code *)PTR___gmpn_hgcd_matrix_adjust_0009d3a8)" ( (pointer_expression "*(code *)PTR___gmpn_hgcd_matrix_adjust_0009d3a8" * (cast_expression "(code *)PTR___gmpn_hgcd_matrix_adjust_0009d3a8" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(&M1,iVar6 + mVar3,ap,bp,iVar6,tp_00)" ( (pointer_expression "&M1" & identifier) , (binary_expression "iVar6 + mVar3" identifier + identifier) , identifier , identifier , identifier , identifier )))) ;) (expression_statement "iVar5 = 1;" (assignment_expression "iVar5 = 1" identifier = number_literal) ;) (expression_statement "(*(code *)PTR___gmpn_hgcd_matrix_mul_0009d1e8)(M,&M1,tp_00);" (call_expression "(*(code *)PTR___gmpn_hgcd_matrix_mul_0009d1e8)(M,&M1,tp_00)" (parenthesized_expression "(*(code *)PTR___gmpn_hgcd_matrix_mul_0009d1e8)" ( (pointer_expression "*(code *)PTR___gmpn_hgcd_matrix_mul_0009d1e8" * (cast_expression "(code *)PTR___gmpn_hgcd_matrix_mul_0009d1e8" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(M,&M1,tp_00)" ( identifier , (pointer_expression "&M1" & identifier) , identifier ))) ;) })) })) }))) (while_statement "while (iVar6 = (*(code *)PTR___gmpn_hgcd_step_0009d51c)(n,ap,bp,iVar4,M,tp), iVar6 != 0) {\n      iVar5 = 1;\n      n = iVar6;\n    }" while (parenthesized_expression "(iVar6 = (*(code *)PTR___gmpn_hgcd_step_0009d51c)(n,ap,bp,iVar4,M,tp), iVar6 != 0)" ( (comma_expression "iVar6 = (*(code *)PTR___gmpn_hgcd_step_0009d51c)(n,ap,bp,iVar4,M,tp), iVar6 != 0" (assignment_expression "iVar6 = (*(code *)PTR___gmpn_hgcd_step_0009d51c)(n,ap,bp,iVar4,M,tp)" identifier = (call_expression "(*(code *)PTR___gmpn_hgcd_step_0009d51c)(n,ap,bp,iVar4,M,tp)" (parenthesized_expression "(*(code *)PTR___gmpn_hgcd_step_0009d51c)" ( (pointer_expression "*(code *)PTR___gmpn_hgcd_step_0009d51c" * (cast_expression "(code *)PTR___gmpn_hgcd_step_0009d51c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(n,ap,bp,iVar4,M,tp)" ( identifier , identifier , identifier , identifier , identifier , identifier )))) , (binary_expression "iVar6 != 0" identifier != number_literal)) )) (compound_statement "{\n      iVar5 = 1;\n      n = iVar6;\n    }" { (expression_statement "iVar5 = 1;" (assignment_expression "iVar5 = 1" identifier = number_literal) ;) (expression_statement "n = iVar6;" (assignment_expression "n = iVar6" identifier = identifier) ;) })) (labeled_statement "joined_r0x0005847c:\n    if (iVar5 != 0) goto LAB_000583b0;" statement_identifier : (if_statement "if (iVar5 != 0) goto LAB_000583b0;" if (parenthesized_expression "(iVar5 != 0)" ( (binary_expression "iVar5 != 0" identifier != number_literal) )) (goto_statement "goto LAB_000583b0;" goto statement_identifier ;))) })) (expression_statement "n = 0;" (assignment_expression "n = 0" identifier = number_literal) ;) (labeled_statement "LAB_000583b0:\n  if (mVar1 != *(int *)puVar7) {\n    puVar7 = PTR___stack_chk_fail_0009d4d0;\n    (*(code *)PTR___stack_chk_fail_0009d4d0)();\n    if (399 < mVar1) {\n      if (mVar1 < 0x18f0001) {\n        iVar4 = 0x20;\n        if (0x18f00 < mVar1) {\n          iVar4 = 0x18;\n        }\n        iVar6 = 9;\n        if (0x18f00 >= mVar1) {\n          iVar6 = 1;\n        }\n      }\n      else {\n        iVar4 = 0x10;\n        iVar6 = 0x11;\n      }\n      mVar1 = (((uint)*(byte *)(*(int *)(puVar7 + 0x44bfc) + ((uint)((mVar1 + -1) / 399) >> iVar6))\n               - iVar4) + 0x20) * 0x16 + (mVar1 + 3 >> 2) * 0x14 + 400;\n    }\n    return mVar1;\n  }" statement_identifier : (if_statement "if (mVar1 != *(int *)puVar7) {\n    puVar7 = PTR___stack_chk_fail_0009d4d0;\n    (*(code *)PTR___stack_chk_fail_0009d4d0)();\n    if (399 < mVar1) {\n      if (mVar1 < 0x18f0001) {\n        iVar4 = 0x20;\n        if (0x18f00 < mVar1) {\n          iVar4 = 0x18;\n        }\n        iVar6 = 9;\n        if (0x18f00 >= mVar1) {\n          iVar6 = 1;\n        }\n      }\n      else {\n        iVar4 = 0x10;\n        iVar6 = 0x11;\n      }\n      mVar1 = (((uint)*(byte *)(*(int *)(puVar7 + 0x44bfc) + ((uint)((mVar1 + -1) / 399) >> iVar6))\n               - iVar4) + 0x20) * 0x16 + (mVar1 + 3 >> 2) * 0x14 + 400;\n    }\n    return mVar1;\n  }" if (parenthesized_expression "(mVar1 != *(int *)puVar7)" ( (binary_expression "mVar1 != *(int *)puVar7" identifier != (pointer_expression "*(int *)puVar7" * (cast_expression "(int *)puVar7" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) )) (compound_statement "{\n    puVar7 = PTR___stack_chk_fail_0009d4d0;\n    (*(code *)PTR___stack_chk_fail_0009d4d0)();\n    if (399 < mVar1) {\n      if (mVar1 < 0x18f0001) {\n        iVar4 = 0x20;\n        if (0x18f00 < mVar1) {\n          iVar4 = 0x18;\n        }\n        iVar6 = 9;\n        if (0x18f00 >= mVar1) {\n          iVar6 = 1;\n        }\n      }\n      else {\n        iVar4 = 0x10;\n        iVar6 = 0x11;\n      }\n      mVar1 = (((uint)*(byte *)(*(int *)(puVar7 + 0x44bfc) + ((uint)((mVar1 + -1) / 399) >> iVar6))\n               - iVar4) + 0x20) * 0x16 + (mVar1 + 3 >> 2) * 0x14 + 400;\n    }\n    return mVar1;\n  }" { (expression_statement "puVar7 = PTR___stack_chk_fail_0009d4d0;" (assignment_expression "puVar7 = PTR___stack_chk_fail_0009d4d0" identifier = identifier) ;) (expression_statement "(*(code *)PTR___stack_chk_fail_0009d4d0)();" (call_expression "(*(code *)PTR___stack_chk_fail_0009d4d0)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_0009d4d0)" ( (pointer_expression "*(code *)PTR___stack_chk_fail_0009d4d0" * (cast_expression "(code *)PTR___stack_chk_fail_0009d4d0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (if_statement "if (399 < mVar1) {\n      if (mVar1 < 0x18f0001) {\n        iVar4 = 0x20;\n        if (0x18f00 < mVar1) {\n          iVar4 = 0x18;\n        }\n        iVar6 = 9;\n        if (0x18f00 >= mVar1) {\n          iVar6 = 1;\n        }\n      }\n      else {\n        iVar4 = 0x10;\n        iVar6 = 0x11;\n      }\n      mVar1 = (((uint)*(byte *)(*(int *)(puVar7 + 0x44bfc) + ((uint)((mVar1 + -1) / 399) >> iVar6))\n               - iVar4) + 0x20) * 0x16 + (mVar1 + 3 >> 2) * 0x14 + 400;\n    }" if (parenthesized_expression "(399 < mVar1)" ( (binary_expression "399 < mVar1" number_literal < identifier) )) (compound_statement "{\n      if (mVar1 < 0x18f0001) {\n        iVar4 = 0x20;\n        if (0x18f00 < mVar1) {\n          iVar4 = 0x18;\n        }\n        iVar6 = 9;\n        if (0x18f00 >= mVar1) {\n          iVar6 = 1;\n        }\n      }\n      else {\n        iVar4 = 0x10;\n        iVar6 = 0x11;\n      }\n      mVar1 = (((uint)*(byte *)(*(int *)(puVar7 + 0x44bfc) + ((uint)((mVar1 + -1) / 399) >> iVar6))\n               - iVar4) + 0x20) * 0x16 + (mVar1 + 3 >> 2) * 0x14 + 400;\n    }" { (if_statement "if (mVar1 < 0x18f0001) {\n        iVar4 = 0x20;\n        if (0x18f00 < mVar1) {\n          iVar4 = 0x18;\n        }\n        iVar6 = 9;\n        if (0x18f00 >= mVar1) {\n          iVar6 = 1;\n        }\n      }\n      else {\n        iVar4 = 0x10;\n        iVar6 = 0x11;\n      }" if (parenthesized_expression "(mVar1 < 0x18f0001)" ( (binary_expression "mVar1 < 0x18f0001" identifier < number_literal) )) (compound_statement "{\n        iVar4 = 0x20;\n        if (0x18f00 < mVar1) {\n          iVar4 = 0x18;\n        }\n        iVar6 = 9;\n        if (0x18f00 >= mVar1) {\n          iVar6 = 1;\n        }\n      }" { (expression_statement "iVar4 = 0x20;" (assignment_expression "iVar4 = 0x20" identifier = number_literal) ;) (if_statement "if (0x18f00 < mVar1) {\n          iVar4 = 0x18;\n        }" if (parenthesized_expression "(0x18f00 < mVar1)" ( (binary_expression "0x18f00 < mVar1" number_literal < identifier) )) (compound_statement "{\n          iVar4 = 0x18;\n        }" { (expression_statement "iVar4 = 0x18;" (assignment_expression "iVar4 = 0x18" identifier = number_literal) ;) })) (expression_statement "iVar6 = 9;" (assignment_expression "iVar6 = 9" identifier = number_literal) ;) (if_statement "if (0x18f00 >= mVar1) {\n          iVar6 = 1;\n        }" if (parenthesized_expression "(0x18f00 >= mVar1)" ( (binary_expression "0x18f00 >= mVar1" number_literal >= identifier) )) (compound_statement "{\n          iVar6 = 1;\n        }" { (expression_statement "iVar6 = 1;" (assignment_expression "iVar6 = 1" identifier = number_literal) ;) })) }) (else_clause "else {\n        iVar4 = 0x10;\n        iVar6 = 0x11;\n      }" else (compound_statement "{\n        iVar4 = 0x10;\n        iVar6 = 0x11;\n      }" { (expression_statement "iVar4 = 0x10;" (assignment_expression "iVar4 = 0x10" identifier = number_literal) ;) (expression_statement "iVar6 = 0x11;" (assignment_expression "iVar6 = 0x11" identifier = number_literal) ;) }))) (expression_statement "mVar1 = (((uint)*(byte *)(*(int *)(puVar7 + 0x44bfc) + ((uint)((mVar1 + -1) / 399) >> iVar6))\n               - iVar4) + 0x20) * 0x16 + (mVar1 + 3 >> 2) * 0x14 + 400;" (assignment_expression "mVar1 = (((uint)*(byte *)(*(int *)(puVar7 + 0x44bfc) + ((uint)((mVar1 + -1) / 399) >> iVar6))\n               - iVar4) + 0x20) * 0x16 + (mVar1 + 3 >> 2) * 0x14 + 400" identifier = (binary_expression "(((uint)*(byte *)(*(int *)(puVar7 + 0x44bfc) + ((uint)((mVar1 + -1) / 399) >> iVar6))\n               - iVar4) + 0x20) * 0x16 + (mVar1 + 3 >> 2) * 0x14 + 400" (binary_expression "(((uint)*(byte *)(*(int *)(puVar7 + 0x44bfc) + ((uint)((mVar1 + -1) / 399) >> iVar6))\n               - iVar4) + 0x20) * 0x16 + (mVar1 + 3 >> 2) * 0x14" (binary_expression "(((uint)*(byte *)(*(int *)(puVar7 + 0x44bfc) + ((uint)((mVar1 + -1) / 399) >> iVar6))\n               - iVar4) + 0x20) * 0x16" (parenthesized_expression "(((uint)*(byte *)(*(int *)(puVar7 + 0x44bfc) + ((uint)((mVar1 + -1) / 399) >> iVar6))\n               - iVar4) + 0x20)" ( (binary_expression "((uint)*(byte *)(*(int *)(puVar7 + 0x44bfc) + ((uint)((mVar1 + -1) / 399) >> iVar6))\n               - iVar4) + 0x20" (parenthesized_expression "((uint)*(byte *)(*(int *)(puVar7 + 0x44bfc) + ((uint)((mVar1 + -1) / 399) >> iVar6))\n               - iVar4)" ( (binary_expression "(uint)*(byte *)(*(int *)(puVar7 + 0x44bfc) + ((uint)((mVar1 + -1) / 399) >> iVar6))\n               - iVar4" (binary_expression "(uint)*(byte *)(*(int *)(puVar7 + 0x44bfc) + ((uint)((mVar1 + -1) / 399) >> iVar6))" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)(*(int *)(puVar7 + 0x44bfc) + ((uint)((mVar1 + -1) / 399) >> iVar6))" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(puVar7 + 0x44bfc) + ((uint)((mVar1 + -1) / 399) >> iVar6))" ( (binary_expression "*(int *)(puVar7 + 0x44bfc) + ((uint)((mVar1 + -1) / 399) >> iVar6)" (pointer_expression "*(int *)(puVar7 + 0x44bfc)" * (cast_expression "(int *)(puVar7 + 0x44bfc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar7 + 0x44bfc)" ( (binary_expression "puVar7 + 0x44bfc" identifier + number_literal) )))) + (parenthesized_expression "((uint)((mVar1 + -1) / 399) >> iVar6)" ( (binary_expression "(uint)((mVar1 + -1) / 399) >> iVar6" (call_expression "(uint)((mVar1 + -1) / 399)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((mVar1 + -1) / 399)" ( (binary_expression "(mVar1 + -1) / 399" (parenthesized_expression "(mVar1 + -1)" ( (binary_expression "mVar1 + -1" identifier + number_literal) )) / number_literal) ))) >> identifier) ))) )))) - identifier) )) + number_literal) )) * number_literal) + (binary_expression "(mVar1 + 3 >> 2) * 0x14" (parenthesized_expression "(mVar1 + 3 >> 2)" ( (binary_expression "mVar1 + 3 >> 2" (binary_expression "mVar1 + 3" identifier + number_literal) >> number_literal) )) * number_literal)) + number_literal)) ;) })) (return_statement "return mVar1;" return identifier ;) }))) (return_statement "return n;" return identifier ;) })))
(translation_unit "int __gmpn_hgcd(int param_1,int param_2,int param_3,undefined4 param_4,int param_5)\n\n{\n  int iVar1;\n  int iVar2;\n  int iVar3;\n  int iVar4;\n  int iVar5;\n  undefined *puVar6;\n  undefined1 auStack_44 [24];\n  int local_2c;\n  \n  puVar6 = PTR___stack_chk_guard_0009d540;\n  iVar4 = param_3 / 2;\n  iVar2 = iVar4 + 1;\n  local_2c = *(int *)PTR___stack_chk_guard_0009d540;\n  if (iVar2 < param_3) {\n    if (param_3 < 400) {\n      iVar3 = 0;\n    }\n    else {\n      iVar5 = param_3 * 3;\n      iVar1 = (*(code *)PTR___gmpn_hgcd_reduce_0009d110)\n                        (param_4,param_1,param_2,param_3,iVar4,param_5);\n      iVar3 = iVar1;\n      if (iVar1 != 0) {\n        iVar3 = 1;\n        param_3 = iVar1;\n      }\n      while ((iVar5 >> 2) + 1 < param_3) {\n        iVar1 = (*(code *)PTR___gmpn_hgcd_step_0009d51c)\n                          (param_3,param_1,param_2,iVar2,param_4,param_5);\n        if (iVar1 == 0) goto joined_r0x0005847c;\n        iVar3 = 1;\n        param_3 = iVar1;\n      }\n      if (iVar4 + 3 < param_3) {\n        iVar5 = (iVar2 * 2 - param_3) + 1;\n        iVar4 = param_3 - iVar5;\n        (*(code *)PTR___gmpn_hgcd_matrix_init_0009d3bc)(auStack_44,iVar4,param_5);\n        iVar1 = param_5 + ((iVar4 + 1) / 2 + 1) * 0x10;\n        iVar4 = __gmpn_hgcd(param_1 + iVar5 * 4,param_2 + iVar5 * 4,iVar4,auStack_44,iVar1);\n        if (0 < iVar4) {\n          param_3 = (*(code *)PTR___gmpn_hgcd_matrix_adjust_0009d3a8)\n                              (auStack_44,iVar5 + iVar4,param_1,param_2,iVar5,iVar1);\n          iVar3 = 1;\n          (*(code *)PTR___gmpn_hgcd_matrix_mul_0009d1e8)(param_4,auStack_44,iVar1);\n        }\n      }\n    }\n    while (iVar4 = (*(code *)PTR___gmpn_hgcd_step_0009d51c)\n                             (param_3,param_1,param_2,iVar2,param_4,param_5), iVar4 != 0) {\n      iVar3 = 1;\n      param_3 = iVar4;\n    }\njoined_r0x0005847c:\n    if (iVar3 != 0) goto LAB_000583b0;\n  }\n  param_3 = 0;\nLAB_000583b0:\n  if (local_2c != *(int *)puVar6) {\n    puVar6 = PTR___stack_chk_fail_0009d4d0;\n    (*(code *)PTR___stack_chk_fail_0009d4d0)();\n    if (399 < local_2c) {\n      if (local_2c < 0x18f0001) {\n        iVar2 = 0x20;\n        if (0x18f00 < local_2c) {\n          iVar2 = 0x18;\n        }\n        iVar4 = 9;\n        if (0x18f00 >= local_2c) {\n          iVar4 = 1;\n        }\n      }\n      else {\n        iVar2 = 0x10;\n        iVar4 = 0x11;\n      }\n      local_2c = (((uint)*(byte *)(*(int *)(puVar6 + 0x44bfc) +\n                                  ((uint)((local_2c + -1) / 399) >> iVar4)) - iVar2) + 0x20) * 0x16\n                 + (local_2c + 3 >> 2) * 0x14 + 400;\n    }\n    return local_2c;\n  }\n  return param_3;\n}\n\n" (function_definition "int __gmpn_hgcd(int param_1,int param_2,int param_3,undefined4 param_4,int param_5)\n\n{\n  int iVar1;\n  int iVar2;\n  int iVar3;\n  int iVar4;\n  int iVar5;\n  undefined *puVar6;\n  undefined1 auStack_44 [24];\n  int local_2c;\n  \n  puVar6 = PTR___stack_chk_guard_0009d540;\n  iVar4 = param_3 / 2;\n  iVar2 = iVar4 + 1;\n  local_2c = *(int *)PTR___stack_chk_guard_0009d540;\n  if (iVar2 < param_3) {\n    if (param_3 < 400) {\n      iVar3 = 0;\n    }\n    else {\n      iVar5 = param_3 * 3;\n      iVar1 = (*(code *)PTR___gmpn_hgcd_reduce_0009d110)\n                        (param_4,param_1,param_2,param_3,iVar4,param_5);\n      iVar3 = iVar1;\n      if (iVar1 != 0) {\n        iVar3 = 1;\n        param_3 = iVar1;\n      }\n      while ((iVar5 >> 2) + 1 < param_3) {\n        iVar1 = (*(code *)PTR___gmpn_hgcd_step_0009d51c)\n                          (param_3,param_1,param_2,iVar2,param_4,param_5);\n        if (iVar1 == 0) goto joined_r0x0005847c;\n        iVar3 = 1;\n        param_3 = iVar1;\n      }\n      if (iVar4 + 3 < param_3) {\n        iVar5 = (iVar2 * 2 - param_3) + 1;\n        iVar4 = param_3 - iVar5;\n        (*(code *)PTR___gmpn_hgcd_matrix_init_0009d3bc)(auStack_44,iVar4,param_5);\n        iVar1 = param_5 + ((iVar4 + 1) / 2 + 1) * 0x10;\n        iVar4 = __gmpn_hgcd(param_1 + iVar5 * 4,param_2 + iVar5 * 4,iVar4,auStack_44,iVar1);\n        if (0 < iVar4) {\n          param_3 = (*(code *)PTR___gmpn_hgcd_matrix_adjust_0009d3a8)\n                              (auStack_44,iVar5 + iVar4,param_1,param_2,iVar5,iVar1);\n          iVar3 = 1;\n          (*(code *)PTR___gmpn_hgcd_matrix_mul_0009d1e8)(param_4,auStack_44,iVar1);\n        }\n      }\n    }\n    while (iVar4 = (*(code *)PTR___gmpn_hgcd_step_0009d51c)\n                             (param_3,param_1,param_2,iVar2,param_4,param_5), iVar4 != 0) {\n      iVar3 = 1;\n      param_3 = iVar4;\n    }\njoined_r0x0005847c:\n    if (iVar3 != 0) goto LAB_000583b0;\n  }\n  param_3 = 0;\nLAB_000583b0:\n  if (local_2c != *(int *)puVar6) {\n    puVar6 = PTR___stack_chk_fail_0009d4d0;\n    (*(code *)PTR___stack_chk_fail_0009d4d0)();\n    if (399 < local_2c) {\n      if (local_2c < 0x18f0001) {\n        iVar2 = 0x20;\n        if (0x18f00 < local_2c) {\n          iVar2 = 0x18;\n        }\n        iVar4 = 9;\n        if (0x18f00 >= local_2c) {\n          iVar4 = 1;\n        }\n      }\n      else {\n        iVar2 = 0x10;\n        iVar4 = 0x11;\n      }\n      local_2c = (((uint)*(byte *)(*(int *)(puVar6 + 0x44bfc) +\n                                  ((uint)((local_2c + -1) / 399) >> iVar4)) - iVar2) + 0x20) * 0x16\n                 + (local_2c + 3 >> 2) * 0x14 + 400;\n    }\n    return local_2c;\n  }\n  return param_3;\n}" primitive_type (function_declarator "__gmpn_hgcd(int param_1,int param_2,int param_3,undefined4 param_4,int param_5)" identifier (parameter_list "(int param_1,int param_2,int param_3,undefined4 param_4,int param_5)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "int param_2" primitive_type identifier) , (parameter_declaration "int param_3" primitive_type identifier) , (parameter_declaration "undefined4 param_4" type_identifier identifier) , (parameter_declaration "int param_5" primitive_type identifier) ))) (compound_statement "{\n  int iVar1;\n  int iVar2;\n  int iVar3;\n  int iVar4;\n  int iVar5;\n  undefined *puVar6;\n  undefined1 auStack_44 [24];\n  int local_2c;\n  \n  puVar6 = PTR___stack_chk_guard_0009d540;\n  iVar4 = param_3 / 2;\n  iVar2 = iVar4 + 1;\n  local_2c = *(int *)PTR___stack_chk_guard_0009d540;\n  if (iVar2 < param_3) {\n    if (param_3 < 400) {\n      iVar3 = 0;\n    }\n    else {\n      iVar5 = param_3 * 3;\n      iVar1 = (*(code *)PTR___gmpn_hgcd_reduce_0009d110)\n                        (param_4,param_1,param_2,param_3,iVar4,param_5);\n      iVar3 = iVar1;\n      if (iVar1 != 0) {\n        iVar3 = 1;\n        param_3 = iVar1;\n      }\n      while ((iVar5 >> 2) + 1 < param_3) {\n        iVar1 = (*(code *)PTR___gmpn_hgcd_step_0009d51c)\n                          (param_3,param_1,param_2,iVar2,param_4,param_5);\n        if (iVar1 == 0) goto joined_r0x0005847c;\n        iVar3 = 1;\n        param_3 = iVar1;\n      }\n      if (iVar4 + 3 < param_3) {\n        iVar5 = (iVar2 * 2 - param_3) + 1;\n        iVar4 = param_3 - iVar5;\n        (*(code *)PTR___gmpn_hgcd_matrix_init_0009d3bc)(auStack_44,iVar4,param_5);\n        iVar1 = param_5 + ((iVar4 + 1) / 2 + 1) * 0x10;\n        iVar4 = __gmpn_hgcd(param_1 + iVar5 * 4,param_2 + iVar5 * 4,iVar4,auStack_44,iVar1);\n        if (0 < iVar4) {\n          param_3 = (*(code *)PTR___gmpn_hgcd_matrix_adjust_0009d3a8)\n                              (auStack_44,iVar5 + iVar4,param_1,param_2,iVar5,iVar1);\n          iVar3 = 1;\n          (*(code *)PTR___gmpn_hgcd_matrix_mul_0009d1e8)(param_4,auStack_44,iVar1);\n        }\n      }\n    }\n    while (iVar4 = (*(code *)PTR___gmpn_hgcd_step_0009d51c)\n                             (param_3,param_1,param_2,iVar2,param_4,param_5), iVar4 != 0) {\n      iVar3 = 1;\n      param_3 = iVar4;\n    }\njoined_r0x0005847c:\n    if (iVar3 != 0) goto LAB_000583b0;\n  }\n  param_3 = 0;\nLAB_000583b0:\n  if (local_2c != *(int *)puVar6) {\n    puVar6 = PTR___stack_chk_fail_0009d4d0;\n    (*(code *)PTR___stack_chk_fail_0009d4d0)();\n    if (399 < local_2c) {\n      if (local_2c < 0x18f0001) {\n        iVar2 = 0x20;\n        if (0x18f00 < local_2c) {\n          iVar2 = 0x18;\n        }\n        iVar4 = 9;\n        if (0x18f00 >= local_2c) {\n          iVar4 = 1;\n        }\n      }\n      else {\n        iVar2 = 0x10;\n        iVar4 = 0x11;\n      }\n      local_2c = (((uint)*(byte *)(*(int *)(puVar6 + 0x44bfc) +\n                                  ((uint)((local_2c + -1) / 399) >> iVar4)) - iVar2) + 0x20) * 0x16\n                 + (local_2c + 3 >> 2) * 0x14 + 400;\n    }\n    return local_2c;\n  }\n  return param_3;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "undefined *puVar6;" type_identifier (pointer_declarator "*puVar6" * identifier) ;) (declaration "undefined1 auStack_44 [24];" type_identifier (array_declarator "auStack_44 [24]" identifier [ number_literal ]) ;) (declaration "int local_2c;" primitive_type identifier ;) (expression_statement "puVar6 = PTR___stack_chk_guard_0009d540;" (assignment_expression "puVar6 = PTR___stack_chk_guard_0009d540" identifier = identifier) ;) (expression_statement "iVar4 = param_3 / 2;" (assignment_expression "iVar4 = param_3 / 2" identifier = (binary_expression "param_3 / 2" identifier / number_literal)) ;) (expression_statement "iVar2 = iVar4 + 1;" (assignment_expression "iVar2 = iVar4 + 1" identifier = (binary_expression "iVar4 + 1" identifier + number_literal)) ;) (expression_statement "local_2c = *(int *)PTR___stack_chk_guard_0009d540;" (assignment_expression "local_2c = *(int *)PTR___stack_chk_guard_0009d540" identifier = (pointer_expression "*(int *)PTR___stack_chk_guard_0009d540" * (cast_expression "(int *)PTR___stack_chk_guard_0009d540" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;) (if_statement "if (iVar2 < param_3) {\n    if (param_3 < 400) {\n      iVar3 = 0;\n    }\n    else {\n      iVar5 = param_3 * 3;\n      iVar1 = (*(code *)PTR___gmpn_hgcd_reduce_0009d110)\n                        (param_4,param_1,param_2,param_3,iVar4,param_5);\n      iVar3 = iVar1;\n      if (iVar1 != 0) {\n        iVar3 = 1;\n        param_3 = iVar1;\n      }\n      while ((iVar5 >> 2) + 1 < param_3) {\n        iVar1 = (*(code *)PTR___gmpn_hgcd_step_0009d51c)\n                          (param_3,param_1,param_2,iVar2,param_4,param_5);\n        if (iVar1 == 0) goto joined_r0x0005847c;\n        iVar3 = 1;\n        param_3 = iVar1;\n      }\n      if (iVar4 + 3 < param_3) {\n        iVar5 = (iVar2 * 2 - param_3) + 1;\n        iVar4 = param_3 - iVar5;\n        (*(code *)PTR___gmpn_hgcd_matrix_init_0009d3bc)(auStack_44,iVar4,param_5);\n        iVar1 = param_5 + ((iVar4 + 1) / 2 + 1) * 0x10;\n        iVar4 = __gmpn_hgcd(param_1 + iVar5 * 4,param_2 + iVar5 * 4,iVar4,auStack_44,iVar1);\n        if (0 < iVar4) {\n          param_3 = (*(code *)PTR___gmpn_hgcd_matrix_adjust_0009d3a8)\n                              (auStack_44,iVar5 + iVar4,param_1,param_2,iVar5,iVar1);\n          iVar3 = 1;\n          (*(code *)PTR___gmpn_hgcd_matrix_mul_0009d1e8)(param_4,auStack_44,iVar1);\n        }\n      }\n    }\n    while (iVar4 = (*(code *)PTR___gmpn_hgcd_step_0009d51c)\n                             (param_3,param_1,param_2,iVar2,param_4,param_5), iVar4 != 0) {\n      iVar3 = 1;\n      param_3 = iVar4;\n    }\njoined_r0x0005847c:\n    if (iVar3 != 0) goto LAB_000583b0;\n  }" if (parenthesized_expression "(iVar2 < param_3)" ( (binary_expression "iVar2 < param_3" identifier < identifier) )) (compound_statement "{\n    if (param_3 < 400) {\n      iVar3 = 0;\n    }\n    else {\n      iVar5 = param_3 * 3;\n      iVar1 = (*(code *)PTR___gmpn_hgcd_reduce_0009d110)\n                        (param_4,param_1,param_2,param_3,iVar4,param_5);\n      iVar3 = iVar1;\n      if (iVar1 != 0) {\n        iVar3 = 1;\n        param_3 = iVar1;\n      }\n      while ((iVar5 >> 2) + 1 < param_3) {\n        iVar1 = (*(code *)PTR___gmpn_hgcd_step_0009d51c)\n                          (param_3,param_1,param_2,iVar2,param_4,param_5);\n        if (iVar1 == 0) goto joined_r0x0005847c;\n        iVar3 = 1;\n        param_3 = iVar1;\n      }\n      if (iVar4 + 3 < param_3) {\n        iVar5 = (iVar2 * 2 - param_3) + 1;\n        iVar4 = param_3 - iVar5;\n        (*(code *)PTR___gmpn_hgcd_matrix_init_0009d3bc)(auStack_44,iVar4,param_5);\n        iVar1 = param_5 + ((iVar4 + 1) / 2 + 1) * 0x10;\n        iVar4 = __gmpn_hgcd(param_1 + iVar5 * 4,param_2 + iVar5 * 4,iVar4,auStack_44,iVar1);\n        if (0 < iVar4) {\n          param_3 = (*(code *)PTR___gmpn_hgcd_matrix_adjust_0009d3a8)\n                              (auStack_44,iVar5 + iVar4,param_1,param_2,iVar5,iVar1);\n          iVar3 = 1;\n          (*(code *)PTR___gmpn_hgcd_matrix_mul_0009d1e8)(param_4,auStack_44,iVar1);\n        }\n      }\n    }\n    while (iVar4 = (*(code *)PTR___gmpn_hgcd_step_0009d51c)\n                             (param_3,param_1,param_2,iVar2,param_4,param_5), iVar4 != 0) {\n      iVar3 = 1;\n      param_3 = iVar4;\n    }\njoined_r0x0005847c:\n    if (iVar3 != 0) goto LAB_000583b0;\n  }" { (if_statement "if (param_3 < 400) {\n      iVar3 = 0;\n    }\n    else {\n      iVar5 = param_3 * 3;\n      iVar1 = (*(code *)PTR___gmpn_hgcd_reduce_0009d110)\n                        (param_4,param_1,param_2,param_3,iVar4,param_5);\n      iVar3 = iVar1;\n      if (iVar1 != 0) {\n        iVar3 = 1;\n        param_3 = iVar1;\n      }\n      while ((iVar5 >> 2) + 1 < param_3) {\n        iVar1 = (*(code *)PTR___gmpn_hgcd_step_0009d51c)\n                          (param_3,param_1,param_2,iVar2,param_4,param_5);\n        if (iVar1 == 0) goto joined_r0x0005847c;\n        iVar3 = 1;\n        param_3 = iVar1;\n      }\n      if (iVar4 + 3 < param_3) {\n        iVar5 = (iVar2 * 2 - param_3) + 1;\n        iVar4 = param_3 - iVar5;\n        (*(code *)PTR___gmpn_hgcd_matrix_init_0009d3bc)(auStack_44,iVar4,param_5);\n        iVar1 = param_5 + ((iVar4 + 1) / 2 + 1) * 0x10;\n        iVar4 = __gmpn_hgcd(param_1 + iVar5 * 4,param_2 + iVar5 * 4,iVar4,auStack_44,iVar1);\n        if (0 < iVar4) {\n          param_3 = (*(code *)PTR___gmpn_hgcd_matrix_adjust_0009d3a8)\n                              (auStack_44,iVar5 + iVar4,param_1,param_2,iVar5,iVar1);\n          iVar3 = 1;\n          (*(code *)PTR___gmpn_hgcd_matrix_mul_0009d1e8)(param_4,auStack_44,iVar1);\n        }\n      }\n    }" if (parenthesized_expression "(param_3 < 400)" ( (binary_expression "param_3 < 400" identifier < number_literal) )) (compound_statement "{\n      iVar3 = 0;\n    }" { (expression_statement "iVar3 = 0;" (assignment_expression "iVar3 = 0" identifier = number_literal) ;) }) (else_clause "else {\n      iVar5 = param_3 * 3;\n      iVar1 = (*(code *)PTR___gmpn_hgcd_reduce_0009d110)\n                        (param_4,param_1,param_2,param_3,iVar4,param_5);\n      iVar3 = iVar1;\n      if (iVar1 != 0) {\n        iVar3 = 1;\n        param_3 = iVar1;\n      }\n      while ((iVar5 >> 2) + 1 < param_3) {\n        iVar1 = (*(code *)PTR___gmpn_hgcd_step_0009d51c)\n                          (param_3,param_1,param_2,iVar2,param_4,param_5);\n        if (iVar1 == 0) goto joined_r0x0005847c;\n        iVar3 = 1;\n        param_3 = iVar1;\n      }\n      if (iVar4 + 3 < param_3) {\n        iVar5 = (iVar2 * 2 - param_3) + 1;\n        iVar4 = param_3 - iVar5;\n        (*(code *)PTR___gmpn_hgcd_matrix_init_0009d3bc)(auStack_44,iVar4,param_5);\n        iVar1 = param_5 + ((iVar4 + 1) / 2 + 1) * 0x10;\n        iVar4 = __gmpn_hgcd(param_1 + iVar5 * 4,param_2 + iVar5 * 4,iVar4,auStack_44,iVar1);\n        if (0 < iVar4) {\n          param_3 = (*(code *)PTR___gmpn_hgcd_matrix_adjust_0009d3a8)\n                              (auStack_44,iVar5 + iVar4,param_1,param_2,iVar5,iVar1);\n          iVar3 = 1;\n          (*(code *)PTR___gmpn_hgcd_matrix_mul_0009d1e8)(param_4,auStack_44,iVar1);\n        }\n      }\n    }" else (compound_statement "{\n      iVar5 = param_3 * 3;\n      iVar1 = (*(code *)PTR___gmpn_hgcd_reduce_0009d110)\n                        (param_4,param_1,param_2,param_3,iVar4,param_5);\n      iVar3 = iVar1;\n      if (iVar1 != 0) {\n        iVar3 = 1;\n        param_3 = iVar1;\n      }\n      while ((iVar5 >> 2) + 1 < param_3) {\n        iVar1 = (*(code *)PTR___gmpn_hgcd_step_0009d51c)\n                          (param_3,param_1,param_2,iVar2,param_4,param_5);\n        if (iVar1 == 0) goto joined_r0x0005847c;\n        iVar3 = 1;\n        param_3 = iVar1;\n      }\n      if (iVar4 + 3 < param_3) {\n        iVar5 = (iVar2 * 2 - param_3) + 1;\n        iVar4 = param_3 - iVar5;\n        (*(code *)PTR___gmpn_hgcd_matrix_init_0009d3bc)(auStack_44,iVar4,param_5);\n        iVar1 = param_5 + ((iVar4 + 1) / 2 + 1) * 0x10;\n        iVar4 = __gmpn_hgcd(param_1 + iVar5 * 4,param_2 + iVar5 * 4,iVar4,auStack_44,iVar1);\n        if (0 < iVar4) {\n          param_3 = (*(code *)PTR___gmpn_hgcd_matrix_adjust_0009d3a8)\n                              (auStack_44,iVar5 + iVar4,param_1,param_2,iVar5,iVar1);\n          iVar3 = 1;\n          (*(code *)PTR___gmpn_hgcd_matrix_mul_0009d1e8)(param_4,auStack_44,iVar1);\n        }\n      }\n    }" { (expression_statement "iVar5 = param_3 * 3;" (assignment_expression "iVar5 = param_3 * 3" identifier = (binary_expression "param_3 * 3" identifier * number_literal)) ;) (expression_statement "iVar1 = (*(code *)PTR___gmpn_hgcd_reduce_0009d110)\n                        (param_4,param_1,param_2,param_3,iVar4,param_5);" (assignment_expression "iVar1 = (*(code *)PTR___gmpn_hgcd_reduce_0009d110)\n                        (param_4,param_1,param_2,param_3,iVar4,param_5)" identifier = (call_expression "(*(code *)PTR___gmpn_hgcd_reduce_0009d110)\n                        (param_4,param_1,param_2,param_3,iVar4,param_5)" (parenthesized_expression "(*(code *)PTR___gmpn_hgcd_reduce_0009d110)" ( (pointer_expression "*(code *)PTR___gmpn_hgcd_reduce_0009d110" * (cast_expression "(code *)PTR___gmpn_hgcd_reduce_0009d110" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(param_4,param_1,param_2,param_3,iVar4,param_5)" ( identifier , identifier , identifier , identifier , identifier , identifier )))) ;) (expression_statement "iVar3 = iVar1;" (assignment_expression "iVar3 = iVar1" identifier = identifier) ;) (if_statement "if (iVar1 != 0) {\n        iVar3 = 1;\n        param_3 = iVar1;\n      }" if (parenthesized_expression "(iVar1 != 0)" ( (binary_expression "iVar1 != 0" identifier != number_literal) )) (compound_statement "{\n        iVar3 = 1;\n        param_3 = iVar1;\n      }" { (expression_statement "iVar3 = 1;" (assignment_expression "iVar3 = 1" identifier = number_literal) ;) (expression_statement "param_3 = iVar1;" (assignment_expression "param_3 = iVar1" identifier = identifier) ;) })) (while_statement "while ((iVar5 >> 2) + 1 < param_3) {\n        iVar1 = (*(code *)PTR___gmpn_hgcd_step_0009d51c)\n                          (param_3,param_1,param_2,iVar2,param_4,param_5);\n        if (iVar1 == 0) goto joined_r0x0005847c;\n        iVar3 = 1;\n        param_3 = iVar1;\n      }" while (parenthesized_expression "((iVar5 >> 2) + 1 < param_3)" ( (binary_expression "(iVar5 >> 2) + 1 < param_3" (binary_expression "(iVar5 >> 2) + 1" (parenthesized_expression "(iVar5 >> 2)" ( (binary_expression "iVar5 >> 2" identifier >> number_literal) )) + number_literal) < identifier) )) (compound_statement "{\n        iVar1 = (*(code *)PTR___gmpn_hgcd_step_0009d51c)\n                          (param_3,param_1,param_2,iVar2,param_4,param_5);\n        if (iVar1 == 0) goto joined_r0x0005847c;\n        iVar3 = 1;\n        param_3 = iVar1;\n      }" { (expression_statement "iVar1 = (*(code *)PTR___gmpn_hgcd_step_0009d51c)\n                          (param_3,param_1,param_2,iVar2,param_4,param_5);" (assignment_expression "iVar1 = (*(code *)PTR___gmpn_hgcd_step_0009d51c)\n                          (param_3,param_1,param_2,iVar2,param_4,param_5)" identifier = (call_expression "(*(code *)PTR___gmpn_hgcd_step_0009d51c)\n                          (param_3,param_1,param_2,iVar2,param_4,param_5)" (parenthesized_expression "(*(code *)PTR___gmpn_hgcd_step_0009d51c)" ( (pointer_expression "*(code *)PTR___gmpn_hgcd_step_0009d51c" * (cast_expression "(code *)PTR___gmpn_hgcd_step_0009d51c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(param_3,param_1,param_2,iVar2,param_4,param_5)" ( identifier , identifier , identifier , identifier , identifier , identifier )))) ;) (if_statement "if (iVar1 == 0) goto joined_r0x0005847c;" if (parenthesized_expression "(iVar1 == 0)" ( (binary_expression "iVar1 == 0" identifier == number_literal) )) (goto_statement "goto joined_r0x0005847c;" goto statement_identifier ;)) (expression_statement "iVar3 = 1;" (assignment_expression "iVar3 = 1" identifier = number_literal) ;) (expression_statement "param_3 = iVar1;" (assignment_expression "param_3 = iVar1" identifier = identifier) ;) })) (if_statement "if (iVar4 + 3 < param_3) {\n        iVar5 = (iVar2 * 2 - param_3) + 1;\n        iVar4 = param_3 - iVar5;\n        (*(code *)PTR___gmpn_hgcd_matrix_init_0009d3bc)(auStack_44,iVar4,param_5);\n        iVar1 = param_5 + ((iVar4 + 1) / 2 + 1) * 0x10;\n        iVar4 = __gmpn_hgcd(param_1 + iVar5 * 4,param_2 + iVar5 * 4,iVar4,auStack_44,iVar1);\n        if (0 < iVar4) {\n          param_3 = (*(code *)PTR___gmpn_hgcd_matrix_adjust_0009d3a8)\n                              (auStack_44,iVar5 + iVar4,param_1,param_2,iVar5,iVar1);\n          iVar3 = 1;\n          (*(code *)PTR___gmpn_hgcd_matrix_mul_0009d1e8)(param_4,auStack_44,iVar1);\n        }\n      }" if (parenthesized_expression "(iVar4 + 3 < param_3)" ( (binary_expression "iVar4 + 3 < param_3" (binary_expression "iVar4 + 3" identifier + number_literal) < identifier) )) (compound_statement "{\n        iVar5 = (iVar2 * 2 - param_3) + 1;\n        iVar4 = param_3 - iVar5;\n        (*(code *)PTR___gmpn_hgcd_matrix_init_0009d3bc)(auStack_44,iVar4,param_5);\n        iVar1 = param_5 + ((iVar4 + 1) / 2 + 1) * 0x10;\n        iVar4 = __gmpn_hgcd(param_1 + iVar5 * 4,param_2 + iVar5 * 4,iVar4,auStack_44,iVar1);\n        if (0 < iVar4) {\n          param_3 = (*(code *)PTR___gmpn_hgcd_matrix_adjust_0009d3a8)\n                              (auStack_44,iVar5 + iVar4,param_1,param_2,iVar5,iVar1);\n          iVar3 = 1;\n          (*(code *)PTR___gmpn_hgcd_matrix_mul_0009d1e8)(param_4,auStack_44,iVar1);\n        }\n      }" { (expression_statement "iVar5 = (iVar2 * 2 - param_3) + 1;" (assignment_expression "iVar5 = (iVar2 * 2 - param_3) + 1" identifier = (binary_expression "(iVar2 * 2 - param_3) + 1" (parenthesized_expression "(iVar2 * 2 - param_3)" ( (binary_expression "iVar2 * 2 - param_3" (binary_expression "iVar2 * 2" identifier * number_literal) - identifier) )) + number_literal)) ;) (expression_statement "iVar4 = param_3 - iVar5;" (assignment_expression "iVar4 = param_3 - iVar5" identifier = (binary_expression "param_3 - iVar5" identifier - identifier)) ;) (expression_statement "(*(code *)PTR___gmpn_hgcd_matrix_init_0009d3bc)(auStack_44,iVar4,param_5);" (call_expression "(*(code *)PTR___gmpn_hgcd_matrix_init_0009d3bc)(auStack_44,iVar4,param_5)" (parenthesized_expression "(*(code *)PTR___gmpn_hgcd_matrix_init_0009d3bc)" ( (pointer_expression "*(code *)PTR___gmpn_hgcd_matrix_init_0009d3bc" * (cast_expression "(code *)PTR___gmpn_hgcd_matrix_init_0009d3bc" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(auStack_44,iVar4,param_5)" ( identifier , identifier , identifier ))) ;) (expression_statement "iVar1 = param_5 + ((iVar4 + 1) / 2 + 1) * 0x10;" (assignment_expression "iVar1 = param_5 + ((iVar4 + 1) / 2 + 1) * 0x10" identifier = (binary_expression "param_5 + ((iVar4 + 1) / 2 + 1) * 0x10" identifier + (binary_expression "((iVar4 + 1) / 2 + 1) * 0x10" (parenthesized_expression "((iVar4 + 1) / 2 + 1)" ( (binary_expression "(iVar4 + 1) / 2 + 1" (binary_expression "(iVar4 + 1) / 2" (parenthesized_expression "(iVar4 + 1)" ( (binary_expression "iVar4 + 1" identifier + number_literal) )) / number_literal) + number_literal) )) * number_literal))) ;) (expression_statement "iVar4 = __gmpn_hgcd(param_1 + iVar5 * 4,param_2 + iVar5 * 4,iVar4,auStack_44,iVar1);" (assignment_expression "iVar4 = __gmpn_hgcd(param_1 + iVar5 * 4,param_2 + iVar5 * 4,iVar4,auStack_44,iVar1)" identifier = (call_expression "__gmpn_hgcd(param_1 + iVar5 * 4,param_2 + iVar5 * 4,iVar4,auStack_44,iVar1)" identifier (argument_list "(param_1 + iVar5 * 4,param_2 + iVar5 * 4,iVar4,auStack_44,iVar1)" ( (binary_expression "param_1 + iVar5 * 4" identifier + (binary_expression "iVar5 * 4" identifier * number_literal)) , (binary_expression "param_2 + iVar5 * 4" identifier + (binary_expression "iVar5 * 4" identifier * number_literal)) , identifier , identifier , identifier )))) ;) (if_statement "if (0 < iVar4) {\n          param_3 = (*(code *)PTR___gmpn_hgcd_matrix_adjust_0009d3a8)\n                              (auStack_44,iVar5 + iVar4,param_1,param_2,iVar5,iVar1);\n          iVar3 = 1;\n          (*(code *)PTR___gmpn_hgcd_matrix_mul_0009d1e8)(param_4,auStack_44,iVar1);\n        }" if (parenthesized_expression "(0 < iVar4)" ( (binary_expression "0 < iVar4" number_literal < identifier) )) (compound_statement "{\n          param_3 = (*(code *)PTR___gmpn_hgcd_matrix_adjust_0009d3a8)\n                              (auStack_44,iVar5 + iVar4,param_1,param_2,iVar5,iVar1);\n          iVar3 = 1;\n          (*(code *)PTR___gmpn_hgcd_matrix_mul_0009d1e8)(param_4,auStack_44,iVar1);\n        }" { (expression_statement "param_3 = (*(code *)PTR___gmpn_hgcd_matrix_adjust_0009d3a8)\n                              (auStack_44,iVar5 + iVar4,param_1,param_2,iVar5,iVar1);" (assignment_expression "param_3 = (*(code *)PTR___gmpn_hgcd_matrix_adjust_0009d3a8)\n                              (auStack_44,iVar5 + iVar4,param_1,param_2,iVar5,iVar1)" identifier = (call_expression "(*(code *)PTR___gmpn_hgcd_matrix_adjust_0009d3a8)\n                              (auStack_44,iVar5 + iVar4,param_1,param_2,iVar5,iVar1)" (parenthesized_expression "(*(code *)PTR___gmpn_hgcd_matrix_adjust_0009d3a8)" ( (pointer_expression "*(code *)PTR___gmpn_hgcd_matrix_adjust_0009d3a8" * (cast_expression "(code *)PTR___gmpn_hgcd_matrix_adjust_0009d3a8" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(auStack_44,iVar5 + iVar4,param_1,param_2,iVar5,iVar1)" ( identifier , (binary_expression "iVar5 + iVar4" identifier + identifier) , identifier , identifier , identifier , identifier )))) ;) (expression_statement "iVar3 = 1;" (assignment_expression "iVar3 = 1" identifier = number_literal) ;) (expression_statement "(*(code *)PTR___gmpn_hgcd_matrix_mul_0009d1e8)(param_4,auStack_44,iVar1);" (call_expression "(*(code *)PTR___gmpn_hgcd_matrix_mul_0009d1e8)(param_4,auStack_44,iVar1)" (parenthesized_expression "(*(code *)PTR___gmpn_hgcd_matrix_mul_0009d1e8)" ( (pointer_expression "*(code *)PTR___gmpn_hgcd_matrix_mul_0009d1e8" * (cast_expression "(code *)PTR___gmpn_hgcd_matrix_mul_0009d1e8" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(param_4,auStack_44,iVar1)" ( identifier , identifier , identifier ))) ;) })) })) }))) (while_statement "while (iVar4 = (*(code *)PTR___gmpn_hgcd_step_0009d51c)\n                             (param_3,param_1,param_2,iVar2,param_4,param_5), iVar4 != 0) {\n      iVar3 = 1;\n      param_3 = iVar4;\n    }" while (parenthesized_expression "(iVar4 = (*(code *)PTR___gmpn_hgcd_step_0009d51c)\n                             (param_3,param_1,param_2,iVar2,param_4,param_5), iVar4 != 0)" ( (comma_expression "iVar4 = (*(code *)PTR___gmpn_hgcd_step_0009d51c)\n                             (param_3,param_1,param_2,iVar2,param_4,param_5), iVar4 != 0" (assignment_expression "iVar4 = (*(code *)PTR___gmpn_hgcd_step_0009d51c)\n                             (param_3,param_1,param_2,iVar2,param_4,param_5)" identifier = (call_expression "(*(code *)PTR___gmpn_hgcd_step_0009d51c)\n                             (param_3,param_1,param_2,iVar2,param_4,param_5)" (parenthesized_expression "(*(code *)PTR___gmpn_hgcd_step_0009d51c)" ( (pointer_expression "*(code *)PTR___gmpn_hgcd_step_0009d51c" * (cast_expression "(code *)PTR___gmpn_hgcd_step_0009d51c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(param_3,param_1,param_2,iVar2,param_4,param_5)" ( identifier , identifier , identifier , identifier , identifier , identifier )))) , (binary_expression "iVar4 != 0" identifier != number_literal)) )) (compound_statement "{\n      iVar3 = 1;\n      param_3 = iVar4;\n    }" { (expression_statement "iVar3 = 1;" (assignment_expression "iVar3 = 1" identifier = number_literal) ;) (expression_statement "param_3 = iVar4;" (assignment_expression "param_3 = iVar4" identifier = identifier) ;) })) (labeled_statement "joined_r0x0005847c:\n    if (iVar3 != 0) goto LAB_000583b0;" statement_identifier : (if_statement "if (iVar3 != 0) goto LAB_000583b0;" if (parenthesized_expression "(iVar3 != 0)" ( (binary_expression "iVar3 != 0" identifier != number_literal) )) (goto_statement "goto LAB_000583b0;" goto statement_identifier ;))) })) (expression_statement "param_3 = 0;" (assignment_expression "param_3 = 0" identifier = number_literal) ;) (labeled_statement "LAB_000583b0:\n  if (local_2c != *(int *)puVar6) {\n    puVar6 = PTR___stack_chk_fail_0009d4d0;\n    (*(code *)PTR___stack_chk_fail_0009d4d0)();\n    if (399 < local_2c) {\n      if (local_2c < 0x18f0001) {\n        iVar2 = 0x20;\n        if (0x18f00 < local_2c) {\n          iVar2 = 0x18;\n        }\n        iVar4 = 9;\n        if (0x18f00 >= local_2c) {\n          iVar4 = 1;\n        }\n      }\n      else {\n        iVar2 = 0x10;\n        iVar4 = 0x11;\n      }\n      local_2c = (((uint)*(byte *)(*(int *)(puVar6 + 0x44bfc) +\n                                  ((uint)((local_2c + -1) / 399) >> iVar4)) - iVar2) + 0x20) * 0x16\n                 + (local_2c + 3 >> 2) * 0x14 + 400;\n    }\n    return local_2c;\n  }" statement_identifier : (if_statement "if (local_2c != *(int *)puVar6) {\n    puVar6 = PTR___stack_chk_fail_0009d4d0;\n    (*(code *)PTR___stack_chk_fail_0009d4d0)();\n    if (399 < local_2c) {\n      if (local_2c < 0x18f0001) {\n        iVar2 = 0x20;\n        if (0x18f00 < local_2c) {\n          iVar2 = 0x18;\n        }\n        iVar4 = 9;\n        if (0x18f00 >= local_2c) {\n          iVar4 = 1;\n        }\n      }\n      else {\n        iVar2 = 0x10;\n        iVar4 = 0x11;\n      }\n      local_2c = (((uint)*(byte *)(*(int *)(puVar6 + 0x44bfc) +\n                                  ((uint)((local_2c + -1) / 399) >> iVar4)) - iVar2) + 0x20) * 0x16\n                 + (local_2c + 3 >> 2) * 0x14 + 400;\n    }\n    return local_2c;\n  }" if (parenthesized_expression "(local_2c != *(int *)puVar6)" ( (binary_expression "local_2c != *(int *)puVar6" identifier != (pointer_expression "*(int *)puVar6" * (cast_expression "(int *)puVar6" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) )) (compound_statement "{\n    puVar6 = PTR___stack_chk_fail_0009d4d0;\n    (*(code *)PTR___stack_chk_fail_0009d4d0)();\n    if (399 < local_2c) {\n      if (local_2c < 0x18f0001) {\n        iVar2 = 0x20;\n        if (0x18f00 < local_2c) {\n          iVar2 = 0x18;\n        }\n        iVar4 = 9;\n        if (0x18f00 >= local_2c) {\n          iVar4 = 1;\n        }\n      }\n      else {\n        iVar2 = 0x10;\n        iVar4 = 0x11;\n      }\n      local_2c = (((uint)*(byte *)(*(int *)(puVar6 + 0x44bfc) +\n                                  ((uint)((local_2c + -1) / 399) >> iVar4)) - iVar2) + 0x20) * 0x16\n                 + (local_2c + 3 >> 2) * 0x14 + 400;\n    }\n    return local_2c;\n  }" { (expression_statement "puVar6 = PTR___stack_chk_fail_0009d4d0;" (assignment_expression "puVar6 = PTR___stack_chk_fail_0009d4d0" identifier = identifier) ;) (expression_statement "(*(code *)PTR___stack_chk_fail_0009d4d0)();" (call_expression "(*(code *)PTR___stack_chk_fail_0009d4d0)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_0009d4d0)" ( (pointer_expression "*(code *)PTR___stack_chk_fail_0009d4d0" * (cast_expression "(code *)PTR___stack_chk_fail_0009d4d0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (if_statement "if (399 < local_2c) {\n      if (local_2c < 0x18f0001) {\n        iVar2 = 0x20;\n        if (0x18f00 < local_2c) {\n          iVar2 = 0x18;\n        }\n        iVar4 = 9;\n        if (0x18f00 >= local_2c) {\n          iVar4 = 1;\n        }\n      }\n      else {\n        iVar2 = 0x10;\n        iVar4 = 0x11;\n      }\n      local_2c = (((uint)*(byte *)(*(int *)(puVar6 + 0x44bfc) +\n                                  ((uint)((local_2c + -1) / 399) >> iVar4)) - iVar2) + 0x20) * 0x16\n                 + (local_2c + 3 >> 2) * 0x14 + 400;\n    }" if (parenthesized_expression "(399 < local_2c)" ( (binary_expression "399 < local_2c" number_literal < identifier) )) (compound_statement "{\n      if (local_2c < 0x18f0001) {\n        iVar2 = 0x20;\n        if (0x18f00 < local_2c) {\n          iVar2 = 0x18;\n        }\n        iVar4 = 9;\n        if (0x18f00 >= local_2c) {\n          iVar4 = 1;\n        }\n      }\n      else {\n        iVar2 = 0x10;\n        iVar4 = 0x11;\n      }\n      local_2c = (((uint)*(byte *)(*(int *)(puVar6 + 0x44bfc) +\n                                  ((uint)((local_2c + -1) / 399) >> iVar4)) - iVar2) + 0x20) * 0x16\n                 + (local_2c + 3 >> 2) * 0x14 + 400;\n    }" { (if_statement "if (local_2c < 0x18f0001) {\n        iVar2 = 0x20;\n        if (0x18f00 < local_2c) {\n          iVar2 = 0x18;\n        }\n        iVar4 = 9;\n        if (0x18f00 >= local_2c) {\n          iVar4 = 1;\n        }\n      }\n      else {\n        iVar2 = 0x10;\n        iVar4 = 0x11;\n      }" if (parenthesized_expression "(local_2c < 0x18f0001)" ( (binary_expression "local_2c < 0x18f0001" identifier < number_literal) )) (compound_statement "{\n        iVar2 = 0x20;\n        if (0x18f00 < local_2c) {\n          iVar2 = 0x18;\n        }\n        iVar4 = 9;\n        if (0x18f00 >= local_2c) {\n          iVar4 = 1;\n        }\n      }" { (expression_statement "iVar2 = 0x20;" (assignment_expression "iVar2 = 0x20" identifier = number_literal) ;) (if_statement "if (0x18f00 < local_2c) {\n          iVar2 = 0x18;\n        }" if (parenthesized_expression "(0x18f00 < local_2c)" ( (binary_expression "0x18f00 < local_2c" number_literal < identifier) )) (compound_statement "{\n          iVar2 = 0x18;\n        }" { (expression_statement "iVar2 = 0x18;" (assignment_expression "iVar2 = 0x18" identifier = number_literal) ;) })) (expression_statement "iVar4 = 9;" (assignment_expression "iVar4 = 9" identifier = number_literal) ;) (if_statement "if (0x18f00 >= local_2c) {\n          iVar4 = 1;\n        }" if (parenthesized_expression "(0x18f00 >= local_2c)" ( (binary_expression "0x18f00 >= local_2c" number_literal >= identifier) )) (compound_statement "{\n          iVar4 = 1;\n        }" { (expression_statement "iVar4 = 1;" (assignment_expression "iVar4 = 1" identifier = number_literal) ;) })) }) (else_clause "else {\n        iVar2 = 0x10;\n        iVar4 = 0x11;\n      }" else (compound_statement "{\n        iVar2 = 0x10;\n        iVar4 = 0x11;\n      }" { (expression_statement "iVar2 = 0x10;" (assignment_expression "iVar2 = 0x10" identifier = number_literal) ;) (expression_statement "iVar4 = 0x11;" (assignment_expression "iVar4 = 0x11" identifier = number_literal) ;) }))) (expression_statement "local_2c = (((uint)*(byte *)(*(int *)(puVar6 + 0x44bfc) +\n                                  ((uint)((local_2c + -1) / 399) >> iVar4)) - iVar2) + 0x20) * 0x16\n                 + (local_2c + 3 >> 2) * 0x14 + 400;" (assignment_expression "local_2c = (((uint)*(byte *)(*(int *)(puVar6 + 0x44bfc) +\n                                  ((uint)((local_2c + -1) / 399) >> iVar4)) - iVar2) + 0x20) * 0x16\n                 + (local_2c + 3 >> 2) * 0x14 + 400" identifier = (binary_expression "(((uint)*(byte *)(*(int *)(puVar6 + 0x44bfc) +\n                                  ((uint)((local_2c + -1) / 399) >> iVar4)) - iVar2) + 0x20) * 0x16\n                 + (local_2c + 3 >> 2) * 0x14 + 400" (binary_expression "(((uint)*(byte *)(*(int *)(puVar6 + 0x44bfc) +\n                                  ((uint)((local_2c + -1) / 399) >> iVar4)) - iVar2) + 0x20) * 0x16\n                 + (local_2c + 3 >> 2) * 0x14" (binary_expression "(((uint)*(byte *)(*(int *)(puVar6 + 0x44bfc) +\n                                  ((uint)((local_2c + -1) / 399) >> iVar4)) - iVar2) + 0x20) * 0x16" (parenthesized_expression "(((uint)*(byte *)(*(int *)(puVar6 + 0x44bfc) +\n                                  ((uint)((local_2c + -1) / 399) >> iVar4)) - iVar2) + 0x20)" ( (binary_expression "((uint)*(byte *)(*(int *)(puVar6 + 0x44bfc) +\n                                  ((uint)((local_2c + -1) / 399) >> iVar4)) - iVar2) + 0x20" (parenthesized_expression "((uint)*(byte *)(*(int *)(puVar6 + 0x44bfc) +\n                                  ((uint)((local_2c + -1) / 399) >> iVar4)) - iVar2)" ( (binary_expression "(uint)*(byte *)(*(int *)(puVar6 + 0x44bfc) +\n                                  ((uint)((local_2c + -1) / 399) >> iVar4)) - iVar2" (binary_expression "(uint)*(byte *)(*(int *)(puVar6 + 0x44bfc) +\n                                  ((uint)((local_2c + -1) / 399) >> iVar4))" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)(*(int *)(puVar6 + 0x44bfc) +\n                                  ((uint)((local_2c + -1) / 399) >> iVar4))" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(puVar6 + 0x44bfc) +\n                                  ((uint)((local_2c + -1) / 399) >> iVar4))" ( (binary_expression "*(int *)(puVar6 + 0x44bfc) +\n                                  ((uint)((local_2c + -1) / 399) >> iVar4)" (pointer_expression "*(int *)(puVar6 + 0x44bfc)" * (cast_expression "(int *)(puVar6 + 0x44bfc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar6 + 0x44bfc)" ( (binary_expression "puVar6 + 0x44bfc" identifier + number_literal) )))) + (parenthesized_expression "((uint)((local_2c + -1) / 399) >> iVar4)" ( (binary_expression "(uint)((local_2c + -1) / 399) >> iVar4" (call_expression "(uint)((local_2c + -1) / 399)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((local_2c + -1) / 399)" ( (binary_expression "(local_2c + -1) / 399" (parenthesized_expression "(local_2c + -1)" ( (binary_expression "local_2c + -1" identifier + number_literal) )) / number_literal) ))) >> identifier) ))) )))) - identifier) )) + number_literal) )) * number_literal) + (binary_expression "(local_2c + 3 >> 2) * 0x14" (parenthesized_expression "(local_2c + 3 >> 2)" ( (binary_expression "local_2c + 3 >> 2" (binary_expression "local_2c + 3" identifier + number_literal) >> number_literal) )) * number_literal)) + number_literal)) ;) })) (return_statement "return local_2c;" return identifier ;) }))) (return_statement "return param_3;" return identifier ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT / LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT * LIT)) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT , IDENT , IDENT , IDENT , IDENT , IDENT )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) })) (while_statement while (parenthesized_expression ( (binary_expression (binary_expression (parenthesized_expression ( (binary_expression IDENT >> LIT) )) + LIT) < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT , IDENT , IDENT , IDENT , IDENT , IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression (binary_expression IDENT * LIT) - IDENT) )) + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - IDENT)) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT , IDENT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (binary_expression (parenthesized_expression ( (binary_expression (binary_expression (parenthesized_expression ( (binary_expression IDENT + LIT) )) / LIT) + LIT) )) * LIT))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (binary_expression IDENT + (binary_expression IDENT * LIT)) , (binary_expression IDENT + (binary_expression IDENT * LIT)) , IDENT , IDENT , IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT , (binary_expression IDENT + IDENT) , IDENT , IDENT , IDENT , IDENT )))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT , IDENT , IDENT ))) ;) })) })) }))) (while_statement while (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT , IDENT , IDENT , IDENT , IDENT , IDENT )))) , (binary_expression IDENT != LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) })) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (goto_statement goto statement_identifier ;))) })) (expression_statement (assignment_expression IDENT = LIT) ;) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT != (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT))) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( ))) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) })) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT >= IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) })) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) }))) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (binary_expression (parenthesized_expression ( IDENT )) * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + (parenthesized_expression ( (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (parenthesized_expression ( (binary_expression IDENT + LIT) )) / LIT) ))) >> IDENT) ))) )))) - IDENT) )) + LIT) )) * LIT) + (binary_expression (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) >> LIT) )) * LIT)) + LIT)) ;) })) (return_statement return IDENT ;) }))) (return_statement return IDENT ;) })))
(function_definition "int __gmpn_hgcd(int param_1,int param_2,int param_3,undefined4 param_4,int param_5)\n\n{\n  int iVar1;\n  int iVar2;\n  int iVar3;\n  int iVar4;\n  int iVar5;\n  undefined *puVar6;\n  undefined1 auStack_44 [24];\n  int local_2c;\n  \n  puVar6 = PTR___stack_chk_guard_0009d540;\n  iVar4 = param_3 / 2;\n  iVar2 = iVar4 + 1;\n  local_2c = *(int *)PTR___stack_chk_guard_0009d540;\n  if (iVar2 < param_3) {\n    if (param_3 < 400) {\n      iVar3 = 0;\n    }\n    else {\n      iVar5 = param_3 * 3;\n      iVar1 = (*(code *)PTR___gmpn_hgcd_reduce_0009d110)\n                        (param_4,param_1,param_2,param_3,iVar4,param_5);\n      iVar3 = iVar1;\n      if (iVar1 != 0) {\n        iVar3 = 1;\n        param_3 = iVar1;\n      }\n      while ((iVar5 >> 2) + 1 < param_3) {\n        iVar1 = (*(code *)PTR___gmpn_hgcd_step_0009d51c)\n                          (param_3,param_1,param_2,iVar2,param_4,param_5);\n        if (iVar1 == 0) goto joined_r0x0005847c;\n        iVar3 = 1;\n        param_3 = iVar1;\n      }\n      if (iVar4 + 3 < param_3) {\n        iVar5 = (iVar2 * 2 - param_3) + 1;\n        iVar4 = param_3 - iVar5;\n        (*(code *)PTR___gmpn_hgcd_matrix_init_0009d3bc)(auStack_44,iVar4,param_5);\n        iVar1 = param_5 + ((iVar4 + 1) / 2 + 1) * 0x10;\n        iVar4 = __gmpn_hgcd(param_1 + iVar5 * 4,param_2 + iVar5 * 4,iVar4,auStack_44,iVar1);\n        if (0 < iVar4) {\n          param_3 = (*(code *)PTR___gmpn_hgcd_matrix_adjust_0009d3a8)\n                              (auStack_44,iVar5 + iVar4,param_1,param_2,iVar5,iVar1);\n          iVar3 = 1;\n          (*(code *)PTR___gmpn_hgcd_matrix_mul_0009d1e8)(param_4,auStack_44,iVar1);\n        }\n      }\n    }\n    while (iVar4 = (*(code *)PTR___gmpn_hgcd_step_0009d51c)\n                             (param_3,param_1,param_2,iVar2,param_4,param_5), iVar4 != 0) {\n      iVar3 = 1;\n      param_3 = iVar4;\n    }\njoined_r0x0005847c:\n    if (iVar3 != 0) goto LAB_000583b0;\n  }\n  param_3 = 0;\nLAB_000583b0:\n  if (local_2c != *(int *)puVar6) {\n    puVar6 = PTR___stack_chk_fail_0009d4d0;\n    (*(code *)PTR___stack_chk_fail_0009d4d0)();\n    if (399 < local_2c) {\n      if (local_2c < 0x18f0001) {\n        iVar2 = 0x20;\n        if (0x18f00 < local_2c) {\n          iVar2 = 0x18;\n        }\n        iVar4 = 9;\n        if (0x18f00 >= local_2c) {\n          iVar4 = 1;\n        }\n      }\n      else {\n        iVar2 = 0x10;\n        iVar4 = 0x11;\n      }\n      local_2c = (((uint)*(byte *)(*(int *)(puVar6 + 0x44bfc) +\n                                  ((uint)((local_2c + -1) / 399) >> iVar4)) - iVar2) + 0x20) * 0x16\n                 + (local_2c + 3 >> 2) * 0x14 + 400;\n    }\n    return local_2c;\n  }\n  return param_3;\n}" (primitive_type "int") (function_declarator "__gmpn_hgcd(int param_1,int param_2,int param_3,undefined4 param_4,int param_5)" (identifier "__gmpn_hgcd") (parameter_list "(int param_1,int param_2,int param_3,undefined4 param_4,int param_5)" (( "(") (parameter_declaration "int param_1" (primitive_type "int") (identifier "param_1")) (, ",") (parameter_declaration "int param_2" (primitive_type "int") (identifier "param_2")) (, ",") (parameter_declaration "int param_3" (primitive_type "int") (identifier "param_3")) (, ",") (parameter_declaration "undefined4 param_4" (type_identifier "undefined4") (identifier "param_4")) (, ",") (parameter_declaration "int param_5" (primitive_type "int") (identifier "param_5")) () ")"))) (compound_statement "{\n  int iVar1;\n  int iVar2;\n  int iVar3;\n  int iVar4;\n  int iVar5;\n  undefined *puVar6;\n  undefined1 auStack_44 [24];\n  int local_2c;\n  \n  puVar6 = PTR___stack_chk_guard_0009d540;\n  iVar4 = param_3 / 2;\n  iVar2 = iVar4 + 1;\n  local_2c = *(int *)PTR___stack_chk_guard_0009d540;\n  if (iVar2 < param_3) {\n    if (param_3 < 400) {\n      iVar3 = 0;\n    }\n    else {\n      iVar5 = param_3 * 3;\n      iVar1 = (*(code *)PTR___gmpn_hgcd_reduce_0009d110)\n                        (param_4,param_1,param_2,param_3,iVar4,param_5);\n      iVar3 = iVar1;\n      if (iVar1 != 0) {\n        iVar3 = 1;\n        param_3 = iVar1;\n      }\n      while ((iVar5 >> 2) + 1 < param_3) {\n        iVar1 = (*(code *)PTR___gmpn_hgcd_step_0009d51c)\n                          (param_3,param_1,param_2,iVar2,param_4,param_5);\n        if (iVar1 == 0) goto joined_r0x0005847c;\n        iVar3 = 1;\n        param_3 = iVar1;\n      }\n      if (iVar4 + 3 < param_3) {\n        iVar5 = (iVar2 * 2 - param_3) + 1;\n        iVar4 = param_3 - iVar5;\n        (*(code *)PTR___gmpn_hgcd_matrix_init_0009d3bc)(auStack_44,iVar4,param_5);\n        iVar1 = param_5 + ((iVar4 + 1) / 2 + 1) * 0x10;\n        iVar4 = __gmpn_hgcd(param_1 + iVar5 * 4,param_2 + iVar5 * 4,iVar4,auStack_44,iVar1);\n        if (0 < iVar4) {\n          param_3 = (*(code *)PTR___gmpn_hgcd_matrix_adjust_0009d3a8)\n                              (auStack_44,iVar5 + iVar4,param_1,param_2,iVar5,iVar1);\n          iVar3 = 1;\n          (*(code *)PTR___gmpn_hgcd_matrix_mul_0009d1e8)(param_4,auStack_44,iVar1);\n        }\n      }\n    }\n    while (iVar4 = (*(code *)PTR___gmpn_hgcd_step_0009d51c)\n                             (param_3,param_1,param_2,iVar2,param_4,param_5), iVar4 != 0) {\n      iVar3 = 1;\n      param_3 = iVar4;\n    }\njoined_r0x0005847c:\n    if (iVar3 != 0) goto LAB_000583b0;\n  }\n  param_3 = 0;\nLAB_000583b0:\n  if (local_2c != *(int *)puVar6) {\n    puVar6 = PTR___stack_chk_fail_0009d4d0;\n    (*(code *)PTR___stack_chk_fail_0009d4d0)();\n    if (399 < local_2c) {\n      if (local_2c < 0x18f0001) {\n        iVar2 = 0x20;\n        if (0x18f00 < local_2c) {\n          iVar2 = 0x18;\n        }\n        iVar4 = 9;\n        if (0x18f00 >= local_2c) {\n          iVar4 = 1;\n        }\n      }\n      else {\n        iVar2 = 0x10;\n        iVar4 = 0x11;\n      }\n      local_2c = (((uint)*(byte *)(*(int *)(puVar6 + 0x44bfc) +\n                                  ((uint)((local_2c + -1) / 399) >> iVar4)) - iVar2) + 0x20) * 0x16\n                 + (local_2c + 3 >> 2) * 0x14 + 400;\n    }\n    return local_2c;\n  }\n  return param_3;\n}" ({ "{") (declaration "int iVar1;" (primitive_type "int") (identifier "iVar1") (; ";")) (declaration "int iVar2;" (primitive_type "int") (identifier "iVar2") (; ";")) (declaration "int iVar3;" (primitive_type "int") (identifier "iVar3") (; ";")) (declaration "int iVar4;" (primitive_type "int") (identifier "iVar4") (; ";")) (declaration "int iVar5;" (primitive_type "int") (identifier "iVar5") (; ";")) (declaration "undefined *puVar6;" (type_identifier "undefined") (pointer_declarator "*puVar6" (* "*") (identifier "puVar6")) (; ";")) (declaration "undefined1 auStack_44 [24];" (type_identifier "undefined1") (array_declarator "auStack_44 [24]" (identifier "auStack_44") ([ "[") (number_literal "24") (] "]")) (; ";")) (declaration "int local_2c;" (primitive_type "int") (identifier "local_2c") (; ";")) (expression_statement "puVar6 = PTR___stack_chk_guard_0009d540;" (assignment_expression "puVar6 = PTR___stack_chk_guard_0009d540" (identifier "puVar6") (= "=") (identifier "PTR___stack_chk_guard_0009d540")) (; ";")) (expression_statement "iVar4 = param_3 / 2;" (assignment_expression "iVar4 = param_3 / 2" (identifier "iVar4") (= "=") (binary_expression "param_3 / 2" (identifier "param_3") (/ "/") (number_literal "2"))) (; ";")) (expression_statement "iVar2 = iVar4 + 1;" (assignment_expression "iVar2 = iVar4 + 1" (identifier "iVar2") (= "=") (binary_expression "iVar4 + 1" (identifier "iVar4") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "local_2c = *(int *)PTR___stack_chk_guard_0009d540;" (assignment_expression "local_2c = *(int *)PTR___stack_chk_guard_0009d540" (identifier "local_2c") (= "=") (pointer_expression "*(int *)PTR___stack_chk_guard_0009d540" (* "*") (cast_expression "(int *)PTR___stack_chk_guard_0009d540" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___stack_chk_guard_0009d540")))) (; ";")) (if_statement "if (iVar2 < param_3) {\n    if (param_3 < 400) {\n      iVar3 = 0;\n    }\n    else {\n      iVar5 = param_3 * 3;\n      iVar1 = (*(code *)PTR___gmpn_hgcd_reduce_0009d110)\n                        (param_4,param_1,param_2,param_3,iVar4,param_5);\n      iVar3 = iVar1;\n      if (iVar1 != 0) {\n        iVar3 = 1;\n        param_3 = iVar1;\n      }\n      while ((iVar5 >> 2) + 1 < param_3) {\n        iVar1 = (*(code *)PTR___gmpn_hgcd_step_0009d51c)\n                          (param_3,param_1,param_2,iVar2,param_4,param_5);\n        if (iVar1 == 0) goto joined_r0x0005847c;\n        iVar3 = 1;\n        param_3 = iVar1;\n      }\n      if (iVar4 + 3 < param_3) {\n        iVar5 = (iVar2 * 2 - param_3) + 1;\n        iVar4 = param_3 - iVar5;\n        (*(code *)PTR___gmpn_hgcd_matrix_init_0009d3bc)(auStack_44,iVar4,param_5);\n        iVar1 = param_5 + ((iVar4 + 1) / 2 + 1) * 0x10;\n        iVar4 = __gmpn_hgcd(param_1 + iVar5 * 4,param_2 + iVar5 * 4,iVar4,auStack_44,iVar1);\n        if (0 < iVar4) {\n          param_3 = (*(code *)PTR___gmpn_hgcd_matrix_adjust_0009d3a8)\n                              (auStack_44,iVar5 + iVar4,param_1,param_2,iVar5,iVar1);\n          iVar3 = 1;\n          (*(code *)PTR___gmpn_hgcd_matrix_mul_0009d1e8)(param_4,auStack_44,iVar1);\n        }\n      }\n    }\n    while (iVar4 = (*(code *)PTR___gmpn_hgcd_step_0009d51c)\n                             (param_3,param_1,param_2,iVar2,param_4,param_5), iVar4 != 0) {\n      iVar3 = 1;\n      param_3 = iVar4;\n    }\njoined_r0x0005847c:\n    if (iVar3 != 0) goto LAB_000583b0;\n  }" (if "if") (parenthesized_expression "(iVar2 < param_3)" (( "(") (binary_expression "iVar2 < param_3" (identifier "iVar2") (< "<") (identifier "param_3")) () ")")) (compound_statement "{\n    if (param_3 < 400) {\n      iVar3 = 0;\n    }\n    else {\n      iVar5 = param_3 * 3;\n      iVar1 = (*(code *)PTR___gmpn_hgcd_reduce_0009d110)\n                        (param_4,param_1,param_2,param_3,iVar4,param_5);\n      iVar3 = iVar1;\n      if (iVar1 != 0) {\n        iVar3 = 1;\n        param_3 = iVar1;\n      }\n      while ((iVar5 >> 2) + 1 < param_3) {\n        iVar1 = (*(code *)PTR___gmpn_hgcd_step_0009d51c)\n                          (param_3,param_1,param_2,iVar2,param_4,param_5);\n        if (iVar1 == 0) goto joined_r0x0005847c;\n        iVar3 = 1;\n        param_3 = iVar1;\n      }\n      if (iVar4 + 3 < param_3) {\n        iVar5 = (iVar2 * 2 - param_3) + 1;\n        iVar4 = param_3 - iVar5;\n        (*(code *)PTR___gmpn_hgcd_matrix_init_0009d3bc)(auStack_44,iVar4,param_5);\n        iVar1 = param_5 + ((iVar4 + 1) / 2 + 1) * 0x10;\n        iVar4 = __gmpn_hgcd(param_1 + iVar5 * 4,param_2 + iVar5 * 4,iVar4,auStack_44,iVar1);\n        if (0 < iVar4) {\n          param_3 = (*(code *)PTR___gmpn_hgcd_matrix_adjust_0009d3a8)\n                              (auStack_44,iVar5 + iVar4,param_1,param_2,iVar5,iVar1);\n          iVar3 = 1;\n          (*(code *)PTR___gmpn_hgcd_matrix_mul_0009d1e8)(param_4,auStack_44,iVar1);\n        }\n      }\n    }\n    while (iVar4 = (*(code *)PTR___gmpn_hgcd_step_0009d51c)\n                             (param_3,param_1,param_2,iVar2,param_4,param_5), iVar4 != 0) {\n      iVar3 = 1;\n      param_3 = iVar4;\n    }\njoined_r0x0005847c:\n    if (iVar3 != 0) goto LAB_000583b0;\n  }" ({ "{") (if_statement "if (param_3 < 400) {\n      iVar3 = 0;\n    }\n    else {\n      iVar5 = param_3 * 3;\n      iVar1 = (*(code *)PTR___gmpn_hgcd_reduce_0009d110)\n                        (param_4,param_1,param_2,param_3,iVar4,param_5);\n      iVar3 = iVar1;\n      if (iVar1 != 0) {\n        iVar3 = 1;\n        param_3 = iVar1;\n      }\n      while ((iVar5 >> 2) + 1 < param_3) {\n        iVar1 = (*(code *)PTR___gmpn_hgcd_step_0009d51c)\n                          (param_3,param_1,param_2,iVar2,param_4,param_5);\n        if (iVar1 == 0) goto joined_r0x0005847c;\n        iVar3 = 1;\n        param_3 = iVar1;\n      }\n      if (iVar4 + 3 < param_3) {\n        iVar5 = (iVar2 * 2 - param_3) + 1;\n        iVar4 = param_3 - iVar5;\n        (*(code *)PTR___gmpn_hgcd_matrix_init_0009d3bc)(auStack_44,iVar4,param_5);\n        iVar1 = param_5 + ((iVar4 + 1) / 2 + 1) * 0x10;\n        iVar4 = __gmpn_hgcd(param_1 + iVar5 * 4,param_2 + iVar5 * 4,iVar4,auStack_44,iVar1);\n        if (0 < iVar4) {\n          param_3 = (*(code *)PTR___gmpn_hgcd_matrix_adjust_0009d3a8)\n                              (auStack_44,iVar5 + iVar4,param_1,param_2,iVar5,iVar1);\n          iVar3 = 1;\n          (*(code *)PTR___gmpn_hgcd_matrix_mul_0009d1e8)(param_4,auStack_44,iVar1);\n        }\n      }\n    }" (if "if") (parenthesized_expression "(param_3 < 400)" (( "(") (binary_expression "param_3 < 400" (identifier "param_3") (< "<") (number_literal "400")) () ")")) (compound_statement "{\n      iVar3 = 0;\n    }" ({ "{") (expression_statement "iVar3 = 0;" (assignment_expression "iVar3 = 0" (identifier "iVar3") (= "=") (number_literal "0")) (; ";")) (} "}")) (else_clause "else {\n      iVar5 = param_3 * 3;\n      iVar1 = (*(code *)PTR___gmpn_hgcd_reduce_0009d110)\n                        (param_4,param_1,param_2,param_3,iVar4,param_5);\n      iVar3 = iVar1;\n      if (iVar1 != 0) {\n        iVar3 = 1;\n        param_3 = iVar1;\n      }\n      while ((iVar5 >> 2) + 1 < param_3) {\n        iVar1 = (*(code *)PTR___gmpn_hgcd_step_0009d51c)\n                          (param_3,param_1,param_2,iVar2,param_4,param_5);\n        if (iVar1 == 0) goto joined_r0x0005847c;\n        iVar3 = 1;\n        param_3 = iVar1;\n      }\n      if (iVar4 + 3 < param_3) {\n        iVar5 = (iVar2 * 2 - param_3) + 1;\n        iVar4 = param_3 - iVar5;\n        (*(code *)PTR___gmpn_hgcd_matrix_init_0009d3bc)(auStack_44,iVar4,param_5);\n        iVar1 = param_5 + ((iVar4 + 1) / 2 + 1) * 0x10;\n        iVar4 = __gmpn_hgcd(param_1 + iVar5 * 4,param_2 + iVar5 * 4,iVar4,auStack_44,iVar1);\n        if (0 < iVar4) {\n          param_3 = (*(code *)PTR___gmpn_hgcd_matrix_adjust_0009d3a8)\n                              (auStack_44,iVar5 + iVar4,param_1,param_2,iVar5,iVar1);\n          iVar3 = 1;\n          (*(code *)PTR___gmpn_hgcd_matrix_mul_0009d1e8)(param_4,auStack_44,iVar1);\n        }\n      }\n    }" (else "else") (compound_statement "{\n      iVar5 = param_3 * 3;\n      iVar1 = (*(code *)PTR___gmpn_hgcd_reduce_0009d110)\n                        (param_4,param_1,param_2,param_3,iVar4,param_5);\n      iVar3 = iVar1;\n      if (iVar1 != 0) {\n        iVar3 = 1;\n        param_3 = iVar1;\n      }\n      while ((iVar5 >> 2) + 1 < param_3) {\n        iVar1 = (*(code *)PTR___gmpn_hgcd_step_0009d51c)\n                          (param_3,param_1,param_2,iVar2,param_4,param_5);\n        if (iVar1 == 0) goto joined_r0x0005847c;\n        iVar3 = 1;\n        param_3 = iVar1;\n      }\n      if (iVar4 + 3 < param_3) {\n        iVar5 = (iVar2 * 2 - param_3) + 1;\n        iVar4 = param_3 - iVar5;\n        (*(code *)PTR___gmpn_hgcd_matrix_init_0009d3bc)(auStack_44,iVar4,param_5);\n        iVar1 = param_5 + ((iVar4 + 1) / 2 + 1) * 0x10;\n        iVar4 = __gmpn_hgcd(param_1 + iVar5 * 4,param_2 + iVar5 * 4,iVar4,auStack_44,iVar1);\n        if (0 < iVar4) {\n          param_3 = (*(code *)PTR___gmpn_hgcd_matrix_adjust_0009d3a8)\n                              (auStack_44,iVar5 + iVar4,param_1,param_2,iVar5,iVar1);\n          iVar3 = 1;\n          (*(code *)PTR___gmpn_hgcd_matrix_mul_0009d1e8)(param_4,auStack_44,iVar1);\n        }\n      }\n    }" ({ "{") (expression_statement "iVar5 = param_3 * 3;" (assignment_expression "iVar5 = param_3 * 3" (identifier "iVar5") (= "=") (binary_expression "param_3 * 3" (identifier "param_3") (* "*") (number_literal "3"))) (; ";")) (expression_statement "iVar1 = (*(code *)PTR___gmpn_hgcd_reduce_0009d110)\n                        (param_4,param_1,param_2,param_3,iVar4,param_5);" (assignment_expression "iVar1 = (*(code *)PTR___gmpn_hgcd_reduce_0009d110)\n                        (param_4,param_1,param_2,param_3,iVar4,param_5)" (identifier "iVar1") (= "=") (call_expression "(*(code *)PTR___gmpn_hgcd_reduce_0009d110)\n                        (param_4,param_1,param_2,param_3,iVar4,param_5)" (parenthesized_expression "(*(code *)PTR___gmpn_hgcd_reduce_0009d110)" (( "(") (pointer_expression "*(code *)PTR___gmpn_hgcd_reduce_0009d110" (* "*") (cast_expression "(code *)PTR___gmpn_hgcd_reduce_0009d110" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___gmpn_hgcd_reduce_0009d110"))) () ")")) (argument_list "(param_4,param_1,param_2,param_3,iVar4,param_5)" (( "(") (identifier "param_4") (, ",") (identifier "param_1") (, ",") (identifier "param_2") (, ",") (identifier "param_3") (, ",") (identifier "iVar4") (, ",") (identifier "param_5") () ")")))) (; ";")) (expression_statement "iVar3 = iVar1;" (assignment_expression "iVar3 = iVar1" (identifier "iVar3") (= "=") (identifier "iVar1")) (; ";")) (if_statement "if (iVar1 != 0) {\n        iVar3 = 1;\n        param_3 = iVar1;\n      }" (if "if") (parenthesized_expression "(iVar1 != 0)" (( "(") (binary_expression "iVar1 != 0" (identifier "iVar1") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n        iVar3 = 1;\n        param_3 = iVar1;\n      }" ({ "{") (expression_statement "iVar3 = 1;" (assignment_expression "iVar3 = 1" (identifier "iVar3") (= "=") (number_literal "1")) (; ";")) (expression_statement "param_3 = iVar1;" (assignment_expression "param_3 = iVar1" (identifier "param_3") (= "=") (identifier "iVar1")) (; ";")) (} "}"))) (while_statement "while ((iVar5 >> 2) + 1 < param_3) {\n        iVar1 = (*(code *)PTR___gmpn_hgcd_step_0009d51c)\n                          (param_3,param_1,param_2,iVar2,param_4,param_5);\n        if (iVar1 == 0) goto joined_r0x0005847c;\n        iVar3 = 1;\n        param_3 = iVar1;\n      }" (while "while") (parenthesized_expression "((iVar5 >> 2) + 1 < param_3)" (( "(") (binary_expression "(iVar5 >> 2) + 1 < param_3" (binary_expression "(iVar5 >> 2) + 1" (parenthesized_expression "(iVar5 >> 2)" (( "(") (binary_expression "iVar5 >> 2" (identifier "iVar5") (>> ">>") (number_literal "2")) () ")")) (+ "+") (number_literal "1")) (< "<") (identifier "param_3")) () ")")) (compound_statement "{\n        iVar1 = (*(code *)PTR___gmpn_hgcd_step_0009d51c)\n                          (param_3,param_1,param_2,iVar2,param_4,param_5);\n        if (iVar1 == 0) goto joined_r0x0005847c;\n        iVar3 = 1;\n        param_3 = iVar1;\n      }" ({ "{") (expression_statement "iVar1 = (*(code *)PTR___gmpn_hgcd_step_0009d51c)\n                          (param_3,param_1,param_2,iVar2,param_4,param_5);" (assignment_expression "iVar1 = (*(code *)PTR___gmpn_hgcd_step_0009d51c)\n                          (param_3,param_1,param_2,iVar2,param_4,param_5)" (identifier "iVar1") (= "=") (call_expression "(*(code *)PTR___gmpn_hgcd_step_0009d51c)\n                          (param_3,param_1,param_2,iVar2,param_4,param_5)" (parenthesized_expression "(*(code *)PTR___gmpn_hgcd_step_0009d51c)" (( "(") (pointer_expression "*(code *)PTR___gmpn_hgcd_step_0009d51c" (* "*") (cast_expression "(code *)PTR___gmpn_hgcd_step_0009d51c" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___gmpn_hgcd_step_0009d51c"))) () ")")) (argument_list "(param_3,param_1,param_2,iVar2,param_4,param_5)" (( "(") (identifier "param_3") (, ",") (identifier "param_1") (, ",") (identifier "param_2") (, ",") (identifier "iVar2") (, ",") (identifier "param_4") (, ",") (identifier "param_5") () ")")))) (; ";")) (if_statement "if (iVar1 == 0) goto joined_r0x0005847c;" (if "if") (parenthesized_expression "(iVar1 == 0)" (( "(") (binary_expression "iVar1 == 0" (identifier "iVar1") (== "==") (number_literal "0")) () ")")) (goto_statement "goto joined_r0x0005847c;" (goto "goto") (statement_identifier "joined_r0x0005847c") (; ";"))) (expression_statement "iVar3 = 1;" (assignment_expression "iVar3 = 1" (identifier "iVar3") (= "=") (number_literal "1")) (; ";")) (expression_statement "param_3 = iVar1;" (assignment_expression "param_3 = iVar1" (identifier "param_3") (= "=") (identifier "iVar1")) (; ";")) (} "}"))) (if_statement "if (iVar4 + 3 < param_3) {\n        iVar5 = (iVar2 * 2 - param_3) + 1;\n        iVar4 = param_3 - iVar5;\n        (*(code *)PTR___gmpn_hgcd_matrix_init_0009d3bc)(auStack_44,iVar4,param_5);\n        iVar1 = param_5 + ((iVar4 + 1) / 2 + 1) * 0x10;\n        iVar4 = __gmpn_hgcd(param_1 + iVar5 * 4,param_2 + iVar5 * 4,iVar4,auStack_44,iVar1);\n        if (0 < iVar4) {\n          param_3 = (*(code *)PTR___gmpn_hgcd_matrix_adjust_0009d3a8)\n                              (auStack_44,iVar5 + iVar4,param_1,param_2,iVar5,iVar1);\n          iVar3 = 1;\n          (*(code *)PTR___gmpn_hgcd_matrix_mul_0009d1e8)(param_4,auStack_44,iVar1);\n        }\n      }" (if "if") (parenthesized_expression "(iVar4 + 3 < param_3)" (( "(") (binary_expression "iVar4 + 3 < param_3" (binary_expression "iVar4 + 3" (identifier "iVar4") (+ "+") (number_literal "3")) (< "<") (identifier "param_3")) () ")")) (compound_statement "{\n        iVar5 = (iVar2 * 2 - param_3) + 1;\n        iVar4 = param_3 - iVar5;\n        (*(code *)PTR___gmpn_hgcd_matrix_init_0009d3bc)(auStack_44,iVar4,param_5);\n        iVar1 = param_5 + ((iVar4 + 1) / 2 + 1) * 0x10;\n        iVar4 = __gmpn_hgcd(param_1 + iVar5 * 4,param_2 + iVar5 * 4,iVar4,auStack_44,iVar1);\n        if (0 < iVar4) {\n          param_3 = (*(code *)PTR___gmpn_hgcd_matrix_adjust_0009d3a8)\n                              (auStack_44,iVar5 + iVar4,param_1,param_2,iVar5,iVar1);\n          iVar3 = 1;\n          (*(code *)PTR___gmpn_hgcd_matrix_mul_0009d1e8)(param_4,auStack_44,iVar1);\n        }\n      }" ({ "{") (expression_statement "iVar5 = (iVar2 * 2 - param_3) + 1;" (assignment_expression "iVar5 = (iVar2 * 2 - param_3) + 1" (identifier "iVar5") (= "=") (binary_expression "(iVar2 * 2 - param_3) + 1" (parenthesized_expression "(iVar2 * 2 - param_3)" (( "(") (binary_expression "iVar2 * 2 - param_3" (binary_expression "iVar2 * 2" (identifier "iVar2") (* "*") (number_literal "2")) (- "-") (identifier "param_3")) () ")")) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "iVar4 = param_3 - iVar5;" (assignment_expression "iVar4 = param_3 - iVar5" (identifier "iVar4") (= "=") (binary_expression "param_3 - iVar5" (identifier "param_3") (- "-") (identifier "iVar5"))) (; ";")) (expression_statement "(*(code *)PTR___gmpn_hgcd_matrix_init_0009d3bc)(auStack_44,iVar4,param_5);" (call_expression "(*(code *)PTR___gmpn_hgcd_matrix_init_0009d3bc)(auStack_44,iVar4,param_5)" (parenthesized_expression "(*(code *)PTR___gmpn_hgcd_matrix_init_0009d3bc)" (( "(") (pointer_expression "*(code *)PTR___gmpn_hgcd_matrix_init_0009d3bc" (* "*") (cast_expression "(code *)PTR___gmpn_hgcd_matrix_init_0009d3bc" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___gmpn_hgcd_matrix_init_0009d3bc"))) () ")")) (argument_list "(auStack_44,iVar4,param_5)" (( "(") (identifier "auStack_44") (, ",") (identifier "iVar4") (, ",") (identifier "param_5") () ")"))) (; ";")) (expression_statement "iVar1 = param_5 + ((iVar4 + 1) / 2 + 1) * 0x10;" (assignment_expression "iVar1 = param_5 + ((iVar4 + 1) / 2 + 1) * 0x10" (identifier "iVar1") (= "=") (binary_expression "param_5 + ((iVar4 + 1) / 2 + 1) * 0x10" (identifier "param_5") (+ "+") (binary_expression "((iVar4 + 1) / 2 + 1) * 0x10" (parenthesized_expression "((iVar4 + 1) / 2 + 1)" (( "(") (binary_expression "(iVar4 + 1) / 2 + 1" (binary_expression "(iVar4 + 1) / 2" (parenthesized_expression "(iVar4 + 1)" (( "(") (binary_expression "iVar4 + 1" (identifier "iVar4") (+ "+") (number_literal "1")) () ")")) (/ "/") (number_literal "2")) (+ "+") (number_literal "1")) () ")")) (* "*") (number_literal "0x10")))) (; ";")) (expression_statement "iVar4 = __gmpn_hgcd(param_1 + iVar5 * 4,param_2 + iVar5 * 4,iVar4,auStack_44,iVar1);" (assignment_expression "iVar4 = __gmpn_hgcd(param_1 + iVar5 * 4,param_2 + iVar5 * 4,iVar4,auStack_44,iVar1)" (identifier "iVar4") (= "=") (call_expression "__gmpn_hgcd(param_1 + iVar5 * 4,param_2 + iVar5 * 4,iVar4,auStack_44,iVar1)" (identifier "__gmpn_hgcd") (argument_list "(param_1 + iVar5 * 4,param_2 + iVar5 * 4,iVar4,auStack_44,iVar1)" (( "(") (binary_expression "param_1 + iVar5 * 4" (identifier "param_1") (+ "+") (binary_expression "iVar5 * 4" (identifier "iVar5") (* "*") (number_literal "4"))) (, ",") (binary_expression "param_2 + iVar5 * 4" (identifier "param_2") (+ "+") (binary_expression "iVar5 * 4" (identifier "iVar5") (* "*") (number_literal "4"))) (, ",") (identifier "iVar4") (, ",") (identifier "auStack_44") (, ",") (identifier "iVar1") () ")")))) (; ";")) (if_statement "if (0 < iVar4) {\n          param_3 = (*(code *)PTR___gmpn_hgcd_matrix_adjust_0009d3a8)\n                              (auStack_44,iVar5 + iVar4,param_1,param_2,iVar5,iVar1);\n          iVar3 = 1;\n          (*(code *)PTR___gmpn_hgcd_matrix_mul_0009d1e8)(param_4,auStack_44,iVar1);\n        }" (if "if") (parenthesized_expression "(0 < iVar4)" (( "(") (binary_expression "0 < iVar4" (number_literal "0") (< "<") (identifier "iVar4")) () ")")) (compound_statement "{\n          param_3 = (*(code *)PTR___gmpn_hgcd_matrix_adjust_0009d3a8)\n                              (auStack_44,iVar5 + iVar4,param_1,param_2,iVar5,iVar1);\n          iVar3 = 1;\n          (*(code *)PTR___gmpn_hgcd_matrix_mul_0009d1e8)(param_4,auStack_44,iVar1);\n        }" ({ "{") (expression_statement "param_3 = (*(code *)PTR___gmpn_hgcd_matrix_adjust_0009d3a8)\n                              (auStack_44,iVar5 + iVar4,param_1,param_2,iVar5,iVar1);" (assignment_expression "param_3 = (*(code *)PTR___gmpn_hgcd_matrix_adjust_0009d3a8)\n                              (auStack_44,iVar5 + iVar4,param_1,param_2,iVar5,iVar1)" (identifier "param_3") (= "=") (call_expression "(*(code *)PTR___gmpn_hgcd_matrix_adjust_0009d3a8)\n                              (auStack_44,iVar5 + iVar4,param_1,param_2,iVar5,iVar1)" (parenthesized_expression "(*(code *)PTR___gmpn_hgcd_matrix_adjust_0009d3a8)" (( "(") (pointer_expression "*(code *)PTR___gmpn_hgcd_matrix_adjust_0009d3a8" (* "*") (cast_expression "(code *)PTR___gmpn_hgcd_matrix_adjust_0009d3a8" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___gmpn_hgcd_matrix_adjust_0009d3a8"))) () ")")) (argument_list "(auStack_44,iVar5 + iVar4,param_1,param_2,iVar5,iVar1)" (( "(") (identifier "auStack_44") (, ",") (binary_expression "iVar5 + iVar4" (identifier "iVar5") (+ "+") (identifier "iVar4")) (, ",") (identifier "param_1") (, ",") (identifier "param_2") (, ",") (identifier "iVar5") (, ",") (identifier "iVar1") () ")")))) (; ";")) (expression_statement "iVar3 = 1;" (assignment_expression "iVar3 = 1" (identifier "iVar3") (= "=") (number_literal "1")) (; ";")) (expression_statement "(*(code *)PTR___gmpn_hgcd_matrix_mul_0009d1e8)(param_4,auStack_44,iVar1);" (call_expression "(*(code *)PTR___gmpn_hgcd_matrix_mul_0009d1e8)(param_4,auStack_44,iVar1)" (parenthesized_expression "(*(code *)PTR___gmpn_hgcd_matrix_mul_0009d1e8)" (( "(") (pointer_expression "*(code *)PTR___gmpn_hgcd_matrix_mul_0009d1e8" (* "*") (cast_expression "(code *)PTR___gmpn_hgcd_matrix_mul_0009d1e8" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___gmpn_hgcd_matrix_mul_0009d1e8"))) () ")")) (argument_list "(param_4,auStack_44,iVar1)" (( "(") (identifier "param_4") (, ",") (identifier "auStack_44") (, ",") (identifier "iVar1") () ")"))) (; ";")) (} "}"))) (} "}"))) (} "}")))) (while_statement "while (iVar4 = (*(code *)PTR___gmpn_hgcd_step_0009d51c)\n                             (param_3,param_1,param_2,iVar2,param_4,param_5), iVar4 != 0) {\n      iVar3 = 1;\n      param_3 = iVar4;\n    }" (while "while") (parenthesized_expression "(iVar4 = (*(code *)PTR___gmpn_hgcd_step_0009d51c)\n                             (param_3,param_1,param_2,iVar2,param_4,param_5), iVar4 != 0)" (( "(") (comma_expression "iVar4 = (*(code *)PTR___gmpn_hgcd_step_0009d51c)\n                             (param_3,param_1,param_2,iVar2,param_4,param_5), iVar4 != 0" (assignment_expression "iVar4 = (*(code *)PTR___gmpn_hgcd_step_0009d51c)\n                             (param_3,param_1,param_2,iVar2,param_4,param_5)" (identifier "iVar4") (= "=") (call_expression "(*(code *)PTR___gmpn_hgcd_step_0009d51c)\n                             (param_3,param_1,param_2,iVar2,param_4,param_5)" (parenthesized_expression "(*(code *)PTR___gmpn_hgcd_step_0009d51c)" (( "(") (pointer_expression "*(code *)PTR___gmpn_hgcd_step_0009d51c" (* "*") (cast_expression "(code *)PTR___gmpn_hgcd_step_0009d51c" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___gmpn_hgcd_step_0009d51c"))) () ")")) (argument_list "(param_3,param_1,param_2,iVar2,param_4,param_5)" (( "(") (identifier "param_3") (, ",") (identifier "param_1") (, ",") (identifier "param_2") (, ",") (identifier "iVar2") (, ",") (identifier "param_4") (, ",") (identifier "param_5") () ")")))) (, ",") (binary_expression "iVar4 != 0" (identifier "iVar4") (!= "!=") (number_literal "0"))) () ")")) (compound_statement "{\n      iVar3 = 1;\n      param_3 = iVar4;\n    }" ({ "{") (expression_statement "iVar3 = 1;" (assignment_expression "iVar3 = 1" (identifier "iVar3") (= "=") (number_literal "1")) (; ";")) (expression_statement "param_3 = iVar4;" (assignment_expression "param_3 = iVar4" (identifier "param_3") (= "=") (identifier "iVar4")) (; ";")) (} "}"))) (labeled_statement "joined_r0x0005847c:\n    if (iVar3 != 0) goto LAB_000583b0;" (statement_identifier "joined_r0x0005847c") (: ":") (if_statement "if (iVar3 != 0) goto LAB_000583b0;" (if "if") (parenthesized_expression "(iVar3 != 0)" (( "(") (binary_expression "iVar3 != 0" (identifier "iVar3") (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_000583b0;" (goto "goto") (statement_identifier "LAB_000583b0") (; ";")))) (} "}"))) (expression_statement "param_3 = 0;" (assignment_expression "param_3 = 0" (identifier "param_3") (= "=") (number_literal "0")) (; ";")) (labeled_statement "LAB_000583b0:\n  if (local_2c != *(int *)puVar6) {\n    puVar6 = PTR___stack_chk_fail_0009d4d0;\n    (*(code *)PTR___stack_chk_fail_0009d4d0)();\n    if (399 < local_2c) {\n      if (local_2c < 0x18f0001) {\n        iVar2 = 0x20;\n        if (0x18f00 < local_2c) {\n          iVar2 = 0x18;\n        }\n        iVar4 = 9;\n        if (0x18f00 >= local_2c) {\n          iVar4 = 1;\n        }\n      }\n      else {\n        iVar2 = 0x10;\n        iVar4 = 0x11;\n      }\n      local_2c = (((uint)*(byte *)(*(int *)(puVar6 + 0x44bfc) +\n                                  ((uint)((local_2c + -1) / 399) >> iVar4)) - iVar2) + 0x20) * 0x16\n                 + (local_2c + 3 >> 2) * 0x14 + 400;\n    }\n    return local_2c;\n  }" (statement_identifier "LAB_000583b0") (: ":") (if_statement "if (local_2c != *(int *)puVar6) {\n    puVar6 = PTR___stack_chk_fail_0009d4d0;\n    (*(code *)PTR___stack_chk_fail_0009d4d0)();\n    if (399 < local_2c) {\n      if (local_2c < 0x18f0001) {\n        iVar2 = 0x20;\n        if (0x18f00 < local_2c) {\n          iVar2 = 0x18;\n        }\n        iVar4 = 9;\n        if (0x18f00 >= local_2c) {\n          iVar4 = 1;\n        }\n      }\n      else {\n        iVar2 = 0x10;\n        iVar4 = 0x11;\n      }\n      local_2c = (((uint)*(byte *)(*(int *)(puVar6 + 0x44bfc) +\n                                  ((uint)((local_2c + -1) / 399) >> iVar4)) - iVar2) + 0x20) * 0x16\n                 + (local_2c + 3 >> 2) * 0x14 + 400;\n    }\n    return local_2c;\n  }" (if "if") (parenthesized_expression "(local_2c != *(int *)puVar6)" (( "(") (binary_expression "local_2c != *(int *)puVar6" (identifier "local_2c") (!= "!=") (pointer_expression "*(int *)puVar6" (* "*") (cast_expression "(int *)puVar6" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "puVar6")))) () ")")) (compound_statement "{\n    puVar6 = PTR___stack_chk_fail_0009d4d0;\n    (*(code *)PTR___stack_chk_fail_0009d4d0)();\n    if (399 < local_2c) {\n      if (local_2c < 0x18f0001) {\n        iVar2 = 0x20;\n        if (0x18f00 < local_2c) {\n          iVar2 = 0x18;\n        }\n        iVar4 = 9;\n        if (0x18f00 >= local_2c) {\n          iVar4 = 1;\n        }\n      }\n      else {\n        iVar2 = 0x10;\n        iVar4 = 0x11;\n      }\n      local_2c = (((uint)*(byte *)(*(int *)(puVar6 + 0x44bfc) +\n                                  ((uint)((local_2c + -1) / 399) >> iVar4)) - iVar2) + 0x20) * 0x16\n                 + (local_2c + 3 >> 2) * 0x14 + 400;\n    }\n    return local_2c;\n  }" ({ "{") (expression_statement "puVar6 = PTR___stack_chk_fail_0009d4d0;" (assignment_expression "puVar6 = PTR___stack_chk_fail_0009d4d0" (identifier "puVar6") (= "=") (identifier "PTR___stack_chk_fail_0009d4d0")) (; ";")) (expression_statement "(*(code *)PTR___stack_chk_fail_0009d4d0)();" (call_expression "(*(code *)PTR___stack_chk_fail_0009d4d0)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_0009d4d0)" (( "(") (pointer_expression "*(code *)PTR___stack_chk_fail_0009d4d0" (* "*") (cast_expression "(code *)PTR___stack_chk_fail_0009d4d0" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___stack_chk_fail_0009d4d0"))) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (if_statement "if (399 < local_2c) {\n      if (local_2c < 0x18f0001) {\n        iVar2 = 0x20;\n        if (0x18f00 < local_2c) {\n          iVar2 = 0x18;\n        }\n        iVar4 = 9;\n        if (0x18f00 >= local_2c) {\n          iVar4 = 1;\n        }\n      }\n      else {\n        iVar2 = 0x10;\n        iVar4 = 0x11;\n      }\n      local_2c = (((uint)*(byte *)(*(int *)(puVar6 + 0x44bfc) +\n                                  ((uint)((local_2c + -1) / 399) >> iVar4)) - iVar2) + 0x20) * 0x16\n                 + (local_2c + 3 >> 2) * 0x14 + 400;\n    }" (if "if") (parenthesized_expression "(399 < local_2c)" (( "(") (binary_expression "399 < local_2c" (number_literal "399") (< "<") (identifier "local_2c")) () ")")) (compound_statement "{\n      if (local_2c < 0x18f0001) {\n        iVar2 = 0x20;\n        if (0x18f00 < local_2c) {\n          iVar2 = 0x18;\n        }\n        iVar4 = 9;\n        if (0x18f00 >= local_2c) {\n          iVar4 = 1;\n        }\n      }\n      else {\n        iVar2 = 0x10;\n        iVar4 = 0x11;\n      }\n      local_2c = (((uint)*(byte *)(*(int *)(puVar6 + 0x44bfc) +\n                                  ((uint)((local_2c + -1) / 399) >> iVar4)) - iVar2) + 0x20) * 0x16\n                 + (local_2c + 3 >> 2) * 0x14 + 400;\n    }" ({ "{") (if_statement "if (local_2c < 0x18f0001) {\n        iVar2 = 0x20;\n        if (0x18f00 < local_2c) {\n          iVar2 = 0x18;\n        }\n        iVar4 = 9;\n        if (0x18f00 >= local_2c) {\n          iVar4 = 1;\n        }\n      }\n      else {\n        iVar2 = 0x10;\n        iVar4 = 0x11;\n      }" (if "if") (parenthesized_expression "(local_2c < 0x18f0001)" (( "(") (binary_expression "local_2c < 0x18f0001" (identifier "local_2c") (< "<") (number_literal "0x18f0001")) () ")")) (compound_statement "{\n        iVar2 = 0x20;\n        if (0x18f00 < local_2c) {\n          iVar2 = 0x18;\n        }\n        iVar4 = 9;\n        if (0x18f00 >= local_2c) {\n          iVar4 = 1;\n        }\n      }" ({ "{") (expression_statement "iVar2 = 0x20;" (assignment_expression "iVar2 = 0x20" (identifier "iVar2") (= "=") (number_literal "0x20")) (; ";")) (if_statement "if (0x18f00 < local_2c) {\n          iVar2 = 0x18;\n        }" (if "if") (parenthesized_expression "(0x18f00 < local_2c)" (( "(") (binary_expression "0x18f00 < local_2c" (number_literal "0x18f00") (< "<") (identifier "local_2c")) () ")")) (compound_statement "{\n          iVar2 = 0x18;\n        }" ({ "{") (expression_statement "iVar2 = 0x18;" (assignment_expression "iVar2 = 0x18" (identifier "iVar2") (= "=") (number_literal "0x18")) (; ";")) (} "}"))) (expression_statement "iVar4 = 9;" (assignment_expression "iVar4 = 9" (identifier "iVar4") (= "=") (number_literal "9")) (; ";")) (if_statement "if (0x18f00 >= local_2c) {\n          iVar4 = 1;\n        }" (if "if") (parenthesized_expression "(0x18f00 >= local_2c)" (( "(") (binary_expression "0x18f00 >= local_2c" (number_literal "0x18f00") (>= ">=") (identifier "local_2c")) () ")")) (compound_statement "{\n          iVar4 = 1;\n        }" ({ "{") (expression_statement "iVar4 = 1;" (assignment_expression "iVar4 = 1" (identifier "iVar4") (= "=") (number_literal "1")) (; ";")) (} "}"))) (} "}")) (else_clause "else {\n        iVar2 = 0x10;\n        iVar4 = 0x11;\n      }" (else "else") (compound_statement "{\n        iVar2 = 0x10;\n        iVar4 = 0x11;\n      }" ({ "{") (expression_statement "iVar2 = 0x10;" (assignment_expression "iVar2 = 0x10" (identifier "iVar2") (= "=") (number_literal "0x10")) (; ";")) (expression_statement "iVar4 = 0x11;" (assignment_expression "iVar4 = 0x11" (identifier "iVar4") (= "=") (number_literal "0x11")) (; ";")) (} "}")))) (expression_statement "local_2c = (((uint)*(byte *)(*(int *)(puVar6 + 0x44bfc) +\n                                  ((uint)((local_2c + -1) / 399) >> iVar4)) - iVar2) + 0x20) * 0x16\n                 + (local_2c + 3 >> 2) * 0x14 + 400;" (assignment_expression "local_2c = (((uint)*(byte *)(*(int *)(puVar6 + 0x44bfc) +\n                                  ((uint)((local_2c + -1) / 399) >> iVar4)) - iVar2) + 0x20) * 0x16\n                 + (local_2c + 3 >> 2) * 0x14 + 400" (identifier "local_2c") (= "=") (binary_expression "(((uint)*(byte *)(*(int *)(puVar6 + 0x44bfc) +\n                                  ((uint)((local_2c + -1) / 399) >> iVar4)) - iVar2) + 0x20) * 0x16\n                 + (local_2c + 3 >> 2) * 0x14 + 400" (binary_expression "(((uint)*(byte *)(*(int *)(puVar6 + 0x44bfc) +\n                                  ((uint)((local_2c + -1) / 399) >> iVar4)) - iVar2) + 0x20) * 0x16\n                 + (local_2c + 3 >> 2) * 0x14" (binary_expression "(((uint)*(byte *)(*(int *)(puVar6 + 0x44bfc) +\n                                  ((uint)((local_2c + -1) / 399) >> iVar4)) - iVar2) + 0x20) * 0x16" (parenthesized_expression "(((uint)*(byte *)(*(int *)(puVar6 + 0x44bfc) +\n                                  ((uint)((local_2c + -1) / 399) >> iVar4)) - iVar2) + 0x20)" (( "(") (binary_expression "((uint)*(byte *)(*(int *)(puVar6 + 0x44bfc) +\n                                  ((uint)((local_2c + -1) / 399) >> iVar4)) - iVar2) + 0x20" (parenthesized_expression "((uint)*(byte *)(*(int *)(puVar6 + 0x44bfc) +\n                                  ((uint)((local_2c + -1) / 399) >> iVar4)) - iVar2)" (( "(") (binary_expression "(uint)*(byte *)(*(int *)(puVar6 + 0x44bfc) +\n                                  ((uint)((local_2c + -1) / 399) >> iVar4)) - iVar2" (binary_expression "(uint)*(byte *)(*(int *)(puVar6 + 0x44bfc) +\n                                  ((uint)((local_2c + -1) / 399) >> iVar4))" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (cast_expression "(byte *)(*(int *)(puVar6 + 0x44bfc) +\n                                  ((uint)((local_2c + -1) / 399) >> iVar4))" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(puVar6 + 0x44bfc) +\n                                  ((uint)((local_2c + -1) / 399) >> iVar4))" (( "(") (binary_expression "*(int *)(puVar6 + 0x44bfc) +\n                                  ((uint)((local_2c + -1) / 399) >> iVar4)" (pointer_expression "*(int *)(puVar6 + 0x44bfc)" (* "*") (cast_expression "(int *)(puVar6 + 0x44bfc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar6 + 0x44bfc)" (( "(") (binary_expression "puVar6 + 0x44bfc" (identifier "puVar6") (+ "+") (number_literal "0x44bfc")) () ")")))) (+ "+") (parenthesized_expression "((uint)((local_2c + -1) / 399) >> iVar4)" (( "(") (binary_expression "(uint)((local_2c + -1) / 399) >> iVar4" (call_expression "(uint)((local_2c + -1) / 399)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "((local_2c + -1) / 399)" (( "(") (binary_expression "(local_2c + -1) / 399" (parenthesized_expression "(local_2c + -1)" (( "(") (binary_expression "local_2c + -1" (identifier "local_2c") (+ "+") (number_literal "-1")) () ")")) (/ "/") (number_literal "399")) () ")"))) (>> ">>") (identifier "iVar4")) () ")"))) () ")")))) (- "-") (identifier "iVar2")) () ")")) (+ "+") (number_literal "0x20")) () ")")) (* "*") (number_literal "0x16")) (+ "+") (binary_expression "(local_2c + 3 >> 2) * 0x14" (parenthesized_expression "(local_2c + 3 >> 2)" (( "(") (binary_expression "local_2c + 3 >> 2" (binary_expression "local_2c + 3" (identifier "local_2c") (+ "+") (number_literal "3")) (>> ">>") (number_literal "2")) () ")")) (* "*") (number_literal "0x14"))) (+ "+") (number_literal "400"))) (; ";")) (} "}"))) (return_statement "return local_2c;" (return "return") (identifier "local_2c") (; ";")) (} "}")))) (return_statement "return param_3;" (return "return") (identifier "param_3") (; ";")) (} "}")))
(translation_unit (function_definition type: (primitive_type) declarator: (function_declarator declarator: (identifier) parameters: (parameter_list (parameter_declaration type: (primitive_type) declarator: (identifier)) (parameter_declaration type: (primitive_type) declarator: (identifier)) (parameter_declaration type: (primitive_type) declarator: (identifier)) (parameter_declaration type: (type_identifier) declarator: (identifier)) (parameter_declaration type: (primitive_type) declarator: (identifier)))) body: (compound_statement (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (array_declarator declarator: (identifier) size: (number_literal))) (declaration type: (primitive_type) declarator: (identifier)) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal)))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list (identifier) (identifier) (identifier) (identifier) (identifier) (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (identifier))))) (while_statement condition: (parenthesized_expression (binary_expression left: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal)) right: (identifier))) body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list (identifier) (identifier) (identifier) (identifier) (identifier) (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (identifier))) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier)))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list (identifier) (identifier) (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (binary_expression left: (parenthesized_expression (binary_expression left: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal)) right: (number_literal))) right: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (binary_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))) (binary_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))) (identifier) (identifier) (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (number_literal) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list (identifier) (binary_expression left: (identifier) right: (identifier)) (identifier) (identifier) (identifier) (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list (identifier) (identifier) (identifier))))))))))) (while_statement condition: (parenthesized_expression (comma_expression left: (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list (identifier) (identifier) (identifier) (identifier) (identifier) (identifier)))) right: (binary_expression left: (identifier) right: (number_literal)))) body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (identifier))))) (labeled_statement label: (statement_identifier) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (goto_statement label: (statement_identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (labeled_statement label: (statement_identifier) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (identifier))))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list))) (if_statement condition: (parenthesized_expression (binary_expression left: (number_literal) right: (identifier))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (if_statement condition: (parenthesized_expression (binary_expression left: (number_literal) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (if_statement condition: (parenthesized_expression (binary_expression left: (number_literal) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal)))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (binary_expression left: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (binary_expression left: (parenthesized_expression (identifier)) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (parenthesized_expression (binary_expression left: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal)))) right: (identifier))))))) right: (identifier))) right: (number_literal))) right: (number_literal)) right: (binary_expression left: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (number_literal))) right: (number_literal))) right: (number_literal)))))) (return_statement (identifier))))) (return_statement (identifier)))))

int MASKED(int param_1,int param_2,int param_3,undefined4 param_4,int param_5)

{
  int iVar1;
  int iVar2;
  int iVar3;
  int iVar4;
  int iVar5;
  undefined *puVar6;
  undefined1 auStack_44 [24];
  int local_2c;
  
  puVar6 = PTR___stack_chk_guard_0009d540;
  iVar4 = param_3 / 2;
  iVar2 = iVar4 + 1;
  local_2c = *(int *)PTR___stack_chk_guard_0009d540;
  if (iVar2 < param_3) {
    if (param_3 < 400) {
      iVar3 = 0;
    }
    else {
      iVar5 = param_3 * 3;
      iVar1 = (*(code *)PTR_MASKED_reduce_0009d110)
                        (param_4,param_1,param_2,param_3,iVar4,param_5);
      iVar3 = iVar1;
      if (iVar1 != 0) {
        iVar3 = 1;
        param_3 = iVar1;
      }
      while ((iVar5 >> 2) + 1 < param_3) {
        iVar1 = (*(code *)PTR_MASKED_step_0009d51c)
                          (param_3,param_1,param_2,iVar2,param_4,param_5);
        if (iVar1 == 0) goto joined_r0x0005847c;
        iVar3 = 1;
        param_3 = iVar1;
      }
      if (iVar4 + 3 < param_3) {
        iVar5 = (iVar2 * 2 - param_3) + 1;
        iVar4 = param_3 - iVar5;
        (*(code *)PTR_MASKED_matrix_init_0009d3bc)(auStack_44,iVar4,param_5);
        iVar1 = param_5 + ((iVar4 + 1) / 2 + 1) * 0x10;
        iVar4 = MASKED(param_1 + iVar5 * 4,param_2 + iVar5 * 4,iVar4,auStack_44,iVar1);
        if (0 < iVar4) {
          param_3 = (*(code *)PTR_MASKED_matrix_adjust_0009d3a8)
                              (auStack_44,iVar5 + iVar4,param_1,param_2,iVar5,iVar1);
          iVar3 = 1;
          (*(code *)PTR_MASKED_matrix_mul_0009d1e8)(param_4,auStack_44,iVar1);
        }
      }
    }
    while (iVar4 = (*(code *)PTR_MASKED_step_0009d51c)
                             (param_3,param_1,param_2,iVar2,param_4,param_5), iVar4 != 0) {
      iVar3 = 1;
      param_3 = iVar4;
    }
joined_r0x0005847c:
    if (iVar3 != 0) goto LAB_000583b0;
  }
  param_3 = 0;
LAB_000583b0:
  if (local_2c != *(int *)puVar6) {
    puVar6 = PTR___stack_chk_fail_0009d4d0;
    (*(code *)PTR___stack_chk_fail_0009d4d0)();
    if (399 < local_2c) {
      if (local_2c < 0x18f0001) {
        iVar2 = 0x20;
        if (0x18f00 < local_2c) {
          iVar2 = 0x18;
        }
        iVar4 = 9;
        if (0x18f00 >= local_2c) {
          iVar4 = 1;
        }
      }
      else {
        iVar2 = 0x10;
        iVar4 = 0x11;
      }
      local_2c = (((uint)*(byte *)(*(int *)(puVar6 + 0x44bfc) +
                                  ((uint)((local_2c + -1) / 399) >> iVar4)) - iVar2) + 0x20) * 0x16
                 + (local_2c + 3 >> 2) * 0x14 + 400;
    }
    return local_2c;
  }
  return param_3;
}

