
/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */
/* WARNING: Unknown calling convention */

void __gmpq_canonicalize(__mpq_struct *op)

{
  __mpz_struct *p_Var1;
  int iVar2;
  int iVar3;
  uint uVar4;
  int iVar5;
  undefined1 *puVar6;
  int in_GS_OFFSET;
  undefined1 auStack_4c [12];
  __mpz_struct *local_40 [4];
  tmp_reentrant_t *__tmp_marker;
  mpz_t gcd;
  
  iVar2 = *(int *)(in_GS_OFFSET + 0x14);
  iVar5 = (op->_mp_den)._mp_size;
  if (iVar5 < 0) {
    iVar5 = -iVar5;
    (op->_mp_den)._mp_size = iVar5;
    uVar4 = -(op->_mp_num)._mp_size;
    (op->_mp_num)._mp_size = uVar4;
  }
  else {
    if (iVar5 == 0) {
                    /* WARNING: Subroutine does not return */
      __gmp_divide_by_zero();
    }
    uVar4 = (op->_mp_num)._mp_size;
  }
  __tmp_marker = (tmp_reentrant_t *)0x0;
  iVar3 = (uVar4 ^ (int)uVar4 >> 0x1f) - ((int)uVar4 >> 0x1f);
  if (iVar3 < iVar5) {
    iVar3 = iVar5;
  }
  gcd[0]._mp_alloc = iVar3 + 1;
  uVar4 = (iVar3 + 1) * 4;
  if (uVar4 < 0x7f01) {
    iVar5 = -(uVar4 + 0x1b & 0xfffffff0);
    puVar6 = auStack_4c + iVar5;
    gcd[0]._mp_d = (mp_limb_t *)((int)local_40 + iVar5);
  }
  else {
    gcd[0]._mp_d = (mp_limb_t *)__gmp_tmp_reentrant_alloc(&__tmp_marker,uVar4);
    puVar6 = auStack_4c;
  }
  p_Var1 = &op->_mp_den;
  *(__mpz_struct **)(puVar6 + -8) = p_Var1;
  *(__mpq_struct **)(puVar6 + -0xc) = op;
  *(__mpz_struct **)(puVar6 + -0x10) = gcd;
  local_40[0] = gcd;
  *(undefined4 *)(puVar6 + -0x14) = 0x35095;
  __gmpz_gcd(*(mpz_ptr *)(puVar6 + -0x10),*(mpz_srcptr *)(puVar6 + -0xc),
             *(mpz_srcptr *)(puVar6 + -8));
  if ((gcd[0]._mp_size != 1) || (*gcd[0]._mp_d != 1)) {
    *(__mpz_struct **)(puVar6 + -8) = local_40[0];
    *(__mpq_struct **)(puVar6 + -0xc) = op;
    *(__mpq_struct **)(puVar6 + -0x10) = op;
    *(undefined4 *)(puVar6 + -0x14) = 0x350b7;
    __gmpz_divexact_gcd(*(mpz_ptr *)(puVar6 + -0x10),*(mpz_srcptr *)(puVar6 + -0xc),
                        *(mpz_srcptr *)(puVar6 + -8));
    *(__mpz_struct **)(puVar6 + -8) = local_40[0];
    *(__mpz_struct **)(puVar6 + -0xc) = p_Var1;
    *(__mpz_struct **)(puVar6 + -0x10) = p_Var1;
    *(undefined4 *)(puVar6 + -0x14) = 0x350c5;
    __gmpz_divexact_gcd(*(mpz_ptr *)(puVar6 + -0x10),*(mpz_srcptr *)(puVar6 + -0xc),
                        *(mpz_srcptr *)(puVar6 + -8));
  }
  if (__tmp_marker != (tmp_reentrant_t *)0x0) {
    *(tmp_reentrant_t **)(puVar6 + -0x10) = __tmp_marker;
    *(undefined4 *)(puVar6 + -0x14) = 0x35121;
    __gmp_tmp_reentrant_free(*(tmp_reentrant_t **)(puVar6 + -0x10));
  }
  if (iVar2 == *(int *)(in_GS_OFFSET + 0x14)) {
    return;
  }
                    /* WARNING: Subroutine does not return */
  *(undefined4 *)(puVar6 + -4) = 0x3513a;
  __stack_chk_fail_local();
}



void __gmpq_canonicalize(void)

{
  int iVar1;
  undefined4 uVar2;
  int iVar3;
  uint uVar4;
  undefined1 *puVar5;
  int iVar6;
  undefined1 *puVar7;
  undefined1 *puVar8;
  int in_GS_OFFSET;
  undefined1 auStack_50 [60];
  undefined4 uStack_14;
  
  puVar8 = &stack0xfffffffc;
  uStack_14 = 0x3501b;
  entry();
  iVar1 = *(int *)(puVar8 + 8);
  *(undefined4 *)(puVar8 + -0x1c) = *(undefined4 *)(in_GS_OFFSET + 0x14);
  iVar6 = *(int *)(iVar1 + 0x10);
  if (iVar6 < 0) {
    iVar6 = -iVar6;
    *(int *)(iVar1 + 0x10) = iVar6;
    uVar4 = -*(int *)(iVar1 + 4);
    *(uint *)(iVar1 + 4) = uVar4;
  }
  else {
    if (iVar6 == 0) {
                    /* WARNING: Subroutine does not return */
      __gmp_divide_by_zero();
    }
    uVar4 = *(uint *)(iVar1 + 4);
  }
  *(undefined4 *)(puVar8 + -0x2c) = 0;
  iVar3 = (uVar4 ^ (int)uVar4 >> 0x1f) - ((int)uVar4 >> 0x1f);
  if (iVar3 < iVar6) {
    iVar3 = iVar6;
  }
  *(int *)(puVar8 + -0x28) = iVar3 + 1;
  uVar4 = (iVar3 + 1) * 4;
  if (uVar4 < 0x7f01) {
    iVar6 = -(uVar4 + 0x1b & 0xfffffff0);
    puVar7 = auStack_50 + iVar6;
    puVar5 = auStack_50 + iVar6;
  }
  else {
    puVar5 = (undefined1 *)__gmp_tmp_reentrant_alloc(puVar8 + -0x2c,uVar4);
    puVar7 = auStack_50;
  }
  *(undefined1 **)(puVar8 + -0x20) = puVar5;
  iVar6 = iVar1 + 0xc;
  *(int *)(puVar7 + -8) = iVar6;
  *(int *)(puVar7 + -0xc) = iVar1;
  *(undefined1 **)(puVar7 + -0x10) = puVar8 + -0x28;
  *(undefined1 **)(puVar8 + -0x3c) = puVar8 + -0x28;
  *(undefined4 *)(puVar7 + -0x14) = 0x35095;
  __gmpz_gcd();
  uVar2 = *(undefined4 *)(puVar8 + -0x3c);
  if ((*(int *)(puVar8 + -0x24) != 1) || (**(int **)(puVar8 + -0x20) != 1)) {
    *(undefined4 *)(puVar8 + -0x3c) = uVar2;
    *(undefined4 *)(puVar7 + -8) = uVar2;
    *(int *)(puVar7 + -0xc) = iVar1;
    *(int *)(puVar7 + -0x10) = iVar1;
    *(undefined4 *)(puVar7 + -0x14) = 0x350b7;
    __gmpz_divexact_gcd();
    *(undefined4 *)(puVar7 + -8) = *(undefined4 *)(puVar8 + -0x3c);
    *(int *)(puVar7 + -0xc) = iVar6;
    *(int *)(puVar7 + -0x10) = iVar6;
    *(undefined4 *)(puVar7 + -0x14) = 0x350c5;
    __gmpz_divexact_gcd();
  }
  if (*(int *)(puVar8 + -0x2c) != 0) {
    *(int *)(puVar7 + -0x10) = *(int *)(puVar8 + -0x2c);
    *(undefined4 *)(puVar7 + -0x14) = 0x35121;
    __gmp_tmp_reentrant_free();
  }
  if (*(int *)(puVar8 + -0x1c) == *(int *)(in_GS_OFFSET + 0x14)) {
    return;
  }
                    /* WARNING: Subroutine does not return */
  *(undefined4 *)(puVar7 + -4) = 0x3513a;
  FUN_0007ebe0();
}


