
mp_bitcnt_t __gmpz_remove(mpz_ptr dest,mpz_srcptr src,mpz_srcptr f)

{
  undefined *puVar1;
  mpz_ptr p_Var2;
  mpz_ptr p_Var3;
  int iVar4;
  uint uVar5;
  int iVar6;
  int *piVar7;
  mp_limb_t *pmVar8;
  mpz_srcptr p_Var9;
  uint *puVar10;
  uint uVar11;
  uint uVar12;
  uint uVar13;
  __mpz_struct (*pa_Var14) [1];
  mp_size_t dn;
  mpz_t x;
  mpz_t rem;
  __mpz_struct fpow [32] [1];
  
  puVar1 = PTR___stack_chk_guard_00097540;
  puVar10 = f->_mp_d;
  uVar11 = f->_mp_size;
  p_Var2 = *(mpz_ptr *)PTR___stack_chk_guard_00097540;
  uVar13 = src->_mp_size;
  uVar12 = -uVar11;
  if (-1 < (int)uVar11) {
    uVar12 = uVar11;
  }
  uVar5 = *puVar10;
  if (((int)(uint)(uVar5 == 1) < (int)uVar12) && (uVar13 != 0)) {
    if ((uVar5 & 1) == 0) {
      if ((uVar5 == 2) == uVar12) {
        p_Var3 = (mpz_ptr)(*(code *)PTR___gmpz_scan1_00097608)(src,0);
        f = p_Var3;
        (*(code *)PTR___gmpz_fdiv_q_2exp_00097438)(dest);
        if ((uVar11 >> 0x1f & (uint)p_Var3) != 0) {
          iVar6 = -dest->_mp_size;
          goto LAB_00032004;
        }
      }
      else {
        (*(code *)PTR___gmpz_init_00097130)(rem);
        (*(code *)PTR___gmpz_init_00097130)(x);
        p_Var9 = src;
        (*(code *)PTR___gmpz_tdiv_qr_000975d4)(x,rem,src,f);
        if (rem[0]._mp_size == 0) {
          (*(code *)PTR___gmpz_init_set_000975ec)(fpow,f);
          (*(code *)PTR___gmpz_swap_00097468)(dest,x);
          if (fpow[0][0]._mp_size < 0) {
            fpow[0][0]._mp_size = -fpow[0][0]._mp_size;
          }
          iVar6 = dest->_mp_size;
          if (iVar6 < 0) {
            iVar6 = -iVar6;
          }
          if (iVar6 < fpow[0][0]._mp_size * 2 + -1) {
            p_Var3 = (mpz_ptr)&DAT_00000001;
            uVar12 = 0;
          }
          else {
            pa_Var14 = fpow;
            uVar11 = 1;
            do {
              uVar12 = uVar11;
              pa_Var14 = pa_Var14 + 1;
              (*(code *)PTR___gmpz_init_00097130)(pa_Var14);
              (*(code *)PTR___gmpz_mul_00097498)(pa_Var14,pa_Var14 + -1);
              (*(code *)PTR___gmpz_tdiv_qr_000975d4)(x,rem,dest,pa_Var14);
              if (rem[0]._mp_size != 0) {
                (*(code *)PTR___gmpz_clear_00097308)(pa_Var14);
                p_Var3 = (mpz_ptr)((1 << (uVar12 & 0x1f)) + -1);
                uVar12 = uVar12 - 1;
                goto LAB_000321c4;
              }
              (*(code *)PTR___gmpz_swap_00097468)(dest,x);
              iVar6 = dest->_mp_size;
              if (iVar6 < 0) {
                iVar6 = -iVar6;
              }
              iVar4 = (*pa_Var14)[0]._mp_size;
              if (iVar4 < 0) {
                iVar4 = -iVar4;
              }
              uVar11 = uVar12 + 1;
            } while (iVar4 * 2 + -1 <= iVar6);
            p_Var3 = (mpz_ptr)((1 << (uVar12 + 1 & 0x1f)) + -1);
          }
LAB_000321c4:
          pa_Var14 = fpow + uVar12;
          do {
            src = rem;
            p_Var9 = dest;
            (*(code *)PTR___gmpz_tdiv_qr_000975d4)(x,rem,dest,pa_Var14);
            if (rem[0]._mp_size == 0) {
              p_Var3 = (mpz_ptr)((int)&p_Var3->_mp_alloc + (1 << (uVar12 & 0x1f)));
              src = x;
              (*(code *)PTR___gmpz_swap_00097468)(dest);
            }
            uVar12 = uVar12 - 1;
            (*(code *)PTR___gmpz_clear_00097308)(pa_Var14);
            pa_Var14 = pa_Var14 + -1;
          } while (uVar12 != 0xffffffff);
        }
        else {
          (*(code *)PTR___gmpz_set_000974b8)(dest);
          p_Var3 = (mpz_ptr)0x0;
        }
        (*(code *)PTR___gmpz_clear_00097308)(x);
        (*(code *)PTR___gmpz_clear_00097308)(rem);
        f = p_Var9;
      }
    }
    else {
      dn = uVar13;
      if ((int)uVar13 < 0) {
        dn = -uVar13;
      }
      if (dest->_mp_alloc < dn) {
        pmVar8 = (mp_limb_t *)(*(code *)PTR___gmpz_realloc_000975bc)(dest,dn);
        puVar10 = f->_mp_d;
      }
      else {
        pmVar8 = dest->_mp_d;
      }
      f = (mpz_srcptr)src->_mp_d;
      src = (mpz_srcptr)&dn;
      p_Var3 = (mpz_ptr)(*(code *)PTR___gmpn_remove_00097294)
                                  (pmVar8,src,f,dn,puVar10,uVar12,0xffffffff);
      iVar6 = dn;
      if ((uVar11 >> 0x1f & (uint)p_Var3) != uVar13 >> 0x1f) {
        iVar6 = -dn;
      }
LAB_00032004:
      dest->_mp_size = iVar6;
    }
  }
  else {
    if (uVar11 == 0) goto LAB_0003232c;
    p_Var3 = (mpz_ptr)0x0;
    (*(code *)PTR___gmpz_set_000974b8)(dest);
  }
  if (p_Var2 == *(mpz_ptr *)puVar1) {
    return (mp_bitcnt_t)p_Var3;
  }
  (*(code *)PTR___stack_chk_fail_000974d0)();
  dest = p_Var2;
LAB_0003232c:
  (*(code *)PTR___gmp_divide_by_zero_000975dc)();
  p_Var2 = f;
  if ((int)f < 0) {
    p_Var2 = (mpz_ptr)-(int)f;
  }
  if (f == (mpz_ptr)0x0) {
    dest->_mp_alloc = 0;
    p_Var2 = (mpz_ptr)0x0;
  }
  else {
    if (*(int *)((int)src + (int)p_Var2 * 4 + -4) == 0) {
      piVar7 = &src->_mp_alloc + (int)p_Var2;
      do {
        p_Var2 = (mpz_ptr)((int)&p_Var2[-1]._mp_d + 3);
        if (p_Var2 == (mpz_ptr)0x0) break;
        pmVar8 = (mp_limb_t *)(piVar7 + -2);
        piVar7 = piVar7 + -1;
      } while (*pmVar8 == 0);
    }
    dest->_mp_alloc = 0;
    if ((int)f < 0) {
      p_Var2 = (mpz_ptr)-(int)p_Var2;
    }
  }
  dest->_mp_size = (int)p_Var2;
  dest->_mp_d = (mp_limb_t *)src;
  return (mp_bitcnt_t)dest;
}



uint * __gmpz_remove(uint *param_1,uint *param_2,uint *param_3)

{
  uint *puVar1;
  undefined *puVar2;
  int iVar3;
  uint uVar4;
  uint uVar5;
  uint *puVar6;
  uint *puVar7;
  uint uVar8;
  undefined1 *puVar9;
  uint uVar10;
  uint local_1c8;
  uint auStack_1c4 [3];
  uint uStack_1b8;
  int local_1b4;
  undefined1 auStack_1ac [4];
  int local_1a8;
  undefined1 auStack_1a0 [372];
  uint *local_2c;
  
  puVar2 = PTR___stack_chk_guard_00097540;
  puVar7 = (uint *)param_3[2];
  uVar8 = param_3[1];
  local_2c = *(uint **)PTR___stack_chk_guard_00097540;
  uVar10 = param_2[1];
  uVar5 = -uVar8;
  if (-1 < (int)uVar8) {
    uVar5 = uVar8;
  }
  uVar4 = *puVar7;
  if (((int)(uint)(uVar4 == 1) < (int)uVar5) && (uVar10 != 0)) {
    if ((uVar4 & 1) == 0) {
      if ((uVar4 == 2) == uVar5) {
        puVar7 = (uint *)(*(code *)PTR___gmpz_scan1_00097608)(param_2,0);
        param_3 = puVar7;
        (*(code *)PTR___gmpz_fdiv_q_2exp_00097438)(param_1);
        if ((uVar8 >> 0x1f & (uint)puVar7) != 0) {
          uVar5 = -param_1[1];
          goto LAB_00032004;
        }
      }
      else {
        (*(code *)PTR___gmpz_init_00097130)(&uStack_1b8);
        (*(code *)PTR___gmpz_init_00097130)(auStack_1c4);
        puVar6 = param_2;
        (*(code *)PTR___gmpz_tdiv_qr_000975d4)(auStack_1c4,&uStack_1b8,param_2,param_3);
        if (local_1b4 == 0) {
          (*(code *)PTR___gmpz_init_set_000975ec)(auStack_1ac,param_3);
          (*(code *)PTR___gmpz_swap_00097468)(param_1,auStack_1c4);
          if (local_1a8 < 0) {
            local_1a8 = -local_1a8;
          }
          uVar5 = param_1[1];
          if ((int)uVar5 < 0) {
            uVar5 = -uVar5;
          }
          if ((int)uVar5 < local_1a8 * 2 + -1) {
            puVar7 = (uint *)0x1;
            uVar5 = 0;
          }
          else {
            puVar9 = auStack_1a0;
            uVar8 = 1;
            do {
              uVar5 = uVar8;
              (*(code *)PTR___gmpz_init_00097130)(puVar9);
              (*(code *)PTR___gmpz_mul_00097498)(puVar9,puVar9 + -0xc);
              (*(code *)PTR___gmpz_tdiv_qr_000975d4)(auStack_1c4,&uStack_1b8,param_1,puVar9);
              if (local_1b4 != 0) {
                (*(code *)PTR___gmpz_clear_00097308)(puVar9);
                puVar7 = (uint *)((1 << (uVar5 & 0x1f)) + -1);
                uVar5 = uVar5 - 1;
                goto LAB_000321c4;
              }
              (*(code *)PTR___gmpz_swap_00097468)(param_1,auStack_1c4);
              uVar10 = param_1[1];
              if ((int)uVar10 < 0) {
                uVar10 = -uVar10;
              }
              iVar3 = *(int *)(puVar9 + 4);
              if (iVar3 < 0) {
                iVar3 = -iVar3;
              }
              puVar9 = puVar9 + 0xc;
              uVar8 = uVar5 + 1;
            } while (iVar3 * 2 + -1 <= (int)uVar10);
            puVar7 = (uint *)((1 << (uVar5 + 1 & 0x1f)) + -1);
          }
LAB_000321c4:
          puVar9 = auStack_1ac + uVar5 * 0xc;
          do {
            param_2 = &uStack_1b8;
            puVar6 = param_1;
            (*(code *)PTR___gmpz_tdiv_qr_000975d4)(auStack_1c4,&uStack_1b8,param_1,puVar9);
            if (local_1b4 == 0) {
              puVar7 = (uint *)((int)puVar7 + (1 << (uVar5 & 0x1f)));
              param_2 = auStack_1c4;
              (*(code *)PTR___gmpz_swap_00097468)(param_1);
            }
            uVar5 = uVar5 - 1;
            (*(code *)PTR___gmpz_clear_00097308)(puVar9);
            puVar9 = puVar9 + -0xc;
          } while (uVar5 != 0xffffffff);
        }
        else {
          (*(code *)PTR___gmpz_set_000974b8)(param_1);
          puVar7 = (uint *)0x0;
        }
        (*(code *)PTR___gmpz_clear_00097308)(auStack_1c4);
        (*(code *)PTR___gmpz_clear_00097308)(&uStack_1b8);
        param_3 = puVar6;
      }
    }
    else {
      local_1c8 = uVar10;
      if ((int)uVar10 < 0) {
        local_1c8 = -uVar10;
      }
      if ((int)*param_1 < (int)local_1c8) {
        uVar4 = (*(code *)PTR___gmpz_realloc_000975bc)(param_1,local_1c8);
        puVar7 = (uint *)param_3[2];
      }
      else {
        uVar4 = param_1[2];
      }
      param_3 = (uint *)param_2[2];
      param_2 = &local_1c8;
      puVar7 = (uint *)(*(code *)PTR___gmpn_remove_00097294)
                                 (uVar4,param_2,param_3,local_1c8,puVar7,uVar5,0xffffffff);
      uVar5 = local_1c8;
      if ((uVar8 >> 0x1f & (uint)puVar7) != uVar10 >> 0x1f) {
        uVar5 = -local_1c8;
      }
LAB_00032004:
      param_1[1] = uVar5;
    }
  }
  else {
    if (uVar8 == 0) goto LAB_0003232c;
    puVar7 = (uint *)0x0;
    (*(code *)PTR___gmpz_set_000974b8)(param_1);
  }
  if (local_2c == *(uint **)puVar2) {
    return puVar7;
  }
  param_1 = local_2c;
  (*(code *)PTR___stack_chk_fail_000974d0)();
LAB_0003232c:
  (*(code *)PTR___gmp_divide_by_zero_000975dc)();
  puVar7 = param_3;
  if ((int)param_3 < 0) {
    puVar7 = (uint *)-(int)param_3;
  }
  if (param_3 == (uint *)0x0) {
    *param_1 = 0;
    puVar7 = (uint *)0x0;
  }
  else {
    if (param_2[(int)puVar7 + -1] == 0) {
      puVar6 = param_2 + (int)puVar7;
      do {
        puVar7 = (uint *)((int)puVar7 + -1);
        if (puVar7 == (uint *)0x0) break;
        puVar1 = puVar6 + -2;
        puVar6 = puVar6 + -1;
      } while (*puVar1 == 0);
    }
    *param_1 = 0;
    if ((int)param_3 < 0) {
      puVar7 = (uint *)-(int)puVar7;
    }
  }
  param_1[1] = (uint)puVar7;
  param_1[2] = (uint)param_2;
  return param_1;
}


lui gp,0x7
addiu gp,gp,-0x2ed0
addu gp,gp,t9
addiu sp,sp,-0x1f0
lw t0,0x8(a2)
sw s4,0x1d8(sp)
sw s0,0x1c8(sp)
lw s4,-0x7b00(gp)
lw s0,0x4(a2)
sw gp,0x20(sp)
sw s7,0x1e4(sp)
or s7,a2,zero
sw s6,0x1e0(sp)
or s6,a1,zero
sw s2,0x1d0(sp)
sw s1,0x1cc(sp)
or s1,a0,zero
sw ra,0x1ec(sp)
sw s8,0x1e8(sp)
sw s5,0x1dc(sp)
sw s3,0x1d4(sp)
lw v0,0x0(s4)
lw s2,0x4(a1)
sw v0,0x1c4(sp)
bltz s0,0x00031f7c
_subu s3,zero,s0
or s3,s0,zero
lw v1,0x0(t0)
xori v0,v1,0x1
sltiu v0,v0,0x1
slt v0,v0,s3
beq v0,zero,0x000322c0
_nop
beq s2,zero,0x000322c0
_andi s5,v1,0x1
beq s5,zero,0x00032048
_nop
bgez s2,0x00031fb0
_or a3,s2,zero
subu a3,zero,s2
lw v0,0x0(s1)
slt v0,v0,a3
bne v0,zero,0x000322f4
_sw a3,0x28(sp)
lw a0,0x8(s1)
lw a2,0x8(s6)
li v1,-0x1
lw t9,-0x7dac(gp)
addiu a1,sp,0x28
sw v1,0x18(sp)
srl s0,s0,0x1f
sw s3,0x14(sp)
srl s2,s2,0x1f
jalr t9
_sw t0,0x10(sp)
and s0,s0,v0
lw gp,0x20(sp)
or s5,v0,zero
beq s0,s2,0x00032004
_lw v0,0x28(sp)
subu v0,zero,v0
sw v0,0x4(s1)
lw a0,0x1c4(sp)
or v0,s5,zero
lw v1,0x0(s4)
bne a0,v1,0x00032320
_lw ra,0x1ec(sp)
lw s8,0x1e8(sp)
lw s7,0x1e4(sp)
lw s6,0x1e0(sp)
lw s5,0x1dc(sp)
lw s4,0x1d8(sp)
lw s3,0x1d4(sp)
lw s2,0x1d0(sp)
lw s1,0x1cc(sp)
lw s0,0x1c8(sp)
jr ra
_addiu sp,sp,0x1f0
xori v1,v1,0x2
sltiu v1,v1,0x1
beq v1,s3,0x00032278
_lw t9,-0x7f10(gp)
addiu s3,sp,0x38
addiu s2,sp,0x2c
jalr t9
_or a0,s3,zero
lw gp,0x20(sp)
lw t9,-0x7f10(gp)
jalr t9
_or a0,s2,zero
or a3,s7,zero
lw gp,0x20(sp)
or a2,s6,zero
or a1,s3,zero
lw t9,-0x7a6c(gp)
jalr t9
_or a0,s2,zero
lw s0,0x3c(sp)
bne s0,zero,0x00032240
_lw gp,0x20(sp)
lw t9,-0x7a54(gp)
addiu s6,sp,0x44
or a1,s7,zero
jalr t9
_or a0,s6,zero
or a1,s2,zero
lw gp,0x20(sp)
lw t9,-0x7bd8(gp)
jalr t9
_or a0,s1,zero
lw v0,0x48(sp)
bgez v0,0x000320d8
_lw gp,0x20(sp)
subu v0,zero,v0
lw v1,0x4(s1)
sll v0,v0,0x1
bgez v1,0x000320ec
_addiu v0,v0,-0x1
subu v1,zero,v1
slt v0,v1,v0
bne v0,zero,0x00032318
_nop
addiu s0,sp,0x50
b 0x00032154
_li s5,0x1
lw t9,-0x7bd8(gp)
or a0,s1,zero
or a1,s2,zero
jalr t9
_addiu s0,s0,0xc
addiu a0,s5,0x1
lw v1,0x4(s1)
bgez v1,0x0003212c
_lw gp,0x20(sp)
subu v1,zero,v1
lw v0,0x4(s7)
bgez v0,0x0003213c
_nop
subu v0,zero,v0
sll v0,v0,0x1
addiu v0,v0,-0x1
slt v0,v1,v0
bne v0,zero,0x000322e0
_nop
or s5,a0,zero
lw t9,-0x7f10(gp)
or a0,s0,zero
jalr t9
_or s7,s0,zero
addiu a2,s0,-0xc
lw gp,0x20(sp)
or a0,s0,zero
lw t9,-0x7ba8(gp)
jalr t9
_or a1,a2,zero
or a3,s0,zero
lw gp,0x20(sp)
or a2,s1,zero
or a1,s3,zero
lw t9,-0x7a6c(gp)
jalr t9
_or a0,s2,zero
lw v0,0x3c(sp)
beq v0,zero,0x00032104
_lw gp,0x20(sp)
lw t9,-0x7d38(gp)
or a0,s0,zero
jalr t9
_addiu s0,s5,-0x1
li v0,0x1
lw gp,0x20(sp)
sllv s5,v0,s5
addiu s5,s5,-0x1
sll v0,s0,0x1
li s8,0x1
addu v0,v0,s0
li s7,-0x1
sll v0,v0,0x2
b 0x000321fc
_addu s6,s6,v0
lw t9,-0x7d38(gp)
addiu s0,s0,-0x1
or a0,s6,zero
jalr t9
_addiu s6,s6,-0xc
beq s0,s7,0x00032254
_lw gp,0x20(sp)
lw t9,-0x7a6c(gp)
or a3,s6,zero
or a2,s1,zero
or a1,s3,zero
jalr t9
_or a0,s2,zero
lw v0,0x3c(sp)
bne v0,zero,0x000321e0
_lw gp,0x20(sp)
lw t9,-0x7bd8(gp)
sllv v0,s8,s0
or a1,s2,zero
or a0,s1,zero
jalr t9
_addu s5,s5,v0
b 0x000321e0
_lw gp,0x20(sp)
lw t9,-0x7b88(gp)
or a1,s6,zero
jalr t9
_or a0,s1,zero
lw gp,0x20(sp)
lw t9,-0x7d38(gp)
jalr t9
_or a0,s2,zero
lw gp,0x20(sp)
lw t9,-0x7d38(gp)
jalr t9
_or a0,s3,zero
b 0x00032008
_lw gp,0x20(sp)
lw t9,-0x7a38(gp)
or a1,zero,zero
or a0,s6,zero
jalr t9
_srl s0,s0,0x1f
or a1,s6,zero
lw gp,0x20(sp)
or s5,v0,zero
or a2,v0,zero
or a0,s1,zero
lw t9,-0x7c08(gp)
jalr t9
_and s0,s0,s5
beq s0,zero,0x00032008
_lw gp,0x20(sp)
lw v0,0x4(s1)
b 0x00032004
_subu v0,zero,v0
beq s0,zero,0x0003232c
_lw t9,-0x7b88(gp)
or a1,s6,zero
or a0,s1,zero
jalr t9
_or s5,zero,zero
b 0x00032008
_lw gp,0x20(sp)
or s0,s5,zero
li s5,0x1
sllv s5,s5,a0
b 0x000321c4
_addiu s5,s5,-0x1
lw t9,-0x7a84(gp)
or a1,a3,zero
jalr t9
_or a0,s1,zero
lw gp,0x20(sp)
or a0,v0,zero
lw a3,0x28(sp)
b 0x00031fc4
_lw t0,0x8(s7)
b 0x000321c4
_li s5,0x1
lw t9,-0x7b70(gp)
jalr t9
_nop
lw t9,-0x7a64(gp)
jalr t9
_nop
nop
nop
(translation_unit "uint * __gmpz_remove(uint *param_1,uint *param_2,uint *param_3)\n\n{\n  uint *puVar1;\n  undefined *puVar2;\n  int iVar3;\n  uint uVar4;\n  uint uVar5;\n  uint *puVar6;\n  uint *puVar7;\n  uint uVar8;\n  undefined1 *puVar9;\n  uint uVar10;\n  uint local_1c8;\n  uint auStack_1c4 [3];\n  uint uStack_1b8;\n  int local_1b4;\n  undefined1 auStack_1ac [4];\n  int local_1a8;\n  undefined1 auStack_1a0 [372];\n  uint *local_2c;\n  \n  puVar2 = PTR___stack_chk_guard_00097540;\n  puVar7 = (uint *)param_3[2];\n  uVar8 = param_3[1];\n  local_2c = *(uint **)PTR___stack_chk_guard_00097540;\n  uVar10 = param_2[1];\n  uVar5 = -uVar8;\n  if (-1 < (int)uVar8) {\n    uVar5 = uVar8;\n  }\n  uVar4 = *puVar7;\n  if (((int)(uint)(uVar4 == 1) < (int)uVar5) && (uVar10 != 0)) {\n    if ((uVar4 & 1) == 0) {\n      if ((uVar4 == 2) == uVar5) {\n        puVar7 = (uint *)(*(code *)PTR___gmpz_scan1_00097608)(param_2,0);\n        param_3 = puVar7;\n        (*(code *)PTR___gmpz_fdiv_q_2exp_00097438)(param_1);\n        if ((uVar8 >> 0x1f & (uint)puVar7) != 0) {\n          uVar5 = -param_1[1];\n          goto LAB_00032004;\n        }\n      }\n      else {\n        (*(code *)PTR___gmpz_init_00097130)(&uStack_1b8);\n        (*(code *)PTR___gmpz_init_00097130)(auStack_1c4);\n        puVar6 = param_2;\n        (*(code *)PTR___gmpz_tdiv_qr_000975d4)(auStack_1c4,&uStack_1b8,param_2,param_3);\n        if (local_1b4 == 0) {\n          (*(code *)PTR___gmpz_init_set_000975ec)(auStack_1ac,param_3);\n          (*(code *)PTR___gmpz_swap_00097468)(param_1,auStack_1c4);\n          if (local_1a8 < 0) {\n            local_1a8 = -local_1a8;\n          }\n          uVar5 = param_1[1];\n          if ((int)uVar5 < 0) {\n            uVar5 = -uVar5;\n          }\n          if ((int)uVar5 < local_1a8 * 2 + -1) {\n            puVar7 = (uint *)0x1;\n            uVar5 = 0;\n          }\n          else {\n            puVar9 = auStack_1a0;\n            uVar8 = 1;\n            do {\n              uVar5 = uVar8;\n              (*(code *)PTR___gmpz_init_00097130)(puVar9);\n              (*(code *)PTR___gmpz_mul_00097498)(puVar9,puVar9 + -0xc);\n              (*(code *)PTR___gmpz_tdiv_qr_000975d4)(auStack_1c4,&uStack_1b8,param_1,puVar9);\n              if (local_1b4 != 0) {\n                (*(code *)PTR___gmpz_clear_00097308)(puVar9);\n                puVar7 = (uint *)((1 << (uVar5 & 0x1f)) + -1);\n                uVar5 = uVar5 - 1;\n                goto LAB_000321c4;\n              }\n              (*(code *)PTR___gmpz_swap_00097468)(param_1,auStack_1c4);\n              uVar10 = param_1[1];\n              if ((int)uVar10 < 0) {\n                uVar10 = -uVar10;\n              }\n              iVar3 = *(int *)(puVar9 + 4);\n              if (iVar3 < 0) {\n                iVar3 = -iVar3;\n              }\n              puVar9 = puVar9 + 0xc;\n              uVar8 = uVar5 + 1;\n            } while (iVar3 * 2 + -1 <= (int)uVar10);\n            puVar7 = (uint *)((1 << (uVar5 + 1 & 0x1f)) + -1);\n          }\nLAB_000321c4:\n          puVar9 = auStack_1ac + uVar5 * 0xc;\n          do {\n            param_2 = &uStack_1b8;\n            puVar6 = param_1;\n            (*(code *)PTR___gmpz_tdiv_qr_000975d4)(auStack_1c4,&uStack_1b8,param_1,puVar9);\n            if (local_1b4 == 0) {\n              puVar7 = (uint *)((int)puVar7 + (1 << (uVar5 & 0x1f)));\n              param_2 = auStack_1c4;\n              (*(code *)PTR___gmpz_swap_00097468)(param_1);\n            }\n            uVar5 = uVar5 - 1;\n            (*(code *)PTR___gmpz_clear_00097308)(puVar9);\n            puVar9 = puVar9 + -0xc;\n          } while (uVar5 != 0xffffffff);\n        }\n        else {\n          (*(code *)PTR___gmpz_set_000974b8)(param_1);\n          puVar7 = (uint *)0x0;\n        }\n        (*(code *)PTR___gmpz_clear_00097308)(auStack_1c4);\n        (*(code *)PTR___gmpz_clear_00097308)(&uStack_1b8);\n        param_3 = puVar6;\n      }\n    }\n    else {\n      local_1c8 = uVar10;\n      if ((int)uVar10 < 0) {\n        local_1c8 = -uVar10;\n      }\n      if ((int)*param_1 < (int)local_1c8) {\n        uVar4 = (*(code *)PTR___gmpz_realloc_000975bc)(param_1,local_1c8);\n        puVar7 = (uint *)param_3[2];\n      }\n      else {\n        uVar4 = param_1[2];\n      }\n      param_3 = (uint *)param_2[2];\n      param_2 = &local_1c8;\n      puVar7 = (uint *)(*(code *)PTR___gmpn_remove_00097294)\n                                 (uVar4,param_2,param_3,local_1c8,puVar7,uVar5,0xffffffff);\n      uVar5 = local_1c8;\n      if ((uVar8 >> 0x1f & (uint)puVar7) != uVar10 >> 0x1f) {\n        uVar5 = -local_1c8;\n      }\nLAB_00032004:\n      param_1[1] = uVar5;\n    }\n  }\n  else {\n    if (uVar8 == 0) goto LAB_0003232c;\n    puVar7 = (uint *)0x0;\n    (*(code *)PTR___gmpz_set_000974b8)(param_1);\n  }\n  if (local_2c == *(uint **)puVar2) {\n    return puVar7;\n  }\n  param_1 = local_2c;\n  (*(code *)PTR___stack_chk_fail_000974d0)();\nLAB_0003232c:\n  (*(code *)PTR___gmp_divide_by_zero_000975dc)();\n  puVar7 = param_3;\n  if ((int)param_3 < 0) {\n    puVar7 = (uint *)-(int)param_3;\n  }\n  if (param_3 == (uint *)0x0) {\n    *param_1 = 0;\n    puVar7 = (uint *)0x0;\n  }\n  else {\n    if (param_2[(int)puVar7 + -1] == 0) {\n      puVar6 = param_2 + (int)puVar7;\n      do {\n        puVar7 = (uint *)((int)puVar7 + -1);\n        if (puVar7 == (uint *)0x0) break;\n        puVar1 = puVar6 + -2;\n        puVar6 = puVar6 + -1;\n      } while (*puVar1 == 0);\n    }\n    *param_1 = 0;\n    if ((int)param_3 < 0) {\n      puVar7 = (uint *)-(int)puVar7;\n    }\n  }\n  param_1[1] = (uint)puVar7;\n  param_1[2] = (uint)param_2;\n  return param_1;\n}\n\n" (function_definition "uint * __gmpz_remove(uint *param_1,uint *param_2,uint *param_3)\n\n{\n  uint *puVar1;\n  undefined *puVar2;\n  int iVar3;\n  uint uVar4;\n  uint uVar5;\n  uint *puVar6;\n  uint *puVar7;\n  uint uVar8;\n  undefined1 *puVar9;\n  uint uVar10;\n  uint local_1c8;\n  uint auStack_1c4 [3];\n  uint uStack_1b8;\n  int local_1b4;\n  undefined1 auStack_1ac [4];\n  int local_1a8;\n  undefined1 auStack_1a0 [372];\n  uint *local_2c;\n  \n  puVar2 = PTR___stack_chk_guard_00097540;\n  puVar7 = (uint *)param_3[2];\n  uVar8 = param_3[1];\n  local_2c = *(uint **)PTR___stack_chk_guard_00097540;\n  uVar10 = param_2[1];\n  uVar5 = -uVar8;\n  if (-1 < (int)uVar8) {\n    uVar5 = uVar8;\n  }\n  uVar4 = *puVar7;\n  if (((int)(uint)(uVar4 == 1) < (int)uVar5) && (uVar10 != 0)) {\n    if ((uVar4 & 1) == 0) {\n      if ((uVar4 == 2) == uVar5) {\n        puVar7 = (uint *)(*(code *)PTR___gmpz_scan1_00097608)(param_2,0);\n        param_3 = puVar7;\n        (*(code *)PTR___gmpz_fdiv_q_2exp_00097438)(param_1);\n        if ((uVar8 >> 0x1f & (uint)puVar7) != 0) {\n          uVar5 = -param_1[1];\n          goto LAB_00032004;\n        }\n      }\n      else {\n        (*(code *)PTR___gmpz_init_00097130)(&uStack_1b8);\n        (*(code *)PTR___gmpz_init_00097130)(auStack_1c4);\n        puVar6 = param_2;\n        (*(code *)PTR___gmpz_tdiv_qr_000975d4)(auStack_1c4,&uStack_1b8,param_2,param_3);\n        if (local_1b4 == 0) {\n          (*(code *)PTR___gmpz_init_set_000975ec)(auStack_1ac,param_3);\n          (*(code *)PTR___gmpz_swap_00097468)(param_1,auStack_1c4);\n          if (local_1a8 < 0) {\n            local_1a8 = -local_1a8;\n          }\n          uVar5 = param_1[1];\n          if ((int)uVar5 < 0) {\n            uVar5 = -uVar5;\n          }\n          if ((int)uVar5 < local_1a8 * 2 + -1) {\n            puVar7 = (uint *)0x1;\n            uVar5 = 0;\n          }\n          else {\n            puVar9 = auStack_1a0;\n            uVar8 = 1;\n            do {\n              uVar5 = uVar8;\n              (*(code *)PTR___gmpz_init_00097130)(puVar9);\n              (*(code *)PTR___gmpz_mul_00097498)(puVar9,puVar9 + -0xc);\n              (*(code *)PTR___gmpz_tdiv_qr_000975d4)(auStack_1c4,&uStack_1b8,param_1,puVar9);\n              if (local_1b4 != 0) {\n                (*(code *)PTR___gmpz_clear_00097308)(puVar9);\n                puVar7 = (uint *)((1 << (uVar5 & 0x1f)) + -1);\n                uVar5 = uVar5 - 1;\n                goto LAB_000321c4;\n              }\n              (*(code *)PTR___gmpz_swap_00097468)(param_1,auStack_1c4);\n              uVar10 = param_1[1];\n              if ((int)uVar10 < 0) {\n                uVar10 = -uVar10;\n              }\n              iVar3 = *(int *)(puVar9 + 4);\n              if (iVar3 < 0) {\n                iVar3 = -iVar3;\n              }\n              puVar9 = puVar9 + 0xc;\n              uVar8 = uVar5 + 1;\n            } while (iVar3 * 2 + -1 <= (int)uVar10);\n            puVar7 = (uint *)((1 << (uVar5 + 1 & 0x1f)) + -1);\n          }\nLAB_000321c4:\n          puVar9 = auStack_1ac + uVar5 * 0xc;\n          do {\n            param_2 = &uStack_1b8;\n            puVar6 = param_1;\n            (*(code *)PTR___gmpz_tdiv_qr_000975d4)(auStack_1c4,&uStack_1b8,param_1,puVar9);\n            if (local_1b4 == 0) {\n              puVar7 = (uint *)((int)puVar7 + (1 << (uVar5 & 0x1f)));\n              param_2 = auStack_1c4;\n              (*(code *)PTR___gmpz_swap_00097468)(param_1);\n            }\n            uVar5 = uVar5 - 1;\n            (*(code *)PTR___gmpz_clear_00097308)(puVar9);\n            puVar9 = puVar9 + -0xc;\n          } while (uVar5 != 0xffffffff);\n        }\n        else {\n          (*(code *)PTR___gmpz_set_000974b8)(param_1);\n          puVar7 = (uint *)0x0;\n        }\n        (*(code *)PTR___gmpz_clear_00097308)(auStack_1c4);\n        (*(code *)PTR___gmpz_clear_00097308)(&uStack_1b8);\n        param_3 = puVar6;\n      }\n    }\n    else {\n      local_1c8 = uVar10;\n      if ((int)uVar10 < 0) {\n        local_1c8 = -uVar10;\n      }\n      if ((int)*param_1 < (int)local_1c8) {\n        uVar4 = (*(code *)PTR___gmpz_realloc_000975bc)(param_1,local_1c8);\n        puVar7 = (uint *)param_3[2];\n      }\n      else {\n        uVar4 = param_1[2];\n      }\n      param_3 = (uint *)param_2[2];\n      param_2 = &local_1c8;\n      puVar7 = (uint *)(*(code *)PTR___gmpn_remove_00097294)\n                                 (uVar4,param_2,param_3,local_1c8,puVar7,uVar5,0xffffffff);\n      uVar5 = local_1c8;\n      if ((uVar8 >> 0x1f & (uint)puVar7) != uVar10 >> 0x1f) {\n        uVar5 = -local_1c8;\n      }\nLAB_00032004:\n      param_1[1] = uVar5;\n    }\n  }\n  else {\n    if (uVar8 == 0) goto LAB_0003232c;\n    puVar7 = (uint *)0x0;\n    (*(code *)PTR___gmpz_set_000974b8)(param_1);\n  }\n  if (local_2c == *(uint **)puVar2) {\n    return puVar7;\n  }\n  param_1 = local_2c;\n  (*(code *)PTR___stack_chk_fail_000974d0)();\nLAB_0003232c:\n  (*(code *)PTR___gmp_divide_by_zero_000975dc)();\n  puVar7 = param_3;\n  if ((int)param_3 < 0) {\n    puVar7 = (uint *)-(int)param_3;\n  }\n  if (param_3 == (uint *)0x0) {\n    *param_1 = 0;\n    puVar7 = (uint *)0x0;\n  }\n  else {\n    if (param_2[(int)puVar7 + -1] == 0) {\n      puVar6 = param_2 + (int)puVar7;\n      do {\n        puVar7 = (uint *)((int)puVar7 + -1);\n        if (puVar7 == (uint *)0x0) break;\n        puVar1 = puVar6 + -2;\n        puVar6 = puVar6 + -1;\n      } while (*puVar1 == 0);\n    }\n    *param_1 = 0;\n    if ((int)param_3 < 0) {\n      puVar7 = (uint *)-(int)puVar7;\n    }\n  }\n  param_1[1] = (uint)puVar7;\n  param_1[2] = (uint)param_2;\n  return param_1;\n}" type_identifier (pointer_declarator "* __gmpz_remove(uint *param_1,uint *param_2,uint *param_3)" * (function_declarator "__gmpz_remove(uint *param_1,uint *param_2,uint *param_3)" identifier (parameter_list "(uint *param_1,uint *param_2,uint *param_3)" ( (parameter_declaration "uint *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "uint *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "uint *param_3" type_identifier (pointer_declarator "*param_3" * identifier)) )))) (compound_statement "{\n  uint *puVar1;\n  undefined *puVar2;\n  int iVar3;\n  uint uVar4;\n  uint uVar5;\n  uint *puVar6;\n  uint *puVar7;\n  uint uVar8;\n  undefined1 *puVar9;\n  uint uVar10;\n  uint local_1c8;\n  uint auStack_1c4 [3];\n  uint uStack_1b8;\n  int local_1b4;\n  undefined1 auStack_1ac [4];\n  int local_1a8;\n  undefined1 auStack_1a0 [372];\n  uint *local_2c;\n  \n  puVar2 = PTR___stack_chk_guard_00097540;\n  puVar7 = (uint *)param_3[2];\n  uVar8 = param_3[1];\n  local_2c = *(uint **)PTR___stack_chk_guard_00097540;\n  uVar10 = param_2[1];\n  uVar5 = -uVar8;\n  if (-1 < (int)uVar8) {\n    uVar5 = uVar8;\n  }\n  uVar4 = *puVar7;\n  if (((int)(uint)(uVar4 == 1) < (int)uVar5) && (uVar10 != 0)) {\n    if ((uVar4 & 1) == 0) {\n      if ((uVar4 == 2) == uVar5) {\n        puVar7 = (uint *)(*(code *)PTR___gmpz_scan1_00097608)(param_2,0);\n        param_3 = puVar7;\n        (*(code *)PTR___gmpz_fdiv_q_2exp_00097438)(param_1);\n        if ((uVar8 >> 0x1f & (uint)puVar7) != 0) {\n          uVar5 = -param_1[1];\n          goto LAB_00032004;\n        }\n      }\n      else {\n        (*(code *)PTR___gmpz_init_00097130)(&uStack_1b8);\n        (*(code *)PTR___gmpz_init_00097130)(auStack_1c4);\n        puVar6 = param_2;\n        (*(code *)PTR___gmpz_tdiv_qr_000975d4)(auStack_1c4,&uStack_1b8,param_2,param_3);\n        if (local_1b4 == 0) {\n          (*(code *)PTR___gmpz_init_set_000975ec)(auStack_1ac,param_3);\n          (*(code *)PTR___gmpz_swap_00097468)(param_1,auStack_1c4);\n          if (local_1a8 < 0) {\n            local_1a8 = -local_1a8;\n          }\n          uVar5 = param_1[1];\n          if ((int)uVar5 < 0) {\n            uVar5 = -uVar5;\n          }\n          if ((int)uVar5 < local_1a8 * 2 + -1) {\n            puVar7 = (uint *)0x1;\n            uVar5 = 0;\n          }\n          else {\n            puVar9 = auStack_1a0;\n            uVar8 = 1;\n            do {\n              uVar5 = uVar8;\n              (*(code *)PTR___gmpz_init_00097130)(puVar9);\n              (*(code *)PTR___gmpz_mul_00097498)(puVar9,puVar9 + -0xc);\n              (*(code *)PTR___gmpz_tdiv_qr_000975d4)(auStack_1c4,&uStack_1b8,param_1,puVar9);\n              if (local_1b4 != 0) {\n                (*(code *)PTR___gmpz_clear_00097308)(puVar9);\n                puVar7 = (uint *)((1 << (uVar5 & 0x1f)) + -1);\n                uVar5 = uVar5 - 1;\n                goto LAB_000321c4;\n              }\n              (*(code *)PTR___gmpz_swap_00097468)(param_1,auStack_1c4);\n              uVar10 = param_1[1];\n              if ((int)uVar10 < 0) {\n                uVar10 = -uVar10;\n              }\n              iVar3 = *(int *)(puVar9 + 4);\n              if (iVar3 < 0) {\n                iVar3 = -iVar3;\n              }\n              puVar9 = puVar9 + 0xc;\n              uVar8 = uVar5 + 1;\n            } while (iVar3 * 2 + -1 <= (int)uVar10);\n            puVar7 = (uint *)((1 << (uVar5 + 1 & 0x1f)) + -1);\n          }\nLAB_000321c4:\n          puVar9 = auStack_1ac + uVar5 * 0xc;\n          do {\n            param_2 = &uStack_1b8;\n            puVar6 = param_1;\n            (*(code *)PTR___gmpz_tdiv_qr_000975d4)(auStack_1c4,&uStack_1b8,param_1,puVar9);\n            if (local_1b4 == 0) {\n              puVar7 = (uint *)((int)puVar7 + (1 << (uVar5 & 0x1f)));\n              param_2 = auStack_1c4;\n              (*(code *)PTR___gmpz_swap_00097468)(param_1);\n            }\n            uVar5 = uVar5 - 1;\n            (*(code *)PTR___gmpz_clear_00097308)(puVar9);\n            puVar9 = puVar9 + -0xc;\n          } while (uVar5 != 0xffffffff);\n        }\n        else {\n          (*(code *)PTR___gmpz_set_000974b8)(param_1);\n          puVar7 = (uint *)0x0;\n        }\n        (*(code *)PTR___gmpz_clear_00097308)(auStack_1c4);\n        (*(code *)PTR___gmpz_clear_00097308)(&uStack_1b8);\n        param_3 = puVar6;\n      }\n    }\n    else {\n      local_1c8 = uVar10;\n      if ((int)uVar10 < 0) {\n        local_1c8 = -uVar10;\n      }\n      if ((int)*param_1 < (int)local_1c8) {\n        uVar4 = (*(code *)PTR___gmpz_realloc_000975bc)(param_1,local_1c8);\n        puVar7 = (uint *)param_3[2];\n      }\n      else {\n        uVar4 = param_1[2];\n      }\n      param_3 = (uint *)param_2[2];\n      param_2 = &local_1c8;\n      puVar7 = (uint *)(*(code *)PTR___gmpn_remove_00097294)\n                                 (uVar4,param_2,param_3,local_1c8,puVar7,uVar5,0xffffffff);\n      uVar5 = local_1c8;\n      if ((uVar8 >> 0x1f & (uint)puVar7) != uVar10 >> 0x1f) {\n        uVar5 = -local_1c8;\n      }\nLAB_00032004:\n      param_1[1] = uVar5;\n    }\n  }\n  else {\n    if (uVar8 == 0) goto LAB_0003232c;\n    puVar7 = (uint *)0x0;\n    (*(code *)PTR___gmpz_set_000974b8)(param_1);\n  }\n  if (local_2c == *(uint **)puVar2) {\n    return puVar7;\n  }\n  param_1 = local_2c;\n  (*(code *)PTR___stack_chk_fail_000974d0)();\nLAB_0003232c:\n  (*(code *)PTR___gmp_divide_by_zero_000975dc)();\n  puVar7 = param_3;\n  if ((int)param_3 < 0) {\n    puVar7 = (uint *)-(int)param_3;\n  }\n  if (param_3 == (uint *)0x0) {\n    *param_1 = 0;\n    puVar7 = (uint *)0x0;\n  }\n  else {\n    if (param_2[(int)puVar7 + -1] == 0) {\n      puVar6 = param_2 + (int)puVar7;\n      do {\n        puVar7 = (uint *)((int)puVar7 + -1);\n        if (puVar7 == (uint *)0x0) break;\n        puVar1 = puVar6 + -2;\n        puVar6 = puVar6 + -1;\n      } while (*puVar1 == 0);\n    }\n    *param_1 = 0;\n    if ((int)param_3 < 0) {\n      puVar7 = (uint *)-(int)puVar7;\n    }\n  }\n  param_1[1] = (uint)puVar7;\n  param_1[2] = (uint)param_2;\n  return param_1;\n}" { (declaration "uint *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "undefined *puVar2;" type_identifier (pointer_declarator "*puVar2" * identifier) ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "uint uVar4;" type_identifier identifier ;) (declaration "uint uVar5;" type_identifier identifier ;) (declaration "uint *puVar6;" type_identifier (pointer_declarator "*puVar6" * identifier) ;) (declaration "uint *puVar7;" type_identifier (pointer_declarator "*puVar7" * identifier) ;) (declaration "uint uVar8;" type_identifier identifier ;) (declaration "undefined1 *puVar9;" type_identifier (pointer_declarator "*puVar9" * identifier) ;) (declaration "uint uVar10;" type_identifier identifier ;) (declaration "uint local_1c8;" type_identifier identifier ;) (declaration "uint auStack_1c4 [3];" type_identifier (array_declarator "auStack_1c4 [3]" identifier [ number_literal ]) ;) (declaration "uint uStack_1b8;" type_identifier identifier ;) (declaration "int local_1b4;" primitive_type identifier ;) (declaration "undefined1 auStack_1ac [4];" type_identifier (array_declarator "auStack_1ac [4]" identifier [ number_literal ]) ;) (declaration "int local_1a8;" primitive_type identifier ;) (declaration "undefined1 auStack_1a0 [372];" type_identifier (array_declarator "auStack_1a0 [372]" identifier [ number_literal ]) ;) (declaration "uint *local_2c;" type_identifier (pointer_declarator "*local_2c" * identifier) ;) (expression_statement "puVar2 = PTR___stack_chk_guard_00097540;" (assignment_expression "puVar2 = PTR___stack_chk_guard_00097540" identifier = identifier) ;) (expression_statement "puVar7 = (uint *)param_3[2];" (assignment_expression "puVar7 = (uint *)param_3[2]" identifier = (cast_expression "(uint *)param_3[2]" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_3[2]" identifier [ number_literal ]))) ;) (expression_statement "uVar8 = param_3[1];" (assignment_expression "uVar8 = param_3[1]" identifier = (subscript_expression "param_3[1]" identifier [ number_literal ])) ;) (expression_statement "local_2c = *(uint **)PTR___stack_chk_guard_00097540;" (assignment_expression "local_2c = *(uint **)PTR___stack_chk_guard_00097540" identifier = (pointer_expression "*(uint **)PTR___stack_chk_guard_00097540" * (cast_expression "(uint **)PTR___stack_chk_guard_00097540" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) ;) (expression_statement "uVar10 = param_2[1];" (assignment_expression "uVar10 = param_2[1]" identifier = (subscript_expression "param_2[1]" identifier [ number_literal ])) ;) (expression_statement "uVar5 = -uVar8;" (assignment_expression "uVar5 = -uVar8" identifier = (unary_expression "-uVar8" - identifier)) ;) (if_statement "if (-1 < (int)uVar8) {\n    uVar5 = uVar8;\n  }" if (parenthesized_expression "(-1 < (int)uVar8)" ( (binary_expression "-1 < (int)uVar8" number_literal < (cast_expression "(int)uVar8" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n    uVar5 = uVar8;\n  }" { (expression_statement "uVar5 = uVar8;" (assignment_expression "uVar5 = uVar8" identifier = identifier) ;) })) (expression_statement "uVar4 = *puVar7;" (assignment_expression "uVar4 = *puVar7" identifier = (pointer_expression "*puVar7" * identifier)) ;) (if_statement "if (((int)(uint)(uVar4 == 1) < (int)uVar5) && (uVar10 != 0)) {\n    if ((uVar4 & 1) == 0) {\n      if ((uVar4 == 2) == uVar5) {\n        puVar7 = (uint *)(*(code *)PTR___gmpz_scan1_00097608)(param_2,0);\n        param_3 = puVar7;\n        (*(code *)PTR___gmpz_fdiv_q_2exp_00097438)(param_1);\n        if ((uVar8 >> 0x1f & (uint)puVar7) != 0) {\n          uVar5 = -param_1[1];\n          goto LAB_00032004;\n        }\n      }\n      else {\n        (*(code *)PTR___gmpz_init_00097130)(&uStack_1b8);\n        (*(code *)PTR___gmpz_init_00097130)(auStack_1c4);\n        puVar6 = param_2;\n        (*(code *)PTR___gmpz_tdiv_qr_000975d4)(auStack_1c4,&uStack_1b8,param_2,param_3);\n        if (local_1b4 == 0) {\n          (*(code *)PTR___gmpz_init_set_000975ec)(auStack_1ac,param_3);\n          (*(code *)PTR___gmpz_swap_00097468)(param_1,auStack_1c4);\n          if (local_1a8 < 0) {\n            local_1a8 = -local_1a8;\n          }\n          uVar5 = param_1[1];\n          if ((int)uVar5 < 0) {\n            uVar5 = -uVar5;\n          }\n          if ((int)uVar5 < local_1a8 * 2 + -1) {\n            puVar7 = (uint *)0x1;\n            uVar5 = 0;\n          }\n          else {\n            puVar9 = auStack_1a0;\n            uVar8 = 1;\n            do {\n              uVar5 = uVar8;\n              (*(code *)PTR___gmpz_init_00097130)(puVar9);\n              (*(code *)PTR___gmpz_mul_00097498)(puVar9,puVar9 + -0xc);\n              (*(code *)PTR___gmpz_tdiv_qr_000975d4)(auStack_1c4,&uStack_1b8,param_1,puVar9);\n              if (local_1b4 != 0) {\n                (*(code *)PTR___gmpz_clear_00097308)(puVar9);\n                puVar7 = (uint *)((1 << (uVar5 & 0x1f)) + -1);\n                uVar5 = uVar5 - 1;\n                goto LAB_000321c4;\n              }\n              (*(code *)PTR___gmpz_swap_00097468)(param_1,auStack_1c4);\n              uVar10 = param_1[1];\n              if ((int)uVar10 < 0) {\n                uVar10 = -uVar10;\n              }\n              iVar3 = *(int *)(puVar9 + 4);\n              if (iVar3 < 0) {\n                iVar3 = -iVar3;\n              }\n              puVar9 = puVar9 + 0xc;\n              uVar8 = uVar5 + 1;\n            } while (iVar3 * 2 + -1 <= (int)uVar10);\n            puVar7 = (uint *)((1 << (uVar5 + 1 & 0x1f)) + -1);\n          }\nLAB_000321c4:\n          puVar9 = auStack_1ac + uVar5 * 0xc;\n          do {\n            param_2 = &uStack_1b8;\n            puVar6 = param_1;\n            (*(code *)PTR___gmpz_tdiv_qr_000975d4)(auStack_1c4,&uStack_1b8,param_1,puVar9);\n            if (local_1b4 == 0) {\n              puVar7 = (uint *)((int)puVar7 + (1 << (uVar5 & 0x1f)));\n              param_2 = auStack_1c4;\n              (*(code *)PTR___gmpz_swap_00097468)(param_1);\n            }\n            uVar5 = uVar5 - 1;\n            (*(code *)PTR___gmpz_clear_00097308)(puVar9);\n            puVar9 = puVar9 + -0xc;\n          } while (uVar5 != 0xffffffff);\n        }\n        else {\n          (*(code *)PTR___gmpz_set_000974b8)(param_1);\n          puVar7 = (uint *)0x0;\n        }\n        (*(code *)PTR___gmpz_clear_00097308)(auStack_1c4);\n        (*(code *)PTR___gmpz_clear_00097308)(&uStack_1b8);\n        param_3 = puVar6;\n      }\n    }\n    else {\n      local_1c8 = uVar10;\n      if ((int)uVar10 < 0) {\n        local_1c8 = -uVar10;\n      }\n      if ((int)*param_1 < (int)local_1c8) {\n        uVar4 = (*(code *)PTR___gmpz_realloc_000975bc)(param_1,local_1c8);\n        puVar7 = (uint *)param_3[2];\n      }\n      else {\n        uVar4 = param_1[2];\n      }\n      param_3 = (uint *)param_2[2];\n      param_2 = &local_1c8;\n      puVar7 = (uint *)(*(code *)PTR___gmpn_remove_00097294)\n                                 (uVar4,param_2,param_3,local_1c8,puVar7,uVar5,0xffffffff);\n      uVar5 = local_1c8;\n      if ((uVar8 >> 0x1f & (uint)puVar7) != uVar10 >> 0x1f) {\n        uVar5 = -local_1c8;\n      }\nLAB_00032004:\n      param_1[1] = uVar5;\n    }\n  }\n  else {\n    if (uVar8 == 0) goto LAB_0003232c;\n    puVar7 = (uint *)0x0;\n    (*(code *)PTR___gmpz_set_000974b8)(param_1);\n  }" if (parenthesized_expression "(((int)(uint)(uVar4 == 1) < (int)uVar5) && (uVar10 != 0))" ( (binary_expression "((int)(uint)(uVar4 == 1) < (int)uVar5) && (uVar10 != 0)" (parenthesized_expression "((int)(uint)(uVar4 == 1) < (int)uVar5)" ( (binary_expression "(int)(uint)(uVar4 == 1) < (int)uVar5" (cast_expression "(int)(uint)(uVar4 == 1)" ( (type_descriptor "int" primitive_type) ) (call_expression "(uint)(uVar4 == 1)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar4 == 1)" ( (binary_expression "uVar4 == 1" identifier == number_literal) )))) < (cast_expression "(int)uVar5" ( (type_descriptor "int" primitive_type) ) identifier)) )) && (parenthesized_expression "(uVar10 != 0)" ( (binary_expression "uVar10 != 0" identifier != number_literal) ))) )) (compound_statement "{\n    if ((uVar4 & 1) == 0) {\n      if ((uVar4 == 2) == uVar5) {\n        puVar7 = (uint *)(*(code *)PTR___gmpz_scan1_00097608)(param_2,0);\n        param_3 = puVar7;\n        (*(code *)PTR___gmpz_fdiv_q_2exp_00097438)(param_1);\n        if ((uVar8 >> 0x1f & (uint)puVar7) != 0) {\n          uVar5 = -param_1[1];\n          goto LAB_00032004;\n        }\n      }\n      else {\n        (*(code *)PTR___gmpz_init_00097130)(&uStack_1b8);\n        (*(code *)PTR___gmpz_init_00097130)(auStack_1c4);\n        puVar6 = param_2;\n        (*(code *)PTR___gmpz_tdiv_qr_000975d4)(auStack_1c4,&uStack_1b8,param_2,param_3);\n        if (local_1b4 == 0) {\n          (*(code *)PTR___gmpz_init_set_000975ec)(auStack_1ac,param_3);\n          (*(code *)PTR___gmpz_swap_00097468)(param_1,auStack_1c4);\n          if (local_1a8 < 0) {\n            local_1a8 = -local_1a8;\n          }\n          uVar5 = param_1[1];\n          if ((int)uVar5 < 0) {\n            uVar5 = -uVar5;\n          }\n          if ((int)uVar5 < local_1a8 * 2 + -1) {\n            puVar7 = (uint *)0x1;\n            uVar5 = 0;\n          }\n          else {\n            puVar9 = auStack_1a0;\n            uVar8 = 1;\n            do {\n              uVar5 = uVar8;\n              (*(code *)PTR___gmpz_init_00097130)(puVar9);\n              (*(code *)PTR___gmpz_mul_00097498)(puVar9,puVar9 + -0xc);\n              (*(code *)PTR___gmpz_tdiv_qr_000975d4)(auStack_1c4,&uStack_1b8,param_1,puVar9);\n              if (local_1b4 != 0) {\n                (*(code *)PTR___gmpz_clear_00097308)(puVar9);\n                puVar7 = (uint *)((1 << (uVar5 & 0x1f)) + -1);\n                uVar5 = uVar5 - 1;\n                goto LAB_000321c4;\n              }\n              (*(code *)PTR___gmpz_swap_00097468)(param_1,auStack_1c4);\n              uVar10 = param_1[1];\n              if ((int)uVar10 < 0) {\n                uVar10 = -uVar10;\n              }\n              iVar3 = *(int *)(puVar9 + 4);\n              if (iVar3 < 0) {\n                iVar3 = -iVar3;\n              }\n              puVar9 = puVar9 + 0xc;\n              uVar8 = uVar5 + 1;\n            } while (iVar3 * 2 + -1 <= (int)uVar10);\n            puVar7 = (uint *)((1 << (uVar5 + 1 & 0x1f)) + -1);\n          }\nLAB_000321c4:\n          puVar9 = auStack_1ac + uVar5 * 0xc;\n          do {\n            param_2 = &uStack_1b8;\n            puVar6 = param_1;\n            (*(code *)PTR___gmpz_tdiv_qr_000975d4)(auStack_1c4,&uStack_1b8,param_1,puVar9);\n            if (local_1b4 == 0) {\n              puVar7 = (uint *)((int)puVar7 + (1 << (uVar5 & 0x1f)));\n              param_2 = auStack_1c4;\n              (*(code *)PTR___gmpz_swap_00097468)(param_1);\n            }\n            uVar5 = uVar5 - 1;\n            (*(code *)PTR___gmpz_clear_00097308)(puVar9);\n            puVar9 = puVar9 + -0xc;\n          } while (uVar5 != 0xffffffff);\n        }\n        else {\n          (*(code *)PTR___gmpz_set_000974b8)(param_1);\n          puVar7 = (uint *)0x0;\n        }\n        (*(code *)PTR___gmpz_clear_00097308)(auStack_1c4);\n        (*(code *)PTR___gmpz_clear_00097308)(&uStack_1b8);\n        param_3 = puVar6;\n      }\n    }\n    else {\n      local_1c8 = uVar10;\n      if ((int)uVar10 < 0) {\n        local_1c8 = -uVar10;\n      }\n      if ((int)*param_1 < (int)local_1c8) {\n        uVar4 = (*(code *)PTR___gmpz_realloc_000975bc)(param_1,local_1c8);\n        puVar7 = (uint *)param_3[2];\n      }\n      else {\n        uVar4 = param_1[2];\n      }\n      param_3 = (uint *)param_2[2];\n      param_2 = &local_1c8;\n      puVar7 = (uint *)(*(code *)PTR___gmpn_remove_00097294)\n                                 (uVar4,param_2,param_3,local_1c8,puVar7,uVar5,0xffffffff);\n      uVar5 = local_1c8;\n      if ((uVar8 >> 0x1f & (uint)puVar7) != uVar10 >> 0x1f) {\n        uVar5 = -local_1c8;\n      }\nLAB_00032004:\n      param_1[1] = uVar5;\n    }\n  }" { (if_statement "if ((uVar4 & 1) == 0) {\n      if ((uVar4 == 2) == uVar5) {\n        puVar7 = (uint *)(*(code *)PTR___gmpz_scan1_00097608)(param_2,0);\n        param_3 = puVar7;\n        (*(code *)PTR___gmpz_fdiv_q_2exp_00097438)(param_1);\n        if ((uVar8 >> 0x1f & (uint)puVar7) != 0) {\n          uVar5 = -param_1[1];\n          goto LAB_00032004;\n        }\n      }\n      else {\n        (*(code *)PTR___gmpz_init_00097130)(&uStack_1b8);\n        (*(code *)PTR___gmpz_init_00097130)(auStack_1c4);\n        puVar6 = param_2;\n        (*(code *)PTR___gmpz_tdiv_qr_000975d4)(auStack_1c4,&uStack_1b8,param_2,param_3);\n        if (local_1b4 == 0) {\n          (*(code *)PTR___gmpz_init_set_000975ec)(auStack_1ac,param_3);\n          (*(code *)PTR___gmpz_swap_00097468)(param_1,auStack_1c4);\n          if (local_1a8 < 0) {\n            local_1a8 = -local_1a8;\n          }\n          uVar5 = param_1[1];\n          if ((int)uVar5 < 0) {\n            uVar5 = -uVar5;\n          }\n          if ((int)uVar5 < local_1a8 * 2 + -1) {\n            puVar7 = (uint *)0x1;\n            uVar5 = 0;\n          }\n          else {\n            puVar9 = auStack_1a0;\n            uVar8 = 1;\n            do {\n              uVar5 = uVar8;\n              (*(code *)PTR___gmpz_init_00097130)(puVar9);\n              (*(code *)PTR___gmpz_mul_00097498)(puVar9,puVar9 + -0xc);\n              (*(code *)PTR___gmpz_tdiv_qr_000975d4)(auStack_1c4,&uStack_1b8,param_1,puVar9);\n              if (local_1b4 != 0) {\n                (*(code *)PTR___gmpz_clear_00097308)(puVar9);\n                puVar7 = (uint *)((1 << (uVar5 & 0x1f)) + -1);\n                uVar5 = uVar5 - 1;\n                goto LAB_000321c4;\n              }\n              (*(code *)PTR___gmpz_swap_00097468)(param_1,auStack_1c4);\n              uVar10 = param_1[1];\n              if ((int)uVar10 < 0) {\n                uVar10 = -uVar10;\n              }\n              iVar3 = *(int *)(puVar9 + 4);\n              if (iVar3 < 0) {\n                iVar3 = -iVar3;\n              }\n              puVar9 = puVar9 + 0xc;\n              uVar8 = uVar5 + 1;\n            } while (iVar3 * 2 + -1 <= (int)uVar10);\n            puVar7 = (uint *)((1 << (uVar5 + 1 & 0x1f)) + -1);\n          }\nLAB_000321c4:\n          puVar9 = auStack_1ac + uVar5 * 0xc;\n          do {\n            param_2 = &uStack_1b8;\n            puVar6 = param_1;\n            (*(code *)PTR___gmpz_tdiv_qr_000975d4)(auStack_1c4,&uStack_1b8,param_1,puVar9);\n            if (local_1b4 == 0) {\n              puVar7 = (uint *)((int)puVar7 + (1 << (uVar5 & 0x1f)));\n              param_2 = auStack_1c4;\n              (*(code *)PTR___gmpz_swap_00097468)(param_1);\n            }\n            uVar5 = uVar5 - 1;\n            (*(code *)PTR___gmpz_clear_00097308)(puVar9);\n            puVar9 = puVar9 + -0xc;\n          } while (uVar5 != 0xffffffff);\n        }\n        else {\n          (*(code *)PTR___gmpz_set_000974b8)(param_1);\n          puVar7 = (uint *)0x0;\n        }\n        (*(code *)PTR___gmpz_clear_00097308)(auStack_1c4);\n        (*(code *)PTR___gmpz_clear_00097308)(&uStack_1b8);\n        param_3 = puVar6;\n      }\n    }\n    else {\n      local_1c8 = uVar10;\n      if ((int)uVar10 < 0) {\n        local_1c8 = -uVar10;\n      }\n      if ((int)*param_1 < (int)local_1c8) {\n        uVar4 = (*(code *)PTR___gmpz_realloc_000975bc)(param_1,local_1c8);\n        puVar7 = (uint *)param_3[2];\n      }\n      else {\n        uVar4 = param_1[2];\n      }\n      param_3 = (uint *)param_2[2];\n      param_2 = &local_1c8;\n      puVar7 = (uint *)(*(code *)PTR___gmpn_remove_00097294)\n                                 (uVar4,param_2,param_3,local_1c8,puVar7,uVar5,0xffffffff);\n      uVar5 = local_1c8;\n      if ((uVar8 >> 0x1f & (uint)puVar7) != uVar10 >> 0x1f) {\n        uVar5 = -local_1c8;\n      }\nLAB_00032004:\n      param_1[1] = uVar5;\n    }" if (parenthesized_expression "((uVar4 & 1) == 0)" ( (binary_expression "(uVar4 & 1) == 0" (parenthesized_expression "(uVar4 & 1)" ( (binary_expression "uVar4 & 1" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n      if ((uVar4 == 2) == uVar5) {\n        puVar7 = (uint *)(*(code *)PTR___gmpz_scan1_00097608)(param_2,0);\n        param_3 = puVar7;\n        (*(code *)PTR___gmpz_fdiv_q_2exp_00097438)(param_1);\n        if ((uVar8 >> 0x1f & (uint)puVar7) != 0) {\n          uVar5 = -param_1[1];\n          goto LAB_00032004;\n        }\n      }\n      else {\n        (*(code *)PTR___gmpz_init_00097130)(&uStack_1b8);\n        (*(code *)PTR___gmpz_init_00097130)(auStack_1c4);\n        puVar6 = param_2;\n        (*(code *)PTR___gmpz_tdiv_qr_000975d4)(auStack_1c4,&uStack_1b8,param_2,param_3);\n        if (local_1b4 == 0) {\n          (*(code *)PTR___gmpz_init_set_000975ec)(auStack_1ac,param_3);\n          (*(code *)PTR___gmpz_swap_00097468)(param_1,auStack_1c4);\n          if (local_1a8 < 0) {\n            local_1a8 = -local_1a8;\n          }\n          uVar5 = param_1[1];\n          if ((int)uVar5 < 0) {\n            uVar5 = -uVar5;\n          }\n          if ((int)uVar5 < local_1a8 * 2 + -1) {\n            puVar7 = (uint *)0x1;\n            uVar5 = 0;\n          }\n          else {\n            puVar9 = auStack_1a0;\n            uVar8 = 1;\n            do {\n              uVar5 = uVar8;\n              (*(code *)PTR___gmpz_init_00097130)(puVar9);\n              (*(code *)PTR___gmpz_mul_00097498)(puVar9,puVar9 + -0xc);\n              (*(code *)PTR___gmpz_tdiv_qr_000975d4)(auStack_1c4,&uStack_1b8,param_1,puVar9);\n              if (local_1b4 != 0) {\n                (*(code *)PTR___gmpz_clear_00097308)(puVar9);\n                puVar7 = (uint *)((1 << (uVar5 & 0x1f)) + -1);\n                uVar5 = uVar5 - 1;\n                goto LAB_000321c4;\n              }\n              (*(code *)PTR___gmpz_swap_00097468)(param_1,auStack_1c4);\n              uVar10 = param_1[1];\n              if ((int)uVar10 < 0) {\n                uVar10 = -uVar10;\n              }\n              iVar3 = *(int *)(puVar9 + 4);\n              if (iVar3 < 0) {\n                iVar3 = -iVar3;\n              }\n              puVar9 = puVar9 + 0xc;\n              uVar8 = uVar5 + 1;\n            } while (iVar3 * 2 + -1 <= (int)uVar10);\n            puVar7 = (uint *)((1 << (uVar5 + 1 & 0x1f)) + -1);\n          }\nLAB_000321c4:\n          puVar9 = auStack_1ac + uVar5 * 0xc;\n          do {\n            param_2 = &uStack_1b8;\n            puVar6 = param_1;\n            (*(code *)PTR___gmpz_tdiv_qr_000975d4)(auStack_1c4,&uStack_1b8,param_1,puVar9);\n            if (local_1b4 == 0) {\n              puVar7 = (uint *)((int)puVar7 + (1 << (uVar5 & 0x1f)));\n              param_2 = auStack_1c4;\n              (*(code *)PTR___gmpz_swap_00097468)(param_1);\n            }\n            uVar5 = uVar5 - 1;\n            (*(code *)PTR___gmpz_clear_00097308)(puVar9);\n            puVar9 = puVar9 + -0xc;\n          } while (uVar5 != 0xffffffff);\n        }\n        else {\n          (*(code *)PTR___gmpz_set_000974b8)(param_1);\n          puVar7 = (uint *)0x0;\n        }\n        (*(code *)PTR___gmpz_clear_00097308)(auStack_1c4);\n        (*(code *)PTR___gmpz_clear_00097308)(&uStack_1b8);\n        param_3 = puVar6;\n      }\n    }" { (if_statement "if ((uVar4 == 2) == uVar5) {\n        puVar7 = (uint *)(*(code *)PTR___gmpz_scan1_00097608)(param_2,0);\n        param_3 = puVar7;\n        (*(code *)PTR___gmpz_fdiv_q_2exp_00097438)(param_1);\n        if ((uVar8 >> 0x1f & (uint)puVar7) != 0) {\n          uVar5 = -param_1[1];\n          goto LAB_00032004;\n        }\n      }\n      else {\n        (*(code *)PTR___gmpz_init_00097130)(&uStack_1b8);\n        (*(code *)PTR___gmpz_init_00097130)(auStack_1c4);\n        puVar6 = param_2;\n        (*(code *)PTR___gmpz_tdiv_qr_000975d4)(auStack_1c4,&uStack_1b8,param_2,param_3);\n        if (local_1b4 == 0) {\n          (*(code *)PTR___gmpz_init_set_000975ec)(auStack_1ac,param_3);\n          (*(code *)PTR___gmpz_swap_00097468)(param_1,auStack_1c4);\n          if (local_1a8 < 0) {\n            local_1a8 = -local_1a8;\n          }\n          uVar5 = param_1[1];\n          if ((int)uVar5 < 0) {\n            uVar5 = -uVar5;\n          }\n          if ((int)uVar5 < local_1a8 * 2 + -1) {\n            puVar7 = (uint *)0x1;\n            uVar5 = 0;\n          }\n          else {\n            puVar9 = auStack_1a0;\n            uVar8 = 1;\n            do {\n              uVar5 = uVar8;\n              (*(code *)PTR___gmpz_init_00097130)(puVar9);\n              (*(code *)PTR___gmpz_mul_00097498)(puVar9,puVar9 + -0xc);\n              (*(code *)PTR___gmpz_tdiv_qr_000975d4)(auStack_1c4,&uStack_1b8,param_1,puVar9);\n              if (local_1b4 != 0) {\n                (*(code *)PTR___gmpz_clear_00097308)(puVar9);\n                puVar7 = (uint *)((1 << (uVar5 & 0x1f)) + -1);\n                uVar5 = uVar5 - 1;\n                goto LAB_000321c4;\n              }\n              (*(code *)PTR___gmpz_swap_00097468)(param_1,auStack_1c4);\n              uVar10 = param_1[1];\n              if ((int)uVar10 < 0) {\n                uVar10 = -uVar10;\n              }\n              iVar3 = *(int *)(puVar9 + 4);\n              if (iVar3 < 0) {\n                iVar3 = -iVar3;\n              }\n              puVar9 = puVar9 + 0xc;\n              uVar8 = uVar5 + 1;\n            } while (iVar3 * 2 + -1 <= (int)uVar10);\n            puVar7 = (uint *)((1 << (uVar5 + 1 & 0x1f)) + -1);\n          }\nLAB_000321c4:\n          puVar9 = auStack_1ac + uVar5 * 0xc;\n          do {\n            param_2 = &uStack_1b8;\n            puVar6 = param_1;\n            (*(code *)PTR___gmpz_tdiv_qr_000975d4)(auStack_1c4,&uStack_1b8,param_1,puVar9);\n            if (local_1b4 == 0) {\n              puVar7 = (uint *)((int)puVar7 + (1 << (uVar5 & 0x1f)));\n              param_2 = auStack_1c4;\n              (*(code *)PTR___gmpz_swap_00097468)(param_1);\n            }\n            uVar5 = uVar5 - 1;\n            (*(code *)PTR___gmpz_clear_00097308)(puVar9);\n            puVar9 = puVar9 + -0xc;\n          } while (uVar5 != 0xffffffff);\n        }\n        else {\n          (*(code *)PTR___gmpz_set_000974b8)(param_1);\n          puVar7 = (uint *)0x0;\n        }\n        (*(code *)PTR___gmpz_clear_00097308)(auStack_1c4);\n        (*(code *)PTR___gmpz_clear_00097308)(&uStack_1b8);\n        param_3 = puVar6;\n      }" if (parenthesized_expression "((uVar4 == 2) == uVar5)" ( (binary_expression "(uVar4 == 2) == uVar5" (parenthesized_expression "(uVar4 == 2)" ( (binary_expression "uVar4 == 2" identifier == number_literal) )) == identifier) )) (compound_statement "{\n        puVar7 = (uint *)(*(code *)PTR___gmpz_scan1_00097608)(param_2,0);\n        param_3 = puVar7;\n        (*(code *)PTR___gmpz_fdiv_q_2exp_00097438)(param_1);\n        if ((uVar8 >> 0x1f & (uint)puVar7) != 0) {\n          uVar5 = -param_1[1];\n          goto LAB_00032004;\n        }\n      }" { (expression_statement "puVar7 = (uint *)(*(code *)PTR___gmpz_scan1_00097608)(param_2,0);" (assignment_expression "puVar7 = (uint *)(*(code *)PTR___gmpz_scan1_00097608)(param_2,0)" identifier = (cast_expression "(uint *)(*(code *)PTR___gmpz_scan1_00097608)(param_2,0)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)PTR___gmpz_scan1_00097608)(param_2,0)" (parenthesized_expression "(*(code *)PTR___gmpz_scan1_00097608)" ( (pointer_expression "*(code *)PTR___gmpz_scan1_00097608" * (cast_expression "(code *)PTR___gmpz_scan1_00097608" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(param_2,0)" ( identifier , number_literal ))))) ;) (expression_statement "param_3 = puVar7;" (assignment_expression "param_3 = puVar7" identifier = identifier) ;) (expression_statement "(*(code *)PTR___gmpz_fdiv_q_2exp_00097438)(param_1);" (call_expression "(*(code *)PTR___gmpz_fdiv_q_2exp_00097438)(param_1)" (parenthesized_expression "(*(code *)PTR___gmpz_fdiv_q_2exp_00097438)" ( (pointer_expression "*(code *)PTR___gmpz_fdiv_q_2exp_00097438" * (cast_expression "(code *)PTR___gmpz_fdiv_q_2exp_00097438" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(param_1)" ( identifier ))) ;) (if_statement "if ((uVar8 >> 0x1f & (uint)puVar7) != 0) {\n          uVar5 = -param_1[1];\n          goto LAB_00032004;\n        }" if (parenthesized_expression "((uVar8 >> 0x1f & (uint)puVar7) != 0)" ( (binary_expression "(uVar8 >> 0x1f & (uint)puVar7) != 0" (parenthesized_expression "(uVar8 >> 0x1f & (uint)puVar7)" ( (binary_expression "uVar8 >> 0x1f & (uint)puVar7" (binary_expression "uVar8 >> 0x1f" identifier >> number_literal) & (cast_expression "(uint)puVar7" ( (type_descriptor "uint" type_identifier) ) identifier)) )) != number_literal) )) (compound_statement "{\n          uVar5 = -param_1[1];\n          goto LAB_00032004;\n        }" { (expression_statement "uVar5 = -param_1[1];" (assignment_expression "uVar5 = -param_1[1]" identifier = (unary_expression "-param_1[1]" - (subscript_expression "param_1[1]" identifier [ number_literal ]))) ;) (goto_statement "goto LAB_00032004;" goto statement_identifier ;) })) }) (else_clause "else {\n        (*(code *)PTR___gmpz_init_00097130)(&uStack_1b8);\n        (*(code *)PTR___gmpz_init_00097130)(auStack_1c4);\n        puVar6 = param_2;\n        (*(code *)PTR___gmpz_tdiv_qr_000975d4)(auStack_1c4,&uStack_1b8,param_2,param_3);\n        if (local_1b4 == 0) {\n          (*(code *)PTR___gmpz_init_set_000975ec)(auStack_1ac,param_3);\n          (*(code *)PTR___gmpz_swap_00097468)(param_1,auStack_1c4);\n          if (local_1a8 < 0) {\n            local_1a8 = -local_1a8;\n          }\n          uVar5 = param_1[1];\n          if ((int)uVar5 < 0) {\n            uVar5 = -uVar5;\n          }\n          if ((int)uVar5 < local_1a8 * 2 + -1) {\n            puVar7 = (uint *)0x1;\n            uVar5 = 0;\n          }\n          else {\n            puVar9 = auStack_1a0;\n            uVar8 = 1;\n            do {\n              uVar5 = uVar8;\n              (*(code *)PTR___gmpz_init_00097130)(puVar9);\n              (*(code *)PTR___gmpz_mul_00097498)(puVar9,puVar9 + -0xc);\n              (*(code *)PTR___gmpz_tdiv_qr_000975d4)(auStack_1c4,&uStack_1b8,param_1,puVar9);\n              if (local_1b4 != 0) {\n                (*(code *)PTR___gmpz_clear_00097308)(puVar9);\n                puVar7 = (uint *)((1 << (uVar5 & 0x1f)) + -1);\n                uVar5 = uVar5 - 1;\n                goto LAB_000321c4;\n              }\n              (*(code *)PTR___gmpz_swap_00097468)(param_1,auStack_1c4);\n              uVar10 = param_1[1];\n              if ((int)uVar10 < 0) {\n                uVar10 = -uVar10;\n              }\n              iVar3 = *(int *)(puVar9 + 4);\n              if (iVar3 < 0) {\n                iVar3 = -iVar3;\n              }\n              puVar9 = puVar9 + 0xc;\n              uVar8 = uVar5 + 1;\n            } while (iVar3 * 2 + -1 <= (int)uVar10);\n            puVar7 = (uint *)((1 << (uVar5 + 1 & 0x1f)) + -1);\n          }\nLAB_000321c4:\n          puVar9 = auStack_1ac + uVar5 * 0xc;\n          do {\n            param_2 = &uStack_1b8;\n            puVar6 = param_1;\n            (*(code *)PTR___gmpz_tdiv_qr_000975d4)(auStack_1c4,&uStack_1b8,param_1,puVar9);\n            if (local_1b4 == 0) {\n              puVar7 = (uint *)((int)puVar7 + (1 << (uVar5 & 0x1f)));\n              param_2 = auStack_1c4;\n              (*(code *)PTR___gmpz_swap_00097468)(param_1);\n            }\n            uVar5 = uVar5 - 1;\n            (*(code *)PTR___gmpz_clear_00097308)(puVar9);\n            puVar9 = puVar9 + -0xc;\n          } while (uVar5 != 0xffffffff);\n        }\n        else {\n          (*(code *)PTR___gmpz_set_000974b8)(param_1);\n          puVar7 = (uint *)0x0;\n        }\n        (*(code *)PTR___gmpz_clear_00097308)(auStack_1c4);\n        (*(code *)PTR___gmpz_clear_00097308)(&uStack_1b8);\n        param_3 = puVar6;\n      }" else (compound_statement "{\n        (*(code *)PTR___gmpz_init_00097130)(&uStack_1b8);\n        (*(code *)PTR___gmpz_init_00097130)(auStack_1c4);\n        puVar6 = param_2;\n        (*(code *)PTR___gmpz_tdiv_qr_000975d4)(auStack_1c4,&uStack_1b8,param_2,param_3);\n        if (local_1b4 == 0) {\n          (*(code *)PTR___gmpz_init_set_000975ec)(auStack_1ac,param_3);\n          (*(code *)PTR___gmpz_swap_00097468)(param_1,auStack_1c4);\n          if (local_1a8 < 0) {\n            local_1a8 = -local_1a8;\n          }\n          uVar5 = param_1[1];\n          if ((int)uVar5 < 0) {\n            uVar5 = -uVar5;\n          }\n          if ((int)uVar5 < local_1a8 * 2 + -1) {\n            puVar7 = (uint *)0x1;\n            uVar5 = 0;\n          }\n          else {\n            puVar9 = auStack_1a0;\n            uVar8 = 1;\n            do {\n              uVar5 = uVar8;\n              (*(code *)PTR___gmpz_init_00097130)(puVar9);\n              (*(code *)PTR___gmpz_mul_00097498)(puVar9,puVar9 + -0xc);\n              (*(code *)PTR___gmpz_tdiv_qr_000975d4)(auStack_1c4,&uStack_1b8,param_1,puVar9);\n              if (local_1b4 != 0) {\n                (*(code *)PTR___gmpz_clear_00097308)(puVar9);\n                puVar7 = (uint *)((1 << (uVar5 & 0x1f)) + -1);\n                uVar5 = uVar5 - 1;\n                goto LAB_000321c4;\n              }\n              (*(code *)PTR___gmpz_swap_00097468)(param_1,auStack_1c4);\n              uVar10 = param_1[1];\n              if ((int)uVar10 < 0) {\n                uVar10 = -uVar10;\n              }\n              iVar3 = *(int *)(puVar9 + 4);\n              if (iVar3 < 0) {\n                iVar3 = -iVar3;\n              }\n              puVar9 = puVar9 + 0xc;\n              uVar8 = uVar5 + 1;\n            } while (iVar3 * 2 + -1 <= (int)uVar10);\n            puVar7 = (uint *)((1 << (uVar5 + 1 & 0x1f)) + -1);\n          }\nLAB_000321c4:\n          puVar9 = auStack_1ac + uVar5 * 0xc;\n          do {\n            param_2 = &uStack_1b8;\n            puVar6 = param_1;\n            (*(code *)PTR___gmpz_tdiv_qr_000975d4)(auStack_1c4,&uStack_1b8,param_1,puVar9);\n            if (local_1b4 == 0) {\n              puVar7 = (uint *)((int)puVar7 + (1 << (uVar5 & 0x1f)));\n              param_2 = auStack_1c4;\n              (*(code *)PTR___gmpz_swap_00097468)(param_1);\n            }\n            uVar5 = uVar5 - 1;\n            (*(code *)PTR___gmpz_clear_00097308)(puVar9);\n            puVar9 = puVar9 + -0xc;\n          } while (uVar5 != 0xffffffff);\n        }\n        else {\n          (*(code *)PTR___gmpz_set_000974b8)(param_1);\n          puVar7 = (uint *)0x0;\n        }\n        (*(code *)PTR___gmpz_clear_00097308)(auStack_1c4);\n        (*(code *)PTR___gmpz_clear_00097308)(&uStack_1b8);\n        param_3 = puVar6;\n      }" { (expression_statement "(*(code *)PTR___gmpz_init_00097130)(&uStack_1b8);" (call_expression "(*(code *)PTR___gmpz_init_00097130)(&uStack_1b8)" (parenthesized_expression "(*(code *)PTR___gmpz_init_00097130)" ( (pointer_expression "*(code *)PTR___gmpz_init_00097130" * (cast_expression "(code *)PTR___gmpz_init_00097130" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(&uStack_1b8)" ( (pointer_expression "&uStack_1b8" & identifier) ))) ;) (expression_statement "(*(code *)PTR___gmpz_init_00097130)(auStack_1c4);" (call_expression "(*(code *)PTR___gmpz_init_00097130)(auStack_1c4)" (parenthesized_expression "(*(code *)PTR___gmpz_init_00097130)" ( (pointer_expression "*(code *)PTR___gmpz_init_00097130" * (cast_expression "(code *)PTR___gmpz_init_00097130" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(auStack_1c4)" ( identifier ))) ;) (expression_statement "puVar6 = param_2;" (assignment_expression "puVar6 = param_2" identifier = identifier) ;) (expression_statement "(*(code *)PTR___gmpz_tdiv_qr_000975d4)(auStack_1c4,&uStack_1b8,param_2,param_3);" (call_expression "(*(code *)PTR___gmpz_tdiv_qr_000975d4)(auStack_1c4,&uStack_1b8,param_2,param_3)" (parenthesized_expression "(*(code *)PTR___gmpz_tdiv_qr_000975d4)" ( (pointer_expression "*(code *)PTR___gmpz_tdiv_qr_000975d4" * (cast_expression "(code *)PTR___gmpz_tdiv_qr_000975d4" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(auStack_1c4,&uStack_1b8,param_2,param_3)" ( identifier , (pointer_expression "&uStack_1b8" & identifier) , identifier , identifier ))) ;) (if_statement "if (local_1b4 == 0) {\n          (*(code *)PTR___gmpz_init_set_000975ec)(auStack_1ac,param_3);\n          (*(code *)PTR___gmpz_swap_00097468)(param_1,auStack_1c4);\n          if (local_1a8 < 0) {\n            local_1a8 = -local_1a8;\n          }\n          uVar5 = param_1[1];\n          if ((int)uVar5 < 0) {\n            uVar5 = -uVar5;\n          }\n          if ((int)uVar5 < local_1a8 * 2 + -1) {\n            puVar7 = (uint *)0x1;\n            uVar5 = 0;\n          }\n          else {\n            puVar9 = auStack_1a0;\n            uVar8 = 1;\n            do {\n              uVar5 = uVar8;\n              (*(code *)PTR___gmpz_init_00097130)(puVar9);\n              (*(code *)PTR___gmpz_mul_00097498)(puVar9,puVar9 + -0xc);\n              (*(code *)PTR___gmpz_tdiv_qr_000975d4)(auStack_1c4,&uStack_1b8,param_1,puVar9);\n              if (local_1b4 != 0) {\n                (*(code *)PTR___gmpz_clear_00097308)(puVar9);\n                puVar7 = (uint *)((1 << (uVar5 & 0x1f)) + -1);\n                uVar5 = uVar5 - 1;\n                goto LAB_000321c4;\n              }\n              (*(code *)PTR___gmpz_swap_00097468)(param_1,auStack_1c4);\n              uVar10 = param_1[1];\n              if ((int)uVar10 < 0) {\n                uVar10 = -uVar10;\n              }\n              iVar3 = *(int *)(puVar9 + 4);\n              if (iVar3 < 0) {\n                iVar3 = -iVar3;\n              }\n              puVar9 = puVar9 + 0xc;\n              uVar8 = uVar5 + 1;\n            } while (iVar3 * 2 + -1 <= (int)uVar10);\n            puVar7 = (uint *)((1 << (uVar5 + 1 & 0x1f)) + -1);\n          }\nLAB_000321c4:\n          puVar9 = auStack_1ac + uVar5 * 0xc;\n          do {\n            param_2 = &uStack_1b8;\n            puVar6 = param_1;\n            (*(code *)PTR___gmpz_tdiv_qr_000975d4)(auStack_1c4,&uStack_1b8,param_1,puVar9);\n            if (local_1b4 == 0) {\n              puVar7 = (uint *)((int)puVar7 + (1 << (uVar5 & 0x1f)));\n              param_2 = auStack_1c4;\n              (*(code *)PTR___gmpz_swap_00097468)(param_1);\n            }\n            uVar5 = uVar5 - 1;\n            (*(code *)PTR___gmpz_clear_00097308)(puVar9);\n            puVar9 = puVar9 + -0xc;\n          } while (uVar5 != 0xffffffff);\n        }\n        else {\n          (*(code *)PTR___gmpz_set_000974b8)(param_1);\n          puVar7 = (uint *)0x0;\n        }" if (parenthesized_expression "(local_1b4 == 0)" ( (binary_expression "local_1b4 == 0" identifier == number_literal) )) (compound_statement "{\n          (*(code *)PTR___gmpz_init_set_000975ec)(auStack_1ac,param_3);\n          (*(code *)PTR___gmpz_swap_00097468)(param_1,auStack_1c4);\n          if (local_1a8 < 0) {\n            local_1a8 = -local_1a8;\n          }\n          uVar5 = param_1[1];\n          if ((int)uVar5 < 0) {\n            uVar5 = -uVar5;\n          }\n          if ((int)uVar5 < local_1a8 * 2 + -1) {\n            puVar7 = (uint *)0x1;\n            uVar5 = 0;\n          }\n          else {\n            puVar9 = auStack_1a0;\n            uVar8 = 1;\n            do {\n              uVar5 = uVar8;\n              (*(code *)PTR___gmpz_init_00097130)(puVar9);\n              (*(code *)PTR___gmpz_mul_00097498)(puVar9,puVar9 + -0xc);\n              (*(code *)PTR___gmpz_tdiv_qr_000975d4)(auStack_1c4,&uStack_1b8,param_1,puVar9);\n              if (local_1b4 != 0) {\n                (*(code *)PTR___gmpz_clear_00097308)(puVar9);\n                puVar7 = (uint *)((1 << (uVar5 & 0x1f)) + -1);\n                uVar5 = uVar5 - 1;\n                goto LAB_000321c4;\n              }\n              (*(code *)PTR___gmpz_swap_00097468)(param_1,auStack_1c4);\n              uVar10 = param_1[1];\n              if ((int)uVar10 < 0) {\n                uVar10 = -uVar10;\n              }\n              iVar3 = *(int *)(puVar9 + 4);\n              if (iVar3 < 0) {\n                iVar3 = -iVar3;\n              }\n              puVar9 = puVar9 + 0xc;\n              uVar8 = uVar5 + 1;\n            } while (iVar3 * 2 + -1 <= (int)uVar10);\n            puVar7 = (uint *)((1 << (uVar5 + 1 & 0x1f)) + -1);\n          }\nLAB_000321c4:\n          puVar9 = auStack_1ac + uVar5 * 0xc;\n          do {\n            param_2 = &uStack_1b8;\n            puVar6 = param_1;\n            (*(code *)PTR___gmpz_tdiv_qr_000975d4)(auStack_1c4,&uStack_1b8,param_1,puVar9);\n            if (local_1b4 == 0) {\n              puVar7 = (uint *)((int)puVar7 + (1 << (uVar5 & 0x1f)));\n              param_2 = auStack_1c4;\n              (*(code *)PTR___gmpz_swap_00097468)(param_1);\n            }\n            uVar5 = uVar5 - 1;\n            (*(code *)PTR___gmpz_clear_00097308)(puVar9);\n            puVar9 = puVar9 + -0xc;\n          } while (uVar5 != 0xffffffff);\n        }" { (expression_statement "(*(code *)PTR___gmpz_init_set_000975ec)(auStack_1ac,param_3);" (call_expression "(*(code *)PTR___gmpz_init_set_000975ec)(auStack_1ac,param_3)" (parenthesized_expression "(*(code *)PTR___gmpz_init_set_000975ec)" ( (pointer_expression "*(code *)PTR___gmpz_init_set_000975ec" * (cast_expression "(code *)PTR___gmpz_init_set_000975ec" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(auStack_1ac,param_3)" ( identifier , identifier ))) ;) (expression_statement "(*(code *)PTR___gmpz_swap_00097468)(param_1,auStack_1c4);" (call_expression "(*(code *)PTR___gmpz_swap_00097468)(param_1,auStack_1c4)" (parenthesized_expression "(*(code *)PTR___gmpz_swap_00097468)" ( (pointer_expression "*(code *)PTR___gmpz_swap_00097468" * (cast_expression "(code *)PTR___gmpz_swap_00097468" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(param_1,auStack_1c4)" ( identifier , identifier ))) ;) (if_statement "if (local_1a8 < 0) {\n            local_1a8 = -local_1a8;\n          }" if (parenthesized_expression "(local_1a8 < 0)" ( (binary_expression "local_1a8 < 0" identifier < number_literal) )) (compound_statement "{\n            local_1a8 = -local_1a8;\n          }" { (expression_statement "local_1a8 = -local_1a8;" (assignment_expression "local_1a8 = -local_1a8" identifier = (unary_expression "-local_1a8" - identifier)) ;) })) (expression_statement "uVar5 = param_1[1];" (assignment_expression "uVar5 = param_1[1]" identifier = (subscript_expression "param_1[1]" identifier [ number_literal ])) ;) (if_statement "if ((int)uVar5 < 0) {\n            uVar5 = -uVar5;\n          }" if (parenthesized_expression "((int)uVar5 < 0)" ( (binary_expression "(int)uVar5 < 0" (cast_expression "(int)uVar5" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n            uVar5 = -uVar5;\n          }" { (expression_statement "uVar5 = -uVar5;" (assignment_expression "uVar5 = -uVar5" identifier = (unary_expression "-uVar5" - identifier)) ;) })) (if_statement "if ((int)uVar5 < local_1a8 * 2 + -1) {\n            puVar7 = (uint *)0x1;\n            uVar5 = 0;\n          }\n          else {\n            puVar9 = auStack_1a0;\n            uVar8 = 1;\n            do {\n              uVar5 = uVar8;\n              (*(code *)PTR___gmpz_init_00097130)(puVar9);\n              (*(code *)PTR___gmpz_mul_00097498)(puVar9,puVar9 + -0xc);\n              (*(code *)PTR___gmpz_tdiv_qr_000975d4)(auStack_1c4,&uStack_1b8,param_1,puVar9);\n              if (local_1b4 != 0) {\n                (*(code *)PTR___gmpz_clear_00097308)(puVar9);\n                puVar7 = (uint *)((1 << (uVar5 & 0x1f)) + -1);\n                uVar5 = uVar5 - 1;\n                goto LAB_000321c4;\n              }\n              (*(code *)PTR___gmpz_swap_00097468)(param_1,auStack_1c4);\n              uVar10 = param_1[1];\n              if ((int)uVar10 < 0) {\n                uVar10 = -uVar10;\n              }\n              iVar3 = *(int *)(puVar9 + 4);\n              if (iVar3 < 0) {\n                iVar3 = -iVar3;\n              }\n              puVar9 = puVar9 + 0xc;\n              uVar8 = uVar5 + 1;\n            } while (iVar3 * 2 + -1 <= (int)uVar10);\n            puVar7 = (uint *)((1 << (uVar5 + 1 & 0x1f)) + -1);\n          }" if (parenthesized_expression "((int)uVar5 < local_1a8 * 2 + -1)" ( (binary_expression "(int)uVar5 < local_1a8 * 2 + -1" (cast_expression "(int)uVar5" ( (type_descriptor "int" primitive_type) ) identifier) < (binary_expression "local_1a8 * 2 + -1" (binary_expression "local_1a8 * 2" identifier * number_literal) + number_literal)) )) (compound_statement "{\n            puVar7 = (uint *)0x1;\n            uVar5 = 0;\n          }" { (expression_statement "puVar7 = (uint *)0x1;" (assignment_expression "puVar7 = (uint *)0x1" identifier = (cast_expression "(uint *)0x1" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "uVar5 = 0;" (assignment_expression "uVar5 = 0" identifier = number_literal) ;) }) (else_clause "else {\n            puVar9 = auStack_1a0;\n            uVar8 = 1;\n            do {\n              uVar5 = uVar8;\n              (*(code *)PTR___gmpz_init_00097130)(puVar9);\n              (*(code *)PTR___gmpz_mul_00097498)(puVar9,puVar9 + -0xc);\n              (*(code *)PTR___gmpz_tdiv_qr_000975d4)(auStack_1c4,&uStack_1b8,param_1,puVar9);\n              if (local_1b4 != 0) {\n                (*(code *)PTR___gmpz_clear_00097308)(puVar9);\n                puVar7 = (uint *)((1 << (uVar5 & 0x1f)) + -1);\n                uVar5 = uVar5 - 1;\n                goto LAB_000321c4;\n              }\n              (*(code *)PTR___gmpz_swap_00097468)(param_1,auStack_1c4);\n              uVar10 = param_1[1];\n              if ((int)uVar10 < 0) {\n                uVar10 = -uVar10;\n              }\n              iVar3 = *(int *)(puVar9 + 4);\n              if (iVar3 < 0) {\n                iVar3 = -iVar3;\n              }\n              puVar9 = puVar9 + 0xc;\n              uVar8 = uVar5 + 1;\n            } while (iVar3 * 2 + -1 <= (int)uVar10);\n            puVar7 = (uint *)((1 << (uVar5 + 1 & 0x1f)) + -1);\n          }" else (compound_statement "{\n            puVar9 = auStack_1a0;\n            uVar8 = 1;\n            do {\n              uVar5 = uVar8;\n              (*(code *)PTR___gmpz_init_00097130)(puVar9);\n              (*(code *)PTR___gmpz_mul_00097498)(puVar9,puVar9 + -0xc);\n              (*(code *)PTR___gmpz_tdiv_qr_000975d4)(auStack_1c4,&uStack_1b8,param_1,puVar9);\n              if (local_1b4 != 0) {\n                (*(code *)PTR___gmpz_clear_00097308)(puVar9);\n                puVar7 = (uint *)((1 << (uVar5 & 0x1f)) + -1);\n                uVar5 = uVar5 - 1;\n                goto LAB_000321c4;\n              }\n              (*(code *)PTR___gmpz_swap_00097468)(param_1,auStack_1c4);\n              uVar10 = param_1[1];\n              if ((int)uVar10 < 0) {\n                uVar10 = -uVar10;\n              }\n              iVar3 = *(int *)(puVar9 + 4);\n              if (iVar3 < 0) {\n                iVar3 = -iVar3;\n              }\n              puVar9 = puVar9 + 0xc;\n              uVar8 = uVar5 + 1;\n            } while (iVar3 * 2 + -1 <= (int)uVar10);\n            puVar7 = (uint *)((1 << (uVar5 + 1 & 0x1f)) + -1);\n          }" { (expression_statement "puVar9 = auStack_1a0;" (assignment_expression "puVar9 = auStack_1a0" identifier = identifier) ;) (expression_statement "uVar8 = 1;" (assignment_expression "uVar8 = 1" identifier = number_literal) ;) (do_statement "do {\n              uVar5 = uVar8;\n              (*(code *)PTR___gmpz_init_00097130)(puVar9);\n              (*(code *)PTR___gmpz_mul_00097498)(puVar9,puVar9 + -0xc);\n              (*(code *)PTR___gmpz_tdiv_qr_000975d4)(auStack_1c4,&uStack_1b8,param_1,puVar9);\n              if (local_1b4 != 0) {\n                (*(code *)PTR___gmpz_clear_00097308)(puVar9);\n                puVar7 = (uint *)((1 << (uVar5 & 0x1f)) + -1);\n                uVar5 = uVar5 - 1;\n                goto LAB_000321c4;\n              }\n              (*(code *)PTR___gmpz_swap_00097468)(param_1,auStack_1c4);\n              uVar10 = param_1[1];\n              if ((int)uVar10 < 0) {\n                uVar10 = -uVar10;\n              }\n              iVar3 = *(int *)(puVar9 + 4);\n              if (iVar3 < 0) {\n                iVar3 = -iVar3;\n              }\n              puVar9 = puVar9 + 0xc;\n              uVar8 = uVar5 + 1;\n            } while (iVar3 * 2 + -1 <= (int)uVar10);" do (compound_statement "{\n              uVar5 = uVar8;\n              (*(code *)PTR___gmpz_init_00097130)(puVar9);\n              (*(code *)PTR___gmpz_mul_00097498)(puVar9,puVar9 + -0xc);\n              (*(code *)PTR___gmpz_tdiv_qr_000975d4)(auStack_1c4,&uStack_1b8,param_1,puVar9);\n              if (local_1b4 != 0) {\n                (*(code *)PTR___gmpz_clear_00097308)(puVar9);\n                puVar7 = (uint *)((1 << (uVar5 & 0x1f)) + -1);\n                uVar5 = uVar5 - 1;\n                goto LAB_000321c4;\n              }\n              (*(code *)PTR___gmpz_swap_00097468)(param_1,auStack_1c4);\n              uVar10 = param_1[1];\n              if ((int)uVar10 < 0) {\n                uVar10 = -uVar10;\n              }\n              iVar3 = *(int *)(puVar9 + 4);\n              if (iVar3 < 0) {\n                iVar3 = -iVar3;\n              }\n              puVar9 = puVar9 + 0xc;\n              uVar8 = uVar5 + 1;\n            }" { (expression_statement "uVar5 = uVar8;" (assignment_expression "uVar5 = uVar8" identifier = identifier) ;) (expression_statement "(*(code *)PTR___gmpz_init_00097130)(puVar9);" (call_expression "(*(code *)PTR___gmpz_init_00097130)(puVar9)" (parenthesized_expression "(*(code *)PTR___gmpz_init_00097130)" ( (pointer_expression "*(code *)PTR___gmpz_init_00097130" * (cast_expression "(code *)PTR___gmpz_init_00097130" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(puVar9)" ( identifier ))) ;) (expression_statement "(*(code *)PTR___gmpz_mul_00097498)(puVar9,puVar9 + -0xc);" (call_expression "(*(code *)PTR___gmpz_mul_00097498)(puVar9,puVar9 + -0xc)" (parenthesized_expression "(*(code *)PTR___gmpz_mul_00097498)" ( (pointer_expression "*(code *)PTR___gmpz_mul_00097498" * (cast_expression "(code *)PTR___gmpz_mul_00097498" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(puVar9,puVar9 + -0xc)" ( identifier , (binary_expression "puVar9 + -0xc" identifier + number_literal) ))) ;) (expression_statement "(*(code *)PTR___gmpz_tdiv_qr_000975d4)(auStack_1c4,&uStack_1b8,param_1,puVar9);" (call_expression "(*(code *)PTR___gmpz_tdiv_qr_000975d4)(auStack_1c4,&uStack_1b8,param_1,puVar9)" (parenthesized_expression "(*(code *)PTR___gmpz_tdiv_qr_000975d4)" ( (pointer_expression "*(code *)PTR___gmpz_tdiv_qr_000975d4" * (cast_expression "(code *)PTR___gmpz_tdiv_qr_000975d4" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(auStack_1c4,&uStack_1b8,param_1,puVar9)" ( identifier , (pointer_expression "&uStack_1b8" & identifier) , identifier , identifier ))) ;) (if_statement "if (local_1b4 != 0) {\n                (*(code *)PTR___gmpz_clear_00097308)(puVar9);\n                puVar7 = (uint *)((1 << (uVar5 & 0x1f)) + -1);\n                uVar5 = uVar5 - 1;\n                goto LAB_000321c4;\n              }" if (parenthesized_expression "(local_1b4 != 0)" ( (binary_expression "local_1b4 != 0" identifier != number_literal) )) (compound_statement "{\n                (*(code *)PTR___gmpz_clear_00097308)(puVar9);\n                puVar7 = (uint *)((1 << (uVar5 & 0x1f)) + -1);\n                uVar5 = uVar5 - 1;\n                goto LAB_000321c4;\n              }" { (expression_statement "(*(code *)PTR___gmpz_clear_00097308)(puVar9);" (call_expression "(*(code *)PTR___gmpz_clear_00097308)(puVar9)" (parenthesized_expression "(*(code *)PTR___gmpz_clear_00097308)" ( (pointer_expression "*(code *)PTR___gmpz_clear_00097308" * (cast_expression "(code *)PTR___gmpz_clear_00097308" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(puVar9)" ( identifier ))) ;) (expression_statement "puVar7 = (uint *)((1 << (uVar5 & 0x1f)) + -1);" (assignment_expression "puVar7 = (uint *)((1 << (uVar5 & 0x1f)) + -1)" identifier = (cast_expression "(uint *)((1 << (uVar5 & 0x1f)) + -1)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((1 << (uVar5 & 0x1f)) + -1)" ( (binary_expression "(1 << (uVar5 & 0x1f)) + -1" (parenthesized_expression "(1 << (uVar5 & 0x1f))" ( (binary_expression "1 << (uVar5 & 0x1f)" number_literal << (parenthesized_expression "(uVar5 & 0x1f)" ( (binary_expression "uVar5 & 0x1f" identifier & number_literal) ))) )) + number_literal) )))) ;) (expression_statement "uVar5 = uVar5 - 1;" (assignment_expression "uVar5 = uVar5 - 1" identifier = (binary_expression "uVar5 - 1" identifier - number_literal)) ;) (goto_statement "goto LAB_000321c4;" goto statement_identifier ;) })) (expression_statement "(*(code *)PTR___gmpz_swap_00097468)(param_1,auStack_1c4);" (call_expression "(*(code *)PTR___gmpz_swap_00097468)(param_1,auStack_1c4)" (parenthesized_expression "(*(code *)PTR___gmpz_swap_00097468)" ( (pointer_expression "*(code *)PTR___gmpz_swap_00097468" * (cast_expression "(code *)PTR___gmpz_swap_00097468" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(param_1,auStack_1c4)" ( identifier , identifier ))) ;) (expression_statement "uVar10 = param_1[1];" (assignment_expression "uVar10 = param_1[1]" identifier = (subscript_expression "param_1[1]" identifier [ number_literal ])) ;) (if_statement "if ((int)uVar10 < 0) {\n                uVar10 = -uVar10;\n              }" if (parenthesized_expression "((int)uVar10 < 0)" ( (binary_expression "(int)uVar10 < 0" (cast_expression "(int)uVar10" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n                uVar10 = -uVar10;\n              }" { (expression_statement "uVar10 = -uVar10;" (assignment_expression "uVar10 = -uVar10" identifier = (unary_expression "-uVar10" - identifier)) ;) })) (expression_statement "iVar3 = *(int *)(puVar9 + 4);" (assignment_expression "iVar3 = *(int *)(puVar9 + 4)" identifier = (pointer_expression "*(int *)(puVar9 + 4)" * (cast_expression "(int *)(puVar9 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar9 + 4)" ( (binary_expression "puVar9 + 4" identifier + number_literal) ))))) ;) (if_statement "if (iVar3 < 0) {\n                iVar3 = -iVar3;\n              }" if (parenthesized_expression "(iVar3 < 0)" ( (binary_expression "iVar3 < 0" identifier < number_literal) )) (compound_statement "{\n                iVar3 = -iVar3;\n              }" { (expression_statement "iVar3 = -iVar3;" (assignment_expression "iVar3 = -iVar3" identifier = (unary_expression "-iVar3" - identifier)) ;) })) (expression_statement "puVar9 = puVar9 + 0xc;" (assignment_expression "puVar9 = puVar9 + 0xc" identifier = (binary_expression "puVar9 + 0xc" identifier + number_literal)) ;) (expression_statement "uVar8 = uVar5 + 1;" (assignment_expression "uVar8 = uVar5 + 1" identifier = (binary_expression "uVar5 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar3 * 2 + -1 <= (int)uVar10)" ( (binary_expression "iVar3 * 2 + -1 <= (int)uVar10" (binary_expression "iVar3 * 2 + -1" (binary_expression "iVar3 * 2" identifier * number_literal) + number_literal) <= (cast_expression "(int)uVar10" ( (type_descriptor "int" primitive_type) ) identifier)) )) ;) (expression_statement "puVar7 = (uint *)((1 << (uVar5 + 1 & 0x1f)) + -1);" (assignment_expression "puVar7 = (uint *)((1 << (uVar5 + 1 & 0x1f)) + -1)" identifier = (cast_expression "(uint *)((1 << (uVar5 + 1 & 0x1f)) + -1)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((1 << (uVar5 + 1 & 0x1f)) + -1)" ( (binary_expression "(1 << (uVar5 + 1 & 0x1f)) + -1" (parenthesized_expression "(1 << (uVar5 + 1 & 0x1f))" ( (binary_expression "1 << (uVar5 + 1 & 0x1f)" number_literal << (parenthesized_expression "(uVar5 + 1 & 0x1f)" ( (binary_expression "uVar5 + 1 & 0x1f" (binary_expression "uVar5 + 1" identifier + number_literal) & number_literal) ))) )) + number_literal) )))) ;) }))) (labeled_statement "LAB_000321c4:\n          puVar9 = auStack_1ac + uVar5 * 0xc;" statement_identifier : (expression_statement "puVar9 = auStack_1ac + uVar5 * 0xc;" (assignment_expression "puVar9 = auStack_1ac + uVar5 * 0xc" identifier = (binary_expression "auStack_1ac + uVar5 * 0xc" identifier + (binary_expression "uVar5 * 0xc" identifier * number_literal))) ;)) (do_statement "do {\n            param_2 = &uStack_1b8;\n            puVar6 = param_1;\n            (*(code *)PTR___gmpz_tdiv_qr_000975d4)(auStack_1c4,&uStack_1b8,param_1,puVar9);\n            if (local_1b4 == 0) {\n              puVar7 = (uint *)((int)puVar7 + (1 << (uVar5 & 0x1f)));\n              param_2 = auStack_1c4;\n              (*(code *)PTR___gmpz_swap_00097468)(param_1);\n            }\n            uVar5 = uVar5 - 1;\n            (*(code *)PTR___gmpz_clear_00097308)(puVar9);\n            puVar9 = puVar9 + -0xc;\n          } while (uVar5 != 0xffffffff);" do (compound_statement "{\n            param_2 = &uStack_1b8;\n            puVar6 = param_1;\n            (*(code *)PTR___gmpz_tdiv_qr_000975d4)(auStack_1c4,&uStack_1b8,param_1,puVar9);\n            if (local_1b4 == 0) {\n              puVar7 = (uint *)((int)puVar7 + (1 << (uVar5 & 0x1f)));\n              param_2 = auStack_1c4;\n              (*(code *)PTR___gmpz_swap_00097468)(param_1);\n            }\n            uVar5 = uVar5 - 1;\n            (*(code *)PTR___gmpz_clear_00097308)(puVar9);\n            puVar9 = puVar9 + -0xc;\n          }" { (expression_statement "param_2 = &uStack_1b8;" (assignment_expression "param_2 = &uStack_1b8" identifier = (pointer_expression "&uStack_1b8" & identifier)) ;) (expression_statement "puVar6 = param_1;" (assignment_expression "puVar6 = param_1" identifier = identifier) ;) (expression_statement "(*(code *)PTR___gmpz_tdiv_qr_000975d4)(auStack_1c4,&uStack_1b8,param_1,puVar9);" (call_expression "(*(code *)PTR___gmpz_tdiv_qr_000975d4)(auStack_1c4,&uStack_1b8,param_1,puVar9)" (parenthesized_expression "(*(code *)PTR___gmpz_tdiv_qr_000975d4)" ( (pointer_expression "*(code *)PTR___gmpz_tdiv_qr_000975d4" * (cast_expression "(code *)PTR___gmpz_tdiv_qr_000975d4" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(auStack_1c4,&uStack_1b8,param_1,puVar9)" ( identifier , (pointer_expression "&uStack_1b8" & identifier) , identifier , identifier ))) ;) (if_statement "if (local_1b4 == 0) {\n              puVar7 = (uint *)((int)puVar7 + (1 << (uVar5 & 0x1f)));\n              param_2 = auStack_1c4;\n              (*(code *)PTR___gmpz_swap_00097468)(param_1);\n            }" if (parenthesized_expression "(local_1b4 == 0)" ( (binary_expression "local_1b4 == 0" identifier == number_literal) )) (compound_statement "{\n              puVar7 = (uint *)((int)puVar7 + (1 << (uVar5 & 0x1f)));\n              param_2 = auStack_1c4;\n              (*(code *)PTR___gmpz_swap_00097468)(param_1);\n            }" { (expression_statement "puVar7 = (uint *)((int)puVar7 + (1 << (uVar5 & 0x1f)));" (assignment_expression "puVar7 = (uint *)((int)puVar7 + (1 << (uVar5 & 0x1f)))" identifier = (cast_expression "(uint *)((int)puVar7 + (1 << (uVar5 & 0x1f)))" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar7 + (1 << (uVar5 & 0x1f)))" ( (binary_expression "(int)puVar7 + (1 << (uVar5 & 0x1f))" (cast_expression "(int)puVar7" ( (type_descriptor "int" primitive_type) ) identifier) + (parenthesized_expression "(1 << (uVar5 & 0x1f))" ( (binary_expression "1 << (uVar5 & 0x1f)" number_literal << (parenthesized_expression "(uVar5 & 0x1f)" ( (binary_expression "uVar5 & 0x1f" identifier & number_literal) ))) ))) )))) ;) (expression_statement "param_2 = auStack_1c4;" (assignment_expression "param_2 = auStack_1c4" identifier = identifier) ;) (expression_statement "(*(code *)PTR___gmpz_swap_00097468)(param_1);" (call_expression "(*(code *)PTR___gmpz_swap_00097468)(param_1)" (parenthesized_expression "(*(code *)PTR___gmpz_swap_00097468)" ( (pointer_expression "*(code *)PTR___gmpz_swap_00097468" * (cast_expression "(code *)PTR___gmpz_swap_00097468" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(param_1)" ( identifier ))) ;) })) (expression_statement "uVar5 = uVar5 - 1;" (assignment_expression "uVar5 = uVar5 - 1" identifier = (binary_expression "uVar5 - 1" identifier - number_literal)) ;) (expression_statement "(*(code *)PTR___gmpz_clear_00097308)(puVar9);" (call_expression "(*(code *)PTR___gmpz_clear_00097308)(puVar9)" (parenthesized_expression "(*(code *)PTR___gmpz_clear_00097308)" ( (pointer_expression "*(code *)PTR___gmpz_clear_00097308" * (cast_expression "(code *)PTR___gmpz_clear_00097308" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(puVar9)" ( identifier ))) ;) (expression_statement "puVar9 = puVar9 + -0xc;" (assignment_expression "puVar9 = puVar9 + -0xc" identifier = (binary_expression "puVar9 + -0xc" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar5 != 0xffffffff)" ( (binary_expression "uVar5 != 0xffffffff" identifier != number_literal) )) ;) }) (else_clause "else {\n          (*(code *)PTR___gmpz_set_000974b8)(param_1);\n          puVar7 = (uint *)0x0;\n        }" else (compound_statement "{\n          (*(code *)PTR___gmpz_set_000974b8)(param_1);\n          puVar7 = (uint *)0x0;\n        }" { (expression_statement "(*(code *)PTR___gmpz_set_000974b8)(param_1);" (call_expression "(*(code *)PTR___gmpz_set_000974b8)(param_1)" (parenthesized_expression "(*(code *)PTR___gmpz_set_000974b8)" ( (pointer_expression "*(code *)PTR___gmpz_set_000974b8" * (cast_expression "(code *)PTR___gmpz_set_000974b8" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(param_1)" ( identifier ))) ;) (expression_statement "puVar7 = (uint *)0x0;" (assignment_expression "puVar7 = (uint *)0x0" identifier = (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) }))) (expression_statement "(*(code *)PTR___gmpz_clear_00097308)(auStack_1c4);" (call_expression "(*(code *)PTR___gmpz_clear_00097308)(auStack_1c4)" (parenthesized_expression "(*(code *)PTR___gmpz_clear_00097308)" ( (pointer_expression "*(code *)PTR___gmpz_clear_00097308" * (cast_expression "(code *)PTR___gmpz_clear_00097308" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(auStack_1c4)" ( identifier ))) ;) (expression_statement "(*(code *)PTR___gmpz_clear_00097308)(&uStack_1b8);" (call_expression "(*(code *)PTR___gmpz_clear_00097308)(&uStack_1b8)" (parenthesized_expression "(*(code *)PTR___gmpz_clear_00097308)" ( (pointer_expression "*(code *)PTR___gmpz_clear_00097308" * (cast_expression "(code *)PTR___gmpz_clear_00097308" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(&uStack_1b8)" ( (pointer_expression "&uStack_1b8" & identifier) ))) ;) (expression_statement "param_3 = puVar6;" (assignment_expression "param_3 = puVar6" identifier = identifier) ;) }))) }) (else_clause "else {\n      local_1c8 = uVar10;\n      if ((int)uVar10 < 0) {\n        local_1c8 = -uVar10;\n      }\n      if ((int)*param_1 < (int)local_1c8) {\n        uVar4 = (*(code *)PTR___gmpz_realloc_000975bc)(param_1,local_1c8);\n        puVar7 = (uint *)param_3[2];\n      }\n      else {\n        uVar4 = param_1[2];\n      }\n      param_3 = (uint *)param_2[2];\n      param_2 = &local_1c8;\n      puVar7 = (uint *)(*(code *)PTR___gmpn_remove_00097294)\n                                 (uVar4,param_2,param_3,local_1c8,puVar7,uVar5,0xffffffff);\n      uVar5 = local_1c8;\n      if ((uVar8 >> 0x1f & (uint)puVar7) != uVar10 >> 0x1f) {\n        uVar5 = -local_1c8;\n      }\nLAB_00032004:\n      param_1[1] = uVar5;\n    }" else (compound_statement "{\n      local_1c8 = uVar10;\n      if ((int)uVar10 < 0) {\n        local_1c8 = -uVar10;\n      }\n      if ((int)*param_1 < (int)local_1c8) {\n        uVar4 = (*(code *)PTR___gmpz_realloc_000975bc)(param_1,local_1c8);\n        puVar7 = (uint *)param_3[2];\n      }\n      else {\n        uVar4 = param_1[2];\n      }\n      param_3 = (uint *)param_2[2];\n      param_2 = &local_1c8;\n      puVar7 = (uint *)(*(code *)PTR___gmpn_remove_00097294)\n                                 (uVar4,param_2,param_3,local_1c8,puVar7,uVar5,0xffffffff);\n      uVar5 = local_1c8;\n      if ((uVar8 >> 0x1f & (uint)puVar7) != uVar10 >> 0x1f) {\n        uVar5 = -local_1c8;\n      }\nLAB_00032004:\n      param_1[1] = uVar5;\n    }" { (expression_statement "local_1c8 = uVar10;" (assignment_expression "local_1c8 = uVar10" identifier = identifier) ;) (if_statement "if ((int)uVar10 < 0) {\n        local_1c8 = -uVar10;\n      }" if (parenthesized_expression "((int)uVar10 < 0)" ( (binary_expression "(int)uVar10 < 0" (cast_expression "(int)uVar10" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n        local_1c8 = -uVar10;\n      }" { (expression_statement "local_1c8 = -uVar10;" (assignment_expression "local_1c8 = -uVar10" identifier = (unary_expression "-uVar10" - identifier)) ;) })) (if_statement "if ((int)*param_1 < (int)local_1c8) {\n        uVar4 = (*(code *)PTR___gmpz_realloc_000975bc)(param_1,local_1c8);\n        puVar7 = (uint *)param_3[2];\n      }\n      else {\n        uVar4 = param_1[2];\n      }" if (parenthesized_expression "((int)*param_1 < (int)local_1c8)" ( (binary_expression "(int)*param_1 < (int)local_1c8" (cast_expression "(int)*param_1" ( (type_descriptor "int" primitive_type) ) (pointer_expression "*param_1" * identifier)) < (cast_expression "(int)local_1c8" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n        uVar4 = (*(code *)PTR___gmpz_realloc_000975bc)(param_1,local_1c8);\n        puVar7 = (uint *)param_3[2];\n      }" { (expression_statement "uVar4 = (*(code *)PTR___gmpz_realloc_000975bc)(param_1,local_1c8);" (assignment_expression "uVar4 = (*(code *)PTR___gmpz_realloc_000975bc)(param_1,local_1c8)" identifier = (call_expression "(*(code *)PTR___gmpz_realloc_000975bc)(param_1,local_1c8)" (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,local_1c8)" ( identifier , identifier )))) ;) (expression_statement "puVar7 = (uint *)param_3[2];" (assignment_expression "puVar7 = (uint *)param_3[2]" identifier = (cast_expression "(uint *)param_3[2]" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_3[2]" identifier [ number_literal ]))) ;) }) (else_clause "else {\n        uVar4 = param_1[2];\n      }" else (compound_statement "{\n        uVar4 = param_1[2];\n      }" { (expression_statement "uVar4 = param_1[2];" (assignment_expression "uVar4 = param_1[2]" identifier = (subscript_expression "param_1[2]" identifier [ number_literal ])) ;) }))) (expression_statement "param_3 = (uint *)param_2[2];" (assignment_expression "param_3 = (uint *)param_2[2]" identifier = (cast_expression "(uint *)param_2[2]" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_2[2]" identifier [ number_literal ]))) ;) (expression_statement "param_2 = &local_1c8;" (assignment_expression "param_2 = &local_1c8" identifier = (pointer_expression "&local_1c8" & identifier)) ;) (expression_statement "puVar7 = (uint *)(*(code *)PTR___gmpn_remove_00097294)\n                                 (uVar4,param_2,param_3,local_1c8,puVar7,uVar5,0xffffffff);" (assignment_expression "puVar7 = (uint *)(*(code *)PTR___gmpn_remove_00097294)\n                                 (uVar4,param_2,param_3,local_1c8,puVar7,uVar5,0xffffffff)" identifier = (cast_expression "(uint *)(*(code *)PTR___gmpn_remove_00097294)\n                                 (uVar4,param_2,param_3,local_1c8,puVar7,uVar5,0xffffffff)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)PTR___gmpn_remove_00097294)\n                                 (uVar4,param_2,param_3,local_1c8,puVar7,uVar5,0xffffffff)" (parenthesized_expression "(*(code *)PTR___gmpn_remove_00097294)" ( (pointer_expression "*(code *)PTR___gmpn_remove_00097294" * (cast_expression "(code *)PTR___gmpn_remove_00097294" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(uVar4,param_2,param_3,local_1c8,puVar7,uVar5,0xffffffff)" ( identifier , identifier , identifier , identifier , identifier , identifier , number_literal ))))) ;) (expression_statement "uVar5 = local_1c8;" (assignment_expression "uVar5 = local_1c8" identifier = identifier) ;) (if_statement "if ((uVar8 >> 0x1f & (uint)puVar7) != uVar10 >> 0x1f) {\n        uVar5 = -local_1c8;\n      }" if (parenthesized_expression "((uVar8 >> 0x1f & (uint)puVar7) != uVar10 >> 0x1f)" ( (binary_expression "(uVar8 >> 0x1f & (uint)puVar7) != uVar10 >> 0x1f" (parenthesized_expression "(uVar8 >> 0x1f & (uint)puVar7)" ( (binary_expression "uVar8 >> 0x1f & (uint)puVar7" (binary_expression "uVar8 >> 0x1f" identifier >> number_literal) & (cast_expression "(uint)puVar7" ( (type_descriptor "uint" type_identifier) ) identifier)) )) != (binary_expression "uVar10 >> 0x1f" identifier >> number_literal)) )) (compound_statement "{\n        uVar5 = -local_1c8;\n      }" { (expression_statement "uVar5 = -local_1c8;" (assignment_expression "uVar5 = -local_1c8" identifier = (unary_expression "-local_1c8" - identifier)) ;) })) (labeled_statement "LAB_00032004:\n      param_1[1] = uVar5;" statement_identifier : (expression_statement "param_1[1] = uVar5;" (assignment_expression "param_1[1] = uVar5" (subscript_expression "param_1[1]" identifier [ number_literal ]) = identifier) ;)) }))) }) (else_clause "else {\n    if (uVar8 == 0) goto LAB_0003232c;\n    puVar7 = (uint *)0x0;\n    (*(code *)PTR___gmpz_set_000974b8)(param_1);\n  }" else (compound_statement "{\n    if (uVar8 == 0) goto LAB_0003232c;\n    puVar7 = (uint *)0x0;\n    (*(code *)PTR___gmpz_set_000974b8)(param_1);\n  }" { (if_statement "if (uVar8 == 0) goto LAB_0003232c;" if (parenthesized_expression "(uVar8 == 0)" ( (binary_expression "uVar8 == 0" identifier == number_literal) )) (goto_statement "goto LAB_0003232c;" goto statement_identifier ;)) (expression_statement "puVar7 = (uint *)0x0;" (assignment_expression "puVar7 = (uint *)0x0" identifier = (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "(*(code *)PTR___gmpz_set_000974b8)(param_1);" (call_expression "(*(code *)PTR___gmpz_set_000974b8)(param_1)" (parenthesized_expression "(*(code *)PTR___gmpz_set_000974b8)" ( (pointer_expression "*(code *)PTR___gmpz_set_000974b8" * (cast_expression "(code *)PTR___gmpz_set_000974b8" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(param_1)" ( identifier ))) ;) }))) (if_statement "if (local_2c == *(uint **)puVar2) {\n    return puVar7;\n  }" if (parenthesized_expression "(local_2c == *(uint **)puVar2)" ( (binary_expression "local_2c == *(uint **)puVar2" identifier == (pointer_expression "*(uint **)puVar2" * (cast_expression "(uint **)puVar2" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) )) (compound_statement "{\n    return puVar7;\n  }" { (return_statement "return puVar7;" return identifier ;) })) (expression_statement "param_1 = local_2c;" (assignment_expression "param_1 = local_2c" 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 "()" ( ))) ;) (labeled_statement "LAB_0003232c:\n  (*(code *)PTR___gmp_divide_by_zero_000975dc)();" statement_identifier : (expression_statement "(*(code *)PTR___gmp_divide_by_zero_000975dc)();" (call_expression "(*(code *)PTR___gmp_divide_by_zero_000975dc)()" (parenthesized_expression "(*(code *)PTR___gmp_divide_by_zero_000975dc)" ( (pointer_expression "*(code *)PTR___gmp_divide_by_zero_000975dc" * (cast_expression "(code *)PTR___gmp_divide_by_zero_000975dc" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;)) (expression_statement "puVar7 = param_3;" (assignment_expression "puVar7 = param_3" identifier = identifier) ;) (if_statement "if ((int)param_3 < 0) {\n    puVar7 = (uint *)-(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    puVar7 = (uint *)-(int)param_3;\n  }" { (expression_statement "puVar7 = (uint *)-(int)param_3;" (assignment_expression "puVar7 = (uint *)-(int)param_3" identifier = (cast_expression "(uint *)-(int)param_3" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (unary_expression "-(int)param_3" - (cast_expression "(int)param_3" ( (type_descriptor "int" primitive_type) ) identifier)))) ;) })) (if_statement "if (param_3 == (uint *)0x0) {\n    *param_1 = 0;\n    puVar7 = (uint *)0x0;\n  }\n  else {\n    if (param_2[(int)puVar7 + -1] == 0) {\n      puVar6 = param_2 + (int)puVar7;\n      do {\n        puVar7 = (uint *)((int)puVar7 + -1);\n        if (puVar7 == (uint *)0x0) break;\n        puVar1 = puVar6 + -2;\n        puVar6 = puVar6 + -1;\n      } while (*puVar1 == 0);\n    }\n    *param_1 = 0;\n    if ((int)param_3 < 0) {\n      puVar7 = (uint *)-(int)puVar7;\n    }\n  }" if (parenthesized_expression "(param_3 == (uint *)0x0)" ( (binary_expression "param_3 == (uint *)0x0" identifier == (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    *param_1 = 0;\n    puVar7 = (uint *)0x0;\n  }" { (expression_statement "*param_1 = 0;" (assignment_expression "*param_1 = 0" (pointer_expression "*param_1" * identifier) = number_literal) ;) (expression_statement "puVar7 = (uint *)0x0;" (assignment_expression "puVar7 = (uint *)0x0" identifier = (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) }) (else_clause "else {\n    if (param_2[(int)puVar7 + -1] == 0) {\n      puVar6 = param_2 + (int)puVar7;\n      do {\n        puVar7 = (uint *)((int)puVar7 + -1);\n        if (puVar7 == (uint *)0x0) break;\n        puVar1 = puVar6 + -2;\n        puVar6 = puVar6 + -1;\n      } while (*puVar1 == 0);\n    }\n    *param_1 = 0;\n    if ((int)param_3 < 0) {\n      puVar7 = (uint *)-(int)puVar7;\n    }\n  }" else (compound_statement "{\n    if (param_2[(int)puVar7 + -1] == 0) {\n      puVar6 = param_2 + (int)puVar7;\n      do {\n        puVar7 = (uint *)((int)puVar7 + -1);\n        if (puVar7 == (uint *)0x0) break;\n        puVar1 = puVar6 + -2;\n        puVar6 = puVar6 + -1;\n      } while (*puVar1 == 0);\n    }\n    *param_1 = 0;\n    if ((int)param_3 < 0) {\n      puVar7 = (uint *)-(int)puVar7;\n    }\n  }" { (if_statement "if (param_2[(int)puVar7 + -1] == 0) {\n      puVar6 = param_2 + (int)puVar7;\n      do {\n        puVar7 = (uint *)((int)puVar7 + -1);\n        if (puVar7 == (uint *)0x0) break;\n        puVar1 = puVar6 + -2;\n        puVar6 = puVar6 + -1;\n      } while (*puVar1 == 0);\n    }" if (parenthesized_expression "(param_2[(int)puVar7 + -1] == 0)" ( (binary_expression "param_2[(int)puVar7 + -1] == 0" (subscript_expression "param_2[(int)puVar7 + -1]" identifier [ (binary_expression "(int)puVar7 + -1" (cast_expression "(int)puVar7" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ]) == number_literal) )) (compound_statement "{\n      puVar6 = param_2 + (int)puVar7;\n      do {\n        puVar7 = (uint *)((int)puVar7 + -1);\n        if (puVar7 == (uint *)0x0) break;\n        puVar1 = puVar6 + -2;\n        puVar6 = puVar6 + -1;\n      } while (*puVar1 == 0);\n    }" { (expression_statement "puVar6 = param_2 + (int)puVar7;" (assignment_expression "puVar6 = param_2 + (int)puVar7" identifier = (binary_expression "param_2 + (int)puVar7" identifier + (cast_expression "(int)puVar7" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (do_statement "do {\n        puVar7 = (uint *)((int)puVar7 + -1);\n        if (puVar7 == (uint *)0x0) break;\n        puVar1 = puVar6 + -2;\n        puVar6 = puVar6 + -1;\n      } while (*puVar1 == 0);" do (compound_statement "{\n        puVar7 = (uint *)((int)puVar7 + -1);\n        if (puVar7 == (uint *)0x0) break;\n        puVar1 = puVar6 + -2;\n        puVar6 = puVar6 + -1;\n      }" { (expression_statement "puVar7 = (uint *)((int)puVar7 + -1);" (assignment_expression "puVar7 = (uint *)((int)puVar7 + -1)" identifier = (cast_expression "(uint *)((int)puVar7 + -1)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar7 + -1)" ( (binary_expression "(int)puVar7 + -1" (cast_expression "(int)puVar7" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (if_statement "if (puVar7 == (uint *)0x0) break;" if (parenthesized_expression "(puVar7 == (uint *)0x0)" ( (binary_expression "puVar7 == (uint *)0x0" identifier == (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (break_statement "break;" break ;)) (expression_statement "puVar1 = puVar6 + -2;" (assignment_expression "puVar1 = puVar6 + -2" identifier = (binary_expression "puVar6 + -2" identifier + number_literal)) ;) (expression_statement "puVar6 = puVar6 + -1;" (assignment_expression "puVar6 = puVar6 + -1" identifier = (binary_expression "puVar6 + -1" identifier + number_literal)) ;) }) while (parenthesized_expression "(*puVar1 == 0)" ( (binary_expression "*puVar1 == 0" (pointer_expression "*puVar1" * identifier) == number_literal) )) ;) })) (expression_statement "*param_1 = 0;" (assignment_expression "*param_1 = 0" (pointer_expression "*param_1" * identifier) = number_literal) ;) (if_statement "if ((int)param_3 < 0) {\n      puVar7 = (uint *)-(int)puVar7;\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      puVar7 = (uint *)-(int)puVar7;\n    }" { (expression_statement "puVar7 = (uint *)-(int)puVar7;" (assignment_expression "puVar7 = (uint *)-(int)puVar7" identifier = (cast_expression "(uint *)-(int)puVar7" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (unary_expression "-(int)puVar7" - (cast_expression "(int)puVar7" ( (type_descriptor "int" primitive_type) ) identifier)))) ;) })) }))) (expression_statement "param_1[1] = (uint)puVar7;" (assignment_expression "param_1[1] = (uint)puVar7" (subscript_expression "param_1[1]" identifier [ number_literal ]) = (cast_expression "(uint)puVar7" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "param_1[2] = (uint)param_2;" (assignment_expression "param_1[2] = (uint)param_2" (subscript_expression "param_1[2]" identifier [ number_literal ]) = (cast_expression "(uint)param_2" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (return_statement "return param_1;" return identifier ;) })))
(translation_unit "mp_bitcnt_t __gmpz_remove(mpz_ptr dest,mpz_srcptr src,mpz_srcptr f)\n\n{\n  undefined *puVar1;\n  mpz_ptr p_Var2;\n  mpz_ptr p_Var3;\n  int iVar4;\n  uint uVar5;\n  int iVar6;\n  int *piVar7;\n  mp_limb_t *pmVar8;\n  mpz_srcptr p_Var9;\n  uint *puVar10;\n  uint uVar11;\n  uint uVar12;\n  uint uVar13;\n  __mpz_struct (*pa_Var14) [1];\n  mp_size_t dn;\n  mpz_t x;\n  mpz_t rem;\n  __mpz_struct fpow [32] [1];\n  \n  puVar1 = PTR___stack_chk_guard_00097540;\n  puVar10 = f->_mp_d;\n  uVar11 = f->_mp_size;\n  p_Var2 = *(mpz_ptr *)PTR___stack_chk_guard_00097540;\n  uVar13 = src->_mp_size;\n  uVar12 = -uVar11;\n  if (-1 < (int)uVar11) {\n    uVar12 = uVar11;\n  }\n  uVar5 = *puVar10;\n  if (((int)(uint)(uVar5 == 1) < (int)uVar12) && (uVar13 != 0)) {\n    if ((uVar5 & 1) == 0) {\n      if ((uVar5 == 2) == uVar12) {\n        p_Var3 = (mpz_ptr)(*(code *)PTR___gmpz_scan1_00097608)(src,0);\n        f = p_Var3;\n        (*(code *)PTR___gmpz_fdiv_q_2exp_00097438)(dest);\n        if ((uVar11 >> 0x1f & (uint)p_Var3) != 0) {\n          iVar6 = -dest->_mp_size;\n          goto LAB_00032004;\n        }\n      }\n      else {\n        (*(code *)PTR___gmpz_init_00097130)(rem);\n        (*(code *)PTR___gmpz_init_00097130)(x);\n        p_Var9 = src;\n        (*(code *)PTR___gmpz_tdiv_qr_000975d4)(x,rem,src,f);\n        if (rem[0]._mp_size == 0) {\n          (*(code *)PTR___gmpz_init_set_000975ec)(fpow,f);\n          (*(code *)PTR___gmpz_swap_00097468)(dest,x);\n          if (fpow[0][0]._mp_size < 0) {\n            fpow[0][0]._mp_size = -fpow[0][0]._mp_size;\n          }\n          iVar6 = dest->_mp_size;\n          if (iVar6 < 0) {\n            iVar6 = -iVar6;\n          }\n          if (iVar6 < fpow[0][0]._mp_size * 2 + -1) {\n            p_Var3 = (mpz_ptr)&DAT_00000001;\n            uVar12 = 0;\n          }\n          else {\n            pa_Var14 = fpow;\n            uVar11 = 1;\n            do {\n              uVar12 = uVar11;\n              pa_Var14 = pa_Var14 + 1;\n              (*(code *)PTR___gmpz_init_00097130)(pa_Var14);\n              (*(code *)PTR___gmpz_mul_00097498)(pa_Var14,pa_Var14 + -1);\n              (*(code *)PTR___gmpz_tdiv_qr_000975d4)(x,rem,dest,pa_Var14);\n              if (rem[0]._mp_size != 0) {\n                (*(code *)PTR___gmpz_clear_00097308)(pa_Var14);\n                p_Var3 = (mpz_ptr)((1 << (uVar12 & 0x1f)) + -1);\n                uVar12 = uVar12 - 1;\n                goto LAB_000321c4;\n              }\n              (*(code *)PTR___gmpz_swap_00097468)(dest,x);\n              iVar6 = dest->_mp_size;\n              if (iVar6 < 0) {\n                iVar6 = -iVar6;\n              }\n              iVar4 = (*pa_Var14)[0]._mp_size;\n              if (iVar4 < 0) {\n                iVar4 = -iVar4;\n              }\n              uVar11 = uVar12 + 1;\n            } while (iVar4 * 2 + -1 <= iVar6);\n            p_Var3 = (mpz_ptr)((1 << (uVar12 + 1 & 0x1f)) + -1);\n          }\nLAB_000321c4:\n          pa_Var14 = fpow + uVar12;\n          do {\n            src = rem;\n            p_Var9 = dest;\n            (*(code *)PTR___gmpz_tdiv_qr_000975d4)(x,rem,dest,pa_Var14);\n            if (rem[0]._mp_size == 0) {\n              p_Var3 = (mpz_ptr)((int)&p_Var3->_mp_alloc + (1 << (uVar12 & 0x1f)));\n              src = x;\n              (*(code *)PTR___gmpz_swap_00097468)(dest);\n            }\n            uVar12 = uVar12 - 1;\n            (*(code *)PTR___gmpz_clear_00097308)(pa_Var14);\n            pa_Var14 = pa_Var14 + -1;\n          } while (uVar12 != 0xffffffff);\n        }\n        else {\n          (*(code *)PTR___gmpz_set_000974b8)(dest);\n          p_Var3 = (mpz_ptr)0x0;\n        }\n        (*(code *)PTR___gmpz_clear_00097308)(x);\n        (*(code *)PTR___gmpz_clear_00097308)(rem);\n        f = p_Var9;\n      }\n    }\n    else {\n      dn = uVar13;\n      if ((int)uVar13 < 0) {\n        dn = -uVar13;\n      }\n      if (dest->_mp_alloc < dn) {\n        pmVar8 = (mp_limb_t *)(*(code *)PTR___gmpz_realloc_000975bc)(dest,dn);\n        puVar10 = f->_mp_d;\n      }\n      else {\n        pmVar8 = dest->_mp_d;\n      }\n      f = (mpz_srcptr)src->_mp_d;\n      src = (mpz_srcptr)&dn;\n      p_Var3 = (mpz_ptr)(*(code *)PTR___gmpn_remove_00097294)\n                                  (pmVar8,src,f,dn,puVar10,uVar12,0xffffffff);\n      iVar6 = dn;\n      if ((uVar11 >> 0x1f & (uint)p_Var3) != uVar13 >> 0x1f) {\n        iVar6 = -dn;\n      }\nLAB_00032004:\n      dest->_mp_size = iVar6;\n    }\n  }\n  else {\n    if (uVar11 == 0) goto LAB_0003232c;\n    p_Var3 = (mpz_ptr)0x0;\n    (*(code *)PTR___gmpz_set_000974b8)(dest);\n  }\n  if (p_Var2 == *(mpz_ptr *)puVar1) {\n    return (mp_bitcnt_t)p_Var3;\n  }\n  (*(code *)PTR___stack_chk_fail_000974d0)();\n  dest = p_Var2;\nLAB_0003232c:\n  (*(code *)PTR___gmp_divide_by_zero_000975dc)();\n  p_Var2 = f;\n  if ((int)f < 0) {\n    p_Var2 = (mpz_ptr)-(int)f;\n  }\n  if (f == (mpz_ptr)0x0) {\n    dest->_mp_alloc = 0;\n    p_Var2 = (mpz_ptr)0x0;\n  }\n  else {\n    if (*(int *)((int)src + (int)p_Var2 * 4 + -4) == 0) {\n      piVar7 = &src->_mp_alloc + (int)p_Var2;\n      do {\n        p_Var2 = (mpz_ptr)((int)&p_Var2[-1]._mp_d + 3);\n        if (p_Var2 == (mpz_ptr)0x0) break;\n        pmVar8 = (mp_limb_t *)(piVar7 + -2);\n        piVar7 = piVar7 + -1;\n      } while (*pmVar8 == 0);\n    }\n    dest->_mp_alloc = 0;\n    if ((int)f < 0) {\n      p_Var2 = (mpz_ptr)-(int)p_Var2;\n    }\n  }\n  dest->_mp_size = (int)p_Var2;\n  dest->_mp_d = (mp_limb_t *)src;\n  return (mp_bitcnt_t)dest;\n}\n\n" (function_definition "mp_bitcnt_t __gmpz_remove(mpz_ptr dest,mpz_srcptr src,mpz_srcptr f)\n\n{\n  undefined *puVar1;\n  mpz_ptr p_Var2;\n  mpz_ptr p_Var3;\n  int iVar4;\n  uint uVar5;\n  int iVar6;\n  int *piVar7;\n  mp_limb_t *pmVar8;\n  mpz_srcptr p_Var9;\n  uint *puVar10;\n  uint uVar11;\n  uint uVar12;\n  uint uVar13;\n  __mpz_struct (*pa_Var14) [1];\n  mp_size_t dn;\n  mpz_t x;\n  mpz_t rem;\n  __mpz_struct fpow [32] [1];\n  \n  puVar1 = PTR___stack_chk_guard_00097540;\n  puVar10 = f->_mp_d;\n  uVar11 = f->_mp_size;\n  p_Var2 = *(mpz_ptr *)PTR___stack_chk_guard_00097540;\n  uVar13 = src->_mp_size;\n  uVar12 = -uVar11;\n  if (-1 < (int)uVar11) {\n    uVar12 = uVar11;\n  }\n  uVar5 = *puVar10;\n  if (((int)(uint)(uVar5 == 1) < (int)uVar12) && (uVar13 != 0)) {\n    if ((uVar5 & 1) == 0) {\n      if ((uVar5 == 2) == uVar12) {\n        p_Var3 = (mpz_ptr)(*(code *)PTR___gmpz_scan1_00097608)(src,0);\n        f = p_Var3;\n        (*(code *)PTR___gmpz_fdiv_q_2exp_00097438)(dest);\n        if ((uVar11 >> 0x1f & (uint)p_Var3) != 0) {\n          iVar6 = -dest->_mp_size;\n          goto LAB_00032004;\n        }\n      }\n      else {\n        (*(code *)PTR___gmpz_init_00097130)(rem);\n        (*(code *)PTR___gmpz_init_00097130)(x);\n        p_Var9 = src;\n        (*(code *)PTR___gmpz_tdiv_qr_000975d4)(x,rem,src,f);\n        if (rem[0]._mp_size == 0) {\n          (*(code *)PTR___gmpz_init_set_000975ec)(fpow,f);\n          (*(code *)PTR___gmpz_swap_00097468)(dest,x);\n          if (fpow[0][0]._mp_size < 0) {\n            fpow[0][0]._mp_size = -fpow[0][0]._mp_size;\n          }\n          iVar6 = dest->_mp_size;\n          if (iVar6 < 0) {\n            iVar6 = -iVar6;\n          }\n          if (iVar6 < fpow[0][0]._mp_size * 2 + -1) {\n            p_Var3 = (mpz_ptr)&DAT_00000001;\n            uVar12 = 0;\n          }\n          else {\n            pa_Var14 = fpow;\n            uVar11 = 1;\n            do {\n              uVar12 = uVar11;\n              pa_Var14 = pa_Var14 + 1;\n              (*(code *)PTR___gmpz_init_00097130)(pa_Var14);\n              (*(code *)PTR___gmpz_mul_00097498)(pa_Var14,pa_Var14 + -1);\n              (*(code *)PTR___gmpz_tdiv_qr_000975d4)(x,rem,dest,pa_Var14);\n              if (rem[0]._mp_size != 0) {\n                (*(code *)PTR___gmpz_clear_00097308)(pa_Var14);\n                p_Var3 = (mpz_ptr)((1 << (uVar12 & 0x1f)) + -1);\n                uVar12 = uVar12 - 1;\n                goto LAB_000321c4;\n              }\n              (*(code *)PTR___gmpz_swap_00097468)(dest,x);\n              iVar6 = dest->_mp_size;\n              if (iVar6 < 0) {\n                iVar6 = -iVar6;\n              }\n              iVar4 = (*pa_Var14)[0]._mp_size;\n              if (iVar4 < 0) {\n                iVar4 = -iVar4;\n              }\n              uVar11 = uVar12 + 1;\n            } while (iVar4 * 2 + -1 <= iVar6);\n            p_Var3 = (mpz_ptr)((1 << (uVar12 + 1 & 0x1f)) + -1);\n          }\nLAB_000321c4:\n          pa_Var14 = fpow + uVar12;\n          do {\n            src = rem;\n            p_Var9 = dest;\n            (*(code *)PTR___gmpz_tdiv_qr_000975d4)(x,rem,dest,pa_Var14);\n            if (rem[0]._mp_size == 0) {\n              p_Var3 = (mpz_ptr)((int)&p_Var3->_mp_alloc + (1 << (uVar12 & 0x1f)));\n              src = x;\n              (*(code *)PTR___gmpz_swap_00097468)(dest);\n            }\n            uVar12 = uVar12 - 1;\n            (*(code *)PTR___gmpz_clear_00097308)(pa_Var14);\n            pa_Var14 = pa_Var14 + -1;\n          } while (uVar12 != 0xffffffff);\n        }\n        else {\n          (*(code *)PTR___gmpz_set_000974b8)(dest);\n          p_Var3 = (mpz_ptr)0x0;\n        }\n        (*(code *)PTR___gmpz_clear_00097308)(x);\n        (*(code *)PTR___gmpz_clear_00097308)(rem);\n        f = p_Var9;\n      }\n    }\n    else {\n      dn = uVar13;\n      if ((int)uVar13 < 0) {\n        dn = -uVar13;\n      }\n      if (dest->_mp_alloc < dn) {\n        pmVar8 = (mp_limb_t *)(*(code *)PTR___gmpz_realloc_000975bc)(dest,dn);\n        puVar10 = f->_mp_d;\n      }\n      else {\n        pmVar8 = dest->_mp_d;\n      }\n      f = (mpz_srcptr)src->_mp_d;\n      src = (mpz_srcptr)&dn;\n      p_Var3 = (mpz_ptr)(*(code *)PTR___gmpn_remove_00097294)\n                                  (pmVar8,src,f,dn,puVar10,uVar12,0xffffffff);\n      iVar6 = dn;\n      if ((uVar11 >> 0x1f & (uint)p_Var3) != uVar13 >> 0x1f) {\n        iVar6 = -dn;\n      }\nLAB_00032004:\n      dest->_mp_size = iVar6;\n    }\n  }\n  else {\n    if (uVar11 == 0) goto LAB_0003232c;\n    p_Var3 = (mpz_ptr)0x0;\n    (*(code *)PTR___gmpz_set_000974b8)(dest);\n  }\n  if (p_Var2 == *(mpz_ptr *)puVar1) {\n    return (mp_bitcnt_t)p_Var3;\n  }\n  (*(code *)PTR___stack_chk_fail_000974d0)();\n  dest = p_Var2;\nLAB_0003232c:\n  (*(code *)PTR___gmp_divide_by_zero_000975dc)();\n  p_Var2 = f;\n  if ((int)f < 0) {\n    p_Var2 = (mpz_ptr)-(int)f;\n  }\n  if (f == (mpz_ptr)0x0) {\n    dest->_mp_alloc = 0;\n    p_Var2 = (mpz_ptr)0x0;\n  }\n  else {\n    if (*(int *)((int)src + (int)p_Var2 * 4 + -4) == 0) {\n      piVar7 = &src->_mp_alloc + (int)p_Var2;\n      do {\n        p_Var2 = (mpz_ptr)((int)&p_Var2[-1]._mp_d + 3);\n        if (p_Var2 == (mpz_ptr)0x0) break;\n        pmVar8 = (mp_limb_t *)(piVar7 + -2);\n        piVar7 = piVar7 + -1;\n      } while (*pmVar8 == 0);\n    }\n    dest->_mp_alloc = 0;\n    if ((int)f < 0) {\n      p_Var2 = (mpz_ptr)-(int)p_Var2;\n    }\n  }\n  dest->_mp_size = (int)p_Var2;\n  dest->_mp_d = (mp_limb_t *)src;\n  return (mp_bitcnt_t)dest;\n}" type_identifier (function_declarator "__gmpz_remove(mpz_ptr dest,mpz_srcptr src,mpz_srcptr f)" identifier (parameter_list "(mpz_ptr dest,mpz_srcptr src,mpz_srcptr f)" ( (parameter_declaration "mpz_ptr dest" type_identifier identifier) , (parameter_declaration "mpz_srcptr src" type_identifier identifier) , (parameter_declaration "mpz_srcptr f" type_identifier identifier) ))) (compound_statement "{\n  undefined *puVar1;\n  mpz_ptr p_Var2;\n  mpz_ptr p_Var3;\n  int iVar4;\n  uint uVar5;\n  int iVar6;\n  int *piVar7;\n  mp_limb_t *pmVar8;\n  mpz_srcptr p_Var9;\n  uint *puVar10;\n  uint uVar11;\n  uint uVar12;\n  uint uVar13;\n  __mpz_struct (*pa_Var14) [1];\n  mp_size_t dn;\n  mpz_t x;\n  mpz_t rem;\n  __mpz_struct fpow [32] [1];\n  \n  puVar1 = PTR___stack_chk_guard_00097540;\n  puVar10 = f->_mp_d;\n  uVar11 = f->_mp_size;\n  p_Var2 = *(mpz_ptr *)PTR___stack_chk_guard_00097540;\n  uVar13 = src->_mp_size;\n  uVar12 = -uVar11;\n  if (-1 < (int)uVar11) {\n    uVar12 = uVar11;\n  }\n  uVar5 = *puVar10;\n  if (((int)(uint)(uVar5 == 1) < (int)uVar12) && (uVar13 != 0)) {\n    if ((uVar5 & 1) == 0) {\n      if ((uVar5 == 2) == uVar12) {\n        p_Var3 = (mpz_ptr)(*(code *)PTR___gmpz_scan1_00097608)(src,0);\n        f = p_Var3;\n        (*(code *)PTR___gmpz_fdiv_q_2exp_00097438)(dest);\n        if ((uVar11 >> 0x1f & (uint)p_Var3) != 0) {\n          iVar6 = -dest->_mp_size;\n          goto LAB_00032004;\n        }\n      }\n      else {\n        (*(code *)PTR___gmpz_init_00097130)(rem);\n        (*(code *)PTR___gmpz_init_00097130)(x);\n        p_Var9 = src;\n        (*(code *)PTR___gmpz_tdiv_qr_000975d4)(x,rem,src,f);\n        if (rem[0]._mp_size == 0) {\n          (*(code *)PTR___gmpz_init_set_000975ec)(fpow,f);\n          (*(code *)PTR___gmpz_swap_00097468)(dest,x);\n          if (fpow[0][0]._mp_size < 0) {\n            fpow[0][0]._mp_size = -fpow[0][0]._mp_size;\n          }\n          iVar6 = dest->_mp_size;\n          if (iVar6 < 0) {\n            iVar6 = -iVar6;\n          }\n          if (iVar6 < fpow[0][0]._mp_size * 2 + -1) {\n            p_Var3 = (mpz_ptr)&DAT_00000001;\n            uVar12 = 0;\n          }\n          else {\n            pa_Var14 = fpow;\n            uVar11 = 1;\n            do {\n              uVar12 = uVar11;\n              pa_Var14 = pa_Var14 + 1;\n              (*(code *)PTR___gmpz_init_00097130)(pa_Var14);\n              (*(code *)PTR___gmpz_mul_00097498)(pa_Var14,pa_Var14 + -1);\n              (*(code *)PTR___gmpz_tdiv_qr_000975d4)(x,rem,dest,pa_Var14);\n              if (rem[0]._mp_size != 0) {\n                (*(code *)PTR___gmpz_clear_00097308)(pa_Var14);\n                p_Var3 = (mpz_ptr)((1 << (uVar12 & 0x1f)) + -1);\n                uVar12 = uVar12 - 1;\n                goto LAB_000321c4;\n              }\n              (*(code *)PTR___gmpz_swap_00097468)(dest,x);\n              iVar6 = dest->_mp_size;\n              if (iVar6 < 0) {\n                iVar6 = -iVar6;\n              }\n              iVar4 = (*pa_Var14)[0]._mp_size;\n              if (iVar4 < 0) {\n                iVar4 = -iVar4;\n              }\n              uVar11 = uVar12 + 1;\n            } while (iVar4 * 2 + -1 <= iVar6);\n            p_Var3 = (mpz_ptr)((1 << (uVar12 + 1 & 0x1f)) + -1);\n          }\nLAB_000321c4:\n          pa_Var14 = fpow + uVar12;\n          do {\n            src = rem;\n            p_Var9 = dest;\n            (*(code *)PTR___gmpz_tdiv_qr_000975d4)(x,rem,dest,pa_Var14);\n            if (rem[0]._mp_size == 0) {\n              p_Var3 = (mpz_ptr)((int)&p_Var3->_mp_alloc + (1 << (uVar12 & 0x1f)));\n              src = x;\n              (*(code *)PTR___gmpz_swap_00097468)(dest);\n            }\n            uVar12 = uVar12 - 1;\n            (*(code *)PTR___gmpz_clear_00097308)(pa_Var14);\n            pa_Var14 = pa_Var14 + -1;\n          } while (uVar12 != 0xffffffff);\n        }\n        else {\n          (*(code *)PTR___gmpz_set_000974b8)(dest);\n          p_Var3 = (mpz_ptr)0x0;\n        }\n        (*(code *)PTR___gmpz_clear_00097308)(x);\n        (*(code *)PTR___gmpz_clear_00097308)(rem);\n        f = p_Var9;\n      }\n    }\n    else {\n      dn = uVar13;\n      if ((int)uVar13 < 0) {\n        dn = -uVar13;\n      }\n      if (dest->_mp_alloc < dn) {\n        pmVar8 = (mp_limb_t *)(*(code *)PTR___gmpz_realloc_000975bc)(dest,dn);\n        puVar10 = f->_mp_d;\n      }\n      else {\n        pmVar8 = dest->_mp_d;\n      }\n      f = (mpz_srcptr)src->_mp_d;\n      src = (mpz_srcptr)&dn;\n      p_Var3 = (mpz_ptr)(*(code *)PTR___gmpn_remove_00097294)\n                                  (pmVar8,src,f,dn,puVar10,uVar12,0xffffffff);\n      iVar6 = dn;\n      if ((uVar11 >> 0x1f & (uint)p_Var3) != uVar13 >> 0x1f) {\n        iVar6 = -dn;\n      }\nLAB_00032004:\n      dest->_mp_size = iVar6;\n    }\n  }\n  else {\n    if (uVar11 == 0) goto LAB_0003232c;\n    p_Var3 = (mpz_ptr)0x0;\n    (*(code *)PTR___gmpz_set_000974b8)(dest);\n  }\n  if (p_Var2 == *(mpz_ptr *)puVar1) {\n    return (mp_bitcnt_t)p_Var3;\n  }\n  (*(code *)PTR___stack_chk_fail_000974d0)();\n  dest = p_Var2;\nLAB_0003232c:\n  (*(code *)PTR___gmp_divide_by_zero_000975dc)();\n  p_Var2 = f;\n  if ((int)f < 0) {\n    p_Var2 = (mpz_ptr)-(int)f;\n  }\n  if (f == (mpz_ptr)0x0) {\n    dest->_mp_alloc = 0;\n    p_Var2 = (mpz_ptr)0x0;\n  }\n  else {\n    if (*(int *)((int)src + (int)p_Var2 * 4 + -4) == 0) {\n      piVar7 = &src->_mp_alloc + (int)p_Var2;\n      do {\n        p_Var2 = (mpz_ptr)((int)&p_Var2[-1]._mp_d + 3);\n        if (p_Var2 == (mpz_ptr)0x0) break;\n        pmVar8 = (mp_limb_t *)(piVar7 + -2);\n        piVar7 = piVar7 + -1;\n      } while (*pmVar8 == 0);\n    }\n    dest->_mp_alloc = 0;\n    if ((int)f < 0) {\n      p_Var2 = (mpz_ptr)-(int)p_Var2;\n    }\n  }\n  dest->_mp_size = (int)p_Var2;\n  dest->_mp_d = (mp_limb_t *)src;\n  return (mp_bitcnt_t)dest;\n}" { (declaration "undefined *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "mpz_ptr p_Var2;" type_identifier identifier ;) (declaration "mpz_ptr p_Var3;" type_identifier identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "uint uVar5;" type_identifier identifier ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "int *piVar7;" primitive_type (pointer_declarator "*piVar7" * identifier) ;) (declaration "mp_limb_t *pmVar8;" type_identifier (pointer_declarator "*pmVar8" * identifier) ;) (declaration "mpz_srcptr p_Var9;" type_identifier identifier ;) (declaration "uint *puVar10;" type_identifier (pointer_declarator "*puVar10" * identifier) ;) (declaration "uint uVar11;" type_identifier identifier ;) (declaration "uint uVar12;" type_identifier identifier ;) (declaration "uint uVar13;" type_identifier identifier ;) (expression_statement "__mpz_struct (*pa_Var14) [1];" (subscript_expression "__mpz_struct (*pa_Var14) [1]" (call_expression "__mpz_struct (*pa_Var14)" identifier (argument_list "(*pa_Var14)" ( (pointer_expression "*pa_Var14" * identifier) ))) [ number_literal ]) ;) (declaration "mp_size_t dn;" type_identifier identifier ;) (declaration "mpz_t x;" type_identifier identifier ;) (declaration "mpz_t rem;" type_identifier identifier ;) (declaration "__mpz_struct fpow [32] [1];" type_identifier (array_declarator "fpow [32] [1]" (array_declarator "fpow [32]" identifier [ number_literal ]) [ number_literal ]) ;) (expression_statement "puVar1 = PTR___stack_chk_guard_00097540;" (assignment_expression "puVar1 = PTR___stack_chk_guard_00097540" identifier = identifier) ;) (expression_statement "puVar10 = f->_mp_d;" (assignment_expression "puVar10 = f->_mp_d" identifier = (field_expression "f->_mp_d" identifier -> field_identifier)) ;) (expression_statement "uVar11 = f->_mp_size;" (assignment_expression "uVar11 = f->_mp_size" identifier = (field_expression "f->_mp_size" identifier -> field_identifier)) ;) (expression_statement "p_Var2 = *(mpz_ptr *)PTR___stack_chk_guard_00097540;" (assignment_expression "p_Var2 = *(mpz_ptr *)PTR___stack_chk_guard_00097540" identifier = (pointer_expression "*(mpz_ptr *)PTR___stack_chk_guard_00097540" * (cast_expression "(mpz_ptr *)PTR___stack_chk_guard_00097540" ( (type_descriptor "mpz_ptr *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "uVar13 = src->_mp_size;" (assignment_expression "uVar13 = src->_mp_size" identifier = (field_expression "src->_mp_size" identifier -> field_identifier)) ;) (expression_statement "uVar12 = -uVar11;" (assignment_expression "uVar12 = -uVar11" identifier = (unary_expression "-uVar11" - identifier)) ;) (if_statement "if (-1 < (int)uVar11) {\n    uVar12 = uVar11;\n  }" if (parenthesized_expression "(-1 < (int)uVar11)" ( (binary_expression "-1 < (int)uVar11" number_literal < (cast_expression "(int)uVar11" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n    uVar12 = uVar11;\n  }" { (expression_statement "uVar12 = uVar11;" (assignment_expression "uVar12 = uVar11" identifier = identifier) ;) })) (expression_statement "uVar5 = *puVar10;" (assignment_expression "uVar5 = *puVar10" identifier = (pointer_expression "*puVar10" * identifier)) ;) (if_statement "if (((int)(uint)(uVar5 == 1) < (int)uVar12) && (uVar13 != 0)) {\n    if ((uVar5 & 1) == 0) {\n      if ((uVar5 == 2) == uVar12) {\n        p_Var3 = (mpz_ptr)(*(code *)PTR___gmpz_scan1_00097608)(src,0);\n        f = p_Var3;\n        (*(code *)PTR___gmpz_fdiv_q_2exp_00097438)(dest);\n        if ((uVar11 >> 0x1f & (uint)p_Var3) != 0) {\n          iVar6 = -dest->_mp_size;\n          goto LAB_00032004;\n        }\n      }\n      else {\n        (*(code *)PTR___gmpz_init_00097130)(rem);\n        (*(code *)PTR___gmpz_init_00097130)(x);\n        p_Var9 = src;\n        (*(code *)PTR___gmpz_tdiv_qr_000975d4)(x,rem,src,f);\n        if (rem[0]._mp_size == 0) {\n          (*(code *)PTR___gmpz_init_set_000975ec)(fpow,f);\n          (*(code *)PTR___gmpz_swap_00097468)(dest,x);\n          if (fpow[0][0]._mp_size < 0) {\n            fpow[0][0]._mp_size = -fpow[0][0]._mp_size;\n          }\n          iVar6 = dest->_mp_size;\n          if (iVar6 < 0) {\n            iVar6 = -iVar6;\n          }\n          if (iVar6 < fpow[0][0]._mp_size * 2 + -1) {\n            p_Var3 = (mpz_ptr)&DAT_00000001;\n            uVar12 = 0;\n          }\n          else {\n            pa_Var14 = fpow;\n            uVar11 = 1;\n            do {\n              uVar12 = uVar11;\n              pa_Var14 = pa_Var14 + 1;\n              (*(code *)PTR___gmpz_init_00097130)(pa_Var14);\n              (*(code *)PTR___gmpz_mul_00097498)(pa_Var14,pa_Var14 + -1);\n              (*(code *)PTR___gmpz_tdiv_qr_000975d4)(x,rem,dest,pa_Var14);\n              if (rem[0]._mp_size != 0) {\n                (*(code *)PTR___gmpz_clear_00097308)(pa_Var14);\n                p_Var3 = (mpz_ptr)((1 << (uVar12 & 0x1f)) + -1);\n                uVar12 = uVar12 - 1;\n                goto LAB_000321c4;\n              }\n              (*(code *)PTR___gmpz_swap_00097468)(dest,x);\n              iVar6 = dest->_mp_size;\n              if (iVar6 < 0) {\n                iVar6 = -iVar6;\n              }\n              iVar4 = (*pa_Var14)[0]._mp_size;\n              if (iVar4 < 0) {\n                iVar4 = -iVar4;\n              }\n              uVar11 = uVar12 + 1;\n            } while (iVar4 * 2 + -1 <= iVar6);\n            p_Var3 = (mpz_ptr)((1 << (uVar12 + 1 & 0x1f)) + -1);\n          }\nLAB_000321c4:\n          pa_Var14 = fpow + uVar12;\n          do {\n            src = rem;\n            p_Var9 = dest;\n            (*(code *)PTR___gmpz_tdiv_qr_000975d4)(x,rem,dest,pa_Var14);\n            if (rem[0]._mp_size == 0) {\n              p_Var3 = (mpz_ptr)((int)&p_Var3->_mp_alloc + (1 << (uVar12 & 0x1f)));\n              src = x;\n              (*(code *)PTR___gmpz_swap_00097468)(dest);\n            }\n            uVar12 = uVar12 - 1;\n            (*(code *)PTR___gmpz_clear_00097308)(pa_Var14);\n            pa_Var14 = pa_Var14 + -1;\n          } while (uVar12 != 0xffffffff);\n        }\n        else {\n          (*(code *)PTR___gmpz_set_000974b8)(dest);\n          p_Var3 = (mpz_ptr)0x0;\n        }\n        (*(code *)PTR___gmpz_clear_00097308)(x);\n        (*(code *)PTR___gmpz_clear_00097308)(rem);\n        f = p_Var9;\n      }\n    }\n    else {\n      dn = uVar13;\n      if ((int)uVar13 < 0) {\n        dn = -uVar13;\n      }\n      if (dest->_mp_alloc < dn) {\n        pmVar8 = (mp_limb_t *)(*(code *)PTR___gmpz_realloc_000975bc)(dest,dn);\n        puVar10 = f->_mp_d;\n      }\n      else {\n        pmVar8 = dest->_mp_d;\n      }\n      f = (mpz_srcptr)src->_mp_d;\n      src = (mpz_srcptr)&dn;\n      p_Var3 = (mpz_ptr)(*(code *)PTR___gmpn_remove_00097294)\n                                  (pmVar8,src,f,dn,puVar10,uVar12,0xffffffff);\n      iVar6 = dn;\n      if ((uVar11 >> 0x1f & (uint)p_Var3) != uVar13 >> 0x1f) {\n        iVar6 = -dn;\n      }\nLAB_00032004:\n      dest->_mp_size = iVar6;\n    }\n  }\n  else {\n    if (uVar11 == 0) goto LAB_0003232c;\n    p_Var3 = (mpz_ptr)0x0;\n    (*(code *)PTR___gmpz_set_000974b8)(dest);\n  }" if (parenthesized_expression "(((int)(uint)(uVar5 == 1) < (int)uVar12) && (uVar13 != 0))" ( (binary_expression "((int)(uint)(uVar5 == 1) < (int)uVar12) && (uVar13 != 0)" (parenthesized_expression "((int)(uint)(uVar5 == 1) < (int)uVar12)" ( (binary_expression "(int)(uint)(uVar5 == 1) < (int)uVar12" (cast_expression "(int)(uint)(uVar5 == 1)" ( (type_descriptor "int" primitive_type) ) (call_expression "(uint)(uVar5 == 1)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar5 == 1)" ( (binary_expression "uVar5 == 1" identifier == number_literal) )))) < (cast_expression "(int)uVar12" ( (type_descriptor "int" primitive_type) ) identifier)) )) && (parenthesized_expression "(uVar13 != 0)" ( (binary_expression "uVar13 != 0" identifier != number_literal) ))) )) (compound_statement "{\n    if ((uVar5 & 1) == 0) {\n      if ((uVar5 == 2) == uVar12) {\n        p_Var3 = (mpz_ptr)(*(code *)PTR___gmpz_scan1_00097608)(src,0);\n        f = p_Var3;\n        (*(code *)PTR___gmpz_fdiv_q_2exp_00097438)(dest);\n        if ((uVar11 >> 0x1f & (uint)p_Var3) != 0) {\n          iVar6 = -dest->_mp_size;\n          goto LAB_00032004;\n        }\n      }\n      else {\n        (*(code *)PTR___gmpz_init_00097130)(rem);\n        (*(code *)PTR___gmpz_init_00097130)(x);\n        p_Var9 = src;\n        (*(code *)PTR___gmpz_tdiv_qr_000975d4)(x,rem,src,f);\n        if (rem[0]._mp_size == 0) {\n          (*(code *)PTR___gmpz_init_set_000975ec)(fpow,f);\n          (*(code *)PTR___gmpz_swap_00097468)(dest,x);\n          if (fpow[0][0]._mp_size < 0) {\n            fpow[0][0]._mp_size = -fpow[0][0]._mp_size;\n          }\n          iVar6 = dest->_mp_size;\n          if (iVar6 < 0) {\n            iVar6 = -iVar6;\n          }\n          if (iVar6 < fpow[0][0]._mp_size * 2 + -1) {\n            p_Var3 = (mpz_ptr)&DAT_00000001;\n            uVar12 = 0;\n          }\n          else {\n            pa_Var14 = fpow;\n            uVar11 = 1;\n            do {\n              uVar12 = uVar11;\n              pa_Var14 = pa_Var14 + 1;\n              (*(code *)PTR___gmpz_init_00097130)(pa_Var14);\n              (*(code *)PTR___gmpz_mul_00097498)(pa_Var14,pa_Var14 + -1);\n              (*(code *)PTR___gmpz_tdiv_qr_000975d4)(x,rem,dest,pa_Var14);\n              if (rem[0]._mp_size != 0) {\n                (*(code *)PTR___gmpz_clear_00097308)(pa_Var14);\n                p_Var3 = (mpz_ptr)((1 << (uVar12 & 0x1f)) + -1);\n                uVar12 = uVar12 - 1;\n                goto LAB_000321c4;\n              }\n              (*(code *)PTR___gmpz_swap_00097468)(dest,x);\n              iVar6 = dest->_mp_size;\n              if (iVar6 < 0) {\n                iVar6 = -iVar6;\n              }\n              iVar4 = (*pa_Var14)[0]._mp_size;\n              if (iVar4 < 0) {\n                iVar4 = -iVar4;\n              }\n              uVar11 = uVar12 + 1;\n            } while (iVar4 * 2 + -1 <= iVar6);\n            p_Var3 = (mpz_ptr)((1 << (uVar12 + 1 & 0x1f)) + -1);\n          }\nLAB_000321c4:\n          pa_Var14 = fpow + uVar12;\n          do {\n            src = rem;\n            p_Var9 = dest;\n            (*(code *)PTR___gmpz_tdiv_qr_000975d4)(x,rem,dest,pa_Var14);\n            if (rem[0]._mp_size == 0) {\n              p_Var3 = (mpz_ptr)((int)&p_Var3->_mp_alloc + (1 << (uVar12 & 0x1f)));\n              src = x;\n              (*(code *)PTR___gmpz_swap_00097468)(dest);\n            }\n            uVar12 = uVar12 - 1;\n            (*(code *)PTR___gmpz_clear_00097308)(pa_Var14);\n            pa_Var14 = pa_Var14 + -1;\n          } while (uVar12 != 0xffffffff);\n        }\n        else {\n          (*(code *)PTR___gmpz_set_000974b8)(dest);\n          p_Var3 = (mpz_ptr)0x0;\n        }\n        (*(code *)PTR___gmpz_clear_00097308)(x);\n        (*(code *)PTR___gmpz_clear_00097308)(rem);\n        f = p_Var9;\n      }\n    }\n    else {\n      dn = uVar13;\n      if ((int)uVar13 < 0) {\n        dn = -uVar13;\n      }\n      if (dest->_mp_alloc < dn) {\n        pmVar8 = (mp_limb_t *)(*(code *)PTR___gmpz_realloc_000975bc)(dest,dn);\n        puVar10 = f->_mp_d;\n      }\n      else {\n        pmVar8 = dest->_mp_d;\n      }\n      f = (mpz_srcptr)src->_mp_d;\n      src = (mpz_srcptr)&dn;\n      p_Var3 = (mpz_ptr)(*(code *)PTR___gmpn_remove_00097294)\n                                  (pmVar8,src,f,dn,puVar10,uVar12,0xffffffff);\n      iVar6 = dn;\n      if ((uVar11 >> 0x1f & (uint)p_Var3) != uVar13 >> 0x1f) {\n        iVar6 = -dn;\n      }\nLAB_00032004:\n      dest->_mp_size = iVar6;\n    }\n  }" { (if_statement "if ((uVar5 & 1) == 0) {\n      if ((uVar5 == 2) == uVar12) {\n        p_Var3 = (mpz_ptr)(*(code *)PTR___gmpz_scan1_00097608)(src,0);\n        f = p_Var3;\n        (*(code *)PTR___gmpz_fdiv_q_2exp_00097438)(dest);\n        if ((uVar11 >> 0x1f & (uint)p_Var3) != 0) {\n          iVar6 = -dest->_mp_size;\n          goto LAB_00032004;\n        }\n      }\n      else {\n        (*(code *)PTR___gmpz_init_00097130)(rem);\n        (*(code *)PTR___gmpz_init_00097130)(x);\n        p_Var9 = src;\n        (*(code *)PTR___gmpz_tdiv_qr_000975d4)(x,rem,src,f);\n        if (rem[0]._mp_size == 0) {\n          (*(code *)PTR___gmpz_init_set_000975ec)(fpow,f);\n          (*(code *)PTR___gmpz_swap_00097468)(dest,x);\n          if (fpow[0][0]._mp_size < 0) {\n            fpow[0][0]._mp_size = -fpow[0][0]._mp_size;\n          }\n          iVar6 = dest->_mp_size;\n          if (iVar6 < 0) {\n            iVar6 = -iVar6;\n          }\n          if (iVar6 < fpow[0][0]._mp_size * 2 + -1) {\n            p_Var3 = (mpz_ptr)&DAT_00000001;\n            uVar12 = 0;\n          }\n          else {\n            pa_Var14 = fpow;\n            uVar11 = 1;\n            do {\n              uVar12 = uVar11;\n              pa_Var14 = pa_Var14 + 1;\n              (*(code *)PTR___gmpz_init_00097130)(pa_Var14);\n              (*(code *)PTR___gmpz_mul_00097498)(pa_Var14,pa_Var14 + -1);\n              (*(code *)PTR___gmpz_tdiv_qr_000975d4)(x,rem,dest,pa_Var14);\n              if (rem[0]._mp_size != 0) {\n                (*(code *)PTR___gmpz_clear_00097308)(pa_Var14);\n                p_Var3 = (mpz_ptr)((1 << (uVar12 & 0x1f)) + -1);\n                uVar12 = uVar12 - 1;\n                goto LAB_000321c4;\n              }\n              (*(code *)PTR___gmpz_swap_00097468)(dest,x);\n              iVar6 = dest->_mp_size;\n              if (iVar6 < 0) {\n                iVar6 = -iVar6;\n              }\n              iVar4 = (*pa_Var14)[0]._mp_size;\n              if (iVar4 < 0) {\n                iVar4 = -iVar4;\n              }\n              uVar11 = uVar12 + 1;\n            } while (iVar4 * 2 + -1 <= iVar6);\n            p_Var3 = (mpz_ptr)((1 << (uVar12 + 1 & 0x1f)) + -1);\n          }\nLAB_000321c4:\n          pa_Var14 = fpow + uVar12;\n          do {\n            src = rem;\n            p_Var9 = dest;\n            (*(code *)PTR___gmpz_tdiv_qr_000975d4)(x,rem,dest,pa_Var14);\n            if (rem[0]._mp_size == 0) {\n              p_Var3 = (mpz_ptr)((int)&p_Var3->_mp_alloc + (1 << (uVar12 & 0x1f)));\n              src = x;\n              (*(code *)PTR___gmpz_swap_00097468)(dest);\n            }\n            uVar12 = uVar12 - 1;\n            (*(code *)PTR___gmpz_clear_00097308)(pa_Var14);\n            pa_Var14 = pa_Var14 + -1;\n          } while (uVar12 != 0xffffffff);\n        }\n        else {\n          (*(code *)PTR___gmpz_set_000974b8)(dest);\n          p_Var3 = (mpz_ptr)0x0;\n        }\n        (*(code *)PTR___gmpz_clear_00097308)(x);\n        (*(code *)PTR___gmpz_clear_00097308)(rem);\n        f = p_Var9;\n      }\n    }\n    else {\n      dn = uVar13;\n      if ((int)uVar13 < 0) {\n        dn = -uVar13;\n      }\n      if (dest->_mp_alloc < dn) {\n        pmVar8 = (mp_limb_t *)(*(code *)PTR___gmpz_realloc_000975bc)(dest,dn);\n        puVar10 = f->_mp_d;\n      }\n      else {\n        pmVar8 = dest->_mp_d;\n      }\n      f = (mpz_srcptr)src->_mp_d;\n      src = (mpz_srcptr)&dn;\n      p_Var3 = (mpz_ptr)(*(code *)PTR___gmpn_remove_00097294)\n                                  (pmVar8,src,f,dn,puVar10,uVar12,0xffffffff);\n      iVar6 = dn;\n      if ((uVar11 >> 0x1f & (uint)p_Var3) != uVar13 >> 0x1f) {\n        iVar6 = -dn;\n      }\nLAB_00032004:\n      dest->_mp_size = iVar6;\n    }" if (parenthesized_expression "((uVar5 & 1) == 0)" ( (binary_expression "(uVar5 & 1) == 0" (parenthesized_expression "(uVar5 & 1)" ( (binary_expression "uVar5 & 1" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n      if ((uVar5 == 2) == uVar12) {\n        p_Var3 = (mpz_ptr)(*(code *)PTR___gmpz_scan1_00097608)(src,0);\n        f = p_Var3;\n        (*(code *)PTR___gmpz_fdiv_q_2exp_00097438)(dest);\n        if ((uVar11 >> 0x1f & (uint)p_Var3) != 0) {\n          iVar6 = -dest->_mp_size;\n          goto LAB_00032004;\n        }\n      }\n      else {\n        (*(code *)PTR___gmpz_init_00097130)(rem);\n        (*(code *)PTR___gmpz_init_00097130)(x);\n        p_Var9 = src;\n        (*(code *)PTR___gmpz_tdiv_qr_000975d4)(x,rem,src,f);\n        if (rem[0]._mp_size == 0) {\n          (*(code *)PTR___gmpz_init_set_000975ec)(fpow,f);\n          (*(code *)PTR___gmpz_swap_00097468)(dest,x);\n          if (fpow[0][0]._mp_size < 0) {\n            fpow[0][0]._mp_size = -fpow[0][0]._mp_size;\n          }\n          iVar6 = dest->_mp_size;\n          if (iVar6 < 0) {\n            iVar6 = -iVar6;\n          }\n          if (iVar6 < fpow[0][0]._mp_size * 2 + -1) {\n            p_Var3 = (mpz_ptr)&DAT_00000001;\n            uVar12 = 0;\n          }\n          else {\n            pa_Var14 = fpow;\n            uVar11 = 1;\n            do {\n              uVar12 = uVar11;\n              pa_Var14 = pa_Var14 + 1;\n              (*(code *)PTR___gmpz_init_00097130)(pa_Var14);\n              (*(code *)PTR___gmpz_mul_00097498)(pa_Var14,pa_Var14 + -1);\n              (*(code *)PTR___gmpz_tdiv_qr_000975d4)(x,rem,dest,pa_Var14);\n              if (rem[0]._mp_size != 0) {\n                (*(code *)PTR___gmpz_clear_00097308)(pa_Var14);\n                p_Var3 = (mpz_ptr)((1 << (uVar12 & 0x1f)) + -1);\n                uVar12 = uVar12 - 1;\n                goto LAB_000321c4;\n              }\n              (*(code *)PTR___gmpz_swap_00097468)(dest,x);\n              iVar6 = dest->_mp_size;\n              if (iVar6 < 0) {\n                iVar6 = -iVar6;\n              }\n              iVar4 = (*pa_Var14)[0]._mp_size;\n              if (iVar4 < 0) {\n                iVar4 = -iVar4;\n              }\n              uVar11 = uVar12 + 1;\n            } while (iVar4 * 2 + -1 <= iVar6);\n            p_Var3 = (mpz_ptr)((1 << (uVar12 + 1 & 0x1f)) + -1);\n          }\nLAB_000321c4:\n          pa_Var14 = fpow + uVar12;\n          do {\n            src = rem;\n            p_Var9 = dest;\n            (*(code *)PTR___gmpz_tdiv_qr_000975d4)(x,rem,dest,pa_Var14);\n            if (rem[0]._mp_size == 0) {\n              p_Var3 = (mpz_ptr)((int)&p_Var3->_mp_alloc + (1 << (uVar12 & 0x1f)));\n              src = x;\n              (*(code *)PTR___gmpz_swap_00097468)(dest);\n            }\n            uVar12 = uVar12 - 1;\n            (*(code *)PTR___gmpz_clear_00097308)(pa_Var14);\n            pa_Var14 = pa_Var14 + -1;\n          } while (uVar12 != 0xffffffff);\n        }\n        else {\n          (*(code *)PTR___gmpz_set_000974b8)(dest);\n          p_Var3 = (mpz_ptr)0x0;\n        }\n        (*(code *)PTR___gmpz_clear_00097308)(x);\n        (*(code *)PTR___gmpz_clear_00097308)(rem);\n        f = p_Var9;\n      }\n    }" { (if_statement "if ((uVar5 == 2) == uVar12) {\n        p_Var3 = (mpz_ptr)(*(code *)PTR___gmpz_scan1_00097608)(src,0);\n        f = p_Var3;\n        (*(code *)PTR___gmpz_fdiv_q_2exp_00097438)(dest);\n        if ((uVar11 >> 0x1f & (uint)p_Var3) != 0) {\n          iVar6 = -dest->_mp_size;\n          goto LAB_00032004;\n        }\n      }\n      else {\n        (*(code *)PTR___gmpz_init_00097130)(rem);\n        (*(code *)PTR___gmpz_init_00097130)(x);\n        p_Var9 = src;\n        (*(code *)PTR___gmpz_tdiv_qr_000975d4)(x,rem,src,f);\n        if (rem[0]._mp_size == 0) {\n          (*(code *)PTR___gmpz_init_set_000975ec)(fpow,f);\n          (*(code *)PTR___gmpz_swap_00097468)(dest,x);\n          if (fpow[0][0]._mp_size < 0) {\n            fpow[0][0]._mp_size = -fpow[0][0]._mp_size;\n          }\n          iVar6 = dest->_mp_size;\n          if (iVar6 < 0) {\n            iVar6 = -iVar6;\n          }\n          if (iVar6 < fpow[0][0]._mp_size * 2 + -1) {\n            p_Var3 = (mpz_ptr)&DAT_00000001;\n            uVar12 = 0;\n          }\n          else {\n            pa_Var14 = fpow;\n            uVar11 = 1;\n            do {\n              uVar12 = uVar11;\n              pa_Var14 = pa_Var14 + 1;\n              (*(code *)PTR___gmpz_init_00097130)(pa_Var14);\n              (*(code *)PTR___gmpz_mul_00097498)(pa_Var14,pa_Var14 + -1);\n              (*(code *)PTR___gmpz_tdiv_qr_000975d4)(x,rem,dest,pa_Var14);\n              if (rem[0]._mp_size != 0) {\n                (*(code *)PTR___gmpz_clear_00097308)(pa_Var14);\n                p_Var3 = (mpz_ptr)((1 << (uVar12 & 0x1f)) + -1);\n                uVar12 = uVar12 - 1;\n                goto LAB_000321c4;\n              }\n              (*(code *)PTR___gmpz_swap_00097468)(dest,x);\n              iVar6 = dest->_mp_size;\n              if (iVar6 < 0) {\n                iVar6 = -iVar6;\n              }\n              iVar4 = (*pa_Var14)[0]._mp_size;\n              if (iVar4 < 0) {\n                iVar4 = -iVar4;\n              }\n              uVar11 = uVar12 + 1;\n            } while (iVar4 * 2 + -1 <= iVar6);\n            p_Var3 = (mpz_ptr)((1 << (uVar12 + 1 & 0x1f)) + -1);\n          }\nLAB_000321c4:\n          pa_Var14 = fpow + uVar12;\n          do {\n            src = rem;\n            p_Var9 = dest;\n            (*(code *)PTR___gmpz_tdiv_qr_000975d4)(x,rem,dest,pa_Var14);\n            if (rem[0]._mp_size == 0) {\n              p_Var3 = (mpz_ptr)((int)&p_Var3->_mp_alloc + (1 << (uVar12 & 0x1f)));\n              src = x;\n              (*(code *)PTR___gmpz_swap_00097468)(dest);\n            }\n            uVar12 = uVar12 - 1;\n            (*(code *)PTR___gmpz_clear_00097308)(pa_Var14);\n            pa_Var14 = pa_Var14 + -1;\n          } while (uVar12 != 0xffffffff);\n        }\n        else {\n          (*(code *)PTR___gmpz_set_000974b8)(dest);\n          p_Var3 = (mpz_ptr)0x0;\n        }\n        (*(code *)PTR___gmpz_clear_00097308)(x);\n        (*(code *)PTR___gmpz_clear_00097308)(rem);\n        f = p_Var9;\n      }" if (parenthesized_expression "((uVar5 == 2) == uVar12)" ( (binary_expression "(uVar5 == 2) == uVar12" (parenthesized_expression "(uVar5 == 2)" ( (binary_expression "uVar5 == 2" identifier == number_literal) )) == identifier) )) (compound_statement "{\n        p_Var3 = (mpz_ptr)(*(code *)PTR___gmpz_scan1_00097608)(src,0);\n        f = p_Var3;\n        (*(code *)PTR___gmpz_fdiv_q_2exp_00097438)(dest);\n        if ((uVar11 >> 0x1f & (uint)p_Var3) != 0) {\n          iVar6 = -dest->_mp_size;\n          goto LAB_00032004;\n        }\n      }" { (expression_statement "p_Var3 = (mpz_ptr)(*(code *)PTR___gmpz_scan1_00097608)(src,0);" (assignment_expression "p_Var3 = (mpz_ptr)(*(code *)PTR___gmpz_scan1_00097608)(src,0)" identifier = (call_expression "(mpz_ptr)(*(code *)PTR___gmpz_scan1_00097608)(src,0)" (call_expression "(mpz_ptr)(*(code *)PTR___gmpz_scan1_00097608)" (parenthesized_expression "(mpz_ptr)" ( identifier )) (argument_list "(*(code *)PTR___gmpz_scan1_00097608)" ( (pointer_expression "*(code *)PTR___gmpz_scan1_00097608" * (cast_expression "(code *)PTR___gmpz_scan1_00097608" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ))) (argument_list "(src,0)" ( identifier , number_literal )))) ;) (expression_statement "f = p_Var3;" (assignment_expression "f = p_Var3" identifier = identifier) ;) (expression_statement "(*(code *)PTR___gmpz_fdiv_q_2exp_00097438)(dest);" (call_expression "(*(code *)PTR___gmpz_fdiv_q_2exp_00097438)(dest)" (parenthesized_expression "(*(code *)PTR___gmpz_fdiv_q_2exp_00097438)" ( (pointer_expression "*(code *)PTR___gmpz_fdiv_q_2exp_00097438" * (cast_expression "(code *)PTR___gmpz_fdiv_q_2exp_00097438" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(dest)" ( identifier ))) ;) (if_statement "if ((uVar11 >> 0x1f & (uint)p_Var3) != 0) {\n          iVar6 = -dest->_mp_size;\n          goto LAB_00032004;\n        }" if (parenthesized_expression "((uVar11 >> 0x1f & (uint)p_Var3) != 0)" ( (binary_expression "(uVar11 >> 0x1f & (uint)p_Var3) != 0" (parenthesized_expression "(uVar11 >> 0x1f & (uint)p_Var3)" ( (binary_expression "uVar11 >> 0x1f & (uint)p_Var3" (binary_expression "uVar11 >> 0x1f" identifier >> number_literal) & (cast_expression "(uint)p_Var3" ( (type_descriptor "uint" type_identifier) ) identifier)) )) != number_literal) )) (compound_statement "{\n          iVar6 = -dest->_mp_size;\n          goto LAB_00032004;\n        }" { (expression_statement "iVar6 = -dest->_mp_size;" (assignment_expression "iVar6 = -dest->_mp_size" identifier = (unary_expression "-dest->_mp_size" - (field_expression "dest->_mp_size" identifier -> field_identifier))) ;) (goto_statement "goto LAB_00032004;" goto statement_identifier ;) })) }) (else_clause "else {\n        (*(code *)PTR___gmpz_init_00097130)(rem);\n        (*(code *)PTR___gmpz_init_00097130)(x);\n        p_Var9 = src;\n        (*(code *)PTR___gmpz_tdiv_qr_000975d4)(x,rem,src,f);\n        if (rem[0]._mp_size == 0) {\n          (*(code *)PTR___gmpz_init_set_000975ec)(fpow,f);\n          (*(code *)PTR___gmpz_swap_00097468)(dest,x);\n          if (fpow[0][0]._mp_size < 0) {\n            fpow[0][0]._mp_size = -fpow[0][0]._mp_size;\n          }\n          iVar6 = dest->_mp_size;\n          if (iVar6 < 0) {\n            iVar6 = -iVar6;\n          }\n          if (iVar6 < fpow[0][0]._mp_size * 2 + -1) {\n            p_Var3 = (mpz_ptr)&DAT_00000001;\n            uVar12 = 0;\n          }\n          else {\n            pa_Var14 = fpow;\n            uVar11 = 1;\n            do {\n              uVar12 = uVar11;\n              pa_Var14 = pa_Var14 + 1;\n              (*(code *)PTR___gmpz_init_00097130)(pa_Var14);\n              (*(code *)PTR___gmpz_mul_00097498)(pa_Var14,pa_Var14 + -1);\n              (*(code *)PTR___gmpz_tdiv_qr_000975d4)(x,rem,dest,pa_Var14);\n              if (rem[0]._mp_size != 0) {\n                (*(code *)PTR___gmpz_clear_00097308)(pa_Var14);\n                p_Var3 = (mpz_ptr)((1 << (uVar12 & 0x1f)) + -1);\n                uVar12 = uVar12 - 1;\n                goto LAB_000321c4;\n              }\n              (*(code *)PTR___gmpz_swap_00097468)(dest,x);\n              iVar6 = dest->_mp_size;\n              if (iVar6 < 0) {\n                iVar6 = -iVar6;\n              }\n              iVar4 = (*pa_Var14)[0]._mp_size;\n              if (iVar4 < 0) {\n                iVar4 = -iVar4;\n              }\n              uVar11 = uVar12 + 1;\n            } while (iVar4 * 2 + -1 <= iVar6);\n            p_Var3 = (mpz_ptr)((1 << (uVar12 + 1 & 0x1f)) + -1);\n          }\nLAB_000321c4:\n          pa_Var14 = fpow + uVar12;\n          do {\n            src = rem;\n            p_Var9 = dest;\n            (*(code *)PTR___gmpz_tdiv_qr_000975d4)(x,rem,dest,pa_Var14);\n            if (rem[0]._mp_size == 0) {\n              p_Var3 = (mpz_ptr)((int)&p_Var3->_mp_alloc + (1 << (uVar12 & 0x1f)));\n              src = x;\n              (*(code *)PTR___gmpz_swap_00097468)(dest);\n            }\n            uVar12 = uVar12 - 1;\n            (*(code *)PTR___gmpz_clear_00097308)(pa_Var14);\n            pa_Var14 = pa_Var14 + -1;\n          } while (uVar12 != 0xffffffff);\n        }\n        else {\n          (*(code *)PTR___gmpz_set_000974b8)(dest);\n          p_Var3 = (mpz_ptr)0x0;\n        }\n        (*(code *)PTR___gmpz_clear_00097308)(x);\n        (*(code *)PTR___gmpz_clear_00097308)(rem);\n        f = p_Var9;\n      }" else (compound_statement "{\n        (*(code *)PTR___gmpz_init_00097130)(rem);\n        (*(code *)PTR___gmpz_init_00097130)(x);\n        p_Var9 = src;\n        (*(code *)PTR___gmpz_tdiv_qr_000975d4)(x,rem,src,f);\n        if (rem[0]._mp_size == 0) {\n          (*(code *)PTR___gmpz_init_set_000975ec)(fpow,f);\n          (*(code *)PTR___gmpz_swap_00097468)(dest,x);\n          if (fpow[0][0]._mp_size < 0) {\n            fpow[0][0]._mp_size = -fpow[0][0]._mp_size;\n          }\n          iVar6 = dest->_mp_size;\n          if (iVar6 < 0) {\n            iVar6 = -iVar6;\n          }\n          if (iVar6 < fpow[0][0]._mp_size * 2 + -1) {\n            p_Var3 = (mpz_ptr)&DAT_00000001;\n            uVar12 = 0;\n          }\n          else {\n            pa_Var14 = fpow;\n            uVar11 = 1;\n            do {\n              uVar12 = uVar11;\n              pa_Var14 = pa_Var14 + 1;\n              (*(code *)PTR___gmpz_init_00097130)(pa_Var14);\n              (*(code *)PTR___gmpz_mul_00097498)(pa_Var14,pa_Var14 + -1);\n              (*(code *)PTR___gmpz_tdiv_qr_000975d4)(x,rem,dest,pa_Var14);\n              if (rem[0]._mp_size != 0) {\n                (*(code *)PTR___gmpz_clear_00097308)(pa_Var14);\n                p_Var3 = (mpz_ptr)((1 << (uVar12 & 0x1f)) + -1);\n                uVar12 = uVar12 - 1;\n                goto LAB_000321c4;\n              }\n              (*(code *)PTR___gmpz_swap_00097468)(dest,x);\n              iVar6 = dest->_mp_size;\n              if (iVar6 < 0) {\n                iVar6 = -iVar6;\n              }\n              iVar4 = (*pa_Var14)[0]._mp_size;\n              if (iVar4 < 0) {\n                iVar4 = -iVar4;\n              }\n              uVar11 = uVar12 + 1;\n            } while (iVar4 * 2 + -1 <= iVar6);\n            p_Var3 = (mpz_ptr)((1 << (uVar12 + 1 & 0x1f)) + -1);\n          }\nLAB_000321c4:\n          pa_Var14 = fpow + uVar12;\n          do {\n            src = rem;\n            p_Var9 = dest;\n            (*(code *)PTR___gmpz_tdiv_qr_000975d4)(x,rem,dest,pa_Var14);\n            if (rem[0]._mp_size == 0) {\n              p_Var3 = (mpz_ptr)((int)&p_Var3->_mp_alloc + (1 << (uVar12 & 0x1f)));\n              src = x;\n              (*(code *)PTR___gmpz_swap_00097468)(dest);\n            }\n            uVar12 = uVar12 - 1;\n            (*(code *)PTR___gmpz_clear_00097308)(pa_Var14);\n            pa_Var14 = pa_Var14 + -1;\n          } while (uVar12 != 0xffffffff);\n        }\n        else {\n          (*(code *)PTR___gmpz_set_000974b8)(dest);\n          p_Var3 = (mpz_ptr)0x0;\n        }\n        (*(code *)PTR___gmpz_clear_00097308)(x);\n        (*(code *)PTR___gmpz_clear_00097308)(rem);\n        f = p_Var9;\n      }" { (expression_statement "(*(code *)PTR___gmpz_init_00097130)(rem);" (call_expression "(*(code *)PTR___gmpz_init_00097130)(rem)" (parenthesized_expression "(*(code *)PTR___gmpz_init_00097130)" ( (pointer_expression "*(code *)PTR___gmpz_init_00097130" * (cast_expression "(code *)PTR___gmpz_init_00097130" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(rem)" ( identifier ))) ;) (expression_statement "(*(code *)PTR___gmpz_init_00097130)(x);" (call_expression "(*(code *)PTR___gmpz_init_00097130)(x)" (parenthesized_expression "(*(code *)PTR___gmpz_init_00097130)" ( (pointer_expression "*(code *)PTR___gmpz_init_00097130" * (cast_expression "(code *)PTR___gmpz_init_00097130" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(x)" ( identifier ))) ;) (expression_statement "p_Var9 = src;" (assignment_expression "p_Var9 = src" identifier = identifier) ;) (expression_statement "(*(code *)PTR___gmpz_tdiv_qr_000975d4)(x,rem,src,f);" (call_expression "(*(code *)PTR___gmpz_tdiv_qr_000975d4)(x,rem,src,f)" (parenthesized_expression "(*(code *)PTR___gmpz_tdiv_qr_000975d4)" ( (pointer_expression "*(code *)PTR___gmpz_tdiv_qr_000975d4" * (cast_expression "(code *)PTR___gmpz_tdiv_qr_000975d4" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(x,rem,src,f)" ( identifier , identifier , identifier , identifier ))) ;) (if_statement "if (rem[0]._mp_size == 0) {\n          (*(code *)PTR___gmpz_init_set_000975ec)(fpow,f);\n          (*(code *)PTR___gmpz_swap_00097468)(dest,x);\n          if (fpow[0][0]._mp_size < 0) {\n            fpow[0][0]._mp_size = -fpow[0][0]._mp_size;\n          }\n          iVar6 = dest->_mp_size;\n          if (iVar6 < 0) {\n            iVar6 = -iVar6;\n          }\n          if (iVar6 < fpow[0][0]._mp_size * 2 + -1) {\n            p_Var3 = (mpz_ptr)&DAT_00000001;\n            uVar12 = 0;\n          }\n          else {\n            pa_Var14 = fpow;\n            uVar11 = 1;\n            do {\n              uVar12 = uVar11;\n              pa_Var14 = pa_Var14 + 1;\n              (*(code *)PTR___gmpz_init_00097130)(pa_Var14);\n              (*(code *)PTR___gmpz_mul_00097498)(pa_Var14,pa_Var14 + -1);\n              (*(code *)PTR___gmpz_tdiv_qr_000975d4)(x,rem,dest,pa_Var14);\n              if (rem[0]._mp_size != 0) {\n                (*(code *)PTR___gmpz_clear_00097308)(pa_Var14);\n                p_Var3 = (mpz_ptr)((1 << (uVar12 & 0x1f)) + -1);\n                uVar12 = uVar12 - 1;\n                goto LAB_000321c4;\n              }\n              (*(code *)PTR___gmpz_swap_00097468)(dest,x);\n              iVar6 = dest->_mp_size;\n              if (iVar6 < 0) {\n                iVar6 = -iVar6;\n              }\n              iVar4 = (*pa_Var14)[0]._mp_size;\n              if (iVar4 < 0) {\n                iVar4 = -iVar4;\n              }\n              uVar11 = uVar12 + 1;\n            } while (iVar4 * 2 + -1 <= iVar6);\n            p_Var3 = (mpz_ptr)((1 << (uVar12 + 1 & 0x1f)) + -1);\n          }\nLAB_000321c4:\n          pa_Var14 = fpow + uVar12;\n          do {\n            src = rem;\n            p_Var9 = dest;\n            (*(code *)PTR___gmpz_tdiv_qr_000975d4)(x,rem,dest,pa_Var14);\n            if (rem[0]._mp_size == 0) {\n              p_Var3 = (mpz_ptr)((int)&p_Var3->_mp_alloc + (1 << (uVar12 & 0x1f)));\n              src = x;\n              (*(code *)PTR___gmpz_swap_00097468)(dest);\n            }\n            uVar12 = uVar12 - 1;\n            (*(code *)PTR___gmpz_clear_00097308)(pa_Var14);\n            pa_Var14 = pa_Var14 + -1;\n          } while (uVar12 != 0xffffffff);\n        }\n        else {\n          (*(code *)PTR___gmpz_set_000974b8)(dest);\n          p_Var3 = (mpz_ptr)0x0;\n        }" if (parenthesized_expression "(rem[0]._mp_size == 0)" ( (binary_expression "rem[0]._mp_size == 0" (field_expression "rem[0]._mp_size" (subscript_expression "rem[0]" identifier [ number_literal ]) . field_identifier) == number_literal) )) (compound_statement "{\n          (*(code *)PTR___gmpz_init_set_000975ec)(fpow,f);\n          (*(code *)PTR___gmpz_swap_00097468)(dest,x);\n          if (fpow[0][0]._mp_size < 0) {\n            fpow[0][0]._mp_size = -fpow[0][0]._mp_size;\n          }\n          iVar6 = dest->_mp_size;\n          if (iVar6 < 0) {\n            iVar6 = -iVar6;\n          }\n          if (iVar6 < fpow[0][0]._mp_size * 2 + -1) {\n            p_Var3 = (mpz_ptr)&DAT_00000001;\n            uVar12 = 0;\n          }\n          else {\n            pa_Var14 = fpow;\n            uVar11 = 1;\n            do {\n              uVar12 = uVar11;\n              pa_Var14 = pa_Var14 + 1;\n              (*(code *)PTR___gmpz_init_00097130)(pa_Var14);\n              (*(code *)PTR___gmpz_mul_00097498)(pa_Var14,pa_Var14 + -1);\n              (*(code *)PTR___gmpz_tdiv_qr_000975d4)(x,rem,dest,pa_Var14);\n              if (rem[0]._mp_size != 0) {\n                (*(code *)PTR___gmpz_clear_00097308)(pa_Var14);\n                p_Var3 = (mpz_ptr)((1 << (uVar12 & 0x1f)) + -1);\n                uVar12 = uVar12 - 1;\n                goto LAB_000321c4;\n              }\n              (*(code *)PTR___gmpz_swap_00097468)(dest,x);\n              iVar6 = dest->_mp_size;\n              if (iVar6 < 0) {\n                iVar6 = -iVar6;\n              }\n              iVar4 = (*pa_Var14)[0]._mp_size;\n              if (iVar4 < 0) {\n                iVar4 = -iVar4;\n              }\n              uVar11 = uVar12 + 1;\n            } while (iVar4 * 2 + -1 <= iVar6);\n            p_Var3 = (mpz_ptr)((1 << (uVar12 + 1 & 0x1f)) + -1);\n          }\nLAB_000321c4:\n          pa_Var14 = fpow + uVar12;\n          do {\n            src = rem;\n            p_Var9 = dest;\n            (*(code *)PTR___gmpz_tdiv_qr_000975d4)(x,rem,dest,pa_Var14);\n            if (rem[0]._mp_size == 0) {\n              p_Var3 = (mpz_ptr)((int)&p_Var3->_mp_alloc + (1 << (uVar12 & 0x1f)));\n              src = x;\n              (*(code *)PTR___gmpz_swap_00097468)(dest);\n            }\n            uVar12 = uVar12 - 1;\n            (*(code *)PTR___gmpz_clear_00097308)(pa_Var14);\n            pa_Var14 = pa_Var14 + -1;\n          } while (uVar12 != 0xffffffff);\n        }" { (expression_statement "(*(code *)PTR___gmpz_init_set_000975ec)(fpow,f);" (call_expression "(*(code *)PTR___gmpz_init_set_000975ec)(fpow,f)" (parenthesized_expression "(*(code *)PTR___gmpz_init_set_000975ec)" ( (pointer_expression "*(code *)PTR___gmpz_init_set_000975ec" * (cast_expression "(code *)PTR___gmpz_init_set_000975ec" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(fpow,f)" ( identifier , identifier ))) ;) (expression_statement "(*(code *)PTR___gmpz_swap_00097468)(dest,x);" (call_expression "(*(code *)PTR___gmpz_swap_00097468)(dest,x)" (parenthesized_expression "(*(code *)PTR___gmpz_swap_00097468)" ( (pointer_expression "*(code *)PTR___gmpz_swap_00097468" * (cast_expression "(code *)PTR___gmpz_swap_00097468" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(dest,x)" ( identifier , identifier ))) ;) (if_statement "if (fpow[0][0]._mp_size < 0) {\n            fpow[0][0]._mp_size = -fpow[0][0]._mp_size;\n          }" if (parenthesized_expression "(fpow[0][0]._mp_size < 0)" ( (binary_expression "fpow[0][0]._mp_size < 0" (field_expression "fpow[0][0]._mp_size" (subscript_expression "fpow[0][0]" (subscript_expression "fpow[0]" identifier [ number_literal ]) [ number_literal ]) . field_identifier) < number_literal) )) (compound_statement "{\n            fpow[0][0]._mp_size = -fpow[0][0]._mp_size;\n          }" { (expression_statement "fpow[0][0]._mp_size = -fpow[0][0]._mp_size;" (assignment_expression "fpow[0][0]._mp_size = -fpow[0][0]._mp_size" (field_expression "fpow[0][0]._mp_size" (subscript_expression "fpow[0][0]" (subscript_expression "fpow[0]" identifier [ number_literal ]) [ number_literal ]) . field_identifier) = (unary_expression "-fpow[0][0]._mp_size" - (field_expression "fpow[0][0]._mp_size" (subscript_expression "fpow[0][0]" (subscript_expression "fpow[0]" identifier [ number_literal ]) [ number_literal ]) . field_identifier))) ;) })) (expression_statement "iVar6 = dest->_mp_size;" (assignment_expression "iVar6 = dest->_mp_size" identifier = (field_expression "dest->_mp_size" identifier -> field_identifier)) ;) (if_statement "if (iVar6 < 0) {\n            iVar6 = -iVar6;\n          }" if (parenthesized_expression "(iVar6 < 0)" ( (binary_expression "iVar6 < 0" identifier < number_literal) )) (compound_statement "{\n            iVar6 = -iVar6;\n          }" { (expression_statement "iVar6 = -iVar6;" (assignment_expression "iVar6 = -iVar6" identifier = (unary_expression "-iVar6" - identifier)) ;) })) (if_statement "if (iVar6 < fpow[0][0]._mp_size * 2 + -1) {\n            p_Var3 = (mpz_ptr)&DAT_00000001;\n            uVar12 = 0;\n          }\n          else {\n            pa_Var14 = fpow;\n            uVar11 = 1;\n            do {\n              uVar12 = uVar11;\n              pa_Var14 = pa_Var14 + 1;\n              (*(code *)PTR___gmpz_init_00097130)(pa_Var14);\n              (*(code *)PTR___gmpz_mul_00097498)(pa_Var14,pa_Var14 + -1);\n              (*(code *)PTR___gmpz_tdiv_qr_000975d4)(x,rem,dest,pa_Var14);\n              if (rem[0]._mp_size != 0) {\n                (*(code *)PTR___gmpz_clear_00097308)(pa_Var14);\n                p_Var3 = (mpz_ptr)((1 << (uVar12 & 0x1f)) + -1);\n                uVar12 = uVar12 - 1;\n                goto LAB_000321c4;\n              }\n              (*(code *)PTR___gmpz_swap_00097468)(dest,x);\n              iVar6 = dest->_mp_size;\n              if (iVar6 < 0) {\n                iVar6 = -iVar6;\n              }\n              iVar4 = (*pa_Var14)[0]._mp_size;\n              if (iVar4 < 0) {\n                iVar4 = -iVar4;\n              }\n              uVar11 = uVar12 + 1;\n            } while (iVar4 * 2 + -1 <= iVar6);\n            p_Var3 = (mpz_ptr)((1 << (uVar12 + 1 & 0x1f)) + -1);\n          }" if (parenthesized_expression "(iVar6 < fpow[0][0]._mp_size * 2 + -1)" ( (binary_expression "iVar6 < fpow[0][0]._mp_size * 2 + -1" identifier < (binary_expression "fpow[0][0]._mp_size * 2 + -1" (binary_expression "fpow[0][0]._mp_size * 2" (field_expression "fpow[0][0]._mp_size" (subscript_expression "fpow[0][0]" (subscript_expression "fpow[0]" identifier [ number_literal ]) [ number_literal ]) . field_identifier) * number_literal) + number_literal)) )) (compound_statement "{\n            p_Var3 = (mpz_ptr)&DAT_00000001;\n            uVar12 = 0;\n          }" { (expression_statement "p_Var3 = (mpz_ptr)&DAT_00000001;" (assignment_expression "p_Var3 = (mpz_ptr)&DAT_00000001" identifier = (binary_expression "(mpz_ptr)&DAT_00000001" (parenthesized_expression "(mpz_ptr)" ( identifier )) & identifier)) ;) (expression_statement "uVar12 = 0;" (assignment_expression "uVar12 = 0" identifier = number_literal) ;) }) (else_clause "else {\n            pa_Var14 = fpow;\n            uVar11 = 1;\n            do {\n              uVar12 = uVar11;\n              pa_Var14 = pa_Var14 + 1;\n              (*(code *)PTR___gmpz_init_00097130)(pa_Var14);\n              (*(code *)PTR___gmpz_mul_00097498)(pa_Var14,pa_Var14 + -1);\n              (*(code *)PTR___gmpz_tdiv_qr_000975d4)(x,rem,dest,pa_Var14);\n              if (rem[0]._mp_size != 0) {\n                (*(code *)PTR___gmpz_clear_00097308)(pa_Var14);\n                p_Var3 = (mpz_ptr)((1 << (uVar12 & 0x1f)) + -1);\n                uVar12 = uVar12 - 1;\n                goto LAB_000321c4;\n              }\n              (*(code *)PTR___gmpz_swap_00097468)(dest,x);\n              iVar6 = dest->_mp_size;\n              if (iVar6 < 0) {\n                iVar6 = -iVar6;\n              }\n              iVar4 = (*pa_Var14)[0]._mp_size;\n              if (iVar4 < 0) {\n                iVar4 = -iVar4;\n              }\n              uVar11 = uVar12 + 1;\n            } while (iVar4 * 2 + -1 <= iVar6);\n            p_Var3 = (mpz_ptr)((1 << (uVar12 + 1 & 0x1f)) + -1);\n          }" else (compound_statement "{\n            pa_Var14 = fpow;\n            uVar11 = 1;\n            do {\n              uVar12 = uVar11;\n              pa_Var14 = pa_Var14 + 1;\n              (*(code *)PTR___gmpz_init_00097130)(pa_Var14);\n              (*(code *)PTR___gmpz_mul_00097498)(pa_Var14,pa_Var14 + -1);\n              (*(code *)PTR___gmpz_tdiv_qr_000975d4)(x,rem,dest,pa_Var14);\n              if (rem[0]._mp_size != 0) {\n                (*(code *)PTR___gmpz_clear_00097308)(pa_Var14);\n                p_Var3 = (mpz_ptr)((1 << (uVar12 & 0x1f)) + -1);\n                uVar12 = uVar12 - 1;\n                goto LAB_000321c4;\n              }\n              (*(code *)PTR___gmpz_swap_00097468)(dest,x);\n              iVar6 = dest->_mp_size;\n              if (iVar6 < 0) {\n                iVar6 = -iVar6;\n              }\n              iVar4 = (*pa_Var14)[0]._mp_size;\n              if (iVar4 < 0) {\n                iVar4 = -iVar4;\n              }\n              uVar11 = uVar12 + 1;\n            } while (iVar4 * 2 + -1 <= iVar6);\n            p_Var3 = (mpz_ptr)((1 << (uVar12 + 1 & 0x1f)) + -1);\n          }" { (expression_statement "pa_Var14 = fpow;" (assignment_expression "pa_Var14 = fpow" identifier = identifier) ;) (expression_statement "uVar11 = 1;" (assignment_expression "uVar11 = 1" identifier = number_literal) ;) (do_statement "do {\n              uVar12 = uVar11;\n              pa_Var14 = pa_Var14 + 1;\n              (*(code *)PTR___gmpz_init_00097130)(pa_Var14);\n              (*(code *)PTR___gmpz_mul_00097498)(pa_Var14,pa_Var14 + -1);\n              (*(code *)PTR___gmpz_tdiv_qr_000975d4)(x,rem,dest,pa_Var14);\n              if (rem[0]._mp_size != 0) {\n                (*(code *)PTR___gmpz_clear_00097308)(pa_Var14);\n                p_Var3 = (mpz_ptr)((1 << (uVar12 & 0x1f)) + -1);\n                uVar12 = uVar12 - 1;\n                goto LAB_000321c4;\n              }\n              (*(code *)PTR___gmpz_swap_00097468)(dest,x);\n              iVar6 = dest->_mp_size;\n              if (iVar6 < 0) {\n                iVar6 = -iVar6;\n              }\n              iVar4 = (*pa_Var14)[0]._mp_size;\n              if (iVar4 < 0) {\n                iVar4 = -iVar4;\n              }\n              uVar11 = uVar12 + 1;\n            } while (iVar4 * 2 + -1 <= iVar6);" do (compound_statement "{\n              uVar12 = uVar11;\n              pa_Var14 = pa_Var14 + 1;\n              (*(code *)PTR___gmpz_init_00097130)(pa_Var14);\n              (*(code *)PTR___gmpz_mul_00097498)(pa_Var14,pa_Var14 + -1);\n              (*(code *)PTR___gmpz_tdiv_qr_000975d4)(x,rem,dest,pa_Var14);\n              if (rem[0]._mp_size != 0) {\n                (*(code *)PTR___gmpz_clear_00097308)(pa_Var14);\n                p_Var3 = (mpz_ptr)((1 << (uVar12 & 0x1f)) + -1);\n                uVar12 = uVar12 - 1;\n                goto LAB_000321c4;\n              }\n              (*(code *)PTR___gmpz_swap_00097468)(dest,x);\n              iVar6 = dest->_mp_size;\n              if (iVar6 < 0) {\n                iVar6 = -iVar6;\n              }\n              iVar4 = (*pa_Var14)[0]._mp_size;\n              if (iVar4 < 0) {\n                iVar4 = -iVar4;\n              }\n              uVar11 = uVar12 + 1;\n            }" { (expression_statement "uVar12 = uVar11;" (assignment_expression "uVar12 = uVar11" identifier = identifier) ;) (expression_statement "pa_Var14 = pa_Var14 + 1;" (assignment_expression "pa_Var14 = pa_Var14 + 1" identifier = (binary_expression "pa_Var14 + 1" identifier + number_literal)) ;) (expression_statement "(*(code *)PTR___gmpz_init_00097130)(pa_Var14);" (call_expression "(*(code *)PTR___gmpz_init_00097130)(pa_Var14)" (parenthesized_expression "(*(code *)PTR___gmpz_init_00097130)" ( (pointer_expression "*(code *)PTR___gmpz_init_00097130" * (cast_expression "(code *)PTR___gmpz_init_00097130" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(pa_Var14)" ( identifier ))) ;) (expression_statement "(*(code *)PTR___gmpz_mul_00097498)(pa_Var14,pa_Var14 + -1);" (call_expression "(*(code *)PTR___gmpz_mul_00097498)(pa_Var14,pa_Var14 + -1)" (parenthesized_expression "(*(code *)PTR___gmpz_mul_00097498)" ( (pointer_expression "*(code *)PTR___gmpz_mul_00097498" * (cast_expression "(code *)PTR___gmpz_mul_00097498" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(pa_Var14,pa_Var14 + -1)" ( identifier , (binary_expression "pa_Var14 + -1" identifier + number_literal) ))) ;) (expression_statement "(*(code *)PTR___gmpz_tdiv_qr_000975d4)(x,rem,dest,pa_Var14);" (call_expression "(*(code *)PTR___gmpz_tdiv_qr_000975d4)(x,rem,dest,pa_Var14)" (parenthesized_expression "(*(code *)PTR___gmpz_tdiv_qr_000975d4)" ( (pointer_expression "*(code *)PTR___gmpz_tdiv_qr_000975d4" * (cast_expression "(code *)PTR___gmpz_tdiv_qr_000975d4" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(x,rem,dest,pa_Var14)" ( identifier , identifier , identifier , identifier ))) ;) (if_statement "if (rem[0]._mp_size != 0) {\n                (*(code *)PTR___gmpz_clear_00097308)(pa_Var14);\n                p_Var3 = (mpz_ptr)((1 << (uVar12 & 0x1f)) + -1);\n                uVar12 = uVar12 - 1;\n                goto LAB_000321c4;\n              }" if (parenthesized_expression "(rem[0]._mp_size != 0)" ( (binary_expression "rem[0]._mp_size != 0" (field_expression "rem[0]._mp_size" (subscript_expression "rem[0]" identifier [ number_literal ]) . field_identifier) != number_literal) )) (compound_statement "{\n                (*(code *)PTR___gmpz_clear_00097308)(pa_Var14);\n                p_Var3 = (mpz_ptr)((1 << (uVar12 & 0x1f)) + -1);\n                uVar12 = uVar12 - 1;\n                goto LAB_000321c4;\n              }" { (expression_statement "(*(code *)PTR___gmpz_clear_00097308)(pa_Var14);" (call_expression "(*(code *)PTR___gmpz_clear_00097308)(pa_Var14)" (parenthesized_expression "(*(code *)PTR___gmpz_clear_00097308)" ( (pointer_expression "*(code *)PTR___gmpz_clear_00097308" * (cast_expression "(code *)PTR___gmpz_clear_00097308" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(pa_Var14)" ( identifier ))) ;) (expression_statement "p_Var3 = (mpz_ptr)((1 << (uVar12 & 0x1f)) + -1);" (assignment_expression "p_Var3 = (mpz_ptr)((1 << (uVar12 & 0x1f)) + -1)" identifier = (call_expression "(mpz_ptr)((1 << (uVar12 & 0x1f)) + -1)" (parenthesized_expression "(mpz_ptr)" ( identifier )) (argument_list "((1 << (uVar12 & 0x1f)) + -1)" ( (binary_expression "(1 << (uVar12 & 0x1f)) + -1" (parenthesized_expression "(1 << (uVar12 & 0x1f))" ( (binary_expression "1 << (uVar12 & 0x1f)" number_literal << (parenthesized_expression "(uVar12 & 0x1f)" ( (binary_expression "uVar12 & 0x1f" identifier & number_literal) ))) )) + number_literal) )))) ;) (expression_statement "uVar12 = uVar12 - 1;" (assignment_expression "uVar12 = uVar12 - 1" identifier = (binary_expression "uVar12 - 1" identifier - number_literal)) ;) (goto_statement "goto LAB_000321c4;" goto statement_identifier ;) })) (expression_statement "(*(code *)PTR___gmpz_swap_00097468)(dest,x);" (call_expression "(*(code *)PTR___gmpz_swap_00097468)(dest,x)" (parenthesized_expression "(*(code *)PTR___gmpz_swap_00097468)" ( (pointer_expression "*(code *)PTR___gmpz_swap_00097468" * (cast_expression "(code *)PTR___gmpz_swap_00097468" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(dest,x)" ( identifier , identifier ))) ;) (expression_statement "iVar6 = dest->_mp_size;" (assignment_expression "iVar6 = dest->_mp_size" identifier = (field_expression "dest->_mp_size" identifier -> field_identifier)) ;) (if_statement "if (iVar6 < 0) {\n                iVar6 = -iVar6;\n              }" if (parenthesized_expression "(iVar6 < 0)" ( (binary_expression "iVar6 < 0" identifier < number_literal) )) (compound_statement "{\n                iVar6 = -iVar6;\n              }" { (expression_statement "iVar6 = -iVar6;" (assignment_expression "iVar6 = -iVar6" identifier = (unary_expression "-iVar6" - identifier)) ;) })) (expression_statement "iVar4 = (*pa_Var14)[0]._mp_size;" (assignment_expression "iVar4 = (*pa_Var14)[0]._mp_size" identifier = (field_expression "(*pa_Var14)[0]._mp_size" (subscript_expression "(*pa_Var14)[0]" (parenthesized_expression "(*pa_Var14)" ( (pointer_expression "*pa_Var14" * identifier) )) [ number_literal ]) . field_identifier)) ;) (if_statement "if (iVar4 < 0) {\n                iVar4 = -iVar4;\n              }" if (parenthesized_expression "(iVar4 < 0)" ( (binary_expression "iVar4 < 0" identifier < number_literal) )) (compound_statement "{\n                iVar4 = -iVar4;\n              }" { (expression_statement "iVar4 = -iVar4;" (assignment_expression "iVar4 = -iVar4" identifier = (unary_expression "-iVar4" - identifier)) ;) })) (expression_statement "uVar11 = uVar12 + 1;" (assignment_expression "uVar11 = uVar12 + 1" identifier = (binary_expression "uVar12 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar4 * 2 + -1 <= iVar6)" ( (binary_expression "iVar4 * 2 + -1 <= iVar6" (binary_expression "iVar4 * 2 + -1" (binary_expression "iVar4 * 2" identifier * number_literal) + number_literal) <= identifier) )) ;) (expression_statement "p_Var3 = (mpz_ptr)((1 << (uVar12 + 1 & 0x1f)) + -1);" (assignment_expression "p_Var3 = (mpz_ptr)((1 << (uVar12 + 1 & 0x1f)) + -1)" identifier = (call_expression "(mpz_ptr)((1 << (uVar12 + 1 & 0x1f)) + -1)" (parenthesized_expression "(mpz_ptr)" ( identifier )) (argument_list "((1 << (uVar12 + 1 & 0x1f)) + -1)" ( (binary_expression "(1 << (uVar12 + 1 & 0x1f)) + -1" (parenthesized_expression "(1 << (uVar12 + 1 & 0x1f))" ( (binary_expression "1 << (uVar12 + 1 & 0x1f)" number_literal << (parenthesized_expression "(uVar12 + 1 & 0x1f)" ( (binary_expression "uVar12 + 1 & 0x1f" (binary_expression "uVar12 + 1" identifier + number_literal) & number_literal) ))) )) + number_literal) )))) ;) }))) (labeled_statement "LAB_000321c4:\n          pa_Var14 = fpow + uVar12;" statement_identifier : (expression_statement "pa_Var14 = fpow + uVar12;" (assignment_expression "pa_Var14 = fpow + uVar12" identifier = (binary_expression "fpow + uVar12" identifier + identifier)) ;)) (do_statement "do {\n            src = rem;\n            p_Var9 = dest;\n            (*(code *)PTR___gmpz_tdiv_qr_000975d4)(x,rem,dest,pa_Var14);\n            if (rem[0]._mp_size == 0) {\n              p_Var3 = (mpz_ptr)((int)&p_Var3->_mp_alloc + (1 << (uVar12 & 0x1f)));\n              src = x;\n              (*(code *)PTR___gmpz_swap_00097468)(dest);\n            }\n            uVar12 = uVar12 - 1;\n            (*(code *)PTR___gmpz_clear_00097308)(pa_Var14);\n            pa_Var14 = pa_Var14 + -1;\n          } while (uVar12 != 0xffffffff);" do (compound_statement "{\n            src = rem;\n            p_Var9 = dest;\n            (*(code *)PTR___gmpz_tdiv_qr_000975d4)(x,rem,dest,pa_Var14);\n            if (rem[0]._mp_size == 0) {\n              p_Var3 = (mpz_ptr)((int)&p_Var3->_mp_alloc + (1 << (uVar12 & 0x1f)));\n              src = x;\n              (*(code *)PTR___gmpz_swap_00097468)(dest);\n            }\n            uVar12 = uVar12 - 1;\n            (*(code *)PTR___gmpz_clear_00097308)(pa_Var14);\n            pa_Var14 = pa_Var14 + -1;\n          }" { (expression_statement "src = rem;" (assignment_expression "src = rem" identifier = identifier) ;) (expression_statement "p_Var9 = dest;" (assignment_expression "p_Var9 = dest" identifier = identifier) ;) (expression_statement "(*(code *)PTR___gmpz_tdiv_qr_000975d4)(x,rem,dest,pa_Var14);" (call_expression "(*(code *)PTR___gmpz_tdiv_qr_000975d4)(x,rem,dest,pa_Var14)" (parenthesized_expression "(*(code *)PTR___gmpz_tdiv_qr_000975d4)" ( (pointer_expression "*(code *)PTR___gmpz_tdiv_qr_000975d4" * (cast_expression "(code *)PTR___gmpz_tdiv_qr_000975d4" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(x,rem,dest,pa_Var14)" ( identifier , identifier , identifier , identifier ))) ;) (if_statement "if (rem[0]._mp_size == 0) {\n              p_Var3 = (mpz_ptr)((int)&p_Var3->_mp_alloc + (1 << (uVar12 & 0x1f)));\n              src = x;\n              (*(code *)PTR___gmpz_swap_00097468)(dest);\n            }" if (parenthesized_expression "(rem[0]._mp_size == 0)" ( (binary_expression "rem[0]._mp_size == 0" (field_expression "rem[0]._mp_size" (subscript_expression "rem[0]" identifier [ number_literal ]) . field_identifier) == number_literal) )) (compound_statement "{\n              p_Var3 = (mpz_ptr)((int)&p_Var3->_mp_alloc + (1 << (uVar12 & 0x1f)));\n              src = x;\n              (*(code *)PTR___gmpz_swap_00097468)(dest);\n            }" { (expression_statement "p_Var3 = (mpz_ptr)((int)&p_Var3->_mp_alloc + (1 << (uVar12 & 0x1f)));" (assignment_expression "p_Var3 = (mpz_ptr)((int)&p_Var3->_mp_alloc + (1 << (uVar12 & 0x1f)))" identifier = (call_expression "(mpz_ptr)((int)&p_Var3->_mp_alloc + (1 << (uVar12 & 0x1f)))" (parenthesized_expression "(mpz_ptr)" ( identifier )) (argument_list "((int)&p_Var3->_mp_alloc + (1 << (uVar12 & 0x1f)))" ( (binary_expression "(int)&p_Var3->_mp_alloc + (1 << (uVar12 & 0x1f))" (cast_expression "(int)&p_Var3->_mp_alloc" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&p_Var3->_mp_alloc" & (field_expression "p_Var3->_mp_alloc" identifier -> field_identifier))) + (parenthesized_expression "(1 << (uVar12 & 0x1f))" ( (binary_expression "1 << (uVar12 & 0x1f)" number_literal << (parenthesized_expression "(uVar12 & 0x1f)" ( (binary_expression "uVar12 & 0x1f" identifier & number_literal) ))) ))) )))) ;) (expression_statement "src = x;" (assignment_expression "src = x" identifier = identifier) ;) (expression_statement "(*(code *)PTR___gmpz_swap_00097468)(dest);" (call_expression "(*(code *)PTR___gmpz_swap_00097468)(dest)" (parenthesized_expression "(*(code *)PTR___gmpz_swap_00097468)" ( (pointer_expression "*(code *)PTR___gmpz_swap_00097468" * (cast_expression "(code *)PTR___gmpz_swap_00097468" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(dest)" ( identifier ))) ;) })) (expression_statement "uVar12 = uVar12 - 1;" (assignment_expression "uVar12 = uVar12 - 1" identifier = (binary_expression "uVar12 - 1" identifier - number_literal)) ;) (expression_statement "(*(code *)PTR___gmpz_clear_00097308)(pa_Var14);" (call_expression "(*(code *)PTR___gmpz_clear_00097308)(pa_Var14)" (parenthesized_expression "(*(code *)PTR___gmpz_clear_00097308)" ( (pointer_expression "*(code *)PTR___gmpz_clear_00097308" * (cast_expression "(code *)PTR___gmpz_clear_00097308" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(pa_Var14)" ( identifier ))) ;) (expression_statement "pa_Var14 = pa_Var14 + -1;" (assignment_expression "pa_Var14 = pa_Var14 + -1" identifier = (binary_expression "pa_Var14 + -1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar12 != 0xffffffff)" ( (binary_expression "uVar12 != 0xffffffff" identifier != number_literal) )) ;) }) (else_clause "else {\n          (*(code *)PTR___gmpz_set_000974b8)(dest);\n          p_Var3 = (mpz_ptr)0x0;\n        }" else (compound_statement "{\n          (*(code *)PTR___gmpz_set_000974b8)(dest);\n          p_Var3 = (mpz_ptr)0x0;\n        }" { (expression_statement "(*(code *)PTR___gmpz_set_000974b8)(dest);" (call_expression "(*(code *)PTR___gmpz_set_000974b8)(dest)" (parenthesized_expression "(*(code *)PTR___gmpz_set_000974b8)" ( (pointer_expression "*(code *)PTR___gmpz_set_000974b8" * (cast_expression "(code *)PTR___gmpz_set_000974b8" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(dest)" ( identifier ))) ;) (expression_statement "p_Var3 = (mpz_ptr)0x0;" (assignment_expression "p_Var3 = (mpz_ptr)0x0" identifier = (cast_expression "(mpz_ptr)0x0" ( (type_descriptor "mpz_ptr" type_identifier) ) number_literal)) ;) }))) (expression_statement "(*(code *)PTR___gmpz_clear_00097308)(x);" (call_expression "(*(code *)PTR___gmpz_clear_00097308)(x)" (parenthesized_expression "(*(code *)PTR___gmpz_clear_00097308)" ( (pointer_expression "*(code *)PTR___gmpz_clear_00097308" * (cast_expression "(code *)PTR___gmpz_clear_00097308" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(x)" ( identifier ))) ;) (expression_statement "(*(code *)PTR___gmpz_clear_00097308)(rem);" (call_expression "(*(code *)PTR___gmpz_clear_00097308)(rem)" (parenthesized_expression "(*(code *)PTR___gmpz_clear_00097308)" ( (pointer_expression "*(code *)PTR___gmpz_clear_00097308" * (cast_expression "(code *)PTR___gmpz_clear_00097308" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(rem)" ( identifier ))) ;) (expression_statement "f = p_Var9;" (assignment_expression "f = p_Var9" identifier = identifier) ;) }))) }) (else_clause "else {\n      dn = uVar13;\n      if ((int)uVar13 < 0) {\n        dn = -uVar13;\n      }\n      if (dest->_mp_alloc < dn) {\n        pmVar8 = (mp_limb_t *)(*(code *)PTR___gmpz_realloc_000975bc)(dest,dn);\n        puVar10 = f->_mp_d;\n      }\n      else {\n        pmVar8 = dest->_mp_d;\n      }\n      f = (mpz_srcptr)src->_mp_d;\n      src = (mpz_srcptr)&dn;\n      p_Var3 = (mpz_ptr)(*(code *)PTR___gmpn_remove_00097294)\n                                  (pmVar8,src,f,dn,puVar10,uVar12,0xffffffff);\n      iVar6 = dn;\n      if ((uVar11 >> 0x1f & (uint)p_Var3) != uVar13 >> 0x1f) {\n        iVar6 = -dn;\n      }\nLAB_00032004:\n      dest->_mp_size = iVar6;\n    }" else (compound_statement "{\n      dn = uVar13;\n      if ((int)uVar13 < 0) {\n        dn = -uVar13;\n      }\n      if (dest->_mp_alloc < dn) {\n        pmVar8 = (mp_limb_t *)(*(code *)PTR___gmpz_realloc_000975bc)(dest,dn);\n        puVar10 = f->_mp_d;\n      }\n      else {\n        pmVar8 = dest->_mp_d;\n      }\n      f = (mpz_srcptr)src->_mp_d;\n      src = (mpz_srcptr)&dn;\n      p_Var3 = (mpz_ptr)(*(code *)PTR___gmpn_remove_00097294)\n                                  (pmVar8,src,f,dn,puVar10,uVar12,0xffffffff);\n      iVar6 = dn;\n      if ((uVar11 >> 0x1f & (uint)p_Var3) != uVar13 >> 0x1f) {\n        iVar6 = -dn;\n      }\nLAB_00032004:\n      dest->_mp_size = iVar6;\n    }" { (expression_statement "dn = uVar13;" (assignment_expression "dn = uVar13" identifier = identifier) ;) (if_statement "if ((int)uVar13 < 0) {\n        dn = -uVar13;\n      }" if (parenthesized_expression "((int)uVar13 < 0)" ( (binary_expression "(int)uVar13 < 0" (cast_expression "(int)uVar13" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n        dn = -uVar13;\n      }" { (expression_statement "dn = -uVar13;" (assignment_expression "dn = -uVar13" identifier = (unary_expression "-uVar13" - identifier)) ;) })) (if_statement "if (dest->_mp_alloc < dn) {\n        pmVar8 = (mp_limb_t *)(*(code *)PTR___gmpz_realloc_000975bc)(dest,dn);\n        puVar10 = f->_mp_d;\n      }\n      else {\n        pmVar8 = dest->_mp_d;\n      }" if (parenthesized_expression "(dest->_mp_alloc < dn)" ( (binary_expression "dest->_mp_alloc < dn" (field_expression "dest->_mp_alloc" identifier -> field_identifier) < identifier) )) (compound_statement "{\n        pmVar8 = (mp_limb_t *)(*(code *)PTR___gmpz_realloc_000975bc)(dest,dn);\n        puVar10 = f->_mp_d;\n      }" { (expression_statement "pmVar8 = (mp_limb_t *)(*(code *)PTR___gmpz_realloc_000975bc)(dest,dn);" (assignment_expression "pmVar8 = (mp_limb_t *)(*(code *)PTR___gmpz_realloc_000975bc)(dest,dn)" identifier = (cast_expression "(mp_limb_t *)(*(code *)PTR___gmpz_realloc_000975bc)(dest,dn)" ( (type_descriptor "mp_limb_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)PTR___gmpz_realloc_000975bc)(dest,dn)" (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 "(dest,dn)" ( identifier , identifier ))))) ;) (expression_statement "puVar10 = f->_mp_d;" (assignment_expression "puVar10 = f->_mp_d" identifier = (field_expression "f->_mp_d" identifier -> field_identifier)) ;) }) (else_clause "else {\n        pmVar8 = dest->_mp_d;\n      }" else (compound_statement "{\n        pmVar8 = dest->_mp_d;\n      }" { (expression_statement "pmVar8 = dest->_mp_d;" (assignment_expression "pmVar8 = dest->_mp_d" identifier = (field_expression "dest->_mp_d" identifier -> field_identifier)) ;) }))) (expression_statement "f = (mpz_srcptr)src->_mp_d;" (assignment_expression "f = (mpz_srcptr)src->_mp_d" identifier = (cast_expression "(mpz_srcptr)src->_mp_d" ( (type_descriptor "mpz_srcptr" type_identifier) ) (field_expression "src->_mp_d" identifier -> field_identifier))) ;) (expression_statement "src = (mpz_srcptr)&dn;" (assignment_expression "src = (mpz_srcptr)&dn" identifier = (binary_expression "(mpz_srcptr)&dn" (parenthesized_expression "(mpz_srcptr)" ( identifier )) & identifier)) ;) (expression_statement "p_Var3 = (mpz_ptr)(*(code *)PTR___gmpn_remove_00097294)\n                                  (pmVar8,src,f,dn,puVar10,uVar12,0xffffffff);" (assignment_expression "p_Var3 = (mpz_ptr)(*(code *)PTR___gmpn_remove_00097294)\n                                  (pmVar8,src,f,dn,puVar10,uVar12,0xffffffff)" identifier = (call_expression "(mpz_ptr)(*(code *)PTR___gmpn_remove_00097294)\n                                  (pmVar8,src,f,dn,puVar10,uVar12,0xffffffff)" (call_expression "(mpz_ptr)(*(code *)PTR___gmpn_remove_00097294)" (parenthesized_expression "(mpz_ptr)" ( identifier )) (argument_list "(*(code *)PTR___gmpn_remove_00097294)" ( (pointer_expression "*(code *)PTR___gmpn_remove_00097294" * (cast_expression "(code *)PTR___gmpn_remove_00097294" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ))) (argument_list "(pmVar8,src,f,dn,puVar10,uVar12,0xffffffff)" ( identifier , identifier , identifier , identifier , identifier , identifier , number_literal )))) ;) (expression_statement "iVar6 = dn;" (assignment_expression "iVar6 = dn" identifier = identifier) ;) (if_statement "if ((uVar11 >> 0x1f & (uint)p_Var3) != uVar13 >> 0x1f) {\n        iVar6 = -dn;\n      }" if (parenthesized_expression "((uVar11 >> 0x1f & (uint)p_Var3) != uVar13 >> 0x1f)" ( (binary_expression "(uVar11 >> 0x1f & (uint)p_Var3) != uVar13 >> 0x1f" (parenthesized_expression "(uVar11 >> 0x1f & (uint)p_Var3)" ( (binary_expression "uVar11 >> 0x1f & (uint)p_Var3" (binary_expression "uVar11 >> 0x1f" identifier >> number_literal) & (cast_expression "(uint)p_Var3" ( (type_descriptor "uint" type_identifier) ) identifier)) )) != (binary_expression "uVar13 >> 0x1f" identifier >> number_literal)) )) (compound_statement "{\n        iVar6 = -dn;\n      }" { (expression_statement "iVar6 = -dn;" (assignment_expression "iVar6 = -dn" identifier = (unary_expression "-dn" - identifier)) ;) })) (labeled_statement "LAB_00032004:\n      dest->_mp_size = iVar6;" statement_identifier : (expression_statement "dest->_mp_size = iVar6;" (assignment_expression "dest->_mp_size = iVar6" (field_expression "dest->_mp_size" identifier -> field_identifier) = identifier) ;)) }))) }) (else_clause "else {\n    if (uVar11 == 0) goto LAB_0003232c;\n    p_Var3 = (mpz_ptr)0x0;\n    (*(code *)PTR___gmpz_set_000974b8)(dest);\n  }" else (compound_statement "{\n    if (uVar11 == 0) goto LAB_0003232c;\n    p_Var3 = (mpz_ptr)0x0;\n    (*(code *)PTR___gmpz_set_000974b8)(dest);\n  }" { (if_statement "if (uVar11 == 0) goto LAB_0003232c;" if (parenthesized_expression "(uVar11 == 0)" ( (binary_expression "uVar11 == 0" identifier == number_literal) )) (goto_statement "goto LAB_0003232c;" goto statement_identifier ;)) (expression_statement "p_Var3 = (mpz_ptr)0x0;" (assignment_expression "p_Var3 = (mpz_ptr)0x0" identifier = (cast_expression "(mpz_ptr)0x0" ( (type_descriptor "mpz_ptr" type_identifier) ) number_literal)) ;) (expression_statement "(*(code *)PTR___gmpz_set_000974b8)(dest);" (call_expression "(*(code *)PTR___gmpz_set_000974b8)(dest)" (parenthesized_expression "(*(code *)PTR___gmpz_set_000974b8)" ( (pointer_expression "*(code *)PTR___gmpz_set_000974b8" * (cast_expression "(code *)PTR___gmpz_set_000974b8" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(dest)" ( identifier ))) ;) }))) (if_statement "if (p_Var2 == *(mpz_ptr *)puVar1) {\n    return (mp_bitcnt_t)p_Var3;\n  }" if (parenthesized_expression "(p_Var2 == *(mpz_ptr *)puVar1)" ( (binary_expression "p_Var2 == *(mpz_ptr *)puVar1" identifier == (pointer_expression "*(mpz_ptr *)puVar1" * (cast_expression "(mpz_ptr *)puVar1" ( (type_descriptor "mpz_ptr *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier))) )) (compound_statement "{\n    return (mp_bitcnt_t)p_Var3;\n  }" { (return_statement "return (mp_bitcnt_t)p_Var3;" return (cast_expression "(mp_bitcnt_t)p_Var3" ( (type_descriptor "mp_bitcnt_t" type_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 "dest = p_Var2;" (assignment_expression "dest = p_Var2" identifier = identifier) ;) (labeled_statement "LAB_0003232c:\n  (*(code *)PTR___gmp_divide_by_zero_000975dc)();" statement_identifier : (expression_statement "(*(code *)PTR___gmp_divide_by_zero_000975dc)();" (call_expression "(*(code *)PTR___gmp_divide_by_zero_000975dc)()" (parenthesized_expression "(*(code *)PTR___gmp_divide_by_zero_000975dc)" ( (pointer_expression "*(code *)PTR___gmp_divide_by_zero_000975dc" * (cast_expression "(code *)PTR___gmp_divide_by_zero_000975dc" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;)) (expression_statement "p_Var2 = f;" (assignment_expression "p_Var2 = f" identifier = identifier) ;) (if_statement "if ((int)f < 0) {\n    p_Var2 = (mpz_ptr)-(int)f;\n  }" if (parenthesized_expression "((int)f < 0)" ( (binary_expression "(int)f < 0" (cast_expression "(int)f" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n    p_Var2 = (mpz_ptr)-(int)f;\n  }" { (expression_statement "p_Var2 = (mpz_ptr)-(int)f;" (assignment_expression "p_Var2 = (mpz_ptr)-(int)f" identifier = (binary_expression "(mpz_ptr)-(int)f" (parenthesized_expression "(mpz_ptr)" ( identifier )) - (cast_expression "(int)f" ( (type_descriptor "int" primitive_type) ) identifier))) ;) })) (if_statement "if (f == (mpz_ptr)0x0) {\n    dest->_mp_alloc = 0;\n    p_Var2 = (mpz_ptr)0x0;\n  }\n  else {\n    if (*(int *)((int)src + (int)p_Var2 * 4 + -4) == 0) {\n      piVar7 = &src->_mp_alloc + (int)p_Var2;\n      do {\n        p_Var2 = (mpz_ptr)((int)&p_Var2[-1]._mp_d + 3);\n        if (p_Var2 == (mpz_ptr)0x0) break;\n        pmVar8 = (mp_limb_t *)(piVar7 + -2);\n        piVar7 = piVar7 + -1;\n      } while (*pmVar8 == 0);\n    }\n    dest->_mp_alloc = 0;\n    if ((int)f < 0) {\n      p_Var2 = (mpz_ptr)-(int)p_Var2;\n    }\n  }" if (parenthesized_expression "(f == (mpz_ptr)0x0)" ( (binary_expression "f == (mpz_ptr)0x0" identifier == (cast_expression "(mpz_ptr)0x0" ( (type_descriptor "mpz_ptr" type_identifier) ) number_literal)) )) (compound_statement "{\n    dest->_mp_alloc = 0;\n    p_Var2 = (mpz_ptr)0x0;\n  }" { (expression_statement "dest->_mp_alloc = 0;" (assignment_expression "dest->_mp_alloc = 0" (field_expression "dest->_mp_alloc" identifier -> field_identifier) = number_literal) ;) (expression_statement "p_Var2 = (mpz_ptr)0x0;" (assignment_expression "p_Var2 = (mpz_ptr)0x0" identifier = (cast_expression "(mpz_ptr)0x0" ( (type_descriptor "mpz_ptr" type_identifier) ) number_literal)) ;) }) (else_clause "else {\n    if (*(int *)((int)src + (int)p_Var2 * 4 + -4) == 0) {\n      piVar7 = &src->_mp_alloc + (int)p_Var2;\n      do {\n        p_Var2 = (mpz_ptr)((int)&p_Var2[-1]._mp_d + 3);\n        if (p_Var2 == (mpz_ptr)0x0) break;\n        pmVar8 = (mp_limb_t *)(piVar7 + -2);\n        piVar7 = piVar7 + -1;\n      } while (*pmVar8 == 0);\n    }\n    dest->_mp_alloc = 0;\n    if ((int)f < 0) {\n      p_Var2 = (mpz_ptr)-(int)p_Var2;\n    }\n  }" else (compound_statement "{\n    if (*(int *)((int)src + (int)p_Var2 * 4 + -4) == 0) {\n      piVar7 = &src->_mp_alloc + (int)p_Var2;\n      do {\n        p_Var2 = (mpz_ptr)((int)&p_Var2[-1]._mp_d + 3);\n        if (p_Var2 == (mpz_ptr)0x0) break;\n        pmVar8 = (mp_limb_t *)(piVar7 + -2);\n        piVar7 = piVar7 + -1;\n      } while (*pmVar8 == 0);\n    }\n    dest->_mp_alloc = 0;\n    if ((int)f < 0) {\n      p_Var2 = (mpz_ptr)-(int)p_Var2;\n    }\n  }" { (if_statement "if (*(int *)((int)src + (int)p_Var2 * 4 + -4) == 0) {\n      piVar7 = &src->_mp_alloc + (int)p_Var2;\n      do {\n        p_Var2 = (mpz_ptr)((int)&p_Var2[-1]._mp_d + 3);\n        if (p_Var2 == (mpz_ptr)0x0) break;\n        pmVar8 = (mp_limb_t *)(piVar7 + -2);\n        piVar7 = piVar7 + -1;\n      } while (*pmVar8 == 0);\n    }" if (parenthesized_expression "(*(int *)((int)src + (int)p_Var2 * 4 + -4) == 0)" ( (binary_expression "*(int *)((int)src + (int)p_Var2 * 4 + -4) == 0" (pointer_expression "*(int *)((int)src + (int)p_Var2 * 4 + -4)" * (cast_expression "(int *)((int)src + (int)p_Var2 * 4 + -4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)src + (int)p_Var2 * 4 + -4)" ( (binary_expression "(int)src + (int)p_Var2 * 4 + -4" (binary_expression "(int)src + (int)p_Var2 * 4" (cast_expression "(int)src" ( (type_descriptor "int" primitive_type) ) identifier) + (binary_expression "(int)p_Var2 * 4" (cast_expression "(int)p_Var2" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal)) + number_literal) )))) == number_literal) )) (compound_statement "{\n      piVar7 = &src->_mp_alloc + (int)p_Var2;\n      do {\n        p_Var2 = (mpz_ptr)((int)&p_Var2[-1]._mp_d + 3);\n        if (p_Var2 == (mpz_ptr)0x0) break;\n        pmVar8 = (mp_limb_t *)(piVar7 + -2);\n        piVar7 = piVar7 + -1;\n      } while (*pmVar8 == 0);\n    }" { (expression_statement "piVar7 = &src->_mp_alloc + (int)p_Var2;" (assignment_expression "piVar7 = &src->_mp_alloc + (int)p_Var2" identifier = (binary_expression "&src->_mp_alloc + (int)p_Var2" (pointer_expression "&src->_mp_alloc" & (field_expression "src->_mp_alloc" identifier -> field_identifier)) + (cast_expression "(int)p_Var2" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (do_statement "do {\n        p_Var2 = (mpz_ptr)((int)&p_Var2[-1]._mp_d + 3);\n        if (p_Var2 == (mpz_ptr)0x0) break;\n        pmVar8 = (mp_limb_t *)(piVar7 + -2);\n        piVar7 = piVar7 + -1;\n      } while (*pmVar8 == 0);" do (compound_statement "{\n        p_Var2 = (mpz_ptr)((int)&p_Var2[-1]._mp_d + 3);\n        if (p_Var2 == (mpz_ptr)0x0) break;\n        pmVar8 = (mp_limb_t *)(piVar7 + -2);\n        piVar7 = piVar7 + -1;\n      }" { (expression_statement "p_Var2 = (mpz_ptr)((int)&p_Var2[-1]._mp_d + 3);" (assignment_expression "p_Var2 = (mpz_ptr)((int)&p_Var2[-1]._mp_d + 3)" identifier = (call_expression "(mpz_ptr)((int)&p_Var2[-1]._mp_d + 3)" (parenthesized_expression "(mpz_ptr)" ( identifier )) (argument_list "((int)&p_Var2[-1]._mp_d + 3)" ( (binary_expression "(int)&p_Var2[-1]._mp_d + 3" (cast_expression "(int)&p_Var2[-1]._mp_d" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&p_Var2[-1]._mp_d" & (field_expression "p_Var2[-1]._mp_d" (subscript_expression "p_Var2[-1]" identifier [ number_literal ]) . field_identifier))) + number_literal) )))) ;) (if_statement "if (p_Var2 == (mpz_ptr)0x0) break;" 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)) )) (break_statement "break;" break ;)) (expression_statement "pmVar8 = (mp_limb_t *)(piVar7 + -2);" (assignment_expression "pmVar8 = (mp_limb_t *)(piVar7 + -2)" identifier = (cast_expression "(mp_limb_t *)(piVar7 + -2)" ( (type_descriptor "mp_limb_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar7 + -2)" ( (binary_expression "piVar7 + -2" identifier + number_literal) )))) ;) (expression_statement "piVar7 = piVar7 + -1;" (assignment_expression "piVar7 = piVar7 + -1" identifier = (binary_expression "piVar7 + -1" identifier + number_literal)) ;) }) while (parenthesized_expression "(*pmVar8 == 0)" ( (binary_expression "*pmVar8 == 0" (pointer_expression "*pmVar8" * identifier) == number_literal) )) ;) })) (expression_statement "dest->_mp_alloc = 0;" (assignment_expression "dest->_mp_alloc = 0" (field_expression "dest->_mp_alloc" identifier -> field_identifier) = number_literal) ;) (if_statement "if ((int)f < 0) {\n      p_Var2 = (mpz_ptr)-(int)p_Var2;\n    }" if (parenthesized_expression "((int)f < 0)" ( (binary_expression "(int)f < 0" (cast_expression "(int)f" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n      p_Var2 = (mpz_ptr)-(int)p_Var2;\n    }" { (expression_statement "p_Var2 = (mpz_ptr)-(int)p_Var2;" (assignment_expression "p_Var2 = (mpz_ptr)-(int)p_Var2" identifier = (binary_expression "(mpz_ptr)-(int)p_Var2" (parenthesized_expression "(mpz_ptr)" ( identifier )) - (cast_expression "(int)p_Var2" ( (type_descriptor "int" primitive_type) ) identifier))) ;) })) }))) (expression_statement "dest->_mp_size = (int)p_Var2;" (assignment_expression "dest->_mp_size = (int)p_Var2" (field_expression "dest->_mp_size" identifier -> field_identifier) = (cast_expression "(int)p_Var2" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "dest->_mp_d = (mp_limb_t *)src;" (assignment_expression "dest->_mp_d = (mp_limb_t *)src" (field_expression "dest->_mp_d" identifier -> field_identifier) = (cast_expression "(mp_limb_t *)src" ( (type_descriptor "mp_limb_t *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (return_statement "return (mp_bitcnt_t)dest;" return (cast_expression "(mp_bitcnt_t)dest" ( (type_descriptor "mp_bitcnt_t" type_identifier) ) identifier) ;) })))
(translation_unit "uint * __gmpz_remove(uint *param_1,uint *param_2,uint *param_3)\n\n{\n  uint *puVar1;\n  undefined *puVar2;\n  int iVar3;\n  uint uVar4;\n  uint uVar5;\n  uint *puVar6;\n  uint *puVar7;\n  uint uVar8;\n  undefined1 *puVar9;\n  uint uVar10;\n  uint local_1c8;\n  uint auStack_1c4 [3];\n  uint uStack_1b8;\n  int local_1b4;\n  undefined1 auStack_1ac [4];\n  int local_1a8;\n  undefined1 auStack_1a0 [372];\n  uint *local_2c;\n  \n  puVar2 = PTR___stack_chk_guard_00097540;\n  puVar7 = (uint *)param_3[2];\n  uVar8 = param_3[1];\n  local_2c = *(uint **)PTR___stack_chk_guard_00097540;\n  uVar10 = param_2[1];\n  uVar5 = -uVar8;\n  if (-1 < (int)uVar8) {\n    uVar5 = uVar8;\n  }\n  uVar4 = *puVar7;\n  if (((int)(uint)(uVar4 == 1) < (int)uVar5) && (uVar10 != 0)) {\n    if ((uVar4 & 1) == 0) {\n      if ((uVar4 == 2) == uVar5) {\n        puVar7 = (uint *)(*(code *)PTR___gmpz_scan1_00097608)(param_2,0);\n        param_3 = puVar7;\n        (*(code *)PTR___gmpz_fdiv_q_2exp_00097438)(param_1);\n        if ((uVar8 >> 0x1f & (uint)puVar7) != 0) {\n          uVar5 = -param_1[1];\n          goto LAB_00032004;\n        }\n      }\n      else {\n        (*(code *)PTR___gmpz_init_00097130)(&uStack_1b8);\n        (*(code *)PTR___gmpz_init_00097130)(auStack_1c4);\n        puVar6 = param_2;\n        (*(code *)PTR___gmpz_tdiv_qr_000975d4)(auStack_1c4,&uStack_1b8,param_2,param_3);\n        if (local_1b4 == 0) {\n          (*(code *)PTR___gmpz_init_set_000975ec)(auStack_1ac,param_3);\n          (*(code *)PTR___gmpz_swap_00097468)(param_1,auStack_1c4);\n          if (local_1a8 < 0) {\n            local_1a8 = -local_1a8;\n          }\n          uVar5 = param_1[1];\n          if ((int)uVar5 < 0) {\n            uVar5 = -uVar5;\n          }\n          if ((int)uVar5 < local_1a8 * 2 + -1) {\n            puVar7 = (uint *)0x1;\n            uVar5 = 0;\n          }\n          else {\n            puVar9 = auStack_1a0;\n            uVar8 = 1;\n            do {\n              uVar5 = uVar8;\n              (*(code *)PTR___gmpz_init_00097130)(puVar9);\n              (*(code *)PTR___gmpz_mul_00097498)(puVar9,puVar9 + -0xc);\n              (*(code *)PTR___gmpz_tdiv_qr_000975d4)(auStack_1c4,&uStack_1b8,param_1,puVar9);\n              if (local_1b4 != 0) {\n                (*(code *)PTR___gmpz_clear_00097308)(puVar9);\n                puVar7 = (uint *)((1 << (uVar5 & 0x1f)) + -1);\n                uVar5 = uVar5 - 1;\n                goto LAB_000321c4;\n              }\n              (*(code *)PTR___gmpz_swap_00097468)(param_1,auStack_1c4);\n              uVar10 = param_1[1];\n              if ((int)uVar10 < 0) {\n                uVar10 = -uVar10;\n              }\n              iVar3 = *(int *)(puVar9 + 4);\n              if (iVar3 < 0) {\n                iVar3 = -iVar3;\n              }\n              puVar9 = puVar9 + 0xc;\n              uVar8 = uVar5 + 1;\n            } while (iVar3 * 2 + -1 <= (int)uVar10);\n            puVar7 = (uint *)((1 << (uVar5 + 1 & 0x1f)) + -1);\n          }\nLAB_000321c4:\n          puVar9 = auStack_1ac + uVar5 * 0xc;\n          do {\n            param_2 = &uStack_1b8;\n            puVar6 = param_1;\n            (*(code *)PTR___gmpz_tdiv_qr_000975d4)(auStack_1c4,&uStack_1b8,param_1,puVar9);\n            if (local_1b4 == 0) {\n              puVar7 = (uint *)((int)puVar7 + (1 << (uVar5 & 0x1f)));\n              param_2 = auStack_1c4;\n              (*(code *)PTR___gmpz_swap_00097468)(param_1);\n            }\n            uVar5 = uVar5 - 1;\n            (*(code *)PTR___gmpz_clear_00097308)(puVar9);\n            puVar9 = puVar9 + -0xc;\n          } while (uVar5 != 0xffffffff);\n        }\n        else {\n          (*(code *)PTR___gmpz_set_000974b8)(param_1);\n          puVar7 = (uint *)0x0;\n        }\n        (*(code *)PTR___gmpz_clear_00097308)(auStack_1c4);\n        (*(code *)PTR___gmpz_clear_00097308)(&uStack_1b8);\n        param_3 = puVar6;\n      }\n    }\n    else {\n      local_1c8 = uVar10;\n      if ((int)uVar10 < 0) {\n        local_1c8 = -uVar10;\n      }\n      if ((int)*param_1 < (int)local_1c8) {\n        uVar4 = (*(code *)PTR___gmpz_realloc_000975bc)(param_1,local_1c8);\n        puVar7 = (uint *)param_3[2];\n      }\n      else {\n        uVar4 = param_1[2];\n      }\n      param_3 = (uint *)param_2[2];\n      param_2 = &local_1c8;\n      puVar7 = (uint *)(*(code *)PTR___gmpn_remove_00097294)\n                                 (uVar4,param_2,param_3,local_1c8,puVar7,uVar5,0xffffffff);\n      uVar5 = local_1c8;\n      if ((uVar8 >> 0x1f & (uint)puVar7) != uVar10 >> 0x1f) {\n        uVar5 = -local_1c8;\n      }\nLAB_00032004:\n      param_1[1] = uVar5;\n    }\n  }\n  else {\n    if (uVar8 == 0) goto LAB_0003232c;\n    puVar7 = (uint *)0x0;\n    (*(code *)PTR___gmpz_set_000974b8)(param_1);\n  }\n  if (local_2c == *(uint **)puVar2) {\n    return puVar7;\n  }\n  param_1 = local_2c;\n  (*(code *)PTR___stack_chk_fail_000974d0)();\nLAB_0003232c:\n  (*(code *)PTR___gmp_divide_by_zero_000975dc)();\n  puVar7 = param_3;\n  if ((int)param_3 < 0) {\n    puVar7 = (uint *)-(int)param_3;\n  }\n  if (param_3 == (uint *)0x0) {\n    *param_1 = 0;\n    puVar7 = (uint *)0x0;\n  }\n  else {\n    if (param_2[(int)puVar7 + -1] == 0) {\n      puVar6 = param_2 + (int)puVar7;\n      do {\n        puVar7 = (uint *)((int)puVar7 + -1);\n        if (puVar7 == (uint *)0x0) break;\n        puVar1 = puVar6 + -2;\n        puVar6 = puVar6 + -1;\n      } while (*puVar1 == 0);\n    }\n    *param_1 = 0;\n    if ((int)param_3 < 0) {\n      puVar7 = (uint *)-(int)puVar7;\n    }\n  }\n  param_1[1] = (uint)puVar7;\n  param_1[2] = (uint)param_2;\n  return param_1;\n}\n\n" (function_definition "uint * __gmpz_remove(uint *param_1,uint *param_2,uint *param_3)\n\n{\n  uint *puVar1;\n  undefined *puVar2;\n  int iVar3;\n  uint uVar4;\n  uint uVar5;\n  uint *puVar6;\n  uint *puVar7;\n  uint uVar8;\n  undefined1 *puVar9;\n  uint uVar10;\n  uint local_1c8;\n  uint auStack_1c4 [3];\n  uint uStack_1b8;\n  int local_1b4;\n  undefined1 auStack_1ac [4];\n  int local_1a8;\n  undefined1 auStack_1a0 [372];\n  uint *local_2c;\n  \n  puVar2 = PTR___stack_chk_guard_00097540;\n  puVar7 = (uint *)param_3[2];\n  uVar8 = param_3[1];\n  local_2c = *(uint **)PTR___stack_chk_guard_00097540;\n  uVar10 = param_2[1];\n  uVar5 = -uVar8;\n  if (-1 < (int)uVar8) {\n    uVar5 = uVar8;\n  }\n  uVar4 = *puVar7;\n  if (((int)(uint)(uVar4 == 1) < (int)uVar5) && (uVar10 != 0)) {\n    if ((uVar4 & 1) == 0) {\n      if ((uVar4 == 2) == uVar5) {\n        puVar7 = (uint *)(*(code *)PTR___gmpz_scan1_00097608)(param_2,0);\n        param_3 = puVar7;\n        (*(code *)PTR___gmpz_fdiv_q_2exp_00097438)(param_1);\n        if ((uVar8 >> 0x1f & (uint)puVar7) != 0) {\n          uVar5 = -param_1[1];\n          goto LAB_00032004;\n        }\n      }\n      else {\n        (*(code *)PTR___gmpz_init_00097130)(&uStack_1b8);\n        (*(code *)PTR___gmpz_init_00097130)(auStack_1c4);\n        puVar6 = param_2;\n        (*(code *)PTR___gmpz_tdiv_qr_000975d4)(auStack_1c4,&uStack_1b8,param_2,param_3);\n        if (local_1b4 == 0) {\n          (*(code *)PTR___gmpz_init_set_000975ec)(auStack_1ac,param_3);\n          (*(code *)PTR___gmpz_swap_00097468)(param_1,auStack_1c4);\n          if (local_1a8 < 0) {\n            local_1a8 = -local_1a8;\n          }\n          uVar5 = param_1[1];\n          if ((int)uVar5 < 0) {\n            uVar5 = -uVar5;\n          }\n          if ((int)uVar5 < local_1a8 * 2 + -1) {\n            puVar7 = (uint *)0x1;\n            uVar5 = 0;\n          }\n          else {\n            puVar9 = auStack_1a0;\n            uVar8 = 1;\n            do {\n              uVar5 = uVar8;\n              (*(code *)PTR___gmpz_init_00097130)(puVar9);\n              (*(code *)PTR___gmpz_mul_00097498)(puVar9,puVar9 + -0xc);\n              (*(code *)PTR___gmpz_tdiv_qr_000975d4)(auStack_1c4,&uStack_1b8,param_1,puVar9);\n              if (local_1b4 != 0) {\n                (*(code *)PTR___gmpz_clear_00097308)(puVar9);\n                puVar7 = (uint *)((1 << (uVar5 & 0x1f)) + -1);\n                uVar5 = uVar5 - 1;\n                goto LAB_000321c4;\n              }\n              (*(code *)PTR___gmpz_swap_00097468)(param_1,auStack_1c4);\n              uVar10 = param_1[1];\n              if ((int)uVar10 < 0) {\n                uVar10 = -uVar10;\n              }\n              iVar3 = *(int *)(puVar9 + 4);\n              if (iVar3 < 0) {\n                iVar3 = -iVar3;\n              }\n              puVar9 = puVar9 + 0xc;\n              uVar8 = uVar5 + 1;\n            } while (iVar3 * 2 + -1 <= (int)uVar10);\n            puVar7 = (uint *)((1 << (uVar5 + 1 & 0x1f)) + -1);\n          }\nLAB_000321c4:\n          puVar9 = auStack_1ac + uVar5 * 0xc;\n          do {\n            param_2 = &uStack_1b8;\n            puVar6 = param_1;\n            (*(code *)PTR___gmpz_tdiv_qr_000975d4)(auStack_1c4,&uStack_1b8,param_1,puVar9);\n            if (local_1b4 == 0) {\n              puVar7 = (uint *)((int)puVar7 + (1 << (uVar5 & 0x1f)));\n              param_2 = auStack_1c4;\n              (*(code *)PTR___gmpz_swap_00097468)(param_1);\n            }\n            uVar5 = uVar5 - 1;\n            (*(code *)PTR___gmpz_clear_00097308)(puVar9);\n            puVar9 = puVar9 + -0xc;\n          } while (uVar5 != 0xffffffff);\n        }\n        else {\n          (*(code *)PTR___gmpz_set_000974b8)(param_1);\n          puVar7 = (uint *)0x0;\n        }\n        (*(code *)PTR___gmpz_clear_00097308)(auStack_1c4);\n        (*(code *)PTR___gmpz_clear_00097308)(&uStack_1b8);\n        param_3 = puVar6;\n      }\n    }\n    else {\n      local_1c8 = uVar10;\n      if ((int)uVar10 < 0) {\n        local_1c8 = -uVar10;\n      }\n      if ((int)*param_1 < (int)local_1c8) {\n        uVar4 = (*(code *)PTR___gmpz_realloc_000975bc)(param_1,local_1c8);\n        puVar7 = (uint *)param_3[2];\n      }\n      else {\n        uVar4 = param_1[2];\n      }\n      param_3 = (uint *)param_2[2];\n      param_2 = &local_1c8;\n      puVar7 = (uint *)(*(code *)PTR___gmpn_remove_00097294)\n                                 (uVar4,param_2,param_3,local_1c8,puVar7,uVar5,0xffffffff);\n      uVar5 = local_1c8;\n      if ((uVar8 >> 0x1f & (uint)puVar7) != uVar10 >> 0x1f) {\n        uVar5 = -local_1c8;\n      }\nLAB_00032004:\n      param_1[1] = uVar5;\n    }\n  }\n  else {\n    if (uVar8 == 0) goto LAB_0003232c;\n    puVar7 = (uint *)0x0;\n    (*(code *)PTR___gmpz_set_000974b8)(param_1);\n  }\n  if (local_2c == *(uint **)puVar2) {\n    return puVar7;\n  }\n  param_1 = local_2c;\n  (*(code *)PTR___stack_chk_fail_000974d0)();\nLAB_0003232c:\n  (*(code *)PTR___gmp_divide_by_zero_000975dc)();\n  puVar7 = param_3;\n  if ((int)param_3 < 0) {\n    puVar7 = (uint *)-(int)param_3;\n  }\n  if (param_3 == (uint *)0x0) {\n    *param_1 = 0;\n    puVar7 = (uint *)0x0;\n  }\n  else {\n    if (param_2[(int)puVar7 + -1] == 0) {\n      puVar6 = param_2 + (int)puVar7;\n      do {\n        puVar7 = (uint *)((int)puVar7 + -1);\n        if (puVar7 == (uint *)0x0) break;\n        puVar1 = puVar6 + -2;\n        puVar6 = puVar6 + -1;\n      } while (*puVar1 == 0);\n    }\n    *param_1 = 0;\n    if ((int)param_3 < 0) {\n      puVar7 = (uint *)-(int)puVar7;\n    }\n  }\n  param_1[1] = (uint)puVar7;\n  param_1[2] = (uint)param_2;\n  return param_1;\n}" type_identifier (pointer_declarator "* __gmpz_remove(uint *param_1,uint *param_2,uint *param_3)" * (function_declarator "__gmpz_remove(uint *param_1,uint *param_2,uint *param_3)" identifier (parameter_list "(uint *param_1,uint *param_2,uint *param_3)" ( (parameter_declaration "uint *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "uint *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "uint *param_3" type_identifier (pointer_declarator "*param_3" * identifier)) )))) (compound_statement "{\n  uint *puVar1;\n  undefined *puVar2;\n  int iVar3;\n  uint uVar4;\n  uint uVar5;\n  uint *puVar6;\n  uint *puVar7;\n  uint uVar8;\n  undefined1 *puVar9;\n  uint uVar10;\n  uint local_1c8;\n  uint auStack_1c4 [3];\n  uint uStack_1b8;\n  int local_1b4;\n  undefined1 auStack_1ac [4];\n  int local_1a8;\n  undefined1 auStack_1a0 [372];\n  uint *local_2c;\n  \n  puVar2 = PTR___stack_chk_guard_00097540;\n  puVar7 = (uint *)param_3[2];\n  uVar8 = param_3[1];\n  local_2c = *(uint **)PTR___stack_chk_guard_00097540;\n  uVar10 = param_2[1];\n  uVar5 = -uVar8;\n  if (-1 < (int)uVar8) {\n    uVar5 = uVar8;\n  }\n  uVar4 = *puVar7;\n  if (((int)(uint)(uVar4 == 1) < (int)uVar5) && (uVar10 != 0)) {\n    if ((uVar4 & 1) == 0) {\n      if ((uVar4 == 2) == uVar5) {\n        puVar7 = (uint *)(*(code *)PTR___gmpz_scan1_00097608)(param_2,0);\n        param_3 = puVar7;\n        (*(code *)PTR___gmpz_fdiv_q_2exp_00097438)(param_1);\n        if ((uVar8 >> 0x1f & (uint)puVar7) != 0) {\n          uVar5 = -param_1[1];\n          goto LAB_00032004;\n        }\n      }\n      else {\n        (*(code *)PTR___gmpz_init_00097130)(&uStack_1b8);\n        (*(code *)PTR___gmpz_init_00097130)(auStack_1c4);\n        puVar6 = param_2;\n        (*(code *)PTR___gmpz_tdiv_qr_000975d4)(auStack_1c4,&uStack_1b8,param_2,param_3);\n        if (local_1b4 == 0) {\n          (*(code *)PTR___gmpz_init_set_000975ec)(auStack_1ac,param_3);\n          (*(code *)PTR___gmpz_swap_00097468)(param_1,auStack_1c4);\n          if (local_1a8 < 0) {\n            local_1a8 = -local_1a8;\n          }\n          uVar5 = param_1[1];\n          if ((int)uVar5 < 0) {\n            uVar5 = -uVar5;\n          }\n          if ((int)uVar5 < local_1a8 * 2 + -1) {\n            puVar7 = (uint *)0x1;\n            uVar5 = 0;\n          }\n          else {\n            puVar9 = auStack_1a0;\n            uVar8 = 1;\n            do {\n              uVar5 = uVar8;\n              (*(code *)PTR___gmpz_init_00097130)(puVar9);\n              (*(code *)PTR___gmpz_mul_00097498)(puVar9,puVar9 + -0xc);\n              (*(code *)PTR___gmpz_tdiv_qr_000975d4)(auStack_1c4,&uStack_1b8,param_1,puVar9);\n              if (local_1b4 != 0) {\n                (*(code *)PTR___gmpz_clear_00097308)(puVar9);\n                puVar7 = (uint *)((1 << (uVar5 & 0x1f)) + -1);\n                uVar5 = uVar5 - 1;\n                goto LAB_000321c4;\n              }\n              (*(code *)PTR___gmpz_swap_00097468)(param_1,auStack_1c4);\n              uVar10 = param_1[1];\n              if ((int)uVar10 < 0) {\n                uVar10 = -uVar10;\n              }\n              iVar3 = *(int *)(puVar9 + 4);\n              if (iVar3 < 0) {\n                iVar3 = -iVar3;\n              }\n              puVar9 = puVar9 + 0xc;\n              uVar8 = uVar5 + 1;\n            } while (iVar3 * 2 + -1 <= (int)uVar10);\n            puVar7 = (uint *)((1 << (uVar5 + 1 & 0x1f)) + -1);\n          }\nLAB_000321c4:\n          puVar9 = auStack_1ac + uVar5 * 0xc;\n          do {\n            param_2 = &uStack_1b8;\n            puVar6 = param_1;\n            (*(code *)PTR___gmpz_tdiv_qr_000975d4)(auStack_1c4,&uStack_1b8,param_1,puVar9);\n            if (local_1b4 == 0) {\n              puVar7 = (uint *)((int)puVar7 + (1 << (uVar5 & 0x1f)));\n              param_2 = auStack_1c4;\n              (*(code *)PTR___gmpz_swap_00097468)(param_1);\n            }\n            uVar5 = uVar5 - 1;\n            (*(code *)PTR___gmpz_clear_00097308)(puVar9);\n            puVar9 = puVar9 + -0xc;\n          } while (uVar5 != 0xffffffff);\n        }\n        else {\n          (*(code *)PTR___gmpz_set_000974b8)(param_1);\n          puVar7 = (uint *)0x0;\n        }\n        (*(code *)PTR___gmpz_clear_00097308)(auStack_1c4);\n        (*(code *)PTR___gmpz_clear_00097308)(&uStack_1b8);\n        param_3 = puVar6;\n      }\n    }\n    else {\n      local_1c8 = uVar10;\n      if ((int)uVar10 < 0) {\n        local_1c8 = -uVar10;\n      }\n      if ((int)*param_1 < (int)local_1c8) {\n        uVar4 = (*(code *)PTR___gmpz_realloc_000975bc)(param_1,local_1c8);\n        puVar7 = (uint *)param_3[2];\n      }\n      else {\n        uVar4 = param_1[2];\n      }\n      param_3 = (uint *)param_2[2];\n      param_2 = &local_1c8;\n      puVar7 = (uint *)(*(code *)PTR___gmpn_remove_00097294)\n                                 (uVar4,param_2,param_3,local_1c8,puVar7,uVar5,0xffffffff);\n      uVar5 = local_1c8;\n      if ((uVar8 >> 0x1f & (uint)puVar7) != uVar10 >> 0x1f) {\n        uVar5 = -local_1c8;\n      }\nLAB_00032004:\n      param_1[1] = uVar5;\n    }\n  }\n  else {\n    if (uVar8 == 0) goto LAB_0003232c;\n    puVar7 = (uint *)0x0;\n    (*(code *)PTR___gmpz_set_000974b8)(param_1);\n  }\n  if (local_2c == *(uint **)puVar2) {\n    return puVar7;\n  }\n  param_1 = local_2c;\n  (*(code *)PTR___stack_chk_fail_000974d0)();\nLAB_0003232c:\n  (*(code *)PTR___gmp_divide_by_zero_000975dc)();\n  puVar7 = param_3;\n  if ((int)param_3 < 0) {\n    puVar7 = (uint *)-(int)param_3;\n  }\n  if (param_3 == (uint *)0x0) {\n    *param_1 = 0;\n    puVar7 = (uint *)0x0;\n  }\n  else {\n    if (param_2[(int)puVar7 + -1] == 0) {\n      puVar6 = param_2 + (int)puVar7;\n      do {\n        puVar7 = (uint *)((int)puVar7 + -1);\n        if (puVar7 == (uint *)0x0) break;\n        puVar1 = puVar6 + -2;\n        puVar6 = puVar6 + -1;\n      } while (*puVar1 == 0);\n    }\n    *param_1 = 0;\n    if ((int)param_3 < 0) {\n      puVar7 = (uint *)-(int)puVar7;\n    }\n  }\n  param_1[1] = (uint)puVar7;\n  param_1[2] = (uint)param_2;\n  return param_1;\n}" { (declaration "uint *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "undefined *puVar2;" type_identifier (pointer_declarator "*puVar2" * identifier) ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "uint uVar4;" type_identifier identifier ;) (declaration "uint uVar5;" type_identifier identifier ;) (declaration "uint *puVar6;" type_identifier (pointer_declarator "*puVar6" * identifier) ;) (declaration "uint *puVar7;" type_identifier (pointer_declarator "*puVar7" * identifier) ;) (declaration "uint uVar8;" type_identifier identifier ;) (declaration "undefined1 *puVar9;" type_identifier (pointer_declarator "*puVar9" * identifier) ;) (declaration "uint uVar10;" type_identifier identifier ;) (declaration "uint local_1c8;" type_identifier identifier ;) (declaration "uint auStack_1c4 [3];" type_identifier (array_declarator "auStack_1c4 [3]" identifier [ number_literal ]) ;) (declaration "uint uStack_1b8;" type_identifier identifier ;) (declaration "int local_1b4;" primitive_type identifier ;) (declaration "undefined1 auStack_1ac [4];" type_identifier (array_declarator "auStack_1ac [4]" identifier [ number_literal ]) ;) (declaration "int local_1a8;" primitive_type identifier ;) (declaration "undefined1 auStack_1a0 [372];" type_identifier (array_declarator "auStack_1a0 [372]" identifier [ number_literal ]) ;) (declaration "uint *local_2c;" type_identifier (pointer_declarator "*local_2c" * identifier) ;) (expression_statement "puVar2 = PTR___stack_chk_guard_00097540;" (assignment_expression "puVar2 = PTR___stack_chk_guard_00097540" identifier = identifier) ;) (expression_statement "puVar7 = (uint *)param_3[2];" (assignment_expression "puVar7 = (uint *)param_3[2]" identifier = (cast_expression "(uint *)param_3[2]" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_3[2]" identifier [ number_literal ]))) ;) (expression_statement "uVar8 = param_3[1];" (assignment_expression "uVar8 = param_3[1]" identifier = (subscript_expression "param_3[1]" identifier [ number_literal ])) ;) (expression_statement "local_2c = *(uint **)PTR___stack_chk_guard_00097540;" (assignment_expression "local_2c = *(uint **)PTR___stack_chk_guard_00097540" identifier = (pointer_expression "*(uint **)PTR___stack_chk_guard_00097540" * (cast_expression "(uint **)PTR___stack_chk_guard_00097540" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) ;) (expression_statement "uVar10 = param_2[1];" (assignment_expression "uVar10 = param_2[1]" identifier = (subscript_expression "param_2[1]" identifier [ number_literal ])) ;) (expression_statement "uVar5 = -uVar8;" (assignment_expression "uVar5 = -uVar8" identifier = (unary_expression "-uVar8" - identifier)) ;) (if_statement "if (-1 < (int)uVar8) {\n    uVar5 = uVar8;\n  }" if (parenthesized_expression "(-1 < (int)uVar8)" ( (binary_expression "-1 < (int)uVar8" number_literal < (cast_expression "(int)uVar8" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n    uVar5 = uVar8;\n  }" { (expression_statement "uVar5 = uVar8;" (assignment_expression "uVar5 = uVar8" identifier = identifier) ;) })) (expression_statement "uVar4 = *puVar7;" (assignment_expression "uVar4 = *puVar7" identifier = (pointer_expression "*puVar7" * identifier)) ;) (if_statement "if (((int)(uint)(uVar4 == 1) < (int)uVar5) && (uVar10 != 0)) {\n    if ((uVar4 & 1) == 0) {\n      if ((uVar4 == 2) == uVar5) {\n        puVar7 = (uint *)(*(code *)PTR___gmpz_scan1_00097608)(param_2,0);\n        param_3 = puVar7;\n        (*(code *)PTR___gmpz_fdiv_q_2exp_00097438)(param_1);\n        if ((uVar8 >> 0x1f & (uint)puVar7) != 0) {\n          uVar5 = -param_1[1];\n          goto LAB_00032004;\n        }\n      }\n      else {\n        (*(code *)PTR___gmpz_init_00097130)(&uStack_1b8);\n        (*(code *)PTR___gmpz_init_00097130)(auStack_1c4);\n        puVar6 = param_2;\n        (*(code *)PTR___gmpz_tdiv_qr_000975d4)(auStack_1c4,&uStack_1b8,param_2,param_3);\n        if (local_1b4 == 0) {\n          (*(code *)PTR___gmpz_init_set_000975ec)(auStack_1ac,param_3);\n          (*(code *)PTR___gmpz_swap_00097468)(param_1,auStack_1c4);\n          if (local_1a8 < 0) {\n            local_1a8 = -local_1a8;\n          }\n          uVar5 = param_1[1];\n          if ((int)uVar5 < 0) {\n            uVar5 = -uVar5;\n          }\n          if ((int)uVar5 < local_1a8 * 2 + -1) {\n            puVar7 = (uint *)0x1;\n            uVar5 = 0;\n          }\n          else {\n            puVar9 = auStack_1a0;\n            uVar8 = 1;\n            do {\n              uVar5 = uVar8;\n              (*(code *)PTR___gmpz_init_00097130)(puVar9);\n              (*(code *)PTR___gmpz_mul_00097498)(puVar9,puVar9 + -0xc);\n              (*(code *)PTR___gmpz_tdiv_qr_000975d4)(auStack_1c4,&uStack_1b8,param_1,puVar9);\n              if (local_1b4 != 0) {\n                (*(code *)PTR___gmpz_clear_00097308)(puVar9);\n                puVar7 = (uint *)((1 << (uVar5 & 0x1f)) + -1);\n                uVar5 = uVar5 - 1;\n                goto LAB_000321c4;\n              }\n              (*(code *)PTR___gmpz_swap_00097468)(param_1,auStack_1c4);\n              uVar10 = param_1[1];\n              if ((int)uVar10 < 0) {\n                uVar10 = -uVar10;\n              }\n              iVar3 = *(int *)(puVar9 + 4);\n              if (iVar3 < 0) {\n                iVar3 = -iVar3;\n              }\n              puVar9 = puVar9 + 0xc;\n              uVar8 = uVar5 + 1;\n            } while (iVar3 * 2 + -1 <= (int)uVar10);\n            puVar7 = (uint *)((1 << (uVar5 + 1 & 0x1f)) + -1);\n          }\nLAB_000321c4:\n          puVar9 = auStack_1ac + uVar5 * 0xc;\n          do {\n            param_2 = &uStack_1b8;\n            puVar6 = param_1;\n            (*(code *)PTR___gmpz_tdiv_qr_000975d4)(auStack_1c4,&uStack_1b8,param_1,puVar9);\n            if (local_1b4 == 0) {\n              puVar7 = (uint *)((int)puVar7 + (1 << (uVar5 & 0x1f)));\n              param_2 = auStack_1c4;\n              (*(code *)PTR___gmpz_swap_00097468)(param_1);\n            }\n            uVar5 = uVar5 - 1;\n            (*(code *)PTR___gmpz_clear_00097308)(puVar9);\n            puVar9 = puVar9 + -0xc;\n          } while (uVar5 != 0xffffffff);\n        }\n        else {\n          (*(code *)PTR___gmpz_set_000974b8)(param_1);\n          puVar7 = (uint *)0x0;\n        }\n        (*(code *)PTR___gmpz_clear_00097308)(auStack_1c4);\n        (*(code *)PTR___gmpz_clear_00097308)(&uStack_1b8);\n        param_3 = puVar6;\n      }\n    }\n    else {\n      local_1c8 = uVar10;\n      if ((int)uVar10 < 0) {\n        local_1c8 = -uVar10;\n      }\n      if ((int)*param_1 < (int)local_1c8) {\n        uVar4 = (*(code *)PTR___gmpz_realloc_000975bc)(param_1,local_1c8);\n        puVar7 = (uint *)param_3[2];\n      }\n      else {\n        uVar4 = param_1[2];\n      }\n      param_3 = (uint *)param_2[2];\n      param_2 = &local_1c8;\n      puVar7 = (uint *)(*(code *)PTR___gmpn_remove_00097294)\n                                 (uVar4,param_2,param_3,local_1c8,puVar7,uVar5,0xffffffff);\n      uVar5 = local_1c8;\n      if ((uVar8 >> 0x1f & (uint)puVar7) != uVar10 >> 0x1f) {\n        uVar5 = -local_1c8;\n      }\nLAB_00032004:\n      param_1[1] = uVar5;\n    }\n  }\n  else {\n    if (uVar8 == 0) goto LAB_0003232c;\n    puVar7 = (uint *)0x0;\n    (*(code *)PTR___gmpz_set_000974b8)(param_1);\n  }" if (parenthesized_expression "(((int)(uint)(uVar4 == 1) < (int)uVar5) && (uVar10 != 0))" ( (binary_expression "((int)(uint)(uVar4 == 1) < (int)uVar5) && (uVar10 != 0)" (parenthesized_expression "((int)(uint)(uVar4 == 1) < (int)uVar5)" ( (binary_expression "(int)(uint)(uVar4 == 1) < (int)uVar5" (cast_expression "(int)(uint)(uVar4 == 1)" ( (type_descriptor "int" primitive_type) ) (call_expression "(uint)(uVar4 == 1)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar4 == 1)" ( (binary_expression "uVar4 == 1" identifier == number_literal) )))) < (cast_expression "(int)uVar5" ( (type_descriptor "int" primitive_type) ) identifier)) )) && (parenthesized_expression "(uVar10 != 0)" ( (binary_expression "uVar10 != 0" identifier != number_literal) ))) )) (compound_statement "{\n    if ((uVar4 & 1) == 0) {\n      if ((uVar4 == 2) == uVar5) {\n        puVar7 = (uint *)(*(code *)PTR___gmpz_scan1_00097608)(param_2,0);\n        param_3 = puVar7;\n        (*(code *)PTR___gmpz_fdiv_q_2exp_00097438)(param_1);\n        if ((uVar8 >> 0x1f & (uint)puVar7) != 0) {\n          uVar5 = -param_1[1];\n          goto LAB_00032004;\n        }\n      }\n      else {\n        (*(code *)PTR___gmpz_init_00097130)(&uStack_1b8);\n        (*(code *)PTR___gmpz_init_00097130)(auStack_1c4);\n        puVar6 = param_2;\n        (*(code *)PTR___gmpz_tdiv_qr_000975d4)(auStack_1c4,&uStack_1b8,param_2,param_3);\n        if (local_1b4 == 0) {\n          (*(code *)PTR___gmpz_init_set_000975ec)(auStack_1ac,param_3);\n          (*(code *)PTR___gmpz_swap_00097468)(param_1,auStack_1c4);\n          if (local_1a8 < 0) {\n            local_1a8 = -local_1a8;\n          }\n          uVar5 = param_1[1];\n          if ((int)uVar5 < 0) {\n            uVar5 = -uVar5;\n          }\n          if ((int)uVar5 < local_1a8 * 2 + -1) {\n            puVar7 = (uint *)0x1;\n            uVar5 = 0;\n          }\n          else {\n            puVar9 = auStack_1a0;\n            uVar8 = 1;\n            do {\n              uVar5 = uVar8;\n              (*(code *)PTR___gmpz_init_00097130)(puVar9);\n              (*(code *)PTR___gmpz_mul_00097498)(puVar9,puVar9 + -0xc);\n              (*(code *)PTR___gmpz_tdiv_qr_000975d4)(auStack_1c4,&uStack_1b8,param_1,puVar9);\n              if (local_1b4 != 0) {\n                (*(code *)PTR___gmpz_clear_00097308)(puVar9);\n                puVar7 = (uint *)((1 << (uVar5 & 0x1f)) + -1);\n                uVar5 = uVar5 - 1;\n                goto LAB_000321c4;\n              }\n              (*(code *)PTR___gmpz_swap_00097468)(param_1,auStack_1c4);\n              uVar10 = param_1[1];\n              if ((int)uVar10 < 0) {\n                uVar10 = -uVar10;\n              }\n              iVar3 = *(int *)(puVar9 + 4);\n              if (iVar3 < 0) {\n                iVar3 = -iVar3;\n              }\n              puVar9 = puVar9 + 0xc;\n              uVar8 = uVar5 + 1;\n            } while (iVar3 * 2 + -1 <= (int)uVar10);\n            puVar7 = (uint *)((1 << (uVar5 + 1 & 0x1f)) + -1);\n          }\nLAB_000321c4:\n          puVar9 = auStack_1ac + uVar5 * 0xc;\n          do {\n            param_2 = &uStack_1b8;\n            puVar6 = param_1;\n            (*(code *)PTR___gmpz_tdiv_qr_000975d4)(auStack_1c4,&uStack_1b8,param_1,puVar9);\n            if (local_1b4 == 0) {\n              puVar7 = (uint *)((int)puVar7 + (1 << (uVar5 & 0x1f)));\n              param_2 = auStack_1c4;\n              (*(code *)PTR___gmpz_swap_00097468)(param_1);\n            }\n            uVar5 = uVar5 - 1;\n            (*(code *)PTR___gmpz_clear_00097308)(puVar9);\n            puVar9 = puVar9 + -0xc;\n          } while (uVar5 != 0xffffffff);\n        }\n        else {\n          (*(code *)PTR___gmpz_set_000974b8)(param_1);\n          puVar7 = (uint *)0x0;\n        }\n        (*(code *)PTR___gmpz_clear_00097308)(auStack_1c4);\n        (*(code *)PTR___gmpz_clear_00097308)(&uStack_1b8);\n        param_3 = puVar6;\n      }\n    }\n    else {\n      local_1c8 = uVar10;\n      if ((int)uVar10 < 0) {\n        local_1c8 = -uVar10;\n      }\n      if ((int)*param_1 < (int)local_1c8) {\n        uVar4 = (*(code *)PTR___gmpz_realloc_000975bc)(param_1,local_1c8);\n        puVar7 = (uint *)param_3[2];\n      }\n      else {\n        uVar4 = param_1[2];\n      }\n      param_3 = (uint *)param_2[2];\n      param_2 = &local_1c8;\n      puVar7 = (uint *)(*(code *)PTR___gmpn_remove_00097294)\n                                 (uVar4,param_2,param_3,local_1c8,puVar7,uVar5,0xffffffff);\n      uVar5 = local_1c8;\n      if ((uVar8 >> 0x1f & (uint)puVar7) != uVar10 >> 0x1f) {\n        uVar5 = -local_1c8;\n      }\nLAB_00032004:\n      param_1[1] = uVar5;\n    }\n  }" { (if_statement "if ((uVar4 & 1) == 0) {\n      if ((uVar4 == 2) == uVar5) {\n        puVar7 = (uint *)(*(code *)PTR___gmpz_scan1_00097608)(param_2,0);\n        param_3 = puVar7;\n        (*(code *)PTR___gmpz_fdiv_q_2exp_00097438)(param_1);\n        if ((uVar8 >> 0x1f & (uint)puVar7) != 0) {\n          uVar5 = -param_1[1];\n          goto LAB_00032004;\n        }\n      }\n      else {\n        (*(code *)PTR___gmpz_init_00097130)(&uStack_1b8);\n        (*(code *)PTR___gmpz_init_00097130)(auStack_1c4);\n        puVar6 = param_2;\n        (*(code *)PTR___gmpz_tdiv_qr_000975d4)(auStack_1c4,&uStack_1b8,param_2,param_3);\n        if (local_1b4 == 0) {\n          (*(code *)PTR___gmpz_init_set_000975ec)(auStack_1ac,param_3);\n          (*(code *)PTR___gmpz_swap_00097468)(param_1,auStack_1c4);\n          if (local_1a8 < 0) {\n            local_1a8 = -local_1a8;\n          }\n          uVar5 = param_1[1];\n          if ((int)uVar5 < 0) {\n            uVar5 = -uVar5;\n          }\n          if ((int)uVar5 < local_1a8 * 2 + -1) {\n            puVar7 = (uint *)0x1;\n            uVar5 = 0;\n          }\n          else {\n            puVar9 = auStack_1a0;\n            uVar8 = 1;\n            do {\n              uVar5 = uVar8;\n              (*(code *)PTR___gmpz_init_00097130)(puVar9);\n              (*(code *)PTR___gmpz_mul_00097498)(puVar9,puVar9 + -0xc);\n              (*(code *)PTR___gmpz_tdiv_qr_000975d4)(auStack_1c4,&uStack_1b8,param_1,puVar9);\n              if (local_1b4 != 0) {\n                (*(code *)PTR___gmpz_clear_00097308)(puVar9);\n                puVar7 = (uint *)((1 << (uVar5 & 0x1f)) + -1);\n                uVar5 = uVar5 - 1;\n                goto LAB_000321c4;\n              }\n              (*(code *)PTR___gmpz_swap_00097468)(param_1,auStack_1c4);\n              uVar10 = param_1[1];\n              if ((int)uVar10 < 0) {\n                uVar10 = -uVar10;\n              }\n              iVar3 = *(int *)(puVar9 + 4);\n              if (iVar3 < 0) {\n                iVar3 = -iVar3;\n              }\n              puVar9 = puVar9 + 0xc;\n              uVar8 = uVar5 + 1;\n            } while (iVar3 * 2 + -1 <= (int)uVar10);\n            puVar7 = (uint *)((1 << (uVar5 + 1 & 0x1f)) + -1);\n          }\nLAB_000321c4:\n          puVar9 = auStack_1ac + uVar5 * 0xc;\n          do {\n            param_2 = &uStack_1b8;\n            puVar6 = param_1;\n            (*(code *)PTR___gmpz_tdiv_qr_000975d4)(auStack_1c4,&uStack_1b8,param_1,puVar9);\n            if (local_1b4 == 0) {\n              puVar7 = (uint *)((int)puVar7 + (1 << (uVar5 & 0x1f)));\n              param_2 = auStack_1c4;\n              (*(code *)PTR___gmpz_swap_00097468)(param_1);\n            }\n            uVar5 = uVar5 - 1;\n            (*(code *)PTR___gmpz_clear_00097308)(puVar9);\n            puVar9 = puVar9 + -0xc;\n          } while (uVar5 != 0xffffffff);\n        }\n        else {\n          (*(code *)PTR___gmpz_set_000974b8)(param_1);\n          puVar7 = (uint *)0x0;\n        }\n        (*(code *)PTR___gmpz_clear_00097308)(auStack_1c4);\n        (*(code *)PTR___gmpz_clear_00097308)(&uStack_1b8);\n        param_3 = puVar6;\n      }\n    }\n    else {\n      local_1c8 = uVar10;\n      if ((int)uVar10 < 0) {\n        local_1c8 = -uVar10;\n      }\n      if ((int)*param_1 < (int)local_1c8) {\n        uVar4 = (*(code *)PTR___gmpz_realloc_000975bc)(param_1,local_1c8);\n        puVar7 = (uint *)param_3[2];\n      }\n      else {\n        uVar4 = param_1[2];\n      }\n      param_3 = (uint *)param_2[2];\n      param_2 = &local_1c8;\n      puVar7 = (uint *)(*(code *)PTR___gmpn_remove_00097294)\n                                 (uVar4,param_2,param_3,local_1c8,puVar7,uVar5,0xffffffff);\n      uVar5 = local_1c8;\n      if ((uVar8 >> 0x1f & (uint)puVar7) != uVar10 >> 0x1f) {\n        uVar5 = -local_1c8;\n      }\nLAB_00032004:\n      param_1[1] = uVar5;\n    }" if (parenthesized_expression "((uVar4 & 1) == 0)" ( (binary_expression "(uVar4 & 1) == 0" (parenthesized_expression "(uVar4 & 1)" ( (binary_expression "uVar4 & 1" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n      if ((uVar4 == 2) == uVar5) {\n        puVar7 = (uint *)(*(code *)PTR___gmpz_scan1_00097608)(param_2,0);\n        param_3 = puVar7;\n        (*(code *)PTR___gmpz_fdiv_q_2exp_00097438)(param_1);\n        if ((uVar8 >> 0x1f & (uint)puVar7) != 0) {\n          uVar5 = -param_1[1];\n          goto LAB_00032004;\n        }\n      }\n      else {\n        (*(code *)PTR___gmpz_init_00097130)(&uStack_1b8);\n        (*(code *)PTR___gmpz_init_00097130)(auStack_1c4);\n        puVar6 = param_2;\n        (*(code *)PTR___gmpz_tdiv_qr_000975d4)(auStack_1c4,&uStack_1b8,param_2,param_3);\n        if (local_1b4 == 0) {\n          (*(code *)PTR___gmpz_init_set_000975ec)(auStack_1ac,param_3);\n          (*(code *)PTR___gmpz_swap_00097468)(param_1,auStack_1c4);\n          if (local_1a8 < 0) {\n            local_1a8 = -local_1a8;\n          }\n          uVar5 = param_1[1];\n          if ((int)uVar5 < 0) {\n            uVar5 = -uVar5;\n          }\n          if ((int)uVar5 < local_1a8 * 2 + -1) {\n            puVar7 = (uint *)0x1;\n            uVar5 = 0;\n          }\n          else {\n            puVar9 = auStack_1a0;\n            uVar8 = 1;\n            do {\n              uVar5 = uVar8;\n              (*(code *)PTR___gmpz_init_00097130)(puVar9);\n              (*(code *)PTR___gmpz_mul_00097498)(puVar9,puVar9 + -0xc);\n              (*(code *)PTR___gmpz_tdiv_qr_000975d4)(auStack_1c4,&uStack_1b8,param_1,puVar9);\n              if (local_1b4 != 0) {\n                (*(code *)PTR___gmpz_clear_00097308)(puVar9);\n                puVar7 = (uint *)((1 << (uVar5 & 0x1f)) + -1);\n                uVar5 = uVar5 - 1;\n                goto LAB_000321c4;\n              }\n              (*(code *)PTR___gmpz_swap_00097468)(param_1,auStack_1c4);\n              uVar10 = param_1[1];\n              if ((int)uVar10 < 0) {\n                uVar10 = -uVar10;\n              }\n              iVar3 = *(int *)(puVar9 + 4);\n              if (iVar3 < 0) {\n                iVar3 = -iVar3;\n              }\n              puVar9 = puVar9 + 0xc;\n              uVar8 = uVar5 + 1;\n            } while (iVar3 * 2 + -1 <= (int)uVar10);\n            puVar7 = (uint *)((1 << (uVar5 + 1 & 0x1f)) + -1);\n          }\nLAB_000321c4:\n          puVar9 = auStack_1ac + uVar5 * 0xc;\n          do {\n            param_2 = &uStack_1b8;\n            puVar6 = param_1;\n            (*(code *)PTR___gmpz_tdiv_qr_000975d4)(auStack_1c4,&uStack_1b8,param_1,puVar9);\n            if (local_1b4 == 0) {\n              puVar7 = (uint *)((int)puVar7 + (1 << (uVar5 & 0x1f)));\n              param_2 = auStack_1c4;\n              (*(code *)PTR___gmpz_swap_00097468)(param_1);\n            }\n            uVar5 = uVar5 - 1;\n            (*(code *)PTR___gmpz_clear_00097308)(puVar9);\n            puVar9 = puVar9 + -0xc;\n          } while (uVar5 != 0xffffffff);\n        }\n        else {\n          (*(code *)PTR___gmpz_set_000974b8)(param_1);\n          puVar7 = (uint *)0x0;\n        }\n        (*(code *)PTR___gmpz_clear_00097308)(auStack_1c4);\n        (*(code *)PTR___gmpz_clear_00097308)(&uStack_1b8);\n        param_3 = puVar6;\n      }\n    }" { (if_statement "if ((uVar4 == 2) == uVar5) {\n        puVar7 = (uint *)(*(code *)PTR___gmpz_scan1_00097608)(param_2,0);\n        param_3 = puVar7;\n        (*(code *)PTR___gmpz_fdiv_q_2exp_00097438)(param_1);\n        if ((uVar8 >> 0x1f & (uint)puVar7) != 0) {\n          uVar5 = -param_1[1];\n          goto LAB_00032004;\n        }\n      }\n      else {\n        (*(code *)PTR___gmpz_init_00097130)(&uStack_1b8);\n        (*(code *)PTR___gmpz_init_00097130)(auStack_1c4);\n        puVar6 = param_2;\n        (*(code *)PTR___gmpz_tdiv_qr_000975d4)(auStack_1c4,&uStack_1b8,param_2,param_3);\n        if (local_1b4 == 0) {\n          (*(code *)PTR___gmpz_init_set_000975ec)(auStack_1ac,param_3);\n          (*(code *)PTR___gmpz_swap_00097468)(param_1,auStack_1c4);\n          if (local_1a8 < 0) {\n            local_1a8 = -local_1a8;\n          }\n          uVar5 = param_1[1];\n          if ((int)uVar5 < 0) {\n            uVar5 = -uVar5;\n          }\n          if ((int)uVar5 < local_1a8 * 2 + -1) {\n            puVar7 = (uint *)0x1;\n            uVar5 = 0;\n          }\n          else {\n            puVar9 = auStack_1a0;\n            uVar8 = 1;\n            do {\n              uVar5 = uVar8;\n              (*(code *)PTR___gmpz_init_00097130)(puVar9);\n              (*(code *)PTR___gmpz_mul_00097498)(puVar9,puVar9 + -0xc);\n              (*(code *)PTR___gmpz_tdiv_qr_000975d4)(auStack_1c4,&uStack_1b8,param_1,puVar9);\n              if (local_1b4 != 0) {\n                (*(code *)PTR___gmpz_clear_00097308)(puVar9);\n                puVar7 = (uint *)((1 << (uVar5 & 0x1f)) + -1);\n                uVar5 = uVar5 - 1;\n                goto LAB_000321c4;\n              }\n              (*(code *)PTR___gmpz_swap_00097468)(param_1,auStack_1c4);\n              uVar10 = param_1[1];\n              if ((int)uVar10 < 0) {\n                uVar10 = -uVar10;\n              }\n              iVar3 = *(int *)(puVar9 + 4);\n              if (iVar3 < 0) {\n                iVar3 = -iVar3;\n              }\n              puVar9 = puVar9 + 0xc;\n              uVar8 = uVar5 + 1;\n            } while (iVar3 * 2 + -1 <= (int)uVar10);\n            puVar7 = (uint *)((1 << (uVar5 + 1 & 0x1f)) + -1);\n          }\nLAB_000321c4:\n          puVar9 = auStack_1ac + uVar5 * 0xc;\n          do {\n            param_2 = &uStack_1b8;\n            puVar6 = param_1;\n            (*(code *)PTR___gmpz_tdiv_qr_000975d4)(auStack_1c4,&uStack_1b8,param_1,puVar9);\n            if (local_1b4 == 0) {\n              puVar7 = (uint *)((int)puVar7 + (1 << (uVar5 & 0x1f)));\n              param_2 = auStack_1c4;\n              (*(code *)PTR___gmpz_swap_00097468)(param_1);\n            }\n            uVar5 = uVar5 - 1;\n            (*(code *)PTR___gmpz_clear_00097308)(puVar9);\n            puVar9 = puVar9 + -0xc;\n          } while (uVar5 != 0xffffffff);\n        }\n        else {\n          (*(code *)PTR___gmpz_set_000974b8)(param_1);\n          puVar7 = (uint *)0x0;\n        }\n        (*(code *)PTR___gmpz_clear_00097308)(auStack_1c4);\n        (*(code *)PTR___gmpz_clear_00097308)(&uStack_1b8);\n        param_3 = puVar6;\n      }" if (parenthesized_expression "((uVar4 == 2) == uVar5)" ( (binary_expression "(uVar4 == 2) == uVar5" (parenthesized_expression "(uVar4 == 2)" ( (binary_expression "uVar4 == 2" identifier == number_literal) )) == identifier) )) (compound_statement "{\n        puVar7 = (uint *)(*(code *)PTR___gmpz_scan1_00097608)(param_2,0);\n        param_3 = puVar7;\n        (*(code *)PTR___gmpz_fdiv_q_2exp_00097438)(param_1);\n        if ((uVar8 >> 0x1f & (uint)puVar7) != 0) {\n          uVar5 = -param_1[1];\n          goto LAB_00032004;\n        }\n      }" { (expression_statement "puVar7 = (uint *)(*(code *)PTR___gmpz_scan1_00097608)(param_2,0);" (assignment_expression "puVar7 = (uint *)(*(code *)PTR___gmpz_scan1_00097608)(param_2,0)" identifier = (cast_expression "(uint *)(*(code *)PTR___gmpz_scan1_00097608)(param_2,0)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)PTR___gmpz_scan1_00097608)(param_2,0)" (parenthesized_expression "(*(code *)PTR___gmpz_scan1_00097608)" ( (pointer_expression "*(code *)PTR___gmpz_scan1_00097608" * (cast_expression "(code *)PTR___gmpz_scan1_00097608" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(param_2,0)" ( identifier , number_literal ))))) ;) (expression_statement "param_3 = puVar7;" (assignment_expression "param_3 = puVar7" identifier = identifier) ;) (expression_statement "(*(code *)PTR___gmpz_fdiv_q_2exp_00097438)(param_1);" (call_expression "(*(code *)PTR___gmpz_fdiv_q_2exp_00097438)(param_1)" (parenthesized_expression "(*(code *)PTR___gmpz_fdiv_q_2exp_00097438)" ( (pointer_expression "*(code *)PTR___gmpz_fdiv_q_2exp_00097438" * (cast_expression "(code *)PTR___gmpz_fdiv_q_2exp_00097438" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(param_1)" ( identifier ))) ;) (if_statement "if ((uVar8 >> 0x1f & (uint)puVar7) != 0) {\n          uVar5 = -param_1[1];\n          goto LAB_00032004;\n        }" if (parenthesized_expression "((uVar8 >> 0x1f & (uint)puVar7) != 0)" ( (binary_expression "(uVar8 >> 0x1f & (uint)puVar7) != 0" (parenthesized_expression "(uVar8 >> 0x1f & (uint)puVar7)" ( (binary_expression "uVar8 >> 0x1f & (uint)puVar7" (binary_expression "uVar8 >> 0x1f" identifier >> number_literal) & (cast_expression "(uint)puVar7" ( (type_descriptor "uint" type_identifier) ) identifier)) )) != number_literal) )) (compound_statement "{\n          uVar5 = -param_1[1];\n          goto LAB_00032004;\n        }" { (expression_statement "uVar5 = -param_1[1];" (assignment_expression "uVar5 = -param_1[1]" identifier = (unary_expression "-param_1[1]" - (subscript_expression "param_1[1]" identifier [ number_literal ]))) ;) (goto_statement "goto LAB_00032004;" goto statement_identifier ;) })) }) (else_clause "else {\n        (*(code *)PTR___gmpz_init_00097130)(&uStack_1b8);\n        (*(code *)PTR___gmpz_init_00097130)(auStack_1c4);\n        puVar6 = param_2;\n        (*(code *)PTR___gmpz_tdiv_qr_000975d4)(auStack_1c4,&uStack_1b8,param_2,param_3);\n        if (local_1b4 == 0) {\n          (*(code *)PTR___gmpz_init_set_000975ec)(auStack_1ac,param_3);\n          (*(code *)PTR___gmpz_swap_00097468)(param_1,auStack_1c4);\n          if (local_1a8 < 0) {\n            local_1a8 = -local_1a8;\n          }\n          uVar5 = param_1[1];\n          if ((int)uVar5 < 0) {\n            uVar5 = -uVar5;\n          }\n          if ((int)uVar5 < local_1a8 * 2 + -1) {\n            puVar7 = (uint *)0x1;\n            uVar5 = 0;\n          }\n          else {\n            puVar9 = auStack_1a0;\n            uVar8 = 1;\n            do {\n              uVar5 = uVar8;\n              (*(code *)PTR___gmpz_init_00097130)(puVar9);\n              (*(code *)PTR___gmpz_mul_00097498)(puVar9,puVar9 + -0xc);\n              (*(code *)PTR___gmpz_tdiv_qr_000975d4)(auStack_1c4,&uStack_1b8,param_1,puVar9);\n              if (local_1b4 != 0) {\n                (*(code *)PTR___gmpz_clear_00097308)(puVar9);\n                puVar7 = (uint *)((1 << (uVar5 & 0x1f)) + -1);\n                uVar5 = uVar5 - 1;\n                goto LAB_000321c4;\n              }\n              (*(code *)PTR___gmpz_swap_00097468)(param_1,auStack_1c4);\n              uVar10 = param_1[1];\n              if ((int)uVar10 < 0) {\n                uVar10 = -uVar10;\n              }\n              iVar3 = *(int *)(puVar9 + 4);\n              if (iVar3 < 0) {\n                iVar3 = -iVar3;\n              }\n              puVar9 = puVar9 + 0xc;\n              uVar8 = uVar5 + 1;\n            } while (iVar3 * 2 + -1 <= (int)uVar10);\n            puVar7 = (uint *)((1 << (uVar5 + 1 & 0x1f)) + -1);\n          }\nLAB_000321c4:\n          puVar9 = auStack_1ac + uVar5 * 0xc;\n          do {\n            param_2 = &uStack_1b8;\n            puVar6 = param_1;\n            (*(code *)PTR___gmpz_tdiv_qr_000975d4)(auStack_1c4,&uStack_1b8,param_1,puVar9);\n            if (local_1b4 == 0) {\n              puVar7 = (uint *)((int)puVar7 + (1 << (uVar5 & 0x1f)));\n              param_2 = auStack_1c4;\n              (*(code *)PTR___gmpz_swap_00097468)(param_1);\n            }\n            uVar5 = uVar5 - 1;\n            (*(code *)PTR___gmpz_clear_00097308)(puVar9);\n            puVar9 = puVar9 + -0xc;\n          } while (uVar5 != 0xffffffff);\n        }\n        else {\n          (*(code *)PTR___gmpz_set_000974b8)(param_1);\n          puVar7 = (uint *)0x0;\n        }\n        (*(code *)PTR___gmpz_clear_00097308)(auStack_1c4);\n        (*(code *)PTR___gmpz_clear_00097308)(&uStack_1b8);\n        param_3 = puVar6;\n      }" else (compound_statement "{\n        (*(code *)PTR___gmpz_init_00097130)(&uStack_1b8);\n        (*(code *)PTR___gmpz_init_00097130)(auStack_1c4);\n        puVar6 = param_2;\n        (*(code *)PTR___gmpz_tdiv_qr_000975d4)(auStack_1c4,&uStack_1b8,param_2,param_3);\n        if (local_1b4 == 0) {\n          (*(code *)PTR___gmpz_init_set_000975ec)(auStack_1ac,param_3);\n          (*(code *)PTR___gmpz_swap_00097468)(param_1,auStack_1c4);\n          if (local_1a8 < 0) {\n            local_1a8 = -local_1a8;\n          }\n          uVar5 = param_1[1];\n          if ((int)uVar5 < 0) {\n            uVar5 = -uVar5;\n          }\n          if ((int)uVar5 < local_1a8 * 2 + -1) {\n            puVar7 = (uint *)0x1;\n            uVar5 = 0;\n          }\n          else {\n            puVar9 = auStack_1a0;\n            uVar8 = 1;\n            do {\n              uVar5 = uVar8;\n              (*(code *)PTR___gmpz_init_00097130)(puVar9);\n              (*(code *)PTR___gmpz_mul_00097498)(puVar9,puVar9 + -0xc);\n              (*(code *)PTR___gmpz_tdiv_qr_000975d4)(auStack_1c4,&uStack_1b8,param_1,puVar9);\n              if (local_1b4 != 0) {\n                (*(code *)PTR___gmpz_clear_00097308)(puVar9);\n                puVar7 = (uint *)((1 << (uVar5 & 0x1f)) + -1);\n                uVar5 = uVar5 - 1;\n                goto LAB_000321c4;\n              }\n              (*(code *)PTR___gmpz_swap_00097468)(param_1,auStack_1c4);\n              uVar10 = param_1[1];\n              if ((int)uVar10 < 0) {\n                uVar10 = -uVar10;\n              }\n              iVar3 = *(int *)(puVar9 + 4);\n              if (iVar3 < 0) {\n                iVar3 = -iVar3;\n              }\n              puVar9 = puVar9 + 0xc;\n              uVar8 = uVar5 + 1;\n            } while (iVar3 * 2 + -1 <= (int)uVar10);\n            puVar7 = (uint *)((1 << (uVar5 + 1 & 0x1f)) + -1);\n          }\nLAB_000321c4:\n          puVar9 = auStack_1ac + uVar5 * 0xc;\n          do {\n            param_2 = &uStack_1b8;\n            puVar6 = param_1;\n            (*(code *)PTR___gmpz_tdiv_qr_000975d4)(auStack_1c4,&uStack_1b8,param_1,puVar9);\n            if (local_1b4 == 0) {\n              puVar7 = (uint *)((int)puVar7 + (1 << (uVar5 & 0x1f)));\n              param_2 = auStack_1c4;\n              (*(code *)PTR___gmpz_swap_00097468)(param_1);\n            }\n            uVar5 = uVar5 - 1;\n            (*(code *)PTR___gmpz_clear_00097308)(puVar9);\n            puVar9 = puVar9 + -0xc;\n          } while (uVar5 != 0xffffffff);\n        }\n        else {\n          (*(code *)PTR___gmpz_set_000974b8)(param_1);\n          puVar7 = (uint *)0x0;\n        }\n        (*(code *)PTR___gmpz_clear_00097308)(auStack_1c4);\n        (*(code *)PTR___gmpz_clear_00097308)(&uStack_1b8);\n        param_3 = puVar6;\n      }" { (expression_statement "(*(code *)PTR___gmpz_init_00097130)(&uStack_1b8);" (call_expression "(*(code *)PTR___gmpz_init_00097130)(&uStack_1b8)" (parenthesized_expression "(*(code *)PTR___gmpz_init_00097130)" ( (pointer_expression "*(code *)PTR___gmpz_init_00097130" * (cast_expression "(code *)PTR___gmpz_init_00097130" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(&uStack_1b8)" ( (pointer_expression "&uStack_1b8" & identifier) ))) ;) (expression_statement "(*(code *)PTR___gmpz_init_00097130)(auStack_1c4);" (call_expression "(*(code *)PTR___gmpz_init_00097130)(auStack_1c4)" (parenthesized_expression "(*(code *)PTR___gmpz_init_00097130)" ( (pointer_expression "*(code *)PTR___gmpz_init_00097130" * (cast_expression "(code *)PTR___gmpz_init_00097130" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(auStack_1c4)" ( identifier ))) ;) (expression_statement "puVar6 = param_2;" (assignment_expression "puVar6 = param_2" identifier = identifier) ;) (expression_statement "(*(code *)PTR___gmpz_tdiv_qr_000975d4)(auStack_1c4,&uStack_1b8,param_2,param_3);" (call_expression "(*(code *)PTR___gmpz_tdiv_qr_000975d4)(auStack_1c4,&uStack_1b8,param_2,param_3)" (parenthesized_expression "(*(code *)PTR___gmpz_tdiv_qr_000975d4)" ( (pointer_expression "*(code *)PTR___gmpz_tdiv_qr_000975d4" * (cast_expression "(code *)PTR___gmpz_tdiv_qr_000975d4" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(auStack_1c4,&uStack_1b8,param_2,param_3)" ( identifier , (pointer_expression "&uStack_1b8" & identifier) , identifier , identifier ))) ;) (if_statement "if (local_1b4 == 0) {\n          (*(code *)PTR___gmpz_init_set_000975ec)(auStack_1ac,param_3);\n          (*(code *)PTR___gmpz_swap_00097468)(param_1,auStack_1c4);\n          if (local_1a8 < 0) {\n            local_1a8 = -local_1a8;\n          }\n          uVar5 = param_1[1];\n          if ((int)uVar5 < 0) {\n            uVar5 = -uVar5;\n          }\n          if ((int)uVar5 < local_1a8 * 2 + -1) {\n            puVar7 = (uint *)0x1;\n            uVar5 = 0;\n          }\n          else {\n            puVar9 = auStack_1a0;\n            uVar8 = 1;\n            do {\n              uVar5 = uVar8;\n              (*(code *)PTR___gmpz_init_00097130)(puVar9);\n              (*(code *)PTR___gmpz_mul_00097498)(puVar9,puVar9 + -0xc);\n              (*(code *)PTR___gmpz_tdiv_qr_000975d4)(auStack_1c4,&uStack_1b8,param_1,puVar9);\n              if (local_1b4 != 0) {\n                (*(code *)PTR___gmpz_clear_00097308)(puVar9);\n                puVar7 = (uint *)((1 << (uVar5 & 0x1f)) + -1);\n                uVar5 = uVar5 - 1;\n                goto LAB_000321c4;\n              }\n              (*(code *)PTR___gmpz_swap_00097468)(param_1,auStack_1c4);\n              uVar10 = param_1[1];\n              if ((int)uVar10 < 0) {\n                uVar10 = -uVar10;\n              }\n              iVar3 = *(int *)(puVar9 + 4);\n              if (iVar3 < 0) {\n                iVar3 = -iVar3;\n              }\n              puVar9 = puVar9 + 0xc;\n              uVar8 = uVar5 + 1;\n            } while (iVar3 * 2 + -1 <= (int)uVar10);\n            puVar7 = (uint *)((1 << (uVar5 + 1 & 0x1f)) + -1);\n          }\nLAB_000321c4:\n          puVar9 = auStack_1ac + uVar5 * 0xc;\n          do {\n            param_2 = &uStack_1b8;\n            puVar6 = param_1;\n            (*(code *)PTR___gmpz_tdiv_qr_000975d4)(auStack_1c4,&uStack_1b8,param_1,puVar9);\n            if (local_1b4 == 0) {\n              puVar7 = (uint *)((int)puVar7 + (1 << (uVar5 & 0x1f)));\n              param_2 = auStack_1c4;\n              (*(code *)PTR___gmpz_swap_00097468)(param_1);\n            }\n            uVar5 = uVar5 - 1;\n            (*(code *)PTR___gmpz_clear_00097308)(puVar9);\n            puVar9 = puVar9 + -0xc;\n          } while (uVar5 != 0xffffffff);\n        }\n        else {\n          (*(code *)PTR___gmpz_set_000974b8)(param_1);\n          puVar7 = (uint *)0x0;\n        }" if (parenthesized_expression "(local_1b4 == 0)" ( (binary_expression "local_1b4 == 0" identifier == number_literal) )) (compound_statement "{\n          (*(code *)PTR___gmpz_init_set_000975ec)(auStack_1ac,param_3);\n          (*(code *)PTR___gmpz_swap_00097468)(param_1,auStack_1c4);\n          if (local_1a8 < 0) {\n            local_1a8 = -local_1a8;\n          }\n          uVar5 = param_1[1];\n          if ((int)uVar5 < 0) {\n            uVar5 = -uVar5;\n          }\n          if ((int)uVar5 < local_1a8 * 2 + -1) {\n            puVar7 = (uint *)0x1;\n            uVar5 = 0;\n          }\n          else {\n            puVar9 = auStack_1a0;\n            uVar8 = 1;\n            do {\n              uVar5 = uVar8;\n              (*(code *)PTR___gmpz_init_00097130)(puVar9);\n              (*(code *)PTR___gmpz_mul_00097498)(puVar9,puVar9 + -0xc);\n              (*(code *)PTR___gmpz_tdiv_qr_000975d4)(auStack_1c4,&uStack_1b8,param_1,puVar9);\n              if (local_1b4 != 0) {\n                (*(code *)PTR___gmpz_clear_00097308)(puVar9);\n                puVar7 = (uint *)((1 << (uVar5 & 0x1f)) + -1);\n                uVar5 = uVar5 - 1;\n                goto LAB_000321c4;\n              }\n              (*(code *)PTR___gmpz_swap_00097468)(param_1,auStack_1c4);\n              uVar10 = param_1[1];\n              if ((int)uVar10 < 0) {\n                uVar10 = -uVar10;\n              }\n              iVar3 = *(int *)(puVar9 + 4);\n              if (iVar3 < 0) {\n                iVar3 = -iVar3;\n              }\n              puVar9 = puVar9 + 0xc;\n              uVar8 = uVar5 + 1;\n            } while (iVar3 * 2 + -1 <= (int)uVar10);\n            puVar7 = (uint *)((1 << (uVar5 + 1 & 0x1f)) + -1);\n          }\nLAB_000321c4:\n          puVar9 = auStack_1ac + uVar5 * 0xc;\n          do {\n            param_2 = &uStack_1b8;\n            puVar6 = param_1;\n            (*(code *)PTR___gmpz_tdiv_qr_000975d4)(auStack_1c4,&uStack_1b8,param_1,puVar9);\n            if (local_1b4 == 0) {\n              puVar7 = (uint *)((int)puVar7 + (1 << (uVar5 & 0x1f)));\n              param_2 = auStack_1c4;\n              (*(code *)PTR___gmpz_swap_00097468)(param_1);\n            }\n            uVar5 = uVar5 - 1;\n            (*(code *)PTR___gmpz_clear_00097308)(puVar9);\n            puVar9 = puVar9 + -0xc;\n          } while (uVar5 != 0xffffffff);\n        }" { (expression_statement "(*(code *)PTR___gmpz_init_set_000975ec)(auStack_1ac,param_3);" (call_expression "(*(code *)PTR___gmpz_init_set_000975ec)(auStack_1ac,param_3)" (parenthesized_expression "(*(code *)PTR___gmpz_init_set_000975ec)" ( (pointer_expression "*(code *)PTR___gmpz_init_set_000975ec" * (cast_expression "(code *)PTR___gmpz_init_set_000975ec" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(auStack_1ac,param_3)" ( identifier , identifier ))) ;) (expression_statement "(*(code *)PTR___gmpz_swap_00097468)(param_1,auStack_1c4);" (call_expression "(*(code *)PTR___gmpz_swap_00097468)(param_1,auStack_1c4)" (parenthesized_expression "(*(code *)PTR___gmpz_swap_00097468)" ( (pointer_expression "*(code *)PTR___gmpz_swap_00097468" * (cast_expression "(code *)PTR___gmpz_swap_00097468" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(param_1,auStack_1c4)" ( identifier , identifier ))) ;) (if_statement "if (local_1a8 < 0) {\n            local_1a8 = -local_1a8;\n          }" if (parenthesized_expression "(local_1a8 < 0)" ( (binary_expression "local_1a8 < 0" identifier < number_literal) )) (compound_statement "{\n            local_1a8 = -local_1a8;\n          }" { (expression_statement "local_1a8 = -local_1a8;" (assignment_expression "local_1a8 = -local_1a8" identifier = (unary_expression "-local_1a8" - identifier)) ;) })) (expression_statement "uVar5 = param_1[1];" (assignment_expression "uVar5 = param_1[1]" identifier = (subscript_expression "param_1[1]" identifier [ number_literal ])) ;) (if_statement "if ((int)uVar5 < 0) {\n            uVar5 = -uVar5;\n          }" if (parenthesized_expression "((int)uVar5 < 0)" ( (binary_expression "(int)uVar5 < 0" (cast_expression "(int)uVar5" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n            uVar5 = -uVar5;\n          }" { (expression_statement "uVar5 = -uVar5;" (assignment_expression "uVar5 = -uVar5" identifier = (unary_expression "-uVar5" - identifier)) ;) })) (if_statement "if ((int)uVar5 < local_1a8 * 2 + -1) {\n            puVar7 = (uint *)0x1;\n            uVar5 = 0;\n          }\n          else {\n            puVar9 = auStack_1a0;\n            uVar8 = 1;\n            do {\n              uVar5 = uVar8;\n              (*(code *)PTR___gmpz_init_00097130)(puVar9);\n              (*(code *)PTR___gmpz_mul_00097498)(puVar9,puVar9 + -0xc);\n              (*(code *)PTR___gmpz_tdiv_qr_000975d4)(auStack_1c4,&uStack_1b8,param_1,puVar9);\n              if (local_1b4 != 0) {\n                (*(code *)PTR___gmpz_clear_00097308)(puVar9);\n                puVar7 = (uint *)((1 << (uVar5 & 0x1f)) + -1);\n                uVar5 = uVar5 - 1;\n                goto LAB_000321c4;\n              }\n              (*(code *)PTR___gmpz_swap_00097468)(param_1,auStack_1c4);\n              uVar10 = param_1[1];\n              if ((int)uVar10 < 0) {\n                uVar10 = -uVar10;\n              }\n              iVar3 = *(int *)(puVar9 + 4);\n              if (iVar3 < 0) {\n                iVar3 = -iVar3;\n              }\n              puVar9 = puVar9 + 0xc;\n              uVar8 = uVar5 + 1;\n            } while (iVar3 * 2 + -1 <= (int)uVar10);\n            puVar7 = (uint *)((1 << (uVar5 + 1 & 0x1f)) + -1);\n          }" if (parenthesized_expression "((int)uVar5 < local_1a8 * 2 + -1)" ( (binary_expression "(int)uVar5 < local_1a8 * 2 + -1" (cast_expression "(int)uVar5" ( (type_descriptor "int" primitive_type) ) identifier) < (binary_expression "local_1a8 * 2 + -1" (binary_expression "local_1a8 * 2" identifier * number_literal) + number_literal)) )) (compound_statement "{\n            puVar7 = (uint *)0x1;\n            uVar5 = 0;\n          }" { (expression_statement "puVar7 = (uint *)0x1;" (assignment_expression "puVar7 = (uint *)0x1" identifier = (cast_expression "(uint *)0x1" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "uVar5 = 0;" (assignment_expression "uVar5 = 0" identifier = number_literal) ;) }) (else_clause "else {\n            puVar9 = auStack_1a0;\n            uVar8 = 1;\n            do {\n              uVar5 = uVar8;\n              (*(code *)PTR___gmpz_init_00097130)(puVar9);\n              (*(code *)PTR___gmpz_mul_00097498)(puVar9,puVar9 + -0xc);\n              (*(code *)PTR___gmpz_tdiv_qr_000975d4)(auStack_1c4,&uStack_1b8,param_1,puVar9);\n              if (local_1b4 != 0) {\n                (*(code *)PTR___gmpz_clear_00097308)(puVar9);\n                puVar7 = (uint *)((1 << (uVar5 & 0x1f)) + -1);\n                uVar5 = uVar5 - 1;\n                goto LAB_000321c4;\n              }\n              (*(code *)PTR___gmpz_swap_00097468)(param_1,auStack_1c4);\n              uVar10 = param_1[1];\n              if ((int)uVar10 < 0) {\n                uVar10 = -uVar10;\n              }\n              iVar3 = *(int *)(puVar9 + 4);\n              if (iVar3 < 0) {\n                iVar3 = -iVar3;\n              }\n              puVar9 = puVar9 + 0xc;\n              uVar8 = uVar5 + 1;\n            } while (iVar3 * 2 + -1 <= (int)uVar10);\n            puVar7 = (uint *)((1 << (uVar5 + 1 & 0x1f)) + -1);\n          }" else (compound_statement "{\n            puVar9 = auStack_1a0;\n            uVar8 = 1;\n            do {\n              uVar5 = uVar8;\n              (*(code *)PTR___gmpz_init_00097130)(puVar9);\n              (*(code *)PTR___gmpz_mul_00097498)(puVar9,puVar9 + -0xc);\n              (*(code *)PTR___gmpz_tdiv_qr_000975d4)(auStack_1c4,&uStack_1b8,param_1,puVar9);\n              if (local_1b4 != 0) {\n                (*(code *)PTR___gmpz_clear_00097308)(puVar9);\n                puVar7 = (uint *)((1 << (uVar5 & 0x1f)) + -1);\n                uVar5 = uVar5 - 1;\n                goto LAB_000321c4;\n              }\n              (*(code *)PTR___gmpz_swap_00097468)(param_1,auStack_1c4);\n              uVar10 = param_1[1];\n              if ((int)uVar10 < 0) {\n                uVar10 = -uVar10;\n              }\n              iVar3 = *(int *)(puVar9 + 4);\n              if (iVar3 < 0) {\n                iVar3 = -iVar3;\n              }\n              puVar9 = puVar9 + 0xc;\n              uVar8 = uVar5 + 1;\n            } while (iVar3 * 2 + -1 <= (int)uVar10);\n            puVar7 = (uint *)((1 << (uVar5 + 1 & 0x1f)) + -1);\n          }" { (expression_statement "puVar9 = auStack_1a0;" (assignment_expression "puVar9 = auStack_1a0" identifier = identifier) ;) (expression_statement "uVar8 = 1;" (assignment_expression "uVar8 = 1" identifier = number_literal) ;) (do_statement "do {\n              uVar5 = uVar8;\n              (*(code *)PTR___gmpz_init_00097130)(puVar9);\n              (*(code *)PTR___gmpz_mul_00097498)(puVar9,puVar9 + -0xc);\n              (*(code *)PTR___gmpz_tdiv_qr_000975d4)(auStack_1c4,&uStack_1b8,param_1,puVar9);\n              if (local_1b4 != 0) {\n                (*(code *)PTR___gmpz_clear_00097308)(puVar9);\n                puVar7 = (uint *)((1 << (uVar5 & 0x1f)) + -1);\n                uVar5 = uVar5 - 1;\n                goto LAB_000321c4;\n              }\n              (*(code *)PTR___gmpz_swap_00097468)(param_1,auStack_1c4);\n              uVar10 = param_1[1];\n              if ((int)uVar10 < 0) {\n                uVar10 = -uVar10;\n              }\n              iVar3 = *(int *)(puVar9 + 4);\n              if (iVar3 < 0) {\n                iVar3 = -iVar3;\n              }\n              puVar9 = puVar9 + 0xc;\n              uVar8 = uVar5 + 1;\n            } while (iVar3 * 2 + -1 <= (int)uVar10);" do (compound_statement "{\n              uVar5 = uVar8;\n              (*(code *)PTR___gmpz_init_00097130)(puVar9);\n              (*(code *)PTR___gmpz_mul_00097498)(puVar9,puVar9 + -0xc);\n              (*(code *)PTR___gmpz_tdiv_qr_000975d4)(auStack_1c4,&uStack_1b8,param_1,puVar9);\n              if (local_1b4 != 0) {\n                (*(code *)PTR___gmpz_clear_00097308)(puVar9);\n                puVar7 = (uint *)((1 << (uVar5 & 0x1f)) + -1);\n                uVar5 = uVar5 - 1;\n                goto LAB_000321c4;\n              }\n              (*(code *)PTR___gmpz_swap_00097468)(param_1,auStack_1c4);\n              uVar10 = param_1[1];\n              if ((int)uVar10 < 0) {\n                uVar10 = -uVar10;\n              }\n              iVar3 = *(int *)(puVar9 + 4);\n              if (iVar3 < 0) {\n                iVar3 = -iVar3;\n              }\n              puVar9 = puVar9 + 0xc;\n              uVar8 = uVar5 + 1;\n            }" { (expression_statement "uVar5 = uVar8;" (assignment_expression "uVar5 = uVar8" identifier = identifier) ;) (expression_statement "(*(code *)PTR___gmpz_init_00097130)(puVar9);" (call_expression "(*(code *)PTR___gmpz_init_00097130)(puVar9)" (parenthesized_expression "(*(code *)PTR___gmpz_init_00097130)" ( (pointer_expression "*(code *)PTR___gmpz_init_00097130" * (cast_expression "(code *)PTR___gmpz_init_00097130" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(puVar9)" ( identifier ))) ;) (expression_statement "(*(code *)PTR___gmpz_mul_00097498)(puVar9,puVar9 + -0xc);" (call_expression "(*(code *)PTR___gmpz_mul_00097498)(puVar9,puVar9 + -0xc)" (parenthesized_expression "(*(code *)PTR___gmpz_mul_00097498)" ( (pointer_expression "*(code *)PTR___gmpz_mul_00097498" * (cast_expression "(code *)PTR___gmpz_mul_00097498" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(puVar9,puVar9 + -0xc)" ( identifier , (binary_expression "puVar9 + -0xc" identifier + number_literal) ))) ;) (expression_statement "(*(code *)PTR___gmpz_tdiv_qr_000975d4)(auStack_1c4,&uStack_1b8,param_1,puVar9);" (call_expression "(*(code *)PTR___gmpz_tdiv_qr_000975d4)(auStack_1c4,&uStack_1b8,param_1,puVar9)" (parenthesized_expression "(*(code *)PTR___gmpz_tdiv_qr_000975d4)" ( (pointer_expression "*(code *)PTR___gmpz_tdiv_qr_000975d4" * (cast_expression "(code *)PTR___gmpz_tdiv_qr_000975d4" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(auStack_1c4,&uStack_1b8,param_1,puVar9)" ( identifier , (pointer_expression "&uStack_1b8" & identifier) , identifier , identifier ))) ;) (if_statement "if (local_1b4 != 0) {\n                (*(code *)PTR___gmpz_clear_00097308)(puVar9);\n                puVar7 = (uint *)((1 << (uVar5 & 0x1f)) + -1);\n                uVar5 = uVar5 - 1;\n                goto LAB_000321c4;\n              }" if (parenthesized_expression "(local_1b4 != 0)" ( (binary_expression "local_1b4 != 0" identifier != number_literal) )) (compound_statement "{\n                (*(code *)PTR___gmpz_clear_00097308)(puVar9);\n                puVar7 = (uint *)((1 << (uVar5 & 0x1f)) + -1);\n                uVar5 = uVar5 - 1;\n                goto LAB_000321c4;\n              }" { (expression_statement "(*(code *)PTR___gmpz_clear_00097308)(puVar9);" (call_expression "(*(code *)PTR___gmpz_clear_00097308)(puVar9)" (parenthesized_expression "(*(code *)PTR___gmpz_clear_00097308)" ( (pointer_expression "*(code *)PTR___gmpz_clear_00097308" * (cast_expression "(code *)PTR___gmpz_clear_00097308" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(puVar9)" ( identifier ))) ;) (expression_statement "puVar7 = (uint *)((1 << (uVar5 & 0x1f)) + -1);" (assignment_expression "puVar7 = (uint *)((1 << (uVar5 & 0x1f)) + -1)" identifier = (cast_expression "(uint *)((1 << (uVar5 & 0x1f)) + -1)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((1 << (uVar5 & 0x1f)) + -1)" ( (binary_expression "(1 << (uVar5 & 0x1f)) + -1" (parenthesized_expression "(1 << (uVar5 & 0x1f))" ( (binary_expression "1 << (uVar5 & 0x1f)" number_literal << (parenthesized_expression "(uVar5 & 0x1f)" ( (binary_expression "uVar5 & 0x1f" identifier & number_literal) ))) )) + number_literal) )))) ;) (expression_statement "uVar5 = uVar5 - 1;" (assignment_expression "uVar5 = uVar5 - 1" identifier = (binary_expression "uVar5 - 1" identifier - number_literal)) ;) (goto_statement "goto LAB_000321c4;" goto statement_identifier ;) })) (expression_statement "(*(code *)PTR___gmpz_swap_00097468)(param_1,auStack_1c4);" (call_expression "(*(code *)PTR___gmpz_swap_00097468)(param_1,auStack_1c4)" (parenthesized_expression "(*(code *)PTR___gmpz_swap_00097468)" ( (pointer_expression "*(code *)PTR___gmpz_swap_00097468" * (cast_expression "(code *)PTR___gmpz_swap_00097468" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(param_1,auStack_1c4)" ( identifier , identifier ))) ;) (expression_statement "uVar10 = param_1[1];" (assignment_expression "uVar10 = param_1[1]" identifier = (subscript_expression "param_1[1]" identifier [ number_literal ])) ;) (if_statement "if ((int)uVar10 < 0) {\n                uVar10 = -uVar10;\n              }" if (parenthesized_expression "((int)uVar10 < 0)" ( (binary_expression "(int)uVar10 < 0" (cast_expression "(int)uVar10" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n                uVar10 = -uVar10;\n              }" { (expression_statement "uVar10 = -uVar10;" (assignment_expression "uVar10 = -uVar10" identifier = (unary_expression "-uVar10" - identifier)) ;) })) (expression_statement "iVar3 = *(int *)(puVar9 + 4);" (assignment_expression "iVar3 = *(int *)(puVar9 + 4)" identifier = (pointer_expression "*(int *)(puVar9 + 4)" * (cast_expression "(int *)(puVar9 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar9 + 4)" ( (binary_expression "puVar9 + 4" identifier + number_literal) ))))) ;) (if_statement "if (iVar3 < 0) {\n                iVar3 = -iVar3;\n              }" if (parenthesized_expression "(iVar3 < 0)" ( (binary_expression "iVar3 < 0" identifier < number_literal) )) (compound_statement "{\n                iVar3 = -iVar3;\n              }" { (expression_statement "iVar3 = -iVar3;" (assignment_expression "iVar3 = -iVar3" identifier = (unary_expression "-iVar3" - identifier)) ;) })) (expression_statement "puVar9 = puVar9 + 0xc;" (assignment_expression "puVar9 = puVar9 + 0xc" identifier = (binary_expression "puVar9 + 0xc" identifier + number_literal)) ;) (expression_statement "uVar8 = uVar5 + 1;" (assignment_expression "uVar8 = uVar5 + 1" identifier = (binary_expression "uVar5 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar3 * 2 + -1 <= (int)uVar10)" ( (binary_expression "iVar3 * 2 + -1 <= (int)uVar10" (binary_expression "iVar3 * 2 + -1" (binary_expression "iVar3 * 2" identifier * number_literal) + number_literal) <= (cast_expression "(int)uVar10" ( (type_descriptor "int" primitive_type) ) identifier)) )) ;) (expression_statement "puVar7 = (uint *)((1 << (uVar5 + 1 & 0x1f)) + -1);" (assignment_expression "puVar7 = (uint *)((1 << (uVar5 + 1 & 0x1f)) + -1)" identifier = (cast_expression "(uint *)((1 << (uVar5 + 1 & 0x1f)) + -1)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((1 << (uVar5 + 1 & 0x1f)) + -1)" ( (binary_expression "(1 << (uVar5 + 1 & 0x1f)) + -1" (parenthesized_expression "(1 << (uVar5 + 1 & 0x1f))" ( (binary_expression "1 << (uVar5 + 1 & 0x1f)" number_literal << (parenthesized_expression "(uVar5 + 1 & 0x1f)" ( (binary_expression "uVar5 + 1 & 0x1f" (binary_expression "uVar5 + 1" identifier + number_literal) & number_literal) ))) )) + number_literal) )))) ;) }))) (labeled_statement "LAB_000321c4:\n          puVar9 = auStack_1ac + uVar5 * 0xc;" statement_identifier : (expression_statement "puVar9 = auStack_1ac + uVar5 * 0xc;" (assignment_expression "puVar9 = auStack_1ac + uVar5 * 0xc" identifier = (binary_expression "auStack_1ac + uVar5 * 0xc" identifier + (binary_expression "uVar5 * 0xc" identifier * number_literal))) ;)) (do_statement "do {\n            param_2 = &uStack_1b8;\n            puVar6 = param_1;\n            (*(code *)PTR___gmpz_tdiv_qr_000975d4)(auStack_1c4,&uStack_1b8,param_1,puVar9);\n            if (local_1b4 == 0) {\n              puVar7 = (uint *)((int)puVar7 + (1 << (uVar5 & 0x1f)));\n              param_2 = auStack_1c4;\n              (*(code *)PTR___gmpz_swap_00097468)(param_1);\n            }\n            uVar5 = uVar5 - 1;\n            (*(code *)PTR___gmpz_clear_00097308)(puVar9);\n            puVar9 = puVar9 + -0xc;\n          } while (uVar5 != 0xffffffff);" do (compound_statement "{\n            param_2 = &uStack_1b8;\n            puVar6 = param_1;\n            (*(code *)PTR___gmpz_tdiv_qr_000975d4)(auStack_1c4,&uStack_1b8,param_1,puVar9);\n            if (local_1b4 == 0) {\n              puVar7 = (uint *)((int)puVar7 + (1 << (uVar5 & 0x1f)));\n              param_2 = auStack_1c4;\n              (*(code *)PTR___gmpz_swap_00097468)(param_1);\n            }\n            uVar5 = uVar5 - 1;\n            (*(code *)PTR___gmpz_clear_00097308)(puVar9);\n            puVar9 = puVar9 + -0xc;\n          }" { (expression_statement "param_2 = &uStack_1b8;" (assignment_expression "param_2 = &uStack_1b8" identifier = (pointer_expression "&uStack_1b8" & identifier)) ;) (expression_statement "puVar6 = param_1;" (assignment_expression "puVar6 = param_1" identifier = identifier) ;) (expression_statement "(*(code *)PTR___gmpz_tdiv_qr_000975d4)(auStack_1c4,&uStack_1b8,param_1,puVar9);" (call_expression "(*(code *)PTR___gmpz_tdiv_qr_000975d4)(auStack_1c4,&uStack_1b8,param_1,puVar9)" (parenthesized_expression "(*(code *)PTR___gmpz_tdiv_qr_000975d4)" ( (pointer_expression "*(code *)PTR___gmpz_tdiv_qr_000975d4" * (cast_expression "(code *)PTR___gmpz_tdiv_qr_000975d4" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(auStack_1c4,&uStack_1b8,param_1,puVar9)" ( identifier , (pointer_expression "&uStack_1b8" & identifier) , identifier , identifier ))) ;) (if_statement "if (local_1b4 == 0) {\n              puVar7 = (uint *)((int)puVar7 + (1 << (uVar5 & 0x1f)));\n              param_2 = auStack_1c4;\n              (*(code *)PTR___gmpz_swap_00097468)(param_1);\n            }" if (parenthesized_expression "(local_1b4 == 0)" ( (binary_expression "local_1b4 == 0" identifier == number_literal) )) (compound_statement "{\n              puVar7 = (uint *)((int)puVar7 + (1 << (uVar5 & 0x1f)));\n              param_2 = auStack_1c4;\n              (*(code *)PTR___gmpz_swap_00097468)(param_1);\n            }" { (expression_statement "puVar7 = (uint *)((int)puVar7 + (1 << (uVar5 & 0x1f)));" (assignment_expression "puVar7 = (uint *)((int)puVar7 + (1 << (uVar5 & 0x1f)))" identifier = (cast_expression "(uint *)((int)puVar7 + (1 << (uVar5 & 0x1f)))" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar7 + (1 << (uVar5 & 0x1f)))" ( (binary_expression "(int)puVar7 + (1 << (uVar5 & 0x1f))" (cast_expression "(int)puVar7" ( (type_descriptor "int" primitive_type) ) identifier) + (parenthesized_expression "(1 << (uVar5 & 0x1f))" ( (binary_expression "1 << (uVar5 & 0x1f)" number_literal << (parenthesized_expression "(uVar5 & 0x1f)" ( (binary_expression "uVar5 & 0x1f" identifier & number_literal) ))) ))) )))) ;) (expression_statement "param_2 = auStack_1c4;" (assignment_expression "param_2 = auStack_1c4" identifier = identifier) ;) (expression_statement "(*(code *)PTR___gmpz_swap_00097468)(param_1);" (call_expression "(*(code *)PTR___gmpz_swap_00097468)(param_1)" (parenthesized_expression "(*(code *)PTR___gmpz_swap_00097468)" ( (pointer_expression "*(code *)PTR___gmpz_swap_00097468" * (cast_expression "(code *)PTR___gmpz_swap_00097468" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(param_1)" ( identifier ))) ;) })) (expression_statement "uVar5 = uVar5 - 1;" (assignment_expression "uVar5 = uVar5 - 1" identifier = (binary_expression "uVar5 - 1" identifier - number_literal)) ;) (expression_statement "(*(code *)PTR___gmpz_clear_00097308)(puVar9);" (call_expression "(*(code *)PTR___gmpz_clear_00097308)(puVar9)" (parenthesized_expression "(*(code *)PTR___gmpz_clear_00097308)" ( (pointer_expression "*(code *)PTR___gmpz_clear_00097308" * (cast_expression "(code *)PTR___gmpz_clear_00097308" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(puVar9)" ( identifier ))) ;) (expression_statement "puVar9 = puVar9 + -0xc;" (assignment_expression "puVar9 = puVar9 + -0xc" identifier = (binary_expression "puVar9 + -0xc" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar5 != 0xffffffff)" ( (binary_expression "uVar5 != 0xffffffff" identifier != number_literal) )) ;) }) (else_clause "else {\n          (*(code *)PTR___gmpz_set_000974b8)(param_1);\n          puVar7 = (uint *)0x0;\n        }" else (compound_statement "{\n          (*(code *)PTR___gmpz_set_000974b8)(param_1);\n          puVar7 = (uint *)0x0;\n        }" { (expression_statement "(*(code *)PTR___gmpz_set_000974b8)(param_1);" (call_expression "(*(code *)PTR___gmpz_set_000974b8)(param_1)" (parenthesized_expression "(*(code *)PTR___gmpz_set_000974b8)" ( (pointer_expression "*(code *)PTR___gmpz_set_000974b8" * (cast_expression "(code *)PTR___gmpz_set_000974b8" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(param_1)" ( identifier ))) ;) (expression_statement "puVar7 = (uint *)0x0;" (assignment_expression "puVar7 = (uint *)0x0" identifier = (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) }))) (expression_statement "(*(code *)PTR___gmpz_clear_00097308)(auStack_1c4);" (call_expression "(*(code *)PTR___gmpz_clear_00097308)(auStack_1c4)" (parenthesized_expression "(*(code *)PTR___gmpz_clear_00097308)" ( (pointer_expression "*(code *)PTR___gmpz_clear_00097308" * (cast_expression "(code *)PTR___gmpz_clear_00097308" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(auStack_1c4)" ( identifier ))) ;) (expression_statement "(*(code *)PTR___gmpz_clear_00097308)(&uStack_1b8);" (call_expression "(*(code *)PTR___gmpz_clear_00097308)(&uStack_1b8)" (parenthesized_expression "(*(code *)PTR___gmpz_clear_00097308)" ( (pointer_expression "*(code *)PTR___gmpz_clear_00097308" * (cast_expression "(code *)PTR___gmpz_clear_00097308" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(&uStack_1b8)" ( (pointer_expression "&uStack_1b8" & identifier) ))) ;) (expression_statement "param_3 = puVar6;" (assignment_expression "param_3 = puVar6" identifier = identifier) ;) }))) }) (else_clause "else {\n      local_1c8 = uVar10;\n      if ((int)uVar10 < 0) {\n        local_1c8 = -uVar10;\n      }\n      if ((int)*param_1 < (int)local_1c8) {\n        uVar4 = (*(code *)PTR___gmpz_realloc_000975bc)(param_1,local_1c8);\n        puVar7 = (uint *)param_3[2];\n      }\n      else {\n        uVar4 = param_1[2];\n      }\n      param_3 = (uint *)param_2[2];\n      param_2 = &local_1c8;\n      puVar7 = (uint *)(*(code *)PTR___gmpn_remove_00097294)\n                                 (uVar4,param_2,param_3,local_1c8,puVar7,uVar5,0xffffffff);\n      uVar5 = local_1c8;\n      if ((uVar8 >> 0x1f & (uint)puVar7) != uVar10 >> 0x1f) {\n        uVar5 = -local_1c8;\n      }\nLAB_00032004:\n      param_1[1] = uVar5;\n    }" else (compound_statement "{\n      local_1c8 = uVar10;\n      if ((int)uVar10 < 0) {\n        local_1c8 = -uVar10;\n      }\n      if ((int)*param_1 < (int)local_1c8) {\n        uVar4 = (*(code *)PTR___gmpz_realloc_000975bc)(param_1,local_1c8);\n        puVar7 = (uint *)param_3[2];\n      }\n      else {\n        uVar4 = param_1[2];\n      }\n      param_3 = (uint *)param_2[2];\n      param_2 = &local_1c8;\n      puVar7 = (uint *)(*(code *)PTR___gmpn_remove_00097294)\n                                 (uVar4,param_2,param_3,local_1c8,puVar7,uVar5,0xffffffff);\n      uVar5 = local_1c8;\n      if ((uVar8 >> 0x1f & (uint)puVar7) != uVar10 >> 0x1f) {\n        uVar5 = -local_1c8;\n      }\nLAB_00032004:\n      param_1[1] = uVar5;\n    }" { (expression_statement "local_1c8 = uVar10;" (assignment_expression "local_1c8 = uVar10" identifier = identifier) ;) (if_statement "if ((int)uVar10 < 0) {\n        local_1c8 = -uVar10;\n      }" if (parenthesized_expression "((int)uVar10 < 0)" ( (binary_expression "(int)uVar10 < 0" (cast_expression "(int)uVar10" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n        local_1c8 = -uVar10;\n      }" { (expression_statement "local_1c8 = -uVar10;" (assignment_expression "local_1c8 = -uVar10" identifier = (unary_expression "-uVar10" - identifier)) ;) })) (if_statement "if ((int)*param_1 < (int)local_1c8) {\n        uVar4 = (*(code *)PTR___gmpz_realloc_000975bc)(param_1,local_1c8);\n        puVar7 = (uint *)param_3[2];\n      }\n      else {\n        uVar4 = param_1[2];\n      }" if (parenthesized_expression "((int)*param_1 < (int)local_1c8)" ( (binary_expression "(int)*param_1 < (int)local_1c8" (cast_expression "(int)*param_1" ( (type_descriptor "int" primitive_type) ) (pointer_expression "*param_1" * identifier)) < (cast_expression "(int)local_1c8" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n        uVar4 = (*(code *)PTR___gmpz_realloc_000975bc)(param_1,local_1c8);\n        puVar7 = (uint *)param_3[2];\n      }" { (expression_statement "uVar4 = (*(code *)PTR___gmpz_realloc_000975bc)(param_1,local_1c8);" (assignment_expression "uVar4 = (*(code *)PTR___gmpz_realloc_000975bc)(param_1,local_1c8)" identifier = (call_expression "(*(code *)PTR___gmpz_realloc_000975bc)(param_1,local_1c8)" (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,local_1c8)" ( identifier , identifier )))) ;) (expression_statement "puVar7 = (uint *)param_3[2];" (assignment_expression "puVar7 = (uint *)param_3[2]" identifier = (cast_expression "(uint *)param_3[2]" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_3[2]" identifier [ number_literal ]))) ;) }) (else_clause "else {\n        uVar4 = param_1[2];\n      }" else (compound_statement "{\n        uVar4 = param_1[2];\n      }" { (expression_statement "uVar4 = param_1[2];" (assignment_expression "uVar4 = param_1[2]" identifier = (subscript_expression "param_1[2]" identifier [ number_literal ])) ;) }))) (expression_statement "param_3 = (uint *)param_2[2];" (assignment_expression "param_3 = (uint *)param_2[2]" identifier = (cast_expression "(uint *)param_2[2]" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_2[2]" identifier [ number_literal ]))) ;) (expression_statement "param_2 = &local_1c8;" (assignment_expression "param_2 = &local_1c8" identifier = (pointer_expression "&local_1c8" & identifier)) ;) (expression_statement "puVar7 = (uint *)(*(code *)PTR___gmpn_remove_00097294)\n                                 (uVar4,param_2,param_3,local_1c8,puVar7,uVar5,0xffffffff);" (assignment_expression "puVar7 = (uint *)(*(code *)PTR___gmpn_remove_00097294)\n                                 (uVar4,param_2,param_3,local_1c8,puVar7,uVar5,0xffffffff)" identifier = (cast_expression "(uint *)(*(code *)PTR___gmpn_remove_00097294)\n                                 (uVar4,param_2,param_3,local_1c8,puVar7,uVar5,0xffffffff)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)PTR___gmpn_remove_00097294)\n                                 (uVar4,param_2,param_3,local_1c8,puVar7,uVar5,0xffffffff)" (parenthesized_expression "(*(code *)PTR___gmpn_remove_00097294)" ( (pointer_expression "*(code *)PTR___gmpn_remove_00097294" * (cast_expression "(code *)PTR___gmpn_remove_00097294" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(uVar4,param_2,param_3,local_1c8,puVar7,uVar5,0xffffffff)" ( identifier , identifier , identifier , identifier , identifier , identifier , number_literal ))))) ;) (expression_statement "uVar5 = local_1c8;" (assignment_expression "uVar5 = local_1c8" identifier = identifier) ;) (if_statement "if ((uVar8 >> 0x1f & (uint)puVar7) != uVar10 >> 0x1f) {\n        uVar5 = -local_1c8;\n      }" if (parenthesized_expression "((uVar8 >> 0x1f & (uint)puVar7) != uVar10 >> 0x1f)" ( (binary_expression "(uVar8 >> 0x1f & (uint)puVar7) != uVar10 >> 0x1f" (parenthesized_expression "(uVar8 >> 0x1f & (uint)puVar7)" ( (binary_expression "uVar8 >> 0x1f & (uint)puVar7" (binary_expression "uVar8 >> 0x1f" identifier >> number_literal) & (cast_expression "(uint)puVar7" ( (type_descriptor "uint" type_identifier) ) identifier)) )) != (binary_expression "uVar10 >> 0x1f" identifier >> number_literal)) )) (compound_statement "{\n        uVar5 = -local_1c8;\n      }" { (expression_statement "uVar5 = -local_1c8;" (assignment_expression "uVar5 = -local_1c8" identifier = (unary_expression "-local_1c8" - identifier)) ;) })) (labeled_statement "LAB_00032004:\n      param_1[1] = uVar5;" statement_identifier : (expression_statement "param_1[1] = uVar5;" (assignment_expression "param_1[1] = uVar5" (subscript_expression "param_1[1]" identifier [ number_literal ]) = identifier) ;)) }))) }) (else_clause "else {\n    if (uVar8 == 0) goto LAB_0003232c;\n    puVar7 = (uint *)0x0;\n    (*(code *)PTR___gmpz_set_000974b8)(param_1);\n  }" else (compound_statement "{\n    if (uVar8 == 0) goto LAB_0003232c;\n    puVar7 = (uint *)0x0;\n    (*(code *)PTR___gmpz_set_000974b8)(param_1);\n  }" { (if_statement "if (uVar8 == 0) goto LAB_0003232c;" if (parenthesized_expression "(uVar8 == 0)" ( (binary_expression "uVar8 == 0" identifier == number_literal) )) (goto_statement "goto LAB_0003232c;" goto statement_identifier ;)) (expression_statement "puVar7 = (uint *)0x0;" (assignment_expression "puVar7 = (uint *)0x0" identifier = (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "(*(code *)PTR___gmpz_set_000974b8)(param_1);" (call_expression "(*(code *)PTR___gmpz_set_000974b8)(param_1)" (parenthesized_expression "(*(code *)PTR___gmpz_set_000974b8)" ( (pointer_expression "*(code *)PTR___gmpz_set_000974b8" * (cast_expression "(code *)PTR___gmpz_set_000974b8" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(param_1)" ( identifier ))) ;) }))) (if_statement "if (local_2c == *(uint **)puVar2) {\n    return puVar7;\n  }" if (parenthesized_expression "(local_2c == *(uint **)puVar2)" ( (binary_expression "local_2c == *(uint **)puVar2" identifier == (pointer_expression "*(uint **)puVar2" * (cast_expression "(uint **)puVar2" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) )) (compound_statement "{\n    return puVar7;\n  }" { (return_statement "return puVar7;" return identifier ;) })) (expression_statement "param_1 = local_2c;" (assignment_expression "param_1 = local_2c" 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 "()" ( ))) ;) (labeled_statement "LAB_0003232c:\n  (*(code *)PTR___gmp_divide_by_zero_000975dc)();" statement_identifier : (expression_statement "(*(code *)PTR___gmp_divide_by_zero_000975dc)();" (call_expression "(*(code *)PTR___gmp_divide_by_zero_000975dc)()" (parenthesized_expression "(*(code *)PTR___gmp_divide_by_zero_000975dc)" ( (pointer_expression "*(code *)PTR___gmp_divide_by_zero_000975dc" * (cast_expression "(code *)PTR___gmp_divide_by_zero_000975dc" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;)) (expression_statement "puVar7 = param_3;" (assignment_expression "puVar7 = param_3" identifier = identifier) ;) (if_statement "if ((int)param_3 < 0) {\n    puVar7 = (uint *)-(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    puVar7 = (uint *)-(int)param_3;\n  }" { (expression_statement "puVar7 = (uint *)-(int)param_3;" (assignment_expression "puVar7 = (uint *)-(int)param_3" identifier = (cast_expression "(uint *)-(int)param_3" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (unary_expression "-(int)param_3" - (cast_expression "(int)param_3" ( (type_descriptor "int" primitive_type) ) identifier)))) ;) })) (if_statement "if (param_3 == (uint *)0x0) {\n    *param_1 = 0;\n    puVar7 = (uint *)0x0;\n  }\n  else {\n    if (param_2[(int)puVar7 + -1] == 0) {\n      puVar6 = param_2 + (int)puVar7;\n      do {\n        puVar7 = (uint *)((int)puVar7 + -1);\n        if (puVar7 == (uint *)0x0) break;\n        puVar1 = puVar6 + -2;\n        puVar6 = puVar6 + -1;\n      } while (*puVar1 == 0);\n    }\n    *param_1 = 0;\n    if ((int)param_3 < 0) {\n      puVar7 = (uint *)-(int)puVar7;\n    }\n  }" if (parenthesized_expression "(param_3 == (uint *)0x0)" ( (binary_expression "param_3 == (uint *)0x0" identifier == (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    *param_1 = 0;\n    puVar7 = (uint *)0x0;\n  }" { (expression_statement "*param_1 = 0;" (assignment_expression "*param_1 = 0" (pointer_expression "*param_1" * identifier) = number_literal) ;) (expression_statement "puVar7 = (uint *)0x0;" (assignment_expression "puVar7 = (uint *)0x0" identifier = (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) }) (else_clause "else {\n    if (param_2[(int)puVar7 + -1] == 0) {\n      puVar6 = param_2 + (int)puVar7;\n      do {\n        puVar7 = (uint *)((int)puVar7 + -1);\n        if (puVar7 == (uint *)0x0) break;\n        puVar1 = puVar6 + -2;\n        puVar6 = puVar6 + -1;\n      } while (*puVar1 == 0);\n    }\n    *param_1 = 0;\n    if ((int)param_3 < 0) {\n      puVar7 = (uint *)-(int)puVar7;\n    }\n  }" else (compound_statement "{\n    if (param_2[(int)puVar7 + -1] == 0) {\n      puVar6 = param_2 + (int)puVar7;\n      do {\n        puVar7 = (uint *)((int)puVar7 + -1);\n        if (puVar7 == (uint *)0x0) break;\n        puVar1 = puVar6 + -2;\n        puVar6 = puVar6 + -1;\n      } while (*puVar1 == 0);\n    }\n    *param_1 = 0;\n    if ((int)param_3 < 0) {\n      puVar7 = (uint *)-(int)puVar7;\n    }\n  }" { (if_statement "if (param_2[(int)puVar7 + -1] == 0) {\n      puVar6 = param_2 + (int)puVar7;\n      do {\n        puVar7 = (uint *)((int)puVar7 + -1);\n        if (puVar7 == (uint *)0x0) break;\n        puVar1 = puVar6 + -2;\n        puVar6 = puVar6 + -1;\n      } while (*puVar1 == 0);\n    }" if (parenthesized_expression "(param_2[(int)puVar7 + -1] == 0)" ( (binary_expression "param_2[(int)puVar7 + -1] == 0" (subscript_expression "param_2[(int)puVar7 + -1]" identifier [ (binary_expression "(int)puVar7 + -1" (cast_expression "(int)puVar7" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ]) == number_literal) )) (compound_statement "{\n      puVar6 = param_2 + (int)puVar7;\n      do {\n        puVar7 = (uint *)((int)puVar7 + -1);\n        if (puVar7 == (uint *)0x0) break;\n        puVar1 = puVar6 + -2;\n        puVar6 = puVar6 + -1;\n      } while (*puVar1 == 0);\n    }" { (expression_statement "puVar6 = param_2 + (int)puVar7;" (assignment_expression "puVar6 = param_2 + (int)puVar7" identifier = (binary_expression "param_2 + (int)puVar7" identifier + (cast_expression "(int)puVar7" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (do_statement "do {\n        puVar7 = (uint *)((int)puVar7 + -1);\n        if (puVar7 == (uint *)0x0) break;\n        puVar1 = puVar6 + -2;\n        puVar6 = puVar6 + -1;\n      } while (*puVar1 == 0);" do (compound_statement "{\n        puVar7 = (uint *)((int)puVar7 + -1);\n        if (puVar7 == (uint *)0x0) break;\n        puVar1 = puVar6 + -2;\n        puVar6 = puVar6 + -1;\n      }" { (expression_statement "puVar7 = (uint *)((int)puVar7 + -1);" (assignment_expression "puVar7 = (uint *)((int)puVar7 + -1)" identifier = (cast_expression "(uint *)((int)puVar7 + -1)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar7 + -1)" ( (binary_expression "(int)puVar7 + -1" (cast_expression "(int)puVar7" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (if_statement "if (puVar7 == (uint *)0x0) break;" if (parenthesized_expression "(puVar7 == (uint *)0x0)" ( (binary_expression "puVar7 == (uint *)0x0" identifier == (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (break_statement "break;" break ;)) (expression_statement "puVar1 = puVar6 + -2;" (assignment_expression "puVar1 = puVar6 + -2" identifier = (binary_expression "puVar6 + -2" identifier + number_literal)) ;) (expression_statement "puVar6 = puVar6 + -1;" (assignment_expression "puVar6 = puVar6 + -1" identifier = (binary_expression "puVar6 + -1" identifier + number_literal)) ;) }) while (parenthesized_expression "(*puVar1 == 0)" ( (binary_expression "*puVar1 == 0" (pointer_expression "*puVar1" * identifier) == number_literal) )) ;) })) (expression_statement "*param_1 = 0;" (assignment_expression "*param_1 = 0" (pointer_expression "*param_1" * identifier) = number_literal) ;) (if_statement "if ((int)param_3 < 0) {\n      puVar7 = (uint *)-(int)puVar7;\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      puVar7 = (uint *)-(int)puVar7;\n    }" { (expression_statement "puVar7 = (uint *)-(int)puVar7;" (assignment_expression "puVar7 = (uint *)-(int)puVar7" identifier = (cast_expression "(uint *)-(int)puVar7" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (unary_expression "-(int)puVar7" - (cast_expression "(int)puVar7" ( (type_descriptor "int" primitive_type) ) identifier)))) ;) })) }))) (expression_statement "param_1[1] = (uint)puVar7;" (assignment_expression "param_1[1] = (uint)puVar7" (subscript_expression "param_1[1]" identifier [ number_literal ]) = (cast_expression "(uint)puVar7" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "param_1[2] = (uint)param_2;" (assignment_expression "param_1[2] = (uint)param_2" (subscript_expression "param_1[2]" identifier [ number_literal ]) = (cast_expression "(uint)param_2" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (return_statement "return param_1;" 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 (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE IDENT ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) IDENT))) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (unary_expression - IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT == LIT) )))) < (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) && (parenthesized_expression ( (binary_expression IDENT != LIT) ))) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == LIT) )) == IDENT) )) (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 , LIT ))))) ;) (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 ( IDENT ))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (binary_expression IDENT >> LIT) & (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (unary_expression - (subscript_expression IDENT [ LIT ]))) ;) (goto_statement goto statement_identifier ;) })) }) (else_clause else (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( (pointer_expression & IDENT) ))) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( 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 ( IDENT , (pointer_expression & IDENT) , 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 ( IDENT , IDENT ))) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT , IDENT ))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (unary_expression - IDENT)) ;) })) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (unary_expression - IDENT)) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < (binary_expression (binary_expression IDENT * LIT) + LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT ))) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT , (binary_expression IDENT + LIT) ))) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT , (pointer_expression & IDENT) , 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 ( IDENT ))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression LIT << (parenthesized_expression ( (binary_expression IDENT & LIT) ))) )) + LIT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - LIT)) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (unary_expression - IDENT)) ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (unary_expression - IDENT)) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression (binary_expression (binary_expression IDENT * LIT) + LIT) <= (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression LIT << (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) & LIT) ))) )) + LIT) )))) ;) }))) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (binary_expression IDENT * LIT))) ;)) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression & 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 ( IDENT , (pointer_expression & IDENT) , IDENT , IDENT ))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + (parenthesized_expression ( (binary_expression LIT << (parenthesized_expression ( (binary_expression IDENT & LIT) ))) ))) )))) ;) (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 ( IDENT ))) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - LIT)) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT ))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != LIT) )) ;) }) (else_clause else (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT ))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) }))) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT ))) ;) (expression_statement (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 = IDENT) ;) }))) }) (else_clause else (compound_statement { (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 = (unary_expression - IDENT)) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (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 )))) ;) (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 = (subscript_expression IDENT [ LIT ])) ;) }))) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression & IDENT)) ;) (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 , IDENT , IDENT , IDENT , IDENT , IDENT , LIT ))))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (binary_expression IDENT >> LIT) & (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) != (binary_expression IDENT >> LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (unary_expression - IDENT)) ;) })) (labeled_statement statement_identifier : (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;)) }))) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( 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 = IDENT) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( ))) ;) (labeled_statement statement_identifier : (expression_statement (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 (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)))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) ]) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (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)) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) == LIT) )) ;) })) (expression_statement (assignment_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 = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (unary_expression - (cast_expression ( (type_descriptor TYPE) ) IDENT)))) ;) })) }))) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (return_statement return IDENT ;) })))
(function_definition "uint * __gmpz_remove(uint *param_1,uint *param_2,uint *param_3)\n\n{\n  uint *puVar1;\n  undefined *puVar2;\n  int iVar3;\n  uint uVar4;\n  uint uVar5;\n  uint *puVar6;\n  uint *puVar7;\n  uint uVar8;\n  undefined1 *puVar9;\n  uint uVar10;\n  uint local_1c8;\n  uint auStack_1c4 [3];\n  uint uStack_1b8;\n  int local_1b4;\n  undefined1 auStack_1ac [4];\n  int local_1a8;\n  undefined1 auStack_1a0 [372];\n  uint *local_2c;\n  \n  puVar2 = PTR___stack_chk_guard_00097540;\n  puVar7 = (uint *)param_3[2];\n  uVar8 = param_3[1];\n  local_2c = *(uint **)PTR___stack_chk_guard_00097540;\n  uVar10 = param_2[1];\n  uVar5 = -uVar8;\n  if (-1 < (int)uVar8) {\n    uVar5 = uVar8;\n  }\n  uVar4 = *puVar7;\n  if (((int)(uint)(uVar4 == 1) < (int)uVar5) && (uVar10 != 0)) {\n    if ((uVar4 & 1) == 0) {\n      if ((uVar4 == 2) == uVar5) {\n        puVar7 = (uint *)(*(code *)PTR___gmpz_scan1_00097608)(param_2,0);\n        param_3 = puVar7;\n        (*(code *)PTR___gmpz_fdiv_q_2exp_00097438)(param_1);\n        if ((uVar8 >> 0x1f & (uint)puVar7) != 0) {\n          uVar5 = -param_1[1];\n          goto LAB_00032004;\n        }\n      }\n      else {\n        (*(code *)PTR___gmpz_init_00097130)(&uStack_1b8);\n        (*(code *)PTR___gmpz_init_00097130)(auStack_1c4);\n        puVar6 = param_2;\n        (*(code *)PTR___gmpz_tdiv_qr_000975d4)(auStack_1c4,&uStack_1b8,param_2,param_3);\n        if (local_1b4 == 0) {\n          (*(code *)PTR___gmpz_init_set_000975ec)(auStack_1ac,param_3);\n          (*(code *)PTR___gmpz_swap_00097468)(param_1,auStack_1c4);\n          if (local_1a8 < 0) {\n            local_1a8 = -local_1a8;\n          }\n          uVar5 = param_1[1];\n          if ((int)uVar5 < 0) {\n            uVar5 = -uVar5;\n          }\n          if ((int)uVar5 < local_1a8 * 2 + -1) {\n            puVar7 = (uint *)0x1;\n            uVar5 = 0;\n          }\n          else {\n            puVar9 = auStack_1a0;\n            uVar8 = 1;\n            do {\n              uVar5 = uVar8;\n              (*(code *)PTR___gmpz_init_00097130)(puVar9);\n              (*(code *)PTR___gmpz_mul_00097498)(puVar9,puVar9 + -0xc);\n              (*(code *)PTR___gmpz_tdiv_qr_000975d4)(auStack_1c4,&uStack_1b8,param_1,puVar9);\n              if (local_1b4 != 0) {\n                (*(code *)PTR___gmpz_clear_00097308)(puVar9);\n                puVar7 = (uint *)((1 << (uVar5 & 0x1f)) + -1);\n                uVar5 = uVar5 - 1;\n                goto LAB_000321c4;\n              }\n              (*(code *)PTR___gmpz_swap_00097468)(param_1,auStack_1c4);\n              uVar10 = param_1[1];\n              if ((int)uVar10 < 0) {\n                uVar10 = -uVar10;\n              }\n              iVar3 = *(int *)(puVar9 + 4);\n              if (iVar3 < 0) {\n                iVar3 = -iVar3;\n              }\n              puVar9 = puVar9 + 0xc;\n              uVar8 = uVar5 + 1;\n            } while (iVar3 * 2 + -1 <= (int)uVar10);\n            puVar7 = (uint *)((1 << (uVar5 + 1 & 0x1f)) + -1);\n          }\nLAB_000321c4:\n          puVar9 = auStack_1ac + uVar5 * 0xc;\n          do {\n            param_2 = &uStack_1b8;\n            puVar6 = param_1;\n            (*(code *)PTR___gmpz_tdiv_qr_000975d4)(auStack_1c4,&uStack_1b8,param_1,puVar9);\n            if (local_1b4 == 0) {\n              puVar7 = (uint *)((int)puVar7 + (1 << (uVar5 & 0x1f)));\n              param_2 = auStack_1c4;\n              (*(code *)PTR___gmpz_swap_00097468)(param_1);\n            }\n            uVar5 = uVar5 - 1;\n            (*(code *)PTR___gmpz_clear_00097308)(puVar9);\n            puVar9 = puVar9 + -0xc;\n          } while (uVar5 != 0xffffffff);\n        }\n        else {\n          (*(code *)PTR___gmpz_set_000974b8)(param_1);\n          puVar7 = (uint *)0x0;\n        }\n        (*(code *)PTR___gmpz_clear_00097308)(auStack_1c4);\n        (*(code *)PTR___gmpz_clear_00097308)(&uStack_1b8);\n        param_3 = puVar6;\n      }\n    }\n    else {\n      local_1c8 = uVar10;\n      if ((int)uVar10 < 0) {\n        local_1c8 = -uVar10;\n      }\n      if ((int)*param_1 < (int)local_1c8) {\n        uVar4 = (*(code *)PTR___gmpz_realloc_000975bc)(param_1,local_1c8);\n        puVar7 = (uint *)param_3[2];\n      }\n      else {\n        uVar4 = param_1[2];\n      }\n      param_3 = (uint *)param_2[2];\n      param_2 = &local_1c8;\n      puVar7 = (uint *)(*(code *)PTR___gmpn_remove_00097294)\n                                 (uVar4,param_2,param_3,local_1c8,puVar7,uVar5,0xffffffff);\n      uVar5 = local_1c8;\n      if ((uVar8 >> 0x1f & (uint)puVar7) != uVar10 >> 0x1f) {\n        uVar5 = -local_1c8;\n      }\nLAB_00032004:\n      param_1[1] = uVar5;\n    }\n  }\n  else {\n    if (uVar8 == 0) goto LAB_0003232c;\n    puVar7 = (uint *)0x0;\n    (*(code *)PTR___gmpz_set_000974b8)(param_1);\n  }\n  if (local_2c == *(uint **)puVar2) {\n    return puVar7;\n  }\n  param_1 = local_2c;\n  (*(code *)PTR___stack_chk_fail_000974d0)();\nLAB_0003232c:\n  (*(code *)PTR___gmp_divide_by_zero_000975dc)();\n  puVar7 = param_3;\n  if ((int)param_3 < 0) {\n    puVar7 = (uint *)-(int)param_3;\n  }\n  if (param_3 == (uint *)0x0) {\n    *param_1 = 0;\n    puVar7 = (uint *)0x0;\n  }\n  else {\n    if (param_2[(int)puVar7 + -1] == 0) {\n      puVar6 = param_2 + (int)puVar7;\n      do {\n        puVar7 = (uint *)((int)puVar7 + -1);\n        if (puVar7 == (uint *)0x0) break;\n        puVar1 = puVar6 + -2;\n        puVar6 = puVar6 + -1;\n      } while (*puVar1 == 0);\n    }\n    *param_1 = 0;\n    if ((int)param_3 < 0) {\n      puVar7 = (uint *)-(int)puVar7;\n    }\n  }\n  param_1[1] = (uint)puVar7;\n  param_1[2] = (uint)param_2;\n  return param_1;\n}" (type_identifier "uint") (pointer_declarator "* __gmpz_remove(uint *param_1,uint *param_2,uint *param_3)" (* "*") (function_declarator "__gmpz_remove(uint *param_1,uint *param_2,uint *param_3)" (identifier "__gmpz_remove") (parameter_list "(uint *param_1,uint *param_2,uint *param_3)" (( "(") (parameter_declaration "uint *param_1" (type_identifier "uint") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) (, ",") (parameter_declaration "uint *param_2" (type_identifier "uint") (pointer_declarator "*param_2" (* "*") (identifier "param_2"))) (, ",") (parameter_declaration "uint *param_3" (type_identifier "uint") (pointer_declarator "*param_3" (* "*") (identifier "param_3"))) () ")")))) (compound_statement "{\n  uint *puVar1;\n  undefined *puVar2;\n  int iVar3;\n  uint uVar4;\n  uint uVar5;\n  uint *puVar6;\n  uint *puVar7;\n  uint uVar8;\n  undefined1 *puVar9;\n  uint uVar10;\n  uint local_1c8;\n  uint auStack_1c4 [3];\n  uint uStack_1b8;\n  int local_1b4;\n  undefined1 auStack_1ac [4];\n  int local_1a8;\n  undefined1 auStack_1a0 [372];\n  uint *local_2c;\n  \n  puVar2 = PTR___stack_chk_guard_00097540;\n  puVar7 = (uint *)param_3[2];\n  uVar8 = param_3[1];\n  local_2c = *(uint **)PTR___stack_chk_guard_00097540;\n  uVar10 = param_2[1];\n  uVar5 = -uVar8;\n  if (-1 < (int)uVar8) {\n    uVar5 = uVar8;\n  }\n  uVar4 = *puVar7;\n  if (((int)(uint)(uVar4 == 1) < (int)uVar5) && (uVar10 != 0)) {\n    if ((uVar4 & 1) == 0) {\n      if ((uVar4 == 2) == uVar5) {\n        puVar7 = (uint *)(*(code *)PTR___gmpz_scan1_00097608)(param_2,0);\n        param_3 = puVar7;\n        (*(code *)PTR___gmpz_fdiv_q_2exp_00097438)(param_1);\n        if ((uVar8 >> 0x1f & (uint)puVar7) != 0) {\n          uVar5 = -param_1[1];\n          goto LAB_00032004;\n        }\n      }\n      else {\n        (*(code *)PTR___gmpz_init_00097130)(&uStack_1b8);\n        (*(code *)PTR___gmpz_init_00097130)(auStack_1c4);\n        puVar6 = param_2;\n        (*(code *)PTR___gmpz_tdiv_qr_000975d4)(auStack_1c4,&uStack_1b8,param_2,param_3);\n        if (local_1b4 == 0) {\n          (*(code *)PTR___gmpz_init_set_000975ec)(auStack_1ac,param_3);\n          (*(code *)PTR___gmpz_swap_00097468)(param_1,auStack_1c4);\n          if (local_1a8 < 0) {\n            local_1a8 = -local_1a8;\n          }\n          uVar5 = param_1[1];\n          if ((int)uVar5 < 0) {\n            uVar5 = -uVar5;\n          }\n          if ((int)uVar5 < local_1a8 * 2 + -1) {\n            puVar7 = (uint *)0x1;\n            uVar5 = 0;\n          }\n          else {\n            puVar9 = auStack_1a0;\n            uVar8 = 1;\n            do {\n              uVar5 = uVar8;\n              (*(code *)PTR___gmpz_init_00097130)(puVar9);\n              (*(code *)PTR___gmpz_mul_00097498)(puVar9,puVar9 + -0xc);\n              (*(code *)PTR___gmpz_tdiv_qr_000975d4)(auStack_1c4,&uStack_1b8,param_1,puVar9);\n              if (local_1b4 != 0) {\n                (*(code *)PTR___gmpz_clear_00097308)(puVar9);\n                puVar7 = (uint *)((1 << (uVar5 & 0x1f)) + -1);\n                uVar5 = uVar5 - 1;\n                goto LAB_000321c4;\n              }\n              (*(code *)PTR___gmpz_swap_00097468)(param_1,auStack_1c4);\n              uVar10 = param_1[1];\n              if ((int)uVar10 < 0) {\n                uVar10 = -uVar10;\n              }\n              iVar3 = *(int *)(puVar9 + 4);\n              if (iVar3 < 0) {\n                iVar3 = -iVar3;\n              }\n              puVar9 = puVar9 + 0xc;\n              uVar8 = uVar5 + 1;\n            } while (iVar3 * 2 + -1 <= (int)uVar10);\n            puVar7 = (uint *)((1 << (uVar5 + 1 & 0x1f)) + -1);\n          }\nLAB_000321c4:\n          puVar9 = auStack_1ac + uVar5 * 0xc;\n          do {\n            param_2 = &uStack_1b8;\n            puVar6 = param_1;\n            (*(code *)PTR___gmpz_tdiv_qr_000975d4)(auStack_1c4,&uStack_1b8,param_1,puVar9);\n            if (local_1b4 == 0) {\n              puVar7 = (uint *)((int)puVar7 + (1 << (uVar5 & 0x1f)));\n              param_2 = auStack_1c4;\n              (*(code *)PTR___gmpz_swap_00097468)(param_1);\n            }\n            uVar5 = uVar5 - 1;\n            (*(code *)PTR___gmpz_clear_00097308)(puVar9);\n            puVar9 = puVar9 + -0xc;\n          } while (uVar5 != 0xffffffff);\n        }\n        else {\n          (*(code *)PTR___gmpz_set_000974b8)(param_1);\n          puVar7 = (uint *)0x0;\n        }\n        (*(code *)PTR___gmpz_clear_00097308)(auStack_1c4);\n        (*(code *)PTR___gmpz_clear_00097308)(&uStack_1b8);\n        param_3 = puVar6;\n      }\n    }\n    else {\n      local_1c8 = uVar10;\n      if ((int)uVar10 < 0) {\n        local_1c8 = -uVar10;\n      }\n      if ((int)*param_1 < (int)local_1c8) {\n        uVar4 = (*(code *)PTR___gmpz_realloc_000975bc)(param_1,local_1c8);\n        puVar7 = (uint *)param_3[2];\n      }\n      else {\n        uVar4 = param_1[2];\n      }\n      param_3 = (uint *)param_2[2];\n      param_2 = &local_1c8;\n      puVar7 = (uint *)(*(code *)PTR___gmpn_remove_00097294)\n                                 (uVar4,param_2,param_3,local_1c8,puVar7,uVar5,0xffffffff);\n      uVar5 = local_1c8;\n      if ((uVar8 >> 0x1f & (uint)puVar7) != uVar10 >> 0x1f) {\n        uVar5 = -local_1c8;\n      }\nLAB_00032004:\n      param_1[1] = uVar5;\n    }\n  }\n  else {\n    if (uVar8 == 0) goto LAB_0003232c;\n    puVar7 = (uint *)0x0;\n    (*(code *)PTR___gmpz_set_000974b8)(param_1);\n  }\n  if (local_2c == *(uint **)puVar2) {\n    return puVar7;\n  }\n  param_1 = local_2c;\n  (*(code *)PTR___stack_chk_fail_000974d0)();\nLAB_0003232c:\n  (*(code *)PTR___gmp_divide_by_zero_000975dc)();\n  puVar7 = param_3;\n  if ((int)param_3 < 0) {\n    puVar7 = (uint *)-(int)param_3;\n  }\n  if (param_3 == (uint *)0x0) {\n    *param_1 = 0;\n    puVar7 = (uint *)0x0;\n  }\n  else {\n    if (param_2[(int)puVar7 + -1] == 0) {\n      puVar6 = param_2 + (int)puVar7;\n      do {\n        puVar7 = (uint *)((int)puVar7 + -1);\n        if (puVar7 == (uint *)0x0) break;\n        puVar1 = puVar6 + -2;\n        puVar6 = puVar6 + -1;\n      } while (*puVar1 == 0);\n    }\n    *param_1 = 0;\n    if ((int)param_3 < 0) {\n      puVar7 = (uint *)-(int)puVar7;\n    }\n  }\n  param_1[1] = (uint)puVar7;\n  param_1[2] = (uint)param_2;\n  return param_1;\n}" ({ "{") (declaration "uint *puVar1;" (type_identifier "uint") (pointer_declarator "*puVar1" (* "*") (identifier "puVar1")) (; ";")) (declaration "undefined *puVar2;" (type_identifier "undefined") (pointer_declarator "*puVar2" (* "*") (identifier "puVar2")) (; ";")) (declaration "int iVar3;" (primitive_type "int") (identifier "iVar3") (; ";")) (declaration "uint uVar4;" (type_identifier "uint") (identifier "uVar4") (; ";")) (declaration "uint uVar5;" (type_identifier "uint") (identifier "uVar5") (; ";")) (declaration "uint *puVar6;" (type_identifier "uint") (pointer_declarator "*puVar6" (* "*") (identifier "puVar6")) (; ";")) (declaration "uint *puVar7;" (type_identifier "uint") (pointer_declarator "*puVar7" (* "*") (identifier "puVar7")) (; ";")) (declaration "uint uVar8;" (type_identifier "uint") (identifier "uVar8") (; ";")) (declaration "undefined1 *puVar9;" (type_identifier "undefined1") (pointer_declarator "*puVar9" (* "*") (identifier "puVar9")) (; ";")) (declaration "uint uVar10;" (type_identifier "uint") (identifier "uVar10") (; ";")) (declaration "uint local_1c8;" (type_identifier "uint") (identifier "local_1c8") (; ";")) (declaration "uint auStack_1c4 [3];" (type_identifier "uint") (array_declarator "auStack_1c4 [3]" (identifier "auStack_1c4") ([ "[") (number_literal "3") (] "]")) (; ";")) (declaration "uint uStack_1b8;" (type_identifier "uint") (identifier "uStack_1b8") (; ";")) (declaration "int local_1b4;" (primitive_type "int") (identifier "local_1b4") (; ";")) (declaration "undefined1 auStack_1ac [4];" (type_identifier "undefined1") (array_declarator "auStack_1ac [4]" (identifier "auStack_1ac") ([ "[") (number_literal "4") (] "]")) (; ";")) (declaration "int local_1a8;" (primitive_type "int") (identifier "local_1a8") (; ";")) (declaration "undefined1 auStack_1a0 [372];" (type_identifier "undefined1") (array_declarator "auStack_1a0 [372]" (identifier "auStack_1a0") ([ "[") (number_literal "372") (] "]")) (; ";")) (declaration "uint *local_2c;" (type_identifier "uint") (pointer_declarator "*local_2c" (* "*") (identifier "local_2c")) (; ";")) (expression_statement "puVar2 = PTR___stack_chk_guard_00097540;" (assignment_expression "puVar2 = PTR___stack_chk_guard_00097540" (identifier "puVar2") (= "=") (identifier "PTR___stack_chk_guard_00097540")) (; ";")) (expression_statement "puVar7 = (uint *)param_3[2];" (assignment_expression "puVar7 = (uint *)param_3[2]" (identifier "puVar7") (= "=") (cast_expression "(uint *)param_3[2]" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_3[2]" (identifier "param_3") ([ "[") (number_literal "2") (] "]")))) (; ";")) (expression_statement "uVar8 = param_3[1];" (assignment_expression "uVar8 = param_3[1]" (identifier "uVar8") (= "=") (subscript_expression "param_3[1]" (identifier "param_3") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "local_2c = *(uint **)PTR___stack_chk_guard_00097540;" (assignment_expression "local_2c = *(uint **)PTR___stack_chk_guard_00097540" (identifier "local_2c") (= "=") (pointer_expression "*(uint **)PTR___stack_chk_guard_00097540" (* "*") (cast_expression "(uint **)PTR___stack_chk_guard_00097540" (( "(") (type_descriptor "uint **" (type_identifier "uint") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (identifier "PTR___stack_chk_guard_00097540")))) (; ";")) (expression_statement "uVar10 = param_2[1];" (assignment_expression "uVar10 = param_2[1]" (identifier "uVar10") (= "=") (subscript_expression "param_2[1]" (identifier "param_2") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "uVar5 = -uVar8;" (assignment_expression "uVar5 = -uVar8" (identifier "uVar5") (= "=") (unary_expression "-uVar8" (- "-") (identifier "uVar8"))) (; ";")) (if_statement "if (-1 < (int)uVar8) {\n    uVar5 = uVar8;\n  }" (if "if") (parenthesized_expression "(-1 < (int)uVar8)" (( "(") (binary_expression "-1 < (int)uVar8" (number_literal "-1") (< "<") (cast_expression "(int)uVar8" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar8"))) () ")")) (compound_statement "{\n    uVar5 = uVar8;\n  }" ({ "{") (expression_statement "uVar5 = uVar8;" (assignment_expression "uVar5 = uVar8" (identifier "uVar5") (= "=") (identifier "uVar8")) (; ";")) (} "}"))) (expression_statement "uVar4 = *puVar7;" (assignment_expression "uVar4 = *puVar7" (identifier "uVar4") (= "=") (pointer_expression "*puVar7" (* "*") (identifier "puVar7"))) (; ";")) (if_statement "if (((int)(uint)(uVar4 == 1) < (int)uVar5) && (uVar10 != 0)) {\n    if ((uVar4 & 1) == 0) {\n      if ((uVar4 == 2) == uVar5) {\n        puVar7 = (uint *)(*(code *)PTR___gmpz_scan1_00097608)(param_2,0);\n        param_3 = puVar7;\n        (*(code *)PTR___gmpz_fdiv_q_2exp_00097438)(param_1);\n        if ((uVar8 >> 0x1f & (uint)puVar7) != 0) {\n          uVar5 = -param_1[1];\n          goto LAB_00032004;\n        }\n      }\n      else {\n        (*(code *)PTR___gmpz_init_00097130)(&uStack_1b8);\n        (*(code *)PTR___gmpz_init_00097130)(auStack_1c4);\n        puVar6 = param_2;\n        (*(code *)PTR___gmpz_tdiv_qr_000975d4)(auStack_1c4,&uStack_1b8,param_2,param_3);\n        if (local_1b4 == 0) {\n          (*(code *)PTR___gmpz_init_set_000975ec)(auStack_1ac,param_3);\n          (*(code *)PTR___gmpz_swap_00097468)(param_1,auStack_1c4);\n          if (local_1a8 < 0) {\n            local_1a8 = -local_1a8;\n          }\n          uVar5 = param_1[1];\n          if ((int)uVar5 < 0) {\n            uVar5 = -uVar5;\n          }\n          if ((int)uVar5 < local_1a8 * 2 + -1) {\n            puVar7 = (uint *)0x1;\n            uVar5 = 0;\n          }\n          else {\n            puVar9 = auStack_1a0;\n            uVar8 = 1;\n            do {\n              uVar5 = uVar8;\n              (*(code *)PTR___gmpz_init_00097130)(puVar9);\n              (*(code *)PTR___gmpz_mul_00097498)(puVar9,puVar9 + -0xc);\n              (*(code *)PTR___gmpz_tdiv_qr_000975d4)(auStack_1c4,&uStack_1b8,param_1,puVar9);\n              if (local_1b4 != 0) {\n                (*(code *)PTR___gmpz_clear_00097308)(puVar9);\n                puVar7 = (uint *)((1 << (uVar5 & 0x1f)) + -1);\n                uVar5 = uVar5 - 1;\n                goto LAB_000321c4;\n              }\n              (*(code *)PTR___gmpz_swap_00097468)(param_1,auStack_1c4);\n              uVar10 = param_1[1];\n              if ((int)uVar10 < 0) {\n                uVar10 = -uVar10;\n              }\n              iVar3 = *(int *)(puVar9 + 4);\n              if (iVar3 < 0) {\n                iVar3 = -iVar3;\n              }\n              puVar9 = puVar9 + 0xc;\n              uVar8 = uVar5 + 1;\n            } while (iVar3 * 2 + -1 <= (int)uVar10);\n            puVar7 = (uint *)((1 << (uVar5 + 1 & 0x1f)) + -1);\n          }\nLAB_000321c4:\n          puVar9 = auStack_1ac + uVar5 * 0xc;\n          do {\n            param_2 = &uStack_1b8;\n            puVar6 = param_1;\n            (*(code *)PTR___gmpz_tdiv_qr_000975d4)(auStack_1c4,&uStack_1b8,param_1,puVar9);\n            if (local_1b4 == 0) {\n              puVar7 = (uint *)((int)puVar7 + (1 << (uVar5 & 0x1f)));\n              param_2 = auStack_1c4;\n              (*(code *)PTR___gmpz_swap_00097468)(param_1);\n            }\n            uVar5 = uVar5 - 1;\n            (*(code *)PTR___gmpz_clear_00097308)(puVar9);\n            puVar9 = puVar9 + -0xc;\n          } while (uVar5 != 0xffffffff);\n        }\n        else {\n          (*(code *)PTR___gmpz_set_000974b8)(param_1);\n          puVar7 = (uint *)0x0;\n        }\n        (*(code *)PTR___gmpz_clear_00097308)(auStack_1c4);\n        (*(code *)PTR___gmpz_clear_00097308)(&uStack_1b8);\n        param_3 = puVar6;\n      }\n    }\n    else {\n      local_1c8 = uVar10;\n      if ((int)uVar10 < 0) {\n        local_1c8 = -uVar10;\n      }\n      if ((int)*param_1 < (int)local_1c8) {\n        uVar4 = (*(code *)PTR___gmpz_realloc_000975bc)(param_1,local_1c8);\n        puVar7 = (uint *)param_3[2];\n      }\n      else {\n        uVar4 = param_1[2];\n      }\n      param_3 = (uint *)param_2[2];\n      param_2 = &local_1c8;\n      puVar7 = (uint *)(*(code *)PTR___gmpn_remove_00097294)\n                                 (uVar4,param_2,param_3,local_1c8,puVar7,uVar5,0xffffffff);\n      uVar5 = local_1c8;\n      if ((uVar8 >> 0x1f & (uint)puVar7) != uVar10 >> 0x1f) {\n        uVar5 = -local_1c8;\n      }\nLAB_00032004:\n      param_1[1] = uVar5;\n    }\n  }\n  else {\n    if (uVar8 == 0) goto LAB_0003232c;\n    puVar7 = (uint *)0x0;\n    (*(code *)PTR___gmpz_set_000974b8)(param_1);\n  }" (if "if") (parenthesized_expression "(((int)(uint)(uVar4 == 1) < (int)uVar5) && (uVar10 != 0))" (( "(") (binary_expression "((int)(uint)(uVar4 == 1) < (int)uVar5) && (uVar10 != 0)" (parenthesized_expression "((int)(uint)(uVar4 == 1) < (int)uVar5)" (( "(") (binary_expression "(int)(uint)(uVar4 == 1) < (int)uVar5" (cast_expression "(int)(uint)(uVar4 == 1)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (call_expression "(uint)(uVar4 == 1)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(uVar4 == 1)" (( "(") (binary_expression "uVar4 == 1" (identifier "uVar4") (== "==") (number_literal "1")) () ")")))) (< "<") (cast_expression "(int)uVar5" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar5"))) () ")")) (&& "&&") (parenthesized_expression "(uVar10 != 0)" (( "(") (binary_expression "uVar10 != 0" (identifier "uVar10") (!= "!=") (number_literal "0")) () ")"))) () ")")) (compound_statement "{\n    if ((uVar4 & 1) == 0) {\n      if ((uVar4 == 2) == uVar5) {\n        puVar7 = (uint *)(*(code *)PTR___gmpz_scan1_00097608)(param_2,0);\n        param_3 = puVar7;\n        (*(code *)PTR___gmpz_fdiv_q_2exp_00097438)(param_1);\n        if ((uVar8 >> 0x1f & (uint)puVar7) != 0) {\n          uVar5 = -param_1[1];\n          goto LAB_00032004;\n        }\n      }\n      else {\n        (*(code *)PTR___gmpz_init_00097130)(&uStack_1b8);\n        (*(code *)PTR___gmpz_init_00097130)(auStack_1c4);\n        puVar6 = param_2;\n        (*(code *)PTR___gmpz_tdiv_qr_000975d4)(auStack_1c4,&uStack_1b8,param_2,param_3);\n        if (local_1b4 == 0) {\n          (*(code *)PTR___gmpz_init_set_000975ec)(auStack_1ac,param_3);\n          (*(code *)PTR___gmpz_swap_00097468)(param_1,auStack_1c4);\n          if (local_1a8 < 0) {\n            local_1a8 = -local_1a8;\n          }\n          uVar5 = param_1[1];\n          if ((int)uVar5 < 0) {\n            uVar5 = -uVar5;\n          }\n          if ((int)uVar5 < local_1a8 * 2 + -1) {\n            puVar7 = (uint *)0x1;\n            uVar5 = 0;\n          }\n          else {\n            puVar9 = auStack_1a0;\n            uVar8 = 1;\n            do {\n              uVar5 = uVar8;\n              (*(code *)PTR___gmpz_init_00097130)(puVar9);\n              (*(code *)PTR___gmpz_mul_00097498)(puVar9,puVar9 + -0xc);\n              (*(code *)PTR___gmpz_tdiv_qr_000975d4)(auStack_1c4,&uStack_1b8,param_1,puVar9);\n              if (local_1b4 != 0) {\n                (*(code *)PTR___gmpz_clear_00097308)(puVar9);\n                puVar7 = (uint *)((1 << (uVar5 & 0x1f)) + -1);\n                uVar5 = uVar5 - 1;\n                goto LAB_000321c4;\n              }\n              (*(code *)PTR___gmpz_swap_00097468)(param_1,auStack_1c4);\n              uVar10 = param_1[1];\n              if ((int)uVar10 < 0) {\n                uVar10 = -uVar10;\n              }\n              iVar3 = *(int *)(puVar9 + 4);\n              if (iVar3 < 0) {\n                iVar3 = -iVar3;\n              }\n              puVar9 = puVar9 + 0xc;\n              uVar8 = uVar5 + 1;\n            } while (iVar3 * 2 + -1 <= (int)uVar10);\n            puVar7 = (uint *)((1 << (uVar5 + 1 & 0x1f)) + -1);\n          }\nLAB_000321c4:\n          puVar9 = auStack_1ac + uVar5 * 0xc;\n          do {\n            param_2 = &uStack_1b8;\n            puVar6 = param_1;\n            (*(code *)PTR___gmpz_tdiv_qr_000975d4)(auStack_1c4,&uStack_1b8,param_1,puVar9);\n            if (local_1b4 == 0) {\n              puVar7 = (uint *)((int)puVar7 + (1 << (uVar5 & 0x1f)));\n              param_2 = auStack_1c4;\n              (*(code *)PTR___gmpz_swap_00097468)(param_1);\n            }\n            uVar5 = uVar5 - 1;\n            (*(code *)PTR___gmpz_clear_00097308)(puVar9);\n            puVar9 = puVar9 + -0xc;\n          } while (uVar5 != 0xffffffff);\n        }\n        else {\n          (*(code *)PTR___gmpz_set_000974b8)(param_1);\n          puVar7 = (uint *)0x0;\n        }\n        (*(code *)PTR___gmpz_clear_00097308)(auStack_1c4);\n        (*(code *)PTR___gmpz_clear_00097308)(&uStack_1b8);\n        param_3 = puVar6;\n      }\n    }\n    else {\n      local_1c8 = uVar10;\n      if ((int)uVar10 < 0) {\n        local_1c8 = -uVar10;\n      }\n      if ((int)*param_1 < (int)local_1c8) {\n        uVar4 = (*(code *)PTR___gmpz_realloc_000975bc)(param_1,local_1c8);\n        puVar7 = (uint *)param_3[2];\n      }\n      else {\n        uVar4 = param_1[2];\n      }\n      param_3 = (uint *)param_2[2];\n      param_2 = &local_1c8;\n      puVar7 = (uint *)(*(code *)PTR___gmpn_remove_00097294)\n                                 (uVar4,param_2,param_3,local_1c8,puVar7,uVar5,0xffffffff);\n      uVar5 = local_1c8;\n      if ((uVar8 >> 0x1f & (uint)puVar7) != uVar10 >> 0x1f) {\n        uVar5 = -local_1c8;\n      }\nLAB_00032004:\n      param_1[1] = uVar5;\n    }\n  }" ({ "{") (if_statement "if ((uVar4 & 1) == 0) {\n      if ((uVar4 == 2) == uVar5) {\n        puVar7 = (uint *)(*(code *)PTR___gmpz_scan1_00097608)(param_2,0);\n        param_3 = puVar7;\n        (*(code *)PTR___gmpz_fdiv_q_2exp_00097438)(param_1);\n        if ((uVar8 >> 0x1f & (uint)puVar7) != 0) {\n          uVar5 = -param_1[1];\n          goto LAB_00032004;\n        }\n      }\n      else {\n        (*(code *)PTR___gmpz_init_00097130)(&uStack_1b8);\n        (*(code *)PTR___gmpz_init_00097130)(auStack_1c4);\n        puVar6 = param_2;\n        (*(code *)PTR___gmpz_tdiv_qr_000975d4)(auStack_1c4,&uStack_1b8,param_2,param_3);\n        if (local_1b4 == 0) {\n          (*(code *)PTR___gmpz_init_set_000975ec)(auStack_1ac,param_3);\n          (*(code *)PTR___gmpz_swap_00097468)(param_1,auStack_1c4);\n          if (local_1a8 < 0) {\n            local_1a8 = -local_1a8;\n          }\n          uVar5 = param_1[1];\n          if ((int)uVar5 < 0) {\n            uVar5 = -uVar5;\n          }\n          if ((int)uVar5 < local_1a8 * 2 + -1) {\n            puVar7 = (uint *)0x1;\n            uVar5 = 0;\n          }\n          else {\n            puVar9 = auStack_1a0;\n            uVar8 = 1;\n            do {\n              uVar5 = uVar8;\n              (*(code *)PTR___gmpz_init_00097130)(puVar9);\n              (*(code *)PTR___gmpz_mul_00097498)(puVar9,puVar9 + -0xc);\n              (*(code *)PTR___gmpz_tdiv_qr_000975d4)(auStack_1c4,&uStack_1b8,param_1,puVar9);\n              if (local_1b4 != 0) {\n                (*(code *)PTR___gmpz_clear_00097308)(puVar9);\n                puVar7 = (uint *)((1 << (uVar5 & 0x1f)) + -1);\n                uVar5 = uVar5 - 1;\n                goto LAB_000321c4;\n              }\n              (*(code *)PTR___gmpz_swap_00097468)(param_1,auStack_1c4);\n              uVar10 = param_1[1];\n              if ((int)uVar10 < 0) {\n                uVar10 = -uVar10;\n              }\n              iVar3 = *(int *)(puVar9 + 4);\n              if (iVar3 < 0) {\n                iVar3 = -iVar3;\n              }\n              puVar9 = puVar9 + 0xc;\n              uVar8 = uVar5 + 1;\n            } while (iVar3 * 2 + -1 <= (int)uVar10);\n            puVar7 = (uint *)((1 << (uVar5 + 1 & 0x1f)) + -1);\n          }\nLAB_000321c4:\n          puVar9 = auStack_1ac + uVar5 * 0xc;\n          do {\n            param_2 = &uStack_1b8;\n            puVar6 = param_1;\n            (*(code *)PTR___gmpz_tdiv_qr_000975d4)(auStack_1c4,&uStack_1b8,param_1,puVar9);\n            if (local_1b4 == 0) {\n              puVar7 = (uint *)((int)puVar7 + (1 << (uVar5 & 0x1f)));\n              param_2 = auStack_1c4;\n              (*(code *)PTR___gmpz_swap_00097468)(param_1);\n            }\n            uVar5 = uVar5 - 1;\n            (*(code *)PTR___gmpz_clear_00097308)(puVar9);\n            puVar9 = puVar9 + -0xc;\n          } while (uVar5 != 0xffffffff);\n        }\n        else {\n          (*(code *)PTR___gmpz_set_000974b8)(param_1);\n          puVar7 = (uint *)0x0;\n        }\n        (*(code *)PTR___gmpz_clear_00097308)(auStack_1c4);\n        (*(code *)PTR___gmpz_clear_00097308)(&uStack_1b8);\n        param_3 = puVar6;\n      }\n    }\n    else {\n      local_1c8 = uVar10;\n      if ((int)uVar10 < 0) {\n        local_1c8 = -uVar10;\n      }\n      if ((int)*param_1 < (int)local_1c8) {\n        uVar4 = (*(code *)PTR___gmpz_realloc_000975bc)(param_1,local_1c8);\n        puVar7 = (uint *)param_3[2];\n      }\n      else {\n        uVar4 = param_1[2];\n      }\n      param_3 = (uint *)param_2[2];\n      param_2 = &local_1c8;\n      puVar7 = (uint *)(*(code *)PTR___gmpn_remove_00097294)\n                                 (uVar4,param_2,param_3,local_1c8,puVar7,uVar5,0xffffffff);\n      uVar5 = local_1c8;\n      if ((uVar8 >> 0x1f & (uint)puVar7) != uVar10 >> 0x1f) {\n        uVar5 = -local_1c8;\n      }\nLAB_00032004:\n      param_1[1] = uVar5;\n    }" (if "if") (parenthesized_expression "((uVar4 & 1) == 0)" (( "(") (binary_expression "(uVar4 & 1) == 0" (parenthesized_expression "(uVar4 & 1)" (( "(") (binary_expression "uVar4 & 1" (identifier "uVar4") (& "&") (number_literal "1")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      if ((uVar4 == 2) == uVar5) {\n        puVar7 = (uint *)(*(code *)PTR___gmpz_scan1_00097608)(param_2,0);\n        param_3 = puVar7;\n        (*(code *)PTR___gmpz_fdiv_q_2exp_00097438)(param_1);\n        if ((uVar8 >> 0x1f & (uint)puVar7) != 0) {\n          uVar5 = -param_1[1];\n          goto LAB_00032004;\n        }\n      }\n      else {\n        (*(code *)PTR___gmpz_init_00097130)(&uStack_1b8);\n        (*(code *)PTR___gmpz_init_00097130)(auStack_1c4);\n        puVar6 = param_2;\n        (*(code *)PTR___gmpz_tdiv_qr_000975d4)(auStack_1c4,&uStack_1b8,param_2,param_3);\n        if (local_1b4 == 0) {\n          (*(code *)PTR___gmpz_init_set_000975ec)(auStack_1ac,param_3);\n          (*(code *)PTR___gmpz_swap_00097468)(param_1,auStack_1c4);\n          if (local_1a8 < 0) {\n            local_1a8 = -local_1a8;\n          }\n          uVar5 = param_1[1];\n          if ((int)uVar5 < 0) {\n            uVar5 = -uVar5;\n          }\n          if ((int)uVar5 < local_1a8 * 2 + -1) {\n            puVar7 = (uint *)0x1;\n            uVar5 = 0;\n          }\n          else {\n            puVar9 = auStack_1a0;\n            uVar8 = 1;\n            do {\n              uVar5 = uVar8;\n              (*(code *)PTR___gmpz_init_00097130)(puVar9);\n              (*(code *)PTR___gmpz_mul_00097498)(puVar9,puVar9 + -0xc);\n              (*(code *)PTR___gmpz_tdiv_qr_000975d4)(auStack_1c4,&uStack_1b8,param_1,puVar9);\n              if (local_1b4 != 0) {\n                (*(code *)PTR___gmpz_clear_00097308)(puVar9);\n                puVar7 = (uint *)((1 << (uVar5 & 0x1f)) + -1);\n                uVar5 = uVar5 - 1;\n                goto LAB_000321c4;\n              }\n              (*(code *)PTR___gmpz_swap_00097468)(param_1,auStack_1c4);\n              uVar10 = param_1[1];\n              if ((int)uVar10 < 0) {\n                uVar10 = -uVar10;\n              }\n              iVar3 = *(int *)(puVar9 + 4);\n              if (iVar3 < 0) {\n                iVar3 = -iVar3;\n              }\n              puVar9 = puVar9 + 0xc;\n              uVar8 = uVar5 + 1;\n            } while (iVar3 * 2 + -1 <= (int)uVar10);\n            puVar7 = (uint *)((1 << (uVar5 + 1 & 0x1f)) + -1);\n          }\nLAB_000321c4:\n          puVar9 = auStack_1ac + uVar5 * 0xc;\n          do {\n            param_2 = &uStack_1b8;\n            puVar6 = param_1;\n            (*(code *)PTR___gmpz_tdiv_qr_000975d4)(auStack_1c4,&uStack_1b8,param_1,puVar9);\n            if (local_1b4 == 0) {\n              puVar7 = (uint *)((int)puVar7 + (1 << (uVar5 & 0x1f)));\n              param_2 = auStack_1c4;\n              (*(code *)PTR___gmpz_swap_00097468)(param_1);\n            }\n            uVar5 = uVar5 - 1;\n            (*(code *)PTR___gmpz_clear_00097308)(puVar9);\n            puVar9 = puVar9 + -0xc;\n          } while (uVar5 != 0xffffffff);\n        }\n        else {\n          (*(code *)PTR___gmpz_set_000974b8)(param_1);\n          puVar7 = (uint *)0x0;\n        }\n        (*(code *)PTR___gmpz_clear_00097308)(auStack_1c4);\n        (*(code *)PTR___gmpz_clear_00097308)(&uStack_1b8);\n        param_3 = puVar6;\n      }\n    }" ({ "{") (if_statement "if ((uVar4 == 2) == uVar5) {\n        puVar7 = (uint *)(*(code *)PTR___gmpz_scan1_00097608)(param_2,0);\n        param_3 = puVar7;\n        (*(code *)PTR___gmpz_fdiv_q_2exp_00097438)(param_1);\n        if ((uVar8 >> 0x1f & (uint)puVar7) != 0) {\n          uVar5 = -param_1[1];\n          goto LAB_00032004;\n        }\n      }\n      else {\n        (*(code *)PTR___gmpz_init_00097130)(&uStack_1b8);\n        (*(code *)PTR___gmpz_init_00097130)(auStack_1c4);\n        puVar6 = param_2;\n        (*(code *)PTR___gmpz_tdiv_qr_000975d4)(auStack_1c4,&uStack_1b8,param_2,param_3);\n        if (local_1b4 == 0) {\n          (*(code *)PTR___gmpz_init_set_000975ec)(auStack_1ac,param_3);\n          (*(code *)PTR___gmpz_swap_00097468)(param_1,auStack_1c4);\n          if (local_1a8 < 0) {\n            local_1a8 = -local_1a8;\n          }\n          uVar5 = param_1[1];\n          if ((int)uVar5 < 0) {\n            uVar5 = -uVar5;\n          }\n          if ((int)uVar5 < local_1a8 * 2 + -1) {\n            puVar7 = (uint *)0x1;\n            uVar5 = 0;\n          }\n          else {\n            puVar9 = auStack_1a0;\n            uVar8 = 1;\n            do {\n              uVar5 = uVar8;\n              (*(code *)PTR___gmpz_init_00097130)(puVar9);\n              (*(code *)PTR___gmpz_mul_00097498)(puVar9,puVar9 + -0xc);\n              (*(code *)PTR___gmpz_tdiv_qr_000975d4)(auStack_1c4,&uStack_1b8,param_1,puVar9);\n              if (local_1b4 != 0) {\n                (*(code *)PTR___gmpz_clear_00097308)(puVar9);\n                puVar7 = (uint *)((1 << (uVar5 & 0x1f)) + -1);\n                uVar5 = uVar5 - 1;\n                goto LAB_000321c4;\n              }\n              (*(code *)PTR___gmpz_swap_00097468)(param_1,auStack_1c4);\n              uVar10 = param_1[1];\n              if ((int)uVar10 < 0) {\n                uVar10 = -uVar10;\n              }\n              iVar3 = *(int *)(puVar9 + 4);\n              if (iVar3 < 0) {\n                iVar3 = -iVar3;\n              }\n              puVar9 = puVar9 + 0xc;\n              uVar8 = uVar5 + 1;\n            } while (iVar3 * 2 + -1 <= (int)uVar10);\n            puVar7 = (uint *)((1 << (uVar5 + 1 & 0x1f)) + -1);\n          }\nLAB_000321c4:\n          puVar9 = auStack_1ac + uVar5 * 0xc;\n          do {\n            param_2 = &uStack_1b8;\n            puVar6 = param_1;\n            (*(code *)PTR___gmpz_tdiv_qr_000975d4)(auStack_1c4,&uStack_1b8,param_1,puVar9);\n            if (local_1b4 == 0) {\n              puVar7 = (uint *)((int)puVar7 + (1 << (uVar5 & 0x1f)));\n              param_2 = auStack_1c4;\n              (*(code *)PTR___gmpz_swap_00097468)(param_1);\n            }\n            uVar5 = uVar5 - 1;\n            (*(code *)PTR___gmpz_clear_00097308)(puVar9);\n            puVar9 = puVar9 + -0xc;\n          } while (uVar5 != 0xffffffff);\n        }\n        else {\n          (*(code *)PTR___gmpz_set_000974b8)(param_1);\n          puVar7 = (uint *)0x0;\n        }\n        (*(code *)PTR___gmpz_clear_00097308)(auStack_1c4);\n        (*(code *)PTR___gmpz_clear_00097308)(&uStack_1b8);\n        param_3 = puVar6;\n      }" (if "if") (parenthesized_expression "((uVar4 == 2) == uVar5)" (( "(") (binary_expression "(uVar4 == 2) == uVar5" (parenthesized_expression "(uVar4 == 2)" (( "(") (binary_expression "uVar4 == 2" (identifier "uVar4") (== "==") (number_literal "2")) () ")")) (== "==") (identifier "uVar5")) () ")")) (compound_statement "{\n        puVar7 = (uint *)(*(code *)PTR___gmpz_scan1_00097608)(param_2,0);\n        param_3 = puVar7;\n        (*(code *)PTR___gmpz_fdiv_q_2exp_00097438)(param_1);\n        if ((uVar8 >> 0x1f & (uint)puVar7) != 0) {\n          uVar5 = -param_1[1];\n          goto LAB_00032004;\n        }\n      }" ({ "{") (expression_statement "puVar7 = (uint *)(*(code *)PTR___gmpz_scan1_00097608)(param_2,0);" (assignment_expression "puVar7 = (uint *)(*(code *)PTR___gmpz_scan1_00097608)(param_2,0)" (identifier "puVar7") (= "=") (cast_expression "(uint *)(*(code *)PTR___gmpz_scan1_00097608)(param_2,0)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "(*(code *)PTR___gmpz_scan1_00097608)(param_2,0)" (parenthesized_expression "(*(code *)PTR___gmpz_scan1_00097608)" (( "(") (pointer_expression "*(code *)PTR___gmpz_scan1_00097608" (* "*") (cast_expression "(code *)PTR___gmpz_scan1_00097608" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___gmpz_scan1_00097608"))) () ")")) (argument_list "(param_2,0)" (( "(") (identifier "param_2") (, ",") (number_literal "0") () ")"))))) (; ";")) (expression_statement "param_3 = puVar7;" (assignment_expression "param_3 = puVar7" (identifier "param_3") (= "=") (identifier "puVar7")) (; ";")) (expression_statement "(*(code *)PTR___gmpz_fdiv_q_2exp_00097438)(param_1);" (call_expression "(*(code *)PTR___gmpz_fdiv_q_2exp_00097438)(param_1)" (parenthesized_expression "(*(code *)PTR___gmpz_fdiv_q_2exp_00097438)" (( "(") (pointer_expression "*(code *)PTR___gmpz_fdiv_q_2exp_00097438" (* "*") (cast_expression "(code *)PTR___gmpz_fdiv_q_2exp_00097438" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___gmpz_fdiv_q_2exp_00097438"))) () ")")) (argument_list "(param_1)" (( "(") (identifier "param_1") () ")"))) (; ";")) (if_statement "if ((uVar8 >> 0x1f & (uint)puVar7) != 0) {\n          uVar5 = -param_1[1];\n          goto LAB_00032004;\n        }" (if "if") (parenthesized_expression "((uVar8 >> 0x1f & (uint)puVar7) != 0)" (( "(") (binary_expression "(uVar8 >> 0x1f & (uint)puVar7) != 0" (parenthesized_expression "(uVar8 >> 0x1f & (uint)puVar7)" (( "(") (binary_expression "uVar8 >> 0x1f & (uint)puVar7" (binary_expression "uVar8 >> 0x1f" (identifier "uVar8") (>> ">>") (number_literal "0x1f")) (& "&") (cast_expression "(uint)puVar7" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "puVar7"))) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n          uVar5 = -param_1[1];\n          goto LAB_00032004;\n        }" ({ "{") (expression_statement "uVar5 = -param_1[1];" (assignment_expression "uVar5 = -param_1[1]" (identifier "uVar5") (= "=") (unary_expression "-param_1[1]" (- "-") (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]")))) (; ";")) (goto_statement "goto LAB_00032004;" (goto "goto") (statement_identifier "LAB_00032004") (; ";")) (} "}"))) (} "}")) (else_clause "else {\n        (*(code *)PTR___gmpz_init_00097130)(&uStack_1b8);\n        (*(code *)PTR___gmpz_init_00097130)(auStack_1c4);\n        puVar6 = param_2;\n        (*(code *)PTR___gmpz_tdiv_qr_000975d4)(auStack_1c4,&uStack_1b8,param_2,param_3);\n        if (local_1b4 == 0) {\n          (*(code *)PTR___gmpz_init_set_000975ec)(auStack_1ac,param_3);\n          (*(code *)PTR___gmpz_swap_00097468)(param_1,auStack_1c4);\n          if (local_1a8 < 0) {\n            local_1a8 = -local_1a8;\n          }\n          uVar5 = param_1[1];\n          if ((int)uVar5 < 0) {\n            uVar5 = -uVar5;\n          }\n          if ((int)uVar5 < local_1a8 * 2 + -1) {\n            puVar7 = (uint *)0x1;\n            uVar5 = 0;\n          }\n          else {\n            puVar9 = auStack_1a0;\n            uVar8 = 1;\n            do {\n              uVar5 = uVar8;\n              (*(code *)PTR___gmpz_init_00097130)(puVar9);\n              (*(code *)PTR___gmpz_mul_00097498)(puVar9,puVar9 + -0xc);\n              (*(code *)PTR___gmpz_tdiv_qr_000975d4)(auStack_1c4,&uStack_1b8,param_1,puVar9);\n              if (local_1b4 != 0) {\n                (*(code *)PTR___gmpz_clear_00097308)(puVar9);\n                puVar7 = (uint *)((1 << (uVar5 & 0x1f)) + -1);\n                uVar5 = uVar5 - 1;\n                goto LAB_000321c4;\n              }\n              (*(code *)PTR___gmpz_swap_00097468)(param_1,auStack_1c4);\n              uVar10 = param_1[1];\n              if ((int)uVar10 < 0) {\n                uVar10 = -uVar10;\n              }\n              iVar3 = *(int *)(puVar9 + 4);\n              if (iVar3 < 0) {\n                iVar3 = -iVar3;\n              }\n              puVar9 = puVar9 + 0xc;\n              uVar8 = uVar5 + 1;\n            } while (iVar3 * 2 + -1 <= (int)uVar10);\n            puVar7 = (uint *)((1 << (uVar5 + 1 & 0x1f)) + -1);\n          }\nLAB_000321c4:\n          puVar9 = auStack_1ac + uVar5 * 0xc;\n          do {\n            param_2 = &uStack_1b8;\n            puVar6 = param_1;\n            (*(code *)PTR___gmpz_tdiv_qr_000975d4)(auStack_1c4,&uStack_1b8,param_1,puVar9);\n            if (local_1b4 == 0) {\n              puVar7 = (uint *)((int)puVar7 + (1 << (uVar5 & 0x1f)));\n              param_2 = auStack_1c4;\n              (*(code *)PTR___gmpz_swap_00097468)(param_1);\n            }\n            uVar5 = uVar5 - 1;\n            (*(code *)PTR___gmpz_clear_00097308)(puVar9);\n            puVar9 = puVar9 + -0xc;\n          } while (uVar5 != 0xffffffff);\n        }\n        else {\n          (*(code *)PTR___gmpz_set_000974b8)(param_1);\n          puVar7 = (uint *)0x0;\n        }\n        (*(code *)PTR___gmpz_clear_00097308)(auStack_1c4);\n        (*(code *)PTR___gmpz_clear_00097308)(&uStack_1b8);\n        param_3 = puVar6;\n      }" (else "else") (compound_statement "{\n        (*(code *)PTR___gmpz_init_00097130)(&uStack_1b8);\n        (*(code *)PTR___gmpz_init_00097130)(auStack_1c4);\n        puVar6 = param_2;\n        (*(code *)PTR___gmpz_tdiv_qr_000975d4)(auStack_1c4,&uStack_1b8,param_2,param_3);\n        if (local_1b4 == 0) {\n          (*(code *)PTR___gmpz_init_set_000975ec)(auStack_1ac,param_3);\n          (*(code *)PTR___gmpz_swap_00097468)(param_1,auStack_1c4);\n          if (local_1a8 < 0) {\n            local_1a8 = -local_1a8;\n          }\n          uVar5 = param_1[1];\n          if ((int)uVar5 < 0) {\n            uVar5 = -uVar5;\n          }\n          if ((int)uVar5 < local_1a8 * 2 + -1) {\n            puVar7 = (uint *)0x1;\n            uVar5 = 0;\n          }\n          else {\n            puVar9 = auStack_1a0;\n            uVar8 = 1;\n            do {\n              uVar5 = uVar8;\n              (*(code *)PTR___gmpz_init_00097130)(puVar9);\n              (*(code *)PTR___gmpz_mul_00097498)(puVar9,puVar9 + -0xc);\n              (*(code *)PTR___gmpz_tdiv_qr_000975d4)(auStack_1c4,&uStack_1b8,param_1,puVar9);\n              if (local_1b4 != 0) {\n                (*(code *)PTR___gmpz_clear_00097308)(puVar9);\n                puVar7 = (uint *)((1 << (uVar5 & 0x1f)) + -1);\n                uVar5 = uVar5 - 1;\n                goto LAB_000321c4;\n              }\n              (*(code *)PTR___gmpz_swap_00097468)(param_1,auStack_1c4);\n              uVar10 = param_1[1];\n              if ((int)uVar10 < 0) {\n                uVar10 = -uVar10;\n              }\n              iVar3 = *(int *)(puVar9 + 4);\n              if (iVar3 < 0) {\n                iVar3 = -iVar3;\n              }\n              puVar9 = puVar9 + 0xc;\n              uVar8 = uVar5 + 1;\n            } while (iVar3 * 2 + -1 <= (int)uVar10);\n            puVar7 = (uint *)((1 << (uVar5 + 1 & 0x1f)) + -1);\n          }\nLAB_000321c4:\n          puVar9 = auStack_1ac + uVar5 * 0xc;\n          do {\n            param_2 = &uStack_1b8;\n            puVar6 = param_1;\n            (*(code *)PTR___gmpz_tdiv_qr_000975d4)(auStack_1c4,&uStack_1b8,param_1,puVar9);\n            if (local_1b4 == 0) {\n              puVar7 = (uint *)((int)puVar7 + (1 << (uVar5 & 0x1f)));\n              param_2 = auStack_1c4;\n              (*(code *)PTR___gmpz_swap_00097468)(param_1);\n            }\n            uVar5 = uVar5 - 1;\n            (*(code *)PTR___gmpz_clear_00097308)(puVar9);\n            puVar9 = puVar9 + -0xc;\n          } while (uVar5 != 0xffffffff);\n        }\n        else {\n          (*(code *)PTR___gmpz_set_000974b8)(param_1);\n          puVar7 = (uint *)0x0;\n        }\n        (*(code *)PTR___gmpz_clear_00097308)(auStack_1c4);\n        (*(code *)PTR___gmpz_clear_00097308)(&uStack_1b8);\n        param_3 = puVar6;\n      }" ({ "{") (expression_statement "(*(code *)PTR___gmpz_init_00097130)(&uStack_1b8);" (call_expression "(*(code *)PTR___gmpz_init_00097130)(&uStack_1b8)" (parenthesized_expression "(*(code *)PTR___gmpz_init_00097130)" (( "(") (pointer_expression "*(code *)PTR___gmpz_init_00097130" (* "*") (cast_expression "(code *)PTR___gmpz_init_00097130" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___gmpz_init_00097130"))) () ")")) (argument_list "(&uStack_1b8)" (( "(") (pointer_expression "&uStack_1b8" (& "&") (identifier "uStack_1b8")) () ")"))) (; ";")) (expression_statement "(*(code *)PTR___gmpz_init_00097130)(auStack_1c4);" (call_expression "(*(code *)PTR___gmpz_init_00097130)(auStack_1c4)" (parenthesized_expression "(*(code *)PTR___gmpz_init_00097130)" (( "(") (pointer_expression "*(code *)PTR___gmpz_init_00097130" (* "*") (cast_expression "(code *)PTR___gmpz_init_00097130" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___gmpz_init_00097130"))) () ")")) (argument_list "(auStack_1c4)" (( "(") (identifier "auStack_1c4") () ")"))) (; ";")) (expression_statement "puVar6 = param_2;" (assignment_expression "puVar6 = param_2" (identifier "puVar6") (= "=") (identifier "param_2")) (; ";")) (expression_statement "(*(code *)PTR___gmpz_tdiv_qr_000975d4)(auStack_1c4,&uStack_1b8,param_2,param_3);" (call_expression "(*(code *)PTR___gmpz_tdiv_qr_000975d4)(auStack_1c4,&uStack_1b8,param_2,param_3)" (parenthesized_expression "(*(code *)PTR___gmpz_tdiv_qr_000975d4)" (( "(") (pointer_expression "*(code *)PTR___gmpz_tdiv_qr_000975d4" (* "*") (cast_expression "(code *)PTR___gmpz_tdiv_qr_000975d4" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___gmpz_tdiv_qr_000975d4"))) () ")")) (argument_list "(auStack_1c4,&uStack_1b8,param_2,param_3)" (( "(") (identifier "auStack_1c4") (, ",") (pointer_expression "&uStack_1b8" (& "&") (identifier "uStack_1b8")) (, ",") (identifier "param_2") (, ",") (identifier "param_3") () ")"))) (; ";")) (if_statement "if (local_1b4 == 0) {\n          (*(code *)PTR___gmpz_init_set_000975ec)(auStack_1ac,param_3);\n          (*(code *)PTR___gmpz_swap_00097468)(param_1,auStack_1c4);\n          if (local_1a8 < 0) {\n            local_1a8 = -local_1a8;\n          }\n          uVar5 = param_1[1];\n          if ((int)uVar5 < 0) {\n            uVar5 = -uVar5;\n          }\n          if ((int)uVar5 < local_1a8 * 2 + -1) {\n            puVar7 = (uint *)0x1;\n            uVar5 = 0;\n          }\n          else {\n            puVar9 = auStack_1a0;\n            uVar8 = 1;\n            do {\n              uVar5 = uVar8;\n              (*(code *)PTR___gmpz_init_00097130)(puVar9);\n              (*(code *)PTR___gmpz_mul_00097498)(puVar9,puVar9 + -0xc);\n              (*(code *)PTR___gmpz_tdiv_qr_000975d4)(auStack_1c4,&uStack_1b8,param_1,puVar9);\n              if (local_1b4 != 0) {\n                (*(code *)PTR___gmpz_clear_00097308)(puVar9);\n                puVar7 = (uint *)((1 << (uVar5 & 0x1f)) + -1);\n                uVar5 = uVar5 - 1;\n                goto LAB_000321c4;\n              }\n              (*(code *)PTR___gmpz_swap_00097468)(param_1,auStack_1c4);\n              uVar10 = param_1[1];\n              if ((int)uVar10 < 0) {\n                uVar10 = -uVar10;\n              }\n              iVar3 = *(int *)(puVar9 + 4);\n              if (iVar3 < 0) {\n                iVar3 = -iVar3;\n              }\n              puVar9 = puVar9 + 0xc;\n              uVar8 = uVar5 + 1;\n            } while (iVar3 * 2 + -1 <= (int)uVar10);\n            puVar7 = (uint *)((1 << (uVar5 + 1 & 0x1f)) + -1);\n          }\nLAB_000321c4:\n          puVar9 = auStack_1ac + uVar5 * 0xc;\n          do {\n            param_2 = &uStack_1b8;\n            puVar6 = param_1;\n            (*(code *)PTR___gmpz_tdiv_qr_000975d4)(auStack_1c4,&uStack_1b8,param_1,puVar9);\n            if (local_1b4 == 0) {\n              puVar7 = (uint *)((int)puVar7 + (1 << (uVar5 & 0x1f)));\n              param_2 = auStack_1c4;\n              (*(code *)PTR___gmpz_swap_00097468)(param_1);\n            }\n            uVar5 = uVar5 - 1;\n            (*(code *)PTR___gmpz_clear_00097308)(puVar9);\n            puVar9 = puVar9 + -0xc;\n          } while (uVar5 != 0xffffffff);\n        }\n        else {\n          (*(code *)PTR___gmpz_set_000974b8)(param_1);\n          puVar7 = (uint *)0x0;\n        }" (if "if") (parenthesized_expression "(local_1b4 == 0)" (( "(") (binary_expression "local_1b4 == 0" (identifier "local_1b4") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n          (*(code *)PTR___gmpz_init_set_000975ec)(auStack_1ac,param_3);\n          (*(code *)PTR___gmpz_swap_00097468)(param_1,auStack_1c4);\n          if (local_1a8 < 0) {\n            local_1a8 = -local_1a8;\n          }\n          uVar5 = param_1[1];\n          if ((int)uVar5 < 0) {\n            uVar5 = -uVar5;\n          }\n          if ((int)uVar5 < local_1a8 * 2 + -1) {\n            puVar7 = (uint *)0x1;\n            uVar5 = 0;\n          }\n          else {\n            puVar9 = auStack_1a0;\n            uVar8 = 1;\n            do {\n              uVar5 = uVar8;\n              (*(code *)PTR___gmpz_init_00097130)(puVar9);\n              (*(code *)PTR___gmpz_mul_00097498)(puVar9,puVar9 + -0xc);\n              (*(code *)PTR___gmpz_tdiv_qr_000975d4)(auStack_1c4,&uStack_1b8,param_1,puVar9);\n              if (local_1b4 != 0) {\n                (*(code *)PTR___gmpz_clear_00097308)(puVar9);\n                puVar7 = (uint *)((1 << (uVar5 & 0x1f)) + -1);\n                uVar5 = uVar5 - 1;\n                goto LAB_000321c4;\n              }\n              (*(code *)PTR___gmpz_swap_00097468)(param_1,auStack_1c4);\n              uVar10 = param_1[1];\n              if ((int)uVar10 < 0) {\n                uVar10 = -uVar10;\n              }\n              iVar3 = *(int *)(puVar9 + 4);\n              if (iVar3 < 0) {\n                iVar3 = -iVar3;\n              }\n              puVar9 = puVar9 + 0xc;\n              uVar8 = uVar5 + 1;\n            } while (iVar3 * 2 + -1 <= (int)uVar10);\n            puVar7 = (uint *)((1 << (uVar5 + 1 & 0x1f)) + -1);\n          }\nLAB_000321c4:\n          puVar9 = auStack_1ac + uVar5 * 0xc;\n          do {\n            param_2 = &uStack_1b8;\n            puVar6 = param_1;\n            (*(code *)PTR___gmpz_tdiv_qr_000975d4)(auStack_1c4,&uStack_1b8,param_1,puVar9);\n            if (local_1b4 == 0) {\n              puVar7 = (uint *)((int)puVar7 + (1 << (uVar5 & 0x1f)));\n              param_2 = auStack_1c4;\n              (*(code *)PTR___gmpz_swap_00097468)(param_1);\n            }\n            uVar5 = uVar5 - 1;\n            (*(code *)PTR___gmpz_clear_00097308)(puVar9);\n            puVar9 = puVar9 + -0xc;\n          } while (uVar5 != 0xffffffff);\n        }" ({ "{") (expression_statement "(*(code *)PTR___gmpz_init_set_000975ec)(auStack_1ac,param_3);" (call_expression "(*(code *)PTR___gmpz_init_set_000975ec)(auStack_1ac,param_3)" (parenthesized_expression "(*(code *)PTR___gmpz_init_set_000975ec)" (( "(") (pointer_expression "*(code *)PTR___gmpz_init_set_000975ec" (* "*") (cast_expression "(code *)PTR___gmpz_init_set_000975ec" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___gmpz_init_set_000975ec"))) () ")")) (argument_list "(auStack_1ac,param_3)" (( "(") (identifier "auStack_1ac") (, ",") (identifier "param_3") () ")"))) (; ";")) (expression_statement "(*(code *)PTR___gmpz_swap_00097468)(param_1,auStack_1c4);" (call_expression "(*(code *)PTR___gmpz_swap_00097468)(param_1,auStack_1c4)" (parenthesized_expression "(*(code *)PTR___gmpz_swap_00097468)" (( "(") (pointer_expression "*(code *)PTR___gmpz_swap_00097468" (* "*") (cast_expression "(code *)PTR___gmpz_swap_00097468" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___gmpz_swap_00097468"))) () ")")) (argument_list "(param_1,auStack_1c4)" (( "(") (identifier "param_1") (, ",") (identifier "auStack_1c4") () ")"))) (; ";")) (if_statement "if (local_1a8 < 0) {\n            local_1a8 = -local_1a8;\n          }" (if "if") (parenthesized_expression "(local_1a8 < 0)" (( "(") (binary_expression "local_1a8 < 0" (identifier "local_1a8") (< "<") (number_literal "0")) () ")")) (compound_statement "{\n            local_1a8 = -local_1a8;\n          }" ({ "{") (expression_statement "local_1a8 = -local_1a8;" (assignment_expression "local_1a8 = -local_1a8" (identifier "local_1a8") (= "=") (unary_expression "-local_1a8" (- "-") (identifier "local_1a8"))) (; ";")) (} "}"))) (expression_statement "uVar5 = param_1[1];" (assignment_expression "uVar5 = param_1[1]" (identifier "uVar5") (= "=") (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]"))) (; ";")) (if_statement "if ((int)uVar5 < 0) {\n            uVar5 = -uVar5;\n          }" (if "if") (parenthesized_expression "((int)uVar5 < 0)" (( "(") (binary_expression "(int)uVar5 < 0" (cast_expression "(int)uVar5" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar5")) (< "<") (number_literal "0")) () ")")) (compound_statement "{\n            uVar5 = -uVar5;\n          }" ({ "{") (expression_statement "uVar5 = -uVar5;" (assignment_expression "uVar5 = -uVar5" (identifier "uVar5") (= "=") (unary_expression "-uVar5" (- "-") (identifier "uVar5"))) (; ";")) (} "}"))) (if_statement "if ((int)uVar5 < local_1a8 * 2 + -1) {\n            puVar7 = (uint *)0x1;\n            uVar5 = 0;\n          }\n          else {\n            puVar9 = auStack_1a0;\n            uVar8 = 1;\n            do {\n              uVar5 = uVar8;\n              (*(code *)PTR___gmpz_init_00097130)(puVar9);\n              (*(code *)PTR___gmpz_mul_00097498)(puVar9,puVar9 + -0xc);\n              (*(code *)PTR___gmpz_tdiv_qr_000975d4)(auStack_1c4,&uStack_1b8,param_1,puVar9);\n              if (local_1b4 != 0) {\n                (*(code *)PTR___gmpz_clear_00097308)(puVar9);\n                puVar7 = (uint *)((1 << (uVar5 & 0x1f)) + -1);\n                uVar5 = uVar5 - 1;\n                goto LAB_000321c4;\n              }\n              (*(code *)PTR___gmpz_swap_00097468)(param_1,auStack_1c4);\n              uVar10 = param_1[1];\n              if ((int)uVar10 < 0) {\n                uVar10 = -uVar10;\n              }\n              iVar3 = *(int *)(puVar9 + 4);\n              if (iVar3 < 0) {\n                iVar3 = -iVar3;\n              }\n              puVar9 = puVar9 + 0xc;\n              uVar8 = uVar5 + 1;\n            } while (iVar3 * 2 + -1 <= (int)uVar10);\n            puVar7 = (uint *)((1 << (uVar5 + 1 & 0x1f)) + -1);\n          }" (if "if") (parenthesized_expression "((int)uVar5 < local_1a8 * 2 + -1)" (( "(") (binary_expression "(int)uVar5 < local_1a8 * 2 + -1" (cast_expression "(int)uVar5" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar5")) (< "<") (binary_expression "local_1a8 * 2 + -1" (binary_expression "local_1a8 * 2" (identifier "local_1a8") (* "*") (number_literal "2")) (+ "+") (number_literal "-1"))) () ")")) (compound_statement "{\n            puVar7 = (uint *)0x1;\n            uVar5 = 0;\n          }" ({ "{") (expression_statement "puVar7 = (uint *)0x1;" (assignment_expression "puVar7 = (uint *)0x1" (identifier "puVar7") (= "=") (cast_expression "(uint *)0x1" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x1"))) (; ";")) (expression_statement "uVar5 = 0;" (assignment_expression "uVar5 = 0" (identifier "uVar5") (= "=") (number_literal "0")) (; ";")) (} "}")) (else_clause "else {\n            puVar9 = auStack_1a0;\n            uVar8 = 1;\n            do {\n              uVar5 = uVar8;\n              (*(code *)PTR___gmpz_init_00097130)(puVar9);\n              (*(code *)PTR___gmpz_mul_00097498)(puVar9,puVar9 + -0xc);\n              (*(code *)PTR___gmpz_tdiv_qr_000975d4)(auStack_1c4,&uStack_1b8,param_1,puVar9);\n              if (local_1b4 != 0) {\n                (*(code *)PTR___gmpz_clear_00097308)(puVar9);\n                puVar7 = (uint *)((1 << (uVar5 & 0x1f)) + -1);\n                uVar5 = uVar5 - 1;\n                goto LAB_000321c4;\n              }\n              (*(code *)PTR___gmpz_swap_00097468)(param_1,auStack_1c4);\n              uVar10 = param_1[1];\n              if ((int)uVar10 < 0) {\n                uVar10 = -uVar10;\n              }\n              iVar3 = *(int *)(puVar9 + 4);\n              if (iVar3 < 0) {\n                iVar3 = -iVar3;\n              }\n              puVar9 = puVar9 + 0xc;\n              uVar8 = uVar5 + 1;\n            } while (iVar3 * 2 + -1 <= (int)uVar10);\n            puVar7 = (uint *)((1 << (uVar5 + 1 & 0x1f)) + -1);\n          }" (else "else") (compound_statement "{\n            puVar9 = auStack_1a0;\n            uVar8 = 1;\n            do {\n              uVar5 = uVar8;\n              (*(code *)PTR___gmpz_init_00097130)(puVar9);\n              (*(code *)PTR___gmpz_mul_00097498)(puVar9,puVar9 + -0xc);\n              (*(code *)PTR___gmpz_tdiv_qr_000975d4)(auStack_1c4,&uStack_1b8,param_1,puVar9);\n              if (local_1b4 != 0) {\n                (*(code *)PTR___gmpz_clear_00097308)(puVar9);\n                puVar7 = (uint *)((1 << (uVar5 & 0x1f)) + -1);\n                uVar5 = uVar5 - 1;\n                goto LAB_000321c4;\n              }\n              (*(code *)PTR___gmpz_swap_00097468)(param_1,auStack_1c4);\n              uVar10 = param_1[1];\n              if ((int)uVar10 < 0) {\n                uVar10 = -uVar10;\n              }\n              iVar3 = *(int *)(puVar9 + 4);\n              if (iVar3 < 0) {\n                iVar3 = -iVar3;\n              }\n              puVar9 = puVar9 + 0xc;\n              uVar8 = uVar5 + 1;\n            } while (iVar3 * 2 + -1 <= (int)uVar10);\n            puVar7 = (uint *)((1 << (uVar5 + 1 & 0x1f)) + -1);\n          }" ({ "{") (expression_statement "puVar9 = auStack_1a0;" (assignment_expression "puVar9 = auStack_1a0" (identifier "puVar9") (= "=") (identifier "auStack_1a0")) (; ";")) (expression_statement "uVar8 = 1;" (assignment_expression "uVar8 = 1" (identifier "uVar8") (= "=") (number_literal "1")) (; ";")) (do_statement "do {\n              uVar5 = uVar8;\n              (*(code *)PTR___gmpz_init_00097130)(puVar9);\n              (*(code *)PTR___gmpz_mul_00097498)(puVar9,puVar9 + -0xc);\n              (*(code *)PTR___gmpz_tdiv_qr_000975d4)(auStack_1c4,&uStack_1b8,param_1,puVar9);\n              if (local_1b4 != 0) {\n                (*(code *)PTR___gmpz_clear_00097308)(puVar9);\n                puVar7 = (uint *)((1 << (uVar5 & 0x1f)) + -1);\n                uVar5 = uVar5 - 1;\n                goto LAB_000321c4;\n              }\n              (*(code *)PTR___gmpz_swap_00097468)(param_1,auStack_1c4);\n              uVar10 = param_1[1];\n              if ((int)uVar10 < 0) {\n                uVar10 = -uVar10;\n              }\n              iVar3 = *(int *)(puVar9 + 4);\n              if (iVar3 < 0) {\n                iVar3 = -iVar3;\n              }\n              puVar9 = puVar9 + 0xc;\n              uVar8 = uVar5 + 1;\n            } while (iVar3 * 2 + -1 <= (int)uVar10);" (do "do") (compound_statement "{\n              uVar5 = uVar8;\n              (*(code *)PTR___gmpz_init_00097130)(puVar9);\n              (*(code *)PTR___gmpz_mul_00097498)(puVar9,puVar9 + -0xc);\n              (*(code *)PTR___gmpz_tdiv_qr_000975d4)(auStack_1c4,&uStack_1b8,param_1,puVar9);\n              if (local_1b4 != 0) {\n                (*(code *)PTR___gmpz_clear_00097308)(puVar9);\n                puVar7 = (uint *)((1 << (uVar5 & 0x1f)) + -1);\n                uVar5 = uVar5 - 1;\n                goto LAB_000321c4;\n              }\n              (*(code *)PTR___gmpz_swap_00097468)(param_1,auStack_1c4);\n              uVar10 = param_1[1];\n              if ((int)uVar10 < 0) {\n                uVar10 = -uVar10;\n              }\n              iVar3 = *(int *)(puVar9 + 4);\n              if (iVar3 < 0) {\n                iVar3 = -iVar3;\n              }\n              puVar9 = puVar9 + 0xc;\n              uVar8 = uVar5 + 1;\n            }" ({ "{") (expression_statement "uVar5 = uVar8;" (assignment_expression "uVar5 = uVar8" (identifier "uVar5") (= "=") (identifier "uVar8")) (; ";")) (expression_statement "(*(code *)PTR___gmpz_init_00097130)(puVar9);" (call_expression "(*(code *)PTR___gmpz_init_00097130)(puVar9)" (parenthesized_expression "(*(code *)PTR___gmpz_init_00097130)" (( "(") (pointer_expression "*(code *)PTR___gmpz_init_00097130" (* "*") (cast_expression "(code *)PTR___gmpz_init_00097130" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___gmpz_init_00097130"))) () ")")) (argument_list "(puVar9)" (( "(") (identifier "puVar9") () ")"))) (; ";")) (expression_statement "(*(code *)PTR___gmpz_mul_00097498)(puVar9,puVar9 + -0xc);" (call_expression "(*(code *)PTR___gmpz_mul_00097498)(puVar9,puVar9 + -0xc)" (parenthesized_expression "(*(code *)PTR___gmpz_mul_00097498)" (( "(") (pointer_expression "*(code *)PTR___gmpz_mul_00097498" (* "*") (cast_expression "(code *)PTR___gmpz_mul_00097498" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___gmpz_mul_00097498"))) () ")")) (argument_list "(puVar9,puVar9 + -0xc)" (( "(") (identifier "puVar9") (, ",") (binary_expression "puVar9 + -0xc" (identifier "puVar9") (+ "+") (number_literal "-0xc")) () ")"))) (; ";")) (expression_statement "(*(code *)PTR___gmpz_tdiv_qr_000975d4)(auStack_1c4,&uStack_1b8,param_1,puVar9);" (call_expression "(*(code *)PTR___gmpz_tdiv_qr_000975d4)(auStack_1c4,&uStack_1b8,param_1,puVar9)" (parenthesized_expression "(*(code *)PTR___gmpz_tdiv_qr_000975d4)" (( "(") (pointer_expression "*(code *)PTR___gmpz_tdiv_qr_000975d4" (* "*") (cast_expression "(code *)PTR___gmpz_tdiv_qr_000975d4" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___gmpz_tdiv_qr_000975d4"))) () ")")) (argument_list "(auStack_1c4,&uStack_1b8,param_1,puVar9)" (( "(") (identifier "auStack_1c4") (, ",") (pointer_expression "&uStack_1b8" (& "&") (identifier "uStack_1b8")) (, ",") (identifier "param_1") (, ",") (identifier "puVar9") () ")"))) (; ";")) (if_statement "if (local_1b4 != 0) {\n                (*(code *)PTR___gmpz_clear_00097308)(puVar9);\n                puVar7 = (uint *)((1 << (uVar5 & 0x1f)) + -1);\n                uVar5 = uVar5 - 1;\n                goto LAB_000321c4;\n              }" (if "if") (parenthesized_expression "(local_1b4 != 0)" (( "(") (binary_expression "local_1b4 != 0" (identifier "local_1b4") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n                (*(code *)PTR___gmpz_clear_00097308)(puVar9);\n                puVar7 = (uint *)((1 << (uVar5 & 0x1f)) + -1);\n                uVar5 = uVar5 - 1;\n                goto LAB_000321c4;\n              }" ({ "{") (expression_statement "(*(code *)PTR___gmpz_clear_00097308)(puVar9);" (call_expression "(*(code *)PTR___gmpz_clear_00097308)(puVar9)" (parenthesized_expression "(*(code *)PTR___gmpz_clear_00097308)" (( "(") (pointer_expression "*(code *)PTR___gmpz_clear_00097308" (* "*") (cast_expression "(code *)PTR___gmpz_clear_00097308" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___gmpz_clear_00097308"))) () ")")) (argument_list "(puVar9)" (( "(") (identifier "puVar9") () ")"))) (; ";")) (expression_statement "puVar7 = (uint *)((1 << (uVar5 & 0x1f)) + -1);" (assignment_expression "puVar7 = (uint *)((1 << (uVar5 & 0x1f)) + -1)" (identifier "puVar7") (= "=") (cast_expression "(uint *)((1 << (uVar5 & 0x1f)) + -1)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((1 << (uVar5 & 0x1f)) + -1)" (( "(") (binary_expression "(1 << (uVar5 & 0x1f)) + -1" (parenthesized_expression "(1 << (uVar5 & 0x1f))" (( "(") (binary_expression "1 << (uVar5 & 0x1f)" (number_literal "1") (<< "<<") (parenthesized_expression "(uVar5 & 0x1f)" (( "(") (binary_expression "uVar5 & 0x1f" (identifier "uVar5") (& "&") (number_literal "0x1f")) () ")"))) () ")")) (+ "+") (number_literal "-1")) () ")")))) (; ";")) (expression_statement "uVar5 = uVar5 - 1;" (assignment_expression "uVar5 = uVar5 - 1" (identifier "uVar5") (= "=") (binary_expression "uVar5 - 1" (identifier "uVar5") (- "-") (number_literal "1"))) (; ";")) (goto_statement "goto LAB_000321c4;" (goto "goto") (statement_identifier "LAB_000321c4") (; ";")) (} "}"))) (expression_statement "(*(code *)PTR___gmpz_swap_00097468)(param_1,auStack_1c4);" (call_expression "(*(code *)PTR___gmpz_swap_00097468)(param_1,auStack_1c4)" (parenthesized_expression "(*(code *)PTR___gmpz_swap_00097468)" (( "(") (pointer_expression "*(code *)PTR___gmpz_swap_00097468" (* "*") (cast_expression "(code *)PTR___gmpz_swap_00097468" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___gmpz_swap_00097468"))) () ")")) (argument_list "(param_1,auStack_1c4)" (( "(") (identifier "param_1") (, ",") (identifier "auStack_1c4") () ")"))) (; ";")) (expression_statement "uVar10 = param_1[1];" (assignment_expression "uVar10 = param_1[1]" (identifier "uVar10") (= "=") (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]"))) (; ";")) (if_statement "if ((int)uVar10 < 0) {\n                uVar10 = -uVar10;\n              }" (if "if") (parenthesized_expression "((int)uVar10 < 0)" (( "(") (binary_expression "(int)uVar10 < 0" (cast_expression "(int)uVar10" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar10")) (< "<") (number_literal "0")) () ")")) (compound_statement "{\n                uVar10 = -uVar10;\n              }" ({ "{") (expression_statement "uVar10 = -uVar10;" (assignment_expression "uVar10 = -uVar10" (identifier "uVar10") (= "=") (unary_expression "-uVar10" (- "-") (identifier "uVar10"))) (; ";")) (} "}"))) (expression_statement "iVar3 = *(int *)(puVar9 + 4);" (assignment_expression "iVar3 = *(int *)(puVar9 + 4)" (identifier "iVar3") (= "=") (pointer_expression "*(int *)(puVar9 + 4)" (* "*") (cast_expression "(int *)(puVar9 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar9 + 4)" (( "(") (binary_expression "puVar9 + 4" (identifier "puVar9") (+ "+") (number_literal "4")) () ")"))))) (; ";")) (if_statement "if (iVar3 < 0) {\n                iVar3 = -iVar3;\n              }" (if "if") (parenthesized_expression "(iVar3 < 0)" (( "(") (binary_expression "iVar3 < 0" (identifier "iVar3") (< "<") (number_literal "0")) () ")")) (compound_statement "{\n                iVar3 = -iVar3;\n              }" ({ "{") (expression_statement "iVar3 = -iVar3;" (assignment_expression "iVar3 = -iVar3" (identifier "iVar3") (= "=") (unary_expression "-iVar3" (- "-") (identifier "iVar3"))) (; ";")) (} "}"))) (expression_statement "puVar9 = puVar9 + 0xc;" (assignment_expression "puVar9 = puVar9 + 0xc" (identifier "puVar9") (= "=") (binary_expression "puVar9 + 0xc" (identifier "puVar9") (+ "+") (number_literal "0xc"))) (; ";")) (expression_statement "uVar8 = uVar5 + 1;" (assignment_expression "uVar8 = uVar5 + 1" (identifier "uVar8") (= "=") (binary_expression "uVar5 + 1" (identifier "uVar5") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(iVar3 * 2 + -1 <= (int)uVar10)" (( "(") (binary_expression "iVar3 * 2 + -1 <= (int)uVar10" (binary_expression "iVar3 * 2 + -1" (binary_expression "iVar3 * 2" (identifier "iVar3") (* "*") (number_literal "2")) (+ "+") (number_literal "-1")) (<= "<=") (cast_expression "(int)uVar10" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar10"))) () ")")) (; ";")) (expression_statement "puVar7 = (uint *)((1 << (uVar5 + 1 & 0x1f)) + -1);" (assignment_expression "puVar7 = (uint *)((1 << (uVar5 + 1 & 0x1f)) + -1)" (identifier "puVar7") (= "=") (cast_expression "(uint *)((1 << (uVar5 + 1 & 0x1f)) + -1)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((1 << (uVar5 + 1 & 0x1f)) + -1)" (( "(") (binary_expression "(1 << (uVar5 + 1 & 0x1f)) + -1" (parenthesized_expression "(1 << (uVar5 + 1 & 0x1f))" (( "(") (binary_expression "1 << (uVar5 + 1 & 0x1f)" (number_literal "1") (<< "<<") (parenthesized_expression "(uVar5 + 1 & 0x1f)" (( "(") (binary_expression "uVar5 + 1 & 0x1f" (binary_expression "uVar5 + 1" (identifier "uVar5") (+ "+") (number_literal "1")) (& "&") (number_literal "0x1f")) () ")"))) () ")")) (+ "+") (number_literal "-1")) () ")")))) (; ";")) (} "}")))) (labeled_statement "LAB_000321c4:\n          puVar9 = auStack_1ac + uVar5 * 0xc;" (statement_identifier "LAB_000321c4") (: ":") (expression_statement "puVar9 = auStack_1ac + uVar5 * 0xc;" (assignment_expression "puVar9 = auStack_1ac + uVar5 * 0xc" (identifier "puVar9") (= "=") (binary_expression "auStack_1ac + uVar5 * 0xc" (identifier "auStack_1ac") (+ "+") (binary_expression "uVar5 * 0xc" (identifier "uVar5") (* "*") (number_literal "0xc")))) (; ";"))) (do_statement "do {\n            param_2 = &uStack_1b8;\n            puVar6 = param_1;\n            (*(code *)PTR___gmpz_tdiv_qr_000975d4)(auStack_1c4,&uStack_1b8,param_1,puVar9);\n            if (local_1b4 == 0) {\n              puVar7 = (uint *)((int)puVar7 + (1 << (uVar5 & 0x1f)));\n              param_2 = auStack_1c4;\n              (*(code *)PTR___gmpz_swap_00097468)(param_1);\n            }\n            uVar5 = uVar5 - 1;\n            (*(code *)PTR___gmpz_clear_00097308)(puVar9);\n            puVar9 = puVar9 + -0xc;\n          } while (uVar5 != 0xffffffff);" (do "do") (compound_statement "{\n            param_2 = &uStack_1b8;\n            puVar6 = param_1;\n            (*(code *)PTR___gmpz_tdiv_qr_000975d4)(auStack_1c4,&uStack_1b8,param_1,puVar9);\n            if (local_1b4 == 0) {\n              puVar7 = (uint *)((int)puVar7 + (1 << (uVar5 & 0x1f)));\n              param_2 = auStack_1c4;\n              (*(code *)PTR___gmpz_swap_00097468)(param_1);\n            }\n            uVar5 = uVar5 - 1;\n            (*(code *)PTR___gmpz_clear_00097308)(puVar9);\n            puVar9 = puVar9 + -0xc;\n          }" ({ "{") (expression_statement "param_2 = &uStack_1b8;" (assignment_expression "param_2 = &uStack_1b8" (identifier "param_2") (= "=") (pointer_expression "&uStack_1b8" (& "&") (identifier "uStack_1b8"))) (; ";")) (expression_statement "puVar6 = param_1;" (assignment_expression "puVar6 = param_1" (identifier "puVar6") (= "=") (identifier "param_1")) (; ";")) (expression_statement "(*(code *)PTR___gmpz_tdiv_qr_000975d4)(auStack_1c4,&uStack_1b8,param_1,puVar9);" (call_expression "(*(code *)PTR___gmpz_tdiv_qr_000975d4)(auStack_1c4,&uStack_1b8,param_1,puVar9)" (parenthesized_expression "(*(code *)PTR___gmpz_tdiv_qr_000975d4)" (( "(") (pointer_expression "*(code *)PTR___gmpz_tdiv_qr_000975d4" (* "*") (cast_expression "(code *)PTR___gmpz_tdiv_qr_000975d4" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___gmpz_tdiv_qr_000975d4"))) () ")")) (argument_list "(auStack_1c4,&uStack_1b8,param_1,puVar9)" (( "(") (identifier "auStack_1c4") (, ",") (pointer_expression "&uStack_1b8" (& "&") (identifier "uStack_1b8")) (, ",") (identifier "param_1") (, ",") (identifier "puVar9") () ")"))) (; ";")) (if_statement "if (local_1b4 == 0) {\n              puVar7 = (uint *)((int)puVar7 + (1 << (uVar5 & 0x1f)));\n              param_2 = auStack_1c4;\n              (*(code *)PTR___gmpz_swap_00097468)(param_1);\n            }" (if "if") (parenthesized_expression "(local_1b4 == 0)" (( "(") (binary_expression "local_1b4 == 0" (identifier "local_1b4") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n              puVar7 = (uint *)((int)puVar7 + (1 << (uVar5 & 0x1f)));\n              param_2 = auStack_1c4;\n              (*(code *)PTR___gmpz_swap_00097468)(param_1);\n            }" ({ "{") (expression_statement "puVar7 = (uint *)((int)puVar7 + (1 << (uVar5 & 0x1f)));" (assignment_expression "puVar7 = (uint *)((int)puVar7 + (1 << (uVar5 & 0x1f)))" (identifier "puVar7") (= "=") (cast_expression "(uint *)((int)puVar7 + (1 << (uVar5 & 0x1f)))" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar7 + (1 << (uVar5 & 0x1f)))" (( "(") (binary_expression "(int)puVar7 + (1 << (uVar5 & 0x1f))" (cast_expression "(int)puVar7" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar7")) (+ "+") (parenthesized_expression "(1 << (uVar5 & 0x1f))" (( "(") (binary_expression "1 << (uVar5 & 0x1f)" (number_literal "1") (<< "<<") (parenthesized_expression "(uVar5 & 0x1f)" (( "(") (binary_expression "uVar5 & 0x1f" (identifier "uVar5") (& "&") (number_literal "0x1f")) () ")"))) () ")"))) () ")")))) (; ";")) (expression_statement "param_2 = auStack_1c4;" (assignment_expression "param_2 = auStack_1c4" (identifier "param_2") (= "=") (identifier "auStack_1c4")) (; ";")) (expression_statement "(*(code *)PTR___gmpz_swap_00097468)(param_1);" (call_expression "(*(code *)PTR___gmpz_swap_00097468)(param_1)" (parenthesized_expression "(*(code *)PTR___gmpz_swap_00097468)" (( "(") (pointer_expression "*(code *)PTR___gmpz_swap_00097468" (* "*") (cast_expression "(code *)PTR___gmpz_swap_00097468" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___gmpz_swap_00097468"))) () ")")) (argument_list "(param_1)" (( "(") (identifier "param_1") () ")"))) (; ";")) (} "}"))) (expression_statement "uVar5 = uVar5 - 1;" (assignment_expression "uVar5 = uVar5 - 1" (identifier "uVar5") (= "=") (binary_expression "uVar5 - 1" (identifier "uVar5") (- "-") (number_literal "1"))) (; ";")) (expression_statement "(*(code *)PTR___gmpz_clear_00097308)(puVar9);" (call_expression "(*(code *)PTR___gmpz_clear_00097308)(puVar9)" (parenthesized_expression "(*(code *)PTR___gmpz_clear_00097308)" (( "(") (pointer_expression "*(code *)PTR___gmpz_clear_00097308" (* "*") (cast_expression "(code *)PTR___gmpz_clear_00097308" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___gmpz_clear_00097308"))) () ")")) (argument_list "(puVar9)" (( "(") (identifier "puVar9") () ")"))) (; ";")) (expression_statement "puVar9 = puVar9 + -0xc;" (assignment_expression "puVar9 = puVar9 + -0xc" (identifier "puVar9") (= "=") (binary_expression "puVar9 + -0xc" (identifier "puVar9") (+ "+") (number_literal "-0xc"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(uVar5 != 0xffffffff)" (( "(") (binary_expression "uVar5 != 0xffffffff" (identifier "uVar5") (!= "!=") (number_literal "0xffffffff")) () ")")) (; ";")) (} "}")) (else_clause "else {\n          (*(code *)PTR___gmpz_set_000974b8)(param_1);\n          puVar7 = (uint *)0x0;\n        }" (else "else") (compound_statement "{\n          (*(code *)PTR___gmpz_set_000974b8)(param_1);\n          puVar7 = (uint *)0x0;\n        }" ({ "{") (expression_statement "(*(code *)PTR___gmpz_set_000974b8)(param_1);" (call_expression "(*(code *)PTR___gmpz_set_000974b8)(param_1)" (parenthesized_expression "(*(code *)PTR___gmpz_set_000974b8)" (( "(") (pointer_expression "*(code *)PTR___gmpz_set_000974b8" (* "*") (cast_expression "(code *)PTR___gmpz_set_000974b8" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___gmpz_set_000974b8"))) () ")")) (argument_list "(param_1)" (( "(") (identifier "param_1") () ")"))) (; ";")) (expression_statement "puVar7 = (uint *)0x0;" (assignment_expression "puVar7 = (uint *)0x0" (identifier "puVar7") (= "=") (cast_expression "(uint *)0x0" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (} "}")))) (expression_statement "(*(code *)PTR___gmpz_clear_00097308)(auStack_1c4);" (call_expression "(*(code *)PTR___gmpz_clear_00097308)(auStack_1c4)" (parenthesized_expression "(*(code *)PTR___gmpz_clear_00097308)" (( "(") (pointer_expression "*(code *)PTR___gmpz_clear_00097308" (* "*") (cast_expression "(code *)PTR___gmpz_clear_00097308" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___gmpz_clear_00097308"))) () ")")) (argument_list "(auStack_1c4)" (( "(") (identifier "auStack_1c4") () ")"))) (; ";")) (expression_statement "(*(code *)PTR___gmpz_clear_00097308)(&uStack_1b8);" (call_expression "(*(code *)PTR___gmpz_clear_00097308)(&uStack_1b8)" (parenthesized_expression "(*(code *)PTR___gmpz_clear_00097308)" (( "(") (pointer_expression "*(code *)PTR___gmpz_clear_00097308" (* "*") (cast_expression "(code *)PTR___gmpz_clear_00097308" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___gmpz_clear_00097308"))) () ")")) (argument_list "(&uStack_1b8)" (( "(") (pointer_expression "&uStack_1b8" (& "&") (identifier "uStack_1b8")) () ")"))) (; ";")) (expression_statement "param_3 = puVar6;" (assignment_expression "param_3 = puVar6" (identifier "param_3") (= "=") (identifier "puVar6")) (; ";")) (} "}")))) (} "}")) (else_clause "else {\n      local_1c8 = uVar10;\n      if ((int)uVar10 < 0) {\n        local_1c8 = -uVar10;\n      }\n      if ((int)*param_1 < (int)local_1c8) {\n        uVar4 = (*(code *)PTR___gmpz_realloc_000975bc)(param_1,local_1c8);\n        puVar7 = (uint *)param_3[2];\n      }\n      else {\n        uVar4 = param_1[2];\n      }\n      param_3 = (uint *)param_2[2];\n      param_2 = &local_1c8;\n      puVar7 = (uint *)(*(code *)PTR___gmpn_remove_00097294)\n                                 (uVar4,param_2,param_3,local_1c8,puVar7,uVar5,0xffffffff);\n      uVar5 = local_1c8;\n      if ((uVar8 >> 0x1f & (uint)puVar7) != uVar10 >> 0x1f) {\n        uVar5 = -local_1c8;\n      }\nLAB_00032004:\n      param_1[1] = uVar5;\n    }" (else "else") (compound_statement "{\n      local_1c8 = uVar10;\n      if ((int)uVar10 < 0) {\n        local_1c8 = -uVar10;\n      }\n      if ((int)*param_1 < (int)local_1c8) {\n        uVar4 = (*(code *)PTR___gmpz_realloc_000975bc)(param_1,local_1c8);\n        puVar7 = (uint *)param_3[2];\n      }\n      else {\n        uVar4 = param_1[2];\n      }\n      param_3 = (uint *)param_2[2];\n      param_2 = &local_1c8;\n      puVar7 = (uint *)(*(code *)PTR___gmpn_remove_00097294)\n                                 (uVar4,param_2,param_3,local_1c8,puVar7,uVar5,0xffffffff);\n      uVar5 = local_1c8;\n      if ((uVar8 >> 0x1f & (uint)puVar7) != uVar10 >> 0x1f) {\n        uVar5 = -local_1c8;\n      }\nLAB_00032004:\n      param_1[1] = uVar5;\n    }" ({ "{") (expression_statement "local_1c8 = uVar10;" (assignment_expression "local_1c8 = uVar10" (identifier "local_1c8") (= "=") (identifier "uVar10")) (; ";")) (if_statement "if ((int)uVar10 < 0) {\n        local_1c8 = -uVar10;\n      }" (if "if") (parenthesized_expression "((int)uVar10 < 0)" (( "(") (binary_expression "(int)uVar10 < 0" (cast_expression "(int)uVar10" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar10")) (< "<") (number_literal "0")) () ")")) (compound_statement "{\n        local_1c8 = -uVar10;\n      }" ({ "{") (expression_statement "local_1c8 = -uVar10;" (assignment_expression "local_1c8 = -uVar10" (identifier "local_1c8") (= "=") (unary_expression "-uVar10" (- "-") (identifier "uVar10"))) (; ";")) (} "}"))) (if_statement "if ((int)*param_1 < (int)local_1c8) {\n        uVar4 = (*(code *)PTR___gmpz_realloc_000975bc)(param_1,local_1c8);\n        puVar7 = (uint *)param_3[2];\n      }\n      else {\n        uVar4 = param_1[2];\n      }" (if "if") (parenthesized_expression "((int)*param_1 < (int)local_1c8)" (( "(") (binary_expression "(int)*param_1 < (int)local_1c8" (cast_expression "(int)*param_1" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (pointer_expression "*param_1" (* "*") (identifier "param_1"))) (< "<") (cast_expression "(int)local_1c8" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_1c8"))) () ")")) (compound_statement "{\n        uVar4 = (*(code *)PTR___gmpz_realloc_000975bc)(param_1,local_1c8);\n        puVar7 = (uint *)param_3[2];\n      }" ({ "{") (expression_statement "uVar4 = (*(code *)PTR___gmpz_realloc_000975bc)(param_1,local_1c8);" (assignment_expression "uVar4 = (*(code *)PTR___gmpz_realloc_000975bc)(param_1,local_1c8)" (identifier "uVar4") (= "=") (call_expression "(*(code *)PTR___gmpz_realloc_000975bc)(param_1,local_1c8)" (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,local_1c8)" (( "(") (identifier "param_1") (, ",") (identifier "local_1c8") () ")")))) (; ";")) (expression_statement "puVar7 = (uint *)param_3[2];" (assignment_expression "puVar7 = (uint *)param_3[2]" (identifier "puVar7") (= "=") (cast_expression "(uint *)param_3[2]" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_3[2]" (identifier "param_3") ([ "[") (number_literal "2") (] "]")))) (; ";")) (} "}")) (else_clause "else {\n        uVar4 = param_1[2];\n      }" (else "else") (compound_statement "{\n        uVar4 = param_1[2];\n      }" ({ "{") (expression_statement "uVar4 = param_1[2];" (assignment_expression "uVar4 = param_1[2]" (identifier "uVar4") (= "=") (subscript_expression "param_1[2]" (identifier "param_1") ([ "[") (number_literal "2") (] "]"))) (; ";")) (} "}")))) (expression_statement "param_3 = (uint *)param_2[2];" (assignment_expression "param_3 = (uint *)param_2[2]" (identifier "param_3") (= "=") (cast_expression "(uint *)param_2[2]" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_2[2]" (identifier "param_2") ([ "[") (number_literal "2") (] "]")))) (; ";")) (expression_statement "param_2 = &local_1c8;" (assignment_expression "param_2 = &local_1c8" (identifier "param_2") (= "=") (pointer_expression "&local_1c8" (& "&") (identifier "local_1c8"))) (; ";")) (expression_statement "puVar7 = (uint *)(*(code *)PTR___gmpn_remove_00097294)\n                                 (uVar4,param_2,param_3,local_1c8,puVar7,uVar5,0xffffffff);" (assignment_expression "puVar7 = (uint *)(*(code *)PTR___gmpn_remove_00097294)\n                                 (uVar4,param_2,param_3,local_1c8,puVar7,uVar5,0xffffffff)" (identifier "puVar7") (= "=") (cast_expression "(uint *)(*(code *)PTR___gmpn_remove_00097294)\n                                 (uVar4,param_2,param_3,local_1c8,puVar7,uVar5,0xffffffff)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "(*(code *)PTR___gmpn_remove_00097294)\n                                 (uVar4,param_2,param_3,local_1c8,puVar7,uVar5,0xffffffff)" (parenthesized_expression "(*(code *)PTR___gmpn_remove_00097294)" (( "(") (pointer_expression "*(code *)PTR___gmpn_remove_00097294" (* "*") (cast_expression "(code *)PTR___gmpn_remove_00097294" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___gmpn_remove_00097294"))) () ")")) (argument_list "(uVar4,param_2,param_3,local_1c8,puVar7,uVar5,0xffffffff)" (( "(") (identifier "uVar4") (, ",") (identifier "param_2") (, ",") (identifier "param_3") (, ",") (identifier "local_1c8") (, ",") (identifier "puVar7") (, ",") (identifier "uVar5") (, ",") (number_literal "0xffffffff") () ")"))))) (; ";")) (expression_statement "uVar5 = local_1c8;" (assignment_expression "uVar5 = local_1c8" (identifier "uVar5") (= "=") (identifier "local_1c8")) (; ";")) (if_statement "if ((uVar8 >> 0x1f & (uint)puVar7) != uVar10 >> 0x1f) {\n        uVar5 = -local_1c8;\n      }" (if "if") (parenthesized_expression "((uVar8 >> 0x1f & (uint)puVar7) != uVar10 >> 0x1f)" (( "(") (binary_expression "(uVar8 >> 0x1f & (uint)puVar7) != uVar10 >> 0x1f" (parenthesized_expression "(uVar8 >> 0x1f & (uint)puVar7)" (( "(") (binary_expression "uVar8 >> 0x1f & (uint)puVar7" (binary_expression "uVar8 >> 0x1f" (identifier "uVar8") (>> ">>") (number_literal "0x1f")) (& "&") (cast_expression "(uint)puVar7" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "puVar7"))) () ")")) (!= "!=") (binary_expression "uVar10 >> 0x1f" (identifier "uVar10") (>> ">>") (number_literal "0x1f"))) () ")")) (compound_statement "{\n        uVar5 = -local_1c8;\n      }" ({ "{") (expression_statement "uVar5 = -local_1c8;" (assignment_expression "uVar5 = -local_1c8" (identifier "uVar5") (= "=") (unary_expression "-local_1c8" (- "-") (identifier "local_1c8"))) (; ";")) (} "}"))) (labeled_statement "LAB_00032004:\n      param_1[1] = uVar5;" (statement_identifier "LAB_00032004") (: ":") (expression_statement "param_1[1] = uVar5;" (assignment_expression "param_1[1] = uVar5" (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]")) (= "=") (identifier "uVar5")) (; ";"))) (} "}")))) (} "}")) (else_clause "else {\n    if (uVar8 == 0) goto LAB_0003232c;\n    puVar7 = (uint *)0x0;\n    (*(code *)PTR___gmpz_set_000974b8)(param_1);\n  }" (else "else") (compound_statement "{\n    if (uVar8 == 0) goto LAB_0003232c;\n    puVar7 = (uint *)0x0;\n    (*(code *)PTR___gmpz_set_000974b8)(param_1);\n  }" ({ "{") (if_statement "if (uVar8 == 0) goto LAB_0003232c;" (if "if") (parenthesized_expression "(uVar8 == 0)" (( "(") (binary_expression "uVar8 == 0" (identifier "uVar8") (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_0003232c;" (goto "goto") (statement_identifier "LAB_0003232c") (; ";"))) (expression_statement "puVar7 = (uint *)0x0;" (assignment_expression "puVar7 = (uint *)0x0" (identifier "puVar7") (= "=") (cast_expression "(uint *)0x0" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (expression_statement "(*(code *)PTR___gmpz_set_000974b8)(param_1);" (call_expression "(*(code *)PTR___gmpz_set_000974b8)(param_1)" (parenthesized_expression "(*(code *)PTR___gmpz_set_000974b8)" (( "(") (pointer_expression "*(code *)PTR___gmpz_set_000974b8" (* "*") (cast_expression "(code *)PTR___gmpz_set_000974b8" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___gmpz_set_000974b8"))) () ")")) (argument_list "(param_1)" (( "(") (identifier "param_1") () ")"))) (; ";")) (} "}")))) (if_statement "if (local_2c == *(uint **)puVar2) {\n    return puVar7;\n  }" (if "if") (parenthesized_expression "(local_2c == *(uint **)puVar2)" (( "(") (binary_expression "local_2c == *(uint **)puVar2" (identifier "local_2c") (== "==") (pointer_expression "*(uint **)puVar2" (* "*") (cast_expression "(uint **)puVar2" (( "(") (type_descriptor "uint **" (type_identifier "uint") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (identifier "puVar2")))) () ")")) (compound_statement "{\n    return puVar7;\n  }" ({ "{") (return_statement "return puVar7;" (return "return") (identifier "puVar7") (; ";")) (} "}"))) (expression_statement "param_1 = local_2c;" (assignment_expression "param_1 = local_2c" (identifier "param_1") (= "=") (identifier "local_2c")) (; ";")) (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 "()" (( "(") () ")"))) (; ";")) (labeled_statement "LAB_0003232c:\n  (*(code *)PTR___gmp_divide_by_zero_000975dc)();" (statement_identifier "LAB_0003232c") (: ":") (expression_statement "(*(code *)PTR___gmp_divide_by_zero_000975dc)();" (call_expression "(*(code *)PTR___gmp_divide_by_zero_000975dc)()" (parenthesized_expression "(*(code *)PTR___gmp_divide_by_zero_000975dc)" (( "(") (pointer_expression "*(code *)PTR___gmp_divide_by_zero_000975dc" (* "*") (cast_expression "(code *)PTR___gmp_divide_by_zero_000975dc" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___gmp_divide_by_zero_000975dc"))) () ")")) (argument_list "()" (( "(") () ")"))) (; ";"))) (expression_statement "puVar7 = param_3;" (assignment_expression "puVar7 = param_3" (identifier "puVar7") (= "=") (identifier "param_3")) (; ";")) (if_statement "if ((int)param_3 < 0) {\n    puVar7 = (uint *)-(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    puVar7 = (uint *)-(int)param_3;\n  }" ({ "{") (expression_statement "puVar7 = (uint *)-(int)param_3;" (assignment_expression "puVar7 = (uint *)-(int)param_3" (identifier "puVar7") (= "=") (cast_expression "(uint *)-(int)param_3" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (unary_expression "-(int)param_3" (- "-") (cast_expression "(int)param_3" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_3"))))) (; ";")) (} "}"))) (if_statement "if (param_3 == (uint *)0x0) {\n    *param_1 = 0;\n    puVar7 = (uint *)0x0;\n  }\n  else {\n    if (param_2[(int)puVar7 + -1] == 0) {\n      puVar6 = param_2 + (int)puVar7;\n      do {\n        puVar7 = (uint *)((int)puVar7 + -1);\n        if (puVar7 == (uint *)0x0) break;\n        puVar1 = puVar6 + -2;\n        puVar6 = puVar6 + -1;\n      } while (*puVar1 == 0);\n    }\n    *param_1 = 0;\n    if ((int)param_3 < 0) {\n      puVar7 = (uint *)-(int)puVar7;\n    }\n  }" (if "if") (parenthesized_expression "(param_3 == (uint *)0x0)" (( "(") (binary_expression "param_3 == (uint *)0x0" (identifier "param_3") (== "==") (cast_expression "(uint *)0x0" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n    *param_1 = 0;\n    puVar7 = (uint *)0x0;\n  }" ({ "{") (expression_statement "*param_1 = 0;" (assignment_expression "*param_1 = 0" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar7 = (uint *)0x0;" (assignment_expression "puVar7 = (uint *)0x0" (identifier "puVar7") (= "=") (cast_expression "(uint *)0x0" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (} "}")) (else_clause "else {\n    if (param_2[(int)puVar7 + -1] == 0) {\n      puVar6 = param_2 + (int)puVar7;\n      do {\n        puVar7 = (uint *)((int)puVar7 + -1);\n        if (puVar7 == (uint *)0x0) break;\n        puVar1 = puVar6 + -2;\n        puVar6 = puVar6 + -1;\n      } while (*puVar1 == 0);\n    }\n    *param_1 = 0;\n    if ((int)param_3 < 0) {\n      puVar7 = (uint *)-(int)puVar7;\n    }\n  }" (else "else") (compound_statement "{\n    if (param_2[(int)puVar7 + -1] == 0) {\n      puVar6 = param_2 + (int)puVar7;\n      do {\n        puVar7 = (uint *)((int)puVar7 + -1);\n        if (puVar7 == (uint *)0x0) break;\n        puVar1 = puVar6 + -2;\n        puVar6 = puVar6 + -1;\n      } while (*puVar1 == 0);\n    }\n    *param_1 = 0;\n    if ((int)param_3 < 0) {\n      puVar7 = (uint *)-(int)puVar7;\n    }\n  }" ({ "{") (if_statement "if (param_2[(int)puVar7 + -1] == 0) {\n      puVar6 = param_2 + (int)puVar7;\n      do {\n        puVar7 = (uint *)((int)puVar7 + -1);\n        if (puVar7 == (uint *)0x0) break;\n        puVar1 = puVar6 + -2;\n        puVar6 = puVar6 + -1;\n      } while (*puVar1 == 0);\n    }" (if "if") (parenthesized_expression "(param_2[(int)puVar7 + -1] == 0)" (( "(") (binary_expression "param_2[(int)puVar7 + -1] == 0" (subscript_expression "param_2[(int)puVar7 + -1]" (identifier "param_2") ([ "[") (binary_expression "(int)puVar7 + -1" (cast_expression "(int)puVar7" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar7")) (+ "+") (number_literal "-1")) (] "]")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      puVar6 = param_2 + (int)puVar7;\n      do {\n        puVar7 = (uint *)((int)puVar7 + -1);\n        if (puVar7 == (uint *)0x0) break;\n        puVar1 = puVar6 + -2;\n        puVar6 = puVar6 + -1;\n      } while (*puVar1 == 0);\n    }" ({ "{") (expression_statement "puVar6 = param_2 + (int)puVar7;" (assignment_expression "puVar6 = param_2 + (int)puVar7" (identifier "puVar6") (= "=") (binary_expression "param_2 + (int)puVar7" (identifier "param_2") (+ "+") (cast_expression "(int)puVar7" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar7")))) (; ";")) (do_statement "do {\n        puVar7 = (uint *)((int)puVar7 + -1);\n        if (puVar7 == (uint *)0x0) break;\n        puVar1 = puVar6 + -2;\n        puVar6 = puVar6 + -1;\n      } while (*puVar1 == 0);" (do "do") (compound_statement "{\n        puVar7 = (uint *)((int)puVar7 + -1);\n        if (puVar7 == (uint *)0x0) break;\n        puVar1 = puVar6 + -2;\n        puVar6 = puVar6 + -1;\n      }" ({ "{") (expression_statement "puVar7 = (uint *)((int)puVar7 + -1);" (assignment_expression "puVar7 = (uint *)((int)puVar7 + -1)" (identifier "puVar7") (= "=") (cast_expression "(uint *)((int)puVar7 + -1)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar7 + -1)" (( "(") (binary_expression "(int)puVar7 + -1" (cast_expression "(int)puVar7" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar7")) (+ "+") (number_literal "-1")) () ")")))) (; ";")) (if_statement "if (puVar7 == (uint *)0x0) break;" (if "if") (parenthesized_expression "(puVar7 == (uint *)0x0)" (( "(") (binary_expression "puVar7 == (uint *)0x0" (identifier "puVar7") (== "==") (cast_expression "(uint *)0x0" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "puVar1 = puVar6 + -2;" (assignment_expression "puVar1 = puVar6 + -2" (identifier "puVar1") (= "=") (binary_expression "puVar6 + -2" (identifier "puVar6") (+ "+") (number_literal "-2"))) (; ";")) (expression_statement "puVar6 = puVar6 + -1;" (assignment_expression "puVar6 = puVar6 + -1" (identifier "puVar6") (= "=") (binary_expression "puVar6 + -1" (identifier "puVar6") (+ "+") (number_literal "-1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(*puVar1 == 0)" (( "(") (binary_expression "*puVar1 == 0" (pointer_expression "*puVar1" (* "*") (identifier "puVar1")) (== "==") (number_literal "0")) () ")")) (; ";")) (} "}"))) (expression_statement "*param_1 = 0;" (assignment_expression "*param_1 = 0" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (= "=") (number_literal "0")) (; ";")) (if_statement "if ((int)param_3 < 0) {\n      puVar7 = (uint *)-(int)puVar7;\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      puVar7 = (uint *)-(int)puVar7;\n    }" ({ "{") (expression_statement "puVar7 = (uint *)-(int)puVar7;" (assignment_expression "puVar7 = (uint *)-(int)puVar7" (identifier "puVar7") (= "=") (cast_expression "(uint *)-(int)puVar7" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (unary_expression "-(int)puVar7" (- "-") (cast_expression "(int)puVar7" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar7"))))) (; ";")) (} "}"))) (} "}")))) (expression_statement "param_1[1] = (uint)puVar7;" (assignment_expression "param_1[1] = (uint)puVar7" (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]")) (= "=") (cast_expression "(uint)puVar7" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "puVar7"))) (; ";")) (expression_statement "param_1[2] = (uint)param_2;" (assignment_expression "param_1[2] = (uint)param_2" (subscript_expression "param_1[2]" (identifier "param_1") ([ "[") (number_literal "2") (] "]")) (= "=") (cast_expression "(uint)param_2" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "param_2"))) (; ";")) (return_statement "return param_1;" (return "return") (identifier "param_1") (; ";")) (} "}")))
(translation_unit (function_definition type: (type_identifier) declarator: (pointer_declarator declarator: (function_declarator declarator: (identifier) parameters: (parameter_list (parameter_declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (parameter_declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (parameter_declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier)))))) body: (compound_statement (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: (type_identifier) 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: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (array_declarator declarator: (identifier) size: (number_literal))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (array_declarator declarator: (identifier) size: (number_literal))) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (array_declarator declarator: (identifier) size: (number_literal))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (expression_statement (assignment_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: (subscript_expression argument: (identifier) index: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (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: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (unary_expression argument: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (number_literal) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (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)))) right: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (identifier))) consequence: (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 (identifier) (number_literal)))))) (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 (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)))) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (unary_expression argument: (subscript_expression argument: (identifier) index: (number_literal))))) (goto_statement label: (statement_identifier))))) alternative: (else_clause (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 (pointer_expression argument: (identifier))))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list (identifier)))) (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 (identifier) (pointer_expression argument: (identifier)) (identifier) (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 (identifier) (identifier)))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list (identifier) (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (unary_expression argument: (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (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: (unary_expression argument: (identifier)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (number_literal)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (number_literal)))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list (identifier)))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list (identifier) (binary_expression left: (identifier) right: (number_literal))))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list (identifier) (pointer_expression argument: (identifier)) (identifier) (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 (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: (parenthesized_expression (binary_expression left: (number_literal) right: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (goto_statement label: (statement_identifier)))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list (identifier) (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (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: (unary_expression argument: (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (unary_expression argument: (identifier)))))) (expression_statement (assignment_expression left: (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: (binary_expression left: (identifier) right: (number_literal)) right: (number_literal)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (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: (parenthesized_expression (binary_expression left: (number_literal) right: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (number_literal))))) right: (number_literal))))))))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (binary_expression left: (identifier) right: (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: (identifier))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list (identifier) (pointer_expression argument: (identifier)) (identifier) (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (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: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (parenthesized_expression (binary_expression left: (number_literal) right: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))))) (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 (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) alternative: (else_clause (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 (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal))))))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list (identifier)))) (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 (pointer_expression argument: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))))))) alternative: (else_clause (compound_statement (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: (unary_expression argument: (identifier)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (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))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (subscript_expression argument: (identifier) index: (number_literal)))))) 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: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (subscript_expression argument: (identifier) index: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (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: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list (identifier) (identifier) (identifier) (identifier) (identifier) (identifier) (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)))) right: (binary_expression left: (identifier) right: (number_literal)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (unary_expression argument: (identifier)))))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier)))))))) alternative: (else_clause (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list (identifier))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (identifier))))) consequence: (compound_statement (return_statement (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))) (labeled_statement label: (statement_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: (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: (type_identifier) declarator: (abstract_pointer_declarator)) value: (unary_expression argument: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))))))) (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: (pointer_expression argument: (identifier)) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal))))) alternative: (else_clause (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))) 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))))) (do_statement body: (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: (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: (break_statement)) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal)))))) (expression_statement (assignment_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: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (unary_expression argument: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier))))))))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)))) (return_statement (identifier)))))

uint * MASKED(uint *param_1,uint *param_2,uint *param_3)

{
  uint *puVar1;
  undefined *puVar2;
  int iVar3;
  uint uVar4;
  uint uVar5;
  uint *puVar6;
  uint *puVar7;
  uint uVar8;
  undefined1 *puVar9;
  uint uVar10;
  uint local_1c8;
  uint auStack_1c4 [3];
  uint uStack_1b8;
  int local_1b4;
  undefined1 auStack_1ac [4];
  int local_1a8;
  undefined1 auStack_1a0 [372];
  uint *local_2c;
  
  puVar2 = PTR___stack_chk_guard_00097540;
  puVar7 = (uint *)param_3[2];
  uVar8 = param_3[1];
  local_2c = *(uint **)PTR___stack_chk_guard_00097540;
  uVar10 = param_2[1];
  uVar5 = -uVar8;
  if (-1 < (int)uVar8) {
    uVar5 = uVar8;
  }
  uVar4 = *puVar7;
  if (((int)(uint)(uVar4 == 1) < (int)uVar5) && (uVar10 != 0)) {
    if ((uVar4 & 1) == 0) {
      if ((uVar4 == 2) == uVar5) {
        puVar7 = (uint *)(*(code *)PTR___gmpz_scan1_00097608)(param_2,0);
        param_3 = puVar7;
        (*(code *)PTR___gmpz_fdiv_q_2exp_00097438)(param_1);
        if ((uVar8 >> 0x1f & (uint)puVar7) != 0) {
          uVar5 = -param_1[1];
          goto LAB_00032004;
        }
      }
      else {
        (*(code *)PTR___gmpz_init_00097130)(&uStack_1b8);
        (*(code *)PTR___gmpz_init_00097130)(auStack_1c4);
        puVar6 = param_2;
        (*(code *)PTR___gmpz_tdiv_qr_000975d4)(auStack_1c4,&uStack_1b8,param_2,param_3);
        if (local_1b4 == 0) {
          (*(code *)PTR___gmpz_init_set_000975ec)(auStack_1ac,param_3);
          (*(code *)PTR___gmpz_swap_00097468)(param_1,auStack_1c4);
          if (local_1a8 < 0) {
            local_1a8 = -local_1a8;
          }
          uVar5 = param_1[1];
          if ((int)uVar5 < 0) {
            uVar5 = -uVar5;
          }
          if ((int)uVar5 < local_1a8 * 2 + -1) {
            puVar7 = (uint *)0x1;
            uVar5 = 0;
          }
          else {
            puVar9 = auStack_1a0;
            uVar8 = 1;
            do {
              uVar5 = uVar8;
              (*(code *)PTR___gmpz_init_00097130)(puVar9);
              (*(code *)PTR___gmpz_mul_00097498)(puVar9,puVar9 + -0xc);
              (*(code *)PTR___gmpz_tdiv_qr_000975d4)(auStack_1c4,&uStack_1b8,param_1,puVar9);
              if (local_1b4 != 0) {
                (*(code *)PTR___gmpz_clear_00097308)(puVar9);
                puVar7 = (uint *)((1 << (uVar5 & 0x1f)) + -1);
                uVar5 = uVar5 - 1;
                goto LAB_000321c4;
              }
              (*(code *)PTR___gmpz_swap_00097468)(param_1,auStack_1c4);
              uVar10 = param_1[1];
              if ((int)uVar10 < 0) {
                uVar10 = -uVar10;
              }
              iVar3 = *(int *)(puVar9 + 4);
              if (iVar3 < 0) {
                iVar3 = -iVar3;
              }
              puVar9 = puVar9 + 0xc;
              uVar8 = uVar5 + 1;
            } while (iVar3 * 2 + -1 <= (int)uVar10);
            puVar7 = (uint *)((1 << (uVar5 + 1 & 0x1f)) + -1);
          }
LAB_000321c4:
          puVar9 = auStack_1ac + uVar5 * 0xc;
          do {
            param_2 = &uStack_1b8;
            puVar6 = param_1;
            (*(code *)PTR___gmpz_tdiv_qr_000975d4)(auStack_1c4,&uStack_1b8,param_1,puVar9);
            if (local_1b4 == 0) {
              puVar7 = (uint *)((int)puVar7 + (1 << (uVar5 & 0x1f)));
              param_2 = auStack_1c4;
              (*(code *)PTR___gmpz_swap_00097468)(param_1);
            }
            uVar5 = uVar5 - 1;
            (*(code *)PTR___gmpz_clear_00097308)(puVar9);
            puVar9 = puVar9 + -0xc;
          } while (uVar5 != 0xffffffff);
        }
        else {
          (*(code *)PTR___gmpz_set_000974b8)(param_1);
          puVar7 = (uint *)0x0;
        }
        (*(code *)PTR___gmpz_clear_00097308)(auStack_1c4);
        (*(code *)PTR___gmpz_clear_00097308)(&uStack_1b8);
        param_3 = puVar6;
      }
    }
    else {
      local_1c8 = uVar10;
      if ((int)uVar10 < 0) {
        local_1c8 = -uVar10;
      }
      if ((int)*param_1 < (int)local_1c8) {
        uVar4 = (*(code *)PTR___gmpz_realloc_000975bc)(param_1,local_1c8);
        puVar7 = (uint *)param_3[2];
      }
      else {
        uVar4 = param_1[2];
      }
      param_3 = (uint *)param_2[2];
      param_2 = &local_1c8;
      puVar7 = (uint *)(*(code *)PTR___gmpn_remove_00097294)
                                 (uVar4,param_2,param_3,local_1c8,puVar7,uVar5,0xffffffff);
      uVar5 = local_1c8;
      if ((uVar8 >> 0x1f & (uint)puVar7) != uVar10 >> 0x1f) {
        uVar5 = -local_1c8;
      }
LAB_00032004:
      param_1[1] = uVar5;
    }
  }
  else {
    if (uVar8 == 0) goto LAB_0003232c;
    puVar7 = (uint *)0x0;
    (*(code *)PTR___gmpz_set_000974b8)(param_1);
  }
  if (local_2c == *(uint **)puVar2) {
    return puVar7;
  }
  param_1 = local_2c;
  (*(code *)PTR___stack_chk_fail_000974d0)();
LAB_0003232c:
  (*(code *)PTR___gmp_divide_by_zero_000975dc)();
  puVar7 = param_3;
  if ((int)param_3 < 0) {
    puVar7 = (uint *)-(int)param_3;
  }
  if (param_3 == (uint *)0x0) {
    *param_1 = 0;
    puVar7 = (uint *)0x0;
  }
  else {
    if (param_2[(int)puVar7 + -1] == 0) {
      puVar6 = param_2 + (int)puVar7;
      do {
        puVar7 = (uint *)((int)puVar7 + -1);
        if (puVar7 == (uint *)0x0) break;
        puVar1 = puVar6 + -2;
        puVar6 = puVar6 + -1;
      } while (*puVar1 == 0);
    }
    *param_1 = 0;
    if ((int)param_3 < 0) {
      puVar7 = (uint *)-(int)puVar7;
    }
  }
  param_1[1] = (uint)puVar7;
  param_1[2] = (uint)param_2;
  return param_1;
}

