
mp_size_t __gmpz_prodlimbs(mpz_ptr x,mp_ptr factors,mp_size_t j)

{
  int iVar1;
  mpz_ptr p_Var2;
  undefined1 *puVar3;
  mp_size_t mVar4;
  mp_limb_t *pmVar5;
  mp_ptr pmVar6;
  uint uVar7;
  mp_limb_t *pmVar8;
  int *piVar9;
  mp_limb_t *pmVar10;
  mp_limb_t mVar11;
  mpz_ptr p_Var12;
  int *piVar13;
  mp_ptr pmVar14;
  int iVar15;
  mpz_ptr p_Var16;
  int iVar17;
  mp_limb_t *unaff_s3;
  mp_ptr pmVar18;
  undefined *puVar19;
  code *pcVar20;
  undefined *puVar21;
  undefined1 *puVar22;
  undefined4 uVar23;
  undefined1 auStack_70 [24];
  tmp_reentrant_t *__tmp_marker;
  mpz_t x1;
  mpz_t x2;
  
  pmVar18 = (mp_ptr)PTR___stack_chk_guard_00097540;
  puVar22 = auStack_70;
  pmVar5 = *(mp_limb_t **)PTR___stack_chk_guard_00097540;
  if (j < 0x14) {
    if (j < 3) {
      iVar15 = 4;
      iVar17 = 4;
      p_Var12 = (mpz_ptr)&DAT_00000001;
    }
    else {
      pmVar14 = factors + 1;
      p_Var12 = (mpz_ptr)&DAT_00000001;
      do {
        mVar11 = *pmVar14;
        pmVar14 = pmVar14 + 1;
        mVar11 = (*(code *)PTR___gmpn_mul_1_000970a4)(factors,factors,p_Var12,mVar11);
        pmVar6 = factors + (int)p_Var12;
        p_Var12 = (mpz_ptr)((int)&p_Var12->_mp_alloc + (uint)(mVar11 != 0));
        *pmVar6 = mVar11;
      } while (factors + j + -1 != pmVar14);
      iVar15 = (int)p_Var12 * 4;
      iVar17 = (j + -1) * 4;
    }
    if ((int)p_Var12 < x->_mp_alloc) {
      unaff_s3 = x->_mp_d;
    }
    else {
      unaff_s3 = (mp_limb_t *)
                 (*(code *)PTR___gmpz_realloc_000975bc)
                           (x,(undefined1 *)((int)&p_Var12->_mp_alloc + 1));
    }
    j = (int)factors + iVar17;
    p_Var16 = (mpz_ptr)((int)unaff_s3 + iVar15);
    p_Var2 = p_Var12;
    iVar15 = (*(code *)PTR___gmpn_mul_1_000970a4)(unaff_s3,factors,p_Var12,((mpz_ptr)j)->_mp_alloc);
    puVar3 = (undefined1 *)((int)&p_Var12->_mp_alloc + (uint)(iVar15 != 0));
    p_Var16->_mp_alloc = iVar15;
    x->_mp_size = (int)puVar3;
    puVar22 = auStack_70;
  }
  else {
    iVar17 = j >> 1;
    __tmp_marker = (tmp_reentrant_t *)0x0;
    iVar15 = j - iVar17;
    x2[0]._mp_alloc = iVar15;
    if ((uint)(iVar15 * 4) < 0x7f01) {
      iVar1 = -(iVar15 * 4 + 7U & 0xfffffff8);
      puVar22 = auStack_70 + iVar1;
      x2[0]._mp_d = (mp_limb_t *)((int)x2 + iVar1 + -0x20);
    }
    else {
      x2[0]._mp_d = (mp_limb_t *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&__tmp_marker);
    }
    x1[0]._mp_d = factors + iVar17;
    x1[0]._mp_alloc = iVar15;
    p_Var16 = (mpz_ptr)__gmpz_prodlimbs(x2,x1[0]._mp_d,iVar15);
    p_Var2 = (mpz_ptr)__gmpz_prodlimbs(x1,factors,iVar17);
    p_Var12 = (mpz_ptr)((int)&p_Var2->_mp_alloc + (int)&p_Var16->_mp_alloc);
    if (x->_mp_alloc < (int)p_Var12) {
      pmVar8 = (mp_limb_t *)(*(code *)PTR___gmpz_realloc_000975bc)(x,p_Var12);
    }
    else {
      pmVar8 = x->_mp_d;
    }
    factors = x2[0]._mp_d;
    pmVar10 = x1[0]._mp_d;
    if ((int)p_Var2 < (int)p_Var16) {
      *(mpz_ptr *)(puVar22 + 0x10) = p_Var2;
      p_Var2 = p_Var16;
      iVar15 = (*(code *)PTR___gmpn_mul_000972b4)(pmVar8,factors,p_Var16,pmVar10);
    }
    else {
      *(mpz_ptr *)(puVar22 + 0x10) = p_Var16;
      iVar15 = (*(code *)PTR___gmpn_mul_000972b4)();
      factors = pmVar10;
    }
    if (__tmp_marker != (tmp_reentrant_t *)0x0) {
      (*(code *)PTR___gmp_tmp_reentrant_free_00097614)();
    }
    puVar3 = (undefined1 *)((int)p_Var12 - (uint)(iVar15 == 0));
    x->_mp_size = (int)puVar3;
  }
  if (pmVar5 == (mp_limb_t *)*pmVar18) {
    return (mp_size_t)puVar3;
  }
  uVar23 = 0x275d4;
  puVar19 = PTR___stack_chk_fail_000974d0;
  (*(code *)PTR___stack_chk_fail_000974d0)();
  puVar21 = puVar19 + 0x77a60;
  *(undefined **)(puVar22 + -0x28) = puVar21;
  *(undefined4 *)(puVar22 + -4) = uVar23;
  *(mp_ptr *)(puVar22 + -8) = pmVar18;
  *(mpz_ptr *)(puVar22 + -0xc) = x;
  *(mp_limb_t **)(puVar22 + -0x10) = unaff_s3;
  *(mp_size_t *)(puVar22 + -0x14) = j;
  *(mpz_ptr *)(puVar22 + -0x18) = p_Var16;
  *(mpz_ptr *)(puVar22 + -0x1c) = p_Var12;
  if (p_Var2 == (mpz_ptr)0x0) {
    pcVar20 = *(code **)(puVar19 + 0x6fffc);
    (*pcVar20)();
LAB_0002772c:
    piVar13 = (int *)(*pcVar20)(unaff_s3,p_Var16);
    puVar21 = *(undefined **)(puVar22 + -0x28);
  }
  else {
    j = factors[1];
    if ((mpz_ptr)j == (mpz_ptr)0x0) {
      pmVar5[1] = 0;
      return 0;
    }
    p_Var16 = (mpz_ptr)j;
    if (j < 0) {
      p_Var16 = (mpz_ptr)-j;
    }
    pcVar20 = *(code **)(puVar19 + 0x6ffdc);
    unaff_s3 = pmVar5;
    x = p_Var2;
    pmVar18 = factors;
    if ((int)*pmVar5 < (int)p_Var16) goto LAB_0002772c;
    piVar13 = (int *)pmVar5[2];
  }
  pcVar20 = *(code **)(puVar21 + -0x7d98);
  mVar11 = pmVar18[2];
  *(mpz_ptr *)(puVar22 + -0x30) = x;
  mVar4 = (*pcVar20)(piVar13,0,mVar11,p_Var16);
  piVar9 = piVar13 + (int)((int)&p_Var16[-1]._mp_d + 3);
  if (mVar4 == 0) {
    uVar7 = (uint)(*piVar9 == 0);
    if (j < 0) {
      mVar11 = uVar7 - (int)p_Var16;
      goto LAB_00027684;
    }
  }
  else {
    if (j < 0) {
      do {
        iVar15 = *piVar13;
        *piVar13 = iVar15 + 1;
        piVar13 = piVar13 + 1;
      } while (iVar15 + 1 == 0);
      mVar4 = (int)x - mVar4;
      mVar11 = (uint)(*piVar9 == 0) - (int)p_Var16;
      goto LAB_00027684;
    }
    uVar7 = (uint)(*piVar9 == 0);
  }
  mVar11 = (int)p_Var16 - uVar7;
LAB_00027684:
  unaff_s3[1] = mVar11;
  return mVar4;
}



undefined * __gmpz_prodlimbs(int *param_1,undefined *param_2,int *param_3)

{
  int iVar1;
  int iVar2;
  undefined *puVar3;
  undefined *puVar4;
  int iVar5;
  uint uVar6;
  int *piVar7;
  undefined4 uVar8;
  int *piVar9;
  int *piVar10;
  undefined4 *puVar11;
  int *piVar12;
  int *unaff_s3;
  code *pcVar13;
  undefined *puVar14;
  undefined1 *puVar15;
  undefined1 auStack_70 [24];
  int local_48;
  int local_44 [2];
  undefined *local_3c;
  int local_38 [2];
  undefined *local_30;
  int *local_2c;
  
  puVar4 = PTR___stack_chk_guard_00097540;
  puVar15 = auStack_70;
  local_2c = *(int **)PTR___stack_chk_guard_00097540;
  if ((int)param_3 < 0x14) {
    if ((int)param_3 < 3) {
      iVar2 = 4;
      iVar5 = 4;
      piVar9 = (int *)0x1;
    }
    else {
      puVar11 = (undefined4 *)(param_2 + 4);
      piVar9 = (int *)0x1;
      do {
        uVar8 = *puVar11;
        puVar11 = puVar11 + 1;
        iVar2 = (*(code *)PTR___gmpn_mul_1_000970a4)(param_2,param_2,piVar9,uVar8);
        iVar5 = (int)piVar9 * 4;
        piVar9 = (int *)((int)piVar9 + (uint)(iVar2 != 0));
        *(int *)(param_2 + iVar5) = iVar2;
      } while ((undefined4 *)(param_2 + (int)param_3 * 4 + -4) != puVar11);
      iVar2 = (int)piVar9 * 4;
      iVar5 = (int)((int)param_3 + -1) * 4;
    }
    if ((int)piVar9 < *param_1) {
      unaff_s3 = (int *)param_1[2];
    }
    else {
      unaff_s3 = (int *)(*(code *)PTR___gmpz_realloc_000975bc)
                                  (param_1,(undefined *)((int)piVar9 + 1));
    }
    param_3 = (int *)(param_2 + iVar5);
    piVar12 = (int *)((int)unaff_s3 + iVar2);
    piVar10 = piVar9;
    iVar2 = (*(code *)PTR___gmpn_mul_1_000970a4)(unaff_s3,param_2,piVar9,*param_3);
    puVar3 = (undefined *)((uint)(iVar2 != 0) + (int)piVar9);
    *piVar12 = iVar2;
    param_1[1] = (int)puVar3;
    puVar15 = auStack_70;
  }
  else {
    iVar5 = (int)param_3 >> 1;
    local_48 = 0;
    iVar2 = (int)param_3 - iVar5;
    local_38[0] = iVar2;
    if ((uint)(iVar2 * 4) < 0x7f01) {
      iVar1 = -(iVar2 * 4 + 7U & 0xfffffff8);
      puVar15 = auStack_70 + iVar1;
      local_30 = (undefined *)((int)local_38 + iVar1 + -0x20);
    }
    else {
      local_30 = (undefined *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_48);
    }
    local_3c = param_2 + iVar5 * 4;
    local_44[0] = iVar2;
    piVar12 = (int *)__gmpz_prodlimbs(local_38);
    piVar10 = (int *)__gmpz_prodlimbs(local_44,param_2,iVar5);
    piVar9 = (int *)((int)piVar12 + (int)piVar10);
    if (*param_1 < (int)piVar9) {
      iVar2 = (*(code *)PTR___gmpz_realloc_000975bc)(param_1,piVar9);
    }
    else {
      iVar2 = param_1[2];
    }
    param_2 = local_30;
    puVar3 = local_3c;
    if ((int)piVar10 < (int)piVar12) {
      *(int **)(puVar15 + 0x10) = piVar10;
      piVar10 = piVar12;
      iVar2 = (*(code *)PTR___gmpn_mul_000972b4)(iVar2,param_2,piVar12,puVar3);
    }
    else {
      *(int **)(puVar15 + 0x10) = piVar12;
      iVar2 = (*(code *)PTR___gmpn_mul_000972b4)();
      param_2 = puVar3;
    }
    if (local_48 != 0) {
      (*(code *)PTR___gmp_tmp_reentrant_free_00097614)();
    }
    puVar3 = (undefined *)((int)piVar9 - (uint)(iVar2 == 0));
    param_1[1] = (int)puVar3;
  }
  if (local_2c == *(int **)puVar4) {
    return puVar3;
  }
  uVar8 = 0x275d4;
  piVar7 = local_2c;
  puVar3 = PTR___stack_chk_fail_000974d0;
  (*(code *)PTR___stack_chk_fail_000974d0)();
  puVar14 = puVar3 + 0x77a60;
  *(undefined **)(puVar15 + -0x28) = puVar14;
  *(undefined4 *)(puVar15 + -4) = uVar8;
  *(undefined **)(puVar15 + -8) = puVar4;
  *(int **)(puVar15 + -0xc) = param_1;
  *(int **)(puVar15 + -0x10) = unaff_s3;
  *(int **)(puVar15 + -0x14) = param_3;
  *(int **)(puVar15 + -0x18) = piVar12;
  *(int **)(puVar15 + -0x1c) = piVar9;
  if (piVar10 == (int *)0x0) {
    pcVar13 = *(code **)(puVar3 + 0x6fffc);
    (*pcVar13)();
LAB_0002772c:
    piVar10 = (int *)(*pcVar13)(unaff_s3,piVar12);
    puVar14 = *(undefined **)(puVar15 + -0x28);
  }
  else {
    param_3 = *(int **)(param_2 + 4);
    if (param_3 == (int *)0x0) {
      piVar7[1] = 0;
      return (undefined *)0x0;
    }
    piVar12 = param_3;
    if ((int)param_3 < 0) {
      piVar12 = (int *)-(int)param_3;
    }
    pcVar13 = *(code **)(puVar3 + 0x6ffdc);
    unaff_s3 = piVar7;
    param_1 = piVar10;
    puVar4 = param_2;
    if (*piVar7 < (int)piVar12) goto LAB_0002772c;
    piVar10 = (int *)piVar7[2];
  }
  pcVar13 = *(code **)(puVar14 + -0x7d98);
  uVar8 = *(undefined4 *)(puVar4 + 8);
  *(int **)(puVar15 + -0x30) = param_1;
  puVar4 = (undefined *)(*pcVar13)(piVar10,0,uVar8,piVar12);
  piVar9 = piVar10 + (int)((int)piVar12 + -1);
  if (puVar4 == (undefined *)0x0) {
    uVar6 = (uint)(*piVar9 == 0);
    if ((int)param_3 < 0) {
      iVar2 = uVar6 - (int)piVar12;
      goto LAB_00027684;
    }
  }
  else {
    if ((int)param_3 < 0) {
      do {
        iVar2 = *piVar10;
        *piVar10 = iVar2 + 1;
        piVar10 = piVar10 + 1;
      } while (iVar2 + 1 == 0);
      puVar4 = (undefined *)((int)param_1 - (int)puVar4);
      iVar2 = (uint)(*piVar9 == 0) - (int)piVar12;
      goto LAB_00027684;
    }
    uVar6 = (uint)(*piVar9 == 0);
  }
  iVar2 = (int)piVar12 - uVar6;
LAB_00027684:
  unaff_s3[1] = iVar2;
  return puVar4;
}


lui gp,0x7
addiu gp,gp,0x7d20
addu gp,gp,t9
addiu sp,sp,-0x70
slti v0,a2,0x14
sw s5,0x60(sp)
lw s5,-0x7b00(gp)
sw s8,0x68(sp)
or s8,sp,zero
sw s6,0x64(sp)
or s6,a1,zero
sw s4,0x5c(sp)
or s4,a0,zero
sw s2,0x54(sp)
or s2,a2,zero
sw ra,0x6c(sp)
sw s3,0x58(sp)
sw s1,0x50(sp)
sw s0,0x4c(sp)
sw gp,0x18(sp)
lw v1,0x0(s5)
sw v1,0x44(s8)
beq v0,zero,0x0002742c
_slti v0,a2,0x3
bne v0,zero,0x00027550
_sll v0,a2,0x2
addiu s3,a1,-0x4
addiu s1,a1,0x4
addu s3,s3,v0
li s0,0x1
lw t9,-0x7f9c(gp)
or a2,s0,zero
lw a3,0x0(s1)
or a0,s6,zero
or a1,s6,zero
jalr t9
_addiu s1,s1,0x4
sll v1,s0,0x2
sltu a0,zero,v0
lw gp,0x18(s8)
addu v1,s6,v1
addu s0,s0,a0
bne s3,s1,0x00027398
_sw v0,0x0(v1)
addiu s2,s2,-0x1
sll s1,s0,0x2
sll s2,s2,0x2
lw v0,0x0(s4)
slt v0,s0,v0
beq v0,zero,0x0002757c
_lw t9,-0x7a84(gp)
lw s3,0x8(s4)
addu s2,s6,s2
lw t9,-0x7f9c(gp)
or a0,s3,zero
or a2,s0,zero
lw a3,0x0(s2)
or a1,s6,zero
jalr t9
_addu s1,s3,s1
sltu v1,zero,v0
lw gp,0x18(s8)
or a0,v0,zero
addu v0,v1,s0
sw a0,0x0(s1)
b 0x000274f4
_sw v0,0x4(s4)
sra s1,a2,0x1
sw zero,0x28(s8)
subu a2,a2,s1
sll a1,a2,0x2
sltiu v0,a1,0x7f01
beq v0,zero,0x00027560
_sw a2,0x38(s8)
addiu a1,a1,0x7
srl a1,a1,0x3
sll a1,a1,0x3
subu sp,sp,a1
addiu v0,sp,0x18
lw s0,-0x7fd0(gp)
sll a1,s1,0x2
addiu a0,s8,0x38
sw a2,0x2c(s8)
addu a1,s6,a1
sw v0,0x40(s8)
addiu s0,s0,0x7320
or t9,s0,zero
bal 0x00027320
_sw a1,0x34(s8)
addiu a0,s8,0x2c
or a2,s1,zero
or t9,s0,zero
or a1,s6,zero
bal 0x00027320
_or s1,v0,zero
or a2,v0,zero
lw v0,0x0(s4)
addu s0,s1,a2
slt v0,v0,s0
bne v0,zero,0x00027594
_lw gp,0x18(s8)
lw a0,0x8(s4)
slt v1,a2,s1
lw t9,-0x7d8c(gp)
lw v0,0x40(s8)
bne v1,zero,0x00027534
_lw a1,0x34(s8)
or a3,v0,zero
jalr t9
_sw s1,0x10(sp)
lw gp,0x18(s8)
lw a0,0x28(s8)
bne a0,zero,0x000275b8
_lw t9,-0x7a2c(gp)
sltiu v0,v0,0x1
subu v0,s0,v0
sw v0,0x4(s4)
lw a0,0x44(s8)
lw v1,0x0(s5)
bne a0,v1,0x000275cc
_lw t9,-0x7b70(gp)
or sp,s8,zero
lw ra,0x6c(sp)
lw s8,0x68(sp)
lw s6,0x64(sp)
lw s5,0x60(sp)
lw s4,0x5c(sp)
lw s3,0x58(sp)
lw s2,0x54(sp)
lw s1,0x50(sp)
lw s0,0x4c(sp)
jr ra
_addiu sp,sp,0x70
or a3,a1,zero
sw a2,0x10(sp)
or a1,v0,zero
jalr t9
_or a2,s1,zero
b 0x000274dc
_lw gp,0x18(s8)
li s1,0x4
li s2,0x4
b 0x000273dc
_li s0,0x1
lw t9,-0x7d50(gp)
addiu a0,s8,0x28
jalr t9
_sw a2,0x24(s8)
lw gp,0x18(s8)
b 0x0002745c
_lw a2,0x24(s8)
addiu a1,s0,0x1
jalr t9
_or a0,s4,zero
lw gp,0x18(s8)
b 0x000273f0
_or s3,v0,zero
lw t9,-0x7a84(gp)
or a0,s4,zero
sw a2,0x24(s8)
jalr t9
_or a1,s0,zero
lw gp,0x18(s8)
or a0,v0,zero
b 0x000274b8
_lw a2,0x24(s8)
jalr t9
_sw v0,0x24(s8)
lw gp,0x18(s8)
b 0x000274e8
_lw v0,0x24(s8)
jalr t9
_nop
nop
nop
nop
(translation_unit "undefined * __gmpz_prodlimbs(int *param_1,undefined *param_2,int *param_3)\n\n{\n  int iVar1;\n  int iVar2;\n  undefined *puVar3;\n  undefined *puVar4;\n  int iVar5;\n  uint uVar6;\n  int *piVar7;\n  undefined4 uVar8;\n  int *piVar9;\n  int *piVar10;\n  undefined4 *puVar11;\n  int *piVar12;\n  int *unaff_s3;\n  code *pcVar13;\n  undefined *puVar14;\n  undefined1 *puVar15;\n  undefined1 auStack_70 [24];\n  int local_48;\n  int local_44 [2];\n  undefined *local_3c;\n  int local_38 [2];\n  undefined *local_30;\n  int *local_2c;\n  \n  puVar4 = PTR___stack_chk_guard_00097540;\n  puVar15 = auStack_70;\n  local_2c = *(int **)PTR___stack_chk_guard_00097540;\n  if ((int)param_3 < 0x14) {\n    if ((int)param_3 < 3) {\n      iVar2 = 4;\n      iVar5 = 4;\n      piVar9 = (int *)0x1;\n    }\n    else {\n      puVar11 = (undefined4 *)(param_2 + 4);\n      piVar9 = (int *)0x1;\n      do {\n        uVar8 = *puVar11;\n        puVar11 = puVar11 + 1;\n        iVar2 = (*(code *)PTR___gmpn_mul_1_000970a4)(param_2,param_2,piVar9,uVar8);\n        iVar5 = (int)piVar9 * 4;\n        piVar9 = (int *)((int)piVar9 + (uint)(iVar2 != 0));\n        *(int *)(param_2 + iVar5) = iVar2;\n      } while ((undefined4 *)(param_2 + (int)param_3 * 4 + -4) != puVar11);\n      iVar2 = (int)piVar9 * 4;\n      iVar5 = (int)((int)param_3 + -1) * 4;\n    }\n    if ((int)piVar9 < *param_1) {\n      unaff_s3 = (int *)param_1[2];\n    }\n    else {\n      unaff_s3 = (int *)(*(code *)PTR___gmpz_realloc_000975bc)\n                                  (param_1,(undefined *)((int)piVar9 + 1));\n    }\n    param_3 = (int *)(param_2 + iVar5);\n    piVar12 = (int *)((int)unaff_s3 + iVar2);\n    piVar10 = piVar9;\n    iVar2 = (*(code *)PTR___gmpn_mul_1_000970a4)(unaff_s3,param_2,piVar9,*param_3);\n    puVar3 = (undefined *)((uint)(iVar2 != 0) + (int)piVar9);\n    *piVar12 = iVar2;\n    param_1[1] = (int)puVar3;\n    puVar15 = auStack_70;\n  }\n  else {\n    iVar5 = (int)param_3 >> 1;\n    local_48 = 0;\n    iVar2 = (int)param_3 - iVar5;\n    local_38[0] = iVar2;\n    if ((uint)(iVar2 * 4) < 0x7f01) {\n      iVar1 = -(iVar2 * 4 + 7U & 0xfffffff8);\n      puVar15 = auStack_70 + iVar1;\n      local_30 = (undefined *)((int)local_38 + iVar1 + -0x20);\n    }\n    else {\n      local_30 = (undefined *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_48);\n    }\n    local_3c = param_2 + iVar5 * 4;\n    local_44[0] = iVar2;\n    piVar12 = (int *)__gmpz_prodlimbs(local_38);\n    piVar10 = (int *)__gmpz_prodlimbs(local_44,param_2,iVar5);\n    piVar9 = (int *)((int)piVar12 + (int)piVar10);\n    if (*param_1 < (int)piVar9) {\n      iVar2 = (*(code *)PTR___gmpz_realloc_000975bc)(param_1,piVar9);\n    }\n    else {\n      iVar2 = param_1[2];\n    }\n    param_2 = local_30;\n    puVar3 = local_3c;\n    if ((int)piVar10 < (int)piVar12) {\n      *(int **)(puVar15 + 0x10) = piVar10;\n      piVar10 = piVar12;\n      iVar2 = (*(code *)PTR___gmpn_mul_000972b4)(iVar2,param_2,piVar12,puVar3);\n    }\n    else {\n      *(int **)(puVar15 + 0x10) = piVar12;\n      iVar2 = (*(code *)PTR___gmpn_mul_000972b4)();\n      param_2 = puVar3;\n    }\n    if (local_48 != 0) {\n      (*(code *)PTR___gmp_tmp_reentrant_free_00097614)();\n    }\n    puVar3 = (undefined *)((int)piVar9 - (uint)(iVar2 == 0));\n    param_1[1] = (int)puVar3;\n  }\n  if (local_2c == *(int **)puVar4) {\n    return puVar3;\n  }\n  uVar8 = 0x275d4;\n  piVar7 = local_2c;\n  puVar3 = PTR___stack_chk_fail_000974d0;\n  (*(code *)PTR___stack_chk_fail_000974d0)();\n  puVar14 = puVar3 + 0x77a60;\n  *(undefined **)(puVar15 + -0x28) = puVar14;\n  *(undefined4 *)(puVar15 + -4) = uVar8;\n  *(undefined **)(puVar15 + -8) = puVar4;\n  *(int **)(puVar15 + -0xc) = param_1;\n  *(int **)(puVar15 + -0x10) = unaff_s3;\n  *(int **)(puVar15 + -0x14) = param_3;\n  *(int **)(puVar15 + -0x18) = piVar12;\n  *(int **)(puVar15 + -0x1c) = piVar9;\n  if (piVar10 == (int *)0x0) {\n    pcVar13 = *(code **)(puVar3 + 0x6fffc);\n    (*pcVar13)();\nLAB_0002772c:\n    piVar10 = (int *)(*pcVar13)(unaff_s3,piVar12);\n    puVar14 = *(undefined **)(puVar15 + -0x28);\n  }\n  else {\n    param_3 = *(int **)(param_2 + 4);\n    if (param_3 == (int *)0x0) {\n      piVar7[1] = 0;\n      return (undefined *)0x0;\n    }\n    piVar12 = param_3;\n    if ((int)param_3 < 0) {\n      piVar12 = (int *)-(int)param_3;\n    }\n    pcVar13 = *(code **)(puVar3 + 0x6ffdc);\n    unaff_s3 = piVar7;\n    param_1 = piVar10;\n    puVar4 = param_2;\n    if (*piVar7 < (int)piVar12) goto LAB_0002772c;\n    piVar10 = (int *)piVar7[2];\n  }\n  pcVar13 = *(code **)(puVar14 + -0x7d98);\n  uVar8 = *(undefined4 *)(puVar4 + 8);\n  *(int **)(puVar15 + -0x30) = param_1;\n  puVar4 = (undefined *)(*pcVar13)(piVar10,0,uVar8,piVar12);\n  piVar9 = piVar10 + (int)((int)piVar12 + -1);\n  if (puVar4 == (undefined *)0x0) {\n    uVar6 = (uint)(*piVar9 == 0);\n    if ((int)param_3 < 0) {\n      iVar2 = uVar6 - (int)piVar12;\n      goto LAB_00027684;\n    }\n  }\n  else {\n    if ((int)param_3 < 0) {\n      do {\n        iVar2 = *piVar10;\n        *piVar10 = iVar2 + 1;\n        piVar10 = piVar10 + 1;\n      } while (iVar2 + 1 == 0);\n      puVar4 = (undefined *)((int)param_1 - (int)puVar4);\n      iVar2 = (uint)(*piVar9 == 0) - (int)piVar12;\n      goto LAB_00027684;\n    }\n    uVar6 = (uint)(*piVar9 == 0);\n  }\n  iVar2 = (int)piVar12 - uVar6;\nLAB_00027684:\n  unaff_s3[1] = iVar2;\n  return puVar4;\n}\n\n" (function_definition "undefined * __gmpz_prodlimbs(int *param_1,undefined *param_2,int *param_3)\n\n{\n  int iVar1;\n  int iVar2;\n  undefined *puVar3;\n  undefined *puVar4;\n  int iVar5;\n  uint uVar6;\n  int *piVar7;\n  undefined4 uVar8;\n  int *piVar9;\n  int *piVar10;\n  undefined4 *puVar11;\n  int *piVar12;\n  int *unaff_s3;\n  code *pcVar13;\n  undefined *puVar14;\n  undefined1 *puVar15;\n  undefined1 auStack_70 [24];\n  int local_48;\n  int local_44 [2];\n  undefined *local_3c;\n  int local_38 [2];\n  undefined *local_30;\n  int *local_2c;\n  \n  puVar4 = PTR___stack_chk_guard_00097540;\n  puVar15 = auStack_70;\n  local_2c = *(int **)PTR___stack_chk_guard_00097540;\n  if ((int)param_3 < 0x14) {\n    if ((int)param_3 < 3) {\n      iVar2 = 4;\n      iVar5 = 4;\n      piVar9 = (int *)0x1;\n    }\n    else {\n      puVar11 = (undefined4 *)(param_2 + 4);\n      piVar9 = (int *)0x1;\n      do {\n        uVar8 = *puVar11;\n        puVar11 = puVar11 + 1;\n        iVar2 = (*(code *)PTR___gmpn_mul_1_000970a4)(param_2,param_2,piVar9,uVar8);\n        iVar5 = (int)piVar9 * 4;\n        piVar9 = (int *)((int)piVar9 + (uint)(iVar2 != 0));\n        *(int *)(param_2 + iVar5) = iVar2;\n      } while ((undefined4 *)(param_2 + (int)param_3 * 4 + -4) != puVar11);\n      iVar2 = (int)piVar9 * 4;\n      iVar5 = (int)((int)param_3 + -1) * 4;\n    }\n    if ((int)piVar9 < *param_1) {\n      unaff_s3 = (int *)param_1[2];\n    }\n    else {\n      unaff_s3 = (int *)(*(code *)PTR___gmpz_realloc_000975bc)\n                                  (param_1,(undefined *)((int)piVar9 + 1));\n    }\n    param_3 = (int *)(param_2 + iVar5);\n    piVar12 = (int *)((int)unaff_s3 + iVar2);\n    piVar10 = piVar9;\n    iVar2 = (*(code *)PTR___gmpn_mul_1_000970a4)(unaff_s3,param_2,piVar9,*param_3);\n    puVar3 = (undefined *)((uint)(iVar2 != 0) + (int)piVar9);\n    *piVar12 = iVar2;\n    param_1[1] = (int)puVar3;\n    puVar15 = auStack_70;\n  }\n  else {\n    iVar5 = (int)param_3 >> 1;\n    local_48 = 0;\n    iVar2 = (int)param_3 - iVar5;\n    local_38[0] = iVar2;\n    if ((uint)(iVar2 * 4) < 0x7f01) {\n      iVar1 = -(iVar2 * 4 + 7U & 0xfffffff8);\n      puVar15 = auStack_70 + iVar1;\n      local_30 = (undefined *)((int)local_38 + iVar1 + -0x20);\n    }\n    else {\n      local_30 = (undefined *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_48);\n    }\n    local_3c = param_2 + iVar5 * 4;\n    local_44[0] = iVar2;\n    piVar12 = (int *)__gmpz_prodlimbs(local_38);\n    piVar10 = (int *)__gmpz_prodlimbs(local_44,param_2,iVar5);\n    piVar9 = (int *)((int)piVar12 + (int)piVar10);\n    if (*param_1 < (int)piVar9) {\n      iVar2 = (*(code *)PTR___gmpz_realloc_000975bc)(param_1,piVar9);\n    }\n    else {\n      iVar2 = param_1[2];\n    }\n    param_2 = local_30;\n    puVar3 = local_3c;\n    if ((int)piVar10 < (int)piVar12) {\n      *(int **)(puVar15 + 0x10) = piVar10;\n      piVar10 = piVar12;\n      iVar2 = (*(code *)PTR___gmpn_mul_000972b4)(iVar2,param_2,piVar12,puVar3);\n    }\n    else {\n      *(int **)(puVar15 + 0x10) = piVar12;\n      iVar2 = (*(code *)PTR___gmpn_mul_000972b4)();\n      param_2 = puVar3;\n    }\n    if (local_48 != 0) {\n      (*(code *)PTR___gmp_tmp_reentrant_free_00097614)();\n    }\n    puVar3 = (undefined *)((int)piVar9 - (uint)(iVar2 == 0));\n    param_1[1] = (int)puVar3;\n  }\n  if (local_2c == *(int **)puVar4) {\n    return puVar3;\n  }\n  uVar8 = 0x275d4;\n  piVar7 = local_2c;\n  puVar3 = PTR___stack_chk_fail_000974d0;\n  (*(code *)PTR___stack_chk_fail_000974d0)();\n  puVar14 = puVar3 + 0x77a60;\n  *(undefined **)(puVar15 + -0x28) = puVar14;\n  *(undefined4 *)(puVar15 + -4) = uVar8;\n  *(undefined **)(puVar15 + -8) = puVar4;\n  *(int **)(puVar15 + -0xc) = param_1;\n  *(int **)(puVar15 + -0x10) = unaff_s3;\n  *(int **)(puVar15 + -0x14) = param_3;\n  *(int **)(puVar15 + -0x18) = piVar12;\n  *(int **)(puVar15 + -0x1c) = piVar9;\n  if (piVar10 == (int *)0x0) {\n    pcVar13 = *(code **)(puVar3 + 0x6fffc);\n    (*pcVar13)();\nLAB_0002772c:\n    piVar10 = (int *)(*pcVar13)(unaff_s3,piVar12);\n    puVar14 = *(undefined **)(puVar15 + -0x28);\n  }\n  else {\n    param_3 = *(int **)(param_2 + 4);\n    if (param_3 == (int *)0x0) {\n      piVar7[1] = 0;\n      return (undefined *)0x0;\n    }\n    piVar12 = param_3;\n    if ((int)param_3 < 0) {\n      piVar12 = (int *)-(int)param_3;\n    }\n    pcVar13 = *(code **)(puVar3 + 0x6ffdc);\n    unaff_s3 = piVar7;\n    param_1 = piVar10;\n    puVar4 = param_2;\n    if (*piVar7 < (int)piVar12) goto LAB_0002772c;\n    piVar10 = (int *)piVar7[2];\n  }\n  pcVar13 = *(code **)(puVar14 + -0x7d98);\n  uVar8 = *(undefined4 *)(puVar4 + 8);\n  *(int **)(puVar15 + -0x30) = param_1;\n  puVar4 = (undefined *)(*pcVar13)(piVar10,0,uVar8,piVar12);\n  piVar9 = piVar10 + (int)((int)piVar12 + -1);\n  if (puVar4 == (undefined *)0x0) {\n    uVar6 = (uint)(*piVar9 == 0);\n    if ((int)param_3 < 0) {\n      iVar2 = uVar6 - (int)piVar12;\n      goto LAB_00027684;\n    }\n  }\n  else {\n    if ((int)param_3 < 0) {\n      do {\n        iVar2 = *piVar10;\n        *piVar10 = iVar2 + 1;\n        piVar10 = piVar10 + 1;\n      } while (iVar2 + 1 == 0);\n      puVar4 = (undefined *)((int)param_1 - (int)puVar4);\n      iVar2 = (uint)(*piVar9 == 0) - (int)piVar12;\n      goto LAB_00027684;\n    }\n    uVar6 = (uint)(*piVar9 == 0);\n  }\n  iVar2 = (int)piVar12 - uVar6;\nLAB_00027684:\n  unaff_s3[1] = iVar2;\n  return puVar4;\n}" type_identifier (pointer_declarator "* __gmpz_prodlimbs(int *param_1,undefined *param_2,int *param_3)" * (function_declarator "__gmpz_prodlimbs(int *param_1,undefined *param_2,int *param_3)" identifier (parameter_list "(int *param_1,undefined *param_2,int *param_3)" ( (parameter_declaration "int *param_1" primitive_type (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "undefined *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "int *param_3" primitive_type (pointer_declarator "*param_3" * identifier)) )))) (compound_statement "{\n  int iVar1;\n  int iVar2;\n  undefined *puVar3;\n  undefined *puVar4;\n  int iVar5;\n  uint uVar6;\n  int *piVar7;\n  undefined4 uVar8;\n  int *piVar9;\n  int *piVar10;\n  undefined4 *puVar11;\n  int *piVar12;\n  int *unaff_s3;\n  code *pcVar13;\n  undefined *puVar14;\n  undefined1 *puVar15;\n  undefined1 auStack_70 [24];\n  int local_48;\n  int local_44 [2];\n  undefined *local_3c;\n  int local_38 [2];\n  undefined *local_30;\n  int *local_2c;\n  \n  puVar4 = PTR___stack_chk_guard_00097540;\n  puVar15 = auStack_70;\n  local_2c = *(int **)PTR___stack_chk_guard_00097540;\n  if ((int)param_3 < 0x14) {\n    if ((int)param_3 < 3) {\n      iVar2 = 4;\n      iVar5 = 4;\n      piVar9 = (int *)0x1;\n    }\n    else {\n      puVar11 = (undefined4 *)(param_2 + 4);\n      piVar9 = (int *)0x1;\n      do {\n        uVar8 = *puVar11;\n        puVar11 = puVar11 + 1;\n        iVar2 = (*(code *)PTR___gmpn_mul_1_000970a4)(param_2,param_2,piVar9,uVar8);\n        iVar5 = (int)piVar9 * 4;\n        piVar9 = (int *)((int)piVar9 + (uint)(iVar2 != 0));\n        *(int *)(param_2 + iVar5) = iVar2;\n      } while ((undefined4 *)(param_2 + (int)param_3 * 4 + -4) != puVar11);\n      iVar2 = (int)piVar9 * 4;\n      iVar5 = (int)((int)param_3 + -1) * 4;\n    }\n    if ((int)piVar9 < *param_1) {\n      unaff_s3 = (int *)param_1[2];\n    }\n    else {\n      unaff_s3 = (int *)(*(code *)PTR___gmpz_realloc_000975bc)\n                                  (param_1,(undefined *)((int)piVar9 + 1));\n    }\n    param_3 = (int *)(param_2 + iVar5);\n    piVar12 = (int *)((int)unaff_s3 + iVar2);\n    piVar10 = piVar9;\n    iVar2 = (*(code *)PTR___gmpn_mul_1_000970a4)(unaff_s3,param_2,piVar9,*param_3);\n    puVar3 = (undefined *)((uint)(iVar2 != 0) + (int)piVar9);\n    *piVar12 = iVar2;\n    param_1[1] = (int)puVar3;\n    puVar15 = auStack_70;\n  }\n  else {\n    iVar5 = (int)param_3 >> 1;\n    local_48 = 0;\n    iVar2 = (int)param_3 - iVar5;\n    local_38[0] = iVar2;\n    if ((uint)(iVar2 * 4) < 0x7f01) {\n      iVar1 = -(iVar2 * 4 + 7U & 0xfffffff8);\n      puVar15 = auStack_70 + iVar1;\n      local_30 = (undefined *)((int)local_38 + iVar1 + -0x20);\n    }\n    else {\n      local_30 = (undefined *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_48);\n    }\n    local_3c = param_2 + iVar5 * 4;\n    local_44[0] = iVar2;\n    piVar12 = (int *)__gmpz_prodlimbs(local_38);\n    piVar10 = (int *)__gmpz_prodlimbs(local_44,param_2,iVar5);\n    piVar9 = (int *)((int)piVar12 + (int)piVar10);\n    if (*param_1 < (int)piVar9) {\n      iVar2 = (*(code *)PTR___gmpz_realloc_000975bc)(param_1,piVar9);\n    }\n    else {\n      iVar2 = param_1[2];\n    }\n    param_2 = local_30;\n    puVar3 = local_3c;\n    if ((int)piVar10 < (int)piVar12) {\n      *(int **)(puVar15 + 0x10) = piVar10;\n      piVar10 = piVar12;\n      iVar2 = (*(code *)PTR___gmpn_mul_000972b4)(iVar2,param_2,piVar12,puVar3);\n    }\n    else {\n      *(int **)(puVar15 + 0x10) = piVar12;\n      iVar2 = (*(code *)PTR___gmpn_mul_000972b4)();\n      param_2 = puVar3;\n    }\n    if (local_48 != 0) {\n      (*(code *)PTR___gmp_tmp_reentrant_free_00097614)();\n    }\n    puVar3 = (undefined *)((int)piVar9 - (uint)(iVar2 == 0));\n    param_1[1] = (int)puVar3;\n  }\n  if (local_2c == *(int **)puVar4) {\n    return puVar3;\n  }\n  uVar8 = 0x275d4;\n  piVar7 = local_2c;\n  puVar3 = PTR___stack_chk_fail_000974d0;\n  (*(code *)PTR___stack_chk_fail_000974d0)();\n  puVar14 = puVar3 + 0x77a60;\n  *(undefined **)(puVar15 + -0x28) = puVar14;\n  *(undefined4 *)(puVar15 + -4) = uVar8;\n  *(undefined **)(puVar15 + -8) = puVar4;\n  *(int **)(puVar15 + -0xc) = param_1;\n  *(int **)(puVar15 + -0x10) = unaff_s3;\n  *(int **)(puVar15 + -0x14) = param_3;\n  *(int **)(puVar15 + -0x18) = piVar12;\n  *(int **)(puVar15 + -0x1c) = piVar9;\n  if (piVar10 == (int *)0x0) {\n    pcVar13 = *(code **)(puVar3 + 0x6fffc);\n    (*pcVar13)();\nLAB_0002772c:\n    piVar10 = (int *)(*pcVar13)(unaff_s3,piVar12);\n    puVar14 = *(undefined **)(puVar15 + -0x28);\n  }\n  else {\n    param_3 = *(int **)(param_2 + 4);\n    if (param_3 == (int *)0x0) {\n      piVar7[1] = 0;\n      return (undefined *)0x0;\n    }\n    piVar12 = param_3;\n    if ((int)param_3 < 0) {\n      piVar12 = (int *)-(int)param_3;\n    }\n    pcVar13 = *(code **)(puVar3 + 0x6ffdc);\n    unaff_s3 = piVar7;\n    param_1 = piVar10;\n    puVar4 = param_2;\n    if (*piVar7 < (int)piVar12) goto LAB_0002772c;\n    piVar10 = (int *)piVar7[2];\n  }\n  pcVar13 = *(code **)(puVar14 + -0x7d98);\n  uVar8 = *(undefined4 *)(puVar4 + 8);\n  *(int **)(puVar15 + -0x30) = param_1;\n  puVar4 = (undefined *)(*pcVar13)(piVar10,0,uVar8,piVar12);\n  piVar9 = piVar10 + (int)((int)piVar12 + -1);\n  if (puVar4 == (undefined *)0x0) {\n    uVar6 = (uint)(*piVar9 == 0);\n    if ((int)param_3 < 0) {\n      iVar2 = uVar6 - (int)piVar12;\n      goto LAB_00027684;\n    }\n  }\n  else {\n    if ((int)param_3 < 0) {\n      do {\n        iVar2 = *piVar10;\n        *piVar10 = iVar2 + 1;\n        piVar10 = piVar10 + 1;\n      } while (iVar2 + 1 == 0);\n      puVar4 = (undefined *)((int)param_1 - (int)puVar4);\n      iVar2 = (uint)(*piVar9 == 0) - (int)piVar12;\n      goto LAB_00027684;\n    }\n    uVar6 = (uint)(*piVar9 == 0);\n  }\n  iVar2 = (int)piVar12 - uVar6;\nLAB_00027684:\n  unaff_s3[1] = iVar2;\n  return puVar4;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "undefined *puVar3;" type_identifier (pointer_declarator "*puVar3" * identifier) ;) (declaration "undefined *puVar4;" type_identifier (pointer_declarator "*puVar4" * identifier) ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "uint uVar6;" type_identifier identifier ;) (declaration "int *piVar7;" primitive_type (pointer_declarator "*piVar7" * identifier) ;) (declaration "undefined4 uVar8;" type_identifier identifier ;) (declaration "int *piVar9;" primitive_type (pointer_declarator "*piVar9" * identifier) ;) (declaration "int *piVar10;" primitive_type (pointer_declarator "*piVar10" * identifier) ;) (declaration "undefined4 *puVar11;" type_identifier (pointer_declarator "*puVar11" * identifier) ;) (declaration "int *piVar12;" primitive_type (pointer_declarator "*piVar12" * identifier) ;) (declaration "int *unaff_s3;" primitive_type (pointer_declarator "*unaff_s3" * identifier) ;) (declaration "code *pcVar13;" type_identifier (pointer_declarator "*pcVar13" * identifier) ;) (declaration "undefined *puVar14;" type_identifier (pointer_declarator "*puVar14" * identifier) ;) (declaration "undefined1 *puVar15;" type_identifier (pointer_declarator "*puVar15" * identifier) ;) (declaration "undefined1 auStack_70 [24];" type_identifier (array_declarator "auStack_70 [24]" identifier [ number_literal ]) ;) (declaration "int local_48;" primitive_type identifier ;) (declaration "int local_44 [2];" primitive_type (array_declarator "local_44 [2]" identifier [ number_literal ]) ;) (declaration "undefined *local_3c;" type_identifier (pointer_declarator "*local_3c" * identifier) ;) (declaration "int local_38 [2];" primitive_type (array_declarator "local_38 [2]" identifier [ number_literal ]) ;) (declaration "undefined *local_30;" type_identifier (pointer_declarator "*local_30" * identifier) ;) (declaration "int *local_2c;" primitive_type (pointer_declarator "*local_2c" * identifier) ;) (expression_statement "puVar4 = PTR___stack_chk_guard_00097540;" (assignment_expression "puVar4 = PTR___stack_chk_guard_00097540" identifier = identifier) ;) (expression_statement "puVar15 = auStack_70;" (assignment_expression "puVar15 = auStack_70" identifier = identifier) ;) (expression_statement "local_2c = *(int **)PTR___stack_chk_guard_00097540;" (assignment_expression "local_2c = *(int **)PTR___stack_chk_guard_00097540" identifier = (pointer_expression "*(int **)PTR___stack_chk_guard_00097540" * (cast_expression "(int **)PTR___stack_chk_guard_00097540" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) ;) (if_statement "if ((int)param_3 < 0x14) {\n    if ((int)param_3 < 3) {\n      iVar2 = 4;\n      iVar5 = 4;\n      piVar9 = (int *)0x1;\n    }\n    else {\n      puVar11 = (undefined4 *)(param_2 + 4);\n      piVar9 = (int *)0x1;\n      do {\n        uVar8 = *puVar11;\n        puVar11 = puVar11 + 1;\n        iVar2 = (*(code *)PTR___gmpn_mul_1_000970a4)(param_2,param_2,piVar9,uVar8);\n        iVar5 = (int)piVar9 * 4;\n        piVar9 = (int *)((int)piVar9 + (uint)(iVar2 != 0));\n        *(int *)(param_2 + iVar5) = iVar2;\n      } while ((undefined4 *)(param_2 + (int)param_3 * 4 + -4) != puVar11);\n      iVar2 = (int)piVar9 * 4;\n      iVar5 = (int)((int)param_3 + -1) * 4;\n    }\n    if ((int)piVar9 < *param_1) {\n      unaff_s3 = (int *)param_1[2];\n    }\n    else {\n      unaff_s3 = (int *)(*(code *)PTR___gmpz_realloc_000975bc)\n                                  (param_1,(undefined *)((int)piVar9 + 1));\n    }\n    param_3 = (int *)(param_2 + iVar5);\n    piVar12 = (int *)((int)unaff_s3 + iVar2);\n    piVar10 = piVar9;\n    iVar2 = (*(code *)PTR___gmpn_mul_1_000970a4)(unaff_s3,param_2,piVar9,*param_3);\n    puVar3 = (undefined *)((uint)(iVar2 != 0) + (int)piVar9);\n    *piVar12 = iVar2;\n    param_1[1] = (int)puVar3;\n    puVar15 = auStack_70;\n  }\n  else {\n    iVar5 = (int)param_3 >> 1;\n    local_48 = 0;\n    iVar2 = (int)param_3 - iVar5;\n    local_38[0] = iVar2;\n    if ((uint)(iVar2 * 4) < 0x7f01) {\n      iVar1 = -(iVar2 * 4 + 7U & 0xfffffff8);\n      puVar15 = auStack_70 + iVar1;\n      local_30 = (undefined *)((int)local_38 + iVar1 + -0x20);\n    }\n    else {\n      local_30 = (undefined *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_48);\n    }\n    local_3c = param_2 + iVar5 * 4;\n    local_44[0] = iVar2;\n    piVar12 = (int *)__gmpz_prodlimbs(local_38);\n    piVar10 = (int *)__gmpz_prodlimbs(local_44,param_2,iVar5);\n    piVar9 = (int *)((int)piVar12 + (int)piVar10);\n    if (*param_1 < (int)piVar9) {\n      iVar2 = (*(code *)PTR___gmpz_realloc_000975bc)(param_1,piVar9);\n    }\n    else {\n      iVar2 = param_1[2];\n    }\n    param_2 = local_30;\n    puVar3 = local_3c;\n    if ((int)piVar10 < (int)piVar12) {\n      *(int **)(puVar15 + 0x10) = piVar10;\n      piVar10 = piVar12;\n      iVar2 = (*(code *)PTR___gmpn_mul_000972b4)(iVar2,param_2,piVar12,puVar3);\n    }\n    else {\n      *(int **)(puVar15 + 0x10) = piVar12;\n      iVar2 = (*(code *)PTR___gmpn_mul_000972b4)();\n      param_2 = puVar3;\n    }\n    if (local_48 != 0) {\n      (*(code *)PTR___gmp_tmp_reentrant_free_00097614)();\n    }\n    puVar3 = (undefined *)((int)piVar9 - (uint)(iVar2 == 0));\n    param_1[1] = (int)puVar3;\n  }" if (parenthesized_expression "((int)param_3 < 0x14)" ( (binary_expression "(int)param_3 < 0x14" (cast_expression "(int)param_3" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n    if ((int)param_3 < 3) {\n      iVar2 = 4;\n      iVar5 = 4;\n      piVar9 = (int *)0x1;\n    }\n    else {\n      puVar11 = (undefined4 *)(param_2 + 4);\n      piVar9 = (int *)0x1;\n      do {\n        uVar8 = *puVar11;\n        puVar11 = puVar11 + 1;\n        iVar2 = (*(code *)PTR___gmpn_mul_1_000970a4)(param_2,param_2,piVar9,uVar8);\n        iVar5 = (int)piVar9 * 4;\n        piVar9 = (int *)((int)piVar9 + (uint)(iVar2 != 0));\n        *(int *)(param_2 + iVar5) = iVar2;\n      } while ((undefined4 *)(param_2 + (int)param_3 * 4 + -4) != puVar11);\n      iVar2 = (int)piVar9 * 4;\n      iVar5 = (int)((int)param_3 + -1) * 4;\n    }\n    if ((int)piVar9 < *param_1) {\n      unaff_s3 = (int *)param_1[2];\n    }\n    else {\n      unaff_s3 = (int *)(*(code *)PTR___gmpz_realloc_000975bc)\n                                  (param_1,(undefined *)((int)piVar9 + 1));\n    }\n    param_3 = (int *)(param_2 + iVar5);\n    piVar12 = (int *)((int)unaff_s3 + iVar2);\n    piVar10 = piVar9;\n    iVar2 = (*(code *)PTR___gmpn_mul_1_000970a4)(unaff_s3,param_2,piVar9,*param_3);\n    puVar3 = (undefined *)((uint)(iVar2 != 0) + (int)piVar9);\n    *piVar12 = iVar2;\n    param_1[1] = (int)puVar3;\n    puVar15 = auStack_70;\n  }" { (if_statement "if ((int)param_3 < 3) {\n      iVar2 = 4;\n      iVar5 = 4;\n      piVar9 = (int *)0x1;\n    }\n    else {\n      puVar11 = (undefined4 *)(param_2 + 4);\n      piVar9 = (int *)0x1;\n      do {\n        uVar8 = *puVar11;\n        puVar11 = puVar11 + 1;\n        iVar2 = (*(code *)PTR___gmpn_mul_1_000970a4)(param_2,param_2,piVar9,uVar8);\n        iVar5 = (int)piVar9 * 4;\n        piVar9 = (int *)((int)piVar9 + (uint)(iVar2 != 0));\n        *(int *)(param_2 + iVar5) = iVar2;\n      } while ((undefined4 *)(param_2 + (int)param_3 * 4 + -4) != puVar11);\n      iVar2 = (int)piVar9 * 4;\n      iVar5 = (int)((int)param_3 + -1) * 4;\n    }" if (parenthesized_expression "((int)param_3 < 3)" ( (binary_expression "(int)param_3 < 3" (cast_expression "(int)param_3" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n      iVar2 = 4;\n      iVar5 = 4;\n      piVar9 = (int *)0x1;\n    }" { (expression_statement "iVar2 = 4;" (assignment_expression "iVar2 = 4" identifier = number_literal) ;) (expression_statement "iVar5 = 4;" (assignment_expression "iVar5 = 4" identifier = number_literal) ;) (expression_statement "piVar9 = (int *)0x1;" (assignment_expression "piVar9 = (int *)0x1" identifier = (cast_expression "(int *)0x1" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) }) (else_clause "else {\n      puVar11 = (undefined4 *)(param_2 + 4);\n      piVar9 = (int *)0x1;\n      do {\n        uVar8 = *puVar11;\n        puVar11 = puVar11 + 1;\n        iVar2 = (*(code *)PTR___gmpn_mul_1_000970a4)(param_2,param_2,piVar9,uVar8);\n        iVar5 = (int)piVar9 * 4;\n        piVar9 = (int *)((int)piVar9 + (uint)(iVar2 != 0));\n        *(int *)(param_2 + iVar5) = iVar2;\n      } while ((undefined4 *)(param_2 + (int)param_3 * 4 + -4) != puVar11);\n      iVar2 = (int)piVar9 * 4;\n      iVar5 = (int)((int)param_3 + -1) * 4;\n    }" else (compound_statement "{\n      puVar11 = (undefined4 *)(param_2 + 4);\n      piVar9 = (int *)0x1;\n      do {\n        uVar8 = *puVar11;\n        puVar11 = puVar11 + 1;\n        iVar2 = (*(code *)PTR___gmpn_mul_1_000970a4)(param_2,param_2,piVar9,uVar8);\n        iVar5 = (int)piVar9 * 4;\n        piVar9 = (int *)((int)piVar9 + (uint)(iVar2 != 0));\n        *(int *)(param_2 + iVar5) = iVar2;\n      } while ((undefined4 *)(param_2 + (int)param_3 * 4 + -4) != puVar11);\n      iVar2 = (int)piVar9 * 4;\n      iVar5 = (int)((int)param_3 + -1) * 4;\n    }" { (expression_statement "puVar11 = (undefined4 *)(param_2 + 4);" (assignment_expression "puVar11 = (undefined4 *)(param_2 + 4)" identifier = (cast_expression "(undefined4 *)(param_2 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 4)" ( (binary_expression "param_2 + 4" identifier + number_literal) )))) ;) (expression_statement "piVar9 = (int *)0x1;" (assignment_expression "piVar9 = (int *)0x1" identifier = (cast_expression "(int *)0x1" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (do_statement "do {\n        uVar8 = *puVar11;\n        puVar11 = puVar11 + 1;\n        iVar2 = (*(code *)PTR___gmpn_mul_1_000970a4)(param_2,param_2,piVar9,uVar8);\n        iVar5 = (int)piVar9 * 4;\n        piVar9 = (int *)((int)piVar9 + (uint)(iVar2 != 0));\n        *(int *)(param_2 + iVar5) = iVar2;\n      } while ((undefined4 *)(param_2 + (int)param_3 * 4 + -4) != puVar11);" do (compound_statement "{\n        uVar8 = *puVar11;\n        puVar11 = puVar11 + 1;\n        iVar2 = (*(code *)PTR___gmpn_mul_1_000970a4)(param_2,param_2,piVar9,uVar8);\n        iVar5 = (int)piVar9 * 4;\n        piVar9 = (int *)((int)piVar9 + (uint)(iVar2 != 0));\n        *(int *)(param_2 + iVar5) = iVar2;\n      }" { (expression_statement "uVar8 = *puVar11;" (assignment_expression "uVar8 = *puVar11" identifier = (pointer_expression "*puVar11" * identifier)) ;) (expression_statement "puVar11 = puVar11 + 1;" (assignment_expression "puVar11 = puVar11 + 1" identifier = (binary_expression "puVar11 + 1" identifier + number_literal)) ;) (expression_statement "iVar2 = (*(code *)PTR___gmpn_mul_1_000970a4)(param_2,param_2,piVar9,uVar8);" (assignment_expression "iVar2 = (*(code *)PTR___gmpn_mul_1_000970a4)(param_2,param_2,piVar9,uVar8)" identifier = (call_expression "(*(code *)PTR___gmpn_mul_1_000970a4)(param_2,param_2,piVar9,uVar8)" (parenthesized_expression "(*(code *)PTR___gmpn_mul_1_000970a4)" ( (pointer_expression "*(code *)PTR___gmpn_mul_1_000970a4" * (cast_expression "(code *)PTR___gmpn_mul_1_000970a4" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(param_2,param_2,piVar9,uVar8)" ( identifier , identifier , identifier , identifier )))) ;) (expression_statement "iVar5 = (int)piVar9 * 4;" (assignment_expression "iVar5 = (int)piVar9 * 4" identifier = (binary_expression "(int)piVar9 * 4" (cast_expression "(int)piVar9" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal)) ;) (expression_statement "piVar9 = (int *)((int)piVar9 + (uint)(iVar2 != 0));" (assignment_expression "piVar9 = (int *)((int)piVar9 + (uint)(iVar2 != 0))" identifier = (cast_expression "(int *)((int)piVar9 + (uint)(iVar2 != 0))" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar9 + (uint)(iVar2 != 0))" ( (binary_expression "(int)piVar9 + (uint)(iVar2 != 0)" (cast_expression "(int)piVar9" ( (type_descriptor "int" primitive_type) ) identifier) + (call_expression "(uint)(iVar2 != 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(iVar2 != 0)" ( (binary_expression "iVar2 != 0" identifier != number_literal) )))) )))) ;) (expression_statement "*(int *)(param_2 + iVar5) = iVar2;" (assignment_expression "*(int *)(param_2 + iVar5) = iVar2" (pointer_expression "*(int *)(param_2 + iVar5)" * (cast_expression "(int *)(param_2 + iVar5)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + iVar5)" ( (binary_expression "param_2 + iVar5" identifier + identifier) )))) = identifier) ;) }) while (parenthesized_expression "((undefined4 *)(param_2 + (int)param_3 * 4 + -4) != puVar11)" ( (binary_expression "(undefined4 *)(param_2 + (int)param_3 * 4 + -4) != puVar11" (cast_expression "(undefined4 *)(param_2 + (int)param_3 * 4 + -4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + (int)param_3 * 4 + -4)" ( (binary_expression "param_2 + (int)param_3 * 4 + -4" (binary_expression "param_2 + (int)param_3 * 4" identifier + (binary_expression "(int)param_3 * 4" (cast_expression "(int)param_3" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal)) + number_literal) ))) != identifier) )) ;) (expression_statement "iVar2 = (int)piVar9 * 4;" (assignment_expression "iVar2 = (int)piVar9 * 4" identifier = (binary_expression "(int)piVar9 * 4" (cast_expression "(int)piVar9" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal)) ;) (expression_statement "iVar5 = (int)((int)param_3 + -1) * 4;" (assignment_expression "iVar5 = (int)((int)param_3 + -1) * 4" identifier = (binary_expression "(int)((int)param_3 + -1) * 4" (cast_expression "(int)((int)param_3 + -1)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((int)param_3 + -1)" ( (binary_expression "(int)param_3 + -1" (cast_expression "(int)param_3" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))) * number_literal)) ;) }))) (if_statement "if ((int)piVar9 < *param_1) {\n      unaff_s3 = (int *)param_1[2];\n    }\n    else {\n      unaff_s3 = (int *)(*(code *)PTR___gmpz_realloc_000975bc)\n                                  (param_1,(undefined *)((int)piVar9 + 1));\n    }" if (parenthesized_expression "((int)piVar9 < *param_1)" ( (binary_expression "(int)piVar9 < *param_1" (cast_expression "(int)piVar9" ( (type_descriptor "int" primitive_type) ) identifier) < (pointer_expression "*param_1" * identifier)) )) (compound_statement "{\n      unaff_s3 = (int *)param_1[2];\n    }" { (expression_statement "unaff_s3 = (int *)param_1[2];" (assignment_expression "unaff_s3 = (int *)param_1[2]" identifier = (cast_expression "(int *)param_1[2]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[2]" identifier [ number_literal ]))) ;) }) (else_clause "else {\n      unaff_s3 = (int *)(*(code *)PTR___gmpz_realloc_000975bc)\n                                  (param_1,(undefined *)((int)piVar9 + 1));\n    }" else (compound_statement "{\n      unaff_s3 = (int *)(*(code *)PTR___gmpz_realloc_000975bc)\n                                  (param_1,(undefined *)((int)piVar9 + 1));\n    }" { (expression_statement "unaff_s3 = (int *)(*(code *)PTR___gmpz_realloc_000975bc)\n                                  (param_1,(undefined *)((int)piVar9 + 1));" (assignment_expression "unaff_s3 = (int *)(*(code *)PTR___gmpz_realloc_000975bc)\n                                  (param_1,(undefined *)((int)piVar9 + 1))" identifier = (cast_expression "(int *)(*(code *)PTR___gmpz_realloc_000975bc)\n                                  (param_1,(undefined *)((int)piVar9 + 1))" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)PTR___gmpz_realloc_000975bc)\n                                  (param_1,(undefined *)((int)piVar9 + 1))" (parenthesized_expression "(*(code *)PTR___gmpz_realloc_000975bc)" ( (pointer_expression "*(code *)PTR___gmpz_realloc_000975bc" * (cast_expression "(code *)PTR___gmpz_realloc_000975bc" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(param_1,(undefined *)((int)piVar9 + 1))" ( identifier , (cast_expression "(undefined *)((int)piVar9 + 1)" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar9 + 1)" ( (binary_expression "(int)piVar9 + 1" (cast_expression "(int)piVar9" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))) ))))) ;) }))) (expression_statement "param_3 = (int *)(param_2 + iVar5);" (assignment_expression "param_3 = (int *)(param_2 + iVar5)" identifier = (cast_expression "(int *)(param_2 + iVar5)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + iVar5)" ( (binary_expression "param_2 + iVar5" identifier + identifier) )))) ;) (expression_statement "piVar12 = (int *)((int)unaff_s3 + iVar2);" (assignment_expression "piVar12 = (int *)((int)unaff_s3 + iVar2)" identifier = (cast_expression "(int *)((int)unaff_s3 + iVar2)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)unaff_s3 + iVar2)" ( (binary_expression "(int)unaff_s3 + iVar2" (cast_expression "(int)unaff_s3" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) ;) (expression_statement "piVar10 = piVar9;" (assignment_expression "piVar10 = piVar9" identifier = identifier) ;) (expression_statement "iVar2 = (*(code *)PTR___gmpn_mul_1_000970a4)(unaff_s3,param_2,piVar9,*param_3);" (assignment_expression "iVar2 = (*(code *)PTR___gmpn_mul_1_000970a4)(unaff_s3,param_2,piVar9,*param_3)" identifier = (call_expression "(*(code *)PTR___gmpn_mul_1_000970a4)(unaff_s3,param_2,piVar9,*param_3)" (parenthesized_expression "(*(code *)PTR___gmpn_mul_1_000970a4)" ( (pointer_expression "*(code *)PTR___gmpn_mul_1_000970a4" * (cast_expression "(code *)PTR___gmpn_mul_1_000970a4" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(unaff_s3,param_2,piVar9,*param_3)" ( identifier , identifier , identifier , (pointer_expression "*param_3" * identifier) )))) ;) (expression_statement "puVar3 = (undefined *)((uint)(iVar2 != 0) + (int)piVar9);" (assignment_expression "puVar3 = (undefined *)((uint)(iVar2 != 0) + (int)piVar9)" identifier = (cast_expression "(undefined *)((uint)(iVar2 != 0) + (int)piVar9)" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((uint)(iVar2 != 0) + (int)piVar9)" ( (binary_expression "(uint)(iVar2 != 0) + (int)piVar9" (call_expression "(uint)(iVar2 != 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(iVar2 != 0)" ( (binary_expression "iVar2 != 0" identifier != number_literal) ))) + (cast_expression "(int)piVar9" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) (expression_statement "*piVar12 = iVar2;" (assignment_expression "*piVar12 = iVar2" (pointer_expression "*piVar12" * identifier) = identifier) ;) (expression_statement "param_1[1] = (int)puVar3;" (assignment_expression "param_1[1] = (int)puVar3" (subscript_expression "param_1[1]" identifier [ number_literal ]) = (cast_expression "(int)puVar3" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "puVar15 = auStack_70;" (assignment_expression "puVar15 = auStack_70" identifier = identifier) ;) }) (else_clause "else {\n    iVar5 = (int)param_3 >> 1;\n    local_48 = 0;\n    iVar2 = (int)param_3 - iVar5;\n    local_38[0] = iVar2;\n    if ((uint)(iVar2 * 4) < 0x7f01) {\n      iVar1 = -(iVar2 * 4 + 7U & 0xfffffff8);\n      puVar15 = auStack_70 + iVar1;\n      local_30 = (undefined *)((int)local_38 + iVar1 + -0x20);\n    }\n    else {\n      local_30 = (undefined *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_48);\n    }\n    local_3c = param_2 + iVar5 * 4;\n    local_44[0] = iVar2;\n    piVar12 = (int *)__gmpz_prodlimbs(local_38);\n    piVar10 = (int *)__gmpz_prodlimbs(local_44,param_2,iVar5);\n    piVar9 = (int *)((int)piVar12 + (int)piVar10);\n    if (*param_1 < (int)piVar9) {\n      iVar2 = (*(code *)PTR___gmpz_realloc_000975bc)(param_1,piVar9);\n    }\n    else {\n      iVar2 = param_1[2];\n    }\n    param_2 = local_30;\n    puVar3 = local_3c;\n    if ((int)piVar10 < (int)piVar12) {\n      *(int **)(puVar15 + 0x10) = piVar10;\n      piVar10 = piVar12;\n      iVar2 = (*(code *)PTR___gmpn_mul_000972b4)(iVar2,param_2,piVar12,puVar3);\n    }\n    else {\n      *(int **)(puVar15 + 0x10) = piVar12;\n      iVar2 = (*(code *)PTR___gmpn_mul_000972b4)();\n      param_2 = puVar3;\n    }\n    if (local_48 != 0) {\n      (*(code *)PTR___gmp_tmp_reentrant_free_00097614)();\n    }\n    puVar3 = (undefined *)((int)piVar9 - (uint)(iVar2 == 0));\n    param_1[1] = (int)puVar3;\n  }" else (compound_statement "{\n    iVar5 = (int)param_3 >> 1;\n    local_48 = 0;\n    iVar2 = (int)param_3 - iVar5;\n    local_38[0] = iVar2;\n    if ((uint)(iVar2 * 4) < 0x7f01) {\n      iVar1 = -(iVar2 * 4 + 7U & 0xfffffff8);\n      puVar15 = auStack_70 + iVar1;\n      local_30 = (undefined *)((int)local_38 + iVar1 + -0x20);\n    }\n    else {\n      local_30 = (undefined *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_48);\n    }\n    local_3c = param_2 + iVar5 * 4;\n    local_44[0] = iVar2;\n    piVar12 = (int *)__gmpz_prodlimbs(local_38);\n    piVar10 = (int *)__gmpz_prodlimbs(local_44,param_2,iVar5);\n    piVar9 = (int *)((int)piVar12 + (int)piVar10);\n    if (*param_1 < (int)piVar9) {\n      iVar2 = (*(code *)PTR___gmpz_realloc_000975bc)(param_1,piVar9);\n    }\n    else {\n      iVar2 = param_1[2];\n    }\n    param_2 = local_30;\n    puVar3 = local_3c;\n    if ((int)piVar10 < (int)piVar12) {\n      *(int **)(puVar15 + 0x10) = piVar10;\n      piVar10 = piVar12;\n      iVar2 = (*(code *)PTR___gmpn_mul_000972b4)(iVar2,param_2,piVar12,puVar3);\n    }\n    else {\n      *(int **)(puVar15 + 0x10) = piVar12;\n      iVar2 = (*(code *)PTR___gmpn_mul_000972b4)();\n      param_2 = puVar3;\n    }\n    if (local_48 != 0) {\n      (*(code *)PTR___gmp_tmp_reentrant_free_00097614)();\n    }\n    puVar3 = (undefined *)((int)piVar9 - (uint)(iVar2 == 0));\n    param_1[1] = (int)puVar3;\n  }" { (expression_statement "iVar5 = (int)param_3 >> 1;" (assignment_expression "iVar5 = (int)param_3 >> 1" identifier = (binary_expression "(int)param_3 >> 1" (cast_expression "(int)param_3" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal)) ;) (expression_statement "local_48 = 0;" (assignment_expression "local_48 = 0" identifier = number_literal) ;) (expression_statement "iVar2 = (int)param_3 - iVar5;" (assignment_expression "iVar2 = (int)param_3 - iVar5" identifier = (binary_expression "(int)param_3 - iVar5" (cast_expression "(int)param_3" ( (type_descriptor "int" primitive_type) ) identifier) - identifier)) ;) (expression_statement "local_38[0] = iVar2;" (assignment_expression "local_38[0] = iVar2" (subscript_expression "local_38[0]" identifier [ number_literal ]) = identifier) ;) (if_statement "if ((uint)(iVar2 * 4) < 0x7f01) {\n      iVar1 = -(iVar2 * 4 + 7U & 0xfffffff8);\n      puVar15 = auStack_70 + iVar1;\n      local_30 = (undefined *)((int)local_38 + iVar1 + -0x20);\n    }\n    else {\n      local_30 = (undefined *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_48);\n    }" if (parenthesized_expression "((uint)(iVar2 * 4) < 0x7f01)" ( (binary_expression "(uint)(iVar2 * 4) < 0x7f01" (call_expression "(uint)(iVar2 * 4)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(iVar2 * 4)" ( (binary_expression "iVar2 * 4" identifier * number_literal) ))) < number_literal) )) (compound_statement "{\n      iVar1 = -(iVar2 * 4 + 7U & 0xfffffff8);\n      puVar15 = auStack_70 + iVar1;\n      local_30 = (undefined *)((int)local_38 + iVar1 + -0x20);\n    }" { (expression_statement "iVar1 = -(iVar2 * 4 + 7U & 0xfffffff8);" (assignment_expression "iVar1 = -(iVar2 * 4 + 7U & 0xfffffff8)" identifier = (unary_expression "-(iVar2 * 4 + 7U & 0xfffffff8)" - (parenthesized_expression "(iVar2 * 4 + 7U & 0xfffffff8)" ( (binary_expression "iVar2 * 4 + 7U & 0xfffffff8" (binary_expression "iVar2 * 4 + 7U" (binary_expression "iVar2 * 4" identifier * number_literal) + number_literal) & number_literal) )))) ;) (expression_statement "puVar15 = auStack_70 + iVar1;" (assignment_expression "puVar15 = auStack_70 + iVar1" identifier = (binary_expression "auStack_70 + iVar1" identifier + identifier)) ;) (expression_statement "local_30 = (undefined *)((int)local_38 + iVar1 + -0x20);" (assignment_expression "local_30 = (undefined *)((int)local_38 + iVar1 + -0x20)" identifier = (cast_expression "(undefined *)((int)local_38 + iVar1 + -0x20)" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_38 + iVar1 + -0x20)" ( (binary_expression "(int)local_38 + iVar1 + -0x20" (binary_expression "(int)local_38 + iVar1" (cast_expression "(int)local_38" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) + number_literal) )))) ;) }) (else_clause "else {\n      local_30 = (undefined *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_48);\n    }" else (compound_statement "{\n      local_30 = (undefined *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_48);\n    }" { (expression_statement "local_30 = (undefined *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_48);" (assignment_expression "local_30 = (undefined *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_48)" identifier = (cast_expression "(undefined *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_48)" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_48)" (parenthesized_expression "(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)" ( (pointer_expression "*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0" * (cast_expression "(code *)PTR___gmp_tmp_reentrant_alloc_000972f0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(&local_48)" ( (pointer_expression "&local_48" & identifier) ))))) ;) }))) (expression_statement "local_3c = param_2 + iVar5 * 4;" (assignment_expression "local_3c = param_2 + iVar5 * 4" identifier = (binary_expression "param_2 + iVar5 * 4" identifier + (binary_expression "iVar5 * 4" identifier * number_literal))) ;) (expression_statement "local_44[0] = iVar2;" (assignment_expression "local_44[0] = iVar2" (subscript_expression "local_44[0]" identifier [ number_literal ]) = identifier) ;) (expression_statement "piVar12 = (int *)__gmpz_prodlimbs(local_38);" (assignment_expression "piVar12 = (int *)__gmpz_prodlimbs(local_38)" identifier = (cast_expression "(int *)__gmpz_prodlimbs(local_38)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "__gmpz_prodlimbs(local_38)" identifier (argument_list "(local_38)" ( identifier ))))) ;) (expression_statement "piVar10 = (int *)__gmpz_prodlimbs(local_44,param_2,iVar5);" (assignment_expression "piVar10 = (int *)__gmpz_prodlimbs(local_44,param_2,iVar5)" identifier = (cast_expression "(int *)__gmpz_prodlimbs(local_44,param_2,iVar5)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "__gmpz_prodlimbs(local_44,param_2,iVar5)" identifier (argument_list "(local_44,param_2,iVar5)" ( identifier , identifier , identifier ))))) ;) (expression_statement "piVar9 = (int *)((int)piVar12 + (int)piVar10);" (assignment_expression "piVar9 = (int *)((int)piVar12 + (int)piVar10)" identifier = (cast_expression "(int *)((int)piVar12 + (int)piVar10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar12 + (int)piVar10)" ( (binary_expression "(int)piVar12 + (int)piVar10" (cast_expression "(int)piVar12" ( (type_descriptor "int" primitive_type) ) identifier) + (cast_expression "(int)piVar10" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) (if_statement "if (*param_1 < (int)piVar9) {\n      iVar2 = (*(code *)PTR___gmpz_realloc_000975bc)(param_1,piVar9);\n    }\n    else {\n      iVar2 = param_1[2];\n    }" if (parenthesized_expression "(*param_1 < (int)piVar9)" ( (binary_expression "*param_1 < (int)piVar9" (pointer_expression "*param_1" * identifier) < (cast_expression "(int)piVar9" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n      iVar2 = (*(code *)PTR___gmpz_realloc_000975bc)(param_1,piVar9);\n    }" { (expression_statement "iVar2 = (*(code *)PTR___gmpz_realloc_000975bc)(param_1,piVar9);" (assignment_expression "iVar2 = (*(code *)PTR___gmpz_realloc_000975bc)(param_1,piVar9)" identifier = (call_expression "(*(code *)PTR___gmpz_realloc_000975bc)(param_1,piVar9)" (parenthesized_expression "(*(code *)PTR___gmpz_realloc_000975bc)" ( (pointer_expression "*(code *)PTR___gmpz_realloc_000975bc" * (cast_expression "(code *)PTR___gmpz_realloc_000975bc" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(param_1,piVar9)" ( identifier , identifier )))) ;) }) (else_clause "else {\n      iVar2 = param_1[2];\n    }" else (compound_statement "{\n      iVar2 = param_1[2];\n    }" { (expression_statement "iVar2 = param_1[2];" (assignment_expression "iVar2 = param_1[2]" identifier = (subscript_expression "param_1[2]" identifier [ number_literal ])) ;) }))) (expression_statement "param_2 = local_30;" (assignment_expression "param_2 = local_30" identifier = identifier) ;) (expression_statement "puVar3 = local_3c;" (assignment_expression "puVar3 = local_3c" identifier = identifier) ;) (if_statement "if ((int)piVar10 < (int)piVar12) {\n      *(int **)(puVar15 + 0x10) = piVar10;\n      piVar10 = piVar12;\n      iVar2 = (*(code *)PTR___gmpn_mul_000972b4)(iVar2,param_2,piVar12,puVar3);\n    }\n    else {\n      *(int **)(puVar15 + 0x10) = piVar12;\n      iVar2 = (*(code *)PTR___gmpn_mul_000972b4)();\n      param_2 = puVar3;\n    }" if (parenthesized_expression "((int)piVar10 < (int)piVar12)" ( (binary_expression "(int)piVar10 < (int)piVar12" (cast_expression "(int)piVar10" ( (type_descriptor "int" primitive_type) ) identifier) < (cast_expression "(int)piVar12" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n      *(int **)(puVar15 + 0x10) = piVar10;\n      piVar10 = piVar12;\n      iVar2 = (*(code *)PTR___gmpn_mul_000972b4)(iVar2,param_2,piVar12,puVar3);\n    }" { (expression_statement "*(int **)(puVar15 + 0x10) = piVar10;" (assignment_expression "*(int **)(puVar15 + 0x10) = piVar10" (pointer_expression "*(int **)(puVar15 + 0x10)" * (cast_expression "(int **)(puVar15 + 0x10)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar15 + 0x10)" ( (binary_expression "puVar15 + 0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "piVar10 = piVar12;" (assignment_expression "piVar10 = piVar12" identifier = identifier) ;) (expression_statement "iVar2 = (*(code *)PTR___gmpn_mul_000972b4)(iVar2,param_2,piVar12,puVar3);" (assignment_expression "iVar2 = (*(code *)PTR___gmpn_mul_000972b4)(iVar2,param_2,piVar12,puVar3)" identifier = (call_expression "(*(code *)PTR___gmpn_mul_000972b4)(iVar2,param_2,piVar12,puVar3)" (parenthesized_expression "(*(code *)PTR___gmpn_mul_000972b4)" ( (pointer_expression "*(code *)PTR___gmpn_mul_000972b4" * (cast_expression "(code *)PTR___gmpn_mul_000972b4" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(iVar2,param_2,piVar12,puVar3)" ( identifier , identifier , identifier , identifier )))) ;) }) (else_clause "else {\n      *(int **)(puVar15 + 0x10) = piVar12;\n      iVar2 = (*(code *)PTR___gmpn_mul_000972b4)();\n      param_2 = puVar3;\n    }" else (compound_statement "{\n      *(int **)(puVar15 + 0x10) = piVar12;\n      iVar2 = (*(code *)PTR___gmpn_mul_000972b4)();\n      param_2 = puVar3;\n    }" { (expression_statement "*(int **)(puVar15 + 0x10) = piVar12;" (assignment_expression "*(int **)(puVar15 + 0x10) = piVar12" (pointer_expression "*(int **)(puVar15 + 0x10)" * (cast_expression "(int **)(puVar15 + 0x10)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar15 + 0x10)" ( (binary_expression "puVar15 + 0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "iVar2 = (*(code *)PTR___gmpn_mul_000972b4)();" (assignment_expression "iVar2 = (*(code *)PTR___gmpn_mul_000972b4)()" identifier = (call_expression "(*(code *)PTR___gmpn_mul_000972b4)()" (parenthesized_expression "(*(code *)PTR___gmpn_mul_000972b4)" ( (pointer_expression "*(code *)PTR___gmpn_mul_000972b4" * (cast_expression "(code *)PTR___gmpn_mul_000972b4" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( )))) ;) (expression_statement "param_2 = puVar3;" (assignment_expression "param_2 = puVar3" identifier = identifier) ;) }))) (if_statement "if (local_48 != 0) {\n      (*(code *)PTR___gmp_tmp_reentrant_free_00097614)();\n    }" if (parenthesized_expression "(local_48 != 0)" ( (binary_expression "local_48 != 0" identifier != number_literal) )) (compound_statement "{\n      (*(code *)PTR___gmp_tmp_reentrant_free_00097614)();\n    }" { (expression_statement "(*(code *)PTR___gmp_tmp_reentrant_free_00097614)();" (call_expression "(*(code *)PTR___gmp_tmp_reentrant_free_00097614)()" (parenthesized_expression "(*(code *)PTR___gmp_tmp_reentrant_free_00097614)" ( (pointer_expression "*(code *)PTR___gmp_tmp_reentrant_free_00097614" * (cast_expression "(code *)PTR___gmp_tmp_reentrant_free_00097614" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) })) (expression_statement "puVar3 = (undefined *)((int)piVar9 - (uint)(iVar2 == 0));" (assignment_expression "puVar3 = (undefined *)((int)piVar9 - (uint)(iVar2 == 0))" identifier = (cast_expression "(undefined *)((int)piVar9 - (uint)(iVar2 == 0))" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar9 - (uint)(iVar2 == 0))" ( (binary_expression "(int)piVar9 - (uint)(iVar2 == 0)" (cast_expression "(int)piVar9" ( (type_descriptor "int" primitive_type) ) identifier) - (call_expression "(uint)(iVar2 == 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(iVar2 == 0)" ( (binary_expression "iVar2 == 0" identifier == number_literal) )))) )))) ;) (expression_statement "param_1[1] = (int)puVar3;" (assignment_expression "param_1[1] = (int)puVar3" (subscript_expression "param_1[1]" identifier [ number_literal ]) = (cast_expression "(int)puVar3" ( (type_descriptor "int" primitive_type) ) identifier)) ;) }))) (if_statement "if (local_2c == *(int **)puVar4) {\n    return puVar3;\n  }" if (parenthesized_expression "(local_2c == *(int **)puVar4)" ( (binary_expression "local_2c == *(int **)puVar4" identifier == (pointer_expression "*(int **)puVar4" * (cast_expression "(int **)puVar4" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) )) (compound_statement "{\n    return puVar3;\n  }" { (return_statement "return puVar3;" return identifier ;) })) (expression_statement "uVar8 = 0x275d4;" (assignment_expression "uVar8 = 0x275d4" identifier = number_literal) ;) (expression_statement "piVar7 = local_2c;" (assignment_expression "piVar7 = local_2c" identifier = identifier) ;) (expression_statement "puVar3 = PTR___stack_chk_fail_000974d0;" (assignment_expression "puVar3 = PTR___stack_chk_fail_000974d0" identifier = identifier) ;) (expression_statement "(*(code *)PTR___stack_chk_fail_000974d0)();" (call_expression "(*(code *)PTR___stack_chk_fail_000974d0)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_000974d0)" ( (pointer_expression "*(code *)PTR___stack_chk_fail_000974d0" * (cast_expression "(code *)PTR___stack_chk_fail_000974d0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (expression_statement "puVar14 = puVar3 + 0x77a60;" (assignment_expression "puVar14 = puVar3 + 0x77a60" identifier = (binary_expression "puVar3 + 0x77a60" identifier + number_literal)) ;) (expression_statement "*(undefined **)(puVar15 + -0x28) = puVar14;" (assignment_expression "*(undefined **)(puVar15 + -0x28) = puVar14" (pointer_expression "*(undefined **)(puVar15 + -0x28)" * (cast_expression "(undefined **)(puVar15 + -0x28)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar15 + -0x28)" ( (binary_expression "puVar15 + -0x28" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar15 + -4) = uVar8;" (assignment_expression "*(undefined4 *)(puVar15 + -4) = uVar8" (pointer_expression "*(undefined4 *)(puVar15 + -4)" * (cast_expression "(undefined4 *)(puVar15 + -4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar15 + -4)" ( (binary_expression "puVar15 + -4" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined **)(puVar15 + -8) = puVar4;" (assignment_expression "*(undefined **)(puVar15 + -8) = puVar4" (pointer_expression "*(undefined **)(puVar15 + -8)" * (cast_expression "(undefined **)(puVar15 + -8)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar15 + -8)" ( (binary_expression "puVar15 + -8" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int **)(puVar15 + -0xc) = param_1;" (assignment_expression "*(int **)(puVar15 + -0xc) = param_1" (pointer_expression "*(int **)(puVar15 + -0xc)" * (cast_expression "(int **)(puVar15 + -0xc)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar15 + -0xc)" ( (binary_expression "puVar15 + -0xc" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int **)(puVar15 + -0x10) = unaff_s3;" (assignment_expression "*(int **)(puVar15 + -0x10) = unaff_s3" (pointer_expression "*(int **)(puVar15 + -0x10)" * (cast_expression "(int **)(puVar15 + -0x10)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar15 + -0x10)" ( (binary_expression "puVar15 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int **)(puVar15 + -0x14) = param_3;" (assignment_expression "*(int **)(puVar15 + -0x14) = param_3" (pointer_expression "*(int **)(puVar15 + -0x14)" * (cast_expression "(int **)(puVar15 + -0x14)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar15 + -0x14)" ( (binary_expression "puVar15 + -0x14" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int **)(puVar15 + -0x18) = piVar12;" (assignment_expression "*(int **)(puVar15 + -0x18) = piVar12" (pointer_expression "*(int **)(puVar15 + -0x18)" * (cast_expression "(int **)(puVar15 + -0x18)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar15 + -0x18)" ( (binary_expression "puVar15 + -0x18" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int **)(puVar15 + -0x1c) = piVar9;" (assignment_expression "*(int **)(puVar15 + -0x1c) = piVar9" (pointer_expression "*(int **)(puVar15 + -0x1c)" * (cast_expression "(int **)(puVar15 + -0x1c)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar15 + -0x1c)" ( (binary_expression "puVar15 + -0x1c" identifier + number_literal) )))) = identifier) ;) (if_statement "if (piVar10 == (int *)0x0) {\n    pcVar13 = *(code **)(puVar3 + 0x6fffc);\n    (*pcVar13)();\nLAB_0002772c:\n    piVar10 = (int *)(*pcVar13)(unaff_s3,piVar12);\n    puVar14 = *(undefined **)(puVar15 + -0x28);\n  }\n  else {\n    param_3 = *(int **)(param_2 + 4);\n    if (param_3 == (int *)0x0) {\n      piVar7[1] = 0;\n      return (undefined *)0x0;\n    }\n    piVar12 = param_3;\n    if ((int)param_3 < 0) {\n      piVar12 = (int *)-(int)param_3;\n    }\n    pcVar13 = *(code **)(puVar3 + 0x6ffdc);\n    unaff_s3 = piVar7;\n    param_1 = piVar10;\n    puVar4 = param_2;\n    if (*piVar7 < (int)piVar12) goto LAB_0002772c;\n    piVar10 = (int *)piVar7[2];\n  }" if (parenthesized_expression "(piVar10 == (int *)0x0)" ( (binary_expression "piVar10 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    pcVar13 = *(code **)(puVar3 + 0x6fffc);\n    (*pcVar13)();\nLAB_0002772c:\n    piVar10 = (int *)(*pcVar13)(unaff_s3,piVar12);\n    puVar14 = *(undefined **)(puVar15 + -0x28);\n  }" { (expression_statement "pcVar13 = *(code **)(puVar3 + 0x6fffc);" (assignment_expression "pcVar13 = *(code **)(puVar3 + 0x6fffc)" identifier = (pointer_expression "*(code **)(puVar3 + 0x6fffc)" * (cast_expression "(code **)(puVar3 + 0x6fffc)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar3 + 0x6fffc)" ( (binary_expression "puVar3 + 0x6fffc" identifier + number_literal) ))))) ;) (expression_statement "(*pcVar13)();" (call_expression "(*pcVar13)()" (parenthesized_expression "(*pcVar13)" ( (pointer_expression "*pcVar13" * identifier) )) (argument_list "()" ( ))) ;) (labeled_statement "LAB_0002772c:\n    piVar10 = (int *)(*pcVar13)(unaff_s3,piVar12);" statement_identifier : (expression_statement "piVar10 = (int *)(*pcVar13)(unaff_s3,piVar12);" (assignment_expression "piVar10 = (int *)(*pcVar13)(unaff_s3,piVar12)" identifier = (cast_expression "(int *)(*pcVar13)(unaff_s3,piVar12)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "(*pcVar13)(unaff_s3,piVar12)" (parenthesized_expression "(*pcVar13)" ( (pointer_expression "*pcVar13" * identifier) )) (argument_list "(unaff_s3,piVar12)" ( identifier , identifier ))))) ;)) (expression_statement "puVar14 = *(undefined **)(puVar15 + -0x28);" (assignment_expression "puVar14 = *(undefined **)(puVar15 + -0x28)" identifier = (pointer_expression "*(undefined **)(puVar15 + -0x28)" * (cast_expression "(undefined **)(puVar15 + -0x28)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar15 + -0x28)" ( (binary_expression "puVar15 + -0x28" identifier + number_literal) ))))) ;) }) (else_clause "else {\n    param_3 = *(int **)(param_2 + 4);\n    if (param_3 == (int *)0x0) {\n      piVar7[1] = 0;\n      return (undefined *)0x0;\n    }\n    piVar12 = param_3;\n    if ((int)param_3 < 0) {\n      piVar12 = (int *)-(int)param_3;\n    }\n    pcVar13 = *(code **)(puVar3 + 0x6ffdc);\n    unaff_s3 = piVar7;\n    param_1 = piVar10;\n    puVar4 = param_2;\n    if (*piVar7 < (int)piVar12) goto LAB_0002772c;\n    piVar10 = (int *)piVar7[2];\n  }" else (compound_statement "{\n    param_3 = *(int **)(param_2 + 4);\n    if (param_3 == (int *)0x0) {\n      piVar7[1] = 0;\n      return (undefined *)0x0;\n    }\n    piVar12 = param_3;\n    if ((int)param_3 < 0) {\n      piVar12 = (int *)-(int)param_3;\n    }\n    pcVar13 = *(code **)(puVar3 + 0x6ffdc);\n    unaff_s3 = piVar7;\n    param_1 = piVar10;\n    puVar4 = param_2;\n    if (*piVar7 < (int)piVar12) goto LAB_0002772c;\n    piVar10 = (int *)piVar7[2];\n  }" { (expression_statement "param_3 = *(int **)(param_2 + 4);" (assignment_expression "param_3 = *(int **)(param_2 + 4)" identifier = (pointer_expression "*(int **)(param_2 + 4)" * (cast_expression "(int **)(param_2 + 4)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_2 + 4)" ( (binary_expression "param_2 + 4" identifier + number_literal) ))))) ;) (if_statement "if (param_3 == (int *)0x0) {\n      piVar7[1] = 0;\n      return (undefined *)0x0;\n    }" if (parenthesized_expression "(param_3 == (int *)0x0)" ( (binary_expression "param_3 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      piVar7[1] = 0;\n      return (undefined *)0x0;\n    }" { (expression_statement "piVar7[1] = 0;" (assignment_expression "piVar7[1] = 0" (subscript_expression "piVar7[1]" identifier [ number_literal ]) = number_literal) ;) (return_statement "return (undefined *)0x0;" return (cast_expression "(undefined *)0x0" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ;) })) (expression_statement "piVar12 = param_3;" (assignment_expression "piVar12 = param_3" identifier = identifier) ;) (if_statement "if ((int)param_3 < 0) {\n      piVar12 = (int *)-(int)param_3;\n    }" if (parenthesized_expression "((int)param_3 < 0)" ( (binary_expression "(int)param_3 < 0" (cast_expression "(int)param_3" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n      piVar12 = (int *)-(int)param_3;\n    }" { (expression_statement "piVar12 = (int *)-(int)param_3;" (assignment_expression "piVar12 = (int *)-(int)param_3" identifier = (cast_expression "(int *)-(int)param_3" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (unary_expression "-(int)param_3" - (cast_expression "(int)param_3" ( (type_descriptor "int" primitive_type) ) identifier)))) ;) })) (expression_statement "pcVar13 = *(code **)(puVar3 + 0x6ffdc);" (assignment_expression "pcVar13 = *(code **)(puVar3 + 0x6ffdc)" identifier = (pointer_expression "*(code **)(puVar3 + 0x6ffdc)" * (cast_expression "(code **)(puVar3 + 0x6ffdc)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar3 + 0x6ffdc)" ( (binary_expression "puVar3 + 0x6ffdc" identifier + number_literal) ))))) ;) (expression_statement "unaff_s3 = piVar7;" (assignment_expression "unaff_s3 = piVar7" identifier = identifier) ;) (expression_statement "param_1 = piVar10;" (assignment_expression "param_1 = piVar10" identifier = identifier) ;) (expression_statement "puVar4 = param_2;" (assignment_expression "puVar4 = param_2" identifier = identifier) ;) (if_statement "if (*piVar7 < (int)piVar12) goto LAB_0002772c;" if (parenthesized_expression "(*piVar7 < (int)piVar12)" ( (binary_expression "*piVar7 < (int)piVar12" (pointer_expression "*piVar7" * identifier) < (cast_expression "(int)piVar12" ( (type_descriptor "int" primitive_type) ) identifier)) )) (goto_statement "goto LAB_0002772c;" goto statement_identifier ;)) (expression_statement "piVar10 = (int *)piVar7[2];" (assignment_expression "piVar10 = (int *)piVar7[2]" identifier = (cast_expression "(int *)piVar7[2]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar7[2]" identifier [ number_literal ]))) ;) }))) (expression_statement "pcVar13 = *(code **)(puVar14 + -0x7d98);" (assignment_expression "pcVar13 = *(code **)(puVar14 + -0x7d98)" identifier = (pointer_expression "*(code **)(puVar14 + -0x7d98)" * (cast_expression "(code **)(puVar14 + -0x7d98)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar14 + -0x7d98)" ( (binary_expression "puVar14 + -0x7d98" identifier + number_literal) ))))) ;) (expression_statement "uVar8 = *(undefined4 *)(puVar4 + 8);" (assignment_expression "uVar8 = *(undefined4 *)(puVar4 + 8)" identifier = (pointer_expression "*(undefined4 *)(puVar4 + 8)" * (cast_expression "(undefined4 *)(puVar4 + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar4 + 8)" ( (binary_expression "puVar4 + 8" identifier + number_literal) ))))) ;) (expression_statement "*(int **)(puVar15 + -0x30) = param_1;" (assignment_expression "*(int **)(puVar15 + -0x30) = param_1" (pointer_expression "*(int **)(puVar15 + -0x30)" * (cast_expression "(int **)(puVar15 + -0x30)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar15 + -0x30)" ( (binary_expression "puVar15 + -0x30" identifier + number_literal) )))) = identifier) ;) (expression_statement "puVar4 = (undefined *)(*pcVar13)(piVar10,0,uVar8,piVar12);" (assignment_expression "puVar4 = (undefined *)(*pcVar13)(piVar10,0,uVar8,piVar12)" identifier = (cast_expression "(undefined *)(*pcVar13)(piVar10,0,uVar8,piVar12)" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(*pcVar13)(piVar10,0,uVar8,piVar12)" (parenthesized_expression "(*pcVar13)" ( (pointer_expression "*pcVar13" * identifier) )) (argument_list "(piVar10,0,uVar8,piVar12)" ( identifier , number_literal , identifier , identifier ))))) ;) (expression_statement "piVar9 = piVar10 + (int)((int)piVar12 + -1);" (assignment_expression "piVar9 = piVar10 + (int)((int)piVar12 + -1)" identifier = (binary_expression "piVar10 + (int)((int)piVar12 + -1)" identifier + (cast_expression "(int)((int)piVar12 + -1)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((int)piVar12 + -1)" ( (binary_expression "(int)piVar12 + -1" (cast_expression "(int)piVar12" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (if_statement "if (puVar4 == (undefined *)0x0) {\n    uVar6 = (uint)(*piVar9 == 0);\n    if ((int)param_3 < 0) {\n      iVar2 = uVar6 - (int)piVar12;\n      goto LAB_00027684;\n    }\n  }\n  else {\n    if ((int)param_3 < 0) {\n      do {\n        iVar2 = *piVar10;\n        *piVar10 = iVar2 + 1;\n        piVar10 = piVar10 + 1;\n      } while (iVar2 + 1 == 0);\n      puVar4 = (undefined *)((int)param_1 - (int)puVar4);\n      iVar2 = (uint)(*piVar9 == 0) - (int)piVar12;\n      goto LAB_00027684;\n    }\n    uVar6 = (uint)(*piVar9 == 0);\n  }" if (parenthesized_expression "(puVar4 == (undefined *)0x0)" ( (binary_expression "puVar4 == (undefined *)0x0" identifier == (cast_expression "(undefined *)0x0" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    uVar6 = (uint)(*piVar9 == 0);\n    if ((int)param_3 < 0) {\n      iVar2 = uVar6 - (int)piVar12;\n      goto LAB_00027684;\n    }\n  }" { (expression_statement "uVar6 = (uint)(*piVar9 == 0);" (assignment_expression "uVar6 = (uint)(*piVar9 == 0)" identifier = (call_expression "(uint)(*piVar9 == 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(*piVar9 == 0)" ( (binary_expression "*piVar9 == 0" (pointer_expression "*piVar9" * identifier) == number_literal) )))) ;) (if_statement "if ((int)param_3 < 0) {\n      iVar2 = uVar6 - (int)piVar12;\n      goto LAB_00027684;\n    }" if (parenthesized_expression "((int)param_3 < 0)" ( (binary_expression "(int)param_3 < 0" (cast_expression "(int)param_3" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n      iVar2 = uVar6 - (int)piVar12;\n      goto LAB_00027684;\n    }" { (expression_statement "iVar2 = uVar6 - (int)piVar12;" (assignment_expression "iVar2 = uVar6 - (int)piVar12" identifier = (binary_expression "uVar6 - (int)piVar12" identifier - (cast_expression "(int)piVar12" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (goto_statement "goto LAB_00027684;" goto statement_identifier ;) })) }) (else_clause "else {\n    if ((int)param_3 < 0) {\n      do {\n        iVar2 = *piVar10;\n        *piVar10 = iVar2 + 1;\n        piVar10 = piVar10 + 1;\n      } while (iVar2 + 1 == 0);\n      puVar4 = (undefined *)((int)param_1 - (int)puVar4);\n      iVar2 = (uint)(*piVar9 == 0) - (int)piVar12;\n      goto LAB_00027684;\n    }\n    uVar6 = (uint)(*piVar9 == 0);\n  }" else (compound_statement "{\n    if ((int)param_3 < 0) {\n      do {\n        iVar2 = *piVar10;\n        *piVar10 = iVar2 + 1;\n        piVar10 = piVar10 + 1;\n      } while (iVar2 + 1 == 0);\n      puVar4 = (undefined *)((int)param_1 - (int)puVar4);\n      iVar2 = (uint)(*piVar9 == 0) - (int)piVar12;\n      goto LAB_00027684;\n    }\n    uVar6 = (uint)(*piVar9 == 0);\n  }" { (if_statement "if ((int)param_3 < 0) {\n      do {\n        iVar2 = *piVar10;\n        *piVar10 = iVar2 + 1;\n        piVar10 = piVar10 + 1;\n      } while (iVar2 + 1 == 0);\n      puVar4 = (undefined *)((int)param_1 - (int)puVar4);\n      iVar2 = (uint)(*piVar9 == 0) - (int)piVar12;\n      goto LAB_00027684;\n    }" if (parenthesized_expression "((int)param_3 < 0)" ( (binary_expression "(int)param_3 < 0" (cast_expression "(int)param_3" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n      do {\n        iVar2 = *piVar10;\n        *piVar10 = iVar2 + 1;\n        piVar10 = piVar10 + 1;\n      } while (iVar2 + 1 == 0);\n      puVar4 = (undefined *)((int)param_1 - (int)puVar4);\n      iVar2 = (uint)(*piVar9 == 0) - (int)piVar12;\n      goto LAB_00027684;\n    }" { (do_statement "do {\n        iVar2 = *piVar10;\n        *piVar10 = iVar2 + 1;\n        piVar10 = piVar10 + 1;\n      } while (iVar2 + 1 == 0);" do (compound_statement "{\n        iVar2 = *piVar10;\n        *piVar10 = iVar2 + 1;\n        piVar10 = piVar10 + 1;\n      }" { (expression_statement "iVar2 = *piVar10;" (assignment_expression "iVar2 = *piVar10" identifier = (pointer_expression "*piVar10" * identifier)) ;) (expression_statement "*piVar10 = iVar2 + 1;" (assignment_expression "*piVar10 = iVar2 + 1" (pointer_expression "*piVar10" * identifier) = (binary_expression "iVar2 + 1" identifier + number_literal)) ;) (expression_statement "piVar10 = piVar10 + 1;" (assignment_expression "piVar10 = piVar10 + 1" identifier = (binary_expression "piVar10 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar2 + 1 == 0)" ( (binary_expression "iVar2 + 1 == 0" (binary_expression "iVar2 + 1" identifier + number_literal) == number_literal) )) ;) (expression_statement "puVar4 = (undefined *)((int)param_1 - (int)puVar4);" (assignment_expression "puVar4 = (undefined *)((int)param_1 - (int)puVar4)" identifier = (cast_expression "(undefined *)((int)param_1 - (int)puVar4)" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_1 - (int)puVar4)" ( (binary_expression "(int)param_1 - (int)puVar4" (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)puVar4" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) (expression_statement "iVar2 = (uint)(*piVar9 == 0) - (int)piVar12;" (assignment_expression "iVar2 = (uint)(*piVar9 == 0) - (int)piVar12" identifier = (binary_expression "(uint)(*piVar9 == 0) - (int)piVar12" (call_expression "(uint)(*piVar9 == 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(*piVar9 == 0)" ( (binary_expression "*piVar9 == 0" (pointer_expression "*piVar9" * identifier) == number_literal) ))) - (cast_expression "(int)piVar12" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (goto_statement "goto LAB_00027684;" goto statement_identifier ;) })) (expression_statement "uVar6 = (uint)(*piVar9 == 0);" (assignment_expression "uVar6 = (uint)(*piVar9 == 0)" identifier = (call_expression "(uint)(*piVar9 == 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(*piVar9 == 0)" ( (binary_expression "*piVar9 == 0" (pointer_expression "*piVar9" * identifier) == number_literal) )))) ;) }))) (expression_statement "iVar2 = (int)piVar12 - uVar6;" (assignment_expression "iVar2 = (int)piVar12 - uVar6" identifier = (binary_expression "(int)piVar12 - uVar6" (cast_expression "(int)piVar12" ( (type_descriptor "int" primitive_type) ) identifier) - identifier)) ;) (labeled_statement "LAB_00027684:\n  unaff_s3[1] = iVar2;" statement_identifier : (expression_statement "unaff_s3[1] = iVar2;" (assignment_expression "unaff_s3[1] = iVar2" (subscript_expression "unaff_s3[1]" identifier [ number_literal ]) = identifier) ;)) (return_statement "return puVar4;" return identifier ;) })))
(translation_unit "mp_size_t __gmpz_prodlimbs(mpz_ptr x,mp_ptr factors,mp_size_t j)\n\n{\n  int iVar1;\n  mpz_ptr p_Var2;\n  undefined1 *puVar3;\n  mp_size_t mVar4;\n  mp_limb_t *pmVar5;\n  mp_ptr pmVar6;\n  uint uVar7;\n  mp_limb_t *pmVar8;\n  int *piVar9;\n  mp_limb_t *pmVar10;\n  mp_limb_t mVar11;\n  mpz_ptr p_Var12;\n  int *piVar13;\n  mp_ptr pmVar14;\n  int iVar15;\n  mpz_ptr p_Var16;\n  int iVar17;\n  mp_limb_t *unaff_s3;\n  mp_ptr pmVar18;\n  undefined *puVar19;\n  code *pcVar20;\n  undefined *puVar21;\n  undefined1 *puVar22;\n  undefined4 uVar23;\n  undefined1 auStack_70 [24];\n  tmp_reentrant_t *__tmp_marker;\n  mpz_t x1;\n  mpz_t x2;\n  \n  pmVar18 = (mp_ptr)PTR___stack_chk_guard_00097540;\n  puVar22 = auStack_70;\n  pmVar5 = *(mp_limb_t **)PTR___stack_chk_guard_00097540;\n  if (j < 0x14) {\n    if (j < 3) {\n      iVar15 = 4;\n      iVar17 = 4;\n      p_Var12 = (mpz_ptr)&DAT_00000001;\n    }\n    else {\n      pmVar14 = factors + 1;\n      p_Var12 = (mpz_ptr)&DAT_00000001;\n      do {\n        mVar11 = *pmVar14;\n        pmVar14 = pmVar14 + 1;\n        mVar11 = (*(code *)PTR___gmpn_mul_1_000970a4)(factors,factors,p_Var12,mVar11);\n        pmVar6 = factors + (int)p_Var12;\n        p_Var12 = (mpz_ptr)((int)&p_Var12->_mp_alloc + (uint)(mVar11 != 0));\n        *pmVar6 = mVar11;\n      } while (factors + j + -1 != pmVar14);\n      iVar15 = (int)p_Var12 * 4;\n      iVar17 = (j + -1) * 4;\n    }\n    if ((int)p_Var12 < x->_mp_alloc) {\n      unaff_s3 = x->_mp_d;\n    }\n    else {\n      unaff_s3 = (mp_limb_t *)\n                 (*(code *)PTR___gmpz_realloc_000975bc)\n                           (x,(undefined1 *)((int)&p_Var12->_mp_alloc + 1));\n    }\n    j = (int)factors + iVar17;\n    p_Var16 = (mpz_ptr)((int)unaff_s3 + iVar15);\n    p_Var2 = p_Var12;\n    iVar15 = (*(code *)PTR___gmpn_mul_1_000970a4)(unaff_s3,factors,p_Var12,((mpz_ptr)j)->_mp_alloc);\n    puVar3 = (undefined1 *)((int)&p_Var12->_mp_alloc + (uint)(iVar15 != 0));\n    p_Var16->_mp_alloc = iVar15;\n    x->_mp_size = (int)puVar3;\n    puVar22 = auStack_70;\n  }\n  else {\n    iVar17 = j >> 1;\n    __tmp_marker = (tmp_reentrant_t *)0x0;\n    iVar15 = j - iVar17;\n    x2[0]._mp_alloc = iVar15;\n    if ((uint)(iVar15 * 4) < 0x7f01) {\n      iVar1 = -(iVar15 * 4 + 7U & 0xfffffff8);\n      puVar22 = auStack_70 + iVar1;\n      x2[0]._mp_d = (mp_limb_t *)((int)x2 + iVar1 + -0x20);\n    }\n    else {\n      x2[0]._mp_d = (mp_limb_t *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&__tmp_marker);\n    }\n    x1[0]._mp_d = factors + iVar17;\n    x1[0]._mp_alloc = iVar15;\n    p_Var16 = (mpz_ptr)__gmpz_prodlimbs(x2,x1[0]._mp_d,iVar15);\n    p_Var2 = (mpz_ptr)__gmpz_prodlimbs(x1,factors,iVar17);\n    p_Var12 = (mpz_ptr)((int)&p_Var2->_mp_alloc + (int)&p_Var16->_mp_alloc);\n    if (x->_mp_alloc < (int)p_Var12) {\n      pmVar8 = (mp_limb_t *)(*(code *)PTR___gmpz_realloc_000975bc)(x,p_Var12);\n    }\n    else {\n      pmVar8 = x->_mp_d;\n    }\n    factors = x2[0]._mp_d;\n    pmVar10 = x1[0]._mp_d;\n    if ((int)p_Var2 < (int)p_Var16) {\n      *(mpz_ptr *)(puVar22 + 0x10) = p_Var2;\n      p_Var2 = p_Var16;\n      iVar15 = (*(code *)PTR___gmpn_mul_000972b4)(pmVar8,factors,p_Var16,pmVar10);\n    }\n    else {\n      *(mpz_ptr *)(puVar22 + 0x10) = p_Var16;\n      iVar15 = (*(code *)PTR___gmpn_mul_000972b4)();\n      factors = pmVar10;\n    }\n    if (__tmp_marker != (tmp_reentrant_t *)0x0) {\n      (*(code *)PTR___gmp_tmp_reentrant_free_00097614)();\n    }\n    puVar3 = (undefined1 *)((int)p_Var12 - (uint)(iVar15 == 0));\n    x->_mp_size = (int)puVar3;\n  }\n  if (pmVar5 == (mp_limb_t *)*pmVar18) {\n    return (mp_size_t)puVar3;\n  }\n  uVar23 = 0x275d4;\n  puVar19 = PTR___stack_chk_fail_000974d0;\n  (*(code *)PTR___stack_chk_fail_000974d0)();\n  puVar21 = puVar19 + 0x77a60;\n  *(undefined **)(puVar22 + -0x28) = puVar21;\n  *(undefined4 *)(puVar22 + -4) = uVar23;\n  *(mp_ptr *)(puVar22 + -8) = pmVar18;\n  *(mpz_ptr *)(puVar22 + -0xc) = x;\n  *(mp_limb_t **)(puVar22 + -0x10) = unaff_s3;\n  *(mp_size_t *)(puVar22 + -0x14) = j;\n  *(mpz_ptr *)(puVar22 + -0x18) = p_Var16;\n  *(mpz_ptr *)(puVar22 + -0x1c) = p_Var12;\n  if (p_Var2 == (mpz_ptr)0x0) {\n    pcVar20 = *(code **)(puVar19 + 0x6fffc);\n    (*pcVar20)();\nLAB_0002772c:\n    piVar13 = (int *)(*pcVar20)(unaff_s3,p_Var16);\n    puVar21 = *(undefined **)(puVar22 + -0x28);\n  }\n  else {\n    j = factors[1];\n    if ((mpz_ptr)j == (mpz_ptr)0x0) {\n      pmVar5[1] = 0;\n      return 0;\n    }\n    p_Var16 = (mpz_ptr)j;\n    if (j < 0) {\n      p_Var16 = (mpz_ptr)-j;\n    }\n    pcVar20 = *(code **)(puVar19 + 0x6ffdc);\n    unaff_s3 = pmVar5;\n    x = p_Var2;\n    pmVar18 = factors;\n    if ((int)*pmVar5 < (int)p_Var16) goto LAB_0002772c;\n    piVar13 = (int *)pmVar5[2];\n  }\n  pcVar20 = *(code **)(puVar21 + -0x7d98);\n  mVar11 = pmVar18[2];\n  *(mpz_ptr *)(puVar22 + -0x30) = x;\n  mVar4 = (*pcVar20)(piVar13,0,mVar11,p_Var16);\n  piVar9 = piVar13 + (int)((int)&p_Var16[-1]._mp_d + 3);\n  if (mVar4 == 0) {\n    uVar7 = (uint)(*piVar9 == 0);\n    if (j < 0) {\n      mVar11 = uVar7 - (int)p_Var16;\n      goto LAB_00027684;\n    }\n  }\n  else {\n    if (j < 0) {\n      do {\n        iVar15 = *piVar13;\n        *piVar13 = iVar15 + 1;\n        piVar13 = piVar13 + 1;\n      } while (iVar15 + 1 == 0);\n      mVar4 = (int)x - mVar4;\n      mVar11 = (uint)(*piVar9 == 0) - (int)p_Var16;\n      goto LAB_00027684;\n    }\n    uVar7 = (uint)(*piVar9 == 0);\n  }\n  mVar11 = (int)p_Var16 - uVar7;\nLAB_00027684:\n  unaff_s3[1] = mVar11;\n  return mVar4;\n}\n\n" (function_definition "mp_size_t __gmpz_prodlimbs(mpz_ptr x,mp_ptr factors,mp_size_t j)\n\n{\n  int iVar1;\n  mpz_ptr p_Var2;\n  undefined1 *puVar3;\n  mp_size_t mVar4;\n  mp_limb_t *pmVar5;\n  mp_ptr pmVar6;\n  uint uVar7;\n  mp_limb_t *pmVar8;\n  int *piVar9;\n  mp_limb_t *pmVar10;\n  mp_limb_t mVar11;\n  mpz_ptr p_Var12;\n  int *piVar13;\n  mp_ptr pmVar14;\n  int iVar15;\n  mpz_ptr p_Var16;\n  int iVar17;\n  mp_limb_t *unaff_s3;\n  mp_ptr pmVar18;\n  undefined *puVar19;\n  code *pcVar20;\n  undefined *puVar21;\n  undefined1 *puVar22;\n  undefined4 uVar23;\n  undefined1 auStack_70 [24];\n  tmp_reentrant_t *__tmp_marker;\n  mpz_t x1;\n  mpz_t x2;\n  \n  pmVar18 = (mp_ptr)PTR___stack_chk_guard_00097540;\n  puVar22 = auStack_70;\n  pmVar5 = *(mp_limb_t **)PTR___stack_chk_guard_00097540;\n  if (j < 0x14) {\n    if (j < 3) {\n      iVar15 = 4;\n      iVar17 = 4;\n      p_Var12 = (mpz_ptr)&DAT_00000001;\n    }\n    else {\n      pmVar14 = factors + 1;\n      p_Var12 = (mpz_ptr)&DAT_00000001;\n      do {\n        mVar11 = *pmVar14;\n        pmVar14 = pmVar14 + 1;\n        mVar11 = (*(code *)PTR___gmpn_mul_1_000970a4)(factors,factors,p_Var12,mVar11);\n        pmVar6 = factors + (int)p_Var12;\n        p_Var12 = (mpz_ptr)((int)&p_Var12->_mp_alloc + (uint)(mVar11 != 0));\n        *pmVar6 = mVar11;\n      } while (factors + j + -1 != pmVar14);\n      iVar15 = (int)p_Var12 * 4;\n      iVar17 = (j + -1) * 4;\n    }\n    if ((int)p_Var12 < x->_mp_alloc) {\n      unaff_s3 = x->_mp_d;\n    }\n    else {\n      unaff_s3 = (mp_limb_t *)\n                 (*(code *)PTR___gmpz_realloc_000975bc)\n                           (x,(undefined1 *)((int)&p_Var12->_mp_alloc + 1));\n    }\n    j = (int)factors + iVar17;\n    p_Var16 = (mpz_ptr)((int)unaff_s3 + iVar15);\n    p_Var2 = p_Var12;\n    iVar15 = (*(code *)PTR___gmpn_mul_1_000970a4)(unaff_s3,factors,p_Var12,((mpz_ptr)j)->_mp_alloc);\n    puVar3 = (undefined1 *)((int)&p_Var12->_mp_alloc + (uint)(iVar15 != 0));\n    p_Var16->_mp_alloc = iVar15;\n    x->_mp_size = (int)puVar3;\n    puVar22 = auStack_70;\n  }\n  else {\n    iVar17 = j >> 1;\n    __tmp_marker = (tmp_reentrant_t *)0x0;\n    iVar15 = j - iVar17;\n    x2[0]._mp_alloc = iVar15;\n    if ((uint)(iVar15 * 4) < 0x7f01) {\n      iVar1 = -(iVar15 * 4 + 7U & 0xfffffff8);\n      puVar22 = auStack_70 + iVar1;\n      x2[0]._mp_d = (mp_limb_t *)((int)x2 + iVar1 + -0x20);\n    }\n    else {\n      x2[0]._mp_d = (mp_limb_t *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&__tmp_marker);\n    }\n    x1[0]._mp_d = factors + iVar17;\n    x1[0]._mp_alloc = iVar15;\n    p_Var16 = (mpz_ptr)__gmpz_prodlimbs(x2,x1[0]._mp_d,iVar15);\n    p_Var2 = (mpz_ptr)__gmpz_prodlimbs(x1,factors,iVar17);\n    p_Var12 = (mpz_ptr)((int)&p_Var2->_mp_alloc + (int)&p_Var16->_mp_alloc);\n    if (x->_mp_alloc < (int)p_Var12) {\n      pmVar8 = (mp_limb_t *)(*(code *)PTR___gmpz_realloc_000975bc)(x,p_Var12);\n    }\n    else {\n      pmVar8 = x->_mp_d;\n    }\n    factors = x2[0]._mp_d;\n    pmVar10 = x1[0]._mp_d;\n    if ((int)p_Var2 < (int)p_Var16) {\n      *(mpz_ptr *)(puVar22 + 0x10) = p_Var2;\n      p_Var2 = p_Var16;\n      iVar15 = (*(code *)PTR___gmpn_mul_000972b4)(pmVar8,factors,p_Var16,pmVar10);\n    }\n    else {\n      *(mpz_ptr *)(puVar22 + 0x10) = p_Var16;\n      iVar15 = (*(code *)PTR___gmpn_mul_000972b4)();\n      factors = pmVar10;\n    }\n    if (__tmp_marker != (tmp_reentrant_t *)0x0) {\n      (*(code *)PTR___gmp_tmp_reentrant_free_00097614)();\n    }\n    puVar3 = (undefined1 *)((int)p_Var12 - (uint)(iVar15 == 0));\n    x->_mp_size = (int)puVar3;\n  }\n  if (pmVar5 == (mp_limb_t *)*pmVar18) {\n    return (mp_size_t)puVar3;\n  }\n  uVar23 = 0x275d4;\n  puVar19 = PTR___stack_chk_fail_000974d0;\n  (*(code *)PTR___stack_chk_fail_000974d0)();\n  puVar21 = puVar19 + 0x77a60;\n  *(undefined **)(puVar22 + -0x28) = puVar21;\n  *(undefined4 *)(puVar22 + -4) = uVar23;\n  *(mp_ptr *)(puVar22 + -8) = pmVar18;\n  *(mpz_ptr *)(puVar22 + -0xc) = x;\n  *(mp_limb_t **)(puVar22 + -0x10) = unaff_s3;\n  *(mp_size_t *)(puVar22 + -0x14) = j;\n  *(mpz_ptr *)(puVar22 + -0x18) = p_Var16;\n  *(mpz_ptr *)(puVar22 + -0x1c) = p_Var12;\n  if (p_Var2 == (mpz_ptr)0x0) {\n    pcVar20 = *(code **)(puVar19 + 0x6fffc);\n    (*pcVar20)();\nLAB_0002772c:\n    piVar13 = (int *)(*pcVar20)(unaff_s3,p_Var16);\n    puVar21 = *(undefined **)(puVar22 + -0x28);\n  }\n  else {\n    j = factors[1];\n    if ((mpz_ptr)j == (mpz_ptr)0x0) {\n      pmVar5[1] = 0;\n      return 0;\n    }\n    p_Var16 = (mpz_ptr)j;\n    if (j < 0) {\n      p_Var16 = (mpz_ptr)-j;\n    }\n    pcVar20 = *(code **)(puVar19 + 0x6ffdc);\n    unaff_s3 = pmVar5;\n    x = p_Var2;\n    pmVar18 = factors;\n    if ((int)*pmVar5 < (int)p_Var16) goto LAB_0002772c;\n    piVar13 = (int *)pmVar5[2];\n  }\n  pcVar20 = *(code **)(puVar21 + -0x7d98);\n  mVar11 = pmVar18[2];\n  *(mpz_ptr *)(puVar22 + -0x30) = x;\n  mVar4 = (*pcVar20)(piVar13,0,mVar11,p_Var16);\n  piVar9 = piVar13 + (int)((int)&p_Var16[-1]._mp_d + 3);\n  if (mVar4 == 0) {\n    uVar7 = (uint)(*piVar9 == 0);\n    if (j < 0) {\n      mVar11 = uVar7 - (int)p_Var16;\n      goto LAB_00027684;\n    }\n  }\n  else {\n    if (j < 0) {\n      do {\n        iVar15 = *piVar13;\n        *piVar13 = iVar15 + 1;\n        piVar13 = piVar13 + 1;\n      } while (iVar15 + 1 == 0);\n      mVar4 = (int)x - mVar4;\n      mVar11 = (uint)(*piVar9 == 0) - (int)p_Var16;\n      goto LAB_00027684;\n    }\n    uVar7 = (uint)(*piVar9 == 0);\n  }\n  mVar11 = (int)p_Var16 - uVar7;\nLAB_00027684:\n  unaff_s3[1] = mVar11;\n  return mVar4;\n}" type_identifier (function_declarator "__gmpz_prodlimbs(mpz_ptr x,mp_ptr factors,mp_size_t j)" identifier (parameter_list "(mpz_ptr x,mp_ptr factors,mp_size_t j)" ( (parameter_declaration "mpz_ptr x" type_identifier identifier) , (parameter_declaration "mp_ptr factors" type_identifier identifier) , (parameter_declaration "mp_size_t j" type_identifier identifier) ))) (compound_statement "{\n  int iVar1;\n  mpz_ptr p_Var2;\n  undefined1 *puVar3;\n  mp_size_t mVar4;\n  mp_limb_t *pmVar5;\n  mp_ptr pmVar6;\n  uint uVar7;\n  mp_limb_t *pmVar8;\n  int *piVar9;\n  mp_limb_t *pmVar10;\n  mp_limb_t mVar11;\n  mpz_ptr p_Var12;\n  int *piVar13;\n  mp_ptr pmVar14;\n  int iVar15;\n  mpz_ptr p_Var16;\n  int iVar17;\n  mp_limb_t *unaff_s3;\n  mp_ptr pmVar18;\n  undefined *puVar19;\n  code *pcVar20;\n  undefined *puVar21;\n  undefined1 *puVar22;\n  undefined4 uVar23;\n  undefined1 auStack_70 [24];\n  tmp_reentrant_t *__tmp_marker;\n  mpz_t x1;\n  mpz_t x2;\n  \n  pmVar18 = (mp_ptr)PTR___stack_chk_guard_00097540;\n  puVar22 = auStack_70;\n  pmVar5 = *(mp_limb_t **)PTR___stack_chk_guard_00097540;\n  if (j < 0x14) {\n    if (j < 3) {\n      iVar15 = 4;\n      iVar17 = 4;\n      p_Var12 = (mpz_ptr)&DAT_00000001;\n    }\n    else {\n      pmVar14 = factors + 1;\n      p_Var12 = (mpz_ptr)&DAT_00000001;\n      do {\n        mVar11 = *pmVar14;\n        pmVar14 = pmVar14 + 1;\n        mVar11 = (*(code *)PTR___gmpn_mul_1_000970a4)(factors,factors,p_Var12,mVar11);\n        pmVar6 = factors + (int)p_Var12;\n        p_Var12 = (mpz_ptr)((int)&p_Var12->_mp_alloc + (uint)(mVar11 != 0));\n        *pmVar6 = mVar11;\n      } while (factors + j + -1 != pmVar14);\n      iVar15 = (int)p_Var12 * 4;\n      iVar17 = (j + -1) * 4;\n    }\n    if ((int)p_Var12 < x->_mp_alloc) {\n      unaff_s3 = x->_mp_d;\n    }\n    else {\n      unaff_s3 = (mp_limb_t *)\n                 (*(code *)PTR___gmpz_realloc_000975bc)\n                           (x,(undefined1 *)((int)&p_Var12->_mp_alloc + 1));\n    }\n    j = (int)factors + iVar17;\n    p_Var16 = (mpz_ptr)((int)unaff_s3 + iVar15);\n    p_Var2 = p_Var12;\n    iVar15 = (*(code *)PTR___gmpn_mul_1_000970a4)(unaff_s3,factors,p_Var12,((mpz_ptr)j)->_mp_alloc);\n    puVar3 = (undefined1 *)((int)&p_Var12->_mp_alloc + (uint)(iVar15 != 0));\n    p_Var16->_mp_alloc = iVar15;\n    x->_mp_size = (int)puVar3;\n    puVar22 = auStack_70;\n  }\n  else {\n    iVar17 = j >> 1;\n    __tmp_marker = (tmp_reentrant_t *)0x0;\n    iVar15 = j - iVar17;\n    x2[0]._mp_alloc = iVar15;\n    if ((uint)(iVar15 * 4) < 0x7f01) {\n      iVar1 = -(iVar15 * 4 + 7U & 0xfffffff8);\n      puVar22 = auStack_70 + iVar1;\n      x2[0]._mp_d = (mp_limb_t *)((int)x2 + iVar1 + -0x20);\n    }\n    else {\n      x2[0]._mp_d = (mp_limb_t *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&__tmp_marker);\n    }\n    x1[0]._mp_d = factors + iVar17;\n    x1[0]._mp_alloc = iVar15;\n    p_Var16 = (mpz_ptr)__gmpz_prodlimbs(x2,x1[0]._mp_d,iVar15);\n    p_Var2 = (mpz_ptr)__gmpz_prodlimbs(x1,factors,iVar17);\n    p_Var12 = (mpz_ptr)((int)&p_Var2->_mp_alloc + (int)&p_Var16->_mp_alloc);\n    if (x->_mp_alloc < (int)p_Var12) {\n      pmVar8 = (mp_limb_t *)(*(code *)PTR___gmpz_realloc_000975bc)(x,p_Var12);\n    }\n    else {\n      pmVar8 = x->_mp_d;\n    }\n    factors = x2[0]._mp_d;\n    pmVar10 = x1[0]._mp_d;\n    if ((int)p_Var2 < (int)p_Var16) {\n      *(mpz_ptr *)(puVar22 + 0x10) = p_Var2;\n      p_Var2 = p_Var16;\n      iVar15 = (*(code *)PTR___gmpn_mul_000972b4)(pmVar8,factors,p_Var16,pmVar10);\n    }\n    else {\n      *(mpz_ptr *)(puVar22 + 0x10) = p_Var16;\n      iVar15 = (*(code *)PTR___gmpn_mul_000972b4)();\n      factors = pmVar10;\n    }\n    if (__tmp_marker != (tmp_reentrant_t *)0x0) {\n      (*(code *)PTR___gmp_tmp_reentrant_free_00097614)();\n    }\n    puVar3 = (undefined1 *)((int)p_Var12 - (uint)(iVar15 == 0));\n    x->_mp_size = (int)puVar3;\n  }\n  if (pmVar5 == (mp_limb_t *)*pmVar18) {\n    return (mp_size_t)puVar3;\n  }\n  uVar23 = 0x275d4;\n  puVar19 = PTR___stack_chk_fail_000974d0;\n  (*(code *)PTR___stack_chk_fail_000974d0)();\n  puVar21 = puVar19 + 0x77a60;\n  *(undefined **)(puVar22 + -0x28) = puVar21;\n  *(undefined4 *)(puVar22 + -4) = uVar23;\n  *(mp_ptr *)(puVar22 + -8) = pmVar18;\n  *(mpz_ptr *)(puVar22 + -0xc) = x;\n  *(mp_limb_t **)(puVar22 + -0x10) = unaff_s3;\n  *(mp_size_t *)(puVar22 + -0x14) = j;\n  *(mpz_ptr *)(puVar22 + -0x18) = p_Var16;\n  *(mpz_ptr *)(puVar22 + -0x1c) = p_Var12;\n  if (p_Var2 == (mpz_ptr)0x0) {\n    pcVar20 = *(code **)(puVar19 + 0x6fffc);\n    (*pcVar20)();\nLAB_0002772c:\n    piVar13 = (int *)(*pcVar20)(unaff_s3,p_Var16);\n    puVar21 = *(undefined **)(puVar22 + -0x28);\n  }\n  else {\n    j = factors[1];\n    if ((mpz_ptr)j == (mpz_ptr)0x0) {\n      pmVar5[1] = 0;\n      return 0;\n    }\n    p_Var16 = (mpz_ptr)j;\n    if (j < 0) {\n      p_Var16 = (mpz_ptr)-j;\n    }\n    pcVar20 = *(code **)(puVar19 + 0x6ffdc);\n    unaff_s3 = pmVar5;\n    x = p_Var2;\n    pmVar18 = factors;\n    if ((int)*pmVar5 < (int)p_Var16) goto LAB_0002772c;\n    piVar13 = (int *)pmVar5[2];\n  }\n  pcVar20 = *(code **)(puVar21 + -0x7d98);\n  mVar11 = pmVar18[2];\n  *(mpz_ptr *)(puVar22 + -0x30) = x;\n  mVar4 = (*pcVar20)(piVar13,0,mVar11,p_Var16);\n  piVar9 = piVar13 + (int)((int)&p_Var16[-1]._mp_d + 3);\n  if (mVar4 == 0) {\n    uVar7 = (uint)(*piVar9 == 0);\n    if (j < 0) {\n      mVar11 = uVar7 - (int)p_Var16;\n      goto LAB_00027684;\n    }\n  }\n  else {\n    if (j < 0) {\n      do {\n        iVar15 = *piVar13;\n        *piVar13 = iVar15 + 1;\n        piVar13 = piVar13 + 1;\n      } while (iVar15 + 1 == 0);\n      mVar4 = (int)x - mVar4;\n      mVar11 = (uint)(*piVar9 == 0) - (int)p_Var16;\n      goto LAB_00027684;\n    }\n    uVar7 = (uint)(*piVar9 == 0);\n  }\n  mVar11 = (int)p_Var16 - uVar7;\nLAB_00027684:\n  unaff_s3[1] = mVar11;\n  return mVar4;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "mpz_ptr p_Var2;" type_identifier identifier ;) (declaration "undefined1 *puVar3;" type_identifier (pointer_declarator "*puVar3" * identifier) ;) (declaration "mp_size_t mVar4;" type_identifier identifier ;) (declaration "mp_limb_t *pmVar5;" type_identifier (pointer_declarator "*pmVar5" * identifier) ;) (declaration "mp_ptr pmVar6;" type_identifier identifier ;) (declaration "uint uVar7;" type_identifier identifier ;) (declaration "mp_limb_t *pmVar8;" type_identifier (pointer_declarator "*pmVar8" * identifier) ;) (declaration "int *piVar9;" primitive_type (pointer_declarator "*piVar9" * identifier) ;) (declaration "mp_limb_t *pmVar10;" type_identifier (pointer_declarator "*pmVar10" * identifier) ;) (declaration "mp_limb_t mVar11;" type_identifier identifier ;) (declaration "mpz_ptr p_Var12;" type_identifier identifier ;) (declaration "int *piVar13;" primitive_type (pointer_declarator "*piVar13" * identifier) ;) (declaration "mp_ptr pmVar14;" type_identifier identifier ;) (declaration "int iVar15;" primitive_type identifier ;) (declaration "mpz_ptr p_Var16;" type_identifier identifier ;) (declaration "int iVar17;" primitive_type identifier ;) (declaration "mp_limb_t *unaff_s3;" type_identifier (pointer_declarator "*unaff_s3" * identifier) ;) (declaration "mp_ptr pmVar18;" type_identifier identifier ;) (declaration "undefined *puVar19;" type_identifier (pointer_declarator "*puVar19" * identifier) ;) (declaration "code *pcVar20;" type_identifier (pointer_declarator "*pcVar20" * identifier) ;) (declaration "undefined *puVar21;" type_identifier (pointer_declarator "*puVar21" * identifier) ;) (declaration "undefined1 *puVar22;" type_identifier (pointer_declarator "*puVar22" * identifier) ;) (declaration "undefined4 uVar23;" type_identifier identifier ;) (declaration "undefined1 auStack_70 [24];" type_identifier (array_declarator "auStack_70 [24]" identifier [ number_literal ]) ;) (declaration "tmp_reentrant_t *__tmp_marker;" type_identifier (pointer_declarator "*__tmp_marker" * identifier) ;) (declaration "mpz_t x1;" type_identifier identifier ;) (declaration "mpz_t x2;" type_identifier identifier ;) (expression_statement "pmVar18 = (mp_ptr)PTR___stack_chk_guard_00097540;" (assignment_expression "pmVar18 = (mp_ptr)PTR___stack_chk_guard_00097540" identifier = (cast_expression "(mp_ptr)PTR___stack_chk_guard_00097540" ( (type_descriptor "mp_ptr" type_identifier) ) identifier)) ;) (expression_statement "puVar22 = auStack_70;" (assignment_expression "puVar22 = auStack_70" identifier = identifier) ;) (expression_statement "pmVar5 = *(mp_limb_t **)PTR___stack_chk_guard_00097540;" (assignment_expression "pmVar5 = *(mp_limb_t **)PTR___stack_chk_guard_00097540" identifier = (pointer_expression "*(mp_limb_t **)PTR___stack_chk_guard_00097540" * (cast_expression "(mp_limb_t **)PTR___stack_chk_guard_00097540" ( (type_descriptor "mp_limb_t **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) ;) (if_statement "if (j < 0x14) {\n    if (j < 3) {\n      iVar15 = 4;\n      iVar17 = 4;\n      p_Var12 = (mpz_ptr)&DAT_00000001;\n    }\n    else {\n      pmVar14 = factors + 1;\n      p_Var12 = (mpz_ptr)&DAT_00000001;\n      do {\n        mVar11 = *pmVar14;\n        pmVar14 = pmVar14 + 1;\n        mVar11 = (*(code *)PTR___gmpn_mul_1_000970a4)(factors,factors,p_Var12,mVar11);\n        pmVar6 = factors + (int)p_Var12;\n        p_Var12 = (mpz_ptr)((int)&p_Var12->_mp_alloc + (uint)(mVar11 != 0));\n        *pmVar6 = mVar11;\n      } while (factors + j + -1 != pmVar14);\n      iVar15 = (int)p_Var12 * 4;\n      iVar17 = (j + -1) * 4;\n    }\n    if ((int)p_Var12 < x->_mp_alloc) {\n      unaff_s3 = x->_mp_d;\n    }\n    else {\n      unaff_s3 = (mp_limb_t *)\n                 (*(code *)PTR___gmpz_realloc_000975bc)\n                           (x,(undefined1 *)((int)&p_Var12->_mp_alloc + 1));\n    }\n    j = (int)factors + iVar17;\n    p_Var16 = (mpz_ptr)((int)unaff_s3 + iVar15);\n    p_Var2 = p_Var12;\n    iVar15 = (*(code *)PTR___gmpn_mul_1_000970a4)(unaff_s3,factors,p_Var12,((mpz_ptr)j)->_mp_alloc);\n    puVar3 = (undefined1 *)((int)&p_Var12->_mp_alloc + (uint)(iVar15 != 0));\n    p_Var16->_mp_alloc = iVar15;\n    x->_mp_size = (int)puVar3;\n    puVar22 = auStack_70;\n  }\n  else {\n    iVar17 = j >> 1;\n    __tmp_marker = (tmp_reentrant_t *)0x0;\n    iVar15 = j - iVar17;\n    x2[0]._mp_alloc = iVar15;\n    if ((uint)(iVar15 * 4) < 0x7f01) {\n      iVar1 = -(iVar15 * 4 + 7U & 0xfffffff8);\n      puVar22 = auStack_70 + iVar1;\n      x2[0]._mp_d = (mp_limb_t *)((int)x2 + iVar1 + -0x20);\n    }\n    else {\n      x2[0]._mp_d = (mp_limb_t *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&__tmp_marker);\n    }\n    x1[0]._mp_d = factors + iVar17;\n    x1[0]._mp_alloc = iVar15;\n    p_Var16 = (mpz_ptr)__gmpz_prodlimbs(x2,x1[0]._mp_d,iVar15);\n    p_Var2 = (mpz_ptr)__gmpz_prodlimbs(x1,factors,iVar17);\n    p_Var12 = (mpz_ptr)((int)&p_Var2->_mp_alloc + (int)&p_Var16->_mp_alloc);\n    if (x->_mp_alloc < (int)p_Var12) {\n      pmVar8 = (mp_limb_t *)(*(code *)PTR___gmpz_realloc_000975bc)(x,p_Var12);\n    }\n    else {\n      pmVar8 = x->_mp_d;\n    }\n    factors = x2[0]._mp_d;\n    pmVar10 = x1[0]._mp_d;\n    if ((int)p_Var2 < (int)p_Var16) {\n      *(mpz_ptr *)(puVar22 + 0x10) = p_Var2;\n      p_Var2 = p_Var16;\n      iVar15 = (*(code *)PTR___gmpn_mul_000972b4)(pmVar8,factors,p_Var16,pmVar10);\n    }\n    else {\n      *(mpz_ptr *)(puVar22 + 0x10) = p_Var16;\n      iVar15 = (*(code *)PTR___gmpn_mul_000972b4)();\n      factors = pmVar10;\n    }\n    if (__tmp_marker != (tmp_reentrant_t *)0x0) {\n      (*(code *)PTR___gmp_tmp_reentrant_free_00097614)();\n    }\n    puVar3 = (undefined1 *)((int)p_Var12 - (uint)(iVar15 == 0));\n    x->_mp_size = (int)puVar3;\n  }" if (parenthesized_expression "(j < 0x14)" ( (binary_expression "j < 0x14" identifier < number_literal) )) (compound_statement "{\n    if (j < 3) {\n      iVar15 = 4;\n      iVar17 = 4;\n      p_Var12 = (mpz_ptr)&DAT_00000001;\n    }\n    else {\n      pmVar14 = factors + 1;\n      p_Var12 = (mpz_ptr)&DAT_00000001;\n      do {\n        mVar11 = *pmVar14;\n        pmVar14 = pmVar14 + 1;\n        mVar11 = (*(code *)PTR___gmpn_mul_1_000970a4)(factors,factors,p_Var12,mVar11);\n        pmVar6 = factors + (int)p_Var12;\n        p_Var12 = (mpz_ptr)((int)&p_Var12->_mp_alloc + (uint)(mVar11 != 0));\n        *pmVar6 = mVar11;\n      } while (factors + j + -1 != pmVar14);\n      iVar15 = (int)p_Var12 * 4;\n      iVar17 = (j + -1) * 4;\n    }\n    if ((int)p_Var12 < x->_mp_alloc) {\n      unaff_s3 = x->_mp_d;\n    }\n    else {\n      unaff_s3 = (mp_limb_t *)\n                 (*(code *)PTR___gmpz_realloc_000975bc)\n                           (x,(undefined1 *)((int)&p_Var12->_mp_alloc + 1));\n    }\n    j = (int)factors + iVar17;\n    p_Var16 = (mpz_ptr)((int)unaff_s3 + iVar15);\n    p_Var2 = p_Var12;\n    iVar15 = (*(code *)PTR___gmpn_mul_1_000970a4)(unaff_s3,factors,p_Var12,((mpz_ptr)j)->_mp_alloc);\n    puVar3 = (undefined1 *)((int)&p_Var12->_mp_alloc + (uint)(iVar15 != 0));\n    p_Var16->_mp_alloc = iVar15;\n    x->_mp_size = (int)puVar3;\n    puVar22 = auStack_70;\n  }" { (if_statement "if (j < 3) {\n      iVar15 = 4;\n      iVar17 = 4;\n      p_Var12 = (mpz_ptr)&DAT_00000001;\n    }\n    else {\n      pmVar14 = factors + 1;\n      p_Var12 = (mpz_ptr)&DAT_00000001;\n      do {\n        mVar11 = *pmVar14;\n        pmVar14 = pmVar14 + 1;\n        mVar11 = (*(code *)PTR___gmpn_mul_1_000970a4)(factors,factors,p_Var12,mVar11);\n        pmVar6 = factors + (int)p_Var12;\n        p_Var12 = (mpz_ptr)((int)&p_Var12->_mp_alloc + (uint)(mVar11 != 0));\n        *pmVar6 = mVar11;\n      } while (factors + j + -1 != pmVar14);\n      iVar15 = (int)p_Var12 * 4;\n      iVar17 = (j + -1) * 4;\n    }" if (parenthesized_expression "(j < 3)" ( (binary_expression "j < 3" identifier < number_literal) )) (compound_statement "{\n      iVar15 = 4;\n      iVar17 = 4;\n      p_Var12 = (mpz_ptr)&DAT_00000001;\n    }" { (expression_statement "iVar15 = 4;" (assignment_expression "iVar15 = 4" identifier = number_literal) ;) (expression_statement "iVar17 = 4;" (assignment_expression "iVar17 = 4" identifier = number_literal) ;) (expression_statement "p_Var12 = (mpz_ptr)&DAT_00000001;" (assignment_expression "p_Var12 = (mpz_ptr)&DAT_00000001" identifier = (binary_expression "(mpz_ptr)&DAT_00000001" (parenthesized_expression "(mpz_ptr)" ( identifier )) & identifier)) ;) }) (else_clause "else {\n      pmVar14 = factors + 1;\n      p_Var12 = (mpz_ptr)&DAT_00000001;\n      do {\n        mVar11 = *pmVar14;\n        pmVar14 = pmVar14 + 1;\n        mVar11 = (*(code *)PTR___gmpn_mul_1_000970a4)(factors,factors,p_Var12,mVar11);\n        pmVar6 = factors + (int)p_Var12;\n        p_Var12 = (mpz_ptr)((int)&p_Var12->_mp_alloc + (uint)(mVar11 != 0));\n        *pmVar6 = mVar11;\n      } while (factors + j + -1 != pmVar14);\n      iVar15 = (int)p_Var12 * 4;\n      iVar17 = (j + -1) * 4;\n    }" else (compound_statement "{\n      pmVar14 = factors + 1;\n      p_Var12 = (mpz_ptr)&DAT_00000001;\n      do {\n        mVar11 = *pmVar14;\n        pmVar14 = pmVar14 + 1;\n        mVar11 = (*(code *)PTR___gmpn_mul_1_000970a4)(factors,factors,p_Var12,mVar11);\n        pmVar6 = factors + (int)p_Var12;\n        p_Var12 = (mpz_ptr)((int)&p_Var12->_mp_alloc + (uint)(mVar11 != 0));\n        *pmVar6 = mVar11;\n      } while (factors + j + -1 != pmVar14);\n      iVar15 = (int)p_Var12 * 4;\n      iVar17 = (j + -1) * 4;\n    }" { (expression_statement "pmVar14 = factors + 1;" (assignment_expression "pmVar14 = factors + 1" identifier = (binary_expression "factors + 1" identifier + number_literal)) ;) (expression_statement "p_Var12 = (mpz_ptr)&DAT_00000001;" (assignment_expression "p_Var12 = (mpz_ptr)&DAT_00000001" identifier = (binary_expression "(mpz_ptr)&DAT_00000001" (parenthesized_expression "(mpz_ptr)" ( identifier )) & identifier)) ;) (do_statement "do {\n        mVar11 = *pmVar14;\n        pmVar14 = pmVar14 + 1;\n        mVar11 = (*(code *)PTR___gmpn_mul_1_000970a4)(factors,factors,p_Var12,mVar11);\n        pmVar6 = factors + (int)p_Var12;\n        p_Var12 = (mpz_ptr)((int)&p_Var12->_mp_alloc + (uint)(mVar11 != 0));\n        *pmVar6 = mVar11;\n      } while (factors + j + -1 != pmVar14);" do (compound_statement "{\n        mVar11 = *pmVar14;\n        pmVar14 = pmVar14 + 1;\n        mVar11 = (*(code *)PTR___gmpn_mul_1_000970a4)(factors,factors,p_Var12,mVar11);\n        pmVar6 = factors + (int)p_Var12;\n        p_Var12 = (mpz_ptr)((int)&p_Var12->_mp_alloc + (uint)(mVar11 != 0));\n        *pmVar6 = mVar11;\n      }" { (expression_statement "mVar11 = *pmVar14;" (assignment_expression "mVar11 = *pmVar14" identifier = (pointer_expression "*pmVar14" * identifier)) ;) (expression_statement "pmVar14 = pmVar14 + 1;" (assignment_expression "pmVar14 = pmVar14 + 1" identifier = (binary_expression "pmVar14 + 1" identifier + number_literal)) ;) (expression_statement "mVar11 = (*(code *)PTR___gmpn_mul_1_000970a4)(factors,factors,p_Var12,mVar11);" (assignment_expression "mVar11 = (*(code *)PTR___gmpn_mul_1_000970a4)(factors,factors,p_Var12,mVar11)" identifier = (call_expression "(*(code *)PTR___gmpn_mul_1_000970a4)(factors,factors,p_Var12,mVar11)" (parenthesized_expression "(*(code *)PTR___gmpn_mul_1_000970a4)" ( (pointer_expression "*(code *)PTR___gmpn_mul_1_000970a4" * (cast_expression "(code *)PTR___gmpn_mul_1_000970a4" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(factors,factors,p_Var12,mVar11)" ( identifier , identifier , identifier , identifier )))) ;) (expression_statement "pmVar6 = factors + (int)p_Var12;" (assignment_expression "pmVar6 = factors + (int)p_Var12" identifier = (binary_expression "factors + (int)p_Var12" identifier + (cast_expression "(int)p_Var12" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "p_Var12 = (mpz_ptr)((int)&p_Var12->_mp_alloc + (uint)(mVar11 != 0));" (assignment_expression "p_Var12 = (mpz_ptr)((int)&p_Var12->_mp_alloc + (uint)(mVar11 != 0))" identifier = (call_expression "(mpz_ptr)((int)&p_Var12->_mp_alloc + (uint)(mVar11 != 0))" (parenthesized_expression "(mpz_ptr)" ( identifier )) (argument_list "((int)&p_Var12->_mp_alloc + (uint)(mVar11 != 0))" ( (binary_expression "(int)&p_Var12->_mp_alloc + (uint)(mVar11 != 0)" (cast_expression "(int)&p_Var12->_mp_alloc" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&p_Var12->_mp_alloc" & (field_expression "p_Var12->_mp_alloc" identifier -> field_identifier))) + (call_expression "(uint)(mVar11 != 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(mVar11 != 0)" ( (binary_expression "mVar11 != 0" identifier != number_literal) )))) )))) ;) (expression_statement "*pmVar6 = mVar11;" (assignment_expression "*pmVar6 = mVar11" (pointer_expression "*pmVar6" * identifier) = identifier) ;) }) while (parenthesized_expression "(factors + j + -1 != pmVar14)" ( (binary_expression "factors + j + -1 != pmVar14" (binary_expression "factors + j + -1" (binary_expression "factors + j" identifier + identifier) + number_literal) != identifier) )) ;) (expression_statement "iVar15 = (int)p_Var12 * 4;" (assignment_expression "iVar15 = (int)p_Var12 * 4" identifier = (binary_expression "(int)p_Var12 * 4" (cast_expression "(int)p_Var12" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal)) ;) (expression_statement "iVar17 = (j + -1) * 4;" (assignment_expression "iVar17 = (j + -1) * 4" identifier = (binary_expression "(j + -1) * 4" (parenthesized_expression "(j + -1)" ( (binary_expression "j + -1" identifier + number_literal) )) * number_literal)) ;) }))) (if_statement "if ((int)p_Var12 < x->_mp_alloc) {\n      unaff_s3 = x->_mp_d;\n    }\n    else {\n      unaff_s3 = (mp_limb_t *)\n                 (*(code *)PTR___gmpz_realloc_000975bc)\n                           (x,(undefined1 *)((int)&p_Var12->_mp_alloc + 1));\n    }" if (parenthesized_expression "((int)p_Var12 < x->_mp_alloc)" ( (binary_expression "(int)p_Var12 < x->_mp_alloc" (cast_expression "(int)p_Var12" ( (type_descriptor "int" primitive_type) ) identifier) < (field_expression "x->_mp_alloc" identifier -> field_identifier)) )) (compound_statement "{\n      unaff_s3 = x->_mp_d;\n    }" { (expression_statement "unaff_s3 = x->_mp_d;" (assignment_expression "unaff_s3 = x->_mp_d" identifier = (field_expression "x->_mp_d" identifier -> field_identifier)) ;) }) (else_clause "else {\n      unaff_s3 = (mp_limb_t *)\n                 (*(code *)PTR___gmpz_realloc_000975bc)\n                           (x,(undefined1 *)((int)&p_Var12->_mp_alloc + 1));\n    }" else (compound_statement "{\n      unaff_s3 = (mp_limb_t *)\n                 (*(code *)PTR___gmpz_realloc_000975bc)\n                           (x,(undefined1 *)((int)&p_Var12->_mp_alloc + 1));\n    }" { (expression_statement "unaff_s3 = (mp_limb_t *)\n                 (*(code *)PTR___gmpz_realloc_000975bc)\n                           (x,(undefined1 *)((int)&p_Var12->_mp_alloc + 1));" (assignment_expression "unaff_s3 = (mp_limb_t *)\n                 (*(code *)PTR___gmpz_realloc_000975bc)\n                           (x,(undefined1 *)((int)&p_Var12->_mp_alloc + 1))" identifier = (cast_expression "(mp_limb_t *)\n                 (*(code *)PTR___gmpz_realloc_000975bc)\n                           (x,(undefined1 *)((int)&p_Var12->_mp_alloc + 1))" ( (type_descriptor "mp_limb_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)PTR___gmpz_realloc_000975bc)\n                           (x,(undefined1 *)((int)&p_Var12->_mp_alloc + 1))" (parenthesized_expression "(*(code *)PTR___gmpz_realloc_000975bc)" ( (pointer_expression "*(code *)PTR___gmpz_realloc_000975bc" * (cast_expression "(code *)PTR___gmpz_realloc_000975bc" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(x,(undefined1 *)((int)&p_Var12->_mp_alloc + 1))" ( identifier , (cast_expression "(undefined1 *)((int)&p_Var12->_mp_alloc + 1)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&p_Var12->_mp_alloc + 1)" ( (binary_expression "(int)&p_Var12->_mp_alloc + 1" (cast_expression "(int)&p_Var12->_mp_alloc" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&p_Var12->_mp_alloc" & (field_expression "p_Var12->_mp_alloc" identifier -> field_identifier))) + number_literal) ))) ))))) ;) }))) (expression_statement "j = (int)factors + iVar17;" (assignment_expression "j = (int)factors + iVar17" identifier = (binary_expression "(int)factors + iVar17" (cast_expression "(int)factors" ( (type_descriptor "int" primitive_type) ) identifier) + identifier)) ;) (expression_statement "p_Var16 = (mpz_ptr)((int)unaff_s3 + iVar15);" (assignment_expression "p_Var16 = (mpz_ptr)((int)unaff_s3 + iVar15)" identifier = (call_expression "(mpz_ptr)((int)unaff_s3 + iVar15)" (parenthesized_expression "(mpz_ptr)" ( identifier )) (argument_list "((int)unaff_s3 + iVar15)" ( (binary_expression "(int)unaff_s3 + iVar15" (cast_expression "(int)unaff_s3" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) ;) (expression_statement "p_Var2 = p_Var12;" (assignment_expression "p_Var2 = p_Var12" identifier = identifier) ;) (expression_statement "iVar15 = (*(code *)PTR___gmpn_mul_1_000970a4)(unaff_s3,factors,p_Var12,((mpz_ptr)j)->_mp_alloc);" (assignment_expression "iVar15 = (*(code *)PTR___gmpn_mul_1_000970a4)(unaff_s3,factors,p_Var12,((mpz_ptr)j)->_mp_alloc)" identifier = (call_expression "(*(code *)PTR___gmpn_mul_1_000970a4)(unaff_s3,factors,p_Var12,((mpz_ptr)j)->_mp_alloc)" (parenthesized_expression "(*(code *)PTR___gmpn_mul_1_000970a4)" ( (pointer_expression "*(code *)PTR___gmpn_mul_1_000970a4" * (cast_expression "(code *)PTR___gmpn_mul_1_000970a4" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(unaff_s3,factors,p_Var12,((mpz_ptr)j)->_mp_alloc)" ( identifier , identifier , identifier , (field_expression "((mpz_ptr)j)->_mp_alloc" (parenthesized_expression "((mpz_ptr)j)" ( (cast_expression "(mpz_ptr)j" ( (type_descriptor "mpz_ptr" type_identifier) ) identifier) )) -> field_identifier) )))) ;) (expression_statement "puVar3 = (undefined1 *)((int)&p_Var12->_mp_alloc + (uint)(iVar15 != 0));" (assignment_expression "puVar3 = (undefined1 *)((int)&p_Var12->_mp_alloc + (uint)(iVar15 != 0))" identifier = (cast_expression "(undefined1 *)((int)&p_Var12->_mp_alloc + (uint)(iVar15 != 0))" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&p_Var12->_mp_alloc + (uint)(iVar15 != 0))" ( (binary_expression "(int)&p_Var12->_mp_alloc + (uint)(iVar15 != 0)" (cast_expression "(int)&p_Var12->_mp_alloc" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&p_Var12->_mp_alloc" & (field_expression "p_Var12->_mp_alloc" identifier -> field_identifier))) + (call_expression "(uint)(iVar15 != 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(iVar15 != 0)" ( (binary_expression "iVar15 != 0" identifier != number_literal) )))) )))) ;) (expression_statement "p_Var16->_mp_alloc = iVar15;" (assignment_expression "p_Var16->_mp_alloc = iVar15" (field_expression "p_Var16->_mp_alloc" identifier -> field_identifier) = identifier) ;) (expression_statement "x->_mp_size = (int)puVar3;" (assignment_expression "x->_mp_size = (int)puVar3" (field_expression "x->_mp_size" identifier -> field_identifier) = (cast_expression "(int)puVar3" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "puVar22 = auStack_70;" (assignment_expression "puVar22 = auStack_70" identifier = identifier) ;) }) (else_clause "else {\n    iVar17 = j >> 1;\n    __tmp_marker = (tmp_reentrant_t *)0x0;\n    iVar15 = j - iVar17;\n    x2[0]._mp_alloc = iVar15;\n    if ((uint)(iVar15 * 4) < 0x7f01) {\n      iVar1 = -(iVar15 * 4 + 7U & 0xfffffff8);\n      puVar22 = auStack_70 + iVar1;\n      x2[0]._mp_d = (mp_limb_t *)((int)x2 + iVar1 + -0x20);\n    }\n    else {\n      x2[0]._mp_d = (mp_limb_t *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&__tmp_marker);\n    }\n    x1[0]._mp_d = factors + iVar17;\n    x1[0]._mp_alloc = iVar15;\n    p_Var16 = (mpz_ptr)__gmpz_prodlimbs(x2,x1[0]._mp_d,iVar15);\n    p_Var2 = (mpz_ptr)__gmpz_prodlimbs(x1,factors,iVar17);\n    p_Var12 = (mpz_ptr)((int)&p_Var2->_mp_alloc + (int)&p_Var16->_mp_alloc);\n    if (x->_mp_alloc < (int)p_Var12) {\n      pmVar8 = (mp_limb_t *)(*(code *)PTR___gmpz_realloc_000975bc)(x,p_Var12);\n    }\n    else {\n      pmVar8 = x->_mp_d;\n    }\n    factors = x2[0]._mp_d;\n    pmVar10 = x1[0]._mp_d;\n    if ((int)p_Var2 < (int)p_Var16) {\n      *(mpz_ptr *)(puVar22 + 0x10) = p_Var2;\n      p_Var2 = p_Var16;\n      iVar15 = (*(code *)PTR___gmpn_mul_000972b4)(pmVar8,factors,p_Var16,pmVar10);\n    }\n    else {\n      *(mpz_ptr *)(puVar22 + 0x10) = p_Var16;\n      iVar15 = (*(code *)PTR___gmpn_mul_000972b4)();\n      factors = pmVar10;\n    }\n    if (__tmp_marker != (tmp_reentrant_t *)0x0) {\n      (*(code *)PTR___gmp_tmp_reentrant_free_00097614)();\n    }\n    puVar3 = (undefined1 *)((int)p_Var12 - (uint)(iVar15 == 0));\n    x->_mp_size = (int)puVar3;\n  }" else (compound_statement "{\n    iVar17 = j >> 1;\n    __tmp_marker = (tmp_reentrant_t *)0x0;\n    iVar15 = j - iVar17;\n    x2[0]._mp_alloc = iVar15;\n    if ((uint)(iVar15 * 4) < 0x7f01) {\n      iVar1 = -(iVar15 * 4 + 7U & 0xfffffff8);\n      puVar22 = auStack_70 + iVar1;\n      x2[0]._mp_d = (mp_limb_t *)((int)x2 + iVar1 + -0x20);\n    }\n    else {\n      x2[0]._mp_d = (mp_limb_t *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&__tmp_marker);\n    }\n    x1[0]._mp_d = factors + iVar17;\n    x1[0]._mp_alloc = iVar15;\n    p_Var16 = (mpz_ptr)__gmpz_prodlimbs(x2,x1[0]._mp_d,iVar15);\n    p_Var2 = (mpz_ptr)__gmpz_prodlimbs(x1,factors,iVar17);\n    p_Var12 = (mpz_ptr)((int)&p_Var2->_mp_alloc + (int)&p_Var16->_mp_alloc);\n    if (x->_mp_alloc < (int)p_Var12) {\n      pmVar8 = (mp_limb_t *)(*(code *)PTR___gmpz_realloc_000975bc)(x,p_Var12);\n    }\n    else {\n      pmVar8 = x->_mp_d;\n    }\n    factors = x2[0]._mp_d;\n    pmVar10 = x1[0]._mp_d;\n    if ((int)p_Var2 < (int)p_Var16) {\n      *(mpz_ptr *)(puVar22 + 0x10) = p_Var2;\n      p_Var2 = p_Var16;\n      iVar15 = (*(code *)PTR___gmpn_mul_000972b4)(pmVar8,factors,p_Var16,pmVar10);\n    }\n    else {\n      *(mpz_ptr *)(puVar22 + 0x10) = p_Var16;\n      iVar15 = (*(code *)PTR___gmpn_mul_000972b4)();\n      factors = pmVar10;\n    }\n    if (__tmp_marker != (tmp_reentrant_t *)0x0) {\n      (*(code *)PTR___gmp_tmp_reentrant_free_00097614)();\n    }\n    puVar3 = (undefined1 *)((int)p_Var12 - (uint)(iVar15 == 0));\n    x->_mp_size = (int)puVar3;\n  }" { (expression_statement "iVar17 = j >> 1;" (assignment_expression "iVar17 = j >> 1" identifier = (binary_expression "j >> 1" identifier >> number_literal)) ;) (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 "iVar15 = j - iVar17;" (assignment_expression "iVar15 = j - iVar17" identifier = (binary_expression "j - iVar17" identifier - identifier)) ;) (expression_statement "x2[0]._mp_alloc = iVar15;" (assignment_expression "x2[0]._mp_alloc = iVar15" (field_expression "x2[0]._mp_alloc" (subscript_expression "x2[0]" identifier [ number_literal ]) . field_identifier) = identifier) ;) (if_statement "if ((uint)(iVar15 * 4) < 0x7f01) {\n      iVar1 = -(iVar15 * 4 + 7U & 0xfffffff8);\n      puVar22 = auStack_70 + iVar1;\n      x2[0]._mp_d = (mp_limb_t *)((int)x2 + iVar1 + -0x20);\n    }\n    else {\n      x2[0]._mp_d = (mp_limb_t *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&__tmp_marker);\n    }" if (parenthesized_expression "((uint)(iVar15 * 4) < 0x7f01)" ( (binary_expression "(uint)(iVar15 * 4) < 0x7f01" (call_expression "(uint)(iVar15 * 4)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(iVar15 * 4)" ( (binary_expression "iVar15 * 4" identifier * number_literal) ))) < number_literal) )) (compound_statement "{\n      iVar1 = -(iVar15 * 4 + 7U & 0xfffffff8);\n      puVar22 = auStack_70 + iVar1;\n      x2[0]._mp_d = (mp_limb_t *)((int)x2 + iVar1 + -0x20);\n    }" { (expression_statement "iVar1 = -(iVar15 * 4 + 7U & 0xfffffff8);" (assignment_expression "iVar1 = -(iVar15 * 4 + 7U & 0xfffffff8)" identifier = (unary_expression "-(iVar15 * 4 + 7U & 0xfffffff8)" - (parenthesized_expression "(iVar15 * 4 + 7U & 0xfffffff8)" ( (binary_expression "iVar15 * 4 + 7U & 0xfffffff8" (binary_expression "iVar15 * 4 + 7U" (binary_expression "iVar15 * 4" identifier * number_literal) + number_literal) & number_literal) )))) ;) (expression_statement "puVar22 = auStack_70 + iVar1;" (assignment_expression "puVar22 = auStack_70 + iVar1" identifier = (binary_expression "auStack_70 + iVar1" identifier + identifier)) ;) (expression_statement "x2[0]._mp_d = (mp_limb_t *)((int)x2 + iVar1 + -0x20);" (assignment_expression "x2[0]._mp_d = (mp_limb_t *)((int)x2 + iVar1 + -0x20)" (field_expression "x2[0]._mp_d" (subscript_expression "x2[0]" identifier [ number_literal ]) . field_identifier) = (cast_expression "(mp_limb_t *)((int)x2 + iVar1 + -0x20)" ( (type_descriptor "mp_limb_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)x2 + iVar1 + -0x20)" ( (binary_expression "(int)x2 + iVar1 + -0x20" (binary_expression "(int)x2 + iVar1" (cast_expression "(int)x2" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) + number_literal) )))) ;) }) (else_clause "else {\n      x2[0]._mp_d = (mp_limb_t *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&__tmp_marker);\n    }" else (compound_statement "{\n      x2[0]._mp_d = (mp_limb_t *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&__tmp_marker);\n    }" { (expression_statement "x2[0]._mp_d = (mp_limb_t *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&__tmp_marker);" (assignment_expression "x2[0]._mp_d = (mp_limb_t *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&__tmp_marker)" (field_expression "x2[0]._mp_d" (subscript_expression "x2[0]" identifier [ number_literal ]) . field_identifier) = (cast_expression "(mp_limb_t *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&__tmp_marker)" ( (type_descriptor "mp_limb_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&__tmp_marker)" (parenthesized_expression "(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)" ( (pointer_expression "*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0" * (cast_expression "(code *)PTR___gmp_tmp_reentrant_alloc_000972f0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(&__tmp_marker)" ( (pointer_expression "&__tmp_marker" & identifier) ))))) ;) }))) (expression_statement "x1[0]._mp_d = factors + iVar17;" (assignment_expression "x1[0]._mp_d = factors + iVar17" (field_expression "x1[0]._mp_d" (subscript_expression "x1[0]" identifier [ number_literal ]) . field_identifier) = (binary_expression "factors + iVar17" identifier + identifier)) ;) (expression_statement "x1[0]._mp_alloc = iVar15;" (assignment_expression "x1[0]._mp_alloc = iVar15" (field_expression "x1[0]._mp_alloc" (subscript_expression "x1[0]" identifier [ number_literal ]) . field_identifier) = identifier) ;) (expression_statement "p_Var16 = (mpz_ptr)__gmpz_prodlimbs(x2,x1[0]._mp_d,iVar15);" (assignment_expression "p_Var16 = (mpz_ptr)__gmpz_prodlimbs(x2,x1[0]._mp_d,iVar15)" identifier = (cast_expression "(mpz_ptr)__gmpz_prodlimbs(x2,x1[0]._mp_d,iVar15)" ( (type_descriptor "mpz_ptr" type_identifier) ) (call_expression "__gmpz_prodlimbs(x2,x1[0]._mp_d,iVar15)" identifier (argument_list "(x2,x1[0]._mp_d,iVar15)" ( identifier , (field_expression "x1[0]._mp_d" (subscript_expression "x1[0]" identifier [ number_literal ]) . field_identifier) , identifier ))))) ;) (expression_statement "p_Var2 = (mpz_ptr)__gmpz_prodlimbs(x1,factors,iVar17);" (assignment_expression "p_Var2 = (mpz_ptr)__gmpz_prodlimbs(x1,factors,iVar17)" identifier = (cast_expression "(mpz_ptr)__gmpz_prodlimbs(x1,factors,iVar17)" ( (type_descriptor "mpz_ptr" type_identifier) ) (call_expression "__gmpz_prodlimbs(x1,factors,iVar17)" identifier (argument_list "(x1,factors,iVar17)" ( identifier , identifier , identifier ))))) ;) (expression_statement "p_Var12 = (mpz_ptr)((int)&p_Var2->_mp_alloc + (int)&p_Var16->_mp_alloc);" (assignment_expression "p_Var12 = (mpz_ptr)((int)&p_Var2->_mp_alloc + (int)&p_Var16->_mp_alloc)" identifier = (call_expression "(mpz_ptr)((int)&p_Var2->_mp_alloc + (int)&p_Var16->_mp_alloc)" (parenthesized_expression "(mpz_ptr)" ( identifier )) (argument_list "((int)&p_Var2->_mp_alloc + (int)&p_Var16->_mp_alloc)" ( (binary_expression "(int)&p_Var2->_mp_alloc + (int)&p_Var16->_mp_alloc" (cast_expression "(int)&p_Var2->_mp_alloc" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&p_Var2->_mp_alloc" & (field_expression "p_Var2->_mp_alloc" identifier -> field_identifier))) + (cast_expression "(int)&p_Var16->_mp_alloc" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&p_Var16->_mp_alloc" & (field_expression "p_Var16->_mp_alloc" identifier -> field_identifier)))) )))) ;) (if_statement "if (x->_mp_alloc < (int)p_Var12) {\n      pmVar8 = (mp_limb_t *)(*(code *)PTR___gmpz_realloc_000975bc)(x,p_Var12);\n    }\n    else {\n      pmVar8 = x->_mp_d;\n    }" if (parenthesized_expression "(x->_mp_alloc < (int)p_Var12)" ( (binary_expression "x->_mp_alloc < (int)p_Var12" (field_expression "x->_mp_alloc" identifier -> field_identifier) < (cast_expression "(int)p_Var12" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n      pmVar8 = (mp_limb_t *)(*(code *)PTR___gmpz_realloc_000975bc)(x,p_Var12);\n    }" { (expression_statement "pmVar8 = (mp_limb_t *)(*(code *)PTR___gmpz_realloc_000975bc)(x,p_Var12);" (assignment_expression "pmVar8 = (mp_limb_t *)(*(code *)PTR___gmpz_realloc_000975bc)(x,p_Var12)" identifier = (cast_expression "(mp_limb_t *)(*(code *)PTR___gmpz_realloc_000975bc)(x,p_Var12)" ( (type_descriptor "mp_limb_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)PTR___gmpz_realloc_000975bc)(x,p_Var12)" (parenthesized_expression "(*(code *)PTR___gmpz_realloc_000975bc)" ( (pointer_expression "*(code *)PTR___gmpz_realloc_000975bc" * (cast_expression "(code *)PTR___gmpz_realloc_000975bc" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(x,p_Var12)" ( identifier , identifier ))))) ;) }) (else_clause "else {\n      pmVar8 = x->_mp_d;\n    }" else (compound_statement "{\n      pmVar8 = x->_mp_d;\n    }" { (expression_statement "pmVar8 = x->_mp_d;" (assignment_expression "pmVar8 = x->_mp_d" identifier = (field_expression "x->_mp_d" identifier -> field_identifier)) ;) }))) (expression_statement "factors = x2[0]._mp_d;" (assignment_expression "factors = x2[0]._mp_d" identifier = (field_expression "x2[0]._mp_d" (subscript_expression "x2[0]" identifier [ number_literal ]) . field_identifier)) ;) (expression_statement "pmVar10 = x1[0]._mp_d;" (assignment_expression "pmVar10 = x1[0]._mp_d" identifier = (field_expression "x1[0]._mp_d" (subscript_expression "x1[0]" identifier [ number_literal ]) . field_identifier)) ;) (if_statement "if ((int)p_Var2 < (int)p_Var16) {\n      *(mpz_ptr *)(puVar22 + 0x10) = p_Var2;\n      p_Var2 = p_Var16;\n      iVar15 = (*(code *)PTR___gmpn_mul_000972b4)(pmVar8,factors,p_Var16,pmVar10);\n    }\n    else {\n      *(mpz_ptr *)(puVar22 + 0x10) = p_Var16;\n      iVar15 = (*(code *)PTR___gmpn_mul_000972b4)();\n      factors = pmVar10;\n    }" if (parenthesized_expression "((int)p_Var2 < (int)p_Var16)" ( (binary_expression "(int)p_Var2 < (int)p_Var16" (cast_expression "(int)p_Var2" ( (type_descriptor "int" primitive_type) ) identifier) < (cast_expression "(int)p_Var16" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n      *(mpz_ptr *)(puVar22 + 0x10) = p_Var2;\n      p_Var2 = p_Var16;\n      iVar15 = (*(code *)PTR___gmpn_mul_000972b4)(pmVar8,factors,p_Var16,pmVar10);\n    }" { (expression_statement "*(mpz_ptr *)(puVar22 + 0x10) = p_Var2;" (assignment_expression "*(mpz_ptr *)(puVar22 + 0x10) = p_Var2" (pointer_expression "*(mpz_ptr *)(puVar22 + 0x10)" * (cast_expression "(mpz_ptr *)(puVar22 + 0x10)" ( (type_descriptor "mpz_ptr *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar22 + 0x10)" ( (binary_expression "puVar22 + 0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "p_Var2 = p_Var16;" (assignment_expression "p_Var2 = p_Var16" identifier = identifier) ;) (expression_statement "iVar15 = (*(code *)PTR___gmpn_mul_000972b4)(pmVar8,factors,p_Var16,pmVar10);" (assignment_expression "iVar15 = (*(code *)PTR___gmpn_mul_000972b4)(pmVar8,factors,p_Var16,pmVar10)" identifier = (call_expression "(*(code *)PTR___gmpn_mul_000972b4)(pmVar8,factors,p_Var16,pmVar10)" (parenthesized_expression "(*(code *)PTR___gmpn_mul_000972b4)" ( (pointer_expression "*(code *)PTR___gmpn_mul_000972b4" * (cast_expression "(code *)PTR___gmpn_mul_000972b4" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(pmVar8,factors,p_Var16,pmVar10)" ( identifier , identifier , identifier , identifier )))) ;) }) (else_clause "else {\n      *(mpz_ptr *)(puVar22 + 0x10) = p_Var16;\n      iVar15 = (*(code *)PTR___gmpn_mul_000972b4)();\n      factors = pmVar10;\n    }" else (compound_statement "{\n      *(mpz_ptr *)(puVar22 + 0x10) = p_Var16;\n      iVar15 = (*(code *)PTR___gmpn_mul_000972b4)();\n      factors = pmVar10;\n    }" { (expression_statement "*(mpz_ptr *)(puVar22 + 0x10) = p_Var16;" (assignment_expression "*(mpz_ptr *)(puVar22 + 0x10) = p_Var16" (pointer_expression "*(mpz_ptr *)(puVar22 + 0x10)" * (cast_expression "(mpz_ptr *)(puVar22 + 0x10)" ( (type_descriptor "mpz_ptr *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar22 + 0x10)" ( (binary_expression "puVar22 + 0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "iVar15 = (*(code *)PTR___gmpn_mul_000972b4)();" (assignment_expression "iVar15 = (*(code *)PTR___gmpn_mul_000972b4)()" identifier = (call_expression "(*(code *)PTR___gmpn_mul_000972b4)()" (parenthesized_expression "(*(code *)PTR___gmpn_mul_000972b4)" ( (pointer_expression "*(code *)PTR___gmpn_mul_000972b4" * (cast_expression "(code *)PTR___gmpn_mul_000972b4" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( )))) ;) (expression_statement "factors = pmVar10;" (assignment_expression "factors = pmVar10" identifier = identifier) ;) }))) (if_statement "if (__tmp_marker != (tmp_reentrant_t *)0x0) {\n      (*(code *)PTR___gmp_tmp_reentrant_free_00097614)();\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      (*(code *)PTR___gmp_tmp_reentrant_free_00097614)();\n    }" { (expression_statement "(*(code *)PTR___gmp_tmp_reentrant_free_00097614)();" (call_expression "(*(code *)PTR___gmp_tmp_reentrant_free_00097614)()" (parenthesized_expression "(*(code *)PTR___gmp_tmp_reentrant_free_00097614)" ( (pointer_expression "*(code *)PTR___gmp_tmp_reentrant_free_00097614" * (cast_expression "(code *)PTR___gmp_tmp_reentrant_free_00097614" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) })) (expression_statement "puVar3 = (undefined1 *)((int)p_Var12 - (uint)(iVar15 == 0));" (assignment_expression "puVar3 = (undefined1 *)((int)p_Var12 - (uint)(iVar15 == 0))" identifier = (cast_expression "(undefined1 *)((int)p_Var12 - (uint)(iVar15 == 0))" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)p_Var12 - (uint)(iVar15 == 0))" ( (binary_expression "(int)p_Var12 - (uint)(iVar15 == 0)" (cast_expression "(int)p_Var12" ( (type_descriptor "int" primitive_type) ) identifier) - (call_expression "(uint)(iVar15 == 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(iVar15 == 0)" ( (binary_expression "iVar15 == 0" identifier == number_literal) )))) )))) ;) (expression_statement "x->_mp_size = (int)puVar3;" (assignment_expression "x->_mp_size = (int)puVar3" (field_expression "x->_mp_size" identifier -> field_identifier) = (cast_expression "(int)puVar3" ( (type_descriptor "int" primitive_type) ) identifier)) ;) }))) (if_statement "if (pmVar5 == (mp_limb_t *)*pmVar18) {\n    return (mp_size_t)puVar3;\n  }" if (parenthesized_expression "(pmVar5 == (mp_limb_t *)*pmVar18)" ( (binary_expression "pmVar5 == (mp_limb_t *)*pmVar18" identifier == (cast_expression "(mp_limb_t *)*pmVar18" ( (type_descriptor "mp_limb_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*pmVar18" * identifier))) )) (compound_statement "{\n    return (mp_size_t)puVar3;\n  }" { (return_statement "return (mp_size_t)puVar3;" return (cast_expression "(mp_size_t)puVar3" ( (type_descriptor "mp_size_t" type_identifier) ) identifier) ;) })) (expression_statement "uVar23 = 0x275d4;" (assignment_expression "uVar23 = 0x275d4" identifier = number_literal) ;) (expression_statement "puVar19 = PTR___stack_chk_fail_000974d0;" (assignment_expression "puVar19 = PTR___stack_chk_fail_000974d0" identifier = identifier) ;) (expression_statement "(*(code *)PTR___stack_chk_fail_000974d0)();" (call_expression "(*(code *)PTR___stack_chk_fail_000974d0)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_000974d0)" ( (pointer_expression "*(code *)PTR___stack_chk_fail_000974d0" * (cast_expression "(code *)PTR___stack_chk_fail_000974d0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (expression_statement "puVar21 = puVar19 + 0x77a60;" (assignment_expression "puVar21 = puVar19 + 0x77a60" identifier = (binary_expression "puVar19 + 0x77a60" identifier + number_literal)) ;) (expression_statement "*(undefined **)(puVar22 + -0x28) = puVar21;" (assignment_expression "*(undefined **)(puVar22 + -0x28) = puVar21" (pointer_expression "*(undefined **)(puVar22 + -0x28)" * (cast_expression "(undefined **)(puVar22 + -0x28)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar22 + -0x28)" ( (binary_expression "puVar22 + -0x28" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar22 + -4) = uVar23;" (assignment_expression "*(undefined4 *)(puVar22 + -4) = uVar23" (pointer_expression "*(undefined4 *)(puVar22 + -4)" * (cast_expression "(undefined4 *)(puVar22 + -4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar22 + -4)" ( (binary_expression "puVar22 + -4" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(mp_ptr *)(puVar22 + -8) = pmVar18;" (assignment_expression "*(mp_ptr *)(puVar22 + -8) = pmVar18" (pointer_expression "*(mp_ptr *)(puVar22 + -8)" * (cast_expression "(mp_ptr *)(puVar22 + -8)" ( (type_descriptor "mp_ptr *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar22 + -8)" ( (binary_expression "puVar22 + -8" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(mpz_ptr *)(puVar22 + -0xc) = x;" (assignment_expression "*(mpz_ptr *)(puVar22 + -0xc) = x" (pointer_expression "*(mpz_ptr *)(puVar22 + -0xc)" * (cast_expression "(mpz_ptr *)(puVar22 + -0xc)" ( (type_descriptor "mpz_ptr *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar22 + -0xc)" ( (binary_expression "puVar22 + -0xc" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(mp_limb_t **)(puVar22 + -0x10) = unaff_s3;" (assignment_expression "*(mp_limb_t **)(puVar22 + -0x10) = unaff_s3" (pointer_expression "*(mp_limb_t **)(puVar22 + -0x10)" * (cast_expression "(mp_limb_t **)(puVar22 + -0x10)" ( (type_descriptor "mp_limb_t **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar22 + -0x10)" ( (binary_expression "puVar22 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(mp_size_t *)(puVar22 + -0x14) = j;" (assignment_expression "*(mp_size_t *)(puVar22 + -0x14) = j" (pointer_expression "*(mp_size_t *)(puVar22 + -0x14)" * (cast_expression "(mp_size_t *)(puVar22 + -0x14)" ( (type_descriptor "mp_size_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar22 + -0x14)" ( (binary_expression "puVar22 + -0x14" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(mpz_ptr *)(puVar22 + -0x18) = p_Var16;" (assignment_expression "*(mpz_ptr *)(puVar22 + -0x18) = p_Var16" (pointer_expression "*(mpz_ptr *)(puVar22 + -0x18)" * (cast_expression "(mpz_ptr *)(puVar22 + -0x18)" ( (type_descriptor "mpz_ptr *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar22 + -0x18)" ( (binary_expression "puVar22 + -0x18" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(mpz_ptr *)(puVar22 + -0x1c) = p_Var12;" (assignment_expression "*(mpz_ptr *)(puVar22 + -0x1c) = p_Var12" (pointer_expression "*(mpz_ptr *)(puVar22 + -0x1c)" * (cast_expression "(mpz_ptr *)(puVar22 + -0x1c)" ( (type_descriptor "mpz_ptr *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar22 + -0x1c)" ( (binary_expression "puVar22 + -0x1c" identifier + number_literal) )))) = identifier) ;) (if_statement "if (p_Var2 == (mpz_ptr)0x0) {\n    pcVar20 = *(code **)(puVar19 + 0x6fffc);\n    (*pcVar20)();\nLAB_0002772c:\n    piVar13 = (int *)(*pcVar20)(unaff_s3,p_Var16);\n    puVar21 = *(undefined **)(puVar22 + -0x28);\n  }\n  else {\n    j = factors[1];\n    if ((mpz_ptr)j == (mpz_ptr)0x0) {\n      pmVar5[1] = 0;\n      return 0;\n    }\n    p_Var16 = (mpz_ptr)j;\n    if (j < 0) {\n      p_Var16 = (mpz_ptr)-j;\n    }\n    pcVar20 = *(code **)(puVar19 + 0x6ffdc);\n    unaff_s3 = pmVar5;\n    x = p_Var2;\n    pmVar18 = factors;\n    if ((int)*pmVar5 < (int)p_Var16) goto LAB_0002772c;\n    piVar13 = (int *)pmVar5[2];\n  }" if (parenthesized_expression "(p_Var2 == (mpz_ptr)0x0)" ( (binary_expression "p_Var2 == (mpz_ptr)0x0" identifier == (cast_expression "(mpz_ptr)0x0" ( (type_descriptor "mpz_ptr" type_identifier) ) number_literal)) )) (compound_statement "{\n    pcVar20 = *(code **)(puVar19 + 0x6fffc);\n    (*pcVar20)();\nLAB_0002772c:\n    piVar13 = (int *)(*pcVar20)(unaff_s3,p_Var16);\n    puVar21 = *(undefined **)(puVar22 + -0x28);\n  }" { (expression_statement "pcVar20 = *(code **)(puVar19 + 0x6fffc);" (assignment_expression "pcVar20 = *(code **)(puVar19 + 0x6fffc)" identifier = (pointer_expression "*(code **)(puVar19 + 0x6fffc)" * (cast_expression "(code **)(puVar19 + 0x6fffc)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar19 + 0x6fffc)" ( (binary_expression "puVar19 + 0x6fffc" identifier + number_literal) ))))) ;) (expression_statement "(*pcVar20)();" (call_expression "(*pcVar20)()" (parenthesized_expression "(*pcVar20)" ( (pointer_expression "*pcVar20" * identifier) )) (argument_list "()" ( ))) ;) (labeled_statement "LAB_0002772c:\n    piVar13 = (int *)(*pcVar20)(unaff_s3,p_Var16);" statement_identifier : (expression_statement "piVar13 = (int *)(*pcVar20)(unaff_s3,p_Var16);" (assignment_expression "piVar13 = (int *)(*pcVar20)(unaff_s3,p_Var16)" identifier = (cast_expression "(int *)(*pcVar20)(unaff_s3,p_Var16)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "(*pcVar20)(unaff_s3,p_Var16)" (parenthesized_expression "(*pcVar20)" ( (pointer_expression "*pcVar20" * identifier) )) (argument_list "(unaff_s3,p_Var16)" ( identifier , identifier ))))) ;)) (expression_statement "puVar21 = *(undefined **)(puVar22 + -0x28);" (assignment_expression "puVar21 = *(undefined **)(puVar22 + -0x28)" identifier = (pointer_expression "*(undefined **)(puVar22 + -0x28)" * (cast_expression "(undefined **)(puVar22 + -0x28)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar22 + -0x28)" ( (binary_expression "puVar22 + -0x28" identifier + number_literal) ))))) ;) }) (else_clause "else {\n    j = factors[1];\n    if ((mpz_ptr)j == (mpz_ptr)0x0) {\n      pmVar5[1] = 0;\n      return 0;\n    }\n    p_Var16 = (mpz_ptr)j;\n    if (j < 0) {\n      p_Var16 = (mpz_ptr)-j;\n    }\n    pcVar20 = *(code **)(puVar19 + 0x6ffdc);\n    unaff_s3 = pmVar5;\n    x = p_Var2;\n    pmVar18 = factors;\n    if ((int)*pmVar5 < (int)p_Var16) goto LAB_0002772c;\n    piVar13 = (int *)pmVar5[2];\n  }" else (compound_statement "{\n    j = factors[1];\n    if ((mpz_ptr)j == (mpz_ptr)0x0) {\n      pmVar5[1] = 0;\n      return 0;\n    }\n    p_Var16 = (mpz_ptr)j;\n    if (j < 0) {\n      p_Var16 = (mpz_ptr)-j;\n    }\n    pcVar20 = *(code **)(puVar19 + 0x6ffdc);\n    unaff_s3 = pmVar5;\n    x = p_Var2;\n    pmVar18 = factors;\n    if ((int)*pmVar5 < (int)p_Var16) goto LAB_0002772c;\n    piVar13 = (int *)pmVar5[2];\n  }" { (expression_statement "j = factors[1];" (assignment_expression "j = factors[1]" identifier = (subscript_expression "factors[1]" identifier [ number_literal ])) ;) (if_statement "if ((mpz_ptr)j == (mpz_ptr)0x0) {\n      pmVar5[1] = 0;\n      return 0;\n    }" if (parenthesized_expression "((mpz_ptr)j == (mpz_ptr)0x0)" ( (binary_expression "(mpz_ptr)j == (mpz_ptr)0x0" (cast_expression "(mpz_ptr)j" ( (type_descriptor "mpz_ptr" type_identifier) ) identifier) == (cast_expression "(mpz_ptr)0x0" ( (type_descriptor "mpz_ptr" type_identifier) ) number_literal)) )) (compound_statement "{\n      pmVar5[1] = 0;\n      return 0;\n    }" { (expression_statement "pmVar5[1] = 0;" (assignment_expression "pmVar5[1] = 0" (subscript_expression "pmVar5[1]" identifier [ number_literal ]) = number_literal) ;) (return_statement "return 0;" return number_literal ;) })) (expression_statement "p_Var16 = (mpz_ptr)j;" (assignment_expression "p_Var16 = (mpz_ptr)j" identifier = (cast_expression "(mpz_ptr)j" ( (type_descriptor "mpz_ptr" type_identifier) ) identifier)) ;) (if_statement "if (j < 0) {\n      p_Var16 = (mpz_ptr)-j;\n    }" if (parenthesized_expression "(j < 0)" ( (binary_expression "j < 0" identifier < number_literal) )) (compound_statement "{\n      p_Var16 = (mpz_ptr)-j;\n    }" { (expression_statement "p_Var16 = (mpz_ptr)-j;" (assignment_expression "p_Var16 = (mpz_ptr)-j" identifier = (binary_expression "(mpz_ptr)-j" (parenthesized_expression "(mpz_ptr)" ( identifier )) - identifier)) ;) })) (expression_statement "pcVar20 = *(code **)(puVar19 + 0x6ffdc);" (assignment_expression "pcVar20 = *(code **)(puVar19 + 0x6ffdc)" identifier = (pointer_expression "*(code **)(puVar19 + 0x6ffdc)" * (cast_expression "(code **)(puVar19 + 0x6ffdc)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar19 + 0x6ffdc)" ( (binary_expression "puVar19 + 0x6ffdc" identifier + number_literal) ))))) ;) (expression_statement "unaff_s3 = pmVar5;" (assignment_expression "unaff_s3 = pmVar5" identifier = identifier) ;) (expression_statement "x = p_Var2;" (assignment_expression "x = p_Var2" identifier = identifier) ;) (expression_statement "pmVar18 = factors;" (assignment_expression "pmVar18 = factors" identifier = identifier) ;) (if_statement "if ((int)*pmVar5 < (int)p_Var16) goto LAB_0002772c;" if (parenthesized_expression "((int)*pmVar5 < (int)p_Var16)" ( (binary_expression "(int)*pmVar5 < (int)p_Var16" (cast_expression "(int)*pmVar5" ( (type_descriptor "int" primitive_type) ) (pointer_expression "*pmVar5" * identifier)) < (cast_expression "(int)p_Var16" ( (type_descriptor "int" primitive_type) ) identifier)) )) (goto_statement "goto LAB_0002772c;" goto statement_identifier ;)) (expression_statement "piVar13 = (int *)pmVar5[2];" (assignment_expression "piVar13 = (int *)pmVar5[2]" identifier = (cast_expression "(int *)pmVar5[2]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "pmVar5[2]" identifier [ number_literal ]))) ;) }))) (expression_statement "pcVar20 = *(code **)(puVar21 + -0x7d98);" (assignment_expression "pcVar20 = *(code **)(puVar21 + -0x7d98)" identifier = (pointer_expression "*(code **)(puVar21 + -0x7d98)" * (cast_expression "(code **)(puVar21 + -0x7d98)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar21 + -0x7d98)" ( (binary_expression "puVar21 + -0x7d98" identifier + number_literal) ))))) ;) (expression_statement "mVar11 = pmVar18[2];" (assignment_expression "mVar11 = pmVar18[2]" identifier = (subscript_expression "pmVar18[2]" identifier [ number_literal ])) ;) (expression_statement "*(mpz_ptr *)(puVar22 + -0x30) = x;" (assignment_expression "*(mpz_ptr *)(puVar22 + -0x30) = x" (pointer_expression "*(mpz_ptr *)(puVar22 + -0x30)" * (cast_expression "(mpz_ptr *)(puVar22 + -0x30)" ( (type_descriptor "mpz_ptr *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar22 + -0x30)" ( (binary_expression "puVar22 + -0x30" identifier + number_literal) )))) = identifier) ;) (expression_statement "mVar4 = (*pcVar20)(piVar13,0,mVar11,p_Var16);" (assignment_expression "mVar4 = (*pcVar20)(piVar13,0,mVar11,p_Var16)" identifier = (call_expression "(*pcVar20)(piVar13,0,mVar11,p_Var16)" (parenthesized_expression "(*pcVar20)" ( (pointer_expression "*pcVar20" * identifier) )) (argument_list "(piVar13,0,mVar11,p_Var16)" ( identifier , number_literal , identifier , identifier )))) ;) (expression_statement "piVar9 = piVar13 + (int)((int)&p_Var16[-1]._mp_d + 3);" (assignment_expression "piVar9 = piVar13 + (int)((int)&p_Var16[-1]._mp_d + 3)" identifier = (binary_expression "piVar13 + (int)((int)&p_Var16[-1]._mp_d + 3)" identifier + (cast_expression "(int)((int)&p_Var16[-1]._mp_d + 3)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((int)&p_Var16[-1]._mp_d + 3)" ( (binary_expression "(int)&p_Var16[-1]._mp_d + 3" (cast_expression "(int)&p_Var16[-1]._mp_d" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&p_Var16[-1]._mp_d" & (field_expression "p_Var16[-1]._mp_d" (subscript_expression "p_Var16[-1]" identifier [ number_literal ]) . field_identifier))) + number_literal) ))))) ;) (if_statement "if (mVar4 == 0) {\n    uVar7 = (uint)(*piVar9 == 0);\n    if (j < 0) {\n      mVar11 = uVar7 - (int)p_Var16;\n      goto LAB_00027684;\n    }\n  }\n  else {\n    if (j < 0) {\n      do {\n        iVar15 = *piVar13;\n        *piVar13 = iVar15 + 1;\n        piVar13 = piVar13 + 1;\n      } while (iVar15 + 1 == 0);\n      mVar4 = (int)x - mVar4;\n      mVar11 = (uint)(*piVar9 == 0) - (int)p_Var16;\n      goto LAB_00027684;\n    }\n    uVar7 = (uint)(*piVar9 == 0);\n  }" if (parenthesized_expression "(mVar4 == 0)" ( (binary_expression "mVar4 == 0" identifier == number_literal) )) (compound_statement "{\n    uVar7 = (uint)(*piVar9 == 0);\n    if (j < 0) {\n      mVar11 = uVar7 - (int)p_Var16;\n      goto LAB_00027684;\n    }\n  }" { (expression_statement "uVar7 = (uint)(*piVar9 == 0);" (assignment_expression "uVar7 = (uint)(*piVar9 == 0)" identifier = (call_expression "(uint)(*piVar9 == 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(*piVar9 == 0)" ( (binary_expression "*piVar9 == 0" (pointer_expression "*piVar9" * identifier) == number_literal) )))) ;) (if_statement "if (j < 0) {\n      mVar11 = uVar7 - (int)p_Var16;\n      goto LAB_00027684;\n    }" if (parenthesized_expression "(j < 0)" ( (binary_expression "j < 0" identifier < number_literal) )) (compound_statement "{\n      mVar11 = uVar7 - (int)p_Var16;\n      goto LAB_00027684;\n    }" { (expression_statement "mVar11 = uVar7 - (int)p_Var16;" (assignment_expression "mVar11 = uVar7 - (int)p_Var16" identifier = (binary_expression "uVar7 - (int)p_Var16" identifier - (cast_expression "(int)p_Var16" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (goto_statement "goto LAB_00027684;" goto statement_identifier ;) })) }) (else_clause "else {\n    if (j < 0) {\n      do {\n        iVar15 = *piVar13;\n        *piVar13 = iVar15 + 1;\n        piVar13 = piVar13 + 1;\n      } while (iVar15 + 1 == 0);\n      mVar4 = (int)x - mVar4;\n      mVar11 = (uint)(*piVar9 == 0) - (int)p_Var16;\n      goto LAB_00027684;\n    }\n    uVar7 = (uint)(*piVar9 == 0);\n  }" else (compound_statement "{\n    if (j < 0) {\n      do {\n        iVar15 = *piVar13;\n        *piVar13 = iVar15 + 1;\n        piVar13 = piVar13 + 1;\n      } while (iVar15 + 1 == 0);\n      mVar4 = (int)x - mVar4;\n      mVar11 = (uint)(*piVar9 == 0) - (int)p_Var16;\n      goto LAB_00027684;\n    }\n    uVar7 = (uint)(*piVar9 == 0);\n  }" { (if_statement "if (j < 0) {\n      do {\n        iVar15 = *piVar13;\n        *piVar13 = iVar15 + 1;\n        piVar13 = piVar13 + 1;\n      } while (iVar15 + 1 == 0);\n      mVar4 = (int)x - mVar4;\n      mVar11 = (uint)(*piVar9 == 0) - (int)p_Var16;\n      goto LAB_00027684;\n    }" if (parenthesized_expression "(j < 0)" ( (binary_expression "j < 0" identifier < number_literal) )) (compound_statement "{\n      do {\n        iVar15 = *piVar13;\n        *piVar13 = iVar15 + 1;\n        piVar13 = piVar13 + 1;\n      } while (iVar15 + 1 == 0);\n      mVar4 = (int)x - mVar4;\n      mVar11 = (uint)(*piVar9 == 0) - (int)p_Var16;\n      goto LAB_00027684;\n    }" { (do_statement "do {\n        iVar15 = *piVar13;\n        *piVar13 = iVar15 + 1;\n        piVar13 = piVar13 + 1;\n      } while (iVar15 + 1 == 0);" do (compound_statement "{\n        iVar15 = *piVar13;\n        *piVar13 = iVar15 + 1;\n        piVar13 = piVar13 + 1;\n      }" { (expression_statement "iVar15 = *piVar13;" (assignment_expression "iVar15 = *piVar13" identifier = (pointer_expression "*piVar13" * identifier)) ;) (expression_statement "*piVar13 = iVar15 + 1;" (assignment_expression "*piVar13 = iVar15 + 1" (pointer_expression "*piVar13" * identifier) = (binary_expression "iVar15 + 1" identifier + number_literal)) ;) (expression_statement "piVar13 = piVar13 + 1;" (assignment_expression "piVar13 = piVar13 + 1" identifier = (binary_expression "piVar13 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar15 + 1 == 0)" ( (binary_expression "iVar15 + 1 == 0" (binary_expression "iVar15 + 1" identifier + number_literal) == number_literal) )) ;) (expression_statement "mVar4 = (int)x - mVar4;" (assignment_expression "mVar4 = (int)x - mVar4" identifier = (binary_expression "(int)x - mVar4" (cast_expression "(int)x" ( (type_descriptor "int" primitive_type) ) identifier) - identifier)) ;) (expression_statement "mVar11 = (uint)(*piVar9 == 0) - (int)p_Var16;" (assignment_expression "mVar11 = (uint)(*piVar9 == 0) - (int)p_Var16" identifier = (binary_expression "(uint)(*piVar9 == 0) - (int)p_Var16" (call_expression "(uint)(*piVar9 == 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(*piVar9 == 0)" ( (binary_expression "*piVar9 == 0" (pointer_expression "*piVar9" * identifier) == number_literal) ))) - (cast_expression "(int)p_Var16" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (goto_statement "goto LAB_00027684;" goto statement_identifier ;) })) (expression_statement "uVar7 = (uint)(*piVar9 == 0);" (assignment_expression "uVar7 = (uint)(*piVar9 == 0)" identifier = (call_expression "(uint)(*piVar9 == 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(*piVar9 == 0)" ( (binary_expression "*piVar9 == 0" (pointer_expression "*piVar9" * identifier) == number_literal) )))) ;) }))) (expression_statement "mVar11 = (int)p_Var16 - uVar7;" (assignment_expression "mVar11 = (int)p_Var16 - uVar7" identifier = (binary_expression "(int)p_Var16 - uVar7" (cast_expression "(int)p_Var16" ( (type_descriptor "int" primitive_type) ) identifier) - identifier)) ;) (labeled_statement "LAB_00027684:\n  unaff_s3[1] = mVar11;" statement_identifier : (expression_statement "unaff_s3[1] = mVar11;" (assignment_expression "unaff_s3[1] = mVar11" (subscript_expression "unaff_s3[1]" identifier [ number_literal ]) = identifier) ;)) (return_statement "return mVar4;" return identifier ;) })))
(translation_unit "undefined * __gmpz_prodlimbs(int *param_1,undefined *param_2,int *param_3)\n\n{\n  int iVar1;\n  int iVar2;\n  undefined *puVar3;\n  undefined *puVar4;\n  int iVar5;\n  uint uVar6;\n  int *piVar7;\n  undefined4 uVar8;\n  int *piVar9;\n  int *piVar10;\n  undefined4 *puVar11;\n  int *piVar12;\n  int *unaff_s3;\n  code *pcVar13;\n  undefined *puVar14;\n  undefined1 *puVar15;\n  undefined1 auStack_70 [24];\n  int local_48;\n  int local_44 [2];\n  undefined *local_3c;\n  int local_38 [2];\n  undefined *local_30;\n  int *local_2c;\n  \n  puVar4 = PTR___stack_chk_guard_00097540;\n  puVar15 = auStack_70;\n  local_2c = *(int **)PTR___stack_chk_guard_00097540;\n  if ((int)param_3 < 0x14) {\n    if ((int)param_3 < 3) {\n      iVar2 = 4;\n      iVar5 = 4;\n      piVar9 = (int *)0x1;\n    }\n    else {\n      puVar11 = (undefined4 *)(param_2 + 4);\n      piVar9 = (int *)0x1;\n      do {\n        uVar8 = *puVar11;\n        puVar11 = puVar11 + 1;\n        iVar2 = (*(code *)PTR___gmpn_mul_1_000970a4)(param_2,param_2,piVar9,uVar8);\n        iVar5 = (int)piVar9 * 4;\n        piVar9 = (int *)((int)piVar9 + (uint)(iVar2 != 0));\n        *(int *)(param_2 + iVar5) = iVar2;\n      } while ((undefined4 *)(param_2 + (int)param_3 * 4 + -4) != puVar11);\n      iVar2 = (int)piVar9 * 4;\n      iVar5 = (int)((int)param_3 + -1) * 4;\n    }\n    if ((int)piVar9 < *param_1) {\n      unaff_s3 = (int *)param_1[2];\n    }\n    else {\n      unaff_s3 = (int *)(*(code *)PTR___gmpz_realloc_000975bc)\n                                  (param_1,(undefined *)((int)piVar9 + 1));\n    }\n    param_3 = (int *)(param_2 + iVar5);\n    piVar12 = (int *)((int)unaff_s3 + iVar2);\n    piVar10 = piVar9;\n    iVar2 = (*(code *)PTR___gmpn_mul_1_000970a4)(unaff_s3,param_2,piVar9,*param_3);\n    puVar3 = (undefined *)((uint)(iVar2 != 0) + (int)piVar9);\n    *piVar12 = iVar2;\n    param_1[1] = (int)puVar3;\n    puVar15 = auStack_70;\n  }\n  else {\n    iVar5 = (int)param_3 >> 1;\n    local_48 = 0;\n    iVar2 = (int)param_3 - iVar5;\n    local_38[0] = iVar2;\n    if ((uint)(iVar2 * 4) < 0x7f01) {\n      iVar1 = -(iVar2 * 4 + 7U & 0xfffffff8);\n      puVar15 = auStack_70 + iVar1;\n      local_30 = (undefined *)((int)local_38 + iVar1 + -0x20);\n    }\n    else {\n      local_30 = (undefined *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_48);\n    }\n    local_3c = param_2 + iVar5 * 4;\n    local_44[0] = iVar2;\n    piVar12 = (int *)__gmpz_prodlimbs(local_38);\n    piVar10 = (int *)__gmpz_prodlimbs(local_44,param_2,iVar5);\n    piVar9 = (int *)((int)piVar12 + (int)piVar10);\n    if (*param_1 < (int)piVar9) {\n      iVar2 = (*(code *)PTR___gmpz_realloc_000975bc)(param_1,piVar9);\n    }\n    else {\n      iVar2 = param_1[2];\n    }\n    param_2 = local_30;\n    puVar3 = local_3c;\n    if ((int)piVar10 < (int)piVar12) {\n      *(int **)(puVar15 + 0x10) = piVar10;\n      piVar10 = piVar12;\n      iVar2 = (*(code *)PTR___gmpn_mul_000972b4)(iVar2,param_2,piVar12,puVar3);\n    }\n    else {\n      *(int **)(puVar15 + 0x10) = piVar12;\n      iVar2 = (*(code *)PTR___gmpn_mul_000972b4)();\n      param_2 = puVar3;\n    }\n    if (local_48 != 0) {\n      (*(code *)PTR___gmp_tmp_reentrant_free_00097614)();\n    }\n    puVar3 = (undefined *)((int)piVar9 - (uint)(iVar2 == 0));\n    param_1[1] = (int)puVar3;\n  }\n  if (local_2c == *(int **)puVar4) {\n    return puVar3;\n  }\n  uVar8 = 0x275d4;\n  piVar7 = local_2c;\n  puVar3 = PTR___stack_chk_fail_000974d0;\n  (*(code *)PTR___stack_chk_fail_000974d0)();\n  puVar14 = puVar3 + 0x77a60;\n  *(undefined **)(puVar15 + -0x28) = puVar14;\n  *(undefined4 *)(puVar15 + -4) = uVar8;\n  *(undefined **)(puVar15 + -8) = puVar4;\n  *(int **)(puVar15 + -0xc) = param_1;\n  *(int **)(puVar15 + -0x10) = unaff_s3;\n  *(int **)(puVar15 + -0x14) = param_3;\n  *(int **)(puVar15 + -0x18) = piVar12;\n  *(int **)(puVar15 + -0x1c) = piVar9;\n  if (piVar10 == (int *)0x0) {\n    pcVar13 = *(code **)(puVar3 + 0x6fffc);\n    (*pcVar13)();\nLAB_0002772c:\n    piVar10 = (int *)(*pcVar13)(unaff_s3,piVar12);\n    puVar14 = *(undefined **)(puVar15 + -0x28);\n  }\n  else {\n    param_3 = *(int **)(param_2 + 4);\n    if (param_3 == (int *)0x0) {\n      piVar7[1] = 0;\n      return (undefined *)0x0;\n    }\n    piVar12 = param_3;\n    if ((int)param_3 < 0) {\n      piVar12 = (int *)-(int)param_3;\n    }\n    pcVar13 = *(code **)(puVar3 + 0x6ffdc);\n    unaff_s3 = piVar7;\n    param_1 = piVar10;\n    puVar4 = param_2;\n    if (*piVar7 < (int)piVar12) goto LAB_0002772c;\n    piVar10 = (int *)piVar7[2];\n  }\n  pcVar13 = *(code **)(puVar14 + -0x7d98);\n  uVar8 = *(undefined4 *)(puVar4 + 8);\n  *(int **)(puVar15 + -0x30) = param_1;\n  puVar4 = (undefined *)(*pcVar13)(piVar10,0,uVar8,piVar12);\n  piVar9 = piVar10 + (int)((int)piVar12 + -1);\n  if (puVar4 == (undefined *)0x0) {\n    uVar6 = (uint)(*piVar9 == 0);\n    if ((int)param_3 < 0) {\n      iVar2 = uVar6 - (int)piVar12;\n      goto LAB_00027684;\n    }\n  }\n  else {\n    if ((int)param_3 < 0) {\n      do {\n        iVar2 = *piVar10;\n        *piVar10 = iVar2 + 1;\n        piVar10 = piVar10 + 1;\n      } while (iVar2 + 1 == 0);\n      puVar4 = (undefined *)((int)param_1 - (int)puVar4);\n      iVar2 = (uint)(*piVar9 == 0) - (int)piVar12;\n      goto LAB_00027684;\n    }\n    uVar6 = (uint)(*piVar9 == 0);\n  }\n  iVar2 = (int)piVar12 - uVar6;\nLAB_00027684:\n  unaff_s3[1] = iVar2;\n  return puVar4;\n}\n\n" (function_definition "undefined * __gmpz_prodlimbs(int *param_1,undefined *param_2,int *param_3)\n\n{\n  int iVar1;\n  int iVar2;\n  undefined *puVar3;\n  undefined *puVar4;\n  int iVar5;\n  uint uVar6;\n  int *piVar7;\n  undefined4 uVar8;\n  int *piVar9;\n  int *piVar10;\n  undefined4 *puVar11;\n  int *piVar12;\n  int *unaff_s3;\n  code *pcVar13;\n  undefined *puVar14;\n  undefined1 *puVar15;\n  undefined1 auStack_70 [24];\n  int local_48;\n  int local_44 [2];\n  undefined *local_3c;\n  int local_38 [2];\n  undefined *local_30;\n  int *local_2c;\n  \n  puVar4 = PTR___stack_chk_guard_00097540;\n  puVar15 = auStack_70;\n  local_2c = *(int **)PTR___stack_chk_guard_00097540;\n  if ((int)param_3 < 0x14) {\n    if ((int)param_3 < 3) {\n      iVar2 = 4;\n      iVar5 = 4;\n      piVar9 = (int *)0x1;\n    }\n    else {\n      puVar11 = (undefined4 *)(param_2 + 4);\n      piVar9 = (int *)0x1;\n      do {\n        uVar8 = *puVar11;\n        puVar11 = puVar11 + 1;\n        iVar2 = (*(code *)PTR___gmpn_mul_1_000970a4)(param_2,param_2,piVar9,uVar8);\n        iVar5 = (int)piVar9 * 4;\n        piVar9 = (int *)((int)piVar9 + (uint)(iVar2 != 0));\n        *(int *)(param_2 + iVar5) = iVar2;\n      } while ((undefined4 *)(param_2 + (int)param_3 * 4 + -4) != puVar11);\n      iVar2 = (int)piVar9 * 4;\n      iVar5 = (int)((int)param_3 + -1) * 4;\n    }\n    if ((int)piVar9 < *param_1) {\n      unaff_s3 = (int *)param_1[2];\n    }\n    else {\n      unaff_s3 = (int *)(*(code *)PTR___gmpz_realloc_000975bc)\n                                  (param_1,(undefined *)((int)piVar9 + 1));\n    }\n    param_3 = (int *)(param_2 + iVar5);\n    piVar12 = (int *)((int)unaff_s3 + iVar2);\n    piVar10 = piVar9;\n    iVar2 = (*(code *)PTR___gmpn_mul_1_000970a4)(unaff_s3,param_2,piVar9,*param_3);\n    puVar3 = (undefined *)((uint)(iVar2 != 0) + (int)piVar9);\n    *piVar12 = iVar2;\n    param_1[1] = (int)puVar3;\n    puVar15 = auStack_70;\n  }\n  else {\n    iVar5 = (int)param_3 >> 1;\n    local_48 = 0;\n    iVar2 = (int)param_3 - iVar5;\n    local_38[0] = iVar2;\n    if ((uint)(iVar2 * 4) < 0x7f01) {\n      iVar1 = -(iVar2 * 4 + 7U & 0xfffffff8);\n      puVar15 = auStack_70 + iVar1;\n      local_30 = (undefined *)((int)local_38 + iVar1 + -0x20);\n    }\n    else {\n      local_30 = (undefined *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_48);\n    }\n    local_3c = param_2 + iVar5 * 4;\n    local_44[0] = iVar2;\n    piVar12 = (int *)__gmpz_prodlimbs(local_38);\n    piVar10 = (int *)__gmpz_prodlimbs(local_44,param_2,iVar5);\n    piVar9 = (int *)((int)piVar12 + (int)piVar10);\n    if (*param_1 < (int)piVar9) {\n      iVar2 = (*(code *)PTR___gmpz_realloc_000975bc)(param_1,piVar9);\n    }\n    else {\n      iVar2 = param_1[2];\n    }\n    param_2 = local_30;\n    puVar3 = local_3c;\n    if ((int)piVar10 < (int)piVar12) {\n      *(int **)(puVar15 + 0x10) = piVar10;\n      piVar10 = piVar12;\n      iVar2 = (*(code *)PTR___gmpn_mul_000972b4)(iVar2,param_2,piVar12,puVar3);\n    }\n    else {\n      *(int **)(puVar15 + 0x10) = piVar12;\n      iVar2 = (*(code *)PTR___gmpn_mul_000972b4)();\n      param_2 = puVar3;\n    }\n    if (local_48 != 0) {\n      (*(code *)PTR___gmp_tmp_reentrant_free_00097614)();\n    }\n    puVar3 = (undefined *)((int)piVar9 - (uint)(iVar2 == 0));\n    param_1[1] = (int)puVar3;\n  }\n  if (local_2c == *(int **)puVar4) {\n    return puVar3;\n  }\n  uVar8 = 0x275d4;\n  piVar7 = local_2c;\n  puVar3 = PTR___stack_chk_fail_000974d0;\n  (*(code *)PTR___stack_chk_fail_000974d0)();\n  puVar14 = puVar3 + 0x77a60;\n  *(undefined **)(puVar15 + -0x28) = puVar14;\n  *(undefined4 *)(puVar15 + -4) = uVar8;\n  *(undefined **)(puVar15 + -8) = puVar4;\n  *(int **)(puVar15 + -0xc) = param_1;\n  *(int **)(puVar15 + -0x10) = unaff_s3;\n  *(int **)(puVar15 + -0x14) = param_3;\n  *(int **)(puVar15 + -0x18) = piVar12;\n  *(int **)(puVar15 + -0x1c) = piVar9;\n  if (piVar10 == (int *)0x0) {\n    pcVar13 = *(code **)(puVar3 + 0x6fffc);\n    (*pcVar13)();\nLAB_0002772c:\n    piVar10 = (int *)(*pcVar13)(unaff_s3,piVar12);\n    puVar14 = *(undefined **)(puVar15 + -0x28);\n  }\n  else {\n    param_3 = *(int **)(param_2 + 4);\n    if (param_3 == (int *)0x0) {\n      piVar7[1] = 0;\n      return (undefined *)0x0;\n    }\n    piVar12 = param_3;\n    if ((int)param_3 < 0) {\n      piVar12 = (int *)-(int)param_3;\n    }\n    pcVar13 = *(code **)(puVar3 + 0x6ffdc);\n    unaff_s3 = piVar7;\n    param_1 = piVar10;\n    puVar4 = param_2;\n    if (*piVar7 < (int)piVar12) goto LAB_0002772c;\n    piVar10 = (int *)piVar7[2];\n  }\n  pcVar13 = *(code **)(puVar14 + -0x7d98);\n  uVar8 = *(undefined4 *)(puVar4 + 8);\n  *(int **)(puVar15 + -0x30) = param_1;\n  puVar4 = (undefined *)(*pcVar13)(piVar10,0,uVar8,piVar12);\n  piVar9 = piVar10 + (int)((int)piVar12 + -1);\n  if (puVar4 == (undefined *)0x0) {\n    uVar6 = (uint)(*piVar9 == 0);\n    if ((int)param_3 < 0) {\n      iVar2 = uVar6 - (int)piVar12;\n      goto LAB_00027684;\n    }\n  }\n  else {\n    if ((int)param_3 < 0) {\n      do {\n        iVar2 = *piVar10;\n        *piVar10 = iVar2 + 1;\n        piVar10 = piVar10 + 1;\n      } while (iVar2 + 1 == 0);\n      puVar4 = (undefined *)((int)param_1 - (int)puVar4);\n      iVar2 = (uint)(*piVar9 == 0) - (int)piVar12;\n      goto LAB_00027684;\n    }\n    uVar6 = (uint)(*piVar9 == 0);\n  }\n  iVar2 = (int)piVar12 - uVar6;\nLAB_00027684:\n  unaff_s3[1] = iVar2;\n  return puVar4;\n}" type_identifier (pointer_declarator "* __gmpz_prodlimbs(int *param_1,undefined *param_2,int *param_3)" * (function_declarator "__gmpz_prodlimbs(int *param_1,undefined *param_2,int *param_3)" identifier (parameter_list "(int *param_1,undefined *param_2,int *param_3)" ( (parameter_declaration "int *param_1" primitive_type (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "undefined *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "int *param_3" primitive_type (pointer_declarator "*param_3" * identifier)) )))) (compound_statement "{\n  int iVar1;\n  int iVar2;\n  undefined *puVar3;\n  undefined *puVar4;\n  int iVar5;\n  uint uVar6;\n  int *piVar7;\n  undefined4 uVar8;\n  int *piVar9;\n  int *piVar10;\n  undefined4 *puVar11;\n  int *piVar12;\n  int *unaff_s3;\n  code *pcVar13;\n  undefined *puVar14;\n  undefined1 *puVar15;\n  undefined1 auStack_70 [24];\n  int local_48;\n  int local_44 [2];\n  undefined *local_3c;\n  int local_38 [2];\n  undefined *local_30;\n  int *local_2c;\n  \n  puVar4 = PTR___stack_chk_guard_00097540;\n  puVar15 = auStack_70;\n  local_2c = *(int **)PTR___stack_chk_guard_00097540;\n  if ((int)param_3 < 0x14) {\n    if ((int)param_3 < 3) {\n      iVar2 = 4;\n      iVar5 = 4;\n      piVar9 = (int *)0x1;\n    }\n    else {\n      puVar11 = (undefined4 *)(param_2 + 4);\n      piVar9 = (int *)0x1;\n      do {\n        uVar8 = *puVar11;\n        puVar11 = puVar11 + 1;\n        iVar2 = (*(code *)PTR___gmpn_mul_1_000970a4)(param_2,param_2,piVar9,uVar8);\n        iVar5 = (int)piVar9 * 4;\n        piVar9 = (int *)((int)piVar9 + (uint)(iVar2 != 0));\n        *(int *)(param_2 + iVar5) = iVar2;\n      } while ((undefined4 *)(param_2 + (int)param_3 * 4 + -4) != puVar11);\n      iVar2 = (int)piVar9 * 4;\n      iVar5 = (int)((int)param_3 + -1) * 4;\n    }\n    if ((int)piVar9 < *param_1) {\n      unaff_s3 = (int *)param_1[2];\n    }\n    else {\n      unaff_s3 = (int *)(*(code *)PTR___gmpz_realloc_000975bc)\n                                  (param_1,(undefined *)((int)piVar9 + 1));\n    }\n    param_3 = (int *)(param_2 + iVar5);\n    piVar12 = (int *)((int)unaff_s3 + iVar2);\n    piVar10 = piVar9;\n    iVar2 = (*(code *)PTR___gmpn_mul_1_000970a4)(unaff_s3,param_2,piVar9,*param_3);\n    puVar3 = (undefined *)((uint)(iVar2 != 0) + (int)piVar9);\n    *piVar12 = iVar2;\n    param_1[1] = (int)puVar3;\n    puVar15 = auStack_70;\n  }\n  else {\n    iVar5 = (int)param_3 >> 1;\n    local_48 = 0;\n    iVar2 = (int)param_3 - iVar5;\n    local_38[0] = iVar2;\n    if ((uint)(iVar2 * 4) < 0x7f01) {\n      iVar1 = -(iVar2 * 4 + 7U & 0xfffffff8);\n      puVar15 = auStack_70 + iVar1;\n      local_30 = (undefined *)((int)local_38 + iVar1 + -0x20);\n    }\n    else {\n      local_30 = (undefined *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_48);\n    }\n    local_3c = param_2 + iVar5 * 4;\n    local_44[0] = iVar2;\n    piVar12 = (int *)__gmpz_prodlimbs(local_38);\n    piVar10 = (int *)__gmpz_prodlimbs(local_44,param_2,iVar5);\n    piVar9 = (int *)((int)piVar12 + (int)piVar10);\n    if (*param_1 < (int)piVar9) {\n      iVar2 = (*(code *)PTR___gmpz_realloc_000975bc)(param_1,piVar9);\n    }\n    else {\n      iVar2 = param_1[2];\n    }\n    param_2 = local_30;\n    puVar3 = local_3c;\n    if ((int)piVar10 < (int)piVar12) {\n      *(int **)(puVar15 + 0x10) = piVar10;\n      piVar10 = piVar12;\n      iVar2 = (*(code *)PTR___gmpn_mul_000972b4)(iVar2,param_2,piVar12,puVar3);\n    }\n    else {\n      *(int **)(puVar15 + 0x10) = piVar12;\n      iVar2 = (*(code *)PTR___gmpn_mul_000972b4)();\n      param_2 = puVar3;\n    }\n    if (local_48 != 0) {\n      (*(code *)PTR___gmp_tmp_reentrant_free_00097614)();\n    }\n    puVar3 = (undefined *)((int)piVar9 - (uint)(iVar2 == 0));\n    param_1[1] = (int)puVar3;\n  }\n  if (local_2c == *(int **)puVar4) {\n    return puVar3;\n  }\n  uVar8 = 0x275d4;\n  piVar7 = local_2c;\n  puVar3 = PTR___stack_chk_fail_000974d0;\n  (*(code *)PTR___stack_chk_fail_000974d0)();\n  puVar14 = puVar3 + 0x77a60;\n  *(undefined **)(puVar15 + -0x28) = puVar14;\n  *(undefined4 *)(puVar15 + -4) = uVar8;\n  *(undefined **)(puVar15 + -8) = puVar4;\n  *(int **)(puVar15 + -0xc) = param_1;\n  *(int **)(puVar15 + -0x10) = unaff_s3;\n  *(int **)(puVar15 + -0x14) = param_3;\n  *(int **)(puVar15 + -0x18) = piVar12;\n  *(int **)(puVar15 + -0x1c) = piVar9;\n  if (piVar10 == (int *)0x0) {\n    pcVar13 = *(code **)(puVar3 + 0x6fffc);\n    (*pcVar13)();\nLAB_0002772c:\n    piVar10 = (int *)(*pcVar13)(unaff_s3,piVar12);\n    puVar14 = *(undefined **)(puVar15 + -0x28);\n  }\n  else {\n    param_3 = *(int **)(param_2 + 4);\n    if (param_3 == (int *)0x0) {\n      piVar7[1] = 0;\n      return (undefined *)0x0;\n    }\n    piVar12 = param_3;\n    if ((int)param_3 < 0) {\n      piVar12 = (int *)-(int)param_3;\n    }\n    pcVar13 = *(code **)(puVar3 + 0x6ffdc);\n    unaff_s3 = piVar7;\n    param_1 = piVar10;\n    puVar4 = param_2;\n    if (*piVar7 < (int)piVar12) goto LAB_0002772c;\n    piVar10 = (int *)piVar7[2];\n  }\n  pcVar13 = *(code **)(puVar14 + -0x7d98);\n  uVar8 = *(undefined4 *)(puVar4 + 8);\n  *(int **)(puVar15 + -0x30) = param_1;\n  puVar4 = (undefined *)(*pcVar13)(piVar10,0,uVar8,piVar12);\n  piVar9 = piVar10 + (int)((int)piVar12 + -1);\n  if (puVar4 == (undefined *)0x0) {\n    uVar6 = (uint)(*piVar9 == 0);\n    if ((int)param_3 < 0) {\n      iVar2 = uVar6 - (int)piVar12;\n      goto LAB_00027684;\n    }\n  }\n  else {\n    if ((int)param_3 < 0) {\n      do {\n        iVar2 = *piVar10;\n        *piVar10 = iVar2 + 1;\n        piVar10 = piVar10 + 1;\n      } while (iVar2 + 1 == 0);\n      puVar4 = (undefined *)((int)param_1 - (int)puVar4);\n      iVar2 = (uint)(*piVar9 == 0) - (int)piVar12;\n      goto LAB_00027684;\n    }\n    uVar6 = (uint)(*piVar9 == 0);\n  }\n  iVar2 = (int)piVar12 - uVar6;\nLAB_00027684:\n  unaff_s3[1] = iVar2;\n  return puVar4;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "undefined *puVar3;" type_identifier (pointer_declarator "*puVar3" * identifier) ;) (declaration "undefined *puVar4;" type_identifier (pointer_declarator "*puVar4" * identifier) ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "uint uVar6;" type_identifier identifier ;) (declaration "int *piVar7;" primitive_type (pointer_declarator "*piVar7" * identifier) ;) (declaration "undefined4 uVar8;" type_identifier identifier ;) (declaration "int *piVar9;" primitive_type (pointer_declarator "*piVar9" * identifier) ;) (declaration "int *piVar10;" primitive_type (pointer_declarator "*piVar10" * identifier) ;) (declaration "undefined4 *puVar11;" type_identifier (pointer_declarator "*puVar11" * identifier) ;) (declaration "int *piVar12;" primitive_type (pointer_declarator "*piVar12" * identifier) ;) (declaration "int *unaff_s3;" primitive_type (pointer_declarator "*unaff_s3" * identifier) ;) (declaration "code *pcVar13;" type_identifier (pointer_declarator "*pcVar13" * identifier) ;) (declaration "undefined *puVar14;" type_identifier (pointer_declarator "*puVar14" * identifier) ;) (declaration "undefined1 *puVar15;" type_identifier (pointer_declarator "*puVar15" * identifier) ;) (declaration "undefined1 auStack_70 [24];" type_identifier (array_declarator "auStack_70 [24]" identifier [ number_literal ]) ;) (declaration "int local_48;" primitive_type identifier ;) (declaration "int local_44 [2];" primitive_type (array_declarator "local_44 [2]" identifier [ number_literal ]) ;) (declaration "undefined *local_3c;" type_identifier (pointer_declarator "*local_3c" * identifier) ;) (declaration "int local_38 [2];" primitive_type (array_declarator "local_38 [2]" identifier [ number_literal ]) ;) (declaration "undefined *local_30;" type_identifier (pointer_declarator "*local_30" * identifier) ;) (declaration "int *local_2c;" primitive_type (pointer_declarator "*local_2c" * identifier) ;) (expression_statement "puVar4 = PTR___stack_chk_guard_00097540;" (assignment_expression "puVar4 = PTR___stack_chk_guard_00097540" identifier = identifier) ;) (expression_statement "puVar15 = auStack_70;" (assignment_expression "puVar15 = auStack_70" identifier = identifier) ;) (expression_statement "local_2c = *(int **)PTR___stack_chk_guard_00097540;" (assignment_expression "local_2c = *(int **)PTR___stack_chk_guard_00097540" identifier = (pointer_expression "*(int **)PTR___stack_chk_guard_00097540" * (cast_expression "(int **)PTR___stack_chk_guard_00097540" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) ;) (if_statement "if ((int)param_3 < 0x14) {\n    if ((int)param_3 < 3) {\n      iVar2 = 4;\n      iVar5 = 4;\n      piVar9 = (int *)0x1;\n    }\n    else {\n      puVar11 = (undefined4 *)(param_2 + 4);\n      piVar9 = (int *)0x1;\n      do {\n        uVar8 = *puVar11;\n        puVar11 = puVar11 + 1;\n        iVar2 = (*(code *)PTR___gmpn_mul_1_000970a4)(param_2,param_2,piVar9,uVar8);\n        iVar5 = (int)piVar9 * 4;\n        piVar9 = (int *)((int)piVar9 + (uint)(iVar2 != 0));\n        *(int *)(param_2 + iVar5) = iVar2;\n      } while ((undefined4 *)(param_2 + (int)param_3 * 4 + -4) != puVar11);\n      iVar2 = (int)piVar9 * 4;\n      iVar5 = (int)((int)param_3 + -1) * 4;\n    }\n    if ((int)piVar9 < *param_1) {\n      unaff_s3 = (int *)param_1[2];\n    }\n    else {\n      unaff_s3 = (int *)(*(code *)PTR___gmpz_realloc_000975bc)\n                                  (param_1,(undefined *)((int)piVar9 + 1));\n    }\n    param_3 = (int *)(param_2 + iVar5);\n    piVar12 = (int *)((int)unaff_s3 + iVar2);\n    piVar10 = piVar9;\n    iVar2 = (*(code *)PTR___gmpn_mul_1_000970a4)(unaff_s3,param_2,piVar9,*param_3);\n    puVar3 = (undefined *)((uint)(iVar2 != 0) + (int)piVar9);\n    *piVar12 = iVar2;\n    param_1[1] = (int)puVar3;\n    puVar15 = auStack_70;\n  }\n  else {\n    iVar5 = (int)param_3 >> 1;\n    local_48 = 0;\n    iVar2 = (int)param_3 - iVar5;\n    local_38[0] = iVar2;\n    if ((uint)(iVar2 * 4) < 0x7f01) {\n      iVar1 = -(iVar2 * 4 + 7U & 0xfffffff8);\n      puVar15 = auStack_70 + iVar1;\n      local_30 = (undefined *)((int)local_38 + iVar1 + -0x20);\n    }\n    else {\n      local_30 = (undefined *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_48);\n    }\n    local_3c = param_2 + iVar5 * 4;\n    local_44[0] = iVar2;\n    piVar12 = (int *)__gmpz_prodlimbs(local_38);\n    piVar10 = (int *)__gmpz_prodlimbs(local_44,param_2,iVar5);\n    piVar9 = (int *)((int)piVar12 + (int)piVar10);\n    if (*param_1 < (int)piVar9) {\n      iVar2 = (*(code *)PTR___gmpz_realloc_000975bc)(param_1,piVar9);\n    }\n    else {\n      iVar2 = param_1[2];\n    }\n    param_2 = local_30;\n    puVar3 = local_3c;\n    if ((int)piVar10 < (int)piVar12) {\n      *(int **)(puVar15 + 0x10) = piVar10;\n      piVar10 = piVar12;\n      iVar2 = (*(code *)PTR___gmpn_mul_000972b4)(iVar2,param_2,piVar12,puVar3);\n    }\n    else {\n      *(int **)(puVar15 + 0x10) = piVar12;\n      iVar2 = (*(code *)PTR___gmpn_mul_000972b4)();\n      param_2 = puVar3;\n    }\n    if (local_48 != 0) {\n      (*(code *)PTR___gmp_tmp_reentrant_free_00097614)();\n    }\n    puVar3 = (undefined *)((int)piVar9 - (uint)(iVar2 == 0));\n    param_1[1] = (int)puVar3;\n  }" if (parenthesized_expression "((int)param_3 < 0x14)" ( (binary_expression "(int)param_3 < 0x14" (cast_expression "(int)param_3" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n    if ((int)param_3 < 3) {\n      iVar2 = 4;\n      iVar5 = 4;\n      piVar9 = (int *)0x1;\n    }\n    else {\n      puVar11 = (undefined4 *)(param_2 + 4);\n      piVar9 = (int *)0x1;\n      do {\n        uVar8 = *puVar11;\n        puVar11 = puVar11 + 1;\n        iVar2 = (*(code *)PTR___gmpn_mul_1_000970a4)(param_2,param_2,piVar9,uVar8);\n        iVar5 = (int)piVar9 * 4;\n        piVar9 = (int *)((int)piVar9 + (uint)(iVar2 != 0));\n        *(int *)(param_2 + iVar5) = iVar2;\n      } while ((undefined4 *)(param_2 + (int)param_3 * 4 + -4) != puVar11);\n      iVar2 = (int)piVar9 * 4;\n      iVar5 = (int)((int)param_3 + -1) * 4;\n    }\n    if ((int)piVar9 < *param_1) {\n      unaff_s3 = (int *)param_1[2];\n    }\n    else {\n      unaff_s3 = (int *)(*(code *)PTR___gmpz_realloc_000975bc)\n                                  (param_1,(undefined *)((int)piVar9 + 1));\n    }\n    param_3 = (int *)(param_2 + iVar5);\n    piVar12 = (int *)((int)unaff_s3 + iVar2);\n    piVar10 = piVar9;\n    iVar2 = (*(code *)PTR___gmpn_mul_1_000970a4)(unaff_s3,param_2,piVar9,*param_3);\n    puVar3 = (undefined *)((uint)(iVar2 != 0) + (int)piVar9);\n    *piVar12 = iVar2;\n    param_1[1] = (int)puVar3;\n    puVar15 = auStack_70;\n  }" { (if_statement "if ((int)param_3 < 3) {\n      iVar2 = 4;\n      iVar5 = 4;\n      piVar9 = (int *)0x1;\n    }\n    else {\n      puVar11 = (undefined4 *)(param_2 + 4);\n      piVar9 = (int *)0x1;\n      do {\n        uVar8 = *puVar11;\n        puVar11 = puVar11 + 1;\n        iVar2 = (*(code *)PTR___gmpn_mul_1_000970a4)(param_2,param_2,piVar9,uVar8);\n        iVar5 = (int)piVar9 * 4;\n        piVar9 = (int *)((int)piVar9 + (uint)(iVar2 != 0));\n        *(int *)(param_2 + iVar5) = iVar2;\n      } while ((undefined4 *)(param_2 + (int)param_3 * 4 + -4) != puVar11);\n      iVar2 = (int)piVar9 * 4;\n      iVar5 = (int)((int)param_3 + -1) * 4;\n    }" if (parenthesized_expression "((int)param_3 < 3)" ( (binary_expression "(int)param_3 < 3" (cast_expression "(int)param_3" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n      iVar2 = 4;\n      iVar5 = 4;\n      piVar9 = (int *)0x1;\n    }" { (expression_statement "iVar2 = 4;" (assignment_expression "iVar2 = 4" identifier = number_literal) ;) (expression_statement "iVar5 = 4;" (assignment_expression "iVar5 = 4" identifier = number_literal) ;) (expression_statement "piVar9 = (int *)0x1;" (assignment_expression "piVar9 = (int *)0x1" identifier = (cast_expression "(int *)0x1" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) }) (else_clause "else {\n      puVar11 = (undefined4 *)(param_2 + 4);\n      piVar9 = (int *)0x1;\n      do {\n        uVar8 = *puVar11;\n        puVar11 = puVar11 + 1;\n        iVar2 = (*(code *)PTR___gmpn_mul_1_000970a4)(param_2,param_2,piVar9,uVar8);\n        iVar5 = (int)piVar9 * 4;\n        piVar9 = (int *)((int)piVar9 + (uint)(iVar2 != 0));\n        *(int *)(param_2 + iVar5) = iVar2;\n      } while ((undefined4 *)(param_2 + (int)param_3 * 4 + -4) != puVar11);\n      iVar2 = (int)piVar9 * 4;\n      iVar5 = (int)((int)param_3 + -1) * 4;\n    }" else (compound_statement "{\n      puVar11 = (undefined4 *)(param_2 + 4);\n      piVar9 = (int *)0x1;\n      do {\n        uVar8 = *puVar11;\n        puVar11 = puVar11 + 1;\n        iVar2 = (*(code *)PTR___gmpn_mul_1_000970a4)(param_2,param_2,piVar9,uVar8);\n        iVar5 = (int)piVar9 * 4;\n        piVar9 = (int *)((int)piVar9 + (uint)(iVar2 != 0));\n        *(int *)(param_2 + iVar5) = iVar2;\n      } while ((undefined4 *)(param_2 + (int)param_3 * 4 + -4) != puVar11);\n      iVar2 = (int)piVar9 * 4;\n      iVar5 = (int)((int)param_3 + -1) * 4;\n    }" { (expression_statement "puVar11 = (undefined4 *)(param_2 + 4);" (assignment_expression "puVar11 = (undefined4 *)(param_2 + 4)" identifier = (cast_expression "(undefined4 *)(param_2 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 4)" ( (binary_expression "param_2 + 4" identifier + number_literal) )))) ;) (expression_statement "piVar9 = (int *)0x1;" (assignment_expression "piVar9 = (int *)0x1" identifier = (cast_expression "(int *)0x1" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (do_statement "do {\n        uVar8 = *puVar11;\n        puVar11 = puVar11 + 1;\n        iVar2 = (*(code *)PTR___gmpn_mul_1_000970a4)(param_2,param_2,piVar9,uVar8);\n        iVar5 = (int)piVar9 * 4;\n        piVar9 = (int *)((int)piVar9 + (uint)(iVar2 != 0));\n        *(int *)(param_2 + iVar5) = iVar2;\n      } while ((undefined4 *)(param_2 + (int)param_3 * 4 + -4) != puVar11);" do (compound_statement "{\n        uVar8 = *puVar11;\n        puVar11 = puVar11 + 1;\n        iVar2 = (*(code *)PTR___gmpn_mul_1_000970a4)(param_2,param_2,piVar9,uVar8);\n        iVar5 = (int)piVar9 * 4;\n        piVar9 = (int *)((int)piVar9 + (uint)(iVar2 != 0));\n        *(int *)(param_2 + iVar5) = iVar2;\n      }" { (expression_statement "uVar8 = *puVar11;" (assignment_expression "uVar8 = *puVar11" identifier = (pointer_expression "*puVar11" * identifier)) ;) (expression_statement "puVar11 = puVar11 + 1;" (assignment_expression "puVar11 = puVar11 + 1" identifier = (binary_expression "puVar11 + 1" identifier + number_literal)) ;) (expression_statement "iVar2 = (*(code *)PTR___gmpn_mul_1_000970a4)(param_2,param_2,piVar9,uVar8);" (assignment_expression "iVar2 = (*(code *)PTR___gmpn_mul_1_000970a4)(param_2,param_2,piVar9,uVar8)" identifier = (call_expression "(*(code *)PTR___gmpn_mul_1_000970a4)(param_2,param_2,piVar9,uVar8)" (parenthesized_expression "(*(code *)PTR___gmpn_mul_1_000970a4)" ( (pointer_expression "*(code *)PTR___gmpn_mul_1_000970a4" * (cast_expression "(code *)PTR___gmpn_mul_1_000970a4" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(param_2,param_2,piVar9,uVar8)" ( identifier , identifier , identifier , identifier )))) ;) (expression_statement "iVar5 = (int)piVar9 * 4;" (assignment_expression "iVar5 = (int)piVar9 * 4" identifier = (binary_expression "(int)piVar9 * 4" (cast_expression "(int)piVar9" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal)) ;) (expression_statement "piVar9 = (int *)((int)piVar9 + (uint)(iVar2 != 0));" (assignment_expression "piVar9 = (int *)((int)piVar9 + (uint)(iVar2 != 0))" identifier = (cast_expression "(int *)((int)piVar9 + (uint)(iVar2 != 0))" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar9 + (uint)(iVar2 != 0))" ( (binary_expression "(int)piVar9 + (uint)(iVar2 != 0)" (cast_expression "(int)piVar9" ( (type_descriptor "int" primitive_type) ) identifier) + (call_expression "(uint)(iVar2 != 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(iVar2 != 0)" ( (binary_expression "iVar2 != 0" identifier != number_literal) )))) )))) ;) (expression_statement "*(int *)(param_2 + iVar5) = iVar2;" (assignment_expression "*(int *)(param_2 + iVar5) = iVar2" (pointer_expression "*(int *)(param_2 + iVar5)" * (cast_expression "(int *)(param_2 + iVar5)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + iVar5)" ( (binary_expression "param_2 + iVar5" identifier + identifier) )))) = identifier) ;) }) while (parenthesized_expression "((undefined4 *)(param_2 + (int)param_3 * 4 + -4) != puVar11)" ( (binary_expression "(undefined4 *)(param_2 + (int)param_3 * 4 + -4) != puVar11" (cast_expression "(undefined4 *)(param_2 + (int)param_3 * 4 + -4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + (int)param_3 * 4 + -4)" ( (binary_expression "param_2 + (int)param_3 * 4 + -4" (binary_expression "param_2 + (int)param_3 * 4" identifier + (binary_expression "(int)param_3 * 4" (cast_expression "(int)param_3" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal)) + number_literal) ))) != identifier) )) ;) (expression_statement "iVar2 = (int)piVar9 * 4;" (assignment_expression "iVar2 = (int)piVar9 * 4" identifier = (binary_expression "(int)piVar9 * 4" (cast_expression "(int)piVar9" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal)) ;) (expression_statement "iVar5 = (int)((int)param_3 + -1) * 4;" (assignment_expression "iVar5 = (int)((int)param_3 + -1) * 4" identifier = (binary_expression "(int)((int)param_3 + -1) * 4" (cast_expression "(int)((int)param_3 + -1)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((int)param_3 + -1)" ( (binary_expression "(int)param_3 + -1" (cast_expression "(int)param_3" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))) * number_literal)) ;) }))) (if_statement "if ((int)piVar9 < *param_1) {\n      unaff_s3 = (int *)param_1[2];\n    }\n    else {\n      unaff_s3 = (int *)(*(code *)PTR___gmpz_realloc_000975bc)\n                                  (param_1,(undefined *)((int)piVar9 + 1));\n    }" if (parenthesized_expression "((int)piVar9 < *param_1)" ( (binary_expression "(int)piVar9 < *param_1" (cast_expression "(int)piVar9" ( (type_descriptor "int" primitive_type) ) identifier) < (pointer_expression "*param_1" * identifier)) )) (compound_statement "{\n      unaff_s3 = (int *)param_1[2];\n    }" { (expression_statement "unaff_s3 = (int *)param_1[2];" (assignment_expression "unaff_s3 = (int *)param_1[2]" identifier = (cast_expression "(int *)param_1[2]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[2]" identifier [ number_literal ]))) ;) }) (else_clause "else {\n      unaff_s3 = (int *)(*(code *)PTR___gmpz_realloc_000975bc)\n                                  (param_1,(undefined *)((int)piVar9 + 1));\n    }" else (compound_statement "{\n      unaff_s3 = (int *)(*(code *)PTR___gmpz_realloc_000975bc)\n                                  (param_1,(undefined *)((int)piVar9 + 1));\n    }" { (expression_statement "unaff_s3 = (int *)(*(code *)PTR___gmpz_realloc_000975bc)\n                                  (param_1,(undefined *)((int)piVar9 + 1));" (assignment_expression "unaff_s3 = (int *)(*(code *)PTR___gmpz_realloc_000975bc)\n                                  (param_1,(undefined *)((int)piVar9 + 1))" identifier = (cast_expression "(int *)(*(code *)PTR___gmpz_realloc_000975bc)\n                                  (param_1,(undefined *)((int)piVar9 + 1))" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)PTR___gmpz_realloc_000975bc)\n                                  (param_1,(undefined *)((int)piVar9 + 1))" (parenthesized_expression "(*(code *)PTR___gmpz_realloc_000975bc)" ( (pointer_expression "*(code *)PTR___gmpz_realloc_000975bc" * (cast_expression "(code *)PTR___gmpz_realloc_000975bc" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(param_1,(undefined *)((int)piVar9 + 1))" ( identifier , (cast_expression "(undefined *)((int)piVar9 + 1)" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar9 + 1)" ( (binary_expression "(int)piVar9 + 1" (cast_expression "(int)piVar9" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))) ))))) ;) }))) (expression_statement "param_3 = (int *)(param_2 + iVar5);" (assignment_expression "param_3 = (int *)(param_2 + iVar5)" identifier = (cast_expression "(int *)(param_2 + iVar5)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + iVar5)" ( (binary_expression "param_2 + iVar5" identifier + identifier) )))) ;) (expression_statement "piVar12 = (int *)((int)unaff_s3 + iVar2);" (assignment_expression "piVar12 = (int *)((int)unaff_s3 + iVar2)" identifier = (cast_expression "(int *)((int)unaff_s3 + iVar2)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)unaff_s3 + iVar2)" ( (binary_expression "(int)unaff_s3 + iVar2" (cast_expression "(int)unaff_s3" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) ;) (expression_statement "piVar10 = piVar9;" (assignment_expression "piVar10 = piVar9" identifier = identifier) ;) (expression_statement "iVar2 = (*(code *)PTR___gmpn_mul_1_000970a4)(unaff_s3,param_2,piVar9,*param_3);" (assignment_expression "iVar2 = (*(code *)PTR___gmpn_mul_1_000970a4)(unaff_s3,param_2,piVar9,*param_3)" identifier = (call_expression "(*(code *)PTR___gmpn_mul_1_000970a4)(unaff_s3,param_2,piVar9,*param_3)" (parenthesized_expression "(*(code *)PTR___gmpn_mul_1_000970a4)" ( (pointer_expression "*(code *)PTR___gmpn_mul_1_000970a4" * (cast_expression "(code *)PTR___gmpn_mul_1_000970a4" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(unaff_s3,param_2,piVar9,*param_3)" ( identifier , identifier , identifier , (pointer_expression "*param_3" * identifier) )))) ;) (expression_statement "puVar3 = (undefined *)((uint)(iVar2 != 0) + (int)piVar9);" (assignment_expression "puVar3 = (undefined *)((uint)(iVar2 != 0) + (int)piVar9)" identifier = (cast_expression "(undefined *)((uint)(iVar2 != 0) + (int)piVar9)" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((uint)(iVar2 != 0) + (int)piVar9)" ( (binary_expression "(uint)(iVar2 != 0) + (int)piVar9" (call_expression "(uint)(iVar2 != 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(iVar2 != 0)" ( (binary_expression "iVar2 != 0" identifier != number_literal) ))) + (cast_expression "(int)piVar9" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) (expression_statement "*piVar12 = iVar2;" (assignment_expression "*piVar12 = iVar2" (pointer_expression "*piVar12" * identifier) = identifier) ;) (expression_statement "param_1[1] = (int)puVar3;" (assignment_expression "param_1[1] = (int)puVar3" (subscript_expression "param_1[1]" identifier [ number_literal ]) = (cast_expression "(int)puVar3" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "puVar15 = auStack_70;" (assignment_expression "puVar15 = auStack_70" identifier = identifier) ;) }) (else_clause "else {\n    iVar5 = (int)param_3 >> 1;\n    local_48 = 0;\n    iVar2 = (int)param_3 - iVar5;\n    local_38[0] = iVar2;\n    if ((uint)(iVar2 * 4) < 0x7f01) {\n      iVar1 = -(iVar2 * 4 + 7U & 0xfffffff8);\n      puVar15 = auStack_70 + iVar1;\n      local_30 = (undefined *)((int)local_38 + iVar1 + -0x20);\n    }\n    else {\n      local_30 = (undefined *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_48);\n    }\n    local_3c = param_2 + iVar5 * 4;\n    local_44[0] = iVar2;\n    piVar12 = (int *)__gmpz_prodlimbs(local_38);\n    piVar10 = (int *)__gmpz_prodlimbs(local_44,param_2,iVar5);\n    piVar9 = (int *)((int)piVar12 + (int)piVar10);\n    if (*param_1 < (int)piVar9) {\n      iVar2 = (*(code *)PTR___gmpz_realloc_000975bc)(param_1,piVar9);\n    }\n    else {\n      iVar2 = param_1[2];\n    }\n    param_2 = local_30;\n    puVar3 = local_3c;\n    if ((int)piVar10 < (int)piVar12) {\n      *(int **)(puVar15 + 0x10) = piVar10;\n      piVar10 = piVar12;\n      iVar2 = (*(code *)PTR___gmpn_mul_000972b4)(iVar2,param_2,piVar12,puVar3);\n    }\n    else {\n      *(int **)(puVar15 + 0x10) = piVar12;\n      iVar2 = (*(code *)PTR___gmpn_mul_000972b4)();\n      param_2 = puVar3;\n    }\n    if (local_48 != 0) {\n      (*(code *)PTR___gmp_tmp_reentrant_free_00097614)();\n    }\n    puVar3 = (undefined *)((int)piVar9 - (uint)(iVar2 == 0));\n    param_1[1] = (int)puVar3;\n  }" else (compound_statement "{\n    iVar5 = (int)param_3 >> 1;\n    local_48 = 0;\n    iVar2 = (int)param_3 - iVar5;\n    local_38[0] = iVar2;\n    if ((uint)(iVar2 * 4) < 0x7f01) {\n      iVar1 = -(iVar2 * 4 + 7U & 0xfffffff8);\n      puVar15 = auStack_70 + iVar1;\n      local_30 = (undefined *)((int)local_38 + iVar1 + -0x20);\n    }\n    else {\n      local_30 = (undefined *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_48);\n    }\n    local_3c = param_2 + iVar5 * 4;\n    local_44[0] = iVar2;\n    piVar12 = (int *)__gmpz_prodlimbs(local_38);\n    piVar10 = (int *)__gmpz_prodlimbs(local_44,param_2,iVar5);\n    piVar9 = (int *)((int)piVar12 + (int)piVar10);\n    if (*param_1 < (int)piVar9) {\n      iVar2 = (*(code *)PTR___gmpz_realloc_000975bc)(param_1,piVar9);\n    }\n    else {\n      iVar2 = param_1[2];\n    }\n    param_2 = local_30;\n    puVar3 = local_3c;\n    if ((int)piVar10 < (int)piVar12) {\n      *(int **)(puVar15 + 0x10) = piVar10;\n      piVar10 = piVar12;\n      iVar2 = (*(code *)PTR___gmpn_mul_000972b4)(iVar2,param_2,piVar12,puVar3);\n    }\n    else {\n      *(int **)(puVar15 + 0x10) = piVar12;\n      iVar2 = (*(code *)PTR___gmpn_mul_000972b4)();\n      param_2 = puVar3;\n    }\n    if (local_48 != 0) {\n      (*(code *)PTR___gmp_tmp_reentrant_free_00097614)();\n    }\n    puVar3 = (undefined *)((int)piVar9 - (uint)(iVar2 == 0));\n    param_1[1] = (int)puVar3;\n  }" { (expression_statement "iVar5 = (int)param_3 >> 1;" (assignment_expression "iVar5 = (int)param_3 >> 1" identifier = (binary_expression "(int)param_3 >> 1" (cast_expression "(int)param_3" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal)) ;) (expression_statement "local_48 = 0;" (assignment_expression "local_48 = 0" identifier = number_literal) ;) (expression_statement "iVar2 = (int)param_3 - iVar5;" (assignment_expression "iVar2 = (int)param_3 - iVar5" identifier = (binary_expression "(int)param_3 - iVar5" (cast_expression "(int)param_3" ( (type_descriptor "int" primitive_type) ) identifier) - identifier)) ;) (expression_statement "local_38[0] = iVar2;" (assignment_expression "local_38[0] = iVar2" (subscript_expression "local_38[0]" identifier [ number_literal ]) = identifier) ;) (if_statement "if ((uint)(iVar2 * 4) < 0x7f01) {\n      iVar1 = -(iVar2 * 4 + 7U & 0xfffffff8);\n      puVar15 = auStack_70 + iVar1;\n      local_30 = (undefined *)((int)local_38 + iVar1 + -0x20);\n    }\n    else {\n      local_30 = (undefined *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_48);\n    }" if (parenthesized_expression "((uint)(iVar2 * 4) < 0x7f01)" ( (binary_expression "(uint)(iVar2 * 4) < 0x7f01" (call_expression "(uint)(iVar2 * 4)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(iVar2 * 4)" ( (binary_expression "iVar2 * 4" identifier * number_literal) ))) < number_literal) )) (compound_statement "{\n      iVar1 = -(iVar2 * 4 + 7U & 0xfffffff8);\n      puVar15 = auStack_70 + iVar1;\n      local_30 = (undefined *)((int)local_38 + iVar1 + -0x20);\n    }" { (expression_statement "iVar1 = -(iVar2 * 4 + 7U & 0xfffffff8);" (assignment_expression "iVar1 = -(iVar2 * 4 + 7U & 0xfffffff8)" identifier = (unary_expression "-(iVar2 * 4 + 7U & 0xfffffff8)" - (parenthesized_expression "(iVar2 * 4 + 7U & 0xfffffff8)" ( (binary_expression "iVar2 * 4 + 7U & 0xfffffff8" (binary_expression "iVar2 * 4 + 7U" (binary_expression "iVar2 * 4" identifier * number_literal) + number_literal) & number_literal) )))) ;) (expression_statement "puVar15 = auStack_70 + iVar1;" (assignment_expression "puVar15 = auStack_70 + iVar1" identifier = (binary_expression "auStack_70 + iVar1" identifier + identifier)) ;) (expression_statement "local_30 = (undefined *)((int)local_38 + iVar1 + -0x20);" (assignment_expression "local_30 = (undefined *)((int)local_38 + iVar1 + -0x20)" identifier = (cast_expression "(undefined *)((int)local_38 + iVar1 + -0x20)" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_38 + iVar1 + -0x20)" ( (binary_expression "(int)local_38 + iVar1 + -0x20" (binary_expression "(int)local_38 + iVar1" (cast_expression "(int)local_38" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) + number_literal) )))) ;) }) (else_clause "else {\n      local_30 = (undefined *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_48);\n    }" else (compound_statement "{\n      local_30 = (undefined *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_48);\n    }" { (expression_statement "local_30 = (undefined *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_48);" (assignment_expression "local_30 = (undefined *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_48)" identifier = (cast_expression "(undefined *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_48)" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_48)" (parenthesized_expression "(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)" ( (pointer_expression "*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0" * (cast_expression "(code *)PTR___gmp_tmp_reentrant_alloc_000972f0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(&local_48)" ( (pointer_expression "&local_48" & identifier) ))))) ;) }))) (expression_statement "local_3c = param_2 + iVar5 * 4;" (assignment_expression "local_3c = param_2 + iVar5 * 4" identifier = (binary_expression "param_2 + iVar5 * 4" identifier + (binary_expression "iVar5 * 4" identifier * number_literal))) ;) (expression_statement "local_44[0] = iVar2;" (assignment_expression "local_44[0] = iVar2" (subscript_expression "local_44[0]" identifier [ number_literal ]) = identifier) ;) (expression_statement "piVar12 = (int *)__gmpz_prodlimbs(local_38);" (assignment_expression "piVar12 = (int *)__gmpz_prodlimbs(local_38)" identifier = (cast_expression "(int *)__gmpz_prodlimbs(local_38)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "__gmpz_prodlimbs(local_38)" identifier (argument_list "(local_38)" ( identifier ))))) ;) (expression_statement "piVar10 = (int *)__gmpz_prodlimbs(local_44,param_2,iVar5);" (assignment_expression "piVar10 = (int *)__gmpz_prodlimbs(local_44,param_2,iVar5)" identifier = (cast_expression "(int *)__gmpz_prodlimbs(local_44,param_2,iVar5)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "__gmpz_prodlimbs(local_44,param_2,iVar5)" identifier (argument_list "(local_44,param_2,iVar5)" ( identifier , identifier , identifier ))))) ;) (expression_statement "piVar9 = (int *)((int)piVar12 + (int)piVar10);" (assignment_expression "piVar9 = (int *)((int)piVar12 + (int)piVar10)" identifier = (cast_expression "(int *)((int)piVar12 + (int)piVar10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar12 + (int)piVar10)" ( (binary_expression "(int)piVar12 + (int)piVar10" (cast_expression "(int)piVar12" ( (type_descriptor "int" primitive_type) ) identifier) + (cast_expression "(int)piVar10" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) (if_statement "if (*param_1 < (int)piVar9) {\n      iVar2 = (*(code *)PTR___gmpz_realloc_000975bc)(param_1,piVar9);\n    }\n    else {\n      iVar2 = param_1[2];\n    }" if (parenthesized_expression "(*param_1 < (int)piVar9)" ( (binary_expression "*param_1 < (int)piVar9" (pointer_expression "*param_1" * identifier) < (cast_expression "(int)piVar9" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n      iVar2 = (*(code *)PTR___gmpz_realloc_000975bc)(param_1,piVar9);\n    }" { (expression_statement "iVar2 = (*(code *)PTR___gmpz_realloc_000975bc)(param_1,piVar9);" (assignment_expression "iVar2 = (*(code *)PTR___gmpz_realloc_000975bc)(param_1,piVar9)" identifier = (call_expression "(*(code *)PTR___gmpz_realloc_000975bc)(param_1,piVar9)" (parenthesized_expression "(*(code *)PTR___gmpz_realloc_000975bc)" ( (pointer_expression "*(code *)PTR___gmpz_realloc_000975bc" * (cast_expression "(code *)PTR___gmpz_realloc_000975bc" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(param_1,piVar9)" ( identifier , identifier )))) ;) }) (else_clause "else {\n      iVar2 = param_1[2];\n    }" else (compound_statement "{\n      iVar2 = param_1[2];\n    }" { (expression_statement "iVar2 = param_1[2];" (assignment_expression "iVar2 = param_1[2]" identifier = (subscript_expression "param_1[2]" identifier [ number_literal ])) ;) }))) (expression_statement "param_2 = local_30;" (assignment_expression "param_2 = local_30" identifier = identifier) ;) (expression_statement "puVar3 = local_3c;" (assignment_expression "puVar3 = local_3c" identifier = identifier) ;) (if_statement "if ((int)piVar10 < (int)piVar12) {\n      *(int **)(puVar15 + 0x10) = piVar10;\n      piVar10 = piVar12;\n      iVar2 = (*(code *)PTR___gmpn_mul_000972b4)(iVar2,param_2,piVar12,puVar3);\n    }\n    else {\n      *(int **)(puVar15 + 0x10) = piVar12;\n      iVar2 = (*(code *)PTR___gmpn_mul_000972b4)();\n      param_2 = puVar3;\n    }" if (parenthesized_expression "((int)piVar10 < (int)piVar12)" ( (binary_expression "(int)piVar10 < (int)piVar12" (cast_expression "(int)piVar10" ( (type_descriptor "int" primitive_type) ) identifier) < (cast_expression "(int)piVar12" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n      *(int **)(puVar15 + 0x10) = piVar10;\n      piVar10 = piVar12;\n      iVar2 = (*(code *)PTR___gmpn_mul_000972b4)(iVar2,param_2,piVar12,puVar3);\n    }" { (expression_statement "*(int **)(puVar15 + 0x10) = piVar10;" (assignment_expression "*(int **)(puVar15 + 0x10) = piVar10" (pointer_expression "*(int **)(puVar15 + 0x10)" * (cast_expression "(int **)(puVar15 + 0x10)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar15 + 0x10)" ( (binary_expression "puVar15 + 0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "piVar10 = piVar12;" (assignment_expression "piVar10 = piVar12" identifier = identifier) ;) (expression_statement "iVar2 = (*(code *)PTR___gmpn_mul_000972b4)(iVar2,param_2,piVar12,puVar3);" (assignment_expression "iVar2 = (*(code *)PTR___gmpn_mul_000972b4)(iVar2,param_2,piVar12,puVar3)" identifier = (call_expression "(*(code *)PTR___gmpn_mul_000972b4)(iVar2,param_2,piVar12,puVar3)" (parenthesized_expression "(*(code *)PTR___gmpn_mul_000972b4)" ( (pointer_expression "*(code *)PTR___gmpn_mul_000972b4" * (cast_expression "(code *)PTR___gmpn_mul_000972b4" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(iVar2,param_2,piVar12,puVar3)" ( identifier , identifier , identifier , identifier )))) ;) }) (else_clause "else {\n      *(int **)(puVar15 + 0x10) = piVar12;\n      iVar2 = (*(code *)PTR___gmpn_mul_000972b4)();\n      param_2 = puVar3;\n    }" else (compound_statement "{\n      *(int **)(puVar15 + 0x10) = piVar12;\n      iVar2 = (*(code *)PTR___gmpn_mul_000972b4)();\n      param_2 = puVar3;\n    }" { (expression_statement "*(int **)(puVar15 + 0x10) = piVar12;" (assignment_expression "*(int **)(puVar15 + 0x10) = piVar12" (pointer_expression "*(int **)(puVar15 + 0x10)" * (cast_expression "(int **)(puVar15 + 0x10)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar15 + 0x10)" ( (binary_expression "puVar15 + 0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "iVar2 = (*(code *)PTR___gmpn_mul_000972b4)();" (assignment_expression "iVar2 = (*(code *)PTR___gmpn_mul_000972b4)()" identifier = (call_expression "(*(code *)PTR___gmpn_mul_000972b4)()" (parenthesized_expression "(*(code *)PTR___gmpn_mul_000972b4)" ( (pointer_expression "*(code *)PTR___gmpn_mul_000972b4" * (cast_expression "(code *)PTR___gmpn_mul_000972b4" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( )))) ;) (expression_statement "param_2 = puVar3;" (assignment_expression "param_2 = puVar3" identifier = identifier) ;) }))) (if_statement "if (local_48 != 0) {\n      (*(code *)PTR___gmp_tmp_reentrant_free_00097614)();\n    }" if (parenthesized_expression "(local_48 != 0)" ( (binary_expression "local_48 != 0" identifier != number_literal) )) (compound_statement "{\n      (*(code *)PTR___gmp_tmp_reentrant_free_00097614)();\n    }" { (expression_statement "(*(code *)PTR___gmp_tmp_reentrant_free_00097614)();" (call_expression "(*(code *)PTR___gmp_tmp_reentrant_free_00097614)()" (parenthesized_expression "(*(code *)PTR___gmp_tmp_reentrant_free_00097614)" ( (pointer_expression "*(code *)PTR___gmp_tmp_reentrant_free_00097614" * (cast_expression "(code *)PTR___gmp_tmp_reentrant_free_00097614" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) })) (expression_statement "puVar3 = (undefined *)((int)piVar9 - (uint)(iVar2 == 0));" (assignment_expression "puVar3 = (undefined *)((int)piVar9 - (uint)(iVar2 == 0))" identifier = (cast_expression "(undefined *)((int)piVar9 - (uint)(iVar2 == 0))" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar9 - (uint)(iVar2 == 0))" ( (binary_expression "(int)piVar9 - (uint)(iVar2 == 0)" (cast_expression "(int)piVar9" ( (type_descriptor "int" primitive_type) ) identifier) - (call_expression "(uint)(iVar2 == 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(iVar2 == 0)" ( (binary_expression "iVar2 == 0" identifier == number_literal) )))) )))) ;) (expression_statement "param_1[1] = (int)puVar3;" (assignment_expression "param_1[1] = (int)puVar3" (subscript_expression "param_1[1]" identifier [ number_literal ]) = (cast_expression "(int)puVar3" ( (type_descriptor "int" primitive_type) ) identifier)) ;) }))) (if_statement "if (local_2c == *(int **)puVar4) {\n    return puVar3;\n  }" if (parenthesized_expression "(local_2c == *(int **)puVar4)" ( (binary_expression "local_2c == *(int **)puVar4" identifier == (pointer_expression "*(int **)puVar4" * (cast_expression "(int **)puVar4" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) )) (compound_statement "{\n    return puVar3;\n  }" { (return_statement "return puVar3;" return identifier ;) })) (expression_statement "uVar8 = 0x275d4;" (assignment_expression "uVar8 = 0x275d4" identifier = number_literal) ;) (expression_statement "piVar7 = local_2c;" (assignment_expression "piVar7 = local_2c" identifier = identifier) ;) (expression_statement "puVar3 = PTR___stack_chk_fail_000974d0;" (assignment_expression "puVar3 = PTR___stack_chk_fail_000974d0" identifier = identifier) ;) (expression_statement "(*(code *)PTR___stack_chk_fail_000974d0)();" (call_expression "(*(code *)PTR___stack_chk_fail_000974d0)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_000974d0)" ( (pointer_expression "*(code *)PTR___stack_chk_fail_000974d0" * (cast_expression "(code *)PTR___stack_chk_fail_000974d0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (expression_statement "puVar14 = puVar3 + 0x77a60;" (assignment_expression "puVar14 = puVar3 + 0x77a60" identifier = (binary_expression "puVar3 + 0x77a60" identifier + number_literal)) ;) (expression_statement "*(undefined **)(puVar15 + -0x28) = puVar14;" (assignment_expression "*(undefined **)(puVar15 + -0x28) = puVar14" (pointer_expression "*(undefined **)(puVar15 + -0x28)" * (cast_expression "(undefined **)(puVar15 + -0x28)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar15 + -0x28)" ( (binary_expression "puVar15 + -0x28" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar15 + -4) = uVar8;" (assignment_expression "*(undefined4 *)(puVar15 + -4) = uVar8" (pointer_expression "*(undefined4 *)(puVar15 + -4)" * (cast_expression "(undefined4 *)(puVar15 + -4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar15 + -4)" ( (binary_expression "puVar15 + -4" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined **)(puVar15 + -8) = puVar4;" (assignment_expression "*(undefined **)(puVar15 + -8) = puVar4" (pointer_expression "*(undefined **)(puVar15 + -8)" * (cast_expression "(undefined **)(puVar15 + -8)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar15 + -8)" ( (binary_expression "puVar15 + -8" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int **)(puVar15 + -0xc) = param_1;" (assignment_expression "*(int **)(puVar15 + -0xc) = param_1" (pointer_expression "*(int **)(puVar15 + -0xc)" * (cast_expression "(int **)(puVar15 + -0xc)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar15 + -0xc)" ( (binary_expression "puVar15 + -0xc" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int **)(puVar15 + -0x10) = unaff_s3;" (assignment_expression "*(int **)(puVar15 + -0x10) = unaff_s3" (pointer_expression "*(int **)(puVar15 + -0x10)" * (cast_expression "(int **)(puVar15 + -0x10)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar15 + -0x10)" ( (binary_expression "puVar15 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int **)(puVar15 + -0x14) = param_3;" (assignment_expression "*(int **)(puVar15 + -0x14) = param_3" (pointer_expression "*(int **)(puVar15 + -0x14)" * (cast_expression "(int **)(puVar15 + -0x14)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar15 + -0x14)" ( (binary_expression "puVar15 + -0x14" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int **)(puVar15 + -0x18) = piVar12;" (assignment_expression "*(int **)(puVar15 + -0x18) = piVar12" (pointer_expression "*(int **)(puVar15 + -0x18)" * (cast_expression "(int **)(puVar15 + -0x18)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar15 + -0x18)" ( (binary_expression "puVar15 + -0x18" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int **)(puVar15 + -0x1c) = piVar9;" (assignment_expression "*(int **)(puVar15 + -0x1c) = piVar9" (pointer_expression "*(int **)(puVar15 + -0x1c)" * (cast_expression "(int **)(puVar15 + -0x1c)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar15 + -0x1c)" ( (binary_expression "puVar15 + -0x1c" identifier + number_literal) )))) = identifier) ;) (if_statement "if (piVar10 == (int *)0x0) {\n    pcVar13 = *(code **)(puVar3 + 0x6fffc);\n    (*pcVar13)();\nLAB_0002772c:\n    piVar10 = (int *)(*pcVar13)(unaff_s3,piVar12);\n    puVar14 = *(undefined **)(puVar15 + -0x28);\n  }\n  else {\n    param_3 = *(int **)(param_2 + 4);\n    if (param_3 == (int *)0x0) {\n      piVar7[1] = 0;\n      return (undefined *)0x0;\n    }\n    piVar12 = param_3;\n    if ((int)param_3 < 0) {\n      piVar12 = (int *)-(int)param_3;\n    }\n    pcVar13 = *(code **)(puVar3 + 0x6ffdc);\n    unaff_s3 = piVar7;\n    param_1 = piVar10;\n    puVar4 = param_2;\n    if (*piVar7 < (int)piVar12) goto LAB_0002772c;\n    piVar10 = (int *)piVar7[2];\n  }" if (parenthesized_expression "(piVar10 == (int *)0x0)" ( (binary_expression "piVar10 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    pcVar13 = *(code **)(puVar3 + 0x6fffc);\n    (*pcVar13)();\nLAB_0002772c:\n    piVar10 = (int *)(*pcVar13)(unaff_s3,piVar12);\n    puVar14 = *(undefined **)(puVar15 + -0x28);\n  }" { (expression_statement "pcVar13 = *(code **)(puVar3 + 0x6fffc);" (assignment_expression "pcVar13 = *(code **)(puVar3 + 0x6fffc)" identifier = (pointer_expression "*(code **)(puVar3 + 0x6fffc)" * (cast_expression "(code **)(puVar3 + 0x6fffc)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar3 + 0x6fffc)" ( (binary_expression "puVar3 + 0x6fffc" identifier + number_literal) ))))) ;) (expression_statement "(*pcVar13)();" (call_expression "(*pcVar13)()" (parenthesized_expression "(*pcVar13)" ( (pointer_expression "*pcVar13" * identifier) )) (argument_list "()" ( ))) ;) (labeled_statement "LAB_0002772c:\n    piVar10 = (int *)(*pcVar13)(unaff_s3,piVar12);" statement_identifier : (expression_statement "piVar10 = (int *)(*pcVar13)(unaff_s3,piVar12);" (assignment_expression "piVar10 = (int *)(*pcVar13)(unaff_s3,piVar12)" identifier = (cast_expression "(int *)(*pcVar13)(unaff_s3,piVar12)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "(*pcVar13)(unaff_s3,piVar12)" (parenthesized_expression "(*pcVar13)" ( (pointer_expression "*pcVar13" * identifier) )) (argument_list "(unaff_s3,piVar12)" ( identifier , identifier ))))) ;)) (expression_statement "puVar14 = *(undefined **)(puVar15 + -0x28);" (assignment_expression "puVar14 = *(undefined **)(puVar15 + -0x28)" identifier = (pointer_expression "*(undefined **)(puVar15 + -0x28)" * (cast_expression "(undefined **)(puVar15 + -0x28)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar15 + -0x28)" ( (binary_expression "puVar15 + -0x28" identifier + number_literal) ))))) ;) }) (else_clause "else {\n    param_3 = *(int **)(param_2 + 4);\n    if (param_3 == (int *)0x0) {\n      piVar7[1] = 0;\n      return (undefined *)0x0;\n    }\n    piVar12 = param_3;\n    if ((int)param_3 < 0) {\n      piVar12 = (int *)-(int)param_3;\n    }\n    pcVar13 = *(code **)(puVar3 + 0x6ffdc);\n    unaff_s3 = piVar7;\n    param_1 = piVar10;\n    puVar4 = param_2;\n    if (*piVar7 < (int)piVar12) goto LAB_0002772c;\n    piVar10 = (int *)piVar7[2];\n  }" else (compound_statement "{\n    param_3 = *(int **)(param_2 + 4);\n    if (param_3 == (int *)0x0) {\n      piVar7[1] = 0;\n      return (undefined *)0x0;\n    }\n    piVar12 = param_3;\n    if ((int)param_3 < 0) {\n      piVar12 = (int *)-(int)param_3;\n    }\n    pcVar13 = *(code **)(puVar3 + 0x6ffdc);\n    unaff_s3 = piVar7;\n    param_1 = piVar10;\n    puVar4 = param_2;\n    if (*piVar7 < (int)piVar12) goto LAB_0002772c;\n    piVar10 = (int *)piVar7[2];\n  }" { (expression_statement "param_3 = *(int **)(param_2 + 4);" (assignment_expression "param_3 = *(int **)(param_2 + 4)" identifier = (pointer_expression "*(int **)(param_2 + 4)" * (cast_expression "(int **)(param_2 + 4)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_2 + 4)" ( (binary_expression "param_2 + 4" identifier + number_literal) ))))) ;) (if_statement "if (param_3 == (int *)0x0) {\n      piVar7[1] = 0;\n      return (undefined *)0x0;\n    }" if (parenthesized_expression "(param_3 == (int *)0x0)" ( (binary_expression "param_3 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      piVar7[1] = 0;\n      return (undefined *)0x0;\n    }" { (expression_statement "piVar7[1] = 0;" (assignment_expression "piVar7[1] = 0" (subscript_expression "piVar7[1]" identifier [ number_literal ]) = number_literal) ;) (return_statement "return (undefined *)0x0;" return (cast_expression "(undefined *)0x0" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ;) })) (expression_statement "piVar12 = param_3;" (assignment_expression "piVar12 = param_3" identifier = identifier) ;) (if_statement "if ((int)param_3 < 0) {\n      piVar12 = (int *)-(int)param_3;\n    }" if (parenthesized_expression "((int)param_3 < 0)" ( (binary_expression "(int)param_3 < 0" (cast_expression "(int)param_3" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n      piVar12 = (int *)-(int)param_3;\n    }" { (expression_statement "piVar12 = (int *)-(int)param_3;" (assignment_expression "piVar12 = (int *)-(int)param_3" identifier = (cast_expression "(int *)-(int)param_3" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (unary_expression "-(int)param_3" - (cast_expression "(int)param_3" ( (type_descriptor "int" primitive_type) ) identifier)))) ;) })) (expression_statement "pcVar13 = *(code **)(puVar3 + 0x6ffdc);" (assignment_expression "pcVar13 = *(code **)(puVar3 + 0x6ffdc)" identifier = (pointer_expression "*(code **)(puVar3 + 0x6ffdc)" * (cast_expression "(code **)(puVar3 + 0x6ffdc)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar3 + 0x6ffdc)" ( (binary_expression "puVar3 + 0x6ffdc" identifier + number_literal) ))))) ;) (expression_statement "unaff_s3 = piVar7;" (assignment_expression "unaff_s3 = piVar7" identifier = identifier) ;) (expression_statement "param_1 = piVar10;" (assignment_expression "param_1 = piVar10" identifier = identifier) ;) (expression_statement "puVar4 = param_2;" (assignment_expression "puVar4 = param_2" identifier = identifier) ;) (if_statement "if (*piVar7 < (int)piVar12) goto LAB_0002772c;" if (parenthesized_expression "(*piVar7 < (int)piVar12)" ( (binary_expression "*piVar7 < (int)piVar12" (pointer_expression "*piVar7" * identifier) < (cast_expression "(int)piVar12" ( (type_descriptor "int" primitive_type) ) identifier)) )) (goto_statement "goto LAB_0002772c;" goto statement_identifier ;)) (expression_statement "piVar10 = (int *)piVar7[2];" (assignment_expression "piVar10 = (int *)piVar7[2]" identifier = (cast_expression "(int *)piVar7[2]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar7[2]" identifier [ number_literal ]))) ;) }))) (expression_statement "pcVar13 = *(code **)(puVar14 + -0x7d98);" (assignment_expression "pcVar13 = *(code **)(puVar14 + -0x7d98)" identifier = (pointer_expression "*(code **)(puVar14 + -0x7d98)" * (cast_expression "(code **)(puVar14 + -0x7d98)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar14 + -0x7d98)" ( (binary_expression "puVar14 + -0x7d98" identifier + number_literal) ))))) ;) (expression_statement "uVar8 = *(undefined4 *)(puVar4 + 8);" (assignment_expression "uVar8 = *(undefined4 *)(puVar4 + 8)" identifier = (pointer_expression "*(undefined4 *)(puVar4 + 8)" * (cast_expression "(undefined4 *)(puVar4 + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar4 + 8)" ( (binary_expression "puVar4 + 8" identifier + number_literal) ))))) ;) (expression_statement "*(int **)(puVar15 + -0x30) = param_1;" (assignment_expression "*(int **)(puVar15 + -0x30) = param_1" (pointer_expression "*(int **)(puVar15 + -0x30)" * (cast_expression "(int **)(puVar15 + -0x30)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar15 + -0x30)" ( (binary_expression "puVar15 + -0x30" identifier + number_literal) )))) = identifier) ;) (expression_statement "puVar4 = (undefined *)(*pcVar13)(piVar10,0,uVar8,piVar12);" (assignment_expression "puVar4 = (undefined *)(*pcVar13)(piVar10,0,uVar8,piVar12)" identifier = (cast_expression "(undefined *)(*pcVar13)(piVar10,0,uVar8,piVar12)" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(*pcVar13)(piVar10,0,uVar8,piVar12)" (parenthesized_expression "(*pcVar13)" ( (pointer_expression "*pcVar13" * identifier) )) (argument_list "(piVar10,0,uVar8,piVar12)" ( identifier , number_literal , identifier , identifier ))))) ;) (expression_statement "piVar9 = piVar10 + (int)((int)piVar12 + -1);" (assignment_expression "piVar9 = piVar10 + (int)((int)piVar12 + -1)" identifier = (binary_expression "piVar10 + (int)((int)piVar12 + -1)" identifier + (cast_expression "(int)((int)piVar12 + -1)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((int)piVar12 + -1)" ( (binary_expression "(int)piVar12 + -1" (cast_expression "(int)piVar12" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (if_statement "if (puVar4 == (undefined *)0x0) {\n    uVar6 = (uint)(*piVar9 == 0);\n    if ((int)param_3 < 0) {\n      iVar2 = uVar6 - (int)piVar12;\n      goto LAB_00027684;\n    }\n  }\n  else {\n    if ((int)param_3 < 0) {\n      do {\n        iVar2 = *piVar10;\n        *piVar10 = iVar2 + 1;\n        piVar10 = piVar10 + 1;\n      } while (iVar2 + 1 == 0);\n      puVar4 = (undefined *)((int)param_1 - (int)puVar4);\n      iVar2 = (uint)(*piVar9 == 0) - (int)piVar12;\n      goto LAB_00027684;\n    }\n    uVar6 = (uint)(*piVar9 == 0);\n  }" if (parenthesized_expression "(puVar4 == (undefined *)0x0)" ( (binary_expression "puVar4 == (undefined *)0x0" identifier == (cast_expression "(undefined *)0x0" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    uVar6 = (uint)(*piVar9 == 0);\n    if ((int)param_3 < 0) {\n      iVar2 = uVar6 - (int)piVar12;\n      goto LAB_00027684;\n    }\n  }" { (expression_statement "uVar6 = (uint)(*piVar9 == 0);" (assignment_expression "uVar6 = (uint)(*piVar9 == 0)" identifier = (call_expression "(uint)(*piVar9 == 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(*piVar9 == 0)" ( (binary_expression "*piVar9 == 0" (pointer_expression "*piVar9" * identifier) == number_literal) )))) ;) (if_statement "if ((int)param_3 < 0) {\n      iVar2 = uVar6 - (int)piVar12;\n      goto LAB_00027684;\n    }" if (parenthesized_expression "((int)param_3 < 0)" ( (binary_expression "(int)param_3 < 0" (cast_expression "(int)param_3" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n      iVar2 = uVar6 - (int)piVar12;\n      goto LAB_00027684;\n    }" { (expression_statement "iVar2 = uVar6 - (int)piVar12;" (assignment_expression "iVar2 = uVar6 - (int)piVar12" identifier = (binary_expression "uVar6 - (int)piVar12" identifier - (cast_expression "(int)piVar12" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (goto_statement "goto LAB_00027684;" goto statement_identifier ;) })) }) (else_clause "else {\n    if ((int)param_3 < 0) {\n      do {\n        iVar2 = *piVar10;\n        *piVar10 = iVar2 + 1;\n        piVar10 = piVar10 + 1;\n      } while (iVar2 + 1 == 0);\n      puVar4 = (undefined *)((int)param_1 - (int)puVar4);\n      iVar2 = (uint)(*piVar9 == 0) - (int)piVar12;\n      goto LAB_00027684;\n    }\n    uVar6 = (uint)(*piVar9 == 0);\n  }" else (compound_statement "{\n    if ((int)param_3 < 0) {\n      do {\n        iVar2 = *piVar10;\n        *piVar10 = iVar2 + 1;\n        piVar10 = piVar10 + 1;\n      } while (iVar2 + 1 == 0);\n      puVar4 = (undefined *)((int)param_1 - (int)puVar4);\n      iVar2 = (uint)(*piVar9 == 0) - (int)piVar12;\n      goto LAB_00027684;\n    }\n    uVar6 = (uint)(*piVar9 == 0);\n  }" { (if_statement "if ((int)param_3 < 0) {\n      do {\n        iVar2 = *piVar10;\n        *piVar10 = iVar2 + 1;\n        piVar10 = piVar10 + 1;\n      } while (iVar2 + 1 == 0);\n      puVar4 = (undefined *)((int)param_1 - (int)puVar4);\n      iVar2 = (uint)(*piVar9 == 0) - (int)piVar12;\n      goto LAB_00027684;\n    }" if (parenthesized_expression "((int)param_3 < 0)" ( (binary_expression "(int)param_3 < 0" (cast_expression "(int)param_3" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n      do {\n        iVar2 = *piVar10;\n        *piVar10 = iVar2 + 1;\n        piVar10 = piVar10 + 1;\n      } while (iVar2 + 1 == 0);\n      puVar4 = (undefined *)((int)param_1 - (int)puVar4);\n      iVar2 = (uint)(*piVar9 == 0) - (int)piVar12;\n      goto LAB_00027684;\n    }" { (do_statement "do {\n        iVar2 = *piVar10;\n        *piVar10 = iVar2 + 1;\n        piVar10 = piVar10 + 1;\n      } while (iVar2 + 1 == 0);" do (compound_statement "{\n        iVar2 = *piVar10;\n        *piVar10 = iVar2 + 1;\n        piVar10 = piVar10 + 1;\n      }" { (expression_statement "iVar2 = *piVar10;" (assignment_expression "iVar2 = *piVar10" identifier = (pointer_expression "*piVar10" * identifier)) ;) (expression_statement "*piVar10 = iVar2 + 1;" (assignment_expression "*piVar10 = iVar2 + 1" (pointer_expression "*piVar10" * identifier) = (binary_expression "iVar2 + 1" identifier + number_literal)) ;) (expression_statement "piVar10 = piVar10 + 1;" (assignment_expression "piVar10 = piVar10 + 1" identifier = (binary_expression "piVar10 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar2 + 1 == 0)" ( (binary_expression "iVar2 + 1 == 0" (binary_expression "iVar2 + 1" identifier + number_literal) == number_literal) )) ;) (expression_statement "puVar4 = (undefined *)((int)param_1 - (int)puVar4);" (assignment_expression "puVar4 = (undefined *)((int)param_1 - (int)puVar4)" identifier = (cast_expression "(undefined *)((int)param_1 - (int)puVar4)" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_1 - (int)puVar4)" ( (binary_expression "(int)param_1 - (int)puVar4" (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)puVar4" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) (expression_statement "iVar2 = (uint)(*piVar9 == 0) - (int)piVar12;" (assignment_expression "iVar2 = (uint)(*piVar9 == 0) - (int)piVar12" identifier = (binary_expression "(uint)(*piVar9 == 0) - (int)piVar12" (call_expression "(uint)(*piVar9 == 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(*piVar9 == 0)" ( (binary_expression "*piVar9 == 0" (pointer_expression "*piVar9" * identifier) == number_literal) ))) - (cast_expression "(int)piVar12" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (goto_statement "goto LAB_00027684;" goto statement_identifier ;) })) (expression_statement "uVar6 = (uint)(*piVar9 == 0);" (assignment_expression "uVar6 = (uint)(*piVar9 == 0)" identifier = (call_expression "(uint)(*piVar9 == 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(*piVar9 == 0)" ( (binary_expression "*piVar9 == 0" (pointer_expression "*piVar9" * identifier) == number_literal) )))) ;) }))) (expression_statement "iVar2 = (int)piVar12 - uVar6;" (assignment_expression "iVar2 = (int)piVar12 - uVar6" identifier = (binary_expression "(int)piVar12 - uVar6" (cast_expression "(int)piVar12" ( (type_descriptor "int" primitive_type) ) identifier) - identifier)) ;) (labeled_statement "LAB_00027684:\n  unaff_s3[1] = iVar2;" statement_identifier : (expression_statement "unaff_s3[1] = iVar2;" (assignment_expression "unaff_s3[1] = iVar2" (subscript_expression "unaff_s3[1]" identifier [ number_literal ]) = identifier) ;)) (return_statement "return puVar4;" return identifier ;) })))
(translation_unit (function_definition TYPE (pointer_declarator * (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE (pointer_declarator * IDENT)) )))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * 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 (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE IDENT ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) IDENT))) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT , IDENT , IDENT , IDENT )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT != LIT) )))) )))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + IDENT) )))) = IDENT) ;) }) while (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) + LIT) ))) != IDENT) )) ;) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) ))) * LIT)) ;) }))) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < (pointer_expression * IDENT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT , (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) ))) ))))) ;) }))) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + IDENT) )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + IDENT) )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT , IDENT , IDENT , (pointer_expression * IDENT) )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT != LIT) ))) + (cast_expression ( (type_descriptor TYPE) ) IDENT)) )))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) - IDENT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT * LIT) ))) < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (unary_expression - (parenthesized_expression ( (binary_expression (binary_expression (binary_expression IDENT * LIT) + LIT) & LIT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + IDENT) + LIT) )))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( (pointer_expression & IDENT) ))))) ;) }))) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (binary_expression IDENT * LIT))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( IDENT ))))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT ))))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + (cast_expression ( (type_descriptor TYPE) ) IDENT)) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) < (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT , IDENT )))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) }))) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) (compound_statement { (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 = IDENT) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT , IDENT , IDENT , IDENT )))) ;) }) (else_clause else (compound_statement { (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 = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }))) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( ))) ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) - (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT == LIT) )))) )))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) }))) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) IDENT))) )) (compound_statement { (return_statement return IDENT ;) })) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = (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) )))) = 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) )))) = 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 (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (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) )))) = 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 (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( ))) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( IDENT , IDENT ))))) ;)) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (return_statement return (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT) ;) })) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (unary_expression - (cast_expression ( (type_descriptor TYPE) ) IDENT)))) ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) < (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) }))) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (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) ))))) ;) (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 = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( IDENT , LIT , IDENT , IDENT ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (pointer_expression * IDENT) == LIT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT - (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) (goto_statement goto statement_identifier ;) })) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < LIT) )) (compound_statement { (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) == LIT) )) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) - (cast_expression ( (type_descriptor TYPE) ) IDENT)) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (pointer_expression * IDENT) == LIT) ))) - (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (pointer_expression * IDENT) == LIT) )))) ;) }))) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) - IDENT)) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;)) (return_statement return IDENT ;) })))
(function_definition "undefined * __gmpz_prodlimbs(int *param_1,undefined *param_2,int *param_3)\n\n{\n  int iVar1;\n  int iVar2;\n  undefined *puVar3;\n  undefined *puVar4;\n  int iVar5;\n  uint uVar6;\n  int *piVar7;\n  undefined4 uVar8;\n  int *piVar9;\n  int *piVar10;\n  undefined4 *puVar11;\n  int *piVar12;\n  int *unaff_s3;\n  code *pcVar13;\n  undefined *puVar14;\n  undefined1 *puVar15;\n  undefined1 auStack_70 [24];\n  int local_48;\n  int local_44 [2];\n  undefined *local_3c;\n  int local_38 [2];\n  undefined *local_30;\n  int *local_2c;\n  \n  puVar4 = PTR___stack_chk_guard_00097540;\n  puVar15 = auStack_70;\n  local_2c = *(int **)PTR___stack_chk_guard_00097540;\n  if ((int)param_3 < 0x14) {\n    if ((int)param_3 < 3) {\n      iVar2 = 4;\n      iVar5 = 4;\n      piVar9 = (int *)0x1;\n    }\n    else {\n      puVar11 = (undefined4 *)(param_2 + 4);\n      piVar9 = (int *)0x1;\n      do {\n        uVar8 = *puVar11;\n        puVar11 = puVar11 + 1;\n        iVar2 = (*(code *)PTR___gmpn_mul_1_000970a4)(param_2,param_2,piVar9,uVar8);\n        iVar5 = (int)piVar9 * 4;\n        piVar9 = (int *)((int)piVar9 + (uint)(iVar2 != 0));\n        *(int *)(param_2 + iVar5) = iVar2;\n      } while ((undefined4 *)(param_2 + (int)param_3 * 4 + -4) != puVar11);\n      iVar2 = (int)piVar9 * 4;\n      iVar5 = (int)((int)param_3 + -1) * 4;\n    }\n    if ((int)piVar9 < *param_1) {\n      unaff_s3 = (int *)param_1[2];\n    }\n    else {\n      unaff_s3 = (int *)(*(code *)PTR___gmpz_realloc_000975bc)\n                                  (param_1,(undefined *)((int)piVar9 + 1));\n    }\n    param_3 = (int *)(param_2 + iVar5);\n    piVar12 = (int *)((int)unaff_s3 + iVar2);\n    piVar10 = piVar9;\n    iVar2 = (*(code *)PTR___gmpn_mul_1_000970a4)(unaff_s3,param_2,piVar9,*param_3);\n    puVar3 = (undefined *)((uint)(iVar2 != 0) + (int)piVar9);\n    *piVar12 = iVar2;\n    param_1[1] = (int)puVar3;\n    puVar15 = auStack_70;\n  }\n  else {\n    iVar5 = (int)param_3 >> 1;\n    local_48 = 0;\n    iVar2 = (int)param_3 - iVar5;\n    local_38[0] = iVar2;\n    if ((uint)(iVar2 * 4) < 0x7f01) {\n      iVar1 = -(iVar2 * 4 + 7U & 0xfffffff8);\n      puVar15 = auStack_70 + iVar1;\n      local_30 = (undefined *)((int)local_38 + iVar1 + -0x20);\n    }\n    else {\n      local_30 = (undefined *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_48);\n    }\n    local_3c = param_2 + iVar5 * 4;\n    local_44[0] = iVar2;\n    piVar12 = (int *)__gmpz_prodlimbs(local_38);\n    piVar10 = (int *)__gmpz_prodlimbs(local_44,param_2,iVar5);\n    piVar9 = (int *)((int)piVar12 + (int)piVar10);\n    if (*param_1 < (int)piVar9) {\n      iVar2 = (*(code *)PTR___gmpz_realloc_000975bc)(param_1,piVar9);\n    }\n    else {\n      iVar2 = param_1[2];\n    }\n    param_2 = local_30;\n    puVar3 = local_3c;\n    if ((int)piVar10 < (int)piVar12) {\n      *(int **)(puVar15 + 0x10) = piVar10;\n      piVar10 = piVar12;\n      iVar2 = (*(code *)PTR___gmpn_mul_000972b4)(iVar2,param_2,piVar12,puVar3);\n    }\n    else {\n      *(int **)(puVar15 + 0x10) = piVar12;\n      iVar2 = (*(code *)PTR___gmpn_mul_000972b4)();\n      param_2 = puVar3;\n    }\n    if (local_48 != 0) {\n      (*(code *)PTR___gmp_tmp_reentrant_free_00097614)();\n    }\n    puVar3 = (undefined *)((int)piVar9 - (uint)(iVar2 == 0));\n    param_1[1] = (int)puVar3;\n  }\n  if (local_2c == *(int **)puVar4) {\n    return puVar3;\n  }\n  uVar8 = 0x275d4;\n  piVar7 = local_2c;\n  puVar3 = PTR___stack_chk_fail_000974d0;\n  (*(code *)PTR___stack_chk_fail_000974d0)();\n  puVar14 = puVar3 + 0x77a60;\n  *(undefined **)(puVar15 + -0x28) = puVar14;\n  *(undefined4 *)(puVar15 + -4) = uVar8;\n  *(undefined **)(puVar15 + -8) = puVar4;\n  *(int **)(puVar15 + -0xc) = param_1;\n  *(int **)(puVar15 + -0x10) = unaff_s3;\n  *(int **)(puVar15 + -0x14) = param_3;\n  *(int **)(puVar15 + -0x18) = piVar12;\n  *(int **)(puVar15 + -0x1c) = piVar9;\n  if (piVar10 == (int *)0x0) {\n    pcVar13 = *(code **)(puVar3 + 0x6fffc);\n    (*pcVar13)();\nLAB_0002772c:\n    piVar10 = (int *)(*pcVar13)(unaff_s3,piVar12);\n    puVar14 = *(undefined **)(puVar15 + -0x28);\n  }\n  else {\n    param_3 = *(int **)(param_2 + 4);\n    if (param_3 == (int *)0x0) {\n      piVar7[1] = 0;\n      return (undefined *)0x0;\n    }\n    piVar12 = param_3;\n    if ((int)param_3 < 0) {\n      piVar12 = (int *)-(int)param_3;\n    }\n    pcVar13 = *(code **)(puVar3 + 0x6ffdc);\n    unaff_s3 = piVar7;\n    param_1 = piVar10;\n    puVar4 = param_2;\n    if (*piVar7 < (int)piVar12) goto LAB_0002772c;\n    piVar10 = (int *)piVar7[2];\n  }\n  pcVar13 = *(code **)(puVar14 + -0x7d98);\n  uVar8 = *(undefined4 *)(puVar4 + 8);\n  *(int **)(puVar15 + -0x30) = param_1;\n  puVar4 = (undefined *)(*pcVar13)(piVar10,0,uVar8,piVar12);\n  piVar9 = piVar10 + (int)((int)piVar12 + -1);\n  if (puVar4 == (undefined *)0x0) {\n    uVar6 = (uint)(*piVar9 == 0);\n    if ((int)param_3 < 0) {\n      iVar2 = uVar6 - (int)piVar12;\n      goto LAB_00027684;\n    }\n  }\n  else {\n    if ((int)param_3 < 0) {\n      do {\n        iVar2 = *piVar10;\n        *piVar10 = iVar2 + 1;\n        piVar10 = piVar10 + 1;\n      } while (iVar2 + 1 == 0);\n      puVar4 = (undefined *)((int)param_1 - (int)puVar4);\n      iVar2 = (uint)(*piVar9 == 0) - (int)piVar12;\n      goto LAB_00027684;\n    }\n    uVar6 = (uint)(*piVar9 == 0);\n  }\n  iVar2 = (int)piVar12 - uVar6;\nLAB_00027684:\n  unaff_s3[1] = iVar2;\n  return puVar4;\n}" (type_identifier "undefined") (pointer_declarator "* __gmpz_prodlimbs(int *param_1,undefined *param_2,int *param_3)" (* "*") (function_declarator "__gmpz_prodlimbs(int *param_1,undefined *param_2,int *param_3)" (identifier "__gmpz_prodlimbs") (parameter_list "(int *param_1,undefined *param_2,int *param_3)" (( "(") (parameter_declaration "int *param_1" (primitive_type "int") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) (, ",") (parameter_declaration "undefined *param_2" (type_identifier "undefined") (pointer_declarator "*param_2" (* "*") (identifier "param_2"))) (, ",") (parameter_declaration "int *param_3" (primitive_type "int") (pointer_declarator "*param_3" (* "*") (identifier "param_3"))) () ")")))) (compound_statement "{\n  int iVar1;\n  int iVar2;\n  undefined *puVar3;\n  undefined *puVar4;\n  int iVar5;\n  uint uVar6;\n  int *piVar7;\n  undefined4 uVar8;\n  int *piVar9;\n  int *piVar10;\n  undefined4 *puVar11;\n  int *piVar12;\n  int *unaff_s3;\n  code *pcVar13;\n  undefined *puVar14;\n  undefined1 *puVar15;\n  undefined1 auStack_70 [24];\n  int local_48;\n  int local_44 [2];\n  undefined *local_3c;\n  int local_38 [2];\n  undefined *local_30;\n  int *local_2c;\n  \n  puVar4 = PTR___stack_chk_guard_00097540;\n  puVar15 = auStack_70;\n  local_2c = *(int **)PTR___stack_chk_guard_00097540;\n  if ((int)param_3 < 0x14) {\n    if ((int)param_3 < 3) {\n      iVar2 = 4;\n      iVar5 = 4;\n      piVar9 = (int *)0x1;\n    }\n    else {\n      puVar11 = (undefined4 *)(param_2 + 4);\n      piVar9 = (int *)0x1;\n      do {\n        uVar8 = *puVar11;\n        puVar11 = puVar11 + 1;\n        iVar2 = (*(code *)PTR___gmpn_mul_1_000970a4)(param_2,param_2,piVar9,uVar8);\n        iVar5 = (int)piVar9 * 4;\n        piVar9 = (int *)((int)piVar9 + (uint)(iVar2 != 0));\n        *(int *)(param_2 + iVar5) = iVar2;\n      } while ((undefined4 *)(param_2 + (int)param_3 * 4 + -4) != puVar11);\n      iVar2 = (int)piVar9 * 4;\n      iVar5 = (int)((int)param_3 + -1) * 4;\n    }\n    if ((int)piVar9 < *param_1) {\n      unaff_s3 = (int *)param_1[2];\n    }\n    else {\n      unaff_s3 = (int *)(*(code *)PTR___gmpz_realloc_000975bc)\n                                  (param_1,(undefined *)((int)piVar9 + 1));\n    }\n    param_3 = (int *)(param_2 + iVar5);\n    piVar12 = (int *)((int)unaff_s3 + iVar2);\n    piVar10 = piVar9;\n    iVar2 = (*(code *)PTR___gmpn_mul_1_000970a4)(unaff_s3,param_2,piVar9,*param_3);\n    puVar3 = (undefined *)((uint)(iVar2 != 0) + (int)piVar9);\n    *piVar12 = iVar2;\n    param_1[1] = (int)puVar3;\n    puVar15 = auStack_70;\n  }\n  else {\n    iVar5 = (int)param_3 >> 1;\n    local_48 = 0;\n    iVar2 = (int)param_3 - iVar5;\n    local_38[0] = iVar2;\n    if ((uint)(iVar2 * 4) < 0x7f01) {\n      iVar1 = -(iVar2 * 4 + 7U & 0xfffffff8);\n      puVar15 = auStack_70 + iVar1;\n      local_30 = (undefined *)((int)local_38 + iVar1 + -0x20);\n    }\n    else {\n      local_30 = (undefined *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_48);\n    }\n    local_3c = param_2 + iVar5 * 4;\n    local_44[0] = iVar2;\n    piVar12 = (int *)__gmpz_prodlimbs(local_38);\n    piVar10 = (int *)__gmpz_prodlimbs(local_44,param_2,iVar5);\n    piVar9 = (int *)((int)piVar12 + (int)piVar10);\n    if (*param_1 < (int)piVar9) {\n      iVar2 = (*(code *)PTR___gmpz_realloc_000975bc)(param_1,piVar9);\n    }\n    else {\n      iVar2 = param_1[2];\n    }\n    param_2 = local_30;\n    puVar3 = local_3c;\n    if ((int)piVar10 < (int)piVar12) {\n      *(int **)(puVar15 + 0x10) = piVar10;\n      piVar10 = piVar12;\n      iVar2 = (*(code *)PTR___gmpn_mul_000972b4)(iVar2,param_2,piVar12,puVar3);\n    }\n    else {\n      *(int **)(puVar15 + 0x10) = piVar12;\n      iVar2 = (*(code *)PTR___gmpn_mul_000972b4)();\n      param_2 = puVar3;\n    }\n    if (local_48 != 0) {\n      (*(code *)PTR___gmp_tmp_reentrant_free_00097614)();\n    }\n    puVar3 = (undefined *)((int)piVar9 - (uint)(iVar2 == 0));\n    param_1[1] = (int)puVar3;\n  }\n  if (local_2c == *(int **)puVar4) {\n    return puVar3;\n  }\n  uVar8 = 0x275d4;\n  piVar7 = local_2c;\n  puVar3 = PTR___stack_chk_fail_000974d0;\n  (*(code *)PTR___stack_chk_fail_000974d0)();\n  puVar14 = puVar3 + 0x77a60;\n  *(undefined **)(puVar15 + -0x28) = puVar14;\n  *(undefined4 *)(puVar15 + -4) = uVar8;\n  *(undefined **)(puVar15 + -8) = puVar4;\n  *(int **)(puVar15 + -0xc) = param_1;\n  *(int **)(puVar15 + -0x10) = unaff_s3;\n  *(int **)(puVar15 + -0x14) = param_3;\n  *(int **)(puVar15 + -0x18) = piVar12;\n  *(int **)(puVar15 + -0x1c) = piVar9;\n  if (piVar10 == (int *)0x0) {\n    pcVar13 = *(code **)(puVar3 + 0x6fffc);\n    (*pcVar13)();\nLAB_0002772c:\n    piVar10 = (int *)(*pcVar13)(unaff_s3,piVar12);\n    puVar14 = *(undefined **)(puVar15 + -0x28);\n  }\n  else {\n    param_3 = *(int **)(param_2 + 4);\n    if (param_3 == (int *)0x0) {\n      piVar7[1] = 0;\n      return (undefined *)0x0;\n    }\n    piVar12 = param_3;\n    if ((int)param_3 < 0) {\n      piVar12 = (int *)-(int)param_3;\n    }\n    pcVar13 = *(code **)(puVar3 + 0x6ffdc);\n    unaff_s3 = piVar7;\n    param_1 = piVar10;\n    puVar4 = param_2;\n    if (*piVar7 < (int)piVar12) goto LAB_0002772c;\n    piVar10 = (int *)piVar7[2];\n  }\n  pcVar13 = *(code **)(puVar14 + -0x7d98);\n  uVar8 = *(undefined4 *)(puVar4 + 8);\n  *(int **)(puVar15 + -0x30) = param_1;\n  puVar4 = (undefined *)(*pcVar13)(piVar10,0,uVar8,piVar12);\n  piVar9 = piVar10 + (int)((int)piVar12 + -1);\n  if (puVar4 == (undefined *)0x0) {\n    uVar6 = (uint)(*piVar9 == 0);\n    if ((int)param_3 < 0) {\n      iVar2 = uVar6 - (int)piVar12;\n      goto LAB_00027684;\n    }\n  }\n  else {\n    if ((int)param_3 < 0) {\n      do {\n        iVar2 = *piVar10;\n        *piVar10 = iVar2 + 1;\n        piVar10 = piVar10 + 1;\n      } while (iVar2 + 1 == 0);\n      puVar4 = (undefined *)((int)param_1 - (int)puVar4);\n      iVar2 = (uint)(*piVar9 == 0) - (int)piVar12;\n      goto LAB_00027684;\n    }\n    uVar6 = (uint)(*piVar9 == 0);\n  }\n  iVar2 = (int)piVar12 - uVar6;\nLAB_00027684:\n  unaff_s3[1] = iVar2;\n  return puVar4;\n}" ({ "{") (declaration "int iVar1;" (primitive_type "int") (identifier "iVar1") (; ";")) (declaration "int iVar2;" (primitive_type "int") (identifier "iVar2") (; ";")) (declaration "undefined *puVar3;" (type_identifier "undefined") (pointer_declarator "*puVar3" (* "*") (identifier "puVar3")) (; ";")) (declaration "undefined *puVar4;" (type_identifier "undefined") (pointer_declarator "*puVar4" (* "*") (identifier "puVar4")) (; ";")) (declaration "int iVar5;" (primitive_type "int") (identifier "iVar5") (; ";")) (declaration "uint uVar6;" (type_identifier "uint") (identifier "uVar6") (; ";")) (declaration "int *piVar7;" (primitive_type "int") (pointer_declarator "*piVar7" (* "*") (identifier "piVar7")) (; ";")) (declaration "undefined4 uVar8;" (type_identifier "undefined4") (identifier "uVar8") (; ";")) (declaration "int *piVar9;" (primitive_type "int") (pointer_declarator "*piVar9" (* "*") (identifier "piVar9")) (; ";")) (declaration "int *piVar10;" (primitive_type "int") (pointer_declarator "*piVar10" (* "*") (identifier "piVar10")) (; ";")) (declaration "undefined4 *puVar11;" (type_identifier "undefined4") (pointer_declarator "*puVar11" (* "*") (identifier "puVar11")) (; ";")) (declaration "int *piVar12;" (primitive_type "int") (pointer_declarator "*piVar12" (* "*") (identifier "piVar12")) (; ";")) (declaration "int *unaff_s3;" (primitive_type "int") (pointer_declarator "*unaff_s3" (* "*") (identifier "unaff_s3")) (; ";")) (declaration "code *pcVar13;" (type_identifier "code") (pointer_declarator "*pcVar13" (* "*") (identifier "pcVar13")) (; ";")) (declaration "undefined *puVar14;" (type_identifier "undefined") (pointer_declarator "*puVar14" (* "*") (identifier "puVar14")) (; ";")) (declaration "undefined1 *puVar15;" (type_identifier "undefined1") (pointer_declarator "*puVar15" (* "*") (identifier "puVar15")) (; ";")) (declaration "undefined1 auStack_70 [24];" (type_identifier "undefined1") (array_declarator "auStack_70 [24]" (identifier "auStack_70") ([ "[") (number_literal "24") (] "]")) (; ";")) (declaration "int local_48;" (primitive_type "int") (identifier "local_48") (; ";")) (declaration "int local_44 [2];" (primitive_type "int") (array_declarator "local_44 [2]" (identifier "local_44") ([ "[") (number_literal "2") (] "]")) (; ";")) (declaration "undefined *local_3c;" (type_identifier "undefined") (pointer_declarator "*local_3c" (* "*") (identifier "local_3c")) (; ";")) (declaration "int local_38 [2];" (primitive_type "int") (array_declarator "local_38 [2]" (identifier "local_38") ([ "[") (number_literal "2") (] "]")) (; ";")) (declaration "undefined *local_30;" (type_identifier "undefined") (pointer_declarator "*local_30" (* "*") (identifier "local_30")) (; ";")) (declaration "int *local_2c;" (primitive_type "int") (pointer_declarator "*local_2c" (* "*") (identifier "local_2c")) (; ";")) (expression_statement "puVar4 = PTR___stack_chk_guard_00097540;" (assignment_expression "puVar4 = PTR___stack_chk_guard_00097540" (identifier "puVar4") (= "=") (identifier "PTR___stack_chk_guard_00097540")) (; ";")) (expression_statement "puVar15 = auStack_70;" (assignment_expression "puVar15 = auStack_70" (identifier "puVar15") (= "=") (identifier "auStack_70")) (; ";")) (expression_statement "local_2c = *(int **)PTR___stack_chk_guard_00097540;" (assignment_expression "local_2c = *(int **)PTR___stack_chk_guard_00097540" (identifier "local_2c") (= "=") (pointer_expression "*(int **)PTR___stack_chk_guard_00097540" (* "*") (cast_expression "(int **)PTR___stack_chk_guard_00097540" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (identifier "PTR___stack_chk_guard_00097540")))) (; ";")) (if_statement "if ((int)param_3 < 0x14) {\n    if ((int)param_3 < 3) {\n      iVar2 = 4;\n      iVar5 = 4;\n      piVar9 = (int *)0x1;\n    }\n    else {\n      puVar11 = (undefined4 *)(param_2 + 4);\n      piVar9 = (int *)0x1;\n      do {\n        uVar8 = *puVar11;\n        puVar11 = puVar11 + 1;\n        iVar2 = (*(code *)PTR___gmpn_mul_1_000970a4)(param_2,param_2,piVar9,uVar8);\n        iVar5 = (int)piVar9 * 4;\n        piVar9 = (int *)((int)piVar9 + (uint)(iVar2 != 0));\n        *(int *)(param_2 + iVar5) = iVar2;\n      } while ((undefined4 *)(param_2 + (int)param_3 * 4 + -4) != puVar11);\n      iVar2 = (int)piVar9 * 4;\n      iVar5 = (int)((int)param_3 + -1) * 4;\n    }\n    if ((int)piVar9 < *param_1) {\n      unaff_s3 = (int *)param_1[2];\n    }\n    else {\n      unaff_s3 = (int *)(*(code *)PTR___gmpz_realloc_000975bc)\n                                  (param_1,(undefined *)((int)piVar9 + 1));\n    }\n    param_3 = (int *)(param_2 + iVar5);\n    piVar12 = (int *)((int)unaff_s3 + iVar2);\n    piVar10 = piVar9;\n    iVar2 = (*(code *)PTR___gmpn_mul_1_000970a4)(unaff_s3,param_2,piVar9,*param_3);\n    puVar3 = (undefined *)((uint)(iVar2 != 0) + (int)piVar9);\n    *piVar12 = iVar2;\n    param_1[1] = (int)puVar3;\n    puVar15 = auStack_70;\n  }\n  else {\n    iVar5 = (int)param_3 >> 1;\n    local_48 = 0;\n    iVar2 = (int)param_3 - iVar5;\n    local_38[0] = iVar2;\n    if ((uint)(iVar2 * 4) < 0x7f01) {\n      iVar1 = -(iVar2 * 4 + 7U & 0xfffffff8);\n      puVar15 = auStack_70 + iVar1;\n      local_30 = (undefined *)((int)local_38 + iVar1 + -0x20);\n    }\n    else {\n      local_30 = (undefined *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_48);\n    }\n    local_3c = param_2 + iVar5 * 4;\n    local_44[0] = iVar2;\n    piVar12 = (int *)__gmpz_prodlimbs(local_38);\n    piVar10 = (int *)__gmpz_prodlimbs(local_44,param_2,iVar5);\n    piVar9 = (int *)((int)piVar12 + (int)piVar10);\n    if (*param_1 < (int)piVar9) {\n      iVar2 = (*(code *)PTR___gmpz_realloc_000975bc)(param_1,piVar9);\n    }\n    else {\n      iVar2 = param_1[2];\n    }\n    param_2 = local_30;\n    puVar3 = local_3c;\n    if ((int)piVar10 < (int)piVar12) {\n      *(int **)(puVar15 + 0x10) = piVar10;\n      piVar10 = piVar12;\n      iVar2 = (*(code *)PTR___gmpn_mul_000972b4)(iVar2,param_2,piVar12,puVar3);\n    }\n    else {\n      *(int **)(puVar15 + 0x10) = piVar12;\n      iVar2 = (*(code *)PTR___gmpn_mul_000972b4)();\n      param_2 = puVar3;\n    }\n    if (local_48 != 0) {\n      (*(code *)PTR___gmp_tmp_reentrant_free_00097614)();\n    }\n    puVar3 = (undefined *)((int)piVar9 - (uint)(iVar2 == 0));\n    param_1[1] = (int)puVar3;\n  }" (if "if") (parenthesized_expression "((int)param_3 < 0x14)" (( "(") (binary_expression "(int)param_3 < 0x14" (cast_expression "(int)param_3" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_3")) (< "<") (number_literal "0x14")) () ")")) (compound_statement "{\n    if ((int)param_3 < 3) {\n      iVar2 = 4;\n      iVar5 = 4;\n      piVar9 = (int *)0x1;\n    }\n    else {\n      puVar11 = (undefined4 *)(param_2 + 4);\n      piVar9 = (int *)0x1;\n      do {\n        uVar8 = *puVar11;\n        puVar11 = puVar11 + 1;\n        iVar2 = (*(code *)PTR___gmpn_mul_1_000970a4)(param_2,param_2,piVar9,uVar8);\n        iVar5 = (int)piVar9 * 4;\n        piVar9 = (int *)((int)piVar9 + (uint)(iVar2 != 0));\n        *(int *)(param_2 + iVar5) = iVar2;\n      } while ((undefined4 *)(param_2 + (int)param_3 * 4 + -4) != puVar11);\n      iVar2 = (int)piVar9 * 4;\n      iVar5 = (int)((int)param_3 + -1) * 4;\n    }\n    if ((int)piVar9 < *param_1) {\n      unaff_s3 = (int *)param_1[2];\n    }\n    else {\n      unaff_s3 = (int *)(*(code *)PTR___gmpz_realloc_000975bc)\n                                  (param_1,(undefined *)((int)piVar9 + 1));\n    }\n    param_3 = (int *)(param_2 + iVar5);\n    piVar12 = (int *)((int)unaff_s3 + iVar2);\n    piVar10 = piVar9;\n    iVar2 = (*(code *)PTR___gmpn_mul_1_000970a4)(unaff_s3,param_2,piVar9,*param_3);\n    puVar3 = (undefined *)((uint)(iVar2 != 0) + (int)piVar9);\n    *piVar12 = iVar2;\n    param_1[1] = (int)puVar3;\n    puVar15 = auStack_70;\n  }" ({ "{") (if_statement "if ((int)param_3 < 3) {\n      iVar2 = 4;\n      iVar5 = 4;\n      piVar9 = (int *)0x1;\n    }\n    else {\n      puVar11 = (undefined4 *)(param_2 + 4);\n      piVar9 = (int *)0x1;\n      do {\n        uVar8 = *puVar11;\n        puVar11 = puVar11 + 1;\n        iVar2 = (*(code *)PTR___gmpn_mul_1_000970a4)(param_2,param_2,piVar9,uVar8);\n        iVar5 = (int)piVar9 * 4;\n        piVar9 = (int *)((int)piVar9 + (uint)(iVar2 != 0));\n        *(int *)(param_2 + iVar5) = iVar2;\n      } while ((undefined4 *)(param_2 + (int)param_3 * 4 + -4) != puVar11);\n      iVar2 = (int)piVar9 * 4;\n      iVar5 = (int)((int)param_3 + -1) * 4;\n    }" (if "if") (parenthesized_expression "((int)param_3 < 3)" (( "(") (binary_expression "(int)param_3 < 3" (cast_expression "(int)param_3" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_3")) (< "<") (number_literal "3")) () ")")) (compound_statement "{\n      iVar2 = 4;\n      iVar5 = 4;\n      piVar9 = (int *)0x1;\n    }" ({ "{") (expression_statement "iVar2 = 4;" (assignment_expression "iVar2 = 4" (identifier "iVar2") (= "=") (number_literal "4")) (; ";")) (expression_statement "iVar5 = 4;" (assignment_expression "iVar5 = 4" (identifier "iVar5") (= "=") (number_literal "4")) (; ";")) (expression_statement "piVar9 = (int *)0x1;" (assignment_expression "piVar9 = (int *)0x1" (identifier "piVar9") (= "=") (cast_expression "(int *)0x1" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x1"))) (; ";")) (} "}")) (else_clause "else {\n      puVar11 = (undefined4 *)(param_2 + 4);\n      piVar9 = (int *)0x1;\n      do {\n        uVar8 = *puVar11;\n        puVar11 = puVar11 + 1;\n        iVar2 = (*(code *)PTR___gmpn_mul_1_000970a4)(param_2,param_2,piVar9,uVar8);\n        iVar5 = (int)piVar9 * 4;\n        piVar9 = (int *)((int)piVar9 + (uint)(iVar2 != 0));\n        *(int *)(param_2 + iVar5) = iVar2;\n      } while ((undefined4 *)(param_2 + (int)param_3 * 4 + -4) != puVar11);\n      iVar2 = (int)piVar9 * 4;\n      iVar5 = (int)((int)param_3 + -1) * 4;\n    }" (else "else") (compound_statement "{\n      puVar11 = (undefined4 *)(param_2 + 4);\n      piVar9 = (int *)0x1;\n      do {\n        uVar8 = *puVar11;\n        puVar11 = puVar11 + 1;\n        iVar2 = (*(code *)PTR___gmpn_mul_1_000970a4)(param_2,param_2,piVar9,uVar8);\n        iVar5 = (int)piVar9 * 4;\n        piVar9 = (int *)((int)piVar9 + (uint)(iVar2 != 0));\n        *(int *)(param_2 + iVar5) = iVar2;\n      } while ((undefined4 *)(param_2 + (int)param_3 * 4 + -4) != puVar11);\n      iVar2 = (int)piVar9 * 4;\n      iVar5 = (int)((int)param_3 + -1) * 4;\n    }" ({ "{") (expression_statement "puVar11 = (undefined4 *)(param_2 + 4);" (assignment_expression "puVar11 = (undefined4 *)(param_2 + 4)" (identifier "puVar11") (= "=") (cast_expression "(undefined4 *)(param_2 + 4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 4)" (( "(") (binary_expression "param_2 + 4" (identifier "param_2") (+ "+") (number_literal "4")) () ")")))) (; ";")) (expression_statement "piVar9 = (int *)0x1;" (assignment_expression "piVar9 = (int *)0x1" (identifier "piVar9") (= "=") (cast_expression "(int *)0x1" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x1"))) (; ";")) (do_statement "do {\n        uVar8 = *puVar11;\n        puVar11 = puVar11 + 1;\n        iVar2 = (*(code *)PTR___gmpn_mul_1_000970a4)(param_2,param_2,piVar9,uVar8);\n        iVar5 = (int)piVar9 * 4;\n        piVar9 = (int *)((int)piVar9 + (uint)(iVar2 != 0));\n        *(int *)(param_2 + iVar5) = iVar2;\n      } while ((undefined4 *)(param_2 + (int)param_3 * 4 + -4) != puVar11);" (do "do") (compound_statement "{\n        uVar8 = *puVar11;\n        puVar11 = puVar11 + 1;\n        iVar2 = (*(code *)PTR___gmpn_mul_1_000970a4)(param_2,param_2,piVar9,uVar8);\n        iVar5 = (int)piVar9 * 4;\n        piVar9 = (int *)((int)piVar9 + (uint)(iVar2 != 0));\n        *(int *)(param_2 + iVar5) = iVar2;\n      }" ({ "{") (expression_statement "uVar8 = *puVar11;" (assignment_expression "uVar8 = *puVar11" (identifier "uVar8") (= "=") (pointer_expression "*puVar11" (* "*") (identifier "puVar11"))) (; ";")) (expression_statement "puVar11 = puVar11 + 1;" (assignment_expression "puVar11 = puVar11 + 1" (identifier "puVar11") (= "=") (binary_expression "puVar11 + 1" (identifier "puVar11") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "iVar2 = (*(code *)PTR___gmpn_mul_1_000970a4)(param_2,param_2,piVar9,uVar8);" (assignment_expression "iVar2 = (*(code *)PTR___gmpn_mul_1_000970a4)(param_2,param_2,piVar9,uVar8)" (identifier "iVar2") (= "=") (call_expression "(*(code *)PTR___gmpn_mul_1_000970a4)(param_2,param_2,piVar9,uVar8)" (parenthesized_expression "(*(code *)PTR___gmpn_mul_1_000970a4)" (( "(") (pointer_expression "*(code *)PTR___gmpn_mul_1_000970a4" (* "*") (cast_expression "(code *)PTR___gmpn_mul_1_000970a4" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___gmpn_mul_1_000970a4"))) () ")")) (argument_list "(param_2,param_2,piVar9,uVar8)" (( "(") (identifier "param_2") (, ",") (identifier "param_2") (, ",") (identifier "piVar9") (, ",") (identifier "uVar8") () ")")))) (; ";")) (expression_statement "iVar5 = (int)piVar9 * 4;" (assignment_expression "iVar5 = (int)piVar9 * 4" (identifier "iVar5") (= "=") (binary_expression "(int)piVar9 * 4" (cast_expression "(int)piVar9" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar9")) (* "*") (number_literal "4"))) (; ";")) (expression_statement "piVar9 = (int *)((int)piVar9 + (uint)(iVar2 != 0));" (assignment_expression "piVar9 = (int *)((int)piVar9 + (uint)(iVar2 != 0))" (identifier "piVar9") (= "=") (cast_expression "(int *)((int)piVar9 + (uint)(iVar2 != 0))" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)piVar9 + (uint)(iVar2 != 0))" (( "(") (binary_expression "(int)piVar9 + (uint)(iVar2 != 0)" (cast_expression "(int)piVar9" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar9")) (+ "+") (call_expression "(uint)(iVar2 != 0)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(iVar2 != 0)" (( "(") (binary_expression "iVar2 != 0" (identifier "iVar2") (!= "!=") (number_literal "0")) () ")")))) () ")")))) (; ";")) (expression_statement "*(int *)(param_2 + iVar5) = iVar2;" (assignment_expression "*(int *)(param_2 + iVar5) = iVar2" (pointer_expression "*(int *)(param_2 + iVar5)" (* "*") (cast_expression "(int *)(param_2 + iVar5)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + iVar5)" (( "(") (binary_expression "param_2 + iVar5" (identifier "param_2") (+ "+") (identifier "iVar5")) () ")")))) (= "=") (identifier "iVar2")) (; ";")) (} "}")) (while "while") (parenthesized_expression "((undefined4 *)(param_2 + (int)param_3 * 4 + -4) != puVar11)" (( "(") (binary_expression "(undefined4 *)(param_2 + (int)param_3 * 4 + -4) != puVar11" (cast_expression "(undefined4 *)(param_2 + (int)param_3 * 4 + -4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + (int)param_3 * 4 + -4)" (( "(") (binary_expression "param_2 + (int)param_3 * 4 + -4" (binary_expression "param_2 + (int)param_3 * 4" (identifier "param_2") (+ "+") (binary_expression "(int)param_3 * 4" (cast_expression "(int)param_3" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_3")) (* "*") (number_literal "4"))) (+ "+") (number_literal "-4")) () ")"))) (!= "!=") (identifier "puVar11")) () ")")) (; ";")) (expression_statement "iVar2 = (int)piVar9 * 4;" (assignment_expression "iVar2 = (int)piVar9 * 4" (identifier "iVar2") (= "=") (binary_expression "(int)piVar9 * 4" (cast_expression "(int)piVar9" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar9")) (* "*") (number_literal "4"))) (; ";")) (expression_statement "iVar5 = (int)((int)param_3 + -1) * 4;" (assignment_expression "iVar5 = (int)((int)param_3 + -1) * 4" (identifier "iVar5") (= "=") (binary_expression "(int)((int)param_3 + -1) * 4" (cast_expression "(int)((int)param_3 + -1)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "((int)param_3 + -1)" (( "(") (binary_expression "(int)param_3 + -1" (cast_expression "(int)param_3" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_3")) (+ "+") (number_literal "-1")) () ")"))) (* "*") (number_literal "4"))) (; ";")) (} "}")))) (if_statement "if ((int)piVar9 < *param_1) {\n      unaff_s3 = (int *)param_1[2];\n    }\n    else {\n      unaff_s3 = (int *)(*(code *)PTR___gmpz_realloc_000975bc)\n                                  (param_1,(undefined *)((int)piVar9 + 1));\n    }" (if "if") (parenthesized_expression "((int)piVar9 < *param_1)" (( "(") (binary_expression "(int)piVar9 < *param_1" (cast_expression "(int)piVar9" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar9")) (< "<") (pointer_expression "*param_1" (* "*") (identifier "param_1"))) () ")")) (compound_statement "{\n      unaff_s3 = (int *)param_1[2];\n    }" ({ "{") (expression_statement "unaff_s3 = (int *)param_1[2];" (assignment_expression "unaff_s3 = (int *)param_1[2]" (identifier "unaff_s3") (= "=") (cast_expression "(int *)param_1[2]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_1[2]" (identifier "param_1") ([ "[") (number_literal "2") (] "]")))) (; ";")) (} "}")) (else_clause "else {\n      unaff_s3 = (int *)(*(code *)PTR___gmpz_realloc_000975bc)\n                                  (param_1,(undefined *)((int)piVar9 + 1));\n    }" (else "else") (compound_statement "{\n      unaff_s3 = (int *)(*(code *)PTR___gmpz_realloc_000975bc)\n                                  (param_1,(undefined *)((int)piVar9 + 1));\n    }" ({ "{") (expression_statement "unaff_s3 = (int *)(*(code *)PTR___gmpz_realloc_000975bc)\n                                  (param_1,(undefined *)((int)piVar9 + 1));" (assignment_expression "unaff_s3 = (int *)(*(code *)PTR___gmpz_realloc_000975bc)\n                                  (param_1,(undefined *)((int)piVar9 + 1))" (identifier "unaff_s3") (= "=") (cast_expression "(int *)(*(code *)PTR___gmpz_realloc_000975bc)\n                                  (param_1,(undefined *)((int)piVar9 + 1))" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "(*(code *)PTR___gmpz_realloc_000975bc)\n                                  (param_1,(undefined *)((int)piVar9 + 1))" (parenthesized_expression "(*(code *)PTR___gmpz_realloc_000975bc)" (( "(") (pointer_expression "*(code *)PTR___gmpz_realloc_000975bc" (* "*") (cast_expression "(code *)PTR___gmpz_realloc_000975bc" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___gmpz_realloc_000975bc"))) () ")")) (argument_list "(param_1,(undefined *)((int)piVar9 + 1))" (( "(") (identifier "param_1") (, ",") (cast_expression "(undefined *)((int)piVar9 + 1)" (( "(") (type_descriptor "undefined *" (type_identifier "undefined") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)piVar9 + 1)" (( "(") (binary_expression "(int)piVar9 + 1" (cast_expression "(int)piVar9" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar9")) (+ "+") (number_literal "1")) () ")"))) () ")"))))) (; ";")) (} "}")))) (expression_statement "param_3 = (int *)(param_2 + iVar5);" (assignment_expression "param_3 = (int *)(param_2 + iVar5)" (identifier "param_3") (= "=") (cast_expression "(int *)(param_2 + iVar5)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + iVar5)" (( "(") (binary_expression "param_2 + iVar5" (identifier "param_2") (+ "+") (identifier "iVar5")) () ")")))) (; ";")) (expression_statement "piVar12 = (int *)((int)unaff_s3 + iVar2);" (assignment_expression "piVar12 = (int *)((int)unaff_s3 + iVar2)" (identifier "piVar12") (= "=") (cast_expression "(int *)((int)unaff_s3 + iVar2)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)unaff_s3 + iVar2)" (( "(") (binary_expression "(int)unaff_s3 + iVar2" (cast_expression "(int)unaff_s3" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "unaff_s3")) (+ "+") (identifier "iVar2")) () ")")))) (; ";")) (expression_statement "piVar10 = piVar9;" (assignment_expression "piVar10 = piVar9" (identifier "piVar10") (= "=") (identifier "piVar9")) (; ";")) (expression_statement "iVar2 = (*(code *)PTR___gmpn_mul_1_000970a4)(unaff_s3,param_2,piVar9,*param_3);" (assignment_expression "iVar2 = (*(code *)PTR___gmpn_mul_1_000970a4)(unaff_s3,param_2,piVar9,*param_3)" (identifier "iVar2") (= "=") (call_expression "(*(code *)PTR___gmpn_mul_1_000970a4)(unaff_s3,param_2,piVar9,*param_3)" (parenthesized_expression "(*(code *)PTR___gmpn_mul_1_000970a4)" (( "(") (pointer_expression "*(code *)PTR___gmpn_mul_1_000970a4" (* "*") (cast_expression "(code *)PTR___gmpn_mul_1_000970a4" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___gmpn_mul_1_000970a4"))) () ")")) (argument_list "(unaff_s3,param_2,piVar9,*param_3)" (( "(") (identifier "unaff_s3") (, ",") (identifier "param_2") (, ",") (identifier "piVar9") (, ",") (pointer_expression "*param_3" (* "*") (identifier "param_3")) () ")")))) (; ";")) (expression_statement "puVar3 = (undefined *)((uint)(iVar2 != 0) + (int)piVar9);" (assignment_expression "puVar3 = (undefined *)((uint)(iVar2 != 0) + (int)piVar9)" (identifier "puVar3") (= "=") (cast_expression "(undefined *)((uint)(iVar2 != 0) + (int)piVar9)" (( "(") (type_descriptor "undefined *" (type_identifier "undefined") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((uint)(iVar2 != 0) + (int)piVar9)" (( "(") (binary_expression "(uint)(iVar2 != 0) + (int)piVar9" (call_expression "(uint)(iVar2 != 0)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(iVar2 != 0)" (( "(") (binary_expression "iVar2 != 0" (identifier "iVar2") (!= "!=") (number_literal "0")) () ")"))) (+ "+") (cast_expression "(int)piVar9" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar9"))) () ")")))) (; ";")) (expression_statement "*piVar12 = iVar2;" (assignment_expression "*piVar12 = iVar2" (pointer_expression "*piVar12" (* "*") (identifier "piVar12")) (= "=") (identifier "iVar2")) (; ";")) (expression_statement "param_1[1] = (int)puVar3;" (assignment_expression "param_1[1] = (int)puVar3" (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]")) (= "=") (cast_expression "(int)puVar3" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar3"))) (; ";")) (expression_statement "puVar15 = auStack_70;" (assignment_expression "puVar15 = auStack_70" (identifier "puVar15") (= "=") (identifier "auStack_70")) (; ";")) (} "}")) (else_clause "else {\n    iVar5 = (int)param_3 >> 1;\n    local_48 = 0;\n    iVar2 = (int)param_3 - iVar5;\n    local_38[0] = iVar2;\n    if ((uint)(iVar2 * 4) < 0x7f01) {\n      iVar1 = -(iVar2 * 4 + 7U & 0xfffffff8);\n      puVar15 = auStack_70 + iVar1;\n      local_30 = (undefined *)((int)local_38 + iVar1 + -0x20);\n    }\n    else {\n      local_30 = (undefined *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_48);\n    }\n    local_3c = param_2 + iVar5 * 4;\n    local_44[0] = iVar2;\n    piVar12 = (int *)__gmpz_prodlimbs(local_38);\n    piVar10 = (int *)__gmpz_prodlimbs(local_44,param_2,iVar5);\n    piVar9 = (int *)((int)piVar12 + (int)piVar10);\n    if (*param_1 < (int)piVar9) {\n      iVar2 = (*(code *)PTR___gmpz_realloc_000975bc)(param_1,piVar9);\n    }\n    else {\n      iVar2 = param_1[2];\n    }\n    param_2 = local_30;\n    puVar3 = local_3c;\n    if ((int)piVar10 < (int)piVar12) {\n      *(int **)(puVar15 + 0x10) = piVar10;\n      piVar10 = piVar12;\n      iVar2 = (*(code *)PTR___gmpn_mul_000972b4)(iVar2,param_2,piVar12,puVar3);\n    }\n    else {\n      *(int **)(puVar15 + 0x10) = piVar12;\n      iVar2 = (*(code *)PTR___gmpn_mul_000972b4)();\n      param_2 = puVar3;\n    }\n    if (local_48 != 0) {\n      (*(code *)PTR___gmp_tmp_reentrant_free_00097614)();\n    }\n    puVar3 = (undefined *)((int)piVar9 - (uint)(iVar2 == 0));\n    param_1[1] = (int)puVar3;\n  }" (else "else") (compound_statement "{\n    iVar5 = (int)param_3 >> 1;\n    local_48 = 0;\n    iVar2 = (int)param_3 - iVar5;\n    local_38[0] = iVar2;\n    if ((uint)(iVar2 * 4) < 0x7f01) {\n      iVar1 = -(iVar2 * 4 + 7U & 0xfffffff8);\n      puVar15 = auStack_70 + iVar1;\n      local_30 = (undefined *)((int)local_38 + iVar1 + -0x20);\n    }\n    else {\n      local_30 = (undefined *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_48);\n    }\n    local_3c = param_2 + iVar5 * 4;\n    local_44[0] = iVar2;\n    piVar12 = (int *)__gmpz_prodlimbs(local_38);\n    piVar10 = (int *)__gmpz_prodlimbs(local_44,param_2,iVar5);\n    piVar9 = (int *)((int)piVar12 + (int)piVar10);\n    if (*param_1 < (int)piVar9) {\n      iVar2 = (*(code *)PTR___gmpz_realloc_000975bc)(param_1,piVar9);\n    }\n    else {\n      iVar2 = param_1[2];\n    }\n    param_2 = local_30;\n    puVar3 = local_3c;\n    if ((int)piVar10 < (int)piVar12) {\n      *(int **)(puVar15 + 0x10) = piVar10;\n      piVar10 = piVar12;\n      iVar2 = (*(code *)PTR___gmpn_mul_000972b4)(iVar2,param_2,piVar12,puVar3);\n    }\n    else {\n      *(int **)(puVar15 + 0x10) = piVar12;\n      iVar2 = (*(code *)PTR___gmpn_mul_000972b4)();\n      param_2 = puVar3;\n    }\n    if (local_48 != 0) {\n      (*(code *)PTR___gmp_tmp_reentrant_free_00097614)();\n    }\n    puVar3 = (undefined *)((int)piVar9 - (uint)(iVar2 == 0));\n    param_1[1] = (int)puVar3;\n  }" ({ "{") (expression_statement "iVar5 = (int)param_3 >> 1;" (assignment_expression "iVar5 = (int)param_3 >> 1" (identifier "iVar5") (= "=") (binary_expression "(int)param_3 >> 1" (cast_expression "(int)param_3" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_3")) (>> ">>") (number_literal "1"))) (; ";")) (expression_statement "local_48 = 0;" (assignment_expression "local_48 = 0" (identifier "local_48") (= "=") (number_literal "0")) (; ";")) (expression_statement "iVar2 = (int)param_3 - iVar5;" (assignment_expression "iVar2 = (int)param_3 - iVar5" (identifier "iVar2") (= "=") (binary_expression "(int)param_3 - iVar5" (cast_expression "(int)param_3" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_3")) (- "-") (identifier "iVar5"))) (; ";")) (expression_statement "local_38[0] = iVar2;" (assignment_expression "local_38[0] = iVar2" (subscript_expression "local_38[0]" (identifier "local_38") ([ "[") (number_literal "0") (] "]")) (= "=") (identifier "iVar2")) (; ";")) (if_statement "if ((uint)(iVar2 * 4) < 0x7f01) {\n      iVar1 = -(iVar2 * 4 + 7U & 0xfffffff8);\n      puVar15 = auStack_70 + iVar1;\n      local_30 = (undefined *)((int)local_38 + iVar1 + -0x20);\n    }\n    else {\n      local_30 = (undefined *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_48);\n    }" (if "if") (parenthesized_expression "((uint)(iVar2 * 4) < 0x7f01)" (( "(") (binary_expression "(uint)(iVar2 * 4) < 0x7f01" (call_expression "(uint)(iVar2 * 4)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(iVar2 * 4)" (( "(") (binary_expression "iVar2 * 4" (identifier "iVar2") (* "*") (number_literal "4")) () ")"))) (< "<") (number_literal "0x7f01")) () ")")) (compound_statement "{\n      iVar1 = -(iVar2 * 4 + 7U & 0xfffffff8);\n      puVar15 = auStack_70 + iVar1;\n      local_30 = (undefined *)((int)local_38 + iVar1 + -0x20);\n    }" ({ "{") (expression_statement "iVar1 = -(iVar2 * 4 + 7U & 0xfffffff8);" (assignment_expression "iVar1 = -(iVar2 * 4 + 7U & 0xfffffff8)" (identifier "iVar1") (= "=") (unary_expression "-(iVar2 * 4 + 7U & 0xfffffff8)" (- "-") (parenthesized_expression "(iVar2 * 4 + 7U & 0xfffffff8)" (( "(") (binary_expression "iVar2 * 4 + 7U & 0xfffffff8" (binary_expression "iVar2 * 4 + 7U" (binary_expression "iVar2 * 4" (identifier "iVar2") (* "*") (number_literal "4")) (+ "+") (number_literal "7U")) (& "&") (number_literal "0xfffffff8")) () ")")))) (; ";")) (expression_statement "puVar15 = auStack_70 + iVar1;" (assignment_expression "puVar15 = auStack_70 + iVar1" (identifier "puVar15") (= "=") (binary_expression "auStack_70 + iVar1" (identifier "auStack_70") (+ "+") (identifier "iVar1"))) (; ";")) (expression_statement "local_30 = (undefined *)((int)local_38 + iVar1 + -0x20);" (assignment_expression "local_30 = (undefined *)((int)local_38 + iVar1 + -0x20)" (identifier "local_30") (= "=") (cast_expression "(undefined *)((int)local_38 + iVar1 + -0x20)" (( "(") (type_descriptor "undefined *" (type_identifier "undefined") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)local_38 + iVar1 + -0x20)" (( "(") (binary_expression "(int)local_38 + iVar1 + -0x20" (binary_expression "(int)local_38 + iVar1" (cast_expression "(int)local_38" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_38")) (+ "+") (identifier "iVar1")) (+ "+") (number_literal "-0x20")) () ")")))) (; ";")) (} "}")) (else_clause "else {\n      local_30 = (undefined *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_48);\n    }" (else "else") (compound_statement "{\n      local_30 = (undefined *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_48);\n    }" ({ "{") (expression_statement "local_30 = (undefined *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_48);" (assignment_expression "local_30 = (undefined *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_48)" (identifier "local_30") (= "=") (cast_expression "(undefined *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_48)" (( "(") (type_descriptor "undefined *" (type_identifier "undefined") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_48)" (parenthesized_expression "(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)" (( "(") (pointer_expression "*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0" (* "*") (cast_expression "(code *)PTR___gmp_tmp_reentrant_alloc_000972f0" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___gmp_tmp_reentrant_alloc_000972f0"))) () ")")) (argument_list "(&local_48)" (( "(") (pointer_expression "&local_48" (& "&") (identifier "local_48")) () ")"))))) (; ";")) (} "}")))) (expression_statement "local_3c = param_2 + iVar5 * 4;" (assignment_expression "local_3c = param_2 + iVar5 * 4" (identifier "local_3c") (= "=") (binary_expression "param_2 + iVar5 * 4" (identifier "param_2") (+ "+") (binary_expression "iVar5 * 4" (identifier "iVar5") (* "*") (number_literal "4")))) (; ";")) (expression_statement "local_44[0] = iVar2;" (assignment_expression "local_44[0] = iVar2" (subscript_expression "local_44[0]" (identifier "local_44") ([ "[") (number_literal "0") (] "]")) (= "=") (identifier "iVar2")) (; ";")) (expression_statement "piVar12 = (int *)__gmpz_prodlimbs(local_38);" (assignment_expression "piVar12 = (int *)__gmpz_prodlimbs(local_38)" (identifier "piVar12") (= "=") (cast_expression "(int *)__gmpz_prodlimbs(local_38)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "__gmpz_prodlimbs(local_38)" (identifier "__gmpz_prodlimbs") (argument_list "(local_38)" (( "(") (identifier "local_38") () ")"))))) (; ";")) (expression_statement "piVar10 = (int *)__gmpz_prodlimbs(local_44,param_2,iVar5);" (assignment_expression "piVar10 = (int *)__gmpz_prodlimbs(local_44,param_2,iVar5)" (identifier "piVar10") (= "=") (cast_expression "(int *)__gmpz_prodlimbs(local_44,param_2,iVar5)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "__gmpz_prodlimbs(local_44,param_2,iVar5)" (identifier "__gmpz_prodlimbs") (argument_list "(local_44,param_2,iVar5)" (( "(") (identifier "local_44") (, ",") (identifier "param_2") (, ",") (identifier "iVar5") () ")"))))) (; ";")) (expression_statement "piVar9 = (int *)((int)piVar12 + (int)piVar10);" (assignment_expression "piVar9 = (int *)((int)piVar12 + (int)piVar10)" (identifier "piVar9") (= "=") (cast_expression "(int *)((int)piVar12 + (int)piVar10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)piVar12 + (int)piVar10)" (( "(") (binary_expression "(int)piVar12 + (int)piVar10" (cast_expression "(int)piVar12" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar12")) (+ "+") (cast_expression "(int)piVar10" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar10"))) () ")")))) (; ";")) (if_statement "if (*param_1 < (int)piVar9) {\n      iVar2 = (*(code *)PTR___gmpz_realloc_000975bc)(param_1,piVar9);\n    }\n    else {\n      iVar2 = param_1[2];\n    }" (if "if") (parenthesized_expression "(*param_1 < (int)piVar9)" (( "(") (binary_expression "*param_1 < (int)piVar9" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (< "<") (cast_expression "(int)piVar9" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar9"))) () ")")) (compound_statement "{\n      iVar2 = (*(code *)PTR___gmpz_realloc_000975bc)(param_1,piVar9);\n    }" ({ "{") (expression_statement "iVar2 = (*(code *)PTR___gmpz_realloc_000975bc)(param_1,piVar9);" (assignment_expression "iVar2 = (*(code *)PTR___gmpz_realloc_000975bc)(param_1,piVar9)" (identifier "iVar2") (= "=") (call_expression "(*(code *)PTR___gmpz_realloc_000975bc)(param_1,piVar9)" (parenthesized_expression "(*(code *)PTR___gmpz_realloc_000975bc)" (( "(") (pointer_expression "*(code *)PTR___gmpz_realloc_000975bc" (* "*") (cast_expression "(code *)PTR___gmpz_realloc_000975bc" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___gmpz_realloc_000975bc"))) () ")")) (argument_list "(param_1,piVar9)" (( "(") (identifier "param_1") (, ",") (identifier "piVar9") () ")")))) (; ";")) (} "}")) (else_clause "else {\n      iVar2 = param_1[2];\n    }" (else "else") (compound_statement "{\n      iVar2 = param_1[2];\n    }" ({ "{") (expression_statement "iVar2 = param_1[2];" (assignment_expression "iVar2 = param_1[2]" (identifier "iVar2") (= "=") (subscript_expression "param_1[2]" (identifier "param_1") ([ "[") (number_literal "2") (] "]"))) (; ";")) (} "}")))) (expression_statement "param_2 = local_30;" (assignment_expression "param_2 = local_30" (identifier "param_2") (= "=") (identifier "local_30")) (; ";")) (expression_statement "puVar3 = local_3c;" (assignment_expression "puVar3 = local_3c" (identifier "puVar3") (= "=") (identifier "local_3c")) (; ";")) (if_statement "if ((int)piVar10 < (int)piVar12) {\n      *(int **)(puVar15 + 0x10) = piVar10;\n      piVar10 = piVar12;\n      iVar2 = (*(code *)PTR___gmpn_mul_000972b4)(iVar2,param_2,piVar12,puVar3);\n    }\n    else {\n      *(int **)(puVar15 + 0x10) = piVar12;\n      iVar2 = (*(code *)PTR___gmpn_mul_000972b4)();\n      param_2 = puVar3;\n    }" (if "if") (parenthesized_expression "((int)piVar10 < (int)piVar12)" (( "(") (binary_expression "(int)piVar10 < (int)piVar12" (cast_expression "(int)piVar10" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar10")) (< "<") (cast_expression "(int)piVar12" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar12"))) () ")")) (compound_statement "{\n      *(int **)(puVar15 + 0x10) = piVar10;\n      piVar10 = piVar12;\n      iVar2 = (*(code *)PTR___gmpn_mul_000972b4)(iVar2,param_2,piVar12,puVar3);\n    }" ({ "{") (expression_statement "*(int **)(puVar15 + 0x10) = piVar10;" (assignment_expression "*(int **)(puVar15 + 0x10) = piVar10" (pointer_expression "*(int **)(puVar15 + 0x10)" (* "*") (cast_expression "(int **)(puVar15 + 0x10)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar15 + 0x10)" (( "(") (binary_expression "puVar15 + 0x10" (identifier "puVar15") (+ "+") (number_literal "0x10")) () ")")))) (= "=") (identifier "piVar10")) (; ";")) (expression_statement "piVar10 = piVar12;" (assignment_expression "piVar10 = piVar12" (identifier "piVar10") (= "=") (identifier "piVar12")) (; ";")) (expression_statement "iVar2 = (*(code *)PTR___gmpn_mul_000972b4)(iVar2,param_2,piVar12,puVar3);" (assignment_expression "iVar2 = (*(code *)PTR___gmpn_mul_000972b4)(iVar2,param_2,piVar12,puVar3)" (identifier "iVar2") (= "=") (call_expression "(*(code *)PTR___gmpn_mul_000972b4)(iVar2,param_2,piVar12,puVar3)" (parenthesized_expression "(*(code *)PTR___gmpn_mul_000972b4)" (( "(") (pointer_expression "*(code *)PTR___gmpn_mul_000972b4" (* "*") (cast_expression "(code *)PTR___gmpn_mul_000972b4" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___gmpn_mul_000972b4"))) () ")")) (argument_list "(iVar2,param_2,piVar12,puVar3)" (( "(") (identifier "iVar2") (, ",") (identifier "param_2") (, ",") (identifier "piVar12") (, ",") (identifier "puVar3") () ")")))) (; ";")) (} "}")) (else_clause "else {\n      *(int **)(puVar15 + 0x10) = piVar12;\n      iVar2 = (*(code *)PTR___gmpn_mul_000972b4)();\n      param_2 = puVar3;\n    }" (else "else") (compound_statement "{\n      *(int **)(puVar15 + 0x10) = piVar12;\n      iVar2 = (*(code *)PTR___gmpn_mul_000972b4)();\n      param_2 = puVar3;\n    }" ({ "{") (expression_statement "*(int **)(puVar15 + 0x10) = piVar12;" (assignment_expression "*(int **)(puVar15 + 0x10) = piVar12" (pointer_expression "*(int **)(puVar15 + 0x10)" (* "*") (cast_expression "(int **)(puVar15 + 0x10)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar15 + 0x10)" (( "(") (binary_expression "puVar15 + 0x10" (identifier "puVar15") (+ "+") (number_literal "0x10")) () ")")))) (= "=") (identifier "piVar12")) (; ";")) (expression_statement "iVar2 = (*(code *)PTR___gmpn_mul_000972b4)();" (assignment_expression "iVar2 = (*(code *)PTR___gmpn_mul_000972b4)()" (identifier "iVar2") (= "=") (call_expression "(*(code *)PTR___gmpn_mul_000972b4)()" (parenthesized_expression "(*(code *)PTR___gmpn_mul_000972b4)" (( "(") (pointer_expression "*(code *)PTR___gmpn_mul_000972b4" (* "*") (cast_expression "(code *)PTR___gmpn_mul_000972b4" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___gmpn_mul_000972b4"))) () ")")) (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "param_2 = puVar3;" (assignment_expression "param_2 = puVar3" (identifier "param_2") (= "=") (identifier "puVar3")) (; ";")) (} "}")))) (if_statement "if (local_48 != 0) {\n      (*(code *)PTR___gmp_tmp_reentrant_free_00097614)();\n    }" (if "if") (parenthesized_expression "(local_48 != 0)" (( "(") (binary_expression "local_48 != 0" (identifier "local_48") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      (*(code *)PTR___gmp_tmp_reentrant_free_00097614)();\n    }" ({ "{") (expression_statement "(*(code *)PTR___gmp_tmp_reentrant_free_00097614)();" (call_expression "(*(code *)PTR___gmp_tmp_reentrant_free_00097614)()" (parenthesized_expression "(*(code *)PTR___gmp_tmp_reentrant_free_00097614)" (( "(") (pointer_expression "*(code *)PTR___gmp_tmp_reentrant_free_00097614" (* "*") (cast_expression "(code *)PTR___gmp_tmp_reentrant_free_00097614" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___gmp_tmp_reentrant_free_00097614"))) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (expression_statement "puVar3 = (undefined *)((int)piVar9 - (uint)(iVar2 == 0));" (assignment_expression "puVar3 = (undefined *)((int)piVar9 - (uint)(iVar2 == 0))" (identifier "puVar3") (= "=") (cast_expression "(undefined *)((int)piVar9 - (uint)(iVar2 == 0))" (( "(") (type_descriptor "undefined *" (type_identifier "undefined") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)piVar9 - (uint)(iVar2 == 0))" (( "(") (binary_expression "(int)piVar9 - (uint)(iVar2 == 0)" (cast_expression "(int)piVar9" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar9")) (- "-") (call_expression "(uint)(iVar2 == 0)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(iVar2 == 0)" (( "(") (binary_expression "iVar2 == 0" (identifier "iVar2") (== "==") (number_literal "0")) () ")")))) () ")")))) (; ";")) (expression_statement "param_1[1] = (int)puVar3;" (assignment_expression "param_1[1] = (int)puVar3" (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]")) (= "=") (cast_expression "(int)puVar3" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar3"))) (; ";")) (} "}")))) (if_statement "if (local_2c == *(int **)puVar4) {\n    return puVar3;\n  }" (if "if") (parenthesized_expression "(local_2c == *(int **)puVar4)" (( "(") (binary_expression "local_2c == *(int **)puVar4" (identifier "local_2c") (== "==") (pointer_expression "*(int **)puVar4" (* "*") (cast_expression "(int **)puVar4" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (identifier "puVar4")))) () ")")) (compound_statement "{\n    return puVar3;\n  }" ({ "{") (return_statement "return puVar3;" (return "return") (identifier "puVar3") (; ";")) (} "}"))) (expression_statement "uVar8 = 0x275d4;" (assignment_expression "uVar8 = 0x275d4" (identifier "uVar8") (= "=") (number_literal "0x275d4")) (; ";")) (expression_statement "piVar7 = local_2c;" (assignment_expression "piVar7 = local_2c" (identifier "piVar7") (= "=") (identifier "local_2c")) (; ";")) (expression_statement "puVar3 = PTR___stack_chk_fail_000974d0;" (assignment_expression "puVar3 = PTR___stack_chk_fail_000974d0" (identifier "puVar3") (= "=") (identifier "PTR___stack_chk_fail_000974d0")) (; ";")) (expression_statement "(*(code *)PTR___stack_chk_fail_000974d0)();" (call_expression "(*(code *)PTR___stack_chk_fail_000974d0)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_000974d0)" (( "(") (pointer_expression "*(code *)PTR___stack_chk_fail_000974d0" (* "*") (cast_expression "(code *)PTR___stack_chk_fail_000974d0" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___stack_chk_fail_000974d0"))) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "puVar14 = puVar3 + 0x77a60;" (assignment_expression "puVar14 = puVar3 + 0x77a60" (identifier "puVar14") (= "=") (binary_expression "puVar3 + 0x77a60" (identifier "puVar3") (+ "+") (number_literal "0x77a60"))) (; ";")) (expression_statement "*(undefined **)(puVar15 + -0x28) = puVar14;" (assignment_expression "*(undefined **)(puVar15 + -0x28) = puVar14" (pointer_expression "*(undefined **)(puVar15 + -0x28)" (* "*") (cast_expression "(undefined **)(puVar15 + -0x28)" (( "(") (type_descriptor "undefined **" (type_identifier "undefined") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar15 + -0x28)" (( "(") (binary_expression "puVar15 + -0x28" (identifier "puVar15") (+ "+") (number_literal "-0x28")) () ")")))) (= "=") (identifier "puVar14")) (; ";")) (expression_statement "*(undefined4 *)(puVar15 + -4) = uVar8;" (assignment_expression "*(undefined4 *)(puVar15 + -4) = uVar8" (pointer_expression "*(undefined4 *)(puVar15 + -4)" (* "*") (cast_expression "(undefined4 *)(puVar15 + -4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar15 + -4)" (( "(") (binary_expression "puVar15 + -4" (identifier "puVar15") (+ "+") (number_literal "-4")) () ")")))) (= "=") (identifier "uVar8")) (; ";")) (expression_statement "*(undefined **)(puVar15 + -8) = puVar4;" (assignment_expression "*(undefined **)(puVar15 + -8) = puVar4" (pointer_expression "*(undefined **)(puVar15 + -8)" (* "*") (cast_expression "(undefined **)(puVar15 + -8)" (( "(") (type_descriptor "undefined **" (type_identifier "undefined") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar15 + -8)" (( "(") (binary_expression "puVar15 + -8" (identifier "puVar15") (+ "+") (number_literal "-8")) () ")")))) (= "=") (identifier "puVar4")) (; ";")) (expression_statement "*(int **)(puVar15 + -0xc) = param_1;" (assignment_expression "*(int **)(puVar15 + -0xc) = param_1" (pointer_expression "*(int **)(puVar15 + -0xc)" (* "*") (cast_expression "(int **)(puVar15 + -0xc)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar15 + -0xc)" (( "(") (binary_expression "puVar15 + -0xc" (identifier "puVar15") (+ "+") (number_literal "-0xc")) () ")")))) (= "=") (identifier "param_1")) (; ";")) (expression_statement "*(int **)(puVar15 + -0x10) = unaff_s3;" (assignment_expression "*(int **)(puVar15 + -0x10) = unaff_s3" (pointer_expression "*(int **)(puVar15 + -0x10)" (* "*") (cast_expression "(int **)(puVar15 + -0x10)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar15 + -0x10)" (( "(") (binary_expression "puVar15 + -0x10" (identifier "puVar15") (+ "+") (number_literal "-0x10")) () ")")))) (= "=") (identifier "unaff_s3")) (; ";")) (expression_statement "*(int **)(puVar15 + -0x14) = param_3;" (assignment_expression "*(int **)(puVar15 + -0x14) = param_3" (pointer_expression "*(int **)(puVar15 + -0x14)" (* "*") (cast_expression "(int **)(puVar15 + -0x14)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar15 + -0x14)" (( "(") (binary_expression "puVar15 + -0x14" (identifier "puVar15") (+ "+") (number_literal "-0x14")) () ")")))) (= "=") (identifier "param_3")) (; ";")) (expression_statement "*(int **)(puVar15 + -0x18) = piVar12;" (assignment_expression "*(int **)(puVar15 + -0x18) = piVar12" (pointer_expression "*(int **)(puVar15 + -0x18)" (* "*") (cast_expression "(int **)(puVar15 + -0x18)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar15 + -0x18)" (( "(") (binary_expression "puVar15 + -0x18" (identifier "puVar15") (+ "+") (number_literal "-0x18")) () ")")))) (= "=") (identifier "piVar12")) (; ";")) (expression_statement "*(int **)(puVar15 + -0x1c) = piVar9;" (assignment_expression "*(int **)(puVar15 + -0x1c) = piVar9" (pointer_expression "*(int **)(puVar15 + -0x1c)" (* "*") (cast_expression "(int **)(puVar15 + -0x1c)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar15 + -0x1c)" (( "(") (binary_expression "puVar15 + -0x1c" (identifier "puVar15") (+ "+") (number_literal "-0x1c")) () ")")))) (= "=") (identifier "piVar9")) (; ";")) (if_statement "if (piVar10 == (int *)0x0) {\n    pcVar13 = *(code **)(puVar3 + 0x6fffc);\n    (*pcVar13)();\nLAB_0002772c:\n    piVar10 = (int *)(*pcVar13)(unaff_s3,piVar12);\n    puVar14 = *(undefined **)(puVar15 + -0x28);\n  }\n  else {\n    param_3 = *(int **)(param_2 + 4);\n    if (param_3 == (int *)0x0) {\n      piVar7[1] = 0;\n      return (undefined *)0x0;\n    }\n    piVar12 = param_3;\n    if ((int)param_3 < 0) {\n      piVar12 = (int *)-(int)param_3;\n    }\n    pcVar13 = *(code **)(puVar3 + 0x6ffdc);\n    unaff_s3 = piVar7;\n    param_1 = piVar10;\n    puVar4 = param_2;\n    if (*piVar7 < (int)piVar12) goto LAB_0002772c;\n    piVar10 = (int *)piVar7[2];\n  }" (if "if") (parenthesized_expression "(piVar10 == (int *)0x0)" (( "(") (binary_expression "piVar10 == (int *)0x0" (identifier "piVar10") (== "==") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n    pcVar13 = *(code **)(puVar3 + 0x6fffc);\n    (*pcVar13)();\nLAB_0002772c:\n    piVar10 = (int *)(*pcVar13)(unaff_s3,piVar12);\n    puVar14 = *(undefined **)(puVar15 + -0x28);\n  }" ({ "{") (expression_statement "pcVar13 = *(code **)(puVar3 + 0x6fffc);" (assignment_expression "pcVar13 = *(code **)(puVar3 + 0x6fffc)" (identifier "pcVar13") (= "=") (pointer_expression "*(code **)(puVar3 + 0x6fffc)" (* "*") (cast_expression "(code **)(puVar3 + 0x6fffc)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar3 + 0x6fffc)" (( "(") (binary_expression "puVar3 + 0x6fffc" (identifier "puVar3") (+ "+") (number_literal "0x6fffc")) () ")"))))) (; ";")) (expression_statement "(*pcVar13)();" (call_expression "(*pcVar13)()" (parenthesized_expression "(*pcVar13)" (( "(") (pointer_expression "*pcVar13" (* "*") (identifier "pcVar13")) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (labeled_statement "LAB_0002772c:\n    piVar10 = (int *)(*pcVar13)(unaff_s3,piVar12);" (statement_identifier "LAB_0002772c") (: ":") (expression_statement "piVar10 = (int *)(*pcVar13)(unaff_s3,piVar12);" (assignment_expression "piVar10 = (int *)(*pcVar13)(unaff_s3,piVar12)" (identifier "piVar10") (= "=") (cast_expression "(int *)(*pcVar13)(unaff_s3,piVar12)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "(*pcVar13)(unaff_s3,piVar12)" (parenthesized_expression "(*pcVar13)" (( "(") (pointer_expression "*pcVar13" (* "*") (identifier "pcVar13")) () ")")) (argument_list "(unaff_s3,piVar12)" (( "(") (identifier "unaff_s3") (, ",") (identifier "piVar12") () ")"))))) (; ";"))) (expression_statement "puVar14 = *(undefined **)(puVar15 + -0x28);" (assignment_expression "puVar14 = *(undefined **)(puVar15 + -0x28)" (identifier "puVar14") (= "=") (pointer_expression "*(undefined **)(puVar15 + -0x28)" (* "*") (cast_expression "(undefined **)(puVar15 + -0x28)" (( "(") (type_descriptor "undefined **" (type_identifier "undefined") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar15 + -0x28)" (( "(") (binary_expression "puVar15 + -0x28" (identifier "puVar15") (+ "+") (number_literal "-0x28")) () ")"))))) (; ";")) (} "}")) (else_clause "else {\n    param_3 = *(int **)(param_2 + 4);\n    if (param_3 == (int *)0x0) {\n      piVar7[1] = 0;\n      return (undefined *)0x0;\n    }\n    piVar12 = param_3;\n    if ((int)param_3 < 0) {\n      piVar12 = (int *)-(int)param_3;\n    }\n    pcVar13 = *(code **)(puVar3 + 0x6ffdc);\n    unaff_s3 = piVar7;\n    param_1 = piVar10;\n    puVar4 = param_2;\n    if (*piVar7 < (int)piVar12) goto LAB_0002772c;\n    piVar10 = (int *)piVar7[2];\n  }" (else "else") (compound_statement "{\n    param_3 = *(int **)(param_2 + 4);\n    if (param_3 == (int *)0x0) {\n      piVar7[1] = 0;\n      return (undefined *)0x0;\n    }\n    piVar12 = param_3;\n    if ((int)param_3 < 0) {\n      piVar12 = (int *)-(int)param_3;\n    }\n    pcVar13 = *(code **)(puVar3 + 0x6ffdc);\n    unaff_s3 = piVar7;\n    param_1 = piVar10;\n    puVar4 = param_2;\n    if (*piVar7 < (int)piVar12) goto LAB_0002772c;\n    piVar10 = (int *)piVar7[2];\n  }" ({ "{") (expression_statement "param_3 = *(int **)(param_2 + 4);" (assignment_expression "param_3 = *(int **)(param_2 + 4)" (identifier "param_3") (= "=") (pointer_expression "*(int **)(param_2 + 4)" (* "*") (cast_expression "(int **)(param_2 + 4)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_2 + 4)" (( "(") (binary_expression "param_2 + 4" (identifier "param_2") (+ "+") (number_literal "4")) () ")"))))) (; ";")) (if_statement "if (param_3 == (int *)0x0) {\n      piVar7[1] = 0;\n      return (undefined *)0x0;\n    }" (if "if") (parenthesized_expression "(param_3 == (int *)0x0)" (( "(") (binary_expression "param_3 == (int *)0x0" (identifier "param_3") (== "==") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n      piVar7[1] = 0;\n      return (undefined *)0x0;\n    }" ({ "{") (expression_statement "piVar7[1] = 0;" (assignment_expression "piVar7[1] = 0" (subscript_expression "piVar7[1]" (identifier "piVar7") ([ "[") (number_literal "1") (] "]")) (= "=") (number_literal "0")) (; ";")) (return_statement "return (undefined *)0x0;" (return "return") (cast_expression "(undefined *)0x0" (( "(") (type_descriptor "undefined *" (type_identifier "undefined") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0")) (; ";")) (} "}"))) (expression_statement "piVar12 = param_3;" (assignment_expression "piVar12 = param_3" (identifier "piVar12") (= "=") (identifier "param_3")) (; ";")) (if_statement "if ((int)param_3 < 0) {\n      piVar12 = (int *)-(int)param_3;\n    }" (if "if") (parenthesized_expression "((int)param_3 < 0)" (( "(") (binary_expression "(int)param_3 < 0" (cast_expression "(int)param_3" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_3")) (< "<") (number_literal "0")) () ")")) (compound_statement "{\n      piVar12 = (int *)-(int)param_3;\n    }" ({ "{") (expression_statement "piVar12 = (int *)-(int)param_3;" (assignment_expression "piVar12 = (int *)-(int)param_3" (identifier "piVar12") (= "=") (cast_expression "(int *)-(int)param_3" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (unary_expression "-(int)param_3" (- "-") (cast_expression "(int)param_3" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_3"))))) (; ";")) (} "}"))) (expression_statement "pcVar13 = *(code **)(puVar3 + 0x6ffdc);" (assignment_expression "pcVar13 = *(code **)(puVar3 + 0x6ffdc)" (identifier "pcVar13") (= "=") (pointer_expression "*(code **)(puVar3 + 0x6ffdc)" (* "*") (cast_expression "(code **)(puVar3 + 0x6ffdc)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar3 + 0x6ffdc)" (( "(") (binary_expression "puVar3 + 0x6ffdc" (identifier "puVar3") (+ "+") (number_literal "0x6ffdc")) () ")"))))) (; ";")) (expression_statement "unaff_s3 = piVar7;" (assignment_expression "unaff_s3 = piVar7" (identifier "unaff_s3") (= "=") (identifier "piVar7")) (; ";")) (expression_statement "param_1 = piVar10;" (assignment_expression "param_1 = piVar10" (identifier "param_1") (= "=") (identifier "piVar10")) (; ";")) (expression_statement "puVar4 = param_2;" (assignment_expression "puVar4 = param_2" (identifier "puVar4") (= "=") (identifier "param_2")) (; ";")) (if_statement "if (*piVar7 < (int)piVar12) goto LAB_0002772c;" (if "if") (parenthesized_expression "(*piVar7 < (int)piVar12)" (( "(") (binary_expression "*piVar7 < (int)piVar12" (pointer_expression "*piVar7" (* "*") (identifier "piVar7")) (< "<") (cast_expression "(int)piVar12" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar12"))) () ")")) (goto_statement "goto LAB_0002772c;" (goto "goto") (statement_identifier "LAB_0002772c") (; ";"))) (expression_statement "piVar10 = (int *)piVar7[2];" (assignment_expression "piVar10 = (int *)piVar7[2]" (identifier "piVar10") (= "=") (cast_expression "(int *)piVar7[2]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "piVar7[2]" (identifier "piVar7") ([ "[") (number_literal "2") (] "]")))) (; ";")) (} "}")))) (expression_statement "pcVar13 = *(code **)(puVar14 + -0x7d98);" (assignment_expression "pcVar13 = *(code **)(puVar14 + -0x7d98)" (identifier "pcVar13") (= "=") (pointer_expression "*(code **)(puVar14 + -0x7d98)" (* "*") (cast_expression "(code **)(puVar14 + -0x7d98)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar14 + -0x7d98)" (( "(") (binary_expression "puVar14 + -0x7d98" (identifier "puVar14") (+ "+") (number_literal "-0x7d98")) () ")"))))) (; ";")) (expression_statement "uVar8 = *(undefined4 *)(puVar4 + 8);" (assignment_expression "uVar8 = *(undefined4 *)(puVar4 + 8)" (identifier "uVar8") (= "=") (pointer_expression "*(undefined4 *)(puVar4 + 8)" (* "*") (cast_expression "(undefined4 *)(puVar4 + 8)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar4 + 8)" (( "(") (binary_expression "puVar4 + 8" (identifier "puVar4") (+ "+") (number_literal "8")) () ")"))))) (; ";")) (expression_statement "*(int **)(puVar15 + -0x30) = param_1;" (assignment_expression "*(int **)(puVar15 + -0x30) = param_1" (pointer_expression "*(int **)(puVar15 + -0x30)" (* "*") (cast_expression "(int **)(puVar15 + -0x30)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar15 + -0x30)" (( "(") (binary_expression "puVar15 + -0x30" (identifier "puVar15") (+ "+") (number_literal "-0x30")) () ")")))) (= "=") (identifier "param_1")) (; ";")) (expression_statement "puVar4 = (undefined *)(*pcVar13)(piVar10,0,uVar8,piVar12);" (assignment_expression "puVar4 = (undefined *)(*pcVar13)(piVar10,0,uVar8,piVar12)" (identifier "puVar4") (= "=") (cast_expression "(undefined *)(*pcVar13)(piVar10,0,uVar8,piVar12)" (( "(") (type_descriptor "undefined *" (type_identifier "undefined") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "(*pcVar13)(piVar10,0,uVar8,piVar12)" (parenthesized_expression "(*pcVar13)" (( "(") (pointer_expression "*pcVar13" (* "*") (identifier "pcVar13")) () ")")) (argument_list "(piVar10,0,uVar8,piVar12)" (( "(") (identifier "piVar10") (, ",") (number_literal "0") (, ",") (identifier "uVar8") (, ",") (identifier "piVar12") () ")"))))) (; ";")) (expression_statement "piVar9 = piVar10 + (int)((int)piVar12 + -1);" (assignment_expression "piVar9 = piVar10 + (int)((int)piVar12 + -1)" (identifier "piVar9") (= "=") (binary_expression "piVar10 + (int)((int)piVar12 + -1)" (identifier "piVar10") (+ "+") (cast_expression "(int)((int)piVar12 + -1)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "((int)piVar12 + -1)" (( "(") (binary_expression "(int)piVar12 + -1" (cast_expression "(int)piVar12" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar12")) (+ "+") (number_literal "-1")) () ")"))))) (; ";")) (if_statement "if (puVar4 == (undefined *)0x0) {\n    uVar6 = (uint)(*piVar9 == 0);\n    if ((int)param_3 < 0) {\n      iVar2 = uVar6 - (int)piVar12;\n      goto LAB_00027684;\n    }\n  }\n  else {\n    if ((int)param_3 < 0) {\n      do {\n        iVar2 = *piVar10;\n        *piVar10 = iVar2 + 1;\n        piVar10 = piVar10 + 1;\n      } while (iVar2 + 1 == 0);\n      puVar4 = (undefined *)((int)param_1 - (int)puVar4);\n      iVar2 = (uint)(*piVar9 == 0) - (int)piVar12;\n      goto LAB_00027684;\n    }\n    uVar6 = (uint)(*piVar9 == 0);\n  }" (if "if") (parenthesized_expression "(puVar4 == (undefined *)0x0)" (( "(") (binary_expression "puVar4 == (undefined *)0x0" (identifier "puVar4") (== "==") (cast_expression "(undefined *)0x0" (( "(") (type_descriptor "undefined *" (type_identifier "undefined") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n    uVar6 = (uint)(*piVar9 == 0);\n    if ((int)param_3 < 0) {\n      iVar2 = uVar6 - (int)piVar12;\n      goto LAB_00027684;\n    }\n  }" ({ "{") (expression_statement "uVar6 = (uint)(*piVar9 == 0);" (assignment_expression "uVar6 = (uint)(*piVar9 == 0)" (identifier "uVar6") (= "=") (call_expression "(uint)(*piVar9 == 0)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(*piVar9 == 0)" (( "(") (binary_expression "*piVar9 == 0" (pointer_expression "*piVar9" (* "*") (identifier "piVar9")) (== "==") (number_literal "0")) () ")")))) (; ";")) (if_statement "if ((int)param_3 < 0) {\n      iVar2 = uVar6 - (int)piVar12;\n      goto LAB_00027684;\n    }" (if "if") (parenthesized_expression "((int)param_3 < 0)" (( "(") (binary_expression "(int)param_3 < 0" (cast_expression "(int)param_3" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_3")) (< "<") (number_literal "0")) () ")")) (compound_statement "{\n      iVar2 = uVar6 - (int)piVar12;\n      goto LAB_00027684;\n    }" ({ "{") (expression_statement "iVar2 = uVar6 - (int)piVar12;" (assignment_expression "iVar2 = uVar6 - (int)piVar12" (identifier "iVar2") (= "=") (binary_expression "uVar6 - (int)piVar12" (identifier "uVar6") (- "-") (cast_expression "(int)piVar12" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar12")))) (; ";")) (goto_statement "goto LAB_00027684;" (goto "goto") (statement_identifier "LAB_00027684") (; ";")) (} "}"))) (} "}")) (else_clause "else {\n    if ((int)param_3 < 0) {\n      do {\n        iVar2 = *piVar10;\n        *piVar10 = iVar2 + 1;\n        piVar10 = piVar10 + 1;\n      } while (iVar2 + 1 == 0);\n      puVar4 = (undefined *)((int)param_1 - (int)puVar4);\n      iVar2 = (uint)(*piVar9 == 0) - (int)piVar12;\n      goto LAB_00027684;\n    }\n    uVar6 = (uint)(*piVar9 == 0);\n  }" (else "else") (compound_statement "{\n    if ((int)param_3 < 0) {\n      do {\n        iVar2 = *piVar10;\n        *piVar10 = iVar2 + 1;\n        piVar10 = piVar10 + 1;\n      } while (iVar2 + 1 == 0);\n      puVar4 = (undefined *)((int)param_1 - (int)puVar4);\n      iVar2 = (uint)(*piVar9 == 0) - (int)piVar12;\n      goto LAB_00027684;\n    }\n    uVar6 = (uint)(*piVar9 == 0);\n  }" ({ "{") (if_statement "if ((int)param_3 < 0) {\n      do {\n        iVar2 = *piVar10;\n        *piVar10 = iVar2 + 1;\n        piVar10 = piVar10 + 1;\n      } while (iVar2 + 1 == 0);\n      puVar4 = (undefined *)((int)param_1 - (int)puVar4);\n      iVar2 = (uint)(*piVar9 == 0) - (int)piVar12;\n      goto LAB_00027684;\n    }" (if "if") (parenthesized_expression "((int)param_3 < 0)" (( "(") (binary_expression "(int)param_3 < 0" (cast_expression "(int)param_3" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_3")) (< "<") (number_literal "0")) () ")")) (compound_statement "{\n      do {\n        iVar2 = *piVar10;\n        *piVar10 = iVar2 + 1;\n        piVar10 = piVar10 + 1;\n      } while (iVar2 + 1 == 0);\n      puVar4 = (undefined *)((int)param_1 - (int)puVar4);\n      iVar2 = (uint)(*piVar9 == 0) - (int)piVar12;\n      goto LAB_00027684;\n    }" ({ "{") (do_statement "do {\n        iVar2 = *piVar10;\n        *piVar10 = iVar2 + 1;\n        piVar10 = piVar10 + 1;\n      } while (iVar2 + 1 == 0);" (do "do") (compound_statement "{\n        iVar2 = *piVar10;\n        *piVar10 = iVar2 + 1;\n        piVar10 = piVar10 + 1;\n      }" ({ "{") (expression_statement "iVar2 = *piVar10;" (assignment_expression "iVar2 = *piVar10" (identifier "iVar2") (= "=") (pointer_expression "*piVar10" (* "*") (identifier "piVar10"))) (; ";")) (expression_statement "*piVar10 = iVar2 + 1;" (assignment_expression "*piVar10 = iVar2 + 1" (pointer_expression "*piVar10" (* "*") (identifier "piVar10")) (= "=") (binary_expression "iVar2 + 1" (identifier "iVar2") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "piVar10 = piVar10 + 1;" (assignment_expression "piVar10 = piVar10 + 1" (identifier "piVar10") (= "=") (binary_expression "piVar10 + 1" (identifier "piVar10") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(iVar2 + 1 == 0)" (( "(") (binary_expression "iVar2 + 1 == 0" (binary_expression "iVar2 + 1" (identifier "iVar2") (+ "+") (number_literal "1")) (== "==") (number_literal "0")) () ")")) (; ";")) (expression_statement "puVar4 = (undefined *)((int)param_1 - (int)puVar4);" (assignment_expression "puVar4 = (undefined *)((int)param_1 - (int)puVar4)" (identifier "puVar4") (= "=") (cast_expression "(undefined *)((int)param_1 - (int)puVar4)" (( "(") (type_descriptor "undefined *" (type_identifier "undefined") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)param_1 - (int)puVar4)" (( "(") (binary_expression "(int)param_1 - (int)puVar4" (cast_expression "(int)param_1" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_1")) (- "-") (cast_expression "(int)puVar4" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar4"))) () ")")))) (; ";")) (expression_statement "iVar2 = (uint)(*piVar9 == 0) - (int)piVar12;" (assignment_expression "iVar2 = (uint)(*piVar9 == 0) - (int)piVar12" (identifier "iVar2") (= "=") (binary_expression "(uint)(*piVar9 == 0) - (int)piVar12" (call_expression "(uint)(*piVar9 == 0)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(*piVar9 == 0)" (( "(") (binary_expression "*piVar9 == 0" (pointer_expression "*piVar9" (* "*") (identifier "piVar9")) (== "==") (number_literal "0")) () ")"))) (- "-") (cast_expression "(int)piVar12" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar12")))) (; ";")) (goto_statement "goto LAB_00027684;" (goto "goto") (statement_identifier "LAB_00027684") (; ";")) (} "}"))) (expression_statement "uVar6 = (uint)(*piVar9 == 0);" (assignment_expression "uVar6 = (uint)(*piVar9 == 0)" (identifier "uVar6") (= "=") (call_expression "(uint)(*piVar9 == 0)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(*piVar9 == 0)" (( "(") (binary_expression "*piVar9 == 0" (pointer_expression "*piVar9" (* "*") (identifier "piVar9")) (== "==") (number_literal "0")) () ")")))) (; ";")) (} "}")))) (expression_statement "iVar2 = (int)piVar12 - uVar6;" (assignment_expression "iVar2 = (int)piVar12 - uVar6" (identifier "iVar2") (= "=") (binary_expression "(int)piVar12 - uVar6" (cast_expression "(int)piVar12" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar12")) (- "-") (identifier "uVar6"))) (; ";")) (labeled_statement "LAB_00027684:\n  unaff_s3[1] = iVar2;" (statement_identifier "LAB_00027684") (: ":") (expression_statement "unaff_s3[1] = iVar2;" (assignment_expression "unaff_s3[1] = iVar2" (subscript_expression "unaff_s3[1]" (identifier "unaff_s3") ([ "[") (number_literal "1") (] "]")) (= "=") (identifier "iVar2")) (; ";"))) (return_statement "return puVar4;" (return "return") (identifier "puVar4") (; ";")) (} "}")))

type_1 function_1(type_2 x,type_3 var_3,type_1 var_1)

{
  int var_9;
  type_2 var_14;
  type_4 *puVar3;
  type_1 var_17;
  type_5 *var_12;
  type_3 pmVar6;
  type_6 var_18;
  type_5 *pmVar8;
  int *piVar9;
  type_5 *pmVar10;
  type_5 var_5;
  type_2 p_Var12;
  int *var_16;
  type_3 var_4;
  int var_7;
  type_2 p_Var16;
  int var_6;
  type_5 *unaff_s3;
  type_3 pmVar18;
  type_7 *var_13;
  type_8 *pcVar20;
  type_7 *var_15;
  type_4 *var_10;
  type_9 uVar23;
  type_4 var_8 [24];
  type_10 *var_11;
  type_11 x1;
  type_11 x2;
  
  pmVar18 = (type_3)PTR___stack_chk_guard_00097540;
  var_10 = var_8;
  var_12 = *(type_5 **)PTR___stack_chk_guard_00097540;
  if (var_1 < 0x14) {
    if (var_1 < 3) {
      var_7 = 4;
      var_6 = 4;
      p_Var12 = (type_2)&var_2;
    }
    else {
      var_4 = var_3 + 1;
      p_Var12 = (type_2)&var_2;
      do {
        var_5 = *var_4;
        var_4 = var_4 + 1;
        var_5 = (*(type_8 *)PTR___gmpn_mul_1_000970a4)(var_3,var_3,p_Var12,var_5);
        pmVar6 = var_3 + (int)p_Var12;
        p_Var12 = (type_2)((int)&p_Var12->_mp_alloc + (type_6)(var_5 != 0));
        *pmVar6 = var_5;
      } while (var_3 + var_1 + -1 != var_4);
      var_7 = (int)p_Var12 * 4;
      var_6 = (var_1 + -1) * 4;
    }
    if ((int)p_Var12 < x->_mp_alloc) {
      unaff_s3 = x->_mp_d;
    }
    else {
      unaff_s3 = (type_5 *)
                 (*(type_8 *)PTR___gmpz_realloc_000975bc)
                           (x,(type_4 *)((int)&p_Var12->_mp_alloc + 1));
    }
    var_1 = (int)var_3 + var_6;
    p_Var16 = (type_2)((int)unaff_s3 + var_7);
    var_14 = p_Var12;
    var_7 = (*(type_8 *)PTR___gmpn_mul_1_000970a4)(unaff_s3,var_3,p_Var12,((type_2)var_1)->_mp_alloc);
    puVar3 = (type_4 *)((int)&p_Var12->_mp_alloc + (type_6)(var_7 != 0));
    p_Var16->_mp_alloc = var_7;
    x->_mp_size = (int)puVar3;
    var_10 = var_8;
  }
  else {
    var_6 = var_1 >> 1;
    var_11 = (type_10 *)0x0;
    var_7 = var_1 - var_6;
    x2[0]._mp_alloc = var_7;
    if ((type_6)(var_7 * 4) < 0x7f01) {
      var_9 = -(var_7 * 4 + 7U & 0xfffffff8);
      var_10 = var_8 + var_9;
      x2[0]._mp_d = (type_5 *)((int)x2 + var_9 + -0x20);
    }
    else {
      x2[0]._mp_d = (type_5 *)(*(type_8 *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&var_11);
    }
    x1[0]._mp_d = var_3 + var_6;
    x1[0]._mp_alloc = var_7;
    p_Var16 = (type_2)function_1(x2,x1[0]._mp_d,var_7);
    var_14 = (type_2)function_1(x1,var_3,var_6);
    p_Var12 = (type_2)((int)&var_14->_mp_alloc + (int)&p_Var16->_mp_alloc);
    if (x->_mp_alloc < (int)p_Var12) {
      pmVar8 = (type_5 *)(*(type_8 *)PTR___gmpz_realloc_000975bc)(x,p_Var12);
    }
    else {
      pmVar8 = x->_mp_d;
    }
    var_3 = x2[0]._mp_d;
    pmVar10 = x1[0]._mp_d;
    if ((int)var_14 < (int)p_Var16) {
      *(type_2 *)(var_10 + 0x10) = var_14;
      var_14 = p_Var16;
      var_7 = (*(type_8 *)PTR___gmpn_mul_000972b4)(pmVar8,var_3,p_Var16,pmVar10);
    }
    else {
      *(type_2 *)(var_10 + 0x10) = p_Var16;
      var_7 = (*(type_8 *)PTR___gmpn_mul_000972b4)();
      var_3 = pmVar10;
    }
    if (var_11 != (type_10 *)0x0) {
      (*(type_8 *)PTR___gmp_tmp_reentrant_free_00097614)();
    }
    puVar3 = (type_4 *)((int)p_Var12 - (type_6)(var_7 == 0));
    x->_mp_size = (int)puVar3;
  }
  if (var_12 == (type_5 *)*pmVar18) {
    return (type_1)puVar3;
  }
  uVar23 = 0x275d4;
  var_13 = PTR___stack_chk_fail_000974d0;
  (*(type_8 *)PTR___stack_chk_fail_000974d0)();
  var_15 = var_13 + 0x77a60;
  *(type_7 **)(var_10 + -0x28) = var_15;
  *(type_9 *)(var_10 + -4) = uVar23;
  *(type_3 *)(var_10 + -8) = pmVar18;
  *(type_2 *)(var_10 + -0xc) = x;
  *(type_5 **)(var_10 + -0x10) = unaff_s3;
  *(type_1 *)(var_10 + -0x14) = var_1;
  *(type_2 *)(var_10 + -0x18) = p_Var16;
  *(type_2 *)(var_10 + -0x1c) = p_Var12;
  if (var_14 == (type_2)0x0) {
    pcVar20 = *(type_8 **)(var_13 + 0x6fffc);
    (*pcVar20)();
LAB_0002772c:
    var_16 = (int *)(*pcVar20)(unaff_s3,p_Var16);
    var_15 = *(type_7 **)(var_10 + -0x28);
  }
  else {
    var_1 = var_3[1];
    if ((type_2)var_1 == (type_2)0x0) {
      var_12[1] = 0;
      return 0;
    }
    p_Var16 = (type_2)var_1;
    if (var_1 < 0) {
      p_Var16 = (type_2)-var_1;
    }
    pcVar20 = *(type_8 **)(var_13 + 0x6ffdc);
    unaff_s3 = var_12;
    x = var_14;
    pmVar18 = var_3;
    if ((int)*var_12 < (int)p_Var16) goto LAB_0002772c;
    var_16 = (int *)var_12[2];
  }
  pcVar20 = *(type_8 **)(var_15 + -0x7d98);
  var_5 = pmVar18[2];
  *(type_2 *)(var_10 + -0x30) = x;
  var_17 = (*pcVar20)(var_16,0,var_5,p_Var16);
  piVar9 = var_16 + (int)((int)&p_Var16[-1]._mp_d + 3);
  if (var_17 == 0) {
    var_18 = (type_6)(*piVar9 == 0);
    if (var_1 < 0) {
      var_5 = var_18 - (int)p_Var16;
      goto LAB_00027684;
    }
  }
  else {
    if (var_1 < 0) {
      do {
        var_7 = *var_16;
        *var_16 = var_7 + 1;
        var_16 = var_16 + 1;
      } while (var_7 + 1 == 0);
      var_17 = (int)x - var_17;
      var_5 = (type_6)(*piVar9 == 0) - (int)p_Var16;
      goto LAB_00027684;
    }
    var_18 = (type_6)(*piVar9 == 0);
  }
  var_5 = (int)p_Var16 - var_18;
LAB_00027684:
  unaff_s3[1] = var_5;
  return var_17;
}


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

undefined * MASKED(int *param_1,undefined *param_2,int *param_3)

{
  int iVar1;
  int iVar2;
  undefined *puVar3;
  undefined *puVar4;
  int iVar5;
  uint uVar6;
  int *piVar7;
  undefined4 uVar8;
  int *piVar9;
  int *piVar10;
  undefined4 *puVar11;
  int *piVar12;
  int *unaff_s3;
  code *pcVar13;
  undefined *puVar14;
  undefined1 *puVar15;
  undefined1 auStack_70 [24];
  int local_48;
  int local_44 [2];
  undefined *local_3c;
  int local_38 [2];
  undefined *local_30;
  int *local_2c;
  
  puVar4 = PTR___stack_chk_guard_00097540;
  puVar15 = auStack_70;
  local_2c = *(int **)PTR___stack_chk_guard_00097540;
  if ((int)param_3 < 0x14) {
    if ((int)param_3 < 3) {
      iVar2 = 4;
      iVar5 = 4;
      piVar9 = (int *)0x1;
    }
    else {
      puVar11 = (undefined4 *)(param_2 + 4);
      piVar9 = (int *)0x1;
      do {
        uVar8 = *puVar11;
        puVar11 = puVar11 + 1;
        iVar2 = (*(code *)PTR___gmpn_mul_1_000970a4)(param_2,param_2,piVar9,uVar8);
        iVar5 = (int)piVar9 * 4;
        piVar9 = (int *)((int)piVar9 + (uint)(iVar2 != 0));
        *(int *)(param_2 + iVar5) = iVar2;
      } while ((undefined4 *)(param_2 + (int)param_3 * 4 + -4) != puVar11);
      iVar2 = (int)piVar9 * 4;
      iVar5 = (int)((int)param_3 + -1) * 4;
    }
    if ((int)piVar9 < *param_1) {
      unaff_s3 = (int *)param_1[2];
    }
    else {
      unaff_s3 = (int *)(*(code *)PTR___gmpz_realloc_000975bc)
                                  (param_1,(undefined *)((int)piVar9 + 1));
    }
    param_3 = (int *)(param_2 + iVar5);
    piVar12 = (int *)((int)unaff_s3 + iVar2);
    piVar10 = piVar9;
    iVar2 = (*(code *)PTR___gmpn_mul_1_000970a4)(unaff_s3,param_2,piVar9,*param_3);
    puVar3 = (undefined *)((uint)(iVar2 != 0) + (int)piVar9);
    *piVar12 = iVar2;
    param_1[1] = (int)puVar3;
    puVar15 = auStack_70;
  }
  else {
    iVar5 = (int)param_3 >> 1;
    local_48 = 0;
    iVar2 = (int)param_3 - iVar5;
    local_38[0] = iVar2;
    if ((uint)(iVar2 * 4) < 0x7f01) {
      iVar1 = -(iVar2 * 4 + 7U & 0xfffffff8);
      puVar15 = auStack_70 + iVar1;
      local_30 = (undefined *)((int)local_38 + iVar1 + -0x20);
    }
    else {
      local_30 = (undefined *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_48);
    }
    local_3c = param_2 + iVar5 * 4;
    local_44[0] = iVar2;
    piVar12 = (int *)MASKED(local_38);
    piVar10 = (int *)MASKED(local_44,param_2,iVar5);
    piVar9 = (int *)((int)piVar12 + (int)piVar10);
    if (*param_1 < (int)piVar9) {
      iVar2 = (*(code *)PTR___gmpz_realloc_000975bc)(param_1,piVar9);
    }
    else {
      iVar2 = param_1[2];
    }
    param_2 = local_30;
    puVar3 = local_3c;
    if ((int)piVar10 < (int)piVar12) {
      *(int **)(puVar15 + 0x10) = piVar10;
      piVar10 = piVar12;
      iVar2 = (*(code *)PTR___gmpn_mul_000972b4)(iVar2,param_2,piVar12,puVar3);
    }
    else {
      *(int **)(puVar15 + 0x10) = piVar12;
      iVar2 = (*(code *)PTR___gmpn_mul_000972b4)();
      param_2 = puVar3;
    }
    if (local_48 != 0) {
      (*(code *)PTR___gmp_tmp_reentrant_free_00097614)();
    }
    puVar3 = (undefined *)((int)piVar9 - (uint)(iVar2 == 0));
    param_1[1] = (int)puVar3;
  }
  if (local_2c == *(int **)puVar4) {
    return puVar3;
  }
  uVar8 = 0x275d4;
  piVar7 = local_2c;
  puVar3 = PTR___stack_chk_fail_000974d0;
  (*(code *)PTR___stack_chk_fail_000974d0)();
  puVar14 = puVar3 + 0x77a60;
  *(undefined **)(puVar15 + -0x28) = puVar14;
  *(undefined4 *)(puVar15 + -4) = uVar8;
  *(undefined **)(puVar15 + -8) = puVar4;
  *(int **)(puVar15 + -0xc) = param_1;
  *(int **)(puVar15 + -0x10) = unaff_s3;
  *(int **)(puVar15 + -0x14) = param_3;
  *(int **)(puVar15 + -0x18) = piVar12;
  *(int **)(puVar15 + -0x1c) = piVar9;
  if (piVar10 == (int *)0x0) {
    pcVar13 = *(code **)(puVar3 + 0x6fffc);
    (*pcVar13)();
LAB_0002772c:
    piVar10 = (int *)(*pcVar13)(unaff_s3,piVar12);
    puVar14 = *(undefined **)(puVar15 + -0x28);
  }
  else {
    param_3 = *(int **)(param_2 + 4);
    if (param_3 == (int *)0x0) {
      piVar7[1] = 0;
      return (undefined *)0x0;
    }
    piVar12 = param_3;
    if ((int)param_3 < 0) {
      piVar12 = (int *)-(int)param_3;
    }
    pcVar13 = *(code **)(puVar3 + 0x6ffdc);
    unaff_s3 = piVar7;
    param_1 = piVar10;
    puVar4 = param_2;
    if (*piVar7 < (int)piVar12) goto LAB_0002772c;
    piVar10 = (int *)piVar7[2];
  }
  pcVar13 = *(code **)(puVar14 + -0x7d98);
  uVar8 = *(undefined4 *)(puVar4 + 8);
  *(int **)(puVar15 + -0x30) = param_1;
  puVar4 = (undefined *)(*pcVar13)(piVar10,0,uVar8,piVar12);
  piVar9 = piVar10 + (int)((int)piVar12 + -1);
  if (puVar4 == (undefined *)0x0) {
    uVar6 = (uint)(*piVar9 == 0);
    if ((int)param_3 < 0) {
      iVar2 = uVar6 - (int)piVar12;
      goto LAB_00027684;
    }
  }
  else {
    if ((int)param_3 < 0) {
      do {
        iVar2 = *piVar10;
        *piVar10 = iVar2 + 1;
        piVar10 = piVar10 + 1;
      } while (iVar2 + 1 == 0);
      puVar4 = (undefined *)((int)param_1 - (int)puVar4);
      iVar2 = (uint)(*piVar9 == 0) - (int)piVar12;
      goto LAB_00027684;
    }
    uVar6 = (uint)(*piVar9 == 0);
  }
  iVar2 = (int)piVar12 - uVar6;
LAB_00027684:
  unaff_s3[1] = iVar2;
  return puVar4;
}