PUSH EBP
MOV EBP,ESP
PUSH EDI
PUSH ESI
PUSH EBX
CALL 0x0001c340
ADD EBX,0x68fe5
SUB ESP,0x3c
MOV ESI,dword ptr [EBP + 0x8]
MOV EAX,GS:[0x14]
MOV dword ptr [EBP + -0x1c],EAX
XOR EAX,EAX
MOV EDX,dword ptr [ESI + 0x10]
TEST EDX,EDX
JS 0x000350e8
JZ 0x00035130
MOV EAX,dword ptr [ESI + 0x4]
MOV ECX,EAX
MOV dword ptr [EBP + -0x2c],0x0
SAR ECX,0x1f
XOR EAX,ECX
SUB EAX,ECX
CMP EAX,EDX
CMOVL EAX,EDX
ADD EAX,0x1
MOV dword ptr [EBP + -0x28],EAX
SHL EAX,0x2
CMP EAX,0x7f00
JA 0x00035100
ADD EAX,0x1b
AND EAX,0xfffffff0
SUB ESP,EAX
LEA EAX,[ESP + 0xf]
AND EAX,0xfffffff0
SUB ESP,0x4
MOV dword ptr [EBP + -0x20],EAX
LEA EDI,[ESI + 0xc]
LEA EAX,[EBP + -0x28]
PUSH EDI
PUSH ESI
PUSH EAX
MOV dword ptr [EBP + -0x3c],EAX
CALL 0x0001be50
ADD ESP,0x10
CMP dword ptr [EBP + -0x24],0x1
MOV EAX,dword ptr [EBP + -0x3c]
JNZ 0x000350a9
MOV EDX,dword ptr [EBP + -0x20]
CMP dword ptr [EDX],0x1
JZ 0x000350c8
SUB ESP,0x4
MOV dword ptr [EBP + -0x3c],EAX
PUSH EAX
PUSH ESI
PUSH ESI
CALL 0x0001b9e0
MOV EAX,dword ptr [EBP + -0x3c]
ADD ESP,0xc
PUSH EAX
PUSH EDI
PUSH EDI
CALL 0x0001b9e0
ADD ESP,0x10
MOV EAX,dword ptr [EBP + -0x2c]
TEST EAX,EAX
JNZ 0x00035118
MOV EAX,dword ptr [EBP + -0x1c]
XOR EAX,dword ptr GS:[0x14]
JNZ 0x00035135
LEA ESP,[EBP + -0xc]
POP EBX
POP ESI
POP EDI
POP EBP
RET
MOV EAX,dword ptr [ESI + 0x4]
NEG EDX
MOV dword ptr [ESI + 0x10],EDX
NEG EAX
MOV dword ptr [ESI + 0x4],EAX
JMP 0x00035046
SUB ESP,0x8
PUSH EAX
LEA EAX,[EBP + -0x2c]
PUSH EAX
CALL 0x0001bb00
ADD ESP,0x10
JMP 0x0003507e
SUB ESP,0xc
PUSH EAX
CALL 0x0001b050
ADD ESP,0x10
JMP 0x000350cf
CALL 0x0001b120
CALL 0x0007ebe0
(translation_unit "void __gmpq_canonicalize(void)\n\n{\n  int iVar1;\n  undefined4 uVar2;\n  int iVar3;\n  uint uVar4;\n  undefined1 *puVar5;\n  int iVar6;\n  undefined1 *puVar7;\n  undefined1 *puVar8;\n  int in_GS_OFFSET;\n  undefined1 auStack_50 [60];\n  undefined4 uStack_14;\n  \n  puVar8 = &stack0xfffffffc;\n  uStack_14 = 0x3501b;\n  entry();\n  iVar1 = *(int *)(puVar8 + 8);\n  *(undefined4 *)(puVar8 + -0x1c) = *(undefined4 *)(in_GS_OFFSET + 0x14);\n  iVar6 = *(int *)(iVar1 + 0x10);\n  if (iVar6 < 0) {\n    iVar6 = -iVar6;\n    *(int *)(iVar1 + 0x10) = iVar6;\n    uVar4 = -*(int *)(iVar1 + 4);\n    *(uint *)(iVar1 + 4) = uVar4;\n  }\n  else {\n    if (iVar6 == 0) {\n                    /* WARNING: Subroutine does not return */\n      __gmp_divide_by_zero();\n    }\n    uVar4 = *(uint *)(iVar1 + 4);\n  }\n  *(undefined4 *)(puVar8 + -0x2c) = 0;\n  iVar3 = (uVar4 ^ (int)uVar4 >> 0x1f) - ((int)uVar4 >> 0x1f);\n  if (iVar3 < iVar6) {\n    iVar3 = iVar6;\n  }\n  *(int *)(puVar8 + -0x28) = iVar3 + 1;\n  uVar4 = (iVar3 + 1) * 4;\n  if (uVar4 < 0x7f01) {\n    iVar6 = -(uVar4 + 0x1b & 0xfffffff0);\n    puVar7 = auStack_50 + iVar6;\n    puVar5 = auStack_50 + iVar6;\n  }\n  else {\n    puVar5 = (undefined1 *)__gmp_tmp_reentrant_alloc(puVar8 + -0x2c,uVar4);\n    puVar7 = auStack_50;\n  }\n  *(undefined1 **)(puVar8 + -0x20) = puVar5;\n  iVar6 = iVar1 + 0xc;\n  *(int *)(puVar7 + -8) = iVar6;\n  *(int *)(puVar7 + -0xc) = iVar1;\n  *(undefined1 **)(puVar7 + -0x10) = puVar8 + -0x28;\n  *(undefined1 **)(puVar8 + -0x3c) = puVar8 + -0x28;\n  *(undefined4 *)(puVar7 + -0x14) = 0x35095;\n  __gmpz_gcd();\n  uVar2 = *(undefined4 *)(puVar8 + -0x3c);\n  if ((*(int *)(puVar8 + -0x24) != 1) || (**(int **)(puVar8 + -0x20) != 1)) {\n    *(undefined4 *)(puVar8 + -0x3c) = uVar2;\n    *(undefined4 *)(puVar7 + -8) = uVar2;\n    *(int *)(puVar7 + -0xc) = iVar1;\n    *(int *)(puVar7 + -0x10) = iVar1;\n    *(undefined4 *)(puVar7 + -0x14) = 0x350b7;\n    __gmpz_divexact_gcd();\n    *(undefined4 *)(puVar7 + -8) = *(undefined4 *)(puVar8 + -0x3c);\n    *(int *)(puVar7 + -0xc) = iVar6;\n    *(int *)(puVar7 + -0x10) = iVar6;\n    *(undefined4 *)(puVar7 + -0x14) = 0x350c5;\n    __gmpz_divexact_gcd();\n  }\n  if (*(int *)(puVar8 + -0x2c) != 0) {\n    *(int *)(puVar7 + -0x10) = *(int *)(puVar8 + -0x2c);\n    *(undefined4 *)(puVar7 + -0x14) = 0x35121;\n    __gmp_tmp_reentrant_free();\n  }\n  if (*(int *)(puVar8 + -0x1c) == *(int *)(in_GS_OFFSET + 0x14)) {\n    return;\n  }\n                    /* WARNING: Subroutine does not return */\n  *(undefined4 *)(puVar7 + -4) = 0x3513a;\n  FUN_0007ebe0();\n}\n\n" (function_definition "void __gmpq_canonicalize(void)\n\n{\n  int iVar1;\n  undefined4 uVar2;\n  int iVar3;\n  uint uVar4;\n  undefined1 *puVar5;\n  int iVar6;\n  undefined1 *puVar7;\n  undefined1 *puVar8;\n  int in_GS_OFFSET;\n  undefined1 auStack_50 [60];\n  undefined4 uStack_14;\n  \n  puVar8 = &stack0xfffffffc;\n  uStack_14 = 0x3501b;\n  entry();\n  iVar1 = *(int *)(puVar8 + 8);\n  *(undefined4 *)(puVar8 + -0x1c) = *(undefined4 *)(in_GS_OFFSET + 0x14);\n  iVar6 = *(int *)(iVar1 + 0x10);\n  if (iVar6 < 0) {\n    iVar6 = -iVar6;\n    *(int *)(iVar1 + 0x10) = iVar6;\n    uVar4 = -*(int *)(iVar1 + 4);\n    *(uint *)(iVar1 + 4) = uVar4;\n  }\n  else {\n    if (iVar6 == 0) {\n                    /* WARNING: Subroutine does not return */\n      __gmp_divide_by_zero();\n    }\n    uVar4 = *(uint *)(iVar1 + 4);\n  }\n  *(undefined4 *)(puVar8 + -0x2c) = 0;\n  iVar3 = (uVar4 ^ (int)uVar4 >> 0x1f) - ((int)uVar4 >> 0x1f);\n  if (iVar3 < iVar6) {\n    iVar3 = iVar6;\n  }\n  *(int *)(puVar8 + -0x28) = iVar3 + 1;\n  uVar4 = (iVar3 + 1) * 4;\n  if (uVar4 < 0x7f01) {\n    iVar6 = -(uVar4 + 0x1b & 0xfffffff0);\n    puVar7 = auStack_50 + iVar6;\n    puVar5 = auStack_50 + iVar6;\n  }\n  else {\n    puVar5 = (undefined1 *)__gmp_tmp_reentrant_alloc(puVar8 + -0x2c,uVar4);\n    puVar7 = auStack_50;\n  }\n  *(undefined1 **)(puVar8 + -0x20) = puVar5;\n  iVar6 = iVar1 + 0xc;\n  *(int *)(puVar7 + -8) = iVar6;\n  *(int *)(puVar7 + -0xc) = iVar1;\n  *(undefined1 **)(puVar7 + -0x10) = puVar8 + -0x28;\n  *(undefined1 **)(puVar8 + -0x3c) = puVar8 + -0x28;\n  *(undefined4 *)(puVar7 + -0x14) = 0x35095;\n  __gmpz_gcd();\n  uVar2 = *(undefined4 *)(puVar8 + -0x3c);\n  if ((*(int *)(puVar8 + -0x24) != 1) || (**(int **)(puVar8 + -0x20) != 1)) {\n    *(undefined4 *)(puVar8 + -0x3c) = uVar2;\n    *(undefined4 *)(puVar7 + -8) = uVar2;\n    *(int *)(puVar7 + -0xc) = iVar1;\n    *(int *)(puVar7 + -0x10) = iVar1;\n    *(undefined4 *)(puVar7 + -0x14) = 0x350b7;\n    __gmpz_divexact_gcd();\n    *(undefined4 *)(puVar7 + -8) = *(undefined4 *)(puVar8 + -0x3c);\n    *(int *)(puVar7 + -0xc) = iVar6;\n    *(int *)(puVar7 + -0x10) = iVar6;\n    *(undefined4 *)(puVar7 + -0x14) = 0x350c5;\n    __gmpz_divexact_gcd();\n  }\n  if (*(int *)(puVar8 + -0x2c) != 0) {\n    *(int *)(puVar7 + -0x10) = *(int *)(puVar8 + -0x2c);\n    *(undefined4 *)(puVar7 + -0x14) = 0x35121;\n    __gmp_tmp_reentrant_free();\n  }\n  if (*(int *)(puVar8 + -0x1c) == *(int *)(in_GS_OFFSET + 0x14)) {\n    return;\n  }\n                    /* WARNING: Subroutine does not return */\n  *(undefined4 *)(puVar7 + -4) = 0x3513a;\n  FUN_0007ebe0();\n}" primitive_type (function_declarator "__gmpq_canonicalize(void)" identifier (parameter_list "(void)" ( (parameter_declaration "void" primitive_type) ))) (compound_statement "{\n  int iVar1;\n  undefined4 uVar2;\n  int iVar3;\n  uint uVar4;\n  undefined1 *puVar5;\n  int iVar6;\n  undefined1 *puVar7;\n  undefined1 *puVar8;\n  int in_GS_OFFSET;\n  undefined1 auStack_50 [60];\n  undefined4 uStack_14;\n  \n  puVar8 = &stack0xfffffffc;\n  uStack_14 = 0x3501b;\n  entry();\n  iVar1 = *(int *)(puVar8 + 8);\n  *(undefined4 *)(puVar8 + -0x1c) = *(undefined4 *)(in_GS_OFFSET + 0x14);\n  iVar6 = *(int *)(iVar1 + 0x10);\n  if (iVar6 < 0) {\n    iVar6 = -iVar6;\n    *(int *)(iVar1 + 0x10) = iVar6;\n    uVar4 = -*(int *)(iVar1 + 4);\n    *(uint *)(iVar1 + 4) = uVar4;\n  }\n  else {\n    if (iVar6 == 0) {\n                    /* WARNING: Subroutine does not return */\n      __gmp_divide_by_zero();\n    }\n    uVar4 = *(uint *)(iVar1 + 4);\n  }\n  *(undefined4 *)(puVar8 + -0x2c) = 0;\n  iVar3 = (uVar4 ^ (int)uVar4 >> 0x1f) - ((int)uVar4 >> 0x1f);\n  if (iVar3 < iVar6) {\n    iVar3 = iVar6;\n  }\n  *(int *)(puVar8 + -0x28) = iVar3 + 1;\n  uVar4 = (iVar3 + 1) * 4;\n  if (uVar4 < 0x7f01) {\n    iVar6 = -(uVar4 + 0x1b & 0xfffffff0);\n    puVar7 = auStack_50 + iVar6;\n    puVar5 = auStack_50 + iVar6;\n  }\n  else {\n    puVar5 = (undefined1 *)__gmp_tmp_reentrant_alloc(puVar8 + -0x2c,uVar4);\n    puVar7 = auStack_50;\n  }\n  *(undefined1 **)(puVar8 + -0x20) = puVar5;\n  iVar6 = iVar1 + 0xc;\n  *(int *)(puVar7 + -8) = iVar6;\n  *(int *)(puVar7 + -0xc) = iVar1;\n  *(undefined1 **)(puVar7 + -0x10) = puVar8 + -0x28;\n  *(undefined1 **)(puVar8 + -0x3c) = puVar8 + -0x28;\n  *(undefined4 *)(puVar7 + -0x14) = 0x35095;\n  __gmpz_gcd();\n  uVar2 = *(undefined4 *)(puVar8 + -0x3c);\n  if ((*(int *)(puVar8 + -0x24) != 1) || (**(int **)(puVar8 + -0x20) != 1)) {\n    *(undefined4 *)(puVar8 + -0x3c) = uVar2;\n    *(undefined4 *)(puVar7 + -8) = uVar2;\n    *(int *)(puVar7 + -0xc) = iVar1;\n    *(int *)(puVar7 + -0x10) = iVar1;\n    *(undefined4 *)(puVar7 + -0x14) = 0x350b7;\n    __gmpz_divexact_gcd();\n    *(undefined4 *)(puVar7 + -8) = *(undefined4 *)(puVar8 + -0x3c);\n    *(int *)(puVar7 + -0xc) = iVar6;\n    *(int *)(puVar7 + -0x10) = iVar6;\n    *(undefined4 *)(puVar7 + -0x14) = 0x350c5;\n    __gmpz_divexact_gcd();\n  }\n  if (*(int *)(puVar8 + -0x2c) != 0) {\n    *(int *)(puVar7 + -0x10) = *(int *)(puVar8 + -0x2c);\n    *(undefined4 *)(puVar7 + -0x14) = 0x35121;\n    __gmp_tmp_reentrant_free();\n  }\n  if (*(int *)(puVar8 + -0x1c) == *(int *)(in_GS_OFFSET + 0x14)) {\n    return;\n  }\n                    /* WARNING: Subroutine does not return */\n  *(undefined4 *)(puVar7 + -4) = 0x3513a;\n  FUN_0007ebe0();\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "undefined4 uVar2;" type_identifier identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "uint uVar4;" type_identifier identifier ;) (declaration "undefined1 *puVar5;" type_identifier (pointer_declarator "*puVar5" * identifier) ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "undefined1 *puVar7;" type_identifier (pointer_declarator "*puVar7" * identifier) ;) (declaration "undefined1 *puVar8;" type_identifier (pointer_declarator "*puVar8" * identifier) ;) (declaration "int in_GS_OFFSET;" primitive_type identifier ;) (declaration "undefined1 auStack_50 [60];" type_identifier (array_declarator "auStack_50 [60]" identifier [ number_literal ]) ;) (declaration "undefined4 uStack_14;" type_identifier identifier ;) (expression_statement "puVar8 = &stack0xfffffffc;" (assignment_expression "puVar8 = &stack0xfffffffc" identifier = (pointer_expression "&stack0xfffffffc" & identifier)) ;) (expression_statement "uStack_14 = 0x3501b;" (assignment_expression "uStack_14 = 0x3501b" identifier = number_literal) ;) (expression_statement "entry();" (call_expression "entry()" identifier (argument_list "()" ( ))) ;) (expression_statement "iVar1 = *(int *)(puVar8 + 8);" (assignment_expression "iVar1 = *(int *)(puVar8 + 8)" identifier = (pointer_expression "*(int *)(puVar8 + 8)" * (cast_expression "(int *)(puVar8 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar8 + 8)" ( (binary_expression "puVar8 + 8" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar8 + -0x1c) = *(undefined4 *)(in_GS_OFFSET + 0x14);" (assignment_expression "*(undefined4 *)(puVar8 + -0x1c) = *(undefined4 *)(in_GS_OFFSET + 0x14)" (pointer_expression "*(undefined4 *)(puVar8 + -0x1c)" * (cast_expression "(undefined4 *)(puVar8 + -0x1c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar8 + -0x1c)" ( (binary_expression "puVar8 + -0x1c" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(in_GS_OFFSET + 0x14)" * (cast_expression "(undefined4 *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) ;) (expression_statement "iVar6 = *(int *)(iVar1 + 0x10);" (assignment_expression "iVar6 = *(int *)(iVar1 + 0x10)" identifier = (pointer_expression "*(int *)(iVar1 + 0x10)" * (cast_expression "(int *)(iVar1 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x10)" ( (binary_expression "iVar1 + 0x10" identifier + number_literal) ))))) ;) (if_statement "if (iVar6 < 0) {\n    iVar6 = -iVar6;\n    *(int *)(iVar1 + 0x10) = iVar6;\n    uVar4 = -*(int *)(iVar1 + 4);\n    *(uint *)(iVar1 + 4) = uVar4;\n  }\n  else {\n    if (iVar6 == 0) {\n                    /* WARNING: Subroutine does not return */\n      __gmp_divide_by_zero();\n    }\n    uVar4 = *(uint *)(iVar1 + 4);\n  }" if (parenthesized_expression "(iVar6 < 0)" ( (binary_expression "iVar6 < 0" identifier < number_literal) )) (compound_statement "{\n    iVar6 = -iVar6;\n    *(int *)(iVar1 + 0x10) = iVar6;\n    uVar4 = -*(int *)(iVar1 + 4);\n    *(uint *)(iVar1 + 4) = uVar4;\n  }" { (expression_statement "iVar6 = -iVar6;" (assignment_expression "iVar6 = -iVar6" identifier = (unary_expression "-iVar6" - identifier)) ;) (expression_statement "*(int *)(iVar1 + 0x10) = iVar6;" (assignment_expression "*(int *)(iVar1 + 0x10) = iVar6" (pointer_expression "*(int *)(iVar1 + 0x10)" * (cast_expression "(int *)(iVar1 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x10)" ( (binary_expression "iVar1 + 0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "uVar4 = -*(int *)(iVar1 + 4);" (assignment_expression "uVar4 = -*(int *)(iVar1 + 4)" identifier = (unary_expression "-*(int *)(iVar1 + 4)" - (pointer_expression "*(int *)(iVar1 + 4)" * (cast_expression "(int *)(iVar1 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 4)" ( (binary_expression "iVar1 + 4" identifier + number_literal) )))))) ;) (expression_statement "*(uint *)(iVar1 + 4) = uVar4;" (assignment_expression "*(uint *)(iVar1 + 4) = uVar4" (pointer_expression "*(uint *)(iVar1 + 4)" * (cast_expression "(uint *)(iVar1 + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 4)" ( (binary_expression "iVar1 + 4" identifier + number_literal) )))) = identifier) ;) }) (else_clause "else {\n    if (iVar6 == 0) {\n                    /* WARNING: Subroutine does not return */\n      __gmp_divide_by_zero();\n    }\n    uVar4 = *(uint *)(iVar1 + 4);\n  }" else (compound_statement "{\n    if (iVar6 == 0) {\n                    /* WARNING: Subroutine does not return */\n      __gmp_divide_by_zero();\n    }\n    uVar4 = *(uint *)(iVar1 + 4);\n  }" { (if_statement "if (iVar6 == 0) {\n                    /* WARNING: Subroutine does not return */\n      __gmp_divide_by_zero();\n    }" if (parenthesized_expression "(iVar6 == 0)" ( (binary_expression "iVar6 == 0" identifier == number_literal) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n      __gmp_divide_by_zero();\n    }" { comment (expression_statement "__gmp_divide_by_zero();" (call_expression "__gmp_divide_by_zero()" identifier (argument_list "()" ( ))) ;) })) (expression_statement "uVar4 = *(uint *)(iVar1 + 4);" (assignment_expression "uVar4 = *(uint *)(iVar1 + 4)" identifier = (pointer_expression "*(uint *)(iVar1 + 4)" * (cast_expression "(uint *)(iVar1 + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 4)" ( (binary_expression "iVar1 + 4" identifier + number_literal) ))))) ;) }))) (expression_statement "*(undefined4 *)(puVar8 + -0x2c) = 0;" (assignment_expression "*(undefined4 *)(puVar8 + -0x2c) = 0" (pointer_expression "*(undefined4 *)(puVar8 + -0x2c)" * (cast_expression "(undefined4 *)(puVar8 + -0x2c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar8 + -0x2c)" ( (binary_expression "puVar8 + -0x2c" identifier + number_literal) )))) = number_literal) ;) (expression_statement "iVar3 = (uVar4 ^ (int)uVar4 >> 0x1f) - ((int)uVar4 >> 0x1f);" (assignment_expression "iVar3 = (uVar4 ^ (int)uVar4 >> 0x1f) - ((int)uVar4 >> 0x1f)" identifier = (binary_expression "(uVar4 ^ (int)uVar4 >> 0x1f) - ((int)uVar4 >> 0x1f)" (parenthesized_expression "(uVar4 ^ (int)uVar4 >> 0x1f)" ( (binary_expression "uVar4 ^ (int)uVar4 >> 0x1f" identifier ^ (binary_expression "(int)uVar4 >> 0x1f" (cast_expression "(int)uVar4" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal)) )) - (parenthesized_expression "((int)uVar4 >> 0x1f)" ( (binary_expression "(int)uVar4 >> 0x1f" (cast_expression "(int)uVar4" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal) )))) ;) (if_statement "if (iVar3 < iVar6) {\n    iVar3 = iVar6;\n  }" if (parenthesized_expression "(iVar3 < iVar6)" ( (binary_expression "iVar3 < iVar6" identifier < identifier) )) (compound_statement "{\n    iVar3 = iVar6;\n  }" { (expression_statement "iVar3 = iVar6;" (assignment_expression "iVar3 = iVar6" identifier = identifier) ;) })) (expression_statement "*(int *)(puVar8 + -0x28) = iVar3 + 1;" (assignment_expression "*(int *)(puVar8 + -0x28) = iVar3 + 1" (pointer_expression "*(int *)(puVar8 + -0x28)" * (cast_expression "(int *)(puVar8 + -0x28)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar8 + -0x28)" ( (binary_expression "puVar8 + -0x28" identifier + number_literal) )))) = (binary_expression "iVar3 + 1" identifier + number_literal)) ;) (expression_statement "uVar4 = (iVar3 + 1) * 4;" (assignment_expression "uVar4 = (iVar3 + 1) * 4" identifier = (binary_expression "(iVar3 + 1) * 4" (parenthesized_expression "(iVar3 + 1)" ( (binary_expression "iVar3 + 1" identifier + number_literal) )) * number_literal)) ;) (if_statement "if (uVar4 < 0x7f01) {\n    iVar6 = -(uVar4 + 0x1b & 0xfffffff0);\n    puVar7 = auStack_50 + iVar6;\n    puVar5 = auStack_50 + iVar6;\n  }\n  else {\n    puVar5 = (undefined1 *)__gmp_tmp_reentrant_alloc(puVar8 + -0x2c,uVar4);\n    puVar7 = auStack_50;\n  }" if (parenthesized_expression "(uVar4 < 0x7f01)" ( (binary_expression "uVar4 < 0x7f01" identifier < number_literal) )) (compound_statement "{\n    iVar6 = -(uVar4 + 0x1b & 0xfffffff0);\n    puVar7 = auStack_50 + iVar6;\n    puVar5 = auStack_50 + iVar6;\n  }" { (expression_statement "iVar6 = -(uVar4 + 0x1b & 0xfffffff0);" (assignment_expression "iVar6 = -(uVar4 + 0x1b & 0xfffffff0)" identifier = (unary_expression "-(uVar4 + 0x1b & 0xfffffff0)" - (parenthesized_expression "(uVar4 + 0x1b & 0xfffffff0)" ( (binary_expression "uVar4 + 0x1b & 0xfffffff0" (binary_expression "uVar4 + 0x1b" identifier + number_literal) & number_literal) )))) ;) (expression_statement "puVar7 = auStack_50 + iVar6;" (assignment_expression "puVar7 = auStack_50 + iVar6" identifier = (binary_expression "auStack_50 + iVar6" identifier + identifier)) ;) (expression_statement "puVar5 = auStack_50 + iVar6;" (assignment_expression "puVar5 = auStack_50 + iVar6" identifier = (binary_expression "auStack_50 + iVar6" identifier + identifier)) ;) }) (else_clause "else {\n    puVar5 = (undefined1 *)__gmp_tmp_reentrant_alloc(puVar8 + -0x2c,uVar4);\n    puVar7 = auStack_50;\n  }" else (compound_statement "{\n    puVar5 = (undefined1 *)__gmp_tmp_reentrant_alloc(puVar8 + -0x2c,uVar4);\n    puVar7 = auStack_50;\n  }" { (expression_statement "puVar5 = (undefined1 *)__gmp_tmp_reentrant_alloc(puVar8 + -0x2c,uVar4);" (assignment_expression "puVar5 = (undefined1 *)__gmp_tmp_reentrant_alloc(puVar8 + -0x2c,uVar4)" identifier = (cast_expression "(undefined1 *)__gmp_tmp_reentrant_alloc(puVar8 + -0x2c,uVar4)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "__gmp_tmp_reentrant_alloc(puVar8 + -0x2c,uVar4)" identifier (argument_list "(puVar8 + -0x2c,uVar4)" ( (binary_expression "puVar8 + -0x2c" identifier + number_literal) , identifier ))))) ;) (expression_statement "puVar7 = auStack_50;" (assignment_expression "puVar7 = auStack_50" identifier = identifier) ;) }))) (expression_statement "*(undefined1 **)(puVar8 + -0x20) = puVar5;" (assignment_expression "*(undefined1 **)(puVar8 + -0x20) = puVar5" (pointer_expression "*(undefined1 **)(puVar8 + -0x20)" * (cast_expression "(undefined1 **)(puVar8 + -0x20)" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar8 + -0x20)" ( (binary_expression "puVar8 + -0x20" identifier + number_literal) )))) = identifier) ;) (expression_statement "iVar6 = iVar1 + 0xc;" (assignment_expression "iVar6 = iVar1 + 0xc" identifier = (binary_expression "iVar1 + 0xc" identifier + number_literal)) ;) (expression_statement "*(int *)(puVar7 + -8) = iVar6;" (assignment_expression "*(int *)(puVar7 + -8) = iVar6" (pointer_expression "*(int *)(puVar7 + -8)" * (cast_expression "(int *)(puVar7 + -8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar7 + -8)" ( (binary_expression "puVar7 + -8" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(puVar7 + -0xc) = iVar1;" (assignment_expression "*(int *)(puVar7 + -0xc) = iVar1" (pointer_expression "*(int *)(puVar7 + -0xc)" * (cast_expression "(int *)(puVar7 + -0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar7 + -0xc)" ( (binary_expression "puVar7 + -0xc" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined1 **)(puVar7 + -0x10) = puVar8 + -0x28;" (assignment_expression "*(undefined1 **)(puVar7 + -0x10) = puVar8 + -0x28" (pointer_expression "*(undefined1 **)(puVar7 + -0x10)" * (cast_expression "(undefined1 **)(puVar7 + -0x10)" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar7 + -0x10)" ( (binary_expression "puVar7 + -0x10" identifier + number_literal) )))) = (binary_expression "puVar8 + -0x28" identifier + number_literal)) ;) (expression_statement "*(undefined1 **)(puVar8 + -0x3c) = puVar8 + -0x28;" (assignment_expression "*(undefined1 **)(puVar8 + -0x3c) = puVar8 + -0x28" (pointer_expression "*(undefined1 **)(puVar8 + -0x3c)" * (cast_expression "(undefined1 **)(puVar8 + -0x3c)" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar8 + -0x3c)" ( (binary_expression "puVar8 + -0x3c" identifier + number_literal) )))) = (binary_expression "puVar8 + -0x28" identifier + number_literal)) ;) (expression_statement "*(undefined4 *)(puVar7 + -0x14) = 0x35095;" (assignment_expression "*(undefined4 *)(puVar7 + -0x14) = 0x35095" (pointer_expression "*(undefined4 *)(puVar7 + -0x14)" * (cast_expression "(undefined4 *)(puVar7 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar7 + -0x14)" ( (binary_expression "puVar7 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "__gmpz_gcd();" (call_expression "__gmpz_gcd()" identifier (argument_list "()" ( ))) ;) (expression_statement "uVar2 = *(undefined4 *)(puVar8 + -0x3c);" (assignment_expression "uVar2 = *(undefined4 *)(puVar8 + -0x3c)" identifier = (pointer_expression "*(undefined4 *)(puVar8 + -0x3c)" * (cast_expression "(undefined4 *)(puVar8 + -0x3c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar8 + -0x3c)" ( (binary_expression "puVar8 + -0x3c" identifier + number_literal) ))))) ;) (if_statement "if ((*(int *)(puVar8 + -0x24) != 1) || (**(int **)(puVar8 + -0x20) != 1)) {\n    *(undefined4 *)(puVar8 + -0x3c) = uVar2;\n    *(undefined4 *)(puVar7 + -8) = uVar2;\n    *(int *)(puVar7 + -0xc) = iVar1;\n    *(int *)(puVar7 + -0x10) = iVar1;\n    *(undefined4 *)(puVar7 + -0x14) = 0x350b7;\n    __gmpz_divexact_gcd();\n    *(undefined4 *)(puVar7 + -8) = *(undefined4 *)(puVar8 + -0x3c);\n    *(int *)(puVar7 + -0xc) = iVar6;\n    *(int *)(puVar7 + -0x10) = iVar6;\n    *(undefined4 *)(puVar7 + -0x14) = 0x350c5;\n    __gmpz_divexact_gcd();\n  }" if (parenthesized_expression "((*(int *)(puVar8 + -0x24) != 1) || (**(int **)(puVar8 + -0x20) != 1))" ( (binary_expression "(*(int *)(puVar8 + -0x24) != 1) || (**(int **)(puVar8 + -0x20) != 1)" (parenthesized_expression "(*(int *)(puVar8 + -0x24) != 1)" ( (binary_expression "*(int *)(puVar8 + -0x24) != 1" (pointer_expression "*(int *)(puVar8 + -0x24)" * (cast_expression "(int *)(puVar8 + -0x24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar8 + -0x24)" ( (binary_expression "puVar8 + -0x24" identifier + number_literal) )))) != number_literal) )) || (parenthesized_expression "(**(int **)(puVar8 + -0x20) != 1)" ( (binary_expression "**(int **)(puVar8 + -0x20) != 1" (pointer_expression "**(int **)(puVar8 + -0x20)" * (pointer_expression "*(int **)(puVar8 + -0x20)" * (cast_expression "(int **)(puVar8 + -0x20)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar8 + -0x20)" ( (binary_expression "puVar8 + -0x20" identifier + number_literal) ))))) != number_literal) ))) )) (compound_statement "{\n    *(undefined4 *)(puVar8 + -0x3c) = uVar2;\n    *(undefined4 *)(puVar7 + -8) = uVar2;\n    *(int *)(puVar7 + -0xc) = iVar1;\n    *(int *)(puVar7 + -0x10) = iVar1;\n    *(undefined4 *)(puVar7 + -0x14) = 0x350b7;\n    __gmpz_divexact_gcd();\n    *(undefined4 *)(puVar7 + -8) = *(undefined4 *)(puVar8 + -0x3c);\n    *(int *)(puVar7 + -0xc) = iVar6;\n    *(int *)(puVar7 + -0x10) = iVar6;\n    *(undefined4 *)(puVar7 + -0x14) = 0x350c5;\n    __gmpz_divexact_gcd();\n  }" { (expression_statement "*(undefined4 *)(puVar8 + -0x3c) = uVar2;" (assignment_expression "*(undefined4 *)(puVar8 + -0x3c) = uVar2" (pointer_expression "*(undefined4 *)(puVar8 + -0x3c)" * (cast_expression "(undefined4 *)(puVar8 + -0x3c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar8 + -0x3c)" ( (binary_expression "puVar8 + -0x3c" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar7 + -8) = uVar2;" (assignment_expression "*(undefined4 *)(puVar7 + -8) = uVar2" (pointer_expression "*(undefined4 *)(puVar7 + -8)" * (cast_expression "(undefined4 *)(puVar7 + -8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar7 + -8)" ( (binary_expression "puVar7 + -8" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(puVar7 + -0xc) = iVar1;" (assignment_expression "*(int *)(puVar7 + -0xc) = iVar1" (pointer_expression "*(int *)(puVar7 + -0xc)" * (cast_expression "(int *)(puVar7 + -0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar7 + -0xc)" ( (binary_expression "puVar7 + -0xc" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(puVar7 + -0x10) = iVar1;" (assignment_expression "*(int *)(puVar7 + -0x10) = iVar1" (pointer_expression "*(int *)(puVar7 + -0x10)" * (cast_expression "(int *)(puVar7 + -0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar7 + -0x10)" ( (binary_expression "puVar7 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar7 + -0x14) = 0x350b7;" (assignment_expression "*(undefined4 *)(puVar7 + -0x14) = 0x350b7" (pointer_expression "*(undefined4 *)(puVar7 + -0x14)" * (cast_expression "(undefined4 *)(puVar7 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar7 + -0x14)" ( (binary_expression "puVar7 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "__gmpz_divexact_gcd();" (call_expression "__gmpz_divexact_gcd()" identifier (argument_list "()" ( ))) ;) (expression_statement "*(undefined4 *)(puVar7 + -8) = *(undefined4 *)(puVar8 + -0x3c);" (assignment_expression "*(undefined4 *)(puVar7 + -8) = *(undefined4 *)(puVar8 + -0x3c)" (pointer_expression "*(undefined4 *)(puVar7 + -8)" * (cast_expression "(undefined4 *)(puVar7 + -8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar7 + -8)" ( (binary_expression "puVar7 + -8" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(puVar8 + -0x3c)" * (cast_expression "(undefined4 *)(puVar8 + -0x3c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar8 + -0x3c)" ( (binary_expression "puVar8 + -0x3c" identifier + number_literal) ))))) ;) (expression_statement "*(int *)(puVar7 + -0xc) = iVar6;" (assignment_expression "*(int *)(puVar7 + -0xc) = iVar6" (pointer_expression "*(int *)(puVar7 + -0xc)" * (cast_expression "(int *)(puVar7 + -0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar7 + -0xc)" ( (binary_expression "puVar7 + -0xc" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(puVar7 + -0x10) = iVar6;" (assignment_expression "*(int *)(puVar7 + -0x10) = iVar6" (pointer_expression "*(int *)(puVar7 + -0x10)" * (cast_expression "(int *)(puVar7 + -0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar7 + -0x10)" ( (binary_expression "puVar7 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar7 + -0x14) = 0x350c5;" (assignment_expression "*(undefined4 *)(puVar7 + -0x14) = 0x350c5" (pointer_expression "*(undefined4 *)(puVar7 + -0x14)" * (cast_expression "(undefined4 *)(puVar7 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar7 + -0x14)" ( (binary_expression "puVar7 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "__gmpz_divexact_gcd();" (call_expression "__gmpz_divexact_gcd()" identifier (argument_list "()" ( ))) ;) })) (if_statement "if (*(int *)(puVar8 + -0x2c) != 0) {\n    *(int *)(puVar7 + -0x10) = *(int *)(puVar8 + -0x2c);\n    *(undefined4 *)(puVar7 + -0x14) = 0x35121;\n    __gmp_tmp_reentrant_free();\n  }" if (parenthesized_expression "(*(int *)(puVar8 + -0x2c) != 0)" ( (binary_expression "*(int *)(puVar8 + -0x2c) != 0" (pointer_expression "*(int *)(puVar8 + -0x2c)" * (cast_expression "(int *)(puVar8 + -0x2c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar8 + -0x2c)" ( (binary_expression "puVar8 + -0x2c" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n    *(int *)(puVar7 + -0x10) = *(int *)(puVar8 + -0x2c);\n    *(undefined4 *)(puVar7 + -0x14) = 0x35121;\n    __gmp_tmp_reentrant_free();\n  }" { (expression_statement "*(int *)(puVar7 + -0x10) = *(int *)(puVar8 + -0x2c);" (assignment_expression "*(int *)(puVar7 + -0x10) = *(int *)(puVar8 + -0x2c)" (pointer_expression "*(int *)(puVar7 + -0x10)" * (cast_expression "(int *)(puVar7 + -0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar7 + -0x10)" ( (binary_expression "puVar7 + -0x10" identifier + number_literal) )))) = (pointer_expression "*(int *)(puVar8 + -0x2c)" * (cast_expression "(int *)(puVar8 + -0x2c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar8 + -0x2c)" ( (binary_expression "puVar8 + -0x2c" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar7 + -0x14) = 0x35121;" (assignment_expression "*(undefined4 *)(puVar7 + -0x14) = 0x35121" (pointer_expression "*(undefined4 *)(puVar7 + -0x14)" * (cast_expression "(undefined4 *)(puVar7 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar7 + -0x14)" ( (binary_expression "puVar7 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "__gmp_tmp_reentrant_free();" (call_expression "__gmp_tmp_reentrant_free()" identifier (argument_list "()" ( ))) ;) })) (if_statement "if (*(int *)(puVar8 + -0x1c) == *(int *)(in_GS_OFFSET + 0x14)) {\n    return;\n  }" if (parenthesized_expression "(*(int *)(puVar8 + -0x1c) == *(int *)(in_GS_OFFSET + 0x14))" ( (binary_expression "*(int *)(puVar8 + -0x1c) == *(int *)(in_GS_OFFSET + 0x14)" (pointer_expression "*(int *)(puVar8 + -0x1c)" * (cast_expression "(int *)(puVar8 + -0x1c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar8 + -0x1c)" ( (binary_expression "puVar8 + -0x1c" identifier + number_literal) )))) == (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) )) (compound_statement "{\n    return;\n  }" { (return_statement "return;" return ;) })) comment (expression_statement "*(undefined4 *)(puVar7 + -4) = 0x3513a;" (assignment_expression "*(undefined4 *)(puVar7 + -4) = 0x3513a" (pointer_expression "*(undefined4 *)(puVar7 + -4)" * (cast_expression "(undefined4 *)(puVar7 + -4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar7 + -4)" ( (binary_expression "puVar7 + -4" identifier + number_literal) )))) = number_literal) ;) (expression_statement "FUN_0007ebe0();" (call_expression "FUN_0007ebe0()" identifier (argument_list "()" ( ))) ;) })))
(translation_unit "/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n/* WARNING: Unknown calling convention */\n\nvoid __gmpq_canonicalize(__mpq_struct *op)\n\n{\n  __mpz_struct *p_Var1;\n  int iVar2;\n  int iVar3;\n  uint uVar4;\n  int iVar5;\n  undefined1 *puVar6;\n  int in_GS_OFFSET;\n  undefined1 auStack_4c [12];\n  __mpz_struct *local_40 [4];\n  tmp_reentrant_t *__tmp_marker;\n  mpz_t gcd;\n  \n  iVar2 = *(int *)(in_GS_OFFSET + 0x14);\n  iVar5 = (op->_mp_den)._mp_size;\n  if (iVar5 < 0) {\n    iVar5 = -iVar5;\n    (op->_mp_den)._mp_size = iVar5;\n    uVar4 = -(op->_mp_num)._mp_size;\n    (op->_mp_num)._mp_size = uVar4;\n  }\n  else {\n    if (iVar5 == 0) {\n                    /* WARNING: Subroutine does not return */\n      __gmp_divide_by_zero();\n    }\n    uVar4 = (op->_mp_num)._mp_size;\n  }\n  __tmp_marker = (tmp_reentrant_t *)0x0;\n  iVar3 = (uVar4 ^ (int)uVar4 >> 0x1f) - ((int)uVar4 >> 0x1f);\n  if (iVar3 < iVar5) {\n    iVar3 = iVar5;\n  }\n  gcd[0]._mp_alloc = iVar3 + 1;\n  uVar4 = (iVar3 + 1) * 4;\n  if (uVar4 < 0x7f01) {\n    iVar5 = -(uVar4 + 0x1b & 0xfffffff0);\n    puVar6 = auStack_4c + iVar5;\n    gcd[0]._mp_d = (mp_limb_t *)((int)local_40 + iVar5);\n  }\n  else {\n    gcd[0]._mp_d = (mp_limb_t *)__gmp_tmp_reentrant_alloc(&__tmp_marker,uVar4);\n    puVar6 = auStack_4c;\n  }\n  p_Var1 = &op->_mp_den;\n  *(__mpz_struct **)(puVar6 + -8) = p_Var1;\n  *(__mpq_struct **)(puVar6 + -0xc) = op;\n  *(__mpz_struct **)(puVar6 + -0x10) = gcd;\n  local_40[0] = gcd;\n  *(undefined4 *)(puVar6 + -0x14) = 0x35095;\n  __gmpz_gcd(*(mpz_ptr *)(puVar6 + -0x10),*(mpz_srcptr *)(puVar6 + -0xc),\n             *(mpz_srcptr *)(puVar6 + -8));\n  if ((gcd[0]._mp_size != 1) || (*gcd[0]._mp_d != 1)) {\n    *(__mpz_struct **)(puVar6 + -8) = local_40[0];\n    *(__mpq_struct **)(puVar6 + -0xc) = op;\n    *(__mpq_struct **)(puVar6 + -0x10) = op;\n    *(undefined4 *)(puVar6 + -0x14) = 0x350b7;\n    __gmpz_divexact_gcd(*(mpz_ptr *)(puVar6 + -0x10),*(mpz_srcptr *)(puVar6 + -0xc),\n                        *(mpz_srcptr *)(puVar6 + -8));\n    *(__mpz_struct **)(puVar6 + -8) = local_40[0];\n    *(__mpz_struct **)(puVar6 + -0xc) = p_Var1;\n    *(__mpz_struct **)(puVar6 + -0x10) = p_Var1;\n    *(undefined4 *)(puVar6 + -0x14) = 0x350c5;\n    __gmpz_divexact_gcd(*(mpz_ptr *)(puVar6 + -0x10),*(mpz_srcptr *)(puVar6 + -0xc),\n                        *(mpz_srcptr *)(puVar6 + -8));\n  }\n  if (__tmp_marker != (tmp_reentrant_t *)0x0) {\n    *(tmp_reentrant_t **)(puVar6 + -0x10) = __tmp_marker;\n    *(undefined4 *)(puVar6 + -0x14) = 0x35121;\n    __gmp_tmp_reentrant_free(*(tmp_reentrant_t **)(puVar6 + -0x10));\n  }\n  if (iVar2 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return;\n  }\n                    /* WARNING: Subroutine does not return */\n  *(undefined4 *)(puVar6 + -4) = 0x3513a;\n  __stack_chk_fail_local();\n}\n\n" comment comment (function_definition "void __gmpq_canonicalize(__mpq_struct *op)\n\n{\n  __mpz_struct *p_Var1;\n  int iVar2;\n  int iVar3;\n  uint uVar4;\n  int iVar5;\n  undefined1 *puVar6;\n  int in_GS_OFFSET;\n  undefined1 auStack_4c [12];\n  __mpz_struct *local_40 [4];\n  tmp_reentrant_t *__tmp_marker;\n  mpz_t gcd;\n  \n  iVar2 = *(int *)(in_GS_OFFSET + 0x14);\n  iVar5 = (op->_mp_den)._mp_size;\n  if (iVar5 < 0) {\n    iVar5 = -iVar5;\n    (op->_mp_den)._mp_size = iVar5;\n    uVar4 = -(op->_mp_num)._mp_size;\n    (op->_mp_num)._mp_size = uVar4;\n  }\n  else {\n    if (iVar5 == 0) {\n                    /* WARNING: Subroutine does not return */\n      __gmp_divide_by_zero();\n    }\n    uVar4 = (op->_mp_num)._mp_size;\n  }\n  __tmp_marker = (tmp_reentrant_t *)0x0;\n  iVar3 = (uVar4 ^ (int)uVar4 >> 0x1f) - ((int)uVar4 >> 0x1f);\n  if (iVar3 < iVar5) {\n    iVar3 = iVar5;\n  }\n  gcd[0]._mp_alloc = iVar3 + 1;\n  uVar4 = (iVar3 + 1) * 4;\n  if (uVar4 < 0x7f01) {\n    iVar5 = -(uVar4 + 0x1b & 0xfffffff0);\n    puVar6 = auStack_4c + iVar5;\n    gcd[0]._mp_d = (mp_limb_t *)((int)local_40 + iVar5);\n  }\n  else {\n    gcd[0]._mp_d = (mp_limb_t *)__gmp_tmp_reentrant_alloc(&__tmp_marker,uVar4);\n    puVar6 = auStack_4c;\n  }\n  p_Var1 = &op->_mp_den;\n  *(__mpz_struct **)(puVar6 + -8) = p_Var1;\n  *(__mpq_struct **)(puVar6 + -0xc) = op;\n  *(__mpz_struct **)(puVar6 + -0x10) = gcd;\n  local_40[0] = gcd;\n  *(undefined4 *)(puVar6 + -0x14) = 0x35095;\n  __gmpz_gcd(*(mpz_ptr *)(puVar6 + -0x10),*(mpz_srcptr *)(puVar6 + -0xc),\n             *(mpz_srcptr *)(puVar6 + -8));\n  if ((gcd[0]._mp_size != 1) || (*gcd[0]._mp_d != 1)) {\n    *(__mpz_struct **)(puVar6 + -8) = local_40[0];\n    *(__mpq_struct **)(puVar6 + -0xc) = op;\n    *(__mpq_struct **)(puVar6 + -0x10) = op;\n    *(undefined4 *)(puVar6 + -0x14) = 0x350b7;\n    __gmpz_divexact_gcd(*(mpz_ptr *)(puVar6 + -0x10),*(mpz_srcptr *)(puVar6 + -0xc),\n                        *(mpz_srcptr *)(puVar6 + -8));\n    *(__mpz_struct **)(puVar6 + -8) = local_40[0];\n    *(__mpz_struct **)(puVar6 + -0xc) = p_Var1;\n    *(__mpz_struct **)(puVar6 + -0x10) = p_Var1;\n    *(undefined4 *)(puVar6 + -0x14) = 0x350c5;\n    __gmpz_divexact_gcd(*(mpz_ptr *)(puVar6 + -0x10),*(mpz_srcptr *)(puVar6 + -0xc),\n                        *(mpz_srcptr *)(puVar6 + -8));\n  }\n  if (__tmp_marker != (tmp_reentrant_t *)0x0) {\n    *(tmp_reentrant_t **)(puVar6 + -0x10) = __tmp_marker;\n    *(undefined4 *)(puVar6 + -0x14) = 0x35121;\n    __gmp_tmp_reentrant_free(*(tmp_reentrant_t **)(puVar6 + -0x10));\n  }\n  if (iVar2 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return;\n  }\n                    /* WARNING: Subroutine does not return */\n  *(undefined4 *)(puVar6 + -4) = 0x3513a;\n  __stack_chk_fail_local();\n}" primitive_type (function_declarator "__gmpq_canonicalize(__mpq_struct *op)" identifier (parameter_list "(__mpq_struct *op)" ( (parameter_declaration "__mpq_struct *op" type_identifier (pointer_declarator "*op" * identifier)) ))) (compound_statement "{\n  __mpz_struct *p_Var1;\n  int iVar2;\n  int iVar3;\n  uint uVar4;\n  int iVar5;\n  undefined1 *puVar6;\n  int in_GS_OFFSET;\n  undefined1 auStack_4c [12];\n  __mpz_struct *local_40 [4];\n  tmp_reentrant_t *__tmp_marker;\n  mpz_t gcd;\n  \n  iVar2 = *(int *)(in_GS_OFFSET + 0x14);\n  iVar5 = (op->_mp_den)._mp_size;\n  if (iVar5 < 0) {\n    iVar5 = -iVar5;\n    (op->_mp_den)._mp_size = iVar5;\n    uVar4 = -(op->_mp_num)._mp_size;\n    (op->_mp_num)._mp_size = uVar4;\n  }\n  else {\n    if (iVar5 == 0) {\n                    /* WARNING: Subroutine does not return */\n      __gmp_divide_by_zero();\n    }\n    uVar4 = (op->_mp_num)._mp_size;\n  }\n  __tmp_marker = (tmp_reentrant_t *)0x0;\n  iVar3 = (uVar4 ^ (int)uVar4 >> 0x1f) - ((int)uVar4 >> 0x1f);\n  if (iVar3 < iVar5) {\n    iVar3 = iVar5;\n  }\n  gcd[0]._mp_alloc = iVar3 + 1;\n  uVar4 = (iVar3 + 1) * 4;\n  if (uVar4 < 0x7f01) {\n    iVar5 = -(uVar4 + 0x1b & 0xfffffff0);\n    puVar6 = auStack_4c + iVar5;\n    gcd[0]._mp_d = (mp_limb_t *)((int)local_40 + iVar5);\n  }\n  else {\n    gcd[0]._mp_d = (mp_limb_t *)__gmp_tmp_reentrant_alloc(&__tmp_marker,uVar4);\n    puVar6 = auStack_4c;\n  }\n  p_Var1 = &op->_mp_den;\n  *(__mpz_struct **)(puVar6 + -8) = p_Var1;\n  *(__mpq_struct **)(puVar6 + -0xc) = op;\n  *(__mpz_struct **)(puVar6 + -0x10) = gcd;\n  local_40[0] = gcd;\n  *(undefined4 *)(puVar6 + -0x14) = 0x35095;\n  __gmpz_gcd(*(mpz_ptr *)(puVar6 + -0x10),*(mpz_srcptr *)(puVar6 + -0xc),\n             *(mpz_srcptr *)(puVar6 + -8));\n  if ((gcd[0]._mp_size != 1) || (*gcd[0]._mp_d != 1)) {\n    *(__mpz_struct **)(puVar6 + -8) = local_40[0];\n    *(__mpq_struct **)(puVar6 + -0xc) = op;\n    *(__mpq_struct **)(puVar6 + -0x10) = op;\n    *(undefined4 *)(puVar6 + -0x14) = 0x350b7;\n    __gmpz_divexact_gcd(*(mpz_ptr *)(puVar6 + -0x10),*(mpz_srcptr *)(puVar6 + -0xc),\n                        *(mpz_srcptr *)(puVar6 + -8));\n    *(__mpz_struct **)(puVar6 + -8) = local_40[0];\n    *(__mpz_struct **)(puVar6 + -0xc) = p_Var1;\n    *(__mpz_struct **)(puVar6 + -0x10) = p_Var1;\n    *(undefined4 *)(puVar6 + -0x14) = 0x350c5;\n    __gmpz_divexact_gcd(*(mpz_ptr *)(puVar6 + -0x10),*(mpz_srcptr *)(puVar6 + -0xc),\n                        *(mpz_srcptr *)(puVar6 + -8));\n  }\n  if (__tmp_marker != (tmp_reentrant_t *)0x0) {\n    *(tmp_reentrant_t **)(puVar6 + -0x10) = __tmp_marker;\n    *(undefined4 *)(puVar6 + -0x14) = 0x35121;\n    __gmp_tmp_reentrant_free(*(tmp_reentrant_t **)(puVar6 + -0x10));\n  }\n  if (iVar2 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return;\n  }\n                    /* WARNING: Subroutine does not return */\n  *(undefined4 *)(puVar6 + -4) = 0x3513a;\n  __stack_chk_fail_local();\n}" { (declaration "__mpz_struct *p_Var1;" type_identifier (pointer_declarator "*p_Var1" * identifier) ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "uint uVar4;" type_identifier identifier ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "undefined1 *puVar6;" type_identifier (pointer_declarator "*puVar6" * identifier) ;) (declaration "int in_GS_OFFSET;" primitive_type identifier ;) (declaration "undefined1 auStack_4c [12];" type_identifier (array_declarator "auStack_4c [12]" identifier [ number_literal ]) ;) (declaration "__mpz_struct *local_40 [4];" type_identifier (pointer_declarator "*local_40 [4]" * (array_declarator "local_40 [4]" identifier [ number_literal ])) ;) (declaration "tmp_reentrant_t *__tmp_marker;" type_identifier (pointer_declarator "*__tmp_marker" * identifier) ;) (declaration "mpz_t gcd;" type_identifier identifier ;) (expression_statement "iVar2 = *(int *)(in_GS_OFFSET + 0x14);" (assignment_expression "iVar2 = *(int *)(in_GS_OFFSET + 0x14)" identifier = (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) ;) (expression_statement "iVar5 = (op->_mp_den)._mp_size;" (assignment_expression "iVar5 = (op->_mp_den)._mp_size" identifier = (field_expression "(op->_mp_den)._mp_size" (parenthesized_expression "(op->_mp_den)" ( (field_expression "op->_mp_den" identifier -> field_identifier) )) . field_identifier)) ;) (if_statement "if (iVar5 < 0) {\n    iVar5 = -iVar5;\n    (op->_mp_den)._mp_size = iVar5;\n    uVar4 = -(op->_mp_num)._mp_size;\n    (op->_mp_num)._mp_size = uVar4;\n  }\n  else {\n    if (iVar5 == 0) {\n                    /* WARNING: Subroutine does not return */\n      __gmp_divide_by_zero();\n    }\n    uVar4 = (op->_mp_num)._mp_size;\n  }" if (parenthesized_expression "(iVar5 < 0)" ( (binary_expression "iVar5 < 0" identifier < number_literal) )) (compound_statement "{\n    iVar5 = -iVar5;\n    (op->_mp_den)._mp_size = iVar5;\n    uVar4 = -(op->_mp_num)._mp_size;\n    (op->_mp_num)._mp_size = uVar4;\n  }" { (expression_statement "iVar5 = -iVar5;" (assignment_expression "iVar5 = -iVar5" identifier = (unary_expression "-iVar5" - identifier)) ;) (expression_statement "(op->_mp_den)._mp_size = iVar5;" (assignment_expression "(op->_mp_den)._mp_size = iVar5" (field_expression "(op->_mp_den)._mp_size" (parenthesized_expression "(op->_mp_den)" ( (field_expression "op->_mp_den" identifier -> field_identifier) )) . field_identifier) = identifier) ;) (expression_statement "uVar4 = -(op->_mp_num)._mp_size;" (assignment_expression "uVar4 = -(op->_mp_num)._mp_size" identifier = (unary_expression "-(op->_mp_num)._mp_size" - (field_expression "(op->_mp_num)._mp_size" (parenthesized_expression "(op->_mp_num)" ( (field_expression "op->_mp_num" identifier -> field_identifier) )) . field_identifier))) ;) (expression_statement "(op->_mp_num)._mp_size = uVar4;" (assignment_expression "(op->_mp_num)._mp_size = uVar4" (field_expression "(op->_mp_num)._mp_size" (parenthesized_expression "(op->_mp_num)" ( (field_expression "op->_mp_num" identifier -> field_identifier) )) . field_identifier) = identifier) ;) }) (else_clause "else {\n    if (iVar5 == 0) {\n                    /* WARNING: Subroutine does not return */\n      __gmp_divide_by_zero();\n    }\n    uVar4 = (op->_mp_num)._mp_size;\n  }" else (compound_statement "{\n    if (iVar5 == 0) {\n                    /* WARNING: Subroutine does not return */\n      __gmp_divide_by_zero();\n    }\n    uVar4 = (op->_mp_num)._mp_size;\n  }" { (if_statement "if (iVar5 == 0) {\n                    /* WARNING: Subroutine does not return */\n      __gmp_divide_by_zero();\n    }" if (parenthesized_expression "(iVar5 == 0)" ( (binary_expression "iVar5 == 0" identifier == number_literal) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n      __gmp_divide_by_zero();\n    }" { comment (expression_statement "__gmp_divide_by_zero();" (call_expression "__gmp_divide_by_zero()" identifier (argument_list "()" ( ))) ;) })) (expression_statement "uVar4 = (op->_mp_num)._mp_size;" (assignment_expression "uVar4 = (op->_mp_num)._mp_size" identifier = (field_expression "(op->_mp_num)._mp_size" (parenthesized_expression "(op->_mp_num)" ( (field_expression "op->_mp_num" identifier -> field_identifier) )) . field_identifier)) ;) }))) (expression_statement "__tmp_marker = (tmp_reentrant_t *)0x0;" (assignment_expression "__tmp_marker = (tmp_reentrant_t *)0x0" identifier = (cast_expression "(tmp_reentrant_t *)0x0" ( (type_descriptor "tmp_reentrant_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "iVar3 = (uVar4 ^ (int)uVar4 >> 0x1f) - ((int)uVar4 >> 0x1f);" (assignment_expression "iVar3 = (uVar4 ^ (int)uVar4 >> 0x1f) - ((int)uVar4 >> 0x1f)" identifier = (binary_expression "(uVar4 ^ (int)uVar4 >> 0x1f) - ((int)uVar4 >> 0x1f)" (parenthesized_expression "(uVar4 ^ (int)uVar4 >> 0x1f)" ( (binary_expression "uVar4 ^ (int)uVar4 >> 0x1f" identifier ^ (binary_expression "(int)uVar4 >> 0x1f" (cast_expression "(int)uVar4" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal)) )) - (parenthesized_expression "((int)uVar4 >> 0x1f)" ( (binary_expression "(int)uVar4 >> 0x1f" (cast_expression "(int)uVar4" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal) )))) ;) (if_statement "if (iVar3 < iVar5) {\n    iVar3 = iVar5;\n  }" if (parenthesized_expression "(iVar3 < iVar5)" ( (binary_expression "iVar3 < iVar5" identifier < identifier) )) (compound_statement "{\n    iVar3 = iVar5;\n  }" { (expression_statement "iVar3 = iVar5;" (assignment_expression "iVar3 = iVar5" identifier = identifier) ;) })) (expression_statement "gcd[0]._mp_alloc = iVar3 + 1;" (assignment_expression "gcd[0]._mp_alloc = iVar3 + 1" (field_expression "gcd[0]._mp_alloc" (subscript_expression "gcd[0]" identifier [ number_literal ]) . field_identifier) = (binary_expression "iVar3 + 1" identifier + number_literal)) ;) (expression_statement "uVar4 = (iVar3 + 1) * 4;" (assignment_expression "uVar4 = (iVar3 + 1) * 4" identifier = (binary_expression "(iVar3 + 1) * 4" (parenthesized_expression "(iVar3 + 1)" ( (binary_expression "iVar3 + 1" identifier + number_literal) )) * number_literal)) ;) (if_statement "if (uVar4 < 0x7f01) {\n    iVar5 = -(uVar4 + 0x1b & 0xfffffff0);\n    puVar6 = auStack_4c + iVar5;\n    gcd[0]._mp_d = (mp_limb_t *)((int)local_40 + iVar5);\n  }\n  else {\n    gcd[0]._mp_d = (mp_limb_t *)__gmp_tmp_reentrant_alloc(&__tmp_marker,uVar4);\n    puVar6 = auStack_4c;\n  }" if (parenthesized_expression "(uVar4 < 0x7f01)" ( (binary_expression "uVar4 < 0x7f01" identifier < number_literal) )) (compound_statement "{\n    iVar5 = -(uVar4 + 0x1b & 0xfffffff0);\n    puVar6 = auStack_4c + iVar5;\n    gcd[0]._mp_d = (mp_limb_t *)((int)local_40 + iVar5);\n  }" { (expression_statement "iVar5 = -(uVar4 + 0x1b & 0xfffffff0);" (assignment_expression "iVar5 = -(uVar4 + 0x1b & 0xfffffff0)" identifier = (unary_expression "-(uVar4 + 0x1b & 0xfffffff0)" - (parenthesized_expression "(uVar4 + 0x1b & 0xfffffff0)" ( (binary_expression "uVar4 + 0x1b & 0xfffffff0" (binary_expression "uVar4 + 0x1b" identifier + number_literal) & number_literal) )))) ;) (expression_statement "puVar6 = auStack_4c + iVar5;" (assignment_expression "puVar6 = auStack_4c + iVar5" identifier = (binary_expression "auStack_4c + iVar5" identifier + identifier)) ;) (expression_statement "gcd[0]._mp_d = (mp_limb_t *)((int)local_40 + iVar5);" (assignment_expression "gcd[0]._mp_d = (mp_limb_t *)((int)local_40 + iVar5)" (field_expression "gcd[0]._mp_d" (subscript_expression "gcd[0]" identifier [ number_literal ]) . field_identifier) = (cast_expression "(mp_limb_t *)((int)local_40 + iVar5)" ( (type_descriptor "mp_limb_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_40 + iVar5)" ( (binary_expression "(int)local_40 + iVar5" (cast_expression "(int)local_40" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) ;) }) (else_clause "else {\n    gcd[0]._mp_d = (mp_limb_t *)__gmp_tmp_reentrant_alloc(&__tmp_marker,uVar4);\n    puVar6 = auStack_4c;\n  }" else (compound_statement "{\n    gcd[0]._mp_d = (mp_limb_t *)__gmp_tmp_reentrant_alloc(&__tmp_marker,uVar4);\n    puVar6 = auStack_4c;\n  }" { (expression_statement "gcd[0]._mp_d = (mp_limb_t *)__gmp_tmp_reentrant_alloc(&__tmp_marker,uVar4);" (assignment_expression "gcd[0]._mp_d = (mp_limb_t *)__gmp_tmp_reentrant_alloc(&__tmp_marker,uVar4)" (field_expression "gcd[0]._mp_d" (subscript_expression "gcd[0]" identifier [ number_literal ]) . field_identifier) = (cast_expression "(mp_limb_t *)__gmp_tmp_reentrant_alloc(&__tmp_marker,uVar4)" ( (type_descriptor "mp_limb_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "__gmp_tmp_reentrant_alloc(&__tmp_marker,uVar4)" identifier (argument_list "(&__tmp_marker,uVar4)" ( (pointer_expression "&__tmp_marker" & identifier) , identifier ))))) ;) (expression_statement "puVar6 = auStack_4c;" (assignment_expression "puVar6 = auStack_4c" identifier = identifier) ;) }))) (expression_statement "p_Var1 = &op->_mp_den;" (assignment_expression "p_Var1 = &op->_mp_den" identifier = (pointer_expression "&op->_mp_den" & (field_expression "op->_mp_den" identifier -> field_identifier))) ;) (expression_statement "*(__mpz_struct **)(puVar6 + -8) = p_Var1;" (assignment_expression "*(__mpz_struct **)(puVar6 + -8) = p_Var1" (pointer_expression "*(__mpz_struct **)(puVar6 + -8)" * (cast_expression "(__mpz_struct **)(puVar6 + -8)" ( (type_descriptor "__mpz_struct **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar6 + -8)" ( (binary_expression "puVar6 + -8" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(__mpq_struct **)(puVar6 + -0xc) = op;" (assignment_expression "*(__mpq_struct **)(puVar6 + -0xc) = op" (pointer_expression "*(__mpq_struct **)(puVar6 + -0xc)" * (cast_expression "(__mpq_struct **)(puVar6 + -0xc)" ( (type_descriptor "__mpq_struct **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar6 + -0xc)" ( (binary_expression "puVar6 + -0xc" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(__mpz_struct **)(puVar6 + -0x10) = gcd;" (assignment_expression "*(__mpz_struct **)(puVar6 + -0x10) = gcd" (pointer_expression "*(__mpz_struct **)(puVar6 + -0x10)" * (cast_expression "(__mpz_struct **)(puVar6 + -0x10)" ( (type_descriptor "__mpz_struct **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar6 + -0x10)" ( (binary_expression "puVar6 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "local_40[0] = gcd;" (assignment_expression "local_40[0] = gcd" (subscript_expression "local_40[0]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*(undefined4 *)(puVar6 + -0x14) = 0x35095;" (assignment_expression "*(undefined4 *)(puVar6 + -0x14) = 0x35095" (pointer_expression "*(undefined4 *)(puVar6 + -0x14)" * (cast_expression "(undefined4 *)(puVar6 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar6 + -0x14)" ( (binary_expression "puVar6 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "__gmpz_gcd(*(mpz_ptr *)(puVar6 + -0x10),*(mpz_srcptr *)(puVar6 + -0xc),\n             *(mpz_srcptr *)(puVar6 + -8));" (call_expression "__gmpz_gcd(*(mpz_ptr *)(puVar6 + -0x10),*(mpz_srcptr *)(puVar6 + -0xc),\n             *(mpz_srcptr *)(puVar6 + -8))" identifier (argument_list "(*(mpz_ptr *)(puVar6 + -0x10),*(mpz_srcptr *)(puVar6 + -0xc),\n             *(mpz_srcptr *)(puVar6 + -8))" ( (pointer_expression "*(mpz_ptr *)(puVar6 + -0x10)" * (cast_expression "(mpz_ptr *)(puVar6 + -0x10)" ( (type_descriptor "mpz_ptr *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar6 + -0x10)" ( (binary_expression "puVar6 + -0x10" identifier + number_literal) )))) , (pointer_expression "*(mpz_srcptr *)(puVar6 + -0xc)" * (cast_expression "(mpz_srcptr *)(puVar6 + -0xc)" ( (type_descriptor "mpz_srcptr *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar6 + -0xc)" ( (binary_expression "puVar6 + -0xc" identifier + number_literal) )))) , (pointer_expression "*(mpz_srcptr *)(puVar6 + -8)" * (cast_expression "(mpz_srcptr *)(puVar6 + -8)" ( (type_descriptor "mpz_srcptr *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar6 + -8)" ( (binary_expression "puVar6 + -8" identifier + number_literal) )))) ))) ;) (if_statement "if ((gcd[0]._mp_size != 1) || (*gcd[0]._mp_d != 1)) {\n    *(__mpz_struct **)(puVar6 + -8) = local_40[0];\n    *(__mpq_struct **)(puVar6 + -0xc) = op;\n    *(__mpq_struct **)(puVar6 + -0x10) = op;\n    *(undefined4 *)(puVar6 + -0x14) = 0x350b7;\n    __gmpz_divexact_gcd(*(mpz_ptr *)(puVar6 + -0x10),*(mpz_srcptr *)(puVar6 + -0xc),\n                        *(mpz_srcptr *)(puVar6 + -8));\n    *(__mpz_struct **)(puVar6 + -8) = local_40[0];\n    *(__mpz_struct **)(puVar6 + -0xc) = p_Var1;\n    *(__mpz_struct **)(puVar6 + -0x10) = p_Var1;\n    *(undefined4 *)(puVar6 + -0x14) = 0x350c5;\n    __gmpz_divexact_gcd(*(mpz_ptr *)(puVar6 + -0x10),*(mpz_srcptr *)(puVar6 + -0xc),\n                        *(mpz_srcptr *)(puVar6 + -8));\n  }" if (parenthesized_expression "((gcd[0]._mp_size != 1) || (*gcd[0]._mp_d != 1))" ( (binary_expression "(gcd[0]._mp_size != 1) || (*gcd[0]._mp_d != 1)" (parenthesized_expression "(gcd[0]._mp_size != 1)" ( (binary_expression "gcd[0]._mp_size != 1" (field_expression "gcd[0]._mp_size" (subscript_expression "gcd[0]" identifier [ number_literal ]) . field_identifier) != number_literal) )) || (parenthesized_expression "(*gcd[0]._mp_d != 1)" ( (binary_expression "*gcd[0]._mp_d != 1" (pointer_expression "*gcd[0]._mp_d" * (field_expression "gcd[0]._mp_d" (subscript_expression "gcd[0]" identifier [ number_literal ]) . field_identifier)) != number_literal) ))) )) (compound_statement "{\n    *(__mpz_struct **)(puVar6 + -8) = local_40[0];\n    *(__mpq_struct **)(puVar6 + -0xc) = op;\n    *(__mpq_struct **)(puVar6 + -0x10) = op;\n    *(undefined4 *)(puVar6 + -0x14) = 0x350b7;\n    __gmpz_divexact_gcd(*(mpz_ptr *)(puVar6 + -0x10),*(mpz_srcptr *)(puVar6 + -0xc),\n                        *(mpz_srcptr *)(puVar6 + -8));\n    *(__mpz_struct **)(puVar6 + -8) = local_40[0];\n    *(__mpz_struct **)(puVar6 + -0xc) = p_Var1;\n    *(__mpz_struct **)(puVar6 + -0x10) = p_Var1;\n    *(undefined4 *)(puVar6 + -0x14) = 0x350c5;\n    __gmpz_divexact_gcd(*(mpz_ptr *)(puVar6 + -0x10),*(mpz_srcptr *)(puVar6 + -0xc),\n                        *(mpz_srcptr *)(puVar6 + -8));\n  }" { (expression_statement "*(__mpz_struct **)(puVar6 + -8) = local_40[0];" (assignment_expression "*(__mpz_struct **)(puVar6 + -8) = local_40[0]" (pointer_expression "*(__mpz_struct **)(puVar6 + -8)" * (cast_expression "(__mpz_struct **)(puVar6 + -8)" ( (type_descriptor "__mpz_struct **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar6 + -8)" ( (binary_expression "puVar6 + -8" identifier + number_literal) )))) = (subscript_expression "local_40[0]" identifier [ number_literal ])) ;) (expression_statement "*(__mpq_struct **)(puVar6 + -0xc) = op;" (assignment_expression "*(__mpq_struct **)(puVar6 + -0xc) = op" (pointer_expression "*(__mpq_struct **)(puVar6 + -0xc)" * (cast_expression "(__mpq_struct **)(puVar6 + -0xc)" ( (type_descriptor "__mpq_struct **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar6 + -0xc)" ( (binary_expression "puVar6 + -0xc" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(__mpq_struct **)(puVar6 + -0x10) = op;" (assignment_expression "*(__mpq_struct **)(puVar6 + -0x10) = op" (pointer_expression "*(__mpq_struct **)(puVar6 + -0x10)" * (cast_expression "(__mpq_struct **)(puVar6 + -0x10)" ( (type_descriptor "__mpq_struct **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar6 + -0x10)" ( (binary_expression "puVar6 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar6 + -0x14) = 0x350b7;" (assignment_expression "*(undefined4 *)(puVar6 + -0x14) = 0x350b7" (pointer_expression "*(undefined4 *)(puVar6 + -0x14)" * (cast_expression "(undefined4 *)(puVar6 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar6 + -0x14)" ( (binary_expression "puVar6 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "__gmpz_divexact_gcd(*(mpz_ptr *)(puVar6 + -0x10),*(mpz_srcptr *)(puVar6 + -0xc),\n                        *(mpz_srcptr *)(puVar6 + -8));" (call_expression "__gmpz_divexact_gcd(*(mpz_ptr *)(puVar6 + -0x10),*(mpz_srcptr *)(puVar6 + -0xc),\n                        *(mpz_srcptr *)(puVar6 + -8))" identifier (argument_list "(*(mpz_ptr *)(puVar6 + -0x10),*(mpz_srcptr *)(puVar6 + -0xc),\n                        *(mpz_srcptr *)(puVar6 + -8))" ( (pointer_expression "*(mpz_ptr *)(puVar6 + -0x10)" * (cast_expression "(mpz_ptr *)(puVar6 + -0x10)" ( (type_descriptor "mpz_ptr *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar6 + -0x10)" ( (binary_expression "puVar6 + -0x10" identifier + number_literal) )))) , (pointer_expression "*(mpz_srcptr *)(puVar6 + -0xc)" * (cast_expression "(mpz_srcptr *)(puVar6 + -0xc)" ( (type_descriptor "mpz_srcptr *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar6 + -0xc)" ( (binary_expression "puVar6 + -0xc" identifier + number_literal) )))) , (pointer_expression "*(mpz_srcptr *)(puVar6 + -8)" * (cast_expression "(mpz_srcptr *)(puVar6 + -8)" ( (type_descriptor "mpz_srcptr *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar6 + -8)" ( (binary_expression "puVar6 + -8" identifier + number_literal) )))) ))) ;) (expression_statement "*(__mpz_struct **)(puVar6 + -8) = local_40[0];" (assignment_expression "*(__mpz_struct **)(puVar6 + -8) = local_40[0]" (pointer_expression "*(__mpz_struct **)(puVar6 + -8)" * (cast_expression "(__mpz_struct **)(puVar6 + -8)" ( (type_descriptor "__mpz_struct **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar6 + -8)" ( (binary_expression "puVar6 + -8" identifier + number_literal) )))) = (subscript_expression "local_40[0]" identifier [ number_literal ])) ;) (expression_statement "*(__mpz_struct **)(puVar6 + -0xc) = p_Var1;" (assignment_expression "*(__mpz_struct **)(puVar6 + -0xc) = p_Var1" (pointer_expression "*(__mpz_struct **)(puVar6 + -0xc)" * (cast_expression "(__mpz_struct **)(puVar6 + -0xc)" ( (type_descriptor "__mpz_struct **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar6 + -0xc)" ( (binary_expression "puVar6 + -0xc" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(__mpz_struct **)(puVar6 + -0x10) = p_Var1;" (assignment_expression "*(__mpz_struct **)(puVar6 + -0x10) = p_Var1" (pointer_expression "*(__mpz_struct **)(puVar6 + -0x10)" * (cast_expression "(__mpz_struct **)(puVar6 + -0x10)" ( (type_descriptor "__mpz_struct **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar6 + -0x10)" ( (binary_expression "puVar6 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar6 + -0x14) = 0x350c5;" (assignment_expression "*(undefined4 *)(puVar6 + -0x14) = 0x350c5" (pointer_expression "*(undefined4 *)(puVar6 + -0x14)" * (cast_expression "(undefined4 *)(puVar6 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar6 + -0x14)" ( (binary_expression "puVar6 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "__gmpz_divexact_gcd(*(mpz_ptr *)(puVar6 + -0x10),*(mpz_srcptr *)(puVar6 + -0xc),\n                        *(mpz_srcptr *)(puVar6 + -8));" (call_expression "__gmpz_divexact_gcd(*(mpz_ptr *)(puVar6 + -0x10),*(mpz_srcptr *)(puVar6 + -0xc),\n                        *(mpz_srcptr *)(puVar6 + -8))" identifier (argument_list "(*(mpz_ptr *)(puVar6 + -0x10),*(mpz_srcptr *)(puVar6 + -0xc),\n                        *(mpz_srcptr *)(puVar6 + -8))" ( (pointer_expression "*(mpz_ptr *)(puVar6 + -0x10)" * (cast_expression "(mpz_ptr *)(puVar6 + -0x10)" ( (type_descriptor "mpz_ptr *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar6 + -0x10)" ( (binary_expression "puVar6 + -0x10" identifier + number_literal) )))) , (pointer_expression "*(mpz_srcptr *)(puVar6 + -0xc)" * (cast_expression "(mpz_srcptr *)(puVar6 + -0xc)" ( (type_descriptor "mpz_srcptr *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar6 + -0xc)" ( (binary_expression "puVar6 + -0xc" identifier + number_literal) )))) , (pointer_expression "*(mpz_srcptr *)(puVar6 + -8)" * (cast_expression "(mpz_srcptr *)(puVar6 + -8)" ( (type_descriptor "mpz_srcptr *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar6 + -8)" ( (binary_expression "puVar6 + -8" identifier + number_literal) )))) ))) ;) })) (if_statement "if (__tmp_marker != (tmp_reentrant_t *)0x0) {\n    *(tmp_reentrant_t **)(puVar6 + -0x10) = __tmp_marker;\n    *(undefined4 *)(puVar6 + -0x14) = 0x35121;\n    __gmp_tmp_reentrant_free(*(tmp_reentrant_t **)(puVar6 + -0x10));\n  }" if (parenthesized_expression "(__tmp_marker != (tmp_reentrant_t *)0x0)" ( (binary_expression "__tmp_marker != (tmp_reentrant_t *)0x0" identifier != (cast_expression "(tmp_reentrant_t *)0x0" ( (type_descriptor "tmp_reentrant_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    *(tmp_reentrant_t **)(puVar6 + -0x10) = __tmp_marker;\n    *(undefined4 *)(puVar6 + -0x14) = 0x35121;\n    __gmp_tmp_reentrant_free(*(tmp_reentrant_t **)(puVar6 + -0x10));\n  }" { (expression_statement "*(tmp_reentrant_t **)(puVar6 + -0x10) = __tmp_marker;" (assignment_expression "*(tmp_reentrant_t **)(puVar6 + -0x10) = __tmp_marker" (pointer_expression "*(tmp_reentrant_t **)(puVar6 + -0x10)" * (cast_expression "(tmp_reentrant_t **)(puVar6 + -0x10)" ( (type_descriptor "tmp_reentrant_t **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar6 + -0x10)" ( (binary_expression "puVar6 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar6 + -0x14) = 0x35121;" (assignment_expression "*(undefined4 *)(puVar6 + -0x14) = 0x35121" (pointer_expression "*(undefined4 *)(puVar6 + -0x14)" * (cast_expression "(undefined4 *)(puVar6 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar6 + -0x14)" ( (binary_expression "puVar6 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "__gmp_tmp_reentrant_free(*(tmp_reentrant_t **)(puVar6 + -0x10));" (call_expression "__gmp_tmp_reentrant_free(*(tmp_reentrant_t **)(puVar6 + -0x10))" identifier (argument_list "(*(tmp_reentrant_t **)(puVar6 + -0x10))" ( (pointer_expression "*(tmp_reentrant_t **)(puVar6 + -0x10)" * (cast_expression "(tmp_reentrant_t **)(puVar6 + -0x10)" ( (type_descriptor "tmp_reentrant_t **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar6 + -0x10)" ( (binary_expression "puVar6 + -0x10" identifier + number_literal) )))) ))) ;) })) (if_statement "if (iVar2 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return;\n  }" if (parenthesized_expression "(iVar2 == *(int *)(in_GS_OFFSET + 0x14))" ( (binary_expression "iVar2 == *(int *)(in_GS_OFFSET + 0x14)" identifier == (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) )) (compound_statement "{\n    return;\n  }" { (return_statement "return;" return ;) })) comment (expression_statement "*(undefined4 *)(puVar6 + -4) = 0x3513a;" (assignment_expression "*(undefined4 *)(puVar6 + -4) = 0x3513a" (pointer_expression "*(undefined4 *)(puVar6 + -4)" * (cast_expression "(undefined4 *)(puVar6 + -4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar6 + -4)" ( (binary_expression "puVar6 + -4" identifier + number_literal) )))) = number_literal) ;) (expression_statement "__stack_chk_fail_local();" (call_expression "__stack_chk_fail_local()" identifier (argument_list "()" ( ))) ;) })))
(translation_unit "void __gmpq_canonicalize(void)\n\n{\n  int iVar1;\n  undefined4 uVar2;\n  int iVar3;\n  uint uVar4;\n  undefined1 *puVar5;\n  int iVar6;\n  undefined1 *puVar7;\n  undefined1 *puVar8;\n  int in_GS_OFFSET;\n  undefined1 auStack_50 [60];\n  undefined4 uStack_14;\n  \n  puVar8 = &stack0xfffffffc;\n  uStack_14 = 0x3501b;\n  entry();\n  iVar1 = *(int *)(puVar8 + 8);\n  *(undefined4 *)(puVar8 + -0x1c) = *(undefined4 *)(in_GS_OFFSET + 0x14);\n  iVar6 = *(int *)(iVar1 + 0x10);\n  if (iVar6 < 0) {\n    iVar6 = -iVar6;\n    *(int *)(iVar1 + 0x10) = iVar6;\n    uVar4 = -*(int *)(iVar1 + 4);\n    *(uint *)(iVar1 + 4) = uVar4;\n  }\n  else {\n    if (iVar6 == 0) {\n                    \n      __gmp_divide_by_zero();\n    }\n    uVar4 = *(uint *)(iVar1 + 4);\n  }\n  *(undefined4 *)(puVar8 + -0x2c) = 0;\n  iVar3 = (uVar4 ^ (int)uVar4 >> 0x1f) - ((int)uVar4 >> 0x1f);\n  if (iVar3 < iVar6) {\n    iVar3 = iVar6;\n  }\n  *(int *)(puVar8 + -0x28) = iVar3 + 1;\n  uVar4 = (iVar3 + 1) * 4;\n  if (uVar4 < 0x7f01) {\n    iVar6 = -(uVar4 + 0x1b & 0xfffffff0);\n    puVar7 = auStack_50 + iVar6;\n    puVar5 = auStack_50 + iVar6;\n  }\n  else {\n    puVar5 = (undefined1 *)__gmp_tmp_reentrant_alloc(puVar8 + -0x2c,uVar4);\n    puVar7 = auStack_50;\n  }\n  *(undefined1 **)(puVar8 + -0x20) = puVar5;\n  iVar6 = iVar1 + 0xc;\n  *(int *)(puVar7 + -8) = iVar6;\n  *(int *)(puVar7 + -0xc) = iVar1;\n  *(undefined1 **)(puVar7 + -0x10) = puVar8 + -0x28;\n  *(undefined1 **)(puVar8 + -0x3c) = puVar8 + -0x28;\n  *(undefined4 *)(puVar7 + -0x14) = 0x35095;\n  __gmpz_gcd();\n  uVar2 = *(undefined4 *)(puVar8 + -0x3c);\n  if ((*(int *)(puVar8 + -0x24) != 1) || (**(int **)(puVar8 + -0x20) != 1)) {\n    *(undefined4 *)(puVar8 + -0x3c) = uVar2;\n    *(undefined4 *)(puVar7 + -8) = uVar2;\n    *(int *)(puVar7 + -0xc) = iVar1;\n    *(int *)(puVar7 + -0x10) = iVar1;\n    *(undefined4 *)(puVar7 + -0x14) = 0x350b7;\n    __gmpz_divexact_gcd();\n    *(undefined4 *)(puVar7 + -8) = *(undefined4 *)(puVar8 + -0x3c);\n    *(int *)(puVar7 + -0xc) = iVar6;\n    *(int *)(puVar7 + -0x10) = iVar6;\n    *(undefined4 *)(puVar7 + -0x14) = 0x350c5;\n    __gmpz_divexact_gcd();\n  }\n  if (*(int *)(puVar8 + -0x2c) != 0) {\n    *(int *)(puVar7 + -0x10) = *(int *)(puVar8 + -0x2c);\n    *(undefined4 *)(puVar7 + -0x14) = 0x35121;\n    __gmp_tmp_reentrant_free();\n  }\n  if (*(int *)(puVar8 + -0x1c) == *(int *)(in_GS_OFFSET + 0x14)) {\n    return;\n  }\n                    \n  *(undefined4 *)(puVar7 + -4) = 0x3513a;\n  FUN_0007ebe0();\n}\n\n" (function_definition "void __gmpq_canonicalize(void)\n\n{\n  int iVar1;\n  undefined4 uVar2;\n  int iVar3;\n  uint uVar4;\n  undefined1 *puVar5;\n  int iVar6;\n  undefined1 *puVar7;\n  undefined1 *puVar8;\n  int in_GS_OFFSET;\n  undefined1 auStack_50 [60];\n  undefined4 uStack_14;\n  \n  puVar8 = &stack0xfffffffc;\n  uStack_14 = 0x3501b;\n  entry();\n  iVar1 = *(int *)(puVar8 + 8);\n  *(undefined4 *)(puVar8 + -0x1c) = *(undefined4 *)(in_GS_OFFSET + 0x14);\n  iVar6 = *(int *)(iVar1 + 0x10);\n  if (iVar6 < 0) {\n    iVar6 = -iVar6;\n    *(int *)(iVar1 + 0x10) = iVar6;\n    uVar4 = -*(int *)(iVar1 + 4);\n    *(uint *)(iVar1 + 4) = uVar4;\n  }\n  else {\n    if (iVar6 == 0) {\n                    \n      __gmp_divide_by_zero();\n    }\n    uVar4 = *(uint *)(iVar1 + 4);\n  }\n  *(undefined4 *)(puVar8 + -0x2c) = 0;\n  iVar3 = (uVar4 ^ (int)uVar4 >> 0x1f) - ((int)uVar4 >> 0x1f);\n  if (iVar3 < iVar6) {\n    iVar3 = iVar6;\n  }\n  *(int *)(puVar8 + -0x28) = iVar3 + 1;\n  uVar4 = (iVar3 + 1) * 4;\n  if (uVar4 < 0x7f01) {\n    iVar6 = -(uVar4 + 0x1b & 0xfffffff0);\n    puVar7 = auStack_50 + iVar6;\n    puVar5 = auStack_50 + iVar6;\n  }\n  else {\n    puVar5 = (undefined1 *)__gmp_tmp_reentrant_alloc(puVar8 + -0x2c,uVar4);\n    puVar7 = auStack_50;\n  }\n  *(undefined1 **)(puVar8 + -0x20) = puVar5;\n  iVar6 = iVar1 + 0xc;\n  *(int *)(puVar7 + -8) = iVar6;\n  *(int *)(puVar7 + -0xc) = iVar1;\n  *(undefined1 **)(puVar7 + -0x10) = puVar8 + -0x28;\n  *(undefined1 **)(puVar8 + -0x3c) = puVar8 + -0x28;\n  *(undefined4 *)(puVar7 + -0x14) = 0x35095;\n  __gmpz_gcd();\n  uVar2 = *(undefined4 *)(puVar8 + -0x3c);\n  if ((*(int *)(puVar8 + -0x24) != 1) || (**(int **)(puVar8 + -0x20) != 1)) {\n    *(undefined4 *)(puVar8 + -0x3c) = uVar2;\n    *(undefined4 *)(puVar7 + -8) = uVar2;\n    *(int *)(puVar7 + -0xc) = iVar1;\n    *(int *)(puVar7 + -0x10) = iVar1;\n    *(undefined4 *)(puVar7 + -0x14) = 0x350b7;\n    __gmpz_divexact_gcd();\n    *(undefined4 *)(puVar7 + -8) = *(undefined4 *)(puVar8 + -0x3c);\n    *(int *)(puVar7 + -0xc) = iVar6;\n    *(int *)(puVar7 + -0x10) = iVar6;\n    *(undefined4 *)(puVar7 + -0x14) = 0x350c5;\n    __gmpz_divexact_gcd();\n  }\n  if (*(int *)(puVar8 + -0x2c) != 0) {\n    *(int *)(puVar7 + -0x10) = *(int *)(puVar8 + -0x2c);\n    *(undefined4 *)(puVar7 + -0x14) = 0x35121;\n    __gmp_tmp_reentrant_free();\n  }\n  if (*(int *)(puVar8 + -0x1c) == *(int *)(in_GS_OFFSET + 0x14)) {\n    return;\n  }\n                    \n  *(undefined4 *)(puVar7 + -4) = 0x3513a;\n  FUN_0007ebe0();\n}" primitive_type (function_declarator "__gmpq_canonicalize(void)" identifier (parameter_list "(void)" ( (parameter_declaration "void" primitive_type) ))) (compound_statement "{\n  int iVar1;\n  undefined4 uVar2;\n  int iVar3;\n  uint uVar4;\n  undefined1 *puVar5;\n  int iVar6;\n  undefined1 *puVar7;\n  undefined1 *puVar8;\n  int in_GS_OFFSET;\n  undefined1 auStack_50 [60];\n  undefined4 uStack_14;\n  \n  puVar8 = &stack0xfffffffc;\n  uStack_14 = 0x3501b;\n  entry();\n  iVar1 = *(int *)(puVar8 + 8);\n  *(undefined4 *)(puVar8 + -0x1c) = *(undefined4 *)(in_GS_OFFSET + 0x14);\n  iVar6 = *(int *)(iVar1 + 0x10);\n  if (iVar6 < 0) {\n    iVar6 = -iVar6;\n    *(int *)(iVar1 + 0x10) = iVar6;\n    uVar4 = -*(int *)(iVar1 + 4);\n    *(uint *)(iVar1 + 4) = uVar4;\n  }\n  else {\n    if (iVar6 == 0) {\n                    \n      __gmp_divide_by_zero();\n    }\n    uVar4 = *(uint *)(iVar1 + 4);\n  }\n  *(undefined4 *)(puVar8 + -0x2c) = 0;\n  iVar3 = (uVar4 ^ (int)uVar4 >> 0x1f) - ((int)uVar4 >> 0x1f);\n  if (iVar3 < iVar6) {\n    iVar3 = iVar6;\n  }\n  *(int *)(puVar8 + -0x28) = iVar3 + 1;\n  uVar4 = (iVar3 + 1) * 4;\n  if (uVar4 < 0x7f01) {\n    iVar6 = -(uVar4 + 0x1b & 0xfffffff0);\n    puVar7 = auStack_50 + iVar6;\n    puVar5 = auStack_50 + iVar6;\n  }\n  else {\n    puVar5 = (undefined1 *)__gmp_tmp_reentrant_alloc(puVar8 + -0x2c,uVar4);\n    puVar7 = auStack_50;\n  }\n  *(undefined1 **)(puVar8 + -0x20) = puVar5;\n  iVar6 = iVar1 + 0xc;\n  *(int *)(puVar7 + -8) = iVar6;\n  *(int *)(puVar7 + -0xc) = iVar1;\n  *(undefined1 **)(puVar7 + -0x10) = puVar8 + -0x28;\n  *(undefined1 **)(puVar8 + -0x3c) = puVar8 + -0x28;\n  *(undefined4 *)(puVar7 + -0x14) = 0x35095;\n  __gmpz_gcd();\n  uVar2 = *(undefined4 *)(puVar8 + -0x3c);\n  if ((*(int *)(puVar8 + -0x24) != 1) || (**(int **)(puVar8 + -0x20) != 1)) {\n    *(undefined4 *)(puVar8 + -0x3c) = uVar2;\n    *(undefined4 *)(puVar7 + -8) = uVar2;\n    *(int *)(puVar7 + -0xc) = iVar1;\n    *(int *)(puVar7 + -0x10) = iVar1;\n    *(undefined4 *)(puVar7 + -0x14) = 0x350b7;\n    __gmpz_divexact_gcd();\n    *(undefined4 *)(puVar7 + -8) = *(undefined4 *)(puVar8 + -0x3c);\n    *(int *)(puVar7 + -0xc) = iVar6;\n    *(int *)(puVar7 + -0x10) = iVar6;\n    *(undefined4 *)(puVar7 + -0x14) = 0x350c5;\n    __gmpz_divexact_gcd();\n  }\n  if (*(int *)(puVar8 + -0x2c) != 0) {\n    *(int *)(puVar7 + -0x10) = *(int *)(puVar8 + -0x2c);\n    *(undefined4 *)(puVar7 + -0x14) = 0x35121;\n    __gmp_tmp_reentrant_free();\n  }\n  if (*(int *)(puVar8 + -0x1c) == *(int *)(in_GS_OFFSET + 0x14)) {\n    return;\n  }\n                    \n  *(undefined4 *)(puVar7 + -4) = 0x3513a;\n  FUN_0007ebe0();\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "undefined4 uVar2;" type_identifier identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "uint uVar4;" type_identifier identifier ;) (declaration "undefined1 *puVar5;" type_identifier (pointer_declarator "*puVar5" * identifier) ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "undefined1 *puVar7;" type_identifier (pointer_declarator "*puVar7" * identifier) ;) (declaration "undefined1 *puVar8;" type_identifier (pointer_declarator "*puVar8" * identifier) ;) (declaration "int in_GS_OFFSET;" primitive_type identifier ;) (declaration "undefined1 auStack_50 [60];" type_identifier (array_declarator "auStack_50 [60]" identifier [ number_literal ]) ;) (declaration "undefined4 uStack_14;" type_identifier identifier ;) (expression_statement "puVar8 = &stack0xfffffffc;" (assignment_expression "puVar8 = &stack0xfffffffc" identifier = (pointer_expression "&stack0xfffffffc" & identifier)) ;) (expression_statement "uStack_14 = 0x3501b;" (assignment_expression "uStack_14 = 0x3501b" identifier = number_literal) ;) (expression_statement "entry();" (call_expression "entry()" identifier (argument_list "()" ( ))) ;) (expression_statement "iVar1 = *(int *)(puVar8 + 8);" (assignment_expression "iVar1 = *(int *)(puVar8 + 8)" identifier = (pointer_expression "*(int *)(puVar8 + 8)" * (cast_expression "(int *)(puVar8 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar8 + 8)" ( (binary_expression "puVar8 + 8" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar8 + -0x1c) = *(undefined4 *)(in_GS_OFFSET + 0x14);" (assignment_expression "*(undefined4 *)(puVar8 + -0x1c) = *(undefined4 *)(in_GS_OFFSET + 0x14)" (pointer_expression "*(undefined4 *)(puVar8 + -0x1c)" * (cast_expression "(undefined4 *)(puVar8 + -0x1c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar8 + -0x1c)" ( (binary_expression "puVar8 + -0x1c" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(in_GS_OFFSET + 0x14)" * (cast_expression "(undefined4 *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) ;) (expression_statement "iVar6 = *(int *)(iVar1 + 0x10);" (assignment_expression "iVar6 = *(int *)(iVar1 + 0x10)" identifier = (pointer_expression "*(int *)(iVar1 + 0x10)" * (cast_expression "(int *)(iVar1 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x10)" ( (binary_expression "iVar1 + 0x10" identifier + number_literal) ))))) ;) (if_statement "if (iVar6 < 0) {\n    iVar6 = -iVar6;\n    *(int *)(iVar1 + 0x10) = iVar6;\n    uVar4 = -*(int *)(iVar1 + 4);\n    *(uint *)(iVar1 + 4) = uVar4;\n  }\n  else {\n    if (iVar6 == 0) {\n                    \n      __gmp_divide_by_zero();\n    }\n    uVar4 = *(uint *)(iVar1 + 4);\n  }" if (parenthesized_expression "(iVar6 < 0)" ( (binary_expression "iVar6 < 0" identifier < number_literal) )) (compound_statement "{\n    iVar6 = -iVar6;\n    *(int *)(iVar1 + 0x10) = iVar6;\n    uVar4 = -*(int *)(iVar1 + 4);\n    *(uint *)(iVar1 + 4) = uVar4;\n  }" { (expression_statement "iVar6 = -iVar6;" (assignment_expression "iVar6 = -iVar6" identifier = (unary_expression "-iVar6" - identifier)) ;) (expression_statement "*(int *)(iVar1 + 0x10) = iVar6;" (assignment_expression "*(int *)(iVar1 + 0x10) = iVar6" (pointer_expression "*(int *)(iVar1 + 0x10)" * (cast_expression "(int *)(iVar1 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x10)" ( (binary_expression "iVar1 + 0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "uVar4 = -*(int *)(iVar1 + 4);" (assignment_expression "uVar4 = -*(int *)(iVar1 + 4)" identifier = (unary_expression "-*(int *)(iVar1 + 4)" - (pointer_expression "*(int *)(iVar1 + 4)" * (cast_expression "(int *)(iVar1 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 4)" ( (binary_expression "iVar1 + 4" identifier + number_literal) )))))) ;) (expression_statement "*(uint *)(iVar1 + 4) = uVar4;" (assignment_expression "*(uint *)(iVar1 + 4) = uVar4" (pointer_expression "*(uint *)(iVar1 + 4)" * (cast_expression "(uint *)(iVar1 + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 4)" ( (binary_expression "iVar1 + 4" identifier + number_literal) )))) = identifier) ;) }) (else_clause "else {\n    if (iVar6 == 0) {\n                    \n      __gmp_divide_by_zero();\n    }\n    uVar4 = *(uint *)(iVar1 + 4);\n  }" else (compound_statement "{\n    if (iVar6 == 0) {\n                    \n      __gmp_divide_by_zero();\n    }\n    uVar4 = *(uint *)(iVar1 + 4);\n  }" { (if_statement "if (iVar6 == 0) {\n                    \n      __gmp_divide_by_zero();\n    }" if (parenthesized_expression "(iVar6 == 0)" ( (binary_expression "iVar6 == 0" identifier == number_literal) )) (compound_statement "{\n                    \n      __gmp_divide_by_zero();\n    }" { (expression_statement "__gmp_divide_by_zero();" (call_expression "__gmp_divide_by_zero()" identifier (argument_list "()" ( ))) ;) })) (expression_statement "uVar4 = *(uint *)(iVar1 + 4);" (assignment_expression "uVar4 = *(uint *)(iVar1 + 4)" identifier = (pointer_expression "*(uint *)(iVar1 + 4)" * (cast_expression "(uint *)(iVar1 + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 4)" ( (binary_expression "iVar1 + 4" identifier + number_literal) ))))) ;) }))) (expression_statement "*(undefined4 *)(puVar8 + -0x2c) = 0;" (assignment_expression "*(undefined4 *)(puVar8 + -0x2c) = 0" (pointer_expression "*(undefined4 *)(puVar8 + -0x2c)" * (cast_expression "(undefined4 *)(puVar8 + -0x2c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar8 + -0x2c)" ( (binary_expression "puVar8 + -0x2c" identifier + number_literal) )))) = number_literal) ;) (expression_statement "iVar3 = (uVar4 ^ (int)uVar4 >> 0x1f) - ((int)uVar4 >> 0x1f);" (assignment_expression "iVar3 = (uVar4 ^ (int)uVar4 >> 0x1f) - ((int)uVar4 >> 0x1f)" identifier = (binary_expression "(uVar4 ^ (int)uVar4 >> 0x1f) - ((int)uVar4 >> 0x1f)" (parenthesized_expression "(uVar4 ^ (int)uVar4 >> 0x1f)" ( (binary_expression "uVar4 ^ (int)uVar4 >> 0x1f" identifier ^ (binary_expression "(int)uVar4 >> 0x1f" (cast_expression "(int)uVar4" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal)) )) - (parenthesized_expression "((int)uVar4 >> 0x1f)" ( (binary_expression "(int)uVar4 >> 0x1f" (cast_expression "(int)uVar4" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal) )))) ;) (if_statement "if (iVar3 < iVar6) {\n    iVar3 = iVar6;\n  }" if (parenthesized_expression "(iVar3 < iVar6)" ( (binary_expression "iVar3 < iVar6" identifier < identifier) )) (compound_statement "{\n    iVar3 = iVar6;\n  }" { (expression_statement "iVar3 = iVar6;" (assignment_expression "iVar3 = iVar6" identifier = identifier) ;) })) (expression_statement "*(int *)(puVar8 + -0x28) = iVar3 + 1;" (assignment_expression "*(int *)(puVar8 + -0x28) = iVar3 + 1" (pointer_expression "*(int *)(puVar8 + -0x28)" * (cast_expression "(int *)(puVar8 + -0x28)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar8 + -0x28)" ( (binary_expression "puVar8 + -0x28" identifier + number_literal) )))) = (binary_expression "iVar3 + 1" identifier + number_literal)) ;) (expression_statement "uVar4 = (iVar3 + 1) * 4;" (assignment_expression "uVar4 = (iVar3 + 1) * 4" identifier = (binary_expression "(iVar3 + 1) * 4" (parenthesized_expression "(iVar3 + 1)" ( (binary_expression "iVar3 + 1" identifier + number_literal) )) * number_literal)) ;) (if_statement "if (uVar4 < 0x7f01) {\n    iVar6 = -(uVar4 + 0x1b & 0xfffffff0);\n    puVar7 = auStack_50 + iVar6;\n    puVar5 = auStack_50 + iVar6;\n  }\n  else {\n    puVar5 = (undefined1 *)__gmp_tmp_reentrant_alloc(puVar8 + -0x2c,uVar4);\n    puVar7 = auStack_50;\n  }" if (parenthesized_expression "(uVar4 < 0x7f01)" ( (binary_expression "uVar4 < 0x7f01" identifier < number_literal) )) (compound_statement "{\n    iVar6 = -(uVar4 + 0x1b & 0xfffffff0);\n    puVar7 = auStack_50 + iVar6;\n    puVar5 = auStack_50 + iVar6;\n  }" { (expression_statement "iVar6 = -(uVar4 + 0x1b & 0xfffffff0);" (assignment_expression "iVar6 = -(uVar4 + 0x1b & 0xfffffff0)" identifier = (unary_expression "-(uVar4 + 0x1b & 0xfffffff0)" - (parenthesized_expression "(uVar4 + 0x1b & 0xfffffff0)" ( (binary_expression "uVar4 + 0x1b & 0xfffffff0" (binary_expression "uVar4 + 0x1b" identifier + number_literal) & number_literal) )))) ;) (expression_statement "puVar7 = auStack_50 + iVar6;" (assignment_expression "puVar7 = auStack_50 + iVar6" identifier = (binary_expression "auStack_50 + iVar6" identifier + identifier)) ;) (expression_statement "puVar5 = auStack_50 + iVar6;" (assignment_expression "puVar5 = auStack_50 + iVar6" identifier = (binary_expression "auStack_50 + iVar6" identifier + identifier)) ;) }) (else_clause "else {\n    puVar5 = (undefined1 *)__gmp_tmp_reentrant_alloc(puVar8 + -0x2c,uVar4);\n    puVar7 = auStack_50;\n  }" else (compound_statement "{\n    puVar5 = (undefined1 *)__gmp_tmp_reentrant_alloc(puVar8 + -0x2c,uVar4);\n    puVar7 = auStack_50;\n  }" { (expression_statement "puVar5 = (undefined1 *)__gmp_tmp_reentrant_alloc(puVar8 + -0x2c,uVar4);" (assignment_expression "puVar5 = (undefined1 *)__gmp_tmp_reentrant_alloc(puVar8 + -0x2c,uVar4)" identifier = (cast_expression "(undefined1 *)__gmp_tmp_reentrant_alloc(puVar8 + -0x2c,uVar4)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "__gmp_tmp_reentrant_alloc(puVar8 + -0x2c,uVar4)" identifier (argument_list "(puVar8 + -0x2c,uVar4)" ( (binary_expression "puVar8 + -0x2c" identifier + number_literal) , identifier ))))) ;) (expression_statement "puVar7 = auStack_50;" (assignment_expression "puVar7 = auStack_50" identifier = identifier) ;) }))) (expression_statement "*(undefined1 **)(puVar8 + -0x20) = puVar5;" (assignment_expression "*(undefined1 **)(puVar8 + -0x20) = puVar5" (pointer_expression "*(undefined1 **)(puVar8 + -0x20)" * (cast_expression "(undefined1 **)(puVar8 + -0x20)" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar8 + -0x20)" ( (binary_expression "puVar8 + -0x20" identifier + number_literal) )))) = identifier) ;) (expression_statement "iVar6 = iVar1 + 0xc;" (assignment_expression "iVar6 = iVar1 + 0xc" identifier = (binary_expression "iVar1 + 0xc" identifier + number_literal)) ;) (expression_statement "*(int *)(puVar7 + -8) = iVar6;" (assignment_expression "*(int *)(puVar7 + -8) = iVar6" (pointer_expression "*(int *)(puVar7 + -8)" * (cast_expression "(int *)(puVar7 + -8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar7 + -8)" ( (binary_expression "puVar7 + -8" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(puVar7 + -0xc) = iVar1;" (assignment_expression "*(int *)(puVar7 + -0xc) = iVar1" (pointer_expression "*(int *)(puVar7 + -0xc)" * (cast_expression "(int *)(puVar7 + -0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar7 + -0xc)" ( (binary_expression "puVar7 + -0xc" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined1 **)(puVar7 + -0x10) = puVar8 + -0x28;" (assignment_expression "*(undefined1 **)(puVar7 + -0x10) = puVar8 + -0x28" (pointer_expression "*(undefined1 **)(puVar7 + -0x10)" * (cast_expression "(undefined1 **)(puVar7 + -0x10)" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar7 + -0x10)" ( (binary_expression "puVar7 + -0x10" identifier + number_literal) )))) = (binary_expression "puVar8 + -0x28" identifier + number_literal)) ;) (expression_statement "*(undefined1 **)(puVar8 + -0x3c) = puVar8 + -0x28;" (assignment_expression "*(undefined1 **)(puVar8 + -0x3c) = puVar8 + -0x28" (pointer_expression "*(undefined1 **)(puVar8 + -0x3c)" * (cast_expression "(undefined1 **)(puVar8 + -0x3c)" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar8 + -0x3c)" ( (binary_expression "puVar8 + -0x3c" identifier + number_literal) )))) = (binary_expression "puVar8 + -0x28" identifier + number_literal)) ;) (expression_statement "*(undefined4 *)(puVar7 + -0x14) = 0x35095;" (assignment_expression "*(undefined4 *)(puVar7 + -0x14) = 0x35095" (pointer_expression "*(undefined4 *)(puVar7 + -0x14)" * (cast_expression "(undefined4 *)(puVar7 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar7 + -0x14)" ( (binary_expression "puVar7 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "__gmpz_gcd();" (call_expression "__gmpz_gcd()" identifier (argument_list "()" ( ))) ;) (expression_statement "uVar2 = *(undefined4 *)(puVar8 + -0x3c);" (assignment_expression "uVar2 = *(undefined4 *)(puVar8 + -0x3c)" identifier = (pointer_expression "*(undefined4 *)(puVar8 + -0x3c)" * (cast_expression "(undefined4 *)(puVar8 + -0x3c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar8 + -0x3c)" ( (binary_expression "puVar8 + -0x3c" identifier + number_literal) ))))) ;) (if_statement "if ((*(int *)(puVar8 + -0x24) != 1) || (**(int **)(puVar8 + -0x20) != 1)) {\n    *(undefined4 *)(puVar8 + -0x3c) = uVar2;\n    *(undefined4 *)(puVar7 + -8) = uVar2;\n    *(int *)(puVar7 + -0xc) = iVar1;\n    *(int *)(puVar7 + -0x10) = iVar1;\n    *(undefined4 *)(puVar7 + -0x14) = 0x350b7;\n    __gmpz_divexact_gcd();\n    *(undefined4 *)(puVar7 + -8) = *(undefined4 *)(puVar8 + -0x3c);\n    *(int *)(puVar7 + -0xc) = iVar6;\n    *(int *)(puVar7 + -0x10) = iVar6;\n    *(undefined4 *)(puVar7 + -0x14) = 0x350c5;\n    __gmpz_divexact_gcd();\n  }" if (parenthesized_expression "((*(int *)(puVar8 + -0x24) != 1) || (**(int **)(puVar8 + -0x20) != 1))" ( (binary_expression "(*(int *)(puVar8 + -0x24) != 1) || (**(int **)(puVar8 + -0x20) != 1)" (parenthesized_expression "(*(int *)(puVar8 + -0x24) != 1)" ( (binary_expression "*(int *)(puVar8 + -0x24) != 1" (pointer_expression "*(int *)(puVar8 + -0x24)" * (cast_expression "(int *)(puVar8 + -0x24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar8 + -0x24)" ( (binary_expression "puVar8 + -0x24" identifier + number_literal) )))) != number_literal) )) || (parenthesized_expression "(**(int **)(puVar8 + -0x20) != 1)" ( (binary_expression "**(int **)(puVar8 + -0x20) != 1" (pointer_expression "**(int **)(puVar8 + -0x20)" * (pointer_expression "*(int **)(puVar8 + -0x20)" * (cast_expression "(int **)(puVar8 + -0x20)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar8 + -0x20)" ( (binary_expression "puVar8 + -0x20" identifier + number_literal) ))))) != number_literal) ))) )) (compound_statement "{\n    *(undefined4 *)(puVar8 + -0x3c) = uVar2;\n    *(undefined4 *)(puVar7 + -8) = uVar2;\n    *(int *)(puVar7 + -0xc) = iVar1;\n    *(int *)(puVar7 + -0x10) = iVar1;\n    *(undefined4 *)(puVar7 + -0x14) = 0x350b7;\n    __gmpz_divexact_gcd();\n    *(undefined4 *)(puVar7 + -8) = *(undefined4 *)(puVar8 + -0x3c);\n    *(int *)(puVar7 + -0xc) = iVar6;\n    *(int *)(puVar7 + -0x10) = iVar6;\n    *(undefined4 *)(puVar7 + -0x14) = 0x350c5;\n    __gmpz_divexact_gcd();\n  }" { (expression_statement "*(undefined4 *)(puVar8 + -0x3c) = uVar2;" (assignment_expression "*(undefined4 *)(puVar8 + -0x3c) = uVar2" (pointer_expression "*(undefined4 *)(puVar8 + -0x3c)" * (cast_expression "(undefined4 *)(puVar8 + -0x3c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar8 + -0x3c)" ( (binary_expression "puVar8 + -0x3c" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar7 + -8) = uVar2;" (assignment_expression "*(undefined4 *)(puVar7 + -8) = uVar2" (pointer_expression "*(undefined4 *)(puVar7 + -8)" * (cast_expression "(undefined4 *)(puVar7 + -8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar7 + -8)" ( (binary_expression "puVar7 + -8" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(puVar7 + -0xc) = iVar1;" (assignment_expression "*(int *)(puVar7 + -0xc) = iVar1" (pointer_expression "*(int *)(puVar7 + -0xc)" * (cast_expression "(int *)(puVar7 + -0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar7 + -0xc)" ( (binary_expression "puVar7 + -0xc" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(puVar7 + -0x10) = iVar1;" (assignment_expression "*(int *)(puVar7 + -0x10) = iVar1" (pointer_expression "*(int *)(puVar7 + -0x10)" * (cast_expression "(int *)(puVar7 + -0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar7 + -0x10)" ( (binary_expression "puVar7 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar7 + -0x14) = 0x350b7;" (assignment_expression "*(undefined4 *)(puVar7 + -0x14) = 0x350b7" (pointer_expression "*(undefined4 *)(puVar7 + -0x14)" * (cast_expression "(undefined4 *)(puVar7 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar7 + -0x14)" ( (binary_expression "puVar7 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "__gmpz_divexact_gcd();" (call_expression "__gmpz_divexact_gcd()" identifier (argument_list "()" ( ))) ;) (expression_statement "*(undefined4 *)(puVar7 + -8) = *(undefined4 *)(puVar8 + -0x3c);" (assignment_expression "*(undefined4 *)(puVar7 + -8) = *(undefined4 *)(puVar8 + -0x3c)" (pointer_expression "*(undefined4 *)(puVar7 + -8)" * (cast_expression "(undefined4 *)(puVar7 + -8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar7 + -8)" ( (binary_expression "puVar7 + -8" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(puVar8 + -0x3c)" * (cast_expression "(undefined4 *)(puVar8 + -0x3c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar8 + -0x3c)" ( (binary_expression "puVar8 + -0x3c" identifier + number_literal) ))))) ;) (expression_statement "*(int *)(puVar7 + -0xc) = iVar6;" (assignment_expression "*(int *)(puVar7 + -0xc) = iVar6" (pointer_expression "*(int *)(puVar7 + -0xc)" * (cast_expression "(int *)(puVar7 + -0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar7 + -0xc)" ( (binary_expression "puVar7 + -0xc" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(puVar7 + -0x10) = iVar6;" (assignment_expression "*(int *)(puVar7 + -0x10) = iVar6" (pointer_expression "*(int *)(puVar7 + -0x10)" * (cast_expression "(int *)(puVar7 + -0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar7 + -0x10)" ( (binary_expression "puVar7 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar7 + -0x14) = 0x350c5;" (assignment_expression "*(undefined4 *)(puVar7 + -0x14) = 0x350c5" (pointer_expression "*(undefined4 *)(puVar7 + -0x14)" * (cast_expression "(undefined4 *)(puVar7 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar7 + -0x14)" ( (binary_expression "puVar7 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "__gmpz_divexact_gcd();" (call_expression "__gmpz_divexact_gcd()" identifier (argument_list "()" ( ))) ;) })) (if_statement "if (*(int *)(puVar8 + -0x2c) != 0) {\n    *(int *)(puVar7 + -0x10) = *(int *)(puVar8 + -0x2c);\n    *(undefined4 *)(puVar7 + -0x14) = 0x35121;\n    __gmp_tmp_reentrant_free();\n  }" if (parenthesized_expression "(*(int *)(puVar8 + -0x2c) != 0)" ( (binary_expression "*(int *)(puVar8 + -0x2c) != 0" (pointer_expression "*(int *)(puVar8 + -0x2c)" * (cast_expression "(int *)(puVar8 + -0x2c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar8 + -0x2c)" ( (binary_expression "puVar8 + -0x2c" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n    *(int *)(puVar7 + -0x10) = *(int *)(puVar8 + -0x2c);\n    *(undefined4 *)(puVar7 + -0x14) = 0x35121;\n    __gmp_tmp_reentrant_free();\n  }" { (expression_statement "*(int *)(puVar7 + -0x10) = *(int *)(puVar8 + -0x2c);" (assignment_expression "*(int *)(puVar7 + -0x10) = *(int *)(puVar8 + -0x2c)" (pointer_expression "*(int *)(puVar7 + -0x10)" * (cast_expression "(int *)(puVar7 + -0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar7 + -0x10)" ( (binary_expression "puVar7 + -0x10" identifier + number_literal) )))) = (pointer_expression "*(int *)(puVar8 + -0x2c)" * (cast_expression "(int *)(puVar8 + -0x2c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar8 + -0x2c)" ( (binary_expression "puVar8 + -0x2c" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar7 + -0x14) = 0x35121;" (assignment_expression "*(undefined4 *)(puVar7 + -0x14) = 0x35121" (pointer_expression "*(undefined4 *)(puVar7 + -0x14)" * (cast_expression "(undefined4 *)(puVar7 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar7 + -0x14)" ( (binary_expression "puVar7 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "__gmp_tmp_reentrant_free();" (call_expression "__gmp_tmp_reentrant_free()" identifier (argument_list "()" ( ))) ;) })) (if_statement "if (*(int *)(puVar8 + -0x1c) == *(int *)(in_GS_OFFSET + 0x14)) {\n    return;\n  }" if (parenthesized_expression "(*(int *)(puVar8 + -0x1c) == *(int *)(in_GS_OFFSET + 0x14))" ( (binary_expression "*(int *)(puVar8 + -0x1c) == *(int *)(in_GS_OFFSET + 0x14)" (pointer_expression "*(int *)(puVar8 + -0x1c)" * (cast_expression "(int *)(puVar8 + -0x1c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar8 + -0x1c)" ( (binary_expression "puVar8 + -0x1c" identifier + number_literal) )))) == (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) )) (compound_statement "{\n    return;\n  }" { (return_statement "return;" return ;) })) (expression_statement "*(undefined4 *)(puVar7 + -4) = 0x3513a;" (assignment_expression "*(undefined4 *)(puVar7 + -4) = 0x3513a" (pointer_expression "*(undefined4 *)(puVar7 + -4)" * (cast_expression "(undefined4 *)(puVar7 + -4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar7 + -4)" ( (binary_expression "puVar7 + -4" identifier + number_literal) )))) = number_literal) ;) (expression_statement "FUN_0007ebe0();" (call_expression "FUN_0007ebe0()" identifier (argument_list "()" ( ))) ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = (pointer_expression & IDENT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (unary_expression - IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression IDENT = (unary_expression - (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) }))) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression IDENT ^ (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT)) )) - (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) })) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression IDENT + LIT) )) * LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (unary_expression - (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) & LIT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) , IDENT ))))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }))) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != LIT) )) || (parenthesized_expression ( (binary_expression (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) != LIT) ))) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != LIT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (compound_statement { (return_statement return ;) })) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) })))
(function_definition "void __gmpq_canonicalize(void)\n\n{\n  int iVar1;\n  undefined4 uVar2;\n  int iVar3;\n  uint uVar4;\n  undefined1 *puVar5;\n  int iVar6;\n  undefined1 *puVar7;\n  undefined1 *puVar8;\n  int in_GS_OFFSET;\n  undefined1 auStack_50 [60];\n  undefined4 uStack_14;\n  \n  puVar8 = &stack0xfffffffc;\n  uStack_14 = 0x3501b;\n  entry();\n  iVar1 = *(int *)(puVar8 + 8);\n  *(undefined4 *)(puVar8 + -0x1c) = *(undefined4 *)(in_GS_OFFSET + 0x14);\n  iVar6 = *(int *)(iVar1 + 0x10);\n  if (iVar6 < 0) {\n    iVar6 = -iVar6;\n    *(int *)(iVar1 + 0x10) = iVar6;\n    uVar4 = -*(int *)(iVar1 + 4);\n    *(uint *)(iVar1 + 4) = uVar4;\n  }\n  else {\n    if (iVar6 == 0) {\n                    \n      __gmp_divide_by_zero();\n    }\n    uVar4 = *(uint *)(iVar1 + 4);\n  }\n  *(undefined4 *)(puVar8 + -0x2c) = 0;\n  iVar3 = (uVar4 ^ (int)uVar4 >> 0x1f) - ((int)uVar4 >> 0x1f);\n  if (iVar3 < iVar6) {\n    iVar3 = iVar6;\n  }\n  *(int *)(puVar8 + -0x28) = iVar3 + 1;\n  uVar4 = (iVar3 + 1) * 4;\n  if (uVar4 < 0x7f01) {\n    iVar6 = -(uVar4 + 0x1b & 0xfffffff0);\n    puVar7 = auStack_50 + iVar6;\n    puVar5 = auStack_50 + iVar6;\n  }\n  else {\n    puVar5 = (undefined1 *)__gmp_tmp_reentrant_alloc(puVar8 + -0x2c,uVar4);\n    puVar7 = auStack_50;\n  }\n  *(undefined1 **)(puVar8 + -0x20) = puVar5;\n  iVar6 = iVar1 + 0xc;\n  *(int *)(puVar7 + -8) = iVar6;\n  *(int *)(puVar7 + -0xc) = iVar1;\n  *(undefined1 **)(puVar7 + -0x10) = puVar8 + -0x28;\n  *(undefined1 **)(puVar8 + -0x3c) = puVar8 + -0x28;\n  *(undefined4 *)(puVar7 + -0x14) = 0x35095;\n  __gmpz_gcd();\n  uVar2 = *(undefined4 *)(puVar8 + -0x3c);\n  if ((*(int *)(puVar8 + -0x24) != 1) || (**(int **)(puVar8 + -0x20) != 1)) {\n    *(undefined4 *)(puVar8 + -0x3c) = uVar2;\n    *(undefined4 *)(puVar7 + -8) = uVar2;\n    *(int *)(puVar7 + -0xc) = iVar1;\n    *(int *)(puVar7 + -0x10) = iVar1;\n    *(undefined4 *)(puVar7 + -0x14) = 0x350b7;\n    __gmpz_divexact_gcd();\n    *(undefined4 *)(puVar7 + -8) = *(undefined4 *)(puVar8 + -0x3c);\n    *(int *)(puVar7 + -0xc) = iVar6;\n    *(int *)(puVar7 + -0x10) = iVar6;\n    *(undefined4 *)(puVar7 + -0x14) = 0x350c5;\n    __gmpz_divexact_gcd();\n  }\n  if (*(int *)(puVar8 + -0x2c) != 0) {\n    *(int *)(puVar7 + -0x10) = *(int *)(puVar8 + -0x2c);\n    *(undefined4 *)(puVar7 + -0x14) = 0x35121;\n    __gmp_tmp_reentrant_free();\n  }\n  if (*(int *)(puVar8 + -0x1c) == *(int *)(in_GS_OFFSET + 0x14)) {\n    return;\n  }\n                    \n  *(undefined4 *)(puVar7 + -4) = 0x3513a;\n  FUN_0007ebe0();\n}" (primitive_type "void") (function_declarator "__gmpq_canonicalize(void)" (identifier "__gmpq_canonicalize") (parameter_list "(void)" (( "(") (parameter_declaration "void" (primitive_type "void")) () ")"))) (compound_statement "{\n  int iVar1;\n  undefined4 uVar2;\n  int iVar3;\n  uint uVar4;\n  undefined1 *puVar5;\n  int iVar6;\n  undefined1 *puVar7;\n  undefined1 *puVar8;\n  int in_GS_OFFSET;\n  undefined1 auStack_50 [60];\n  undefined4 uStack_14;\n  \n  puVar8 = &stack0xfffffffc;\n  uStack_14 = 0x3501b;\n  entry();\n  iVar1 = *(int *)(puVar8 + 8);\n  *(undefined4 *)(puVar8 + -0x1c) = *(undefined4 *)(in_GS_OFFSET + 0x14);\n  iVar6 = *(int *)(iVar1 + 0x10);\n  if (iVar6 < 0) {\n    iVar6 = -iVar6;\n    *(int *)(iVar1 + 0x10) = iVar6;\n    uVar4 = -*(int *)(iVar1 + 4);\n    *(uint *)(iVar1 + 4) = uVar4;\n  }\n  else {\n    if (iVar6 == 0) {\n                    \n      __gmp_divide_by_zero();\n    }\n    uVar4 = *(uint *)(iVar1 + 4);\n  }\n  *(undefined4 *)(puVar8 + -0x2c) = 0;\n  iVar3 = (uVar4 ^ (int)uVar4 >> 0x1f) - ((int)uVar4 >> 0x1f);\n  if (iVar3 < iVar6) {\n    iVar3 = iVar6;\n  }\n  *(int *)(puVar8 + -0x28) = iVar3 + 1;\n  uVar4 = (iVar3 + 1) * 4;\n  if (uVar4 < 0x7f01) {\n    iVar6 = -(uVar4 + 0x1b & 0xfffffff0);\n    puVar7 = auStack_50 + iVar6;\n    puVar5 = auStack_50 + iVar6;\n  }\n  else {\n    puVar5 = (undefined1 *)__gmp_tmp_reentrant_alloc(puVar8 + -0x2c,uVar4);\n    puVar7 = auStack_50;\n  }\n  *(undefined1 **)(puVar8 + -0x20) = puVar5;\n  iVar6 = iVar1 + 0xc;\n  *(int *)(puVar7 + -8) = iVar6;\n  *(int *)(puVar7 + -0xc) = iVar1;\n  *(undefined1 **)(puVar7 + -0x10) = puVar8 + -0x28;\n  *(undefined1 **)(puVar8 + -0x3c) = puVar8 + -0x28;\n  *(undefined4 *)(puVar7 + -0x14) = 0x35095;\n  __gmpz_gcd();\n  uVar2 = *(undefined4 *)(puVar8 + -0x3c);\n  if ((*(int *)(puVar8 + -0x24) != 1) || (**(int **)(puVar8 + -0x20) != 1)) {\n    *(undefined4 *)(puVar8 + -0x3c) = uVar2;\n    *(undefined4 *)(puVar7 + -8) = uVar2;\n    *(int *)(puVar7 + -0xc) = iVar1;\n    *(int *)(puVar7 + -0x10) = iVar1;\n    *(undefined4 *)(puVar7 + -0x14) = 0x350b7;\n    __gmpz_divexact_gcd();\n    *(undefined4 *)(puVar7 + -8) = *(undefined4 *)(puVar8 + -0x3c);\n    *(int *)(puVar7 + -0xc) = iVar6;\n    *(int *)(puVar7 + -0x10) = iVar6;\n    *(undefined4 *)(puVar7 + -0x14) = 0x350c5;\n    __gmpz_divexact_gcd();\n  }\n  if (*(int *)(puVar8 + -0x2c) != 0) {\n    *(int *)(puVar7 + -0x10) = *(int *)(puVar8 + -0x2c);\n    *(undefined4 *)(puVar7 + -0x14) = 0x35121;\n    __gmp_tmp_reentrant_free();\n  }\n  if (*(int *)(puVar8 + -0x1c) == *(int *)(in_GS_OFFSET + 0x14)) {\n    return;\n  }\n                    \n  *(undefined4 *)(puVar7 + -4) = 0x3513a;\n  FUN_0007ebe0();\n}" ({ "{") (declaration "int iVar1;" (primitive_type "int") (identifier "iVar1") (; ";")) (declaration "undefined4 uVar2;" (type_identifier "undefined4") (identifier "uVar2") (; ";")) (declaration "int iVar3;" (primitive_type "int") (identifier "iVar3") (; ";")) (declaration "uint uVar4;" (type_identifier "uint") (identifier "uVar4") (; ";")) (declaration "undefined1 *puVar5;" (type_identifier "undefined1") (pointer_declarator "*puVar5" (* "*") (identifier "puVar5")) (; ";")) (declaration "int iVar6;" (primitive_type "int") (identifier "iVar6") (; ";")) (declaration "undefined1 *puVar7;" (type_identifier "undefined1") (pointer_declarator "*puVar7" (* "*") (identifier "puVar7")) (; ";")) (declaration "undefined1 *puVar8;" (type_identifier "undefined1") (pointer_declarator "*puVar8" (* "*") (identifier "puVar8")) (; ";")) (declaration "int in_GS_OFFSET;" (primitive_type "int") (identifier "in_GS_OFFSET") (; ";")) (declaration "undefined1 auStack_50 [60];" (type_identifier "undefined1") (array_declarator "auStack_50 [60]" (identifier "auStack_50") ([ "[") (number_literal "60") (] "]")) (; ";")) (declaration "undefined4 uStack_14;" (type_identifier "undefined4") (identifier "uStack_14") (; ";")) (expression_statement "puVar8 = &stack0xfffffffc;" (assignment_expression "puVar8 = &stack0xfffffffc" (identifier "puVar8") (= "=") (pointer_expression "&stack0xfffffffc" (& "&") (identifier "stack0xfffffffc"))) (; ";")) (expression_statement "uStack_14 = 0x3501b;" (assignment_expression "uStack_14 = 0x3501b" (identifier "uStack_14") (= "=") (number_literal "0x3501b")) (; ";")) (expression_statement "entry();" (call_expression "entry()" (identifier "entry") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "iVar1 = *(int *)(puVar8 + 8);" (assignment_expression "iVar1 = *(int *)(puVar8 + 8)" (identifier "iVar1") (= "=") (pointer_expression "*(int *)(puVar8 + 8)" (* "*") (cast_expression "(int *)(puVar8 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar8 + 8)" (( "(") (binary_expression "puVar8 + 8" (identifier "puVar8") (+ "+") (number_literal "8")) () ")"))))) (; ";")) (expression_statement "*(undefined4 *)(puVar8 + -0x1c) = *(undefined4 *)(in_GS_OFFSET + 0x14);" (assignment_expression "*(undefined4 *)(puVar8 + -0x1c) = *(undefined4 *)(in_GS_OFFSET + 0x14)" (pointer_expression "*(undefined4 *)(puVar8 + -0x1c)" (* "*") (cast_expression "(undefined4 *)(puVar8 + -0x1c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar8 + -0x1c)" (( "(") (binary_expression "puVar8 + -0x1c" (identifier "puVar8") (+ "+") (number_literal "-0x1c")) () ")")))) (= "=") (pointer_expression "*(undefined4 *)(in_GS_OFFSET + 0x14)" (* "*") (cast_expression "(undefined4 *)(in_GS_OFFSET + 0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(in_GS_OFFSET + 0x14)" (( "(") (binary_expression "in_GS_OFFSET + 0x14" (identifier "in_GS_OFFSET") (+ "+") (number_literal "0x14")) () ")"))))) (; ";")) (expression_statement "iVar6 = *(int *)(iVar1 + 0x10);" (assignment_expression "iVar6 = *(int *)(iVar1 + 0x10)" (identifier "iVar6") (= "=") (pointer_expression "*(int *)(iVar1 + 0x10)" (* "*") (cast_expression "(int *)(iVar1 + 0x10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar1 + 0x10)" (( "(") (binary_expression "iVar1 + 0x10" (identifier "iVar1") (+ "+") (number_literal "0x10")) () ")"))))) (; ";")) (if_statement "if (iVar6 < 0) {\n    iVar6 = -iVar6;\n    *(int *)(iVar1 + 0x10) = iVar6;\n    uVar4 = -*(int *)(iVar1 + 4);\n    *(uint *)(iVar1 + 4) = uVar4;\n  }\n  else {\n    if (iVar6 == 0) {\n                    \n      __gmp_divide_by_zero();\n    }\n    uVar4 = *(uint *)(iVar1 + 4);\n  }" (if "if") (parenthesized_expression "(iVar6 < 0)" (( "(") (binary_expression "iVar6 < 0" (identifier "iVar6") (< "<") (number_literal "0")) () ")")) (compound_statement "{\n    iVar6 = -iVar6;\n    *(int *)(iVar1 + 0x10) = iVar6;\n    uVar4 = -*(int *)(iVar1 + 4);\n    *(uint *)(iVar1 + 4) = uVar4;\n  }" ({ "{") (expression_statement "iVar6 = -iVar6;" (assignment_expression "iVar6 = -iVar6" (identifier "iVar6") (= "=") (unary_expression "-iVar6" (- "-") (identifier "iVar6"))) (; ";")) (expression_statement "*(int *)(iVar1 + 0x10) = iVar6;" (assignment_expression "*(int *)(iVar1 + 0x10) = iVar6" (pointer_expression "*(int *)(iVar1 + 0x10)" (* "*") (cast_expression "(int *)(iVar1 + 0x10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar1 + 0x10)" (( "(") (binary_expression "iVar1 + 0x10" (identifier "iVar1") (+ "+") (number_literal "0x10")) () ")")))) (= "=") (identifier "iVar6")) (; ";")) (expression_statement "uVar4 = -*(int *)(iVar1 + 4);" (assignment_expression "uVar4 = -*(int *)(iVar1 + 4)" (identifier "uVar4") (= "=") (unary_expression "-*(int *)(iVar1 + 4)" (- "-") (pointer_expression "*(int *)(iVar1 + 4)" (* "*") (cast_expression "(int *)(iVar1 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar1 + 4)" (( "(") (binary_expression "iVar1 + 4" (identifier "iVar1") (+ "+") (number_literal "4")) () ")")))))) (; ";")) (expression_statement "*(uint *)(iVar1 + 4) = uVar4;" (assignment_expression "*(uint *)(iVar1 + 4) = uVar4" (pointer_expression "*(uint *)(iVar1 + 4)" (* "*") (cast_expression "(uint *)(iVar1 + 4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar1 + 4)" (( "(") (binary_expression "iVar1 + 4" (identifier "iVar1") (+ "+") (number_literal "4")) () ")")))) (= "=") (identifier "uVar4")) (; ";")) (} "}")) (else_clause "else {\n    if (iVar6 == 0) {\n                    \n      __gmp_divide_by_zero();\n    }\n    uVar4 = *(uint *)(iVar1 + 4);\n  }" (else "else") (compound_statement "{\n    if (iVar6 == 0) {\n                    \n      __gmp_divide_by_zero();\n    }\n    uVar4 = *(uint *)(iVar1 + 4);\n  }" ({ "{") (if_statement "if (iVar6 == 0) {\n                    \n      __gmp_divide_by_zero();\n    }" (if "if") (parenthesized_expression "(iVar6 == 0)" (( "(") (binary_expression "iVar6 == 0" (identifier "iVar6") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                    \n      __gmp_divide_by_zero();\n    }" ({ "{") (expression_statement "__gmp_divide_by_zero();" (call_expression "__gmp_divide_by_zero()" (identifier "__gmp_divide_by_zero") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (expression_statement "uVar4 = *(uint *)(iVar1 + 4);" (assignment_expression "uVar4 = *(uint *)(iVar1 + 4)" (identifier "uVar4") (= "=") (pointer_expression "*(uint *)(iVar1 + 4)" (* "*") (cast_expression "(uint *)(iVar1 + 4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar1 + 4)" (( "(") (binary_expression "iVar1 + 4" (identifier "iVar1") (+ "+") (number_literal "4")) () ")"))))) (; ";")) (} "}")))) (expression_statement "*(undefined4 *)(puVar8 + -0x2c) = 0;" (assignment_expression "*(undefined4 *)(puVar8 + -0x2c) = 0" (pointer_expression "*(undefined4 *)(puVar8 + -0x2c)" (* "*") (cast_expression "(undefined4 *)(puVar8 + -0x2c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar8 + -0x2c)" (( "(") (binary_expression "puVar8 + -0x2c" (identifier "puVar8") (+ "+") (number_literal "-0x2c")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "iVar3 = (uVar4 ^ (int)uVar4 >> 0x1f) - ((int)uVar4 >> 0x1f);" (assignment_expression "iVar3 = (uVar4 ^ (int)uVar4 >> 0x1f) - ((int)uVar4 >> 0x1f)" (identifier "iVar3") (= "=") (binary_expression "(uVar4 ^ (int)uVar4 >> 0x1f) - ((int)uVar4 >> 0x1f)" (parenthesized_expression "(uVar4 ^ (int)uVar4 >> 0x1f)" (( "(") (binary_expression "uVar4 ^ (int)uVar4 >> 0x1f" (identifier "uVar4") (^ "^") (binary_expression "(int)uVar4 >> 0x1f" (cast_expression "(int)uVar4" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar4")) (>> ">>") (number_literal "0x1f"))) () ")")) (- "-") (parenthesized_expression "((int)uVar4 >> 0x1f)" (( "(") (binary_expression "(int)uVar4 >> 0x1f" (cast_expression "(int)uVar4" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar4")) (>> ">>") (number_literal "0x1f")) () ")")))) (; ";")) (if_statement "if (iVar3 < iVar6) {\n    iVar3 = iVar6;\n  }" (if "if") (parenthesized_expression "(iVar3 < iVar6)" (( "(") (binary_expression "iVar3 < iVar6" (identifier "iVar3") (< "<") (identifier "iVar6")) () ")")) (compound_statement "{\n    iVar3 = iVar6;\n  }" ({ "{") (expression_statement "iVar3 = iVar6;" (assignment_expression "iVar3 = iVar6" (identifier "iVar3") (= "=") (identifier "iVar6")) (; ";")) (} "}"))) (expression_statement "*(int *)(puVar8 + -0x28) = iVar3 + 1;" (assignment_expression "*(int *)(puVar8 + -0x28) = iVar3 + 1" (pointer_expression "*(int *)(puVar8 + -0x28)" (* "*") (cast_expression "(int *)(puVar8 + -0x28)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar8 + -0x28)" (( "(") (binary_expression "puVar8 + -0x28" (identifier "puVar8") (+ "+") (number_literal "-0x28")) () ")")))) (= "=") (binary_expression "iVar3 + 1" (identifier "iVar3") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "uVar4 = (iVar3 + 1) * 4;" (assignment_expression "uVar4 = (iVar3 + 1) * 4" (identifier "uVar4") (= "=") (binary_expression "(iVar3 + 1) * 4" (parenthesized_expression "(iVar3 + 1)" (( "(") (binary_expression "iVar3 + 1" (identifier "iVar3") (+ "+") (number_literal "1")) () ")")) (* "*") (number_literal "4"))) (; ";")) (if_statement "if (uVar4 < 0x7f01) {\n    iVar6 = -(uVar4 + 0x1b & 0xfffffff0);\n    puVar7 = auStack_50 + iVar6;\n    puVar5 = auStack_50 + iVar6;\n  }\n  else {\n    puVar5 = (undefined1 *)__gmp_tmp_reentrant_alloc(puVar8 + -0x2c,uVar4);\n    puVar7 = auStack_50;\n  }" (if "if") (parenthesized_expression "(uVar4 < 0x7f01)" (( "(") (binary_expression "uVar4 < 0x7f01" (identifier "uVar4") (< "<") (number_literal "0x7f01")) () ")")) (compound_statement "{\n    iVar6 = -(uVar4 + 0x1b & 0xfffffff0);\n    puVar7 = auStack_50 + iVar6;\n    puVar5 = auStack_50 + iVar6;\n  }" ({ "{") (expression_statement "iVar6 = -(uVar4 + 0x1b & 0xfffffff0);" (assignment_expression "iVar6 = -(uVar4 + 0x1b & 0xfffffff0)" (identifier "iVar6") (= "=") (unary_expression "-(uVar4 + 0x1b & 0xfffffff0)" (- "-") (parenthesized_expression "(uVar4 + 0x1b & 0xfffffff0)" (( "(") (binary_expression "uVar4 + 0x1b & 0xfffffff0" (binary_expression "uVar4 + 0x1b" (identifier "uVar4") (+ "+") (number_literal "0x1b")) (& "&") (number_literal "0xfffffff0")) () ")")))) (; ";")) (expression_statement "puVar7 = auStack_50 + iVar6;" (assignment_expression "puVar7 = auStack_50 + iVar6" (identifier "puVar7") (= "=") (binary_expression "auStack_50 + iVar6" (identifier "auStack_50") (+ "+") (identifier "iVar6"))) (; ";")) (expression_statement "puVar5 = auStack_50 + iVar6;" (assignment_expression "puVar5 = auStack_50 + iVar6" (identifier "puVar5") (= "=") (binary_expression "auStack_50 + iVar6" (identifier "auStack_50") (+ "+") (identifier "iVar6"))) (; ";")) (} "}")) (else_clause "else {\n    puVar5 = (undefined1 *)__gmp_tmp_reentrant_alloc(puVar8 + -0x2c,uVar4);\n    puVar7 = auStack_50;\n  }" (else "else") (compound_statement "{\n    puVar5 = (undefined1 *)__gmp_tmp_reentrant_alloc(puVar8 + -0x2c,uVar4);\n    puVar7 = auStack_50;\n  }" ({ "{") (expression_statement "puVar5 = (undefined1 *)__gmp_tmp_reentrant_alloc(puVar8 + -0x2c,uVar4);" (assignment_expression "puVar5 = (undefined1 *)__gmp_tmp_reentrant_alloc(puVar8 + -0x2c,uVar4)" (identifier "puVar5") (= "=") (cast_expression "(undefined1 *)__gmp_tmp_reentrant_alloc(puVar8 + -0x2c,uVar4)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "__gmp_tmp_reentrant_alloc(puVar8 + -0x2c,uVar4)" (identifier "__gmp_tmp_reentrant_alloc") (argument_list "(puVar8 + -0x2c,uVar4)" (( "(") (binary_expression "puVar8 + -0x2c" (identifier "puVar8") (+ "+") (number_literal "-0x2c")) (, ",") (identifier "uVar4") () ")"))))) (; ";")) (expression_statement "puVar7 = auStack_50;" (assignment_expression "puVar7 = auStack_50" (identifier "puVar7") (= "=") (identifier "auStack_50")) (; ";")) (} "}")))) (expression_statement "*(undefined1 **)(puVar8 + -0x20) = puVar5;" (assignment_expression "*(undefined1 **)(puVar8 + -0x20) = puVar5" (pointer_expression "*(undefined1 **)(puVar8 + -0x20)" (* "*") (cast_expression "(undefined1 **)(puVar8 + -0x20)" (( "(") (type_descriptor "undefined1 **" (type_identifier "undefined1") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar8 + -0x20)" (( "(") (binary_expression "puVar8 + -0x20" (identifier "puVar8") (+ "+") (number_literal "-0x20")) () ")")))) (= "=") (identifier "puVar5")) (; ";")) (expression_statement "iVar6 = iVar1 + 0xc;" (assignment_expression "iVar6 = iVar1 + 0xc" (identifier "iVar6") (= "=") (binary_expression "iVar1 + 0xc" (identifier "iVar1") (+ "+") (number_literal "0xc"))) (; ";")) (expression_statement "*(int *)(puVar7 + -8) = iVar6;" (assignment_expression "*(int *)(puVar7 + -8) = iVar6" (pointer_expression "*(int *)(puVar7 + -8)" (* "*") (cast_expression "(int *)(puVar7 + -8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar7 + -8)" (( "(") (binary_expression "puVar7 + -8" (identifier "puVar7") (+ "+") (number_literal "-8")) () ")")))) (= "=") (identifier "iVar6")) (; ";")) (expression_statement "*(int *)(puVar7 + -0xc) = iVar1;" (assignment_expression "*(int *)(puVar7 + -0xc) = iVar1" (pointer_expression "*(int *)(puVar7 + -0xc)" (* "*") (cast_expression "(int *)(puVar7 + -0xc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar7 + -0xc)" (( "(") (binary_expression "puVar7 + -0xc" (identifier "puVar7") (+ "+") (number_literal "-0xc")) () ")")))) (= "=") (identifier "iVar1")) (; ";")) (expression_statement "*(undefined1 **)(puVar7 + -0x10) = puVar8 + -0x28;" (assignment_expression "*(undefined1 **)(puVar7 + -0x10) = puVar8 + -0x28" (pointer_expression "*(undefined1 **)(puVar7 + -0x10)" (* "*") (cast_expression "(undefined1 **)(puVar7 + -0x10)" (( "(") (type_descriptor "undefined1 **" (type_identifier "undefined1") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar7 + -0x10)" (( "(") (binary_expression "puVar7 + -0x10" (identifier "puVar7") (+ "+") (number_literal "-0x10")) () ")")))) (= "=") (binary_expression "puVar8 + -0x28" (identifier "puVar8") (+ "+") (number_literal "-0x28"))) (; ";")) (expression_statement "*(undefined1 **)(puVar8 + -0x3c) = puVar8 + -0x28;" (assignment_expression "*(undefined1 **)(puVar8 + -0x3c) = puVar8 + -0x28" (pointer_expression "*(undefined1 **)(puVar8 + -0x3c)" (* "*") (cast_expression "(undefined1 **)(puVar8 + -0x3c)" (( "(") (type_descriptor "undefined1 **" (type_identifier "undefined1") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar8 + -0x3c)" (( "(") (binary_expression "puVar8 + -0x3c" (identifier "puVar8") (+ "+") (number_literal "-0x3c")) () ")")))) (= "=") (binary_expression "puVar8 + -0x28" (identifier "puVar8") (+ "+") (number_literal "-0x28"))) (; ";")) (expression_statement "*(undefined4 *)(puVar7 + -0x14) = 0x35095;" (assignment_expression "*(undefined4 *)(puVar7 + -0x14) = 0x35095" (pointer_expression "*(undefined4 *)(puVar7 + -0x14)" (* "*") (cast_expression "(undefined4 *)(puVar7 + -0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar7 + -0x14)" (( "(") (binary_expression "puVar7 + -0x14" (identifier "puVar7") (+ "+") (number_literal "-0x14")) () ")")))) (= "=") (number_literal "0x35095")) (; ";")) (expression_statement "__gmpz_gcd();" (call_expression "__gmpz_gcd()" (identifier "__gmpz_gcd") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "uVar2 = *(undefined4 *)(puVar8 + -0x3c);" (assignment_expression "uVar2 = *(undefined4 *)(puVar8 + -0x3c)" (identifier "uVar2") (= "=") (pointer_expression "*(undefined4 *)(puVar8 + -0x3c)" (* "*") (cast_expression "(undefined4 *)(puVar8 + -0x3c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar8 + -0x3c)" (( "(") (binary_expression "puVar8 + -0x3c" (identifier "puVar8") (+ "+") (number_literal "-0x3c")) () ")"))))) (; ";")) (if_statement "if ((*(int *)(puVar8 + -0x24) != 1) || (**(int **)(puVar8 + -0x20) != 1)) {\n    *(undefined4 *)(puVar8 + -0x3c) = uVar2;\n    *(undefined4 *)(puVar7 + -8) = uVar2;\n    *(int *)(puVar7 + -0xc) = iVar1;\n    *(int *)(puVar7 + -0x10) = iVar1;\n    *(undefined4 *)(puVar7 + -0x14) = 0x350b7;\n    __gmpz_divexact_gcd();\n    *(undefined4 *)(puVar7 + -8) = *(undefined4 *)(puVar8 + -0x3c);\n    *(int *)(puVar7 + -0xc) = iVar6;\n    *(int *)(puVar7 + -0x10) = iVar6;\n    *(undefined4 *)(puVar7 + -0x14) = 0x350c5;\n    __gmpz_divexact_gcd();\n  }" (if "if") (parenthesized_expression "((*(int *)(puVar8 + -0x24) != 1) || (**(int **)(puVar8 + -0x20) != 1))" (( "(") (binary_expression "(*(int *)(puVar8 + -0x24) != 1) || (**(int **)(puVar8 + -0x20) != 1)" (parenthesized_expression "(*(int *)(puVar8 + -0x24) != 1)" (( "(") (binary_expression "*(int *)(puVar8 + -0x24) != 1" (pointer_expression "*(int *)(puVar8 + -0x24)" (* "*") (cast_expression "(int *)(puVar8 + -0x24)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar8 + -0x24)" (( "(") (binary_expression "puVar8 + -0x24" (identifier "puVar8") (+ "+") (number_literal "-0x24")) () ")")))) (!= "!=") (number_literal "1")) () ")")) (|| "||") (parenthesized_expression "(**(int **)(puVar8 + -0x20) != 1)" (( "(") (binary_expression "**(int **)(puVar8 + -0x20) != 1" (pointer_expression "**(int **)(puVar8 + -0x20)" (* "*") (pointer_expression "*(int **)(puVar8 + -0x20)" (* "*") (cast_expression "(int **)(puVar8 + -0x20)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar8 + -0x20)" (( "(") (binary_expression "puVar8 + -0x20" (identifier "puVar8") (+ "+") (number_literal "-0x20")) () ")"))))) (!= "!=") (number_literal "1")) () ")"))) () ")")) (compound_statement "{\n    *(undefined4 *)(puVar8 + -0x3c) = uVar2;\n    *(undefined4 *)(puVar7 + -8) = uVar2;\n    *(int *)(puVar7 + -0xc) = iVar1;\n    *(int *)(puVar7 + -0x10) = iVar1;\n    *(undefined4 *)(puVar7 + -0x14) = 0x350b7;\n    __gmpz_divexact_gcd();\n    *(undefined4 *)(puVar7 + -8) = *(undefined4 *)(puVar8 + -0x3c);\n    *(int *)(puVar7 + -0xc) = iVar6;\n    *(int *)(puVar7 + -0x10) = iVar6;\n    *(undefined4 *)(puVar7 + -0x14) = 0x350c5;\n    __gmpz_divexact_gcd();\n  }" ({ "{") (expression_statement "*(undefined4 *)(puVar8 + -0x3c) = uVar2;" (assignment_expression "*(undefined4 *)(puVar8 + -0x3c) = uVar2" (pointer_expression "*(undefined4 *)(puVar8 + -0x3c)" (* "*") (cast_expression "(undefined4 *)(puVar8 + -0x3c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar8 + -0x3c)" (( "(") (binary_expression "puVar8 + -0x3c" (identifier "puVar8") (+ "+") (number_literal "-0x3c")) () ")")))) (= "=") (identifier "uVar2")) (; ";")) (expression_statement "*(undefined4 *)(puVar7 + -8) = uVar2;" (assignment_expression "*(undefined4 *)(puVar7 + -8) = uVar2" (pointer_expression "*(undefined4 *)(puVar7 + -8)" (* "*") (cast_expression "(undefined4 *)(puVar7 + -8)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar7 + -8)" (( "(") (binary_expression "puVar7 + -8" (identifier "puVar7") (+ "+") (number_literal "-8")) () ")")))) (= "=") (identifier "uVar2")) (; ";")) (expression_statement "*(int *)(puVar7 + -0xc) = iVar1;" (assignment_expression "*(int *)(puVar7 + -0xc) = iVar1" (pointer_expression "*(int *)(puVar7 + -0xc)" (* "*") (cast_expression "(int *)(puVar7 + -0xc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar7 + -0xc)" (( "(") (binary_expression "puVar7 + -0xc" (identifier "puVar7") (+ "+") (number_literal "-0xc")) () ")")))) (= "=") (identifier "iVar1")) (; ";")) (expression_statement "*(int *)(puVar7 + -0x10) = iVar1;" (assignment_expression "*(int *)(puVar7 + -0x10) = iVar1" (pointer_expression "*(int *)(puVar7 + -0x10)" (* "*") (cast_expression "(int *)(puVar7 + -0x10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar7 + -0x10)" (( "(") (binary_expression "puVar7 + -0x10" (identifier "puVar7") (+ "+") (number_literal "-0x10")) () ")")))) (= "=") (identifier "iVar1")) (; ";")) (expression_statement "*(undefined4 *)(puVar7 + -0x14) = 0x350b7;" (assignment_expression "*(undefined4 *)(puVar7 + -0x14) = 0x350b7" (pointer_expression "*(undefined4 *)(puVar7 + -0x14)" (* "*") (cast_expression "(undefined4 *)(puVar7 + -0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar7 + -0x14)" (( "(") (binary_expression "puVar7 + -0x14" (identifier "puVar7") (+ "+") (number_literal "-0x14")) () ")")))) (= "=") (number_literal "0x350b7")) (; ";")) (expression_statement "__gmpz_divexact_gcd();" (call_expression "__gmpz_divexact_gcd()" (identifier "__gmpz_divexact_gcd") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "*(undefined4 *)(puVar7 + -8) = *(undefined4 *)(puVar8 + -0x3c);" (assignment_expression "*(undefined4 *)(puVar7 + -8) = *(undefined4 *)(puVar8 + -0x3c)" (pointer_expression "*(undefined4 *)(puVar7 + -8)" (* "*") (cast_expression "(undefined4 *)(puVar7 + -8)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar7 + -8)" (( "(") (binary_expression "puVar7 + -8" (identifier "puVar7") (+ "+") (number_literal "-8")) () ")")))) (= "=") (pointer_expression "*(undefined4 *)(puVar8 + -0x3c)" (* "*") (cast_expression "(undefined4 *)(puVar8 + -0x3c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar8 + -0x3c)" (( "(") (binary_expression "puVar8 + -0x3c" (identifier "puVar8") (+ "+") (number_literal "-0x3c")) () ")"))))) (; ";")) (expression_statement "*(int *)(puVar7 + -0xc) = iVar6;" (assignment_expression "*(int *)(puVar7 + -0xc) = iVar6" (pointer_expression "*(int *)(puVar7 + -0xc)" (* "*") (cast_expression "(int *)(puVar7 + -0xc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar7 + -0xc)" (( "(") (binary_expression "puVar7 + -0xc" (identifier "puVar7") (+ "+") (number_literal "-0xc")) () ")")))) (= "=") (identifier "iVar6")) (; ";")) (expression_statement "*(int *)(puVar7 + -0x10) = iVar6;" (assignment_expression "*(int *)(puVar7 + -0x10) = iVar6" (pointer_expression "*(int *)(puVar7 + -0x10)" (* "*") (cast_expression "(int *)(puVar7 + -0x10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar7 + -0x10)" (( "(") (binary_expression "puVar7 + -0x10" (identifier "puVar7") (+ "+") (number_literal "-0x10")) () ")")))) (= "=") (identifier "iVar6")) (; ";")) (expression_statement "*(undefined4 *)(puVar7 + -0x14) = 0x350c5;" (assignment_expression "*(undefined4 *)(puVar7 + -0x14) = 0x350c5" (pointer_expression "*(undefined4 *)(puVar7 + -0x14)" (* "*") (cast_expression "(undefined4 *)(puVar7 + -0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar7 + -0x14)" (( "(") (binary_expression "puVar7 + -0x14" (identifier "puVar7") (+ "+") (number_literal "-0x14")) () ")")))) (= "=") (number_literal "0x350c5")) (; ";")) (expression_statement "__gmpz_divexact_gcd();" (call_expression "__gmpz_divexact_gcd()" (identifier "__gmpz_divexact_gcd") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (if_statement "if (*(int *)(puVar8 + -0x2c) != 0) {\n    *(int *)(puVar7 + -0x10) = *(int *)(puVar8 + -0x2c);\n    *(undefined4 *)(puVar7 + -0x14) = 0x35121;\n    __gmp_tmp_reentrant_free();\n  }" (if "if") (parenthesized_expression "(*(int *)(puVar8 + -0x2c) != 0)" (( "(") (binary_expression "*(int *)(puVar8 + -0x2c) != 0" (pointer_expression "*(int *)(puVar8 + -0x2c)" (* "*") (cast_expression "(int *)(puVar8 + -0x2c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar8 + -0x2c)" (( "(") (binary_expression "puVar8 + -0x2c" (identifier "puVar8") (+ "+") (number_literal "-0x2c")) () ")")))) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    *(int *)(puVar7 + -0x10) = *(int *)(puVar8 + -0x2c);\n    *(undefined4 *)(puVar7 + -0x14) = 0x35121;\n    __gmp_tmp_reentrant_free();\n  }" ({ "{") (expression_statement "*(int *)(puVar7 + -0x10) = *(int *)(puVar8 + -0x2c);" (assignment_expression "*(int *)(puVar7 + -0x10) = *(int *)(puVar8 + -0x2c)" (pointer_expression "*(int *)(puVar7 + -0x10)" (* "*") (cast_expression "(int *)(puVar7 + -0x10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar7 + -0x10)" (( "(") (binary_expression "puVar7 + -0x10" (identifier "puVar7") (+ "+") (number_literal "-0x10")) () ")")))) (= "=") (pointer_expression "*(int *)(puVar8 + -0x2c)" (* "*") (cast_expression "(int *)(puVar8 + -0x2c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar8 + -0x2c)" (( "(") (binary_expression "puVar8 + -0x2c" (identifier "puVar8") (+ "+") (number_literal "-0x2c")) () ")"))))) (; ";")) (expression_statement "*(undefined4 *)(puVar7 + -0x14) = 0x35121;" (assignment_expression "*(undefined4 *)(puVar7 + -0x14) = 0x35121" (pointer_expression "*(undefined4 *)(puVar7 + -0x14)" (* "*") (cast_expression "(undefined4 *)(puVar7 + -0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar7 + -0x14)" (( "(") (binary_expression "puVar7 + -0x14" (identifier "puVar7") (+ "+") (number_literal "-0x14")) () ")")))) (= "=") (number_literal "0x35121")) (; ";")) (expression_statement "__gmp_tmp_reentrant_free();" (call_expression "__gmp_tmp_reentrant_free()" (identifier "__gmp_tmp_reentrant_free") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (if_statement "if (*(int *)(puVar8 + -0x1c) == *(int *)(in_GS_OFFSET + 0x14)) {\n    return;\n  }" (if "if") (parenthesized_expression "(*(int *)(puVar8 + -0x1c) == *(int *)(in_GS_OFFSET + 0x14))" (( "(") (binary_expression "*(int *)(puVar8 + -0x1c) == *(int *)(in_GS_OFFSET + 0x14)" (pointer_expression "*(int *)(puVar8 + -0x1c)" (* "*") (cast_expression "(int *)(puVar8 + -0x1c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar8 + -0x1c)" (( "(") (binary_expression "puVar8 + -0x1c" (identifier "puVar8") (+ "+") (number_literal "-0x1c")) () ")")))) (== "==") (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" (* "*") (cast_expression "(int *)(in_GS_OFFSET + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(in_GS_OFFSET + 0x14)" (( "(") (binary_expression "in_GS_OFFSET + 0x14" (identifier "in_GS_OFFSET") (+ "+") (number_literal "0x14")) () ")"))))) () ")")) (compound_statement "{\n    return;\n  }" ({ "{") (return_statement "return;" (return "return") (; ";")) (} "}"))) (expression_statement "*(undefined4 *)(puVar7 + -4) = 0x3513a;" (assignment_expression "*(undefined4 *)(puVar7 + -4) = 0x3513a" (pointer_expression "*(undefined4 *)(puVar7 + -4)" (* "*") (cast_expression "(undefined4 *)(puVar7 + -4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar7 + -4)" (( "(") (binary_expression "puVar7 + -4" (identifier "puVar7") (+ "+") (number_literal "-4")) () ")")))) (= "=") (number_literal "0x3513a")) (; ";")) (expression_statement "FUN_0007ebe0();" (call_expression "FUN_0007ebe0()" (identifier "FUN_0007ebe0") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}")))

/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */
/* WARNING: Unknown calling convention */

void function_1(type_1 *op)

{
  type_2 *p_Var1;
  int var_13;
  int var_5;
  type_3 var_4;
  int var_2;
  type_4 *var_8;
  int var_1;
  type_4 var_6 [12];
  type_2 *local_40 [4];
  type_5 *var_11;
  type_6 gcd;
  
  var_13 = *(int *)(var_1 + 0x14);
  var_2 = (op->_mp_den)._mp_size;
  if (var_2 < 0) {
    var_2 = -var_2;
    (op->_mp_den)._mp_size = var_2;
    var_4 = -(op->_mp_num)._mp_size;
    (op->_mp_num)._mp_size = var_4;
  }
  else {
    if (var_2 == 0) {
                    /* WARNING: Subroutine does not return */
      var_3();
    }
    var_4 = (op->_mp_num)._mp_size;
  }
  var_11 = (type_5 *)0x0;
  var_5 = (var_4 ^ (int)var_4 >> 0x1f) - ((int)var_4 >> 0x1f);
  if (var_5 < var_2) {
    var_5 = var_2;
  }
  gcd[0]._mp_alloc = var_5 + 1;
  var_4 = (var_5 + 1) * 4;
  if (var_4 < 0x7f01) {
    var_2 = -(var_4 + 0x1b & 0xfffffff0);
    var_8 = var_6 + var_2;
    gcd[0]._mp_d = (type_7 *)((int)local_40 + var_2);
  }
  else {
    gcd[0]._mp_d = (type_7 *)var_7(&var_11,var_4);
    var_8 = var_6;
  }
  p_Var1 = &op->_mp_den;
  *(type_2 **)(var_8 + -8) = p_Var1;
  *(type_1 **)(var_8 + -0xc) = op;
  *(type_2 **)(var_8 + -0x10) = gcd;
  local_40[0] = gcd;
  *(type_8 *)(var_8 + -0x14) = 0x35095;
  var_9(*(type_9 *)(var_8 + -0x10),*(type_10 *)(var_8 + -0xc),
             *(type_10 *)(var_8 + -8));
  if ((gcd[0]._mp_size != 1) || (*gcd[0]._mp_d != 1)) {
    *(type_2 **)(var_8 + -8) = local_40[0];
    *(type_1 **)(var_8 + -0xc) = op;
    *(type_1 **)(var_8 + -0x10) = op;
    *(type_8 *)(var_8 + -0x14) = 0x350b7;
    var_10(*(type_9 *)(var_8 + -0x10),*(type_10 *)(var_8 + -0xc),
                        *(type_10 *)(var_8 + -8));
    *(type_2 **)(var_8 + -8) = local_40[0];
    *(type_2 **)(var_8 + -0xc) = p_Var1;
    *(type_2 **)(var_8 + -0x10) = p_Var1;
    *(type_8 *)(var_8 + -0x14) = 0x350c5;
    var_10(*(type_9 *)(var_8 + -0x10),*(type_10 *)(var_8 + -0xc),
                        *(type_10 *)(var_8 + -8));
  }
  if (var_11 != (type_5 *)0x0) {
    *(type_5 **)(var_8 + -0x10) = var_11;
    *(type_8 *)(var_8 + -0x14) = 0x35121;
    var_12(*(type_5 **)(var_8 + -0x10));
  }
  if (var_13 == *(int *)(var_1 + 0x14)) {
    return;
  }
                    /* WARNING: Subroutine does not return */
  *(type_8 *)(var_8 + -4) = 0x3513a;
  var_14();
}


(translation_unit (function_definition type: (primitive_type) declarator: (function_declarator declarator: (identifier) parameters: (parameter_list (parameter_declaration type: (primitive_type)))) body: (compound_statement (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (array_declarator declarator: (identifier) size: (number_literal))) (declaration type: (type_identifier) declarator: (identifier)) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (call_expression function: (identifier) arguments: (argument_list))) (expression_statement (assignment_expression left: (identifier) right: (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))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (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: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (unary_expression argument: (identifier)))) (expression_statement (assignment_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: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (unary_expression argument: (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)))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier)))) alternative: (else_clause (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal)))) right: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (identifier))))) (expression_statement (assignment_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: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (unary_expression argument: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (call_expression function: (identifier) arguments: (argument_list (binary_expression left: (identifier) right: (number_literal)) (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (identifier)))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_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: (identifier))) (expression_statement (assignment_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: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (call_expression function: (identifier) arguments: (argument_list))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (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: (number_literal))) right: (parenthesized_expression (binary_expression left: (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) right: (number_literal))))) consequence: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_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: (identifier))) (expression_statement (assignment_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: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (call_expression function: (identifier) arguments: (argument_list))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_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: (identifier))) (expression_statement (assignment_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: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (call_expression function: (identifier) arguments: (argument_list))))) (if_statement condition: (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: (number_literal))) consequence: (compound_statement (expression_statement (assignment_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: (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))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (call_expression function: (identifier) arguments: (argument_list))))) (if_statement condition: (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: (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))))))) consequence: (compound_statement (return_statement))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (call_expression function: (identifier) arguments: (argument_list))))))

void MASKED(void)

{
  int iVar1;
  undefined4 uVar2;
  int iVar3;
  uint uVar4;
  undefined1 *puVar5;
  int iVar6;
  undefined1 *puVar7;
  undefined1 *puVar8;
  int in_GS_OFFSET;
  undefined1 auStack_50 [60];
  undefined4 uStack_14;
  
  puVar8 = &stack0xfffffffc;
  uStack_14 = 0x3501b;
  entry();
  iVar1 = *(int *)(puVar8 + 8);
  *(undefined4 *)(puVar8 + -0x1c) = *(undefined4 *)(in_GS_OFFSET + 0x14);
  iVar6 = *(int *)(iVar1 + 0x10);
  if (iVar6 < 0) {
    iVar6 = -iVar6;
    *(int *)(iVar1 + 0x10) = iVar6;
    uVar4 = -*(int *)(iVar1 + 4);
    *(uint *)(iVar1 + 4) = uVar4;
  }
  else {
    if (iVar6 == 0) {
                    /* WARNING: Subroutine does not return */
      __gmp_divide_by_zero();
    }
    uVar4 = *(uint *)(iVar1 + 4);
  }
  *(undefined4 *)(puVar8 + -0x2c) = 0;
  iVar3 = (uVar4 ^ (int)uVar4 >> 0x1f) - ((int)uVar4 >> 0x1f);
  if (iVar3 < iVar6) {
    iVar3 = iVar6;
  }
  *(int *)(puVar8 + -0x28) = iVar3 + 1;
  uVar4 = (iVar3 + 1) * 4;
  if (uVar4 < 0x7f01) {
    iVar6 = -(uVar4 + 0x1b & 0xfffffff0);
    puVar7 = auStack_50 + iVar6;
    puVar5 = auStack_50 + iVar6;
  }
  else {
    puVar5 = (undefined1 *)__gmp_tmp_reentrant_alloc(puVar8 + -0x2c,uVar4);
    puVar7 = auStack_50;
  }
  *(undefined1 **)(puVar8 + -0x20) = puVar5;
  iVar6 = iVar1 + 0xc;
  *(int *)(puVar7 + -8) = iVar6;
  *(int *)(puVar7 + -0xc) = iVar1;
  *(undefined1 **)(puVar7 + -0x10) = puVar8 + -0x28;
  *(undefined1 **)(puVar8 + -0x3c) = puVar8 + -0x28;
  *(undefined4 *)(puVar7 + -0x14) = 0x35095;
  __gmpz_gcd();
  uVar2 = *(undefined4 *)(puVar8 + -0x3c);
  if ((*(int *)(puVar8 + -0x24) != 1) || (**(int **)(puVar8 + -0x20) != 1)) {
    *(undefined4 *)(puVar8 + -0x3c) = uVar2;
    *(undefined4 *)(puVar7 + -8) = uVar2;
    *(int *)(puVar7 + -0xc) = iVar1;
    *(int *)(puVar7 + -0x10) = iVar1;
    *(undefined4 *)(puVar7 + -0x14) = 0x350b7;
    __gmpz_divexact_gcd();
    *(undefined4 *)(puVar7 + -8) = *(undefined4 *)(puVar8 + -0x3c);
    *(int *)(puVar7 + -0xc) = iVar6;
    *(int *)(puVar7 + -0x10) = iVar6;
    *(undefined4 *)(puVar7 + -0x14) = 0x350c5;
    __gmpz_divexact_gcd();
  }
  if (*(int *)(puVar8 + -0x2c) != 0) {
    *(int *)(puVar7 + -0x10) = *(int *)(puVar8 + -0x2c);
    *(undefined4 *)(puVar7 + -0x14) = 0x35121;
    __gmp_tmp_reentrant_free();
  }
  if (*(int *)(puVar8 + -0x1c) == *(int *)(in_GS_OFFSET + 0x14)) {
    return;
  }
                    /* WARNING: Subroutine does not return */
  *(undefined4 *)(puVar7 + -4) = 0x3513a;
  FUN_0007ebe0();
}

