
ulong __gmpz_fdiv_r_ui(mpz_ptr rem,mpz_srcptr dividend,ulong divisor)

{
  ulong uVar1;
  int iVar2;
  int iVar3;
  int *piVar4;
  int *piVar5;
  uint uVar6;
  mpz_ptr p_Var7;
  int *piVar8;
  undefined4 *puVar9;
  int iVar10;
  uint uVar11;
  int *piVar12;
  uint uVar13;
  ulong *puVar14;
  int iVar15;
  ulong *puVar16;
  int *piVar17;
  undefined1 *puVar18;
  undefined4 unaff_s5;
  undefined4 unaff_s6;
  undefined4 unaff_s7;
  int in_t9;
  code *pcVar19;
  undefined1 *puVar20;
  undefined1 *puVar21;
  code *pcVar22;
  undefined4 uVar23;
  undefined1 auStack_80 [16];
  code *apcStack_70 [3];
  ulong uStack_64;
  int *piStack_5c;
  __mpz_struct _Stack_58;
  ulong uStack_4c;
  
  if (divisor != 0) {
    iVar10 = dividend->_mp_size;
    if (iVar10 != 0) {
      if (iVar10 < 0) {
        uVar1 = (**(code **)(in_t9 + 0x6f8a0))(dividend->_mp_d,-iVar10,divisor);
      }
      else {
        uVar1 = (**(code **)(in_t9 + 0x6f8a0))(dividend->_mp_d,iVar10,divisor);
      }
      if (uVar1 != 0) {
        if (iVar10 < 0) {
          uVar1 = divisor - uVar1;
          *rem->_mp_d = uVar1;
          rem->_mp_size = 1;
        }
        else {
          *rem->_mp_d = uVar1;
          rem->_mp_size = 1;
        }
        return uVar1;
      }
    }
    rem->_mp_size = 0;
    return 0;
  }
  pcVar19 = *(code **)(in_t9 + 0x6f9bc);
  (*pcVar19)();
  apcStack_70[0] = pcVar19 + 0x77320;
  puVar20 = auStack_80;
  puVar16 = *(ulong **)(pcVar19 + 0x6f820);
  uVar11 = *(uint *)(divisor + 4);
  piStack_5c = (int *)0x0;
  uStack_4c = *puVar16;
  uVar13 = dividend->_mp_size;
  if ((int)uVar11 < 0) {
    _Stack_58._mp_alloc = -uVar11;
    uVar6 = uVar11 * -4;
    if (0x7f00 < uVar6) {
      pcVar19 = *(code **)(pcVar19 + 0x6f5d0);
      goto LAB_00027e2c;
    }
LAB_00027d94:
    iVar10 = -(uVar6 + 7 & 0xfffffff8);
    puVar20 = auStack_80 + iVar10;
    _Stack_58._mp_d = (mp_limb_t *)((int)apcStack_70 + iVar10);
  }
  else {
    uVar6 = uVar11 * 4;
    pcVar19 = *(code **)(pcVar19 + 0x6f5d0);
    _Stack_58._mp_alloc = uVar11;
    if (uVar6 < 0x7f01) goto LAB_00027d94;
LAB_00027e2c:
    uStack_64 = divisor;
    _Stack_58._mp_d = (mp_limb_t *)(*pcVar19)(&piStack_5c,uVar6);
    divisor = uStack_64;
  }
  p_Var7 = &_Stack_58;
  uVar11 = uVar13 ^ uVar11;
  (**(code **)(apcStack_70[0] + -0x7a6c))(rem,p_Var7,dividend,divisor);
  if (((int)uVar11 < 0) && (_Stack_58._mp_size != 0)) {
    p_Var7 = rem;
    (**(code **)(apcStack_70[0] + -0x7ac0))(rem,rem,1);
    piVar4 = piStack_5c;
    if (piStack_5c == (int *)0x0) goto LAB_00027dd8;
    pcVar19 = *(code **)(apcStack_70[0] + -0x7a2c);
  }
  else {
    pcVar19 = *(code **)(apcStack_70[0] + -0x7a2c);
    piVar4 = piStack_5c;
    if (piStack_5c == (int *)0x0) goto LAB_00027dd8;
  }
  piVar4 = piStack_5c;
  (*pcVar19)();
LAB_00027dd8:
  if (uStack_4c == *puVar16) {
    return *puVar16;
  }
  pcVar19 = *(code **)(apcStack_70[0] + -0x7b70);
  pcVar22 = __gmpz_fdiv_ui;
  (*pcVar19)();
  *(code **)(puVar20 + -0x18) = pcVar19 + 0x771b0;
  *(code **)(puVar20 + -4) = pcVar22;
  *(uint *)(puVar20 + -8) = uVar13;
  *(uint *)(puVar20 + -0xc) = uVar11;
  if (p_Var7 != (mpz_ptr)0x0) {
    iVar10 = piVar4[1];
    if (iVar10 == 0) {
      return 0;
    }
    if (iVar10 < 0) {
      uVar1 = (**(code **)(pcVar19 + 0x6f630))(piVar4[2],-iVar10,p_Var7);
    }
    else {
      uVar1 = (**(code **)(pcVar19 + 0x6f630))(piVar4[2],iVar10,p_Var7);
    }
    if ((uVar1 != 0) && (iVar10 < 0)) {
      return (int)p_Var7 - uVar1;
    }
    return uVar1;
  }
  pcVar19 = *(code **)(pcVar19 + 0x6f74c);
  uVar23 = 0x27f54;
  (*pcVar19)();
  pcVar22 = pcVar19 + 0x770e0;
  puVar21 = puVar20 + -0x80;
  *(uint *)(puVar20 + -0x4c) = uVar13;
  *(undefined4 *)(puVar20 + -0x38) = unaff_s6;
  puVar14 = *(ulong **)(pcVar19 + 0x6f5e0);
  *(undefined1 **)(puVar20 + -0x30) = auStack_80;
  *(undefined4 *)(puVar20 + -0x3c) = unaff_s5;
  *(undefined4 *)(puVar20 + -0x2c) = uVar23;
  *(undefined4 *)(puVar20 + -0x34) = unaff_s7;
  *(mpz_srcptr *)(puVar20 + -0x40) = dividend;
  *(ulong **)(puVar20 + -0x44) = puVar16;
  *(mpz_ptr *)(puVar20 + -0x48) = rem;
  *(uint *)(puVar20 + -0x50) = uVar11;
  *(code **)(puVar20 + -0x68) = pcVar22;
  *(ulong *)(puVar20 + -0x54) = *puVar14;
  if (p_Var7 < (mpz_ptr)0x30) {
    *(undefined4 *)piVar4[2] =
         *(undefined4 *)(*(int *)(pcVar19 + 0x6f5ec) + (int)((int)&p_Var7->_mp_alloc + 1) * 4);
    piVar4[1] = (uint)(p_Var7 != (mpz_ptr)0x0);
    uVar1 = FUN_000280d0();
    return uVar1;
  }
  iVar10 = (((uint)p_Var7 >> 6) * 0x17 >> 5) + 5;
  uVar11 = (uint)p_Var7 >> 1;
  if (*piVar4 < iVar10 * 2) {
    pcVar19 = *(code **)(pcVar19 + 0x6f65c);
    *(uint *)(puVar20 + -0x5c) = uVar11;
    piVar17 = (int *)(*pcVar19)();
    pcVar22 = *(code **)(puVar20 + -0x68);
    uVar11 = *(uint *)(puVar20 + -0x5c);
  }
  else {
    piVar17 = (int *)piVar4[2];
  }
  *(undefined4 *)(puVar20 + -0x58) = 0;
  if ((uint)(iVar10 * 8) < 0x7f01) {
    puVar21 = puVar20 + iVar10 * -8 + -0x80;
    puVar18 = puVar20 + iVar10 * -8 + -0x68;
  }
  else {
    pcVar19 = *(code **)(pcVar22 + -0x7d50);
    *(uint *)(puVar20 + -0x5c) = uVar11;
    puVar18 = (undefined1 *)(*pcVar19)(puVar20 + -0x58);
    pcVar22 = *(code **)(puVar20 + -0x68);
    uVar11 = *(uint *)(puVar20 + -0x5c);
  }
  piVar12 = (int *)(puVar18 + iVar10 * 4);
  iVar10 = (**(code **)(pcVar22 + -0x7e94))(puVar18,piVar12,uVar11);
  if (((uint)p_Var7 & 1) == 0) {
    iVar2 = (**(code **)(*(int *)(puVar20 + -0x68) + -0x7ad4))(piVar12,piVar12);
    iVar3 = (**(code **)(*(int *)(puVar20 + -0x68) + -0x7d0c))(piVar12,piVar12,puVar18,iVar10);
    uVar11 = (uint)(iVar2 + iVar3 != 0) + iVar10;
    pcVar19 = *(code **)(*(int *)(puVar20 + -0x68) + -0x7d8c);
    piVar12[iVar10] = iVar2 + iVar3;
    *(int *)(puVar21 + 0x10) = iVar10;
    iVar10 = iVar10 + uVar11;
    piVar8 = piVar12;
    iVar2 = (*pcVar19)(piVar17,piVar12,uVar11,puVar18);
    iVar3 = *(int *)(puVar20 + -0x68);
  }
  else {
    uVar23 = (**(code **)(*(int *)(puVar20 + -0x68) + -0x7ad4))(piVar17,puVar18,iVar10,1);
    *(undefined4 *)(puVar20 + -0x5c) = uVar23;
    iVar2 = (**(code **)(*(int *)(puVar20 + -0x68) + -0x7d0c))(puVar18,piVar17,piVar12,iVar10);
    iVar3 = *(int *)(puVar20 + -0x5c);
    pcVar19 = *(code **)(*(int *)(puVar20 + -0x68) + -0x7b2c);
    *(int *)(puVar18 + iVar10 * 4) = iVar2 + iVar3;
    *(uint *)(puVar20 + -0x60) = (uint)(iVar2 + iVar3 != 0) + iVar10;
    iVar2 = (*pcVar19)(piVar12,piVar17,piVar12,iVar10);
    iVar3 = *(int *)(puVar20 + -0x60);
    pcVar19 = *(code **)(*(int *)(puVar20 + -0x68) + -0x7d8c);
    iVar15 = iVar10 + (*(int *)(puVar20 + -0x5c) - iVar2);
    piVar12[iVar10] = *(int *)(puVar20 + -0x5c) - iVar2;
    *(int *)(puVar21 + 0x10) = iVar15;
    iVar10 = iVar3 + iVar15;
    iVar2 = (*pcVar19)(piVar17,puVar18,iVar3,piVar12);
    uVar11 = 0xfffffffe;
    piVar8 = (int *)0x2;
    iVar3 = *(int *)(puVar20 + -0x68);
    if (((uint)p_Var7 & 2) != 0) {
      piVar8 = (int *)&SUB_fffffffe;
    }
    *piVar17 = (int)((int)piVar8 + *piVar17);
  }
  piVar5 = *(int **)(puVar20 + -0x58);
  iVar10 = iVar10 - (uint)(iVar2 == 0);
  iVar2 = iVar10 - (uint)((piVar17 + iVar10)[-1] == 0);
  piVar4[1] = iVar2;
  if (piVar5 != (int *)0x0) {
    (**(code **)(iVar3 + -0x7a2c))();
    uVar1 = FUN_000280d0();
    return uVar1;
  }
  if (*(ulong *)(puVar20 + -0x54) == *puVar14) {
    return *puVar14;
  }
  pcVar19 = *(code **)(iVar3 + -0x7b70);
  uVar23 = 0x2825c;
  (*pcVar19)();
  pcVar22 = pcVar19 + 0x76de0;
  *(code **)(puVar21 + -0x28) = pcVar22;
  *(int *)(puVar21 + -0xc) = iVar2;
  *(undefined4 *)(puVar21 + -4) = uVar23;
  *(int **)(puVar21 + -8) = piVar17 + iVar10;
  *(ulong **)(puVar21 + -0x10) = puVar14;
  *(int **)(puVar21 + -0x14) = piVar12;
  if (0x2f < uVar11) {
    iVar10 = ((uVar11 >> 5) * 0x17 >> 5) + 4;
    if (*piVar5 < iVar10) {
      pcVar19 = *(code **)(pcVar19 + 0x6f35c);
      *(uint *)(puVar21 + -0x1c) = uVar11;
      iVar2 = (*pcVar19)();
      pcVar22 = *(code **)(puVar21 + -0x28);
      uVar11 = *(uint *)(puVar21 + -0x1c);
    }
    else {
      iVar2 = piVar5[2];
    }
    pcVar19 = *(code **)(pcVar22 + -0x7a84);
    if (*piVar8 < iVar10) {
      *(uint *)(puVar21 + -0x1c) = uVar11;
      iVar10 = (*pcVar19)(piVar8,iVar10);
      pcVar22 = *(code **)(puVar21 + -0x28);
    }
    else {
      iVar10 = piVar8[2];
    }
    iVar2 = (**(code **)(pcVar22 + -0x7e94))(iVar2,iVar10);
    piVar5[1] = iVar2;
    uVar1 = iVar2 - (uint)(*(int *)(iVar10 + iVar2 * 4 + -4) == 0);
    piVar8[1] = uVar1;
    return uVar1;
  }
  puVar9 = (undefined4 *)piVar8[2];
  uVar23 = *(undefined4 *)(*(int *)(pcVar19 + 0x6f2ec) + uVar11 * 4);
  uVar1 = *(ulong *)(*(int *)(pcVar19 + 0x6f2ec) + (uVar11 + 1) * 4);
  *(ulong *)piVar5[2] = uVar1;
  piVar5[1] = (uint)(uVar11 != 0);
  *puVar9 = uVar23;
  piVar8[1] = (uint)(uVar11 != 1);
  return uVar1;
}



int __gmpz_fdiv_r_ui(uint *param_1,uint param_2,int param_3)

{
  int iVar1;
  int iVar2;
  int *piVar3;
  int *piVar4;
  uint uVar5;
  uint *puVar6;
  int *piVar7;
  undefined4 *puVar8;
  int iVar9;
  uint uVar10;
  int *piVar11;
  uint uVar12;
  int *piVar13;
  int iVar14;
  int *piVar15;
  undefined1 *puVar16;
  undefined4 unaff_s5;
  undefined4 unaff_s6;
  undefined4 unaff_s7;
  undefined *puVar17;
  code *pcVar18;
  undefined1 *puVar19;
  undefined1 *puVar20;
  code *pcVar21;
  undefined4 uVar22;
  undefined1 auStack_80 [16];
  undefined *apuStack_70 [3];
  int iStack_64;
  int *piStack_5c;
  uint uStack_58;
  int iStack_54;
  int iStack_50;
  int iStack_4c;
  
  if (param_3 != 0) {
    iVar9 = *(int *)(param_2 + 4);
    if (iVar9 != 0) {
      if (iVar9 < 0) {
        iVar1 = (*(code *)PTR___gmpn_mod_1_000974c0)(*(undefined4 *)(param_2 + 8),-iVar9,param_3);
      }
      else {
        iVar1 = (*(code *)PTR___gmpn_mod_1_000974c0)(*(undefined4 *)(param_2 + 8),iVar9,param_3);
      }
      if (iVar1 != 0) {
        if (iVar9 < 0) {
          iVar1 = param_3 - iVar1;
          *(int *)param_1[2] = iVar1;
          param_1[1] = 1;
        }
        else {
          *(int *)param_1[2] = iVar1;
          param_1[1] = 1;
        }
        return iVar1;
      }
    }
    param_1[1] = 0;
    return 0;
  }
  puVar17 = PTR___gmp_divide_by_zero_000975dc;
  (*(code *)PTR___gmp_divide_by_zero_000975dc)();
  apuStack_70[0] = puVar17 + 0x77320;
  puVar19 = auStack_80;
  piVar15 = *(int **)(puVar17 + 0x6f820);
  uVar10 = *(uint *)(param_3 + 4);
  piStack_5c = (int *)0x0;
  iStack_4c = *piVar15;
  uVar12 = *(uint *)(param_2 + 4);
  if ((int)uVar10 < 0) {
    uStack_58 = -uVar10;
    uVar5 = uVar10 * -4;
    if (0x7f00 < uVar5) {
      pcVar18 = *(code **)(puVar17 + 0x6f5d0);
      goto LAB_00027e2c;
    }
LAB_00027d94:
    iStack_50 = -(uVar5 + 7 & 0xfffffff8);
    puVar19 = auStack_80 + iStack_50;
    iStack_50 = (int)apuStack_70 + iStack_50;
  }
  else {
    uVar5 = uVar10 * 4;
    pcVar18 = *(code **)(puVar17 + 0x6f5d0);
    uStack_58 = uVar10;
    if (uVar5 < 0x7f01) goto LAB_00027d94;
LAB_00027e2c:
    iStack_64 = param_3;
    iStack_50 = (*pcVar18)(&piStack_5c,uVar5);
    param_3 = iStack_64;
  }
  puVar6 = &uStack_58;
  piVar11 = (int *)(uVar12 ^ uVar10);
  uVar10 = param_2;
  (**(code **)(apuStack_70[0] + -0x7a6c))(param_1,puVar6,param_2,param_3);
  if (((int)piVar11 < 0) && (iStack_54 != 0)) {
    uVar10 = 1;
    puVar6 = param_1;
    (**(code **)(apuStack_70[0] + -0x7ac0))(param_1);
    piVar3 = piStack_5c;
    if (piStack_5c == (int *)0x0) goto LAB_00027dd8;
    pcVar18 = *(code **)(apuStack_70[0] + -0x7a2c);
  }
  else {
    pcVar18 = *(code **)(apuStack_70[0] + -0x7a2c);
    piVar3 = piStack_5c;
    if (piStack_5c == (int *)0x0) goto LAB_00027dd8;
  }
  piVar3 = piStack_5c;
  (*pcVar18)();
LAB_00027dd8:
  if (iStack_4c == *piVar15) {
    return *piVar15;
  }
  pcVar18 = *(code **)(apuStack_70[0] + -0x7b70);
  pcVar21 = __gmpz_fdiv_ui;
  (*pcVar18)();
  *(code **)(puVar19 + -0x18) = pcVar18 + 0x771b0;
  *(code **)(puVar19 + -4) = pcVar21;
  *(uint *)(puVar19 + -8) = uVar12;
  *(int **)(puVar19 + -0xc) = piVar11;
  if (puVar6 != (uint *)0x0) {
    iVar9 = piVar3[1];
    if (iVar9 == 0) {
      return 0;
    }
    if (iVar9 < 0) {
      iVar1 = (**(code **)(pcVar18 + 0x6f630))(piVar3[2],-iVar9,puVar6);
    }
    else {
      iVar1 = (**(code **)(pcVar18 + 0x6f630))(piVar3[2],iVar9,puVar6);
    }
    if (iVar1 != 0) {
      if (iVar9 < 0) {
        return (int)puVar6 - iVar1;
      }
    }
    return iVar1;
  }
  pcVar18 = *(code **)(pcVar18 + 0x6f74c);
  uVar22 = 0x27f54;
  (*pcVar18)();
  pcVar21 = pcVar18 + 0x770e0;
  puVar16 = puVar19 + -0x80;
  puVar20 = puVar19 + -0x80;
  *(uint *)(puVar19 + -0x4c) = uVar12;
  *(undefined4 *)(puVar19 + -0x38) = unaff_s6;
  piVar13 = *(int **)(pcVar18 + 0x6f5e0);
  *(undefined1 **)(puVar19 + -0x30) = auStack_80;
  *(undefined4 *)(puVar19 + -0x3c) = unaff_s5;
  *(undefined4 *)(puVar19 + -0x2c) = uVar22;
  *(undefined4 *)(puVar19 + -0x34) = unaff_s7;
  *(uint *)(puVar19 + -0x40) = param_2;
  *(int **)(puVar19 + -0x44) = piVar15;
  *(uint **)(puVar19 + -0x48) = param_1;
  *(int **)(puVar19 + -0x50) = piVar11;
  *(code **)(puVar19 + -0x68) = pcVar21;
  *(int *)(puVar19 + -0x54) = *piVar13;
  if (puVar6 < (uint *)0x30) {
    piVar7 = (int *)piVar3[2];
    piVar4 = (int *)(((int)puVar6 + 1U) * 4);
    *piVar7 = *(int *)(*(int *)(pcVar18 + 0x6f5ec) + (int)piVar4);
    piVar3[1] = (uint)(puVar6 != (uint *)0x0);
  }
  else {
    iVar9 = (((uint)puVar6 >> 6) * 0x17 >> 5) + 5;
    uVar10 = (uint)puVar6 >> 1;
    if (*piVar3 < iVar9 * 2) {
      pcVar18 = *(code **)(pcVar18 + 0x6f65c);
      *(uint *)(puVar19 + -0x5c) = uVar10;
      piVar15 = (int *)(*pcVar18)();
      pcVar21 = *(code **)(puVar19 + -0x68);
      uVar10 = *(uint *)(puVar19 + -0x5c);
    }
    else {
      piVar15 = (int *)piVar3[2];
    }
    *(undefined4 *)(puVar19 + -0x58) = 0;
    if ((uint)(iVar9 * 8) < 0x7f01) {
      puVar20 = puVar19 + iVar9 * -8 + -0x80;
      puVar16 = puVar19 + iVar9 * -8 + -0x68;
    }
    else {
      pcVar18 = *(code **)(pcVar21 + -0x7d50);
      *(uint *)(puVar19 + -0x5c) = uVar10;
      puVar16 = (undefined1 *)(*pcVar18)(puVar19 + -0x58);
      pcVar21 = *(code **)(puVar19 + -0x68);
      uVar10 = *(uint *)(puVar19 + -0x5c);
    }
    piVar11 = (int *)(puVar16 + iVar9 * 4);
    iVar9 = (**(code **)(pcVar21 + -0x7e94))(puVar16,piVar11,uVar10);
    if (((uint)puVar6 & 1) == 0) {
      iVar1 = (**(code **)(*(int *)(puVar19 + -0x68) + -0x7ad4))(piVar11,piVar11);
      iVar2 = (**(code **)(*(int *)(puVar19 + -0x68) + -0x7d0c))(piVar11,piVar11,puVar16,iVar9);
      uVar10 = (uint)(iVar1 + iVar2 != 0) + iVar9;
      pcVar18 = *(code **)(*(int *)(puVar19 + -0x68) + -0x7d8c);
      piVar11[iVar9] = iVar1 + iVar2;
      *(int *)(puVar20 + 0x10) = iVar9;
      iVar9 = iVar9 + uVar10;
      piVar7 = piVar11;
      iVar1 = (*pcVar18)(piVar15,piVar11,uVar10,puVar16);
      pcVar21 = *(code **)(puVar19 + -0x68);
    }
    else {
      uVar22 = (**(code **)(*(int *)(puVar19 + -0x68) + -0x7ad4))(piVar15,puVar16,iVar9,1);
      *(undefined4 *)(puVar19 + -0x5c) = uVar22;
      iVar1 = (**(code **)(*(int *)(puVar19 + -0x68) + -0x7d0c))(puVar16,piVar15,piVar11,iVar9);
      iVar2 = *(int *)(puVar19 + -0x5c);
      pcVar18 = *(code **)(*(int *)(puVar19 + -0x68) + -0x7b2c);
      *(int *)(puVar16 + iVar9 * 4) = iVar1 + iVar2;
      *(uint *)(puVar19 + -0x60) = (uint)(iVar1 + iVar2 != 0) + iVar9;
      iVar1 = (*pcVar18)(piVar11,piVar15,piVar11,iVar9);
      iVar2 = *(int *)(puVar19 + -0x60);
      pcVar18 = *(code **)(*(int *)(puVar19 + -0x68) + -0x7d8c);
      iVar14 = iVar9 + (*(int *)(puVar19 + -0x5c) - iVar1);
      piVar11[iVar9] = *(int *)(puVar19 + -0x5c) - iVar1;
      *(int *)(puVar20 + 0x10) = iVar14;
      iVar9 = iVar2 + iVar14;
      iVar1 = (*pcVar18)(piVar15,puVar16,iVar2,piVar11);
      uVar10 = 0xfffffffe;
      piVar7 = (int *)0x2;
      pcVar21 = *(code **)(puVar19 + -0x68);
      if (((uint)puVar6 & 2) != 0) {
        piVar7 = (int *)0xfffffffe;
      }
      *piVar15 = (int)piVar7 + *piVar15;
    }
    piVar4 = *(int **)(puVar19 + -0x58);
    iVar9 = iVar9 - (uint)(iVar1 == 0);
    piVar15 = piVar15 + iVar9;
    param_1 = (uint *)(iVar9 - (uint)(piVar15[-1] == 0));
    piVar3[1] = (int)param_1;
    puVar16 = puVar20;
    if (piVar4 != (int *)0x0) {
      (**(code **)(pcVar21 + -0x7a2c))();
      pcVar21 = *(code **)(puVar19 + -0x68);
    }
  }
  if (*(int *)(puVar19 + -0x54) == *piVar13) {
    return *piVar13;
  }
  pcVar18 = *(code **)(pcVar21 + -0x7b70);
  uVar22 = 0x2825c;
  (*pcVar18)();
  pcVar21 = pcVar18 + 0x76de0;
  *(code **)(puVar16 + -0x28) = pcVar21;
  *(uint **)(puVar16 + -0xc) = param_1;
  *(undefined4 *)(puVar16 + -4) = uVar22;
  *(int **)(puVar16 + -8) = piVar15;
  *(int **)(puVar16 + -0x10) = piVar13;
  *(int **)(puVar16 + -0x14) = piVar11;
  if (0x2f < uVar10) {
    iVar9 = ((uVar10 >> 5) * 0x17 >> 5) + 4;
    if (*piVar4 < iVar9) {
      pcVar18 = *(code **)(pcVar18 + 0x6f35c);
      *(uint *)(puVar16 + -0x1c) = uVar10;
      iVar1 = (*pcVar18)();
      pcVar21 = *(code **)(puVar16 + -0x28);
      uVar10 = *(uint *)(puVar16 + -0x1c);
    }
    else {
      iVar1 = piVar4[2];
    }
    pcVar18 = *(code **)(pcVar21 + -0x7a84);
    if (*piVar7 < iVar9) {
      *(uint *)(puVar16 + -0x1c) = uVar10;
      iVar9 = (*pcVar18)(piVar7,iVar9);
      pcVar21 = *(code **)(puVar16 + -0x28);
    }
    else {
      iVar9 = piVar7[2];
    }
    iVar1 = (**(code **)(pcVar21 + -0x7e94))(iVar1,iVar9);
    piVar4[1] = iVar1;
    iVar1 = iVar1 - (uint)(*(int *)(iVar9 + iVar1 * 4 + -4) == 0);
    piVar7[1] = iVar1;
    return iVar1;
  }
  puVar8 = (undefined4 *)piVar7[2];
  uVar22 = *(undefined4 *)(*(int *)(pcVar18 + 0x6f2ec) + uVar10 * 4);
  iVar9 = *(int *)(*(int *)(pcVar18 + 0x6f2ec) + (uVar10 + 1) * 4);
  *(int *)piVar4[2] = iVar9;
  piVar4[1] = (uint)(uVar10 != 0);
  *puVar8 = uVar22;
  piVar7[1] = (uint)(uVar10 != 1);
  return iVar9;
}


lui gp,0x7
addiu gp,gp,0x7420
addu gp,gp,t9
addiu sp,sp,-0x28
sw gp,0x10(sp)
sw ra,0x24(sp)
sw s2,0x20(sp)
sw s1,0x1c(sp)
beq a2,zero,0x00027d0c
_sw s0,0x18(sp)
lw s0,0x4(a1)
beq s0,zero,0x00027c7c
_or s2,a0,zero
or s1,a2,zero
bltz s0,0x00027ccc
_or v0,s0,zero
lw t9,-0x7b80(gp)
or a2,s1,zero
lw a0,0x8(a1)
jalr t9
_or a1,v0,zero
bne v0,zero,0x00027c9c
_nop
lw ra,0x24(sp)
or v0,zero,zero
lw s1,0x1c(sp)
lw s0,0x18(sp)
sw zero,0x4(s2)
lw s2,0x20(sp)
jr ra
_addiu sp,sp,0x28
bltz s0,0x00027cf4
_nop
lw v1,0x8(s2)
sw v0,0x0(v1)
li v1,0x1
sw v1,0x4(s2)
lw ra,0x24(sp)
lw s2,0x20(sp)
lw s1,0x1c(sp)
lw s0,0x18(sp)
jr ra
_addiu sp,sp,0x28
subu v0,zero,s0
lw t9,-0x7b80(gp)
lw a0,0x8(a1)
or a2,s1,zero
jalr t9
_or a1,v0,zero
beq v0,zero,0x00027c80
_lw ra,0x24(sp)
b 0x00027c9c
_nop
lw v1,0x8(s2)
subu v0,s1,v0
sw v0,0x0(v1)
li v1,0x1
b 0x00027cb4
_sw v1,0x4(s2)
lw t9,-0x7a64(gp)
jalr t9
_nop
nop
nop
(translation_unit "int __gmpz_fdiv_r_ui(uint *param_1,uint param_2,int param_3)\n\n{\n  int iVar1;\n  int iVar2;\n  int *piVar3;\n  int *piVar4;\n  uint uVar5;\n  uint *puVar6;\n  int *piVar7;\n  undefined4 *puVar8;\n  int iVar9;\n  uint uVar10;\n  int *piVar11;\n  uint uVar12;\n  int *piVar13;\n  int iVar14;\n  int *piVar15;\n  undefined1 *puVar16;\n  undefined4 unaff_s5;\n  undefined4 unaff_s6;\n  undefined4 unaff_s7;\n  undefined *puVar17;\n  code *pcVar18;\n  undefined1 *puVar19;\n  undefined1 *puVar20;\n  code *pcVar21;\n  undefined4 uVar22;\n  undefined1 auStack_80 [16];\n  undefined *apuStack_70 [3];\n  int iStack_64;\n  int *piStack_5c;\n  uint uStack_58;\n  int iStack_54;\n  int iStack_50;\n  int iStack_4c;\n  \n  if (param_3 != 0) {\n    iVar9 = *(int *)(param_2 + 4);\n    if (iVar9 != 0) {\n      if (iVar9 < 0) {\n        iVar1 = (*(code *)PTR___gmpn_mod_1_000974c0)(*(undefined4 *)(param_2 + 8),-iVar9,param_3);\n      }\n      else {\n        iVar1 = (*(code *)PTR___gmpn_mod_1_000974c0)(*(undefined4 *)(param_2 + 8),iVar9,param_3);\n      }\n      if (iVar1 != 0) {\n        if (iVar9 < 0) {\n          iVar1 = param_3 - iVar1;\n          *(int *)param_1[2] = iVar1;\n          param_1[1] = 1;\n        }\n        else {\n          *(int *)param_1[2] = iVar1;\n          param_1[1] = 1;\n        }\n        return iVar1;\n      }\n    }\n    param_1[1] = 0;\n    return 0;\n  }\n  puVar17 = PTR___gmp_divide_by_zero_000975dc;\n  (*(code *)PTR___gmp_divide_by_zero_000975dc)();\n  apuStack_70[0] = puVar17 + 0x77320;\n  puVar19 = auStack_80;\n  piVar15 = *(int **)(puVar17 + 0x6f820);\n  uVar10 = *(uint *)(param_3 + 4);\n  piStack_5c = (int *)0x0;\n  iStack_4c = *piVar15;\n  uVar12 = *(uint *)(param_2 + 4);\n  if ((int)uVar10 < 0) {\n    uStack_58 = -uVar10;\n    uVar5 = uVar10 * -4;\n    if (0x7f00 < uVar5) {\n      pcVar18 = *(code **)(puVar17 + 0x6f5d0);\n      goto LAB_00027e2c;\n    }\nLAB_00027d94:\n    iStack_50 = -(uVar5 + 7 & 0xfffffff8);\n    puVar19 = auStack_80 + iStack_50;\n    iStack_50 = (int)apuStack_70 + iStack_50;\n  }\n  else {\n    uVar5 = uVar10 * 4;\n    pcVar18 = *(code **)(puVar17 + 0x6f5d0);\n    uStack_58 = uVar10;\n    if (uVar5 < 0x7f01) goto LAB_00027d94;\nLAB_00027e2c:\n    iStack_64 = param_3;\n    iStack_50 = (*pcVar18)(&piStack_5c,uVar5);\n    param_3 = iStack_64;\n  }\n  puVar6 = &uStack_58;\n  piVar11 = (int *)(uVar12 ^ uVar10);\n  uVar10 = param_2;\n  (**(code **)(apuStack_70[0] + -0x7a6c))(param_1,puVar6,param_2,param_3);\n  if (((int)piVar11 < 0) && (iStack_54 != 0)) {\n    uVar10 = 1;\n    puVar6 = param_1;\n    (**(code **)(apuStack_70[0] + -0x7ac0))(param_1);\n    piVar3 = piStack_5c;\n    if (piStack_5c == (int *)0x0) goto LAB_00027dd8;\n    pcVar18 = *(code **)(apuStack_70[0] + -0x7a2c);\n  }\n  else {\n    pcVar18 = *(code **)(apuStack_70[0] + -0x7a2c);\n    piVar3 = piStack_5c;\n    if (piStack_5c == (int *)0x0) goto LAB_00027dd8;\n  }\n  piVar3 = piStack_5c;\n  (*pcVar18)();\nLAB_00027dd8:\n  if (iStack_4c == *piVar15) {\n    return *piVar15;\n  }\n  pcVar18 = *(code **)(apuStack_70[0] + -0x7b70);\n  pcVar21 = __gmpz_fdiv_ui;\n  (*pcVar18)();\n  *(code **)(puVar19 + -0x18) = pcVar18 + 0x771b0;\n  *(code **)(puVar19 + -4) = pcVar21;\n  *(uint *)(puVar19 + -8) = uVar12;\n  *(int **)(puVar19 + -0xc) = piVar11;\n  if (puVar6 != (uint *)0x0) {\n    iVar9 = piVar3[1];\n    if (iVar9 == 0) {\n      return 0;\n    }\n    if (iVar9 < 0) {\n      iVar1 = (**(code **)(pcVar18 + 0x6f630))(piVar3[2],-iVar9,puVar6);\n    }\n    else {\n      iVar1 = (**(code **)(pcVar18 + 0x6f630))(piVar3[2],iVar9,puVar6);\n    }\n    if (iVar1 != 0) {\n      if (iVar9 < 0) {\n        return (int)puVar6 - iVar1;\n      }\n    }\n    return iVar1;\n  }\n  pcVar18 = *(code **)(pcVar18 + 0x6f74c);\n  uVar22 = 0x27f54;\n  (*pcVar18)();\n  pcVar21 = pcVar18 + 0x770e0;\n  puVar16 = puVar19 + -0x80;\n  puVar20 = puVar19 + -0x80;\n  *(uint *)(puVar19 + -0x4c) = uVar12;\n  *(undefined4 *)(puVar19 + -0x38) = unaff_s6;\n  piVar13 = *(int **)(pcVar18 + 0x6f5e0);\n  *(undefined1 **)(puVar19 + -0x30) = auStack_80;\n  *(undefined4 *)(puVar19 + -0x3c) = unaff_s5;\n  *(undefined4 *)(puVar19 + -0x2c) = uVar22;\n  *(undefined4 *)(puVar19 + -0x34) = unaff_s7;\n  *(uint *)(puVar19 + -0x40) = param_2;\n  *(int **)(puVar19 + -0x44) = piVar15;\n  *(uint **)(puVar19 + -0x48) = param_1;\n  *(int **)(puVar19 + -0x50) = piVar11;\n  *(code **)(puVar19 + -0x68) = pcVar21;\n  *(int *)(puVar19 + -0x54) = *piVar13;\n  if (puVar6 < (uint *)0x30) {\n    piVar7 = (int *)piVar3[2];\n    piVar4 = (int *)(((int)puVar6 + 1U) * 4);\n    *piVar7 = *(int *)(*(int *)(pcVar18 + 0x6f5ec) + (int)piVar4);\n    piVar3[1] = (uint)(puVar6 != (uint *)0x0);\n  }\n  else {\n    iVar9 = (((uint)puVar6 >> 6) * 0x17 >> 5) + 5;\n    uVar10 = (uint)puVar6 >> 1;\n    if (*piVar3 < iVar9 * 2) {\n      pcVar18 = *(code **)(pcVar18 + 0x6f65c);\n      *(uint *)(puVar19 + -0x5c) = uVar10;\n      piVar15 = (int *)(*pcVar18)();\n      pcVar21 = *(code **)(puVar19 + -0x68);\n      uVar10 = *(uint *)(puVar19 + -0x5c);\n    }\n    else {\n      piVar15 = (int *)piVar3[2];\n    }\n    *(undefined4 *)(puVar19 + -0x58) = 0;\n    if ((uint)(iVar9 * 8) < 0x7f01) {\n      puVar20 = puVar19 + iVar9 * -8 + -0x80;\n      puVar16 = puVar19 + iVar9 * -8 + -0x68;\n    }\n    else {\n      pcVar18 = *(code **)(pcVar21 + -0x7d50);\n      *(uint *)(puVar19 + -0x5c) = uVar10;\n      puVar16 = (undefined1 *)(*pcVar18)(puVar19 + -0x58);\n      pcVar21 = *(code **)(puVar19 + -0x68);\n      uVar10 = *(uint *)(puVar19 + -0x5c);\n    }\n    piVar11 = (int *)(puVar16 + iVar9 * 4);\n    iVar9 = (**(code **)(pcVar21 + -0x7e94))(puVar16,piVar11,uVar10);\n    if (((uint)puVar6 & 1) == 0) {\n      iVar1 = (**(code **)(*(int *)(puVar19 + -0x68) + -0x7ad4))(piVar11,piVar11);\n      iVar2 = (**(code **)(*(int *)(puVar19 + -0x68) + -0x7d0c))(piVar11,piVar11,puVar16,iVar9);\n      uVar10 = (uint)(iVar1 + iVar2 != 0) + iVar9;\n      pcVar18 = *(code **)(*(int *)(puVar19 + -0x68) + -0x7d8c);\n      piVar11[iVar9] = iVar1 + iVar2;\n      *(int *)(puVar20 + 0x10) = iVar9;\n      iVar9 = iVar9 + uVar10;\n      piVar7 = piVar11;\n      iVar1 = (*pcVar18)(piVar15,piVar11,uVar10,puVar16);\n      pcVar21 = *(code **)(puVar19 + -0x68);\n    }\n    else {\n      uVar22 = (**(code **)(*(int *)(puVar19 + -0x68) + -0x7ad4))(piVar15,puVar16,iVar9,1);\n      *(undefined4 *)(puVar19 + -0x5c) = uVar22;\n      iVar1 = (**(code **)(*(int *)(puVar19 + -0x68) + -0x7d0c))(puVar16,piVar15,piVar11,iVar9);\n      iVar2 = *(int *)(puVar19 + -0x5c);\n      pcVar18 = *(code **)(*(int *)(puVar19 + -0x68) + -0x7b2c);\n      *(int *)(puVar16 + iVar9 * 4) = iVar1 + iVar2;\n      *(uint *)(puVar19 + -0x60) = (uint)(iVar1 + iVar2 != 0) + iVar9;\n      iVar1 = (*pcVar18)(piVar11,piVar15,piVar11,iVar9);\n      iVar2 = *(int *)(puVar19 + -0x60);\n      pcVar18 = *(code **)(*(int *)(puVar19 + -0x68) + -0x7d8c);\n      iVar14 = iVar9 + (*(int *)(puVar19 + -0x5c) - iVar1);\n      piVar11[iVar9] = *(int *)(puVar19 + -0x5c) - iVar1;\n      *(int *)(puVar20 + 0x10) = iVar14;\n      iVar9 = iVar2 + iVar14;\n      iVar1 = (*pcVar18)(piVar15,puVar16,iVar2,piVar11);\n      uVar10 = 0xfffffffe;\n      piVar7 = (int *)0x2;\n      pcVar21 = *(code **)(puVar19 + -0x68);\n      if (((uint)puVar6 & 2) != 0) {\n        piVar7 = (int *)0xfffffffe;\n      }\n      *piVar15 = (int)piVar7 + *piVar15;\n    }\n    piVar4 = *(int **)(puVar19 + -0x58);\n    iVar9 = iVar9 - (uint)(iVar1 == 0);\n    piVar15 = piVar15 + iVar9;\n    param_1 = (uint *)(iVar9 - (uint)(piVar15[-1] == 0));\n    piVar3[1] = (int)param_1;\n    puVar16 = puVar20;\n    if (piVar4 != (int *)0x0) {\n      (**(code **)(pcVar21 + -0x7a2c))();\n      pcVar21 = *(code **)(puVar19 + -0x68);\n    }\n  }\n  if (*(int *)(puVar19 + -0x54) == *piVar13) {\n    return *piVar13;\n  }\n  pcVar18 = *(code **)(pcVar21 + -0x7b70);\n  uVar22 = 0x2825c;\n  (*pcVar18)();\n  pcVar21 = pcVar18 + 0x76de0;\n  *(code **)(puVar16 + -0x28) = pcVar21;\n  *(uint **)(puVar16 + -0xc) = param_1;\n  *(undefined4 *)(puVar16 + -4) = uVar22;\n  *(int **)(puVar16 + -8) = piVar15;\n  *(int **)(puVar16 + -0x10) = piVar13;\n  *(int **)(puVar16 + -0x14) = piVar11;\n  if (0x2f < uVar10) {\n    iVar9 = ((uVar10 >> 5) * 0x17 >> 5) + 4;\n    if (*piVar4 < iVar9) {\n      pcVar18 = *(code **)(pcVar18 + 0x6f35c);\n      *(uint *)(puVar16 + -0x1c) = uVar10;\n      iVar1 = (*pcVar18)();\n      pcVar21 = *(code **)(puVar16 + -0x28);\n      uVar10 = *(uint *)(puVar16 + -0x1c);\n    }\n    else {\n      iVar1 = piVar4[2];\n    }\n    pcVar18 = *(code **)(pcVar21 + -0x7a84);\n    if (*piVar7 < iVar9) {\n      *(uint *)(puVar16 + -0x1c) = uVar10;\n      iVar9 = (*pcVar18)(piVar7,iVar9);\n      pcVar21 = *(code **)(puVar16 + -0x28);\n    }\n    else {\n      iVar9 = piVar7[2];\n    }\n    iVar1 = (**(code **)(pcVar21 + -0x7e94))(iVar1,iVar9);\n    piVar4[1] = iVar1;\n    iVar1 = iVar1 - (uint)(*(int *)(iVar9 + iVar1 * 4 + -4) == 0);\n    piVar7[1] = iVar1;\n    return iVar1;\n  }\n  puVar8 = (undefined4 *)piVar7[2];\n  uVar22 = *(undefined4 *)(*(int *)(pcVar18 + 0x6f2ec) + uVar10 * 4);\n  iVar9 = *(int *)(*(int *)(pcVar18 + 0x6f2ec) + (uVar10 + 1) * 4);\n  *(int *)piVar4[2] = iVar9;\n  piVar4[1] = (uint)(uVar10 != 0);\n  *puVar8 = uVar22;\n  piVar7[1] = (uint)(uVar10 != 1);\n  return iVar9;\n}\n\n" (function_definition "int __gmpz_fdiv_r_ui(uint *param_1,uint param_2,int param_3)\n\n{\n  int iVar1;\n  int iVar2;\n  int *piVar3;\n  int *piVar4;\n  uint uVar5;\n  uint *puVar6;\n  int *piVar7;\n  undefined4 *puVar8;\n  int iVar9;\n  uint uVar10;\n  int *piVar11;\n  uint uVar12;\n  int *piVar13;\n  int iVar14;\n  int *piVar15;\n  undefined1 *puVar16;\n  undefined4 unaff_s5;\n  undefined4 unaff_s6;\n  undefined4 unaff_s7;\n  undefined *puVar17;\n  code *pcVar18;\n  undefined1 *puVar19;\n  undefined1 *puVar20;\n  code *pcVar21;\n  undefined4 uVar22;\n  undefined1 auStack_80 [16];\n  undefined *apuStack_70 [3];\n  int iStack_64;\n  int *piStack_5c;\n  uint uStack_58;\n  int iStack_54;\n  int iStack_50;\n  int iStack_4c;\n  \n  if (param_3 != 0) {\n    iVar9 = *(int *)(param_2 + 4);\n    if (iVar9 != 0) {\n      if (iVar9 < 0) {\n        iVar1 = (*(code *)PTR___gmpn_mod_1_000974c0)(*(undefined4 *)(param_2 + 8),-iVar9,param_3);\n      }\n      else {\n        iVar1 = (*(code *)PTR___gmpn_mod_1_000974c0)(*(undefined4 *)(param_2 + 8),iVar9,param_3);\n      }\n      if (iVar1 != 0) {\n        if (iVar9 < 0) {\n          iVar1 = param_3 - iVar1;\n          *(int *)param_1[2] = iVar1;\n          param_1[1] = 1;\n        }\n        else {\n          *(int *)param_1[2] = iVar1;\n          param_1[1] = 1;\n        }\n        return iVar1;\n      }\n    }\n    param_1[1] = 0;\n    return 0;\n  }\n  puVar17 = PTR___gmp_divide_by_zero_000975dc;\n  (*(code *)PTR___gmp_divide_by_zero_000975dc)();\n  apuStack_70[0] = puVar17 + 0x77320;\n  puVar19 = auStack_80;\n  piVar15 = *(int **)(puVar17 + 0x6f820);\n  uVar10 = *(uint *)(param_3 + 4);\n  piStack_5c = (int *)0x0;\n  iStack_4c = *piVar15;\n  uVar12 = *(uint *)(param_2 + 4);\n  if ((int)uVar10 < 0) {\n    uStack_58 = -uVar10;\n    uVar5 = uVar10 * -4;\n    if (0x7f00 < uVar5) {\n      pcVar18 = *(code **)(puVar17 + 0x6f5d0);\n      goto LAB_00027e2c;\n    }\nLAB_00027d94:\n    iStack_50 = -(uVar5 + 7 & 0xfffffff8);\n    puVar19 = auStack_80 + iStack_50;\n    iStack_50 = (int)apuStack_70 + iStack_50;\n  }\n  else {\n    uVar5 = uVar10 * 4;\n    pcVar18 = *(code **)(puVar17 + 0x6f5d0);\n    uStack_58 = uVar10;\n    if (uVar5 < 0x7f01) goto LAB_00027d94;\nLAB_00027e2c:\n    iStack_64 = param_3;\n    iStack_50 = (*pcVar18)(&piStack_5c,uVar5);\n    param_3 = iStack_64;\n  }\n  puVar6 = &uStack_58;\n  piVar11 = (int *)(uVar12 ^ uVar10);\n  uVar10 = param_2;\n  (**(code **)(apuStack_70[0] + -0x7a6c))(param_1,puVar6,param_2,param_3);\n  if (((int)piVar11 < 0) && (iStack_54 != 0)) {\n    uVar10 = 1;\n    puVar6 = param_1;\n    (**(code **)(apuStack_70[0] + -0x7ac0))(param_1);\n    piVar3 = piStack_5c;\n    if (piStack_5c == (int *)0x0) goto LAB_00027dd8;\n    pcVar18 = *(code **)(apuStack_70[0] + -0x7a2c);\n  }\n  else {\n    pcVar18 = *(code **)(apuStack_70[0] + -0x7a2c);\n    piVar3 = piStack_5c;\n    if (piStack_5c == (int *)0x0) goto LAB_00027dd8;\n  }\n  piVar3 = piStack_5c;\n  (*pcVar18)();\nLAB_00027dd8:\n  if (iStack_4c == *piVar15) {\n    return *piVar15;\n  }\n  pcVar18 = *(code **)(apuStack_70[0] + -0x7b70);\n  pcVar21 = __gmpz_fdiv_ui;\n  (*pcVar18)();\n  *(code **)(puVar19 + -0x18) = pcVar18 + 0x771b0;\n  *(code **)(puVar19 + -4) = pcVar21;\n  *(uint *)(puVar19 + -8) = uVar12;\n  *(int **)(puVar19 + -0xc) = piVar11;\n  if (puVar6 != (uint *)0x0) {\n    iVar9 = piVar3[1];\n    if (iVar9 == 0) {\n      return 0;\n    }\n    if (iVar9 < 0) {\n      iVar1 = (**(code **)(pcVar18 + 0x6f630))(piVar3[2],-iVar9,puVar6);\n    }\n    else {\n      iVar1 = (**(code **)(pcVar18 + 0x6f630))(piVar3[2],iVar9,puVar6);\n    }\n    if (iVar1 != 0) {\n      if (iVar9 < 0) {\n        return (int)puVar6 - iVar1;\n      }\n    }\n    return iVar1;\n  }\n  pcVar18 = *(code **)(pcVar18 + 0x6f74c);\n  uVar22 = 0x27f54;\n  (*pcVar18)();\n  pcVar21 = pcVar18 + 0x770e0;\n  puVar16 = puVar19 + -0x80;\n  puVar20 = puVar19 + -0x80;\n  *(uint *)(puVar19 + -0x4c) = uVar12;\n  *(undefined4 *)(puVar19 + -0x38) = unaff_s6;\n  piVar13 = *(int **)(pcVar18 + 0x6f5e0);\n  *(undefined1 **)(puVar19 + -0x30) = auStack_80;\n  *(undefined4 *)(puVar19 + -0x3c) = unaff_s5;\n  *(undefined4 *)(puVar19 + -0x2c) = uVar22;\n  *(undefined4 *)(puVar19 + -0x34) = unaff_s7;\n  *(uint *)(puVar19 + -0x40) = param_2;\n  *(int **)(puVar19 + -0x44) = piVar15;\n  *(uint **)(puVar19 + -0x48) = param_1;\n  *(int **)(puVar19 + -0x50) = piVar11;\n  *(code **)(puVar19 + -0x68) = pcVar21;\n  *(int *)(puVar19 + -0x54) = *piVar13;\n  if (puVar6 < (uint *)0x30) {\n    piVar7 = (int *)piVar3[2];\n    piVar4 = (int *)(((int)puVar6 + 1U) * 4);\n    *piVar7 = *(int *)(*(int *)(pcVar18 + 0x6f5ec) + (int)piVar4);\n    piVar3[1] = (uint)(puVar6 != (uint *)0x0);\n  }\n  else {\n    iVar9 = (((uint)puVar6 >> 6) * 0x17 >> 5) + 5;\n    uVar10 = (uint)puVar6 >> 1;\n    if (*piVar3 < iVar9 * 2) {\n      pcVar18 = *(code **)(pcVar18 + 0x6f65c);\n      *(uint *)(puVar19 + -0x5c) = uVar10;\n      piVar15 = (int *)(*pcVar18)();\n      pcVar21 = *(code **)(puVar19 + -0x68);\n      uVar10 = *(uint *)(puVar19 + -0x5c);\n    }\n    else {\n      piVar15 = (int *)piVar3[2];\n    }\n    *(undefined4 *)(puVar19 + -0x58) = 0;\n    if ((uint)(iVar9 * 8) < 0x7f01) {\n      puVar20 = puVar19 + iVar9 * -8 + -0x80;\n      puVar16 = puVar19 + iVar9 * -8 + -0x68;\n    }\n    else {\n      pcVar18 = *(code **)(pcVar21 + -0x7d50);\n      *(uint *)(puVar19 + -0x5c) = uVar10;\n      puVar16 = (undefined1 *)(*pcVar18)(puVar19 + -0x58);\n      pcVar21 = *(code **)(puVar19 + -0x68);\n      uVar10 = *(uint *)(puVar19 + -0x5c);\n    }\n    piVar11 = (int *)(puVar16 + iVar9 * 4);\n    iVar9 = (**(code **)(pcVar21 + -0x7e94))(puVar16,piVar11,uVar10);\n    if (((uint)puVar6 & 1) == 0) {\n      iVar1 = (**(code **)(*(int *)(puVar19 + -0x68) + -0x7ad4))(piVar11,piVar11);\n      iVar2 = (**(code **)(*(int *)(puVar19 + -0x68) + -0x7d0c))(piVar11,piVar11,puVar16,iVar9);\n      uVar10 = (uint)(iVar1 + iVar2 != 0) + iVar9;\n      pcVar18 = *(code **)(*(int *)(puVar19 + -0x68) + -0x7d8c);\n      piVar11[iVar9] = iVar1 + iVar2;\n      *(int *)(puVar20 + 0x10) = iVar9;\n      iVar9 = iVar9 + uVar10;\n      piVar7 = piVar11;\n      iVar1 = (*pcVar18)(piVar15,piVar11,uVar10,puVar16);\n      pcVar21 = *(code **)(puVar19 + -0x68);\n    }\n    else {\n      uVar22 = (**(code **)(*(int *)(puVar19 + -0x68) + -0x7ad4))(piVar15,puVar16,iVar9,1);\n      *(undefined4 *)(puVar19 + -0x5c) = uVar22;\n      iVar1 = (**(code **)(*(int *)(puVar19 + -0x68) + -0x7d0c))(puVar16,piVar15,piVar11,iVar9);\n      iVar2 = *(int *)(puVar19 + -0x5c);\n      pcVar18 = *(code **)(*(int *)(puVar19 + -0x68) + -0x7b2c);\n      *(int *)(puVar16 + iVar9 * 4) = iVar1 + iVar2;\n      *(uint *)(puVar19 + -0x60) = (uint)(iVar1 + iVar2 != 0) + iVar9;\n      iVar1 = (*pcVar18)(piVar11,piVar15,piVar11,iVar9);\n      iVar2 = *(int *)(puVar19 + -0x60);\n      pcVar18 = *(code **)(*(int *)(puVar19 + -0x68) + -0x7d8c);\n      iVar14 = iVar9 + (*(int *)(puVar19 + -0x5c) - iVar1);\n      piVar11[iVar9] = *(int *)(puVar19 + -0x5c) - iVar1;\n      *(int *)(puVar20 + 0x10) = iVar14;\n      iVar9 = iVar2 + iVar14;\n      iVar1 = (*pcVar18)(piVar15,puVar16,iVar2,piVar11);\n      uVar10 = 0xfffffffe;\n      piVar7 = (int *)0x2;\n      pcVar21 = *(code **)(puVar19 + -0x68);\n      if (((uint)puVar6 & 2) != 0) {\n        piVar7 = (int *)0xfffffffe;\n      }\n      *piVar15 = (int)piVar7 + *piVar15;\n    }\n    piVar4 = *(int **)(puVar19 + -0x58);\n    iVar9 = iVar9 - (uint)(iVar1 == 0);\n    piVar15 = piVar15 + iVar9;\n    param_1 = (uint *)(iVar9 - (uint)(piVar15[-1] == 0));\n    piVar3[1] = (int)param_1;\n    puVar16 = puVar20;\n    if (piVar4 != (int *)0x0) {\n      (**(code **)(pcVar21 + -0x7a2c))();\n      pcVar21 = *(code **)(puVar19 + -0x68);\n    }\n  }\n  if (*(int *)(puVar19 + -0x54) == *piVar13) {\n    return *piVar13;\n  }\n  pcVar18 = *(code **)(pcVar21 + -0x7b70);\n  uVar22 = 0x2825c;\n  (*pcVar18)();\n  pcVar21 = pcVar18 + 0x76de0;\n  *(code **)(puVar16 + -0x28) = pcVar21;\n  *(uint **)(puVar16 + -0xc) = param_1;\n  *(undefined4 *)(puVar16 + -4) = uVar22;\n  *(int **)(puVar16 + -8) = piVar15;\n  *(int **)(puVar16 + -0x10) = piVar13;\n  *(int **)(puVar16 + -0x14) = piVar11;\n  if (0x2f < uVar10) {\n    iVar9 = ((uVar10 >> 5) * 0x17 >> 5) + 4;\n    if (*piVar4 < iVar9) {\n      pcVar18 = *(code **)(pcVar18 + 0x6f35c);\n      *(uint *)(puVar16 + -0x1c) = uVar10;\n      iVar1 = (*pcVar18)();\n      pcVar21 = *(code **)(puVar16 + -0x28);\n      uVar10 = *(uint *)(puVar16 + -0x1c);\n    }\n    else {\n      iVar1 = piVar4[2];\n    }\n    pcVar18 = *(code **)(pcVar21 + -0x7a84);\n    if (*piVar7 < iVar9) {\n      *(uint *)(puVar16 + -0x1c) = uVar10;\n      iVar9 = (*pcVar18)(piVar7,iVar9);\n      pcVar21 = *(code **)(puVar16 + -0x28);\n    }\n    else {\n      iVar9 = piVar7[2];\n    }\n    iVar1 = (**(code **)(pcVar21 + -0x7e94))(iVar1,iVar9);\n    piVar4[1] = iVar1;\n    iVar1 = iVar1 - (uint)(*(int *)(iVar9 + iVar1 * 4 + -4) == 0);\n    piVar7[1] = iVar1;\n    return iVar1;\n  }\n  puVar8 = (undefined4 *)piVar7[2];\n  uVar22 = *(undefined4 *)(*(int *)(pcVar18 + 0x6f2ec) + uVar10 * 4);\n  iVar9 = *(int *)(*(int *)(pcVar18 + 0x6f2ec) + (uVar10 + 1) * 4);\n  *(int *)piVar4[2] = iVar9;\n  piVar4[1] = (uint)(uVar10 != 0);\n  *puVar8 = uVar22;\n  piVar7[1] = (uint)(uVar10 != 1);\n  return iVar9;\n}" primitive_type (function_declarator "__gmpz_fdiv_r_ui(uint *param_1,uint param_2,int param_3)" identifier (parameter_list "(uint *param_1,uint param_2,int param_3)" ( (parameter_declaration "uint *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "uint param_2" type_identifier identifier) , (parameter_declaration "int param_3" primitive_type identifier) ))) (compound_statement "{\n  int iVar1;\n  int iVar2;\n  int *piVar3;\n  int *piVar4;\n  uint uVar5;\n  uint *puVar6;\n  int *piVar7;\n  undefined4 *puVar8;\n  int iVar9;\n  uint uVar10;\n  int *piVar11;\n  uint uVar12;\n  int *piVar13;\n  int iVar14;\n  int *piVar15;\n  undefined1 *puVar16;\n  undefined4 unaff_s5;\n  undefined4 unaff_s6;\n  undefined4 unaff_s7;\n  undefined *puVar17;\n  code *pcVar18;\n  undefined1 *puVar19;\n  undefined1 *puVar20;\n  code *pcVar21;\n  undefined4 uVar22;\n  undefined1 auStack_80 [16];\n  undefined *apuStack_70 [3];\n  int iStack_64;\n  int *piStack_5c;\n  uint uStack_58;\n  int iStack_54;\n  int iStack_50;\n  int iStack_4c;\n  \n  if (param_3 != 0) {\n    iVar9 = *(int *)(param_2 + 4);\n    if (iVar9 != 0) {\n      if (iVar9 < 0) {\n        iVar1 = (*(code *)PTR___gmpn_mod_1_000974c0)(*(undefined4 *)(param_2 + 8),-iVar9,param_3);\n      }\n      else {\n        iVar1 = (*(code *)PTR___gmpn_mod_1_000974c0)(*(undefined4 *)(param_2 + 8),iVar9,param_3);\n      }\n      if (iVar1 != 0) {\n        if (iVar9 < 0) {\n          iVar1 = param_3 - iVar1;\n          *(int *)param_1[2] = iVar1;\n          param_1[1] = 1;\n        }\n        else {\n          *(int *)param_1[2] = iVar1;\n          param_1[1] = 1;\n        }\n        return iVar1;\n      }\n    }\n    param_1[1] = 0;\n    return 0;\n  }\n  puVar17 = PTR___gmp_divide_by_zero_000975dc;\n  (*(code *)PTR___gmp_divide_by_zero_000975dc)();\n  apuStack_70[0] = puVar17 + 0x77320;\n  puVar19 = auStack_80;\n  piVar15 = *(int **)(puVar17 + 0x6f820);\n  uVar10 = *(uint *)(param_3 + 4);\n  piStack_5c = (int *)0x0;\n  iStack_4c = *piVar15;\n  uVar12 = *(uint *)(param_2 + 4);\n  if ((int)uVar10 < 0) {\n    uStack_58 = -uVar10;\n    uVar5 = uVar10 * -4;\n    if (0x7f00 < uVar5) {\n      pcVar18 = *(code **)(puVar17 + 0x6f5d0);\n      goto LAB_00027e2c;\n    }\nLAB_00027d94:\n    iStack_50 = -(uVar5 + 7 & 0xfffffff8);\n    puVar19 = auStack_80 + iStack_50;\n    iStack_50 = (int)apuStack_70 + iStack_50;\n  }\n  else {\n    uVar5 = uVar10 * 4;\n    pcVar18 = *(code **)(puVar17 + 0x6f5d0);\n    uStack_58 = uVar10;\n    if (uVar5 < 0x7f01) goto LAB_00027d94;\nLAB_00027e2c:\n    iStack_64 = param_3;\n    iStack_50 = (*pcVar18)(&piStack_5c,uVar5);\n    param_3 = iStack_64;\n  }\n  puVar6 = &uStack_58;\n  piVar11 = (int *)(uVar12 ^ uVar10);\n  uVar10 = param_2;\n  (**(code **)(apuStack_70[0] + -0x7a6c))(param_1,puVar6,param_2,param_3);\n  if (((int)piVar11 < 0) && (iStack_54 != 0)) {\n    uVar10 = 1;\n    puVar6 = param_1;\n    (**(code **)(apuStack_70[0] + -0x7ac0))(param_1);\n    piVar3 = piStack_5c;\n    if (piStack_5c == (int *)0x0) goto LAB_00027dd8;\n    pcVar18 = *(code **)(apuStack_70[0] + -0x7a2c);\n  }\n  else {\n    pcVar18 = *(code **)(apuStack_70[0] + -0x7a2c);\n    piVar3 = piStack_5c;\n    if (piStack_5c == (int *)0x0) goto LAB_00027dd8;\n  }\n  piVar3 = piStack_5c;\n  (*pcVar18)();\nLAB_00027dd8:\n  if (iStack_4c == *piVar15) {\n    return *piVar15;\n  }\n  pcVar18 = *(code **)(apuStack_70[0] + -0x7b70);\n  pcVar21 = __gmpz_fdiv_ui;\n  (*pcVar18)();\n  *(code **)(puVar19 + -0x18) = pcVar18 + 0x771b0;\n  *(code **)(puVar19 + -4) = pcVar21;\n  *(uint *)(puVar19 + -8) = uVar12;\n  *(int **)(puVar19 + -0xc) = piVar11;\n  if (puVar6 != (uint *)0x0) {\n    iVar9 = piVar3[1];\n    if (iVar9 == 0) {\n      return 0;\n    }\n    if (iVar9 < 0) {\n      iVar1 = (**(code **)(pcVar18 + 0x6f630))(piVar3[2],-iVar9,puVar6);\n    }\n    else {\n      iVar1 = (**(code **)(pcVar18 + 0x6f630))(piVar3[2],iVar9,puVar6);\n    }\n    if (iVar1 != 0) {\n      if (iVar9 < 0) {\n        return (int)puVar6 - iVar1;\n      }\n    }\n    return iVar1;\n  }\n  pcVar18 = *(code **)(pcVar18 + 0x6f74c);\n  uVar22 = 0x27f54;\n  (*pcVar18)();\n  pcVar21 = pcVar18 + 0x770e0;\n  puVar16 = puVar19 + -0x80;\n  puVar20 = puVar19 + -0x80;\n  *(uint *)(puVar19 + -0x4c) = uVar12;\n  *(undefined4 *)(puVar19 + -0x38) = unaff_s6;\n  piVar13 = *(int **)(pcVar18 + 0x6f5e0);\n  *(undefined1 **)(puVar19 + -0x30) = auStack_80;\n  *(undefined4 *)(puVar19 + -0x3c) = unaff_s5;\n  *(undefined4 *)(puVar19 + -0x2c) = uVar22;\n  *(undefined4 *)(puVar19 + -0x34) = unaff_s7;\n  *(uint *)(puVar19 + -0x40) = param_2;\n  *(int **)(puVar19 + -0x44) = piVar15;\n  *(uint **)(puVar19 + -0x48) = param_1;\n  *(int **)(puVar19 + -0x50) = piVar11;\n  *(code **)(puVar19 + -0x68) = pcVar21;\n  *(int *)(puVar19 + -0x54) = *piVar13;\n  if (puVar6 < (uint *)0x30) {\n    piVar7 = (int *)piVar3[2];\n    piVar4 = (int *)(((int)puVar6 + 1U) * 4);\n    *piVar7 = *(int *)(*(int *)(pcVar18 + 0x6f5ec) + (int)piVar4);\n    piVar3[1] = (uint)(puVar6 != (uint *)0x0);\n  }\n  else {\n    iVar9 = (((uint)puVar6 >> 6) * 0x17 >> 5) + 5;\n    uVar10 = (uint)puVar6 >> 1;\n    if (*piVar3 < iVar9 * 2) {\n      pcVar18 = *(code **)(pcVar18 + 0x6f65c);\n      *(uint *)(puVar19 + -0x5c) = uVar10;\n      piVar15 = (int *)(*pcVar18)();\n      pcVar21 = *(code **)(puVar19 + -0x68);\n      uVar10 = *(uint *)(puVar19 + -0x5c);\n    }\n    else {\n      piVar15 = (int *)piVar3[2];\n    }\n    *(undefined4 *)(puVar19 + -0x58) = 0;\n    if ((uint)(iVar9 * 8) < 0x7f01) {\n      puVar20 = puVar19 + iVar9 * -8 + -0x80;\n      puVar16 = puVar19 + iVar9 * -8 + -0x68;\n    }\n    else {\n      pcVar18 = *(code **)(pcVar21 + -0x7d50);\n      *(uint *)(puVar19 + -0x5c) = uVar10;\n      puVar16 = (undefined1 *)(*pcVar18)(puVar19 + -0x58);\n      pcVar21 = *(code **)(puVar19 + -0x68);\n      uVar10 = *(uint *)(puVar19 + -0x5c);\n    }\n    piVar11 = (int *)(puVar16 + iVar9 * 4);\n    iVar9 = (**(code **)(pcVar21 + -0x7e94))(puVar16,piVar11,uVar10);\n    if (((uint)puVar6 & 1) == 0) {\n      iVar1 = (**(code **)(*(int *)(puVar19 + -0x68) + -0x7ad4))(piVar11,piVar11);\n      iVar2 = (**(code **)(*(int *)(puVar19 + -0x68) + -0x7d0c))(piVar11,piVar11,puVar16,iVar9);\n      uVar10 = (uint)(iVar1 + iVar2 != 0) + iVar9;\n      pcVar18 = *(code **)(*(int *)(puVar19 + -0x68) + -0x7d8c);\n      piVar11[iVar9] = iVar1 + iVar2;\n      *(int *)(puVar20 + 0x10) = iVar9;\n      iVar9 = iVar9 + uVar10;\n      piVar7 = piVar11;\n      iVar1 = (*pcVar18)(piVar15,piVar11,uVar10,puVar16);\n      pcVar21 = *(code **)(puVar19 + -0x68);\n    }\n    else {\n      uVar22 = (**(code **)(*(int *)(puVar19 + -0x68) + -0x7ad4))(piVar15,puVar16,iVar9,1);\n      *(undefined4 *)(puVar19 + -0x5c) = uVar22;\n      iVar1 = (**(code **)(*(int *)(puVar19 + -0x68) + -0x7d0c))(puVar16,piVar15,piVar11,iVar9);\n      iVar2 = *(int *)(puVar19 + -0x5c);\n      pcVar18 = *(code **)(*(int *)(puVar19 + -0x68) + -0x7b2c);\n      *(int *)(puVar16 + iVar9 * 4) = iVar1 + iVar2;\n      *(uint *)(puVar19 + -0x60) = (uint)(iVar1 + iVar2 != 0) + iVar9;\n      iVar1 = (*pcVar18)(piVar11,piVar15,piVar11,iVar9);\n      iVar2 = *(int *)(puVar19 + -0x60);\n      pcVar18 = *(code **)(*(int *)(puVar19 + -0x68) + -0x7d8c);\n      iVar14 = iVar9 + (*(int *)(puVar19 + -0x5c) - iVar1);\n      piVar11[iVar9] = *(int *)(puVar19 + -0x5c) - iVar1;\n      *(int *)(puVar20 + 0x10) = iVar14;\n      iVar9 = iVar2 + iVar14;\n      iVar1 = (*pcVar18)(piVar15,puVar16,iVar2,piVar11);\n      uVar10 = 0xfffffffe;\n      piVar7 = (int *)0x2;\n      pcVar21 = *(code **)(puVar19 + -0x68);\n      if (((uint)puVar6 & 2) != 0) {\n        piVar7 = (int *)0xfffffffe;\n      }\n      *piVar15 = (int)piVar7 + *piVar15;\n    }\n    piVar4 = *(int **)(puVar19 + -0x58);\n    iVar9 = iVar9 - (uint)(iVar1 == 0);\n    piVar15 = piVar15 + iVar9;\n    param_1 = (uint *)(iVar9 - (uint)(piVar15[-1] == 0));\n    piVar3[1] = (int)param_1;\n    puVar16 = puVar20;\n    if (piVar4 != (int *)0x0) {\n      (**(code **)(pcVar21 + -0x7a2c))();\n      pcVar21 = *(code **)(puVar19 + -0x68);\n    }\n  }\n  if (*(int *)(puVar19 + -0x54) == *piVar13) {\n    return *piVar13;\n  }\n  pcVar18 = *(code **)(pcVar21 + -0x7b70);\n  uVar22 = 0x2825c;\n  (*pcVar18)();\n  pcVar21 = pcVar18 + 0x76de0;\n  *(code **)(puVar16 + -0x28) = pcVar21;\n  *(uint **)(puVar16 + -0xc) = param_1;\n  *(undefined4 *)(puVar16 + -4) = uVar22;\n  *(int **)(puVar16 + -8) = piVar15;\n  *(int **)(puVar16 + -0x10) = piVar13;\n  *(int **)(puVar16 + -0x14) = piVar11;\n  if (0x2f < uVar10) {\n    iVar9 = ((uVar10 >> 5) * 0x17 >> 5) + 4;\n    if (*piVar4 < iVar9) {\n      pcVar18 = *(code **)(pcVar18 + 0x6f35c);\n      *(uint *)(puVar16 + -0x1c) = uVar10;\n      iVar1 = (*pcVar18)();\n      pcVar21 = *(code **)(puVar16 + -0x28);\n      uVar10 = *(uint *)(puVar16 + -0x1c);\n    }\n    else {\n      iVar1 = piVar4[2];\n    }\n    pcVar18 = *(code **)(pcVar21 + -0x7a84);\n    if (*piVar7 < iVar9) {\n      *(uint *)(puVar16 + -0x1c) = uVar10;\n      iVar9 = (*pcVar18)(piVar7,iVar9);\n      pcVar21 = *(code **)(puVar16 + -0x28);\n    }\n    else {\n      iVar9 = piVar7[2];\n    }\n    iVar1 = (**(code **)(pcVar21 + -0x7e94))(iVar1,iVar9);\n    piVar4[1] = iVar1;\n    iVar1 = iVar1 - (uint)(*(int *)(iVar9 + iVar1 * 4 + -4) == 0);\n    piVar7[1] = iVar1;\n    return iVar1;\n  }\n  puVar8 = (undefined4 *)piVar7[2];\n  uVar22 = *(undefined4 *)(*(int *)(pcVar18 + 0x6f2ec) + uVar10 * 4);\n  iVar9 = *(int *)(*(int *)(pcVar18 + 0x6f2ec) + (uVar10 + 1) * 4);\n  *(int *)piVar4[2] = iVar9;\n  piVar4[1] = (uint)(uVar10 != 0);\n  *puVar8 = uVar22;\n  piVar7[1] = (uint)(uVar10 != 1);\n  return iVar9;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "int *piVar3;" primitive_type (pointer_declarator "*piVar3" * identifier) ;) (declaration "int *piVar4;" primitive_type (pointer_declarator "*piVar4" * identifier) ;) (declaration "uint uVar5;" type_identifier identifier ;) (declaration "uint *puVar6;" type_identifier (pointer_declarator "*puVar6" * identifier) ;) (declaration "int *piVar7;" primitive_type (pointer_declarator "*piVar7" * identifier) ;) (declaration "undefined4 *puVar8;" type_identifier (pointer_declarator "*puVar8" * identifier) ;) (declaration "int iVar9;" primitive_type identifier ;) (declaration "uint uVar10;" type_identifier identifier ;) (declaration "int *piVar11;" primitive_type (pointer_declarator "*piVar11" * identifier) ;) (declaration "uint uVar12;" type_identifier identifier ;) (declaration "int *piVar13;" primitive_type (pointer_declarator "*piVar13" * identifier) ;) (declaration "int iVar14;" primitive_type identifier ;) (declaration "int *piVar15;" primitive_type (pointer_declarator "*piVar15" * identifier) ;) (declaration "undefined1 *puVar16;" type_identifier (pointer_declarator "*puVar16" * identifier) ;) (declaration "undefined4 unaff_s5;" type_identifier identifier ;) (declaration "undefined4 unaff_s6;" type_identifier identifier ;) (declaration "undefined4 unaff_s7;" type_identifier identifier ;) (declaration "undefined *puVar17;" type_identifier (pointer_declarator "*puVar17" * identifier) ;) (declaration "code *pcVar18;" type_identifier (pointer_declarator "*pcVar18" * identifier) ;) (declaration "undefined1 *puVar19;" type_identifier (pointer_declarator "*puVar19" * identifier) ;) (declaration "undefined1 *puVar20;" type_identifier (pointer_declarator "*puVar20" * identifier) ;) (declaration "code *pcVar21;" type_identifier (pointer_declarator "*pcVar21" * identifier) ;) (declaration "undefined4 uVar22;" type_identifier identifier ;) (declaration "undefined1 auStack_80 [16];" type_identifier (array_declarator "auStack_80 [16]" identifier [ number_literal ]) ;) (declaration "undefined *apuStack_70 [3];" type_identifier (pointer_declarator "*apuStack_70 [3]" * (array_declarator "apuStack_70 [3]" identifier [ number_literal ])) ;) (declaration "int iStack_64;" primitive_type identifier ;) (declaration "int *piStack_5c;" primitive_type (pointer_declarator "*piStack_5c" * identifier) ;) (declaration "uint uStack_58;" type_identifier identifier ;) (declaration "int iStack_54;" primitive_type identifier ;) (declaration "int iStack_50;" primitive_type identifier ;) (declaration "int iStack_4c;" primitive_type identifier ;) (if_statement "if (param_3 != 0) {\n    iVar9 = *(int *)(param_2 + 4);\n    if (iVar9 != 0) {\n      if (iVar9 < 0) {\n        iVar1 = (*(code *)PTR___gmpn_mod_1_000974c0)(*(undefined4 *)(param_2 + 8),-iVar9,param_3);\n      }\n      else {\n        iVar1 = (*(code *)PTR___gmpn_mod_1_000974c0)(*(undefined4 *)(param_2 + 8),iVar9,param_3);\n      }\n      if (iVar1 != 0) {\n        if (iVar9 < 0) {\n          iVar1 = param_3 - iVar1;\n          *(int *)param_1[2] = iVar1;\n          param_1[1] = 1;\n        }\n        else {\n          *(int *)param_1[2] = iVar1;\n          param_1[1] = 1;\n        }\n        return iVar1;\n      }\n    }\n    param_1[1] = 0;\n    return 0;\n  }" if (parenthesized_expression "(param_3 != 0)" ( (binary_expression "param_3 != 0" identifier != number_literal) )) (compound_statement "{\n    iVar9 = *(int *)(param_2 + 4);\n    if (iVar9 != 0) {\n      if (iVar9 < 0) {\n        iVar1 = (*(code *)PTR___gmpn_mod_1_000974c0)(*(undefined4 *)(param_2 + 8),-iVar9,param_3);\n      }\n      else {\n        iVar1 = (*(code *)PTR___gmpn_mod_1_000974c0)(*(undefined4 *)(param_2 + 8),iVar9,param_3);\n      }\n      if (iVar1 != 0) {\n        if (iVar9 < 0) {\n          iVar1 = param_3 - iVar1;\n          *(int *)param_1[2] = iVar1;\n          param_1[1] = 1;\n        }\n        else {\n          *(int *)param_1[2] = iVar1;\n          param_1[1] = 1;\n        }\n        return iVar1;\n      }\n    }\n    param_1[1] = 0;\n    return 0;\n  }" { (expression_statement "iVar9 = *(int *)(param_2 + 4);" (assignment_expression "iVar9 = *(int *)(param_2 + 4)" identifier = (pointer_expression "*(int *)(param_2 + 4)" * (cast_expression "(int *)(param_2 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 4)" ( (binary_expression "param_2 + 4" identifier + number_literal) ))))) ;) (if_statement "if (iVar9 != 0) {\n      if (iVar9 < 0) {\n        iVar1 = (*(code *)PTR___gmpn_mod_1_000974c0)(*(undefined4 *)(param_2 + 8),-iVar9,param_3);\n      }\n      else {\n        iVar1 = (*(code *)PTR___gmpn_mod_1_000974c0)(*(undefined4 *)(param_2 + 8),iVar9,param_3);\n      }\n      if (iVar1 != 0) {\n        if (iVar9 < 0) {\n          iVar1 = param_3 - iVar1;\n          *(int *)param_1[2] = iVar1;\n          param_1[1] = 1;\n        }\n        else {\n          *(int *)param_1[2] = iVar1;\n          param_1[1] = 1;\n        }\n        return iVar1;\n      }\n    }" if (parenthesized_expression "(iVar9 != 0)" ( (binary_expression "iVar9 != 0" identifier != number_literal) )) (compound_statement "{\n      if (iVar9 < 0) {\n        iVar1 = (*(code *)PTR___gmpn_mod_1_000974c0)(*(undefined4 *)(param_2 + 8),-iVar9,param_3);\n      }\n      else {\n        iVar1 = (*(code *)PTR___gmpn_mod_1_000974c0)(*(undefined4 *)(param_2 + 8),iVar9,param_3);\n      }\n      if (iVar1 != 0) {\n        if (iVar9 < 0) {\n          iVar1 = param_3 - iVar1;\n          *(int *)param_1[2] = iVar1;\n          param_1[1] = 1;\n        }\n        else {\n          *(int *)param_1[2] = iVar1;\n          param_1[1] = 1;\n        }\n        return iVar1;\n      }\n    }" { (if_statement "if (iVar9 < 0) {\n        iVar1 = (*(code *)PTR___gmpn_mod_1_000974c0)(*(undefined4 *)(param_2 + 8),-iVar9,param_3);\n      }\n      else {\n        iVar1 = (*(code *)PTR___gmpn_mod_1_000974c0)(*(undefined4 *)(param_2 + 8),iVar9,param_3);\n      }" if (parenthesized_expression "(iVar9 < 0)" ( (binary_expression "iVar9 < 0" identifier < number_literal) )) (compound_statement "{\n        iVar1 = (*(code *)PTR___gmpn_mod_1_000974c0)(*(undefined4 *)(param_2 + 8),-iVar9,param_3);\n      }" { (expression_statement "iVar1 = (*(code *)PTR___gmpn_mod_1_000974c0)(*(undefined4 *)(param_2 + 8),-iVar9,param_3);" (assignment_expression "iVar1 = (*(code *)PTR___gmpn_mod_1_000974c0)(*(undefined4 *)(param_2 + 8),-iVar9,param_3)" identifier = (call_expression "(*(code *)PTR___gmpn_mod_1_000974c0)(*(undefined4 *)(param_2 + 8),-iVar9,param_3)" (parenthesized_expression "(*(code *)PTR___gmpn_mod_1_000974c0)" ( (pointer_expression "*(code *)PTR___gmpn_mod_1_000974c0" * (cast_expression "(code *)PTR___gmpn_mod_1_000974c0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(*(undefined4 *)(param_2 + 8),-iVar9,param_3)" ( (pointer_expression "*(undefined4 *)(param_2 + 8)" * (cast_expression "(undefined4 *)(param_2 + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 8)" ( (binary_expression "param_2 + 8" identifier + number_literal) )))) , (unary_expression "-iVar9" - identifier) , identifier )))) ;) }) (else_clause "else {\n        iVar1 = (*(code *)PTR___gmpn_mod_1_000974c0)(*(undefined4 *)(param_2 + 8),iVar9,param_3);\n      }" else (compound_statement "{\n        iVar1 = (*(code *)PTR___gmpn_mod_1_000974c0)(*(undefined4 *)(param_2 + 8),iVar9,param_3);\n      }" { (expression_statement "iVar1 = (*(code *)PTR___gmpn_mod_1_000974c0)(*(undefined4 *)(param_2 + 8),iVar9,param_3);" (assignment_expression "iVar1 = (*(code *)PTR___gmpn_mod_1_000974c0)(*(undefined4 *)(param_2 + 8),iVar9,param_3)" identifier = (call_expression "(*(code *)PTR___gmpn_mod_1_000974c0)(*(undefined4 *)(param_2 + 8),iVar9,param_3)" (parenthesized_expression "(*(code *)PTR___gmpn_mod_1_000974c0)" ( (pointer_expression "*(code *)PTR___gmpn_mod_1_000974c0" * (cast_expression "(code *)PTR___gmpn_mod_1_000974c0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(*(undefined4 *)(param_2 + 8),iVar9,param_3)" ( (pointer_expression "*(undefined4 *)(param_2 + 8)" * (cast_expression "(undefined4 *)(param_2 + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 8)" ( (binary_expression "param_2 + 8" identifier + number_literal) )))) , identifier , identifier )))) ;) }))) (if_statement "if (iVar1 != 0) {\n        if (iVar9 < 0) {\n          iVar1 = param_3 - iVar1;\n          *(int *)param_1[2] = iVar1;\n          param_1[1] = 1;\n        }\n        else {\n          *(int *)param_1[2] = iVar1;\n          param_1[1] = 1;\n        }\n        return iVar1;\n      }" if (parenthesized_expression "(iVar1 != 0)" ( (binary_expression "iVar1 != 0" identifier != number_literal) )) (compound_statement "{\n        if (iVar9 < 0) {\n          iVar1 = param_3 - iVar1;\n          *(int *)param_1[2] = iVar1;\n          param_1[1] = 1;\n        }\n        else {\n          *(int *)param_1[2] = iVar1;\n          param_1[1] = 1;\n        }\n        return iVar1;\n      }" { (if_statement "if (iVar9 < 0) {\n          iVar1 = param_3 - iVar1;\n          *(int *)param_1[2] = iVar1;\n          param_1[1] = 1;\n        }\n        else {\n          *(int *)param_1[2] = iVar1;\n          param_1[1] = 1;\n        }" if (parenthesized_expression "(iVar9 < 0)" ( (binary_expression "iVar9 < 0" identifier < number_literal) )) (compound_statement "{\n          iVar1 = param_3 - iVar1;\n          *(int *)param_1[2] = iVar1;\n          param_1[1] = 1;\n        }" { (expression_statement "iVar1 = param_3 - iVar1;" (assignment_expression "iVar1 = param_3 - iVar1" identifier = (binary_expression "param_3 - iVar1" identifier - identifier)) ;) (expression_statement "*(int *)param_1[2] = iVar1;" (assignment_expression "*(int *)param_1[2] = iVar1" (pointer_expression "*(int *)param_1[2]" * (cast_expression "(int *)param_1[2]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[2]" identifier [ number_literal ]))) = identifier) ;) (expression_statement "param_1[1] = 1;" (assignment_expression "param_1[1] = 1" (subscript_expression "param_1[1]" identifier [ number_literal ]) = number_literal) ;) }) (else_clause "else {\n          *(int *)param_1[2] = iVar1;\n          param_1[1] = 1;\n        }" else (compound_statement "{\n          *(int *)param_1[2] = iVar1;\n          param_1[1] = 1;\n        }" { (expression_statement "*(int *)param_1[2] = iVar1;" (assignment_expression "*(int *)param_1[2] = iVar1" (pointer_expression "*(int *)param_1[2]" * (cast_expression "(int *)param_1[2]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[2]" identifier [ number_literal ]))) = identifier) ;) (expression_statement "param_1[1] = 1;" (assignment_expression "param_1[1] = 1" (subscript_expression "param_1[1]" identifier [ number_literal ]) = number_literal) ;) }))) (return_statement "return iVar1;" return identifier ;) })) })) (expression_statement "param_1[1] = 0;" (assignment_expression "param_1[1] = 0" (subscript_expression "param_1[1]" identifier [ number_literal ]) = number_literal) ;) (return_statement "return 0;" return number_literal ;) })) (expression_statement "puVar17 = PTR___gmp_divide_by_zero_000975dc;" (assignment_expression "puVar17 = PTR___gmp_divide_by_zero_000975dc" identifier = 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 "apuStack_70[0] = puVar17 + 0x77320;" (assignment_expression "apuStack_70[0] = puVar17 + 0x77320" (subscript_expression "apuStack_70[0]" identifier [ number_literal ]) = (binary_expression "puVar17 + 0x77320" identifier + number_literal)) ;) (expression_statement "puVar19 = auStack_80;" (assignment_expression "puVar19 = auStack_80" identifier = identifier) ;) (expression_statement "piVar15 = *(int **)(puVar17 + 0x6f820);" (assignment_expression "piVar15 = *(int **)(puVar17 + 0x6f820)" identifier = (pointer_expression "*(int **)(puVar17 + 0x6f820)" * (cast_expression "(int **)(puVar17 + 0x6f820)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar17 + 0x6f820)" ( (binary_expression "puVar17 + 0x6f820" identifier + number_literal) ))))) ;) (expression_statement "uVar10 = *(uint *)(param_3 + 4);" (assignment_expression "uVar10 = *(uint *)(param_3 + 4)" identifier = (pointer_expression "*(uint *)(param_3 + 4)" * (cast_expression "(uint *)(param_3 + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 4)" ( (binary_expression "param_3 + 4" identifier + number_literal) ))))) ;) (expression_statement "piStack_5c = (int *)0x0;" (assignment_expression "piStack_5c = (int *)0x0" identifier = (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "iStack_4c = *piVar15;" (assignment_expression "iStack_4c = *piVar15" identifier = (pointer_expression "*piVar15" * identifier)) ;) (expression_statement "uVar12 = *(uint *)(param_2 + 4);" (assignment_expression "uVar12 = *(uint *)(param_2 + 4)" identifier = (pointer_expression "*(uint *)(param_2 + 4)" * (cast_expression "(uint *)(param_2 + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 4)" ( (binary_expression "param_2 + 4" identifier + number_literal) ))))) ;) (if_statement "if ((int)uVar10 < 0) {\n    uStack_58 = -uVar10;\n    uVar5 = uVar10 * -4;\n    if (0x7f00 < uVar5) {\n      pcVar18 = *(code **)(puVar17 + 0x6f5d0);\n      goto LAB_00027e2c;\n    }\nLAB_00027d94:\n    iStack_50 = -(uVar5 + 7 & 0xfffffff8);\n    puVar19 = auStack_80 + iStack_50;\n    iStack_50 = (int)apuStack_70 + iStack_50;\n  }\n  else {\n    uVar5 = uVar10 * 4;\n    pcVar18 = *(code **)(puVar17 + 0x6f5d0);\n    uStack_58 = uVar10;\n    if (uVar5 < 0x7f01) goto LAB_00027d94;\nLAB_00027e2c:\n    iStack_64 = param_3;\n    iStack_50 = (*pcVar18)(&piStack_5c,uVar5);\n    param_3 = iStack_64;\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    uStack_58 = -uVar10;\n    uVar5 = uVar10 * -4;\n    if (0x7f00 < uVar5) {\n      pcVar18 = *(code **)(puVar17 + 0x6f5d0);\n      goto LAB_00027e2c;\n    }\nLAB_00027d94:\n    iStack_50 = -(uVar5 + 7 & 0xfffffff8);\n    puVar19 = auStack_80 + iStack_50;\n    iStack_50 = (int)apuStack_70 + iStack_50;\n  }" { (expression_statement "uStack_58 = -uVar10;" (assignment_expression "uStack_58 = -uVar10" identifier = (unary_expression "-uVar10" - identifier)) ;) (expression_statement "uVar5 = uVar10 * -4;" (assignment_expression "uVar5 = uVar10 * -4" identifier = (binary_expression "uVar10 * -4" identifier * number_literal)) ;) (if_statement "if (0x7f00 < uVar5) {\n      pcVar18 = *(code **)(puVar17 + 0x6f5d0);\n      goto LAB_00027e2c;\n    }" if (parenthesized_expression "(0x7f00 < uVar5)" ( (binary_expression "0x7f00 < uVar5" number_literal < identifier) )) (compound_statement "{\n      pcVar18 = *(code **)(puVar17 + 0x6f5d0);\n      goto LAB_00027e2c;\n    }" { (expression_statement "pcVar18 = *(code **)(puVar17 + 0x6f5d0);" (assignment_expression "pcVar18 = *(code **)(puVar17 + 0x6f5d0)" identifier = (pointer_expression "*(code **)(puVar17 + 0x6f5d0)" * (cast_expression "(code **)(puVar17 + 0x6f5d0)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar17 + 0x6f5d0)" ( (binary_expression "puVar17 + 0x6f5d0" identifier + number_literal) ))))) ;) (goto_statement "goto LAB_00027e2c;" goto statement_identifier ;) })) (labeled_statement "LAB_00027d94:\n    iStack_50 = -(uVar5 + 7 & 0xfffffff8);" statement_identifier : (expression_statement "iStack_50 = -(uVar5 + 7 & 0xfffffff8);" (assignment_expression "iStack_50 = -(uVar5 + 7 & 0xfffffff8)" identifier = (unary_expression "-(uVar5 + 7 & 0xfffffff8)" - (parenthesized_expression "(uVar5 + 7 & 0xfffffff8)" ( (binary_expression "uVar5 + 7 & 0xfffffff8" (binary_expression "uVar5 + 7" identifier + number_literal) & number_literal) )))) ;)) (expression_statement "puVar19 = auStack_80 + iStack_50;" (assignment_expression "puVar19 = auStack_80 + iStack_50" identifier = (binary_expression "auStack_80 + iStack_50" identifier + identifier)) ;) (expression_statement "iStack_50 = (int)apuStack_70 + iStack_50;" (assignment_expression "iStack_50 = (int)apuStack_70 + iStack_50" identifier = (binary_expression "(int)apuStack_70 + iStack_50" (cast_expression "(int)apuStack_70" ( (type_descriptor "int" primitive_type) ) identifier) + identifier)) ;) }) (else_clause "else {\n    uVar5 = uVar10 * 4;\n    pcVar18 = *(code **)(puVar17 + 0x6f5d0);\n    uStack_58 = uVar10;\n    if (uVar5 < 0x7f01) goto LAB_00027d94;\nLAB_00027e2c:\n    iStack_64 = param_3;\n    iStack_50 = (*pcVar18)(&piStack_5c,uVar5);\n    param_3 = iStack_64;\n  }" else (compound_statement "{\n    uVar5 = uVar10 * 4;\n    pcVar18 = *(code **)(puVar17 + 0x6f5d0);\n    uStack_58 = uVar10;\n    if (uVar5 < 0x7f01) goto LAB_00027d94;\nLAB_00027e2c:\n    iStack_64 = param_3;\n    iStack_50 = (*pcVar18)(&piStack_5c,uVar5);\n    param_3 = iStack_64;\n  }" { (expression_statement "uVar5 = uVar10 * 4;" (assignment_expression "uVar5 = uVar10 * 4" identifier = (binary_expression "uVar10 * 4" identifier * number_literal)) ;) (expression_statement "pcVar18 = *(code **)(puVar17 + 0x6f5d0);" (assignment_expression "pcVar18 = *(code **)(puVar17 + 0x6f5d0)" identifier = (pointer_expression "*(code **)(puVar17 + 0x6f5d0)" * (cast_expression "(code **)(puVar17 + 0x6f5d0)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar17 + 0x6f5d0)" ( (binary_expression "puVar17 + 0x6f5d0" identifier + number_literal) ))))) ;) (expression_statement "uStack_58 = uVar10;" (assignment_expression "uStack_58 = uVar10" identifier = identifier) ;) (if_statement "if (uVar5 < 0x7f01) goto LAB_00027d94;" if (parenthesized_expression "(uVar5 < 0x7f01)" ( (binary_expression "uVar5 < 0x7f01" identifier < number_literal) )) (goto_statement "goto LAB_00027d94;" goto statement_identifier ;)) (labeled_statement "LAB_00027e2c:\n    iStack_64 = param_3;" statement_identifier : (expression_statement "iStack_64 = param_3;" (assignment_expression "iStack_64 = param_3" identifier = identifier) ;)) (expression_statement "iStack_50 = (*pcVar18)(&piStack_5c,uVar5);" (assignment_expression "iStack_50 = (*pcVar18)(&piStack_5c,uVar5)" identifier = (call_expression "(*pcVar18)(&piStack_5c,uVar5)" (parenthesized_expression "(*pcVar18)" ( (pointer_expression "*pcVar18" * identifier) )) (argument_list "(&piStack_5c,uVar5)" ( (pointer_expression "&piStack_5c" & identifier) , identifier )))) ;) (expression_statement "param_3 = iStack_64;" (assignment_expression "param_3 = iStack_64" identifier = identifier) ;) }))) (expression_statement "puVar6 = &uStack_58;" (assignment_expression "puVar6 = &uStack_58" identifier = (pointer_expression "&uStack_58" & identifier)) ;) (expression_statement "piVar11 = (int *)(uVar12 ^ uVar10);" (assignment_expression "piVar11 = (int *)(uVar12 ^ uVar10)" identifier = (cast_expression "(int *)(uVar12 ^ uVar10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar12 ^ uVar10)" ( (binary_expression "uVar12 ^ uVar10" identifier ^ identifier) )))) ;) (expression_statement "uVar10 = param_2;" (assignment_expression "uVar10 = param_2" identifier = identifier) ;) (expression_statement "(**(code **)(apuStack_70[0] + -0x7a6c))(param_1,puVar6,param_2,param_3);" (call_expression "(**(code **)(apuStack_70[0] + -0x7a6c))(param_1,puVar6,param_2,param_3)" (parenthesized_expression "(**(code **)(apuStack_70[0] + -0x7a6c))" ( (pointer_expression "**(code **)(apuStack_70[0] + -0x7a6c)" * (pointer_expression "*(code **)(apuStack_70[0] + -0x7a6c)" * (cast_expression "(code **)(apuStack_70[0] + -0x7a6c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(apuStack_70[0] + -0x7a6c)" ( (binary_expression "apuStack_70[0] + -0x7a6c" (subscript_expression "apuStack_70[0]" identifier [ number_literal ]) + number_literal) ))))) )) (argument_list "(param_1,puVar6,param_2,param_3)" ( identifier , identifier , identifier , identifier ))) ;) (if_statement "if (((int)piVar11 < 0) && (iStack_54 != 0)) {\n    uVar10 = 1;\n    puVar6 = param_1;\n    (**(code **)(apuStack_70[0] + -0x7ac0))(param_1);\n    piVar3 = piStack_5c;\n    if (piStack_5c == (int *)0x0) goto LAB_00027dd8;\n    pcVar18 = *(code **)(apuStack_70[0] + -0x7a2c);\n  }\n  else {\n    pcVar18 = *(code **)(apuStack_70[0] + -0x7a2c);\n    piVar3 = piStack_5c;\n    if (piStack_5c == (int *)0x0) goto LAB_00027dd8;\n  }" if (parenthesized_expression "(((int)piVar11 < 0) && (iStack_54 != 0))" ( (binary_expression "((int)piVar11 < 0) && (iStack_54 != 0)" (parenthesized_expression "((int)piVar11 < 0)" ( (binary_expression "(int)piVar11 < 0" (cast_expression "(int)piVar11" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) && (parenthesized_expression "(iStack_54 != 0)" ( (binary_expression "iStack_54 != 0" identifier != number_literal) ))) )) (compound_statement "{\n    uVar10 = 1;\n    puVar6 = param_1;\n    (**(code **)(apuStack_70[0] + -0x7ac0))(param_1);\n    piVar3 = piStack_5c;\n    if (piStack_5c == (int *)0x0) goto LAB_00027dd8;\n    pcVar18 = *(code **)(apuStack_70[0] + -0x7a2c);\n  }" { (expression_statement "uVar10 = 1;" (assignment_expression "uVar10 = 1" identifier = number_literal) ;) (expression_statement "puVar6 = param_1;" (assignment_expression "puVar6 = param_1" identifier = identifier) ;) (expression_statement "(**(code **)(apuStack_70[0] + -0x7ac0))(param_1);" (call_expression "(**(code **)(apuStack_70[0] + -0x7ac0))(param_1)" (parenthesized_expression "(**(code **)(apuStack_70[0] + -0x7ac0))" ( (pointer_expression "**(code **)(apuStack_70[0] + -0x7ac0)" * (pointer_expression "*(code **)(apuStack_70[0] + -0x7ac0)" * (cast_expression "(code **)(apuStack_70[0] + -0x7ac0)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(apuStack_70[0] + -0x7ac0)" ( (binary_expression "apuStack_70[0] + -0x7ac0" (subscript_expression "apuStack_70[0]" identifier [ number_literal ]) + number_literal) ))))) )) (argument_list "(param_1)" ( identifier ))) ;) (expression_statement "piVar3 = piStack_5c;" (assignment_expression "piVar3 = piStack_5c" identifier = identifier) ;) (if_statement "if (piStack_5c == (int *)0x0) goto LAB_00027dd8;" if (parenthesized_expression "(piStack_5c == (int *)0x0)" ( (binary_expression "piStack_5c == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_00027dd8;" goto statement_identifier ;)) (expression_statement "pcVar18 = *(code **)(apuStack_70[0] + -0x7a2c);" (assignment_expression "pcVar18 = *(code **)(apuStack_70[0] + -0x7a2c)" identifier = (pointer_expression "*(code **)(apuStack_70[0] + -0x7a2c)" * (cast_expression "(code **)(apuStack_70[0] + -0x7a2c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(apuStack_70[0] + -0x7a2c)" ( (binary_expression "apuStack_70[0] + -0x7a2c" (subscript_expression "apuStack_70[0]" identifier [ number_literal ]) + number_literal) ))))) ;) }) (else_clause "else {\n    pcVar18 = *(code **)(apuStack_70[0] + -0x7a2c);\n    piVar3 = piStack_5c;\n    if (piStack_5c == (int *)0x0) goto LAB_00027dd8;\n  }" else (compound_statement "{\n    pcVar18 = *(code **)(apuStack_70[0] + -0x7a2c);\n    piVar3 = piStack_5c;\n    if (piStack_5c == (int *)0x0) goto LAB_00027dd8;\n  }" { (expression_statement "pcVar18 = *(code **)(apuStack_70[0] + -0x7a2c);" (assignment_expression "pcVar18 = *(code **)(apuStack_70[0] + -0x7a2c)" identifier = (pointer_expression "*(code **)(apuStack_70[0] + -0x7a2c)" * (cast_expression "(code **)(apuStack_70[0] + -0x7a2c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(apuStack_70[0] + -0x7a2c)" ( (binary_expression "apuStack_70[0] + -0x7a2c" (subscript_expression "apuStack_70[0]" identifier [ number_literal ]) + number_literal) ))))) ;) (expression_statement "piVar3 = piStack_5c;" (assignment_expression "piVar3 = piStack_5c" identifier = identifier) ;) (if_statement "if (piStack_5c == (int *)0x0) goto LAB_00027dd8;" if (parenthesized_expression "(piStack_5c == (int *)0x0)" ( (binary_expression "piStack_5c == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_00027dd8;" goto statement_identifier ;)) }))) (expression_statement "piVar3 = piStack_5c;" (assignment_expression "piVar3 = piStack_5c" identifier = identifier) ;) (expression_statement "(*pcVar18)();" (call_expression "(*pcVar18)()" (parenthesized_expression "(*pcVar18)" ( (pointer_expression "*pcVar18" * identifier) )) (argument_list "()" ( ))) ;) (labeled_statement "LAB_00027dd8:\n  if (iStack_4c == *piVar15) {\n    return *piVar15;\n  }" statement_identifier : (if_statement "if (iStack_4c == *piVar15) {\n    return *piVar15;\n  }" if (parenthesized_expression "(iStack_4c == *piVar15)" ( (binary_expression "iStack_4c == *piVar15" identifier == (pointer_expression "*piVar15" * identifier)) )) (compound_statement "{\n    return *piVar15;\n  }" { (return_statement "return *piVar15;" return (pointer_expression "*piVar15" * identifier) ;) }))) (expression_statement "pcVar18 = *(code **)(apuStack_70[0] + -0x7b70);" (assignment_expression "pcVar18 = *(code **)(apuStack_70[0] + -0x7b70)" identifier = (pointer_expression "*(code **)(apuStack_70[0] + -0x7b70)" * (cast_expression "(code **)(apuStack_70[0] + -0x7b70)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(apuStack_70[0] + -0x7b70)" ( (binary_expression "apuStack_70[0] + -0x7b70" (subscript_expression "apuStack_70[0]" identifier [ number_literal ]) + number_literal) ))))) ;) (expression_statement "pcVar21 = __gmpz_fdiv_ui;" (assignment_expression "pcVar21 = __gmpz_fdiv_ui" identifier = identifier) ;) (expression_statement "(*pcVar18)();" (call_expression "(*pcVar18)()" (parenthesized_expression "(*pcVar18)" ( (pointer_expression "*pcVar18" * identifier) )) (argument_list "()" ( ))) ;) (expression_statement "*(code **)(puVar19 + -0x18) = pcVar18 + 0x771b0;" (assignment_expression "*(code **)(puVar19 + -0x18) = pcVar18 + 0x771b0" (pointer_expression "*(code **)(puVar19 + -0x18)" * (cast_expression "(code **)(puVar19 + -0x18)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar19 + -0x18)" ( (binary_expression "puVar19 + -0x18" identifier + number_literal) )))) = (binary_expression "pcVar18 + 0x771b0" identifier + number_literal)) ;) (expression_statement "*(code **)(puVar19 + -4) = pcVar21;" (assignment_expression "*(code **)(puVar19 + -4) = pcVar21" (pointer_expression "*(code **)(puVar19 + -4)" * (cast_expression "(code **)(puVar19 + -4)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar19 + -4)" ( (binary_expression "puVar19 + -4" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(uint *)(puVar19 + -8) = uVar12;" (assignment_expression "*(uint *)(puVar19 + -8) = uVar12" (pointer_expression "*(uint *)(puVar19 + -8)" * (cast_expression "(uint *)(puVar19 + -8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar19 + -8)" ( (binary_expression "puVar19 + -8" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int **)(puVar19 + -0xc) = piVar11;" (assignment_expression "*(int **)(puVar19 + -0xc) = piVar11" (pointer_expression "*(int **)(puVar19 + -0xc)" * (cast_expression "(int **)(puVar19 + -0xc)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar19 + -0xc)" ( (binary_expression "puVar19 + -0xc" identifier + number_literal) )))) = identifier) ;) (if_statement "if (puVar6 != (uint *)0x0) {\n    iVar9 = piVar3[1];\n    if (iVar9 == 0) {\n      return 0;\n    }\n    if (iVar9 < 0) {\n      iVar1 = (**(code **)(pcVar18 + 0x6f630))(piVar3[2],-iVar9,puVar6);\n    }\n    else {\n      iVar1 = (**(code **)(pcVar18 + 0x6f630))(piVar3[2],iVar9,puVar6);\n    }\n    if (iVar1 != 0) {\n      if (iVar9 < 0) {\n        return (int)puVar6 - iVar1;\n      }\n    }\n    return iVar1;\n  }" if (parenthesized_expression "(puVar6 != (uint *)0x0)" ( (binary_expression "puVar6 != (uint *)0x0" identifier != (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    iVar9 = piVar3[1];\n    if (iVar9 == 0) {\n      return 0;\n    }\n    if (iVar9 < 0) {\n      iVar1 = (**(code **)(pcVar18 + 0x6f630))(piVar3[2],-iVar9,puVar6);\n    }\n    else {\n      iVar1 = (**(code **)(pcVar18 + 0x6f630))(piVar3[2],iVar9,puVar6);\n    }\n    if (iVar1 != 0) {\n      if (iVar9 < 0) {\n        return (int)puVar6 - iVar1;\n      }\n    }\n    return iVar1;\n  }" { (expression_statement "iVar9 = piVar3[1];" (assignment_expression "iVar9 = piVar3[1]" identifier = (subscript_expression "piVar3[1]" identifier [ number_literal ])) ;) (if_statement "if (iVar9 == 0) {\n      return 0;\n    }" if (parenthesized_expression "(iVar9 == 0)" ( (binary_expression "iVar9 == 0" identifier == number_literal) )) (compound_statement "{\n      return 0;\n    }" { (return_statement "return 0;" return number_literal ;) })) (if_statement "if (iVar9 < 0) {\n      iVar1 = (**(code **)(pcVar18 + 0x6f630))(piVar3[2],-iVar9,puVar6);\n    }\n    else {\n      iVar1 = (**(code **)(pcVar18 + 0x6f630))(piVar3[2],iVar9,puVar6);\n    }" if (parenthesized_expression "(iVar9 < 0)" ( (binary_expression "iVar9 < 0" identifier < number_literal) )) (compound_statement "{\n      iVar1 = (**(code **)(pcVar18 + 0x6f630))(piVar3[2],-iVar9,puVar6);\n    }" { (expression_statement "iVar1 = (**(code **)(pcVar18 + 0x6f630))(piVar3[2],-iVar9,puVar6);" (assignment_expression "iVar1 = (**(code **)(pcVar18 + 0x6f630))(piVar3[2],-iVar9,puVar6)" identifier = (call_expression "(**(code **)(pcVar18 + 0x6f630))(piVar3[2],-iVar9,puVar6)" (parenthesized_expression "(**(code **)(pcVar18 + 0x6f630))" ( (pointer_expression "**(code **)(pcVar18 + 0x6f630)" * (pointer_expression "*(code **)(pcVar18 + 0x6f630)" * (cast_expression "(code **)(pcVar18 + 0x6f630)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar18 + 0x6f630)" ( (binary_expression "pcVar18 + 0x6f630" identifier + number_literal) ))))) )) (argument_list "(piVar3[2],-iVar9,puVar6)" ( (subscript_expression "piVar3[2]" identifier [ number_literal ]) , (unary_expression "-iVar9" - identifier) , identifier )))) ;) }) (else_clause "else {\n      iVar1 = (**(code **)(pcVar18 + 0x6f630))(piVar3[2],iVar9,puVar6);\n    }" else (compound_statement "{\n      iVar1 = (**(code **)(pcVar18 + 0x6f630))(piVar3[2],iVar9,puVar6);\n    }" { (expression_statement "iVar1 = (**(code **)(pcVar18 + 0x6f630))(piVar3[2],iVar9,puVar6);" (assignment_expression "iVar1 = (**(code **)(pcVar18 + 0x6f630))(piVar3[2],iVar9,puVar6)" identifier = (call_expression "(**(code **)(pcVar18 + 0x6f630))(piVar3[2],iVar9,puVar6)" (parenthesized_expression "(**(code **)(pcVar18 + 0x6f630))" ( (pointer_expression "**(code **)(pcVar18 + 0x6f630)" * (pointer_expression "*(code **)(pcVar18 + 0x6f630)" * (cast_expression "(code **)(pcVar18 + 0x6f630)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar18 + 0x6f630)" ( (binary_expression "pcVar18 + 0x6f630" identifier + number_literal) ))))) )) (argument_list "(piVar3[2],iVar9,puVar6)" ( (subscript_expression "piVar3[2]" identifier [ number_literal ]) , identifier , identifier )))) ;) }))) (if_statement "if (iVar1 != 0) {\n      if (iVar9 < 0) {\n        return (int)puVar6 - iVar1;\n      }\n    }" if (parenthesized_expression "(iVar1 != 0)" ( (binary_expression "iVar1 != 0" identifier != number_literal) )) (compound_statement "{\n      if (iVar9 < 0) {\n        return (int)puVar6 - iVar1;\n      }\n    }" { (if_statement "if (iVar9 < 0) {\n        return (int)puVar6 - iVar1;\n      }" if (parenthesized_expression "(iVar9 < 0)" ( (binary_expression "iVar9 < 0" identifier < number_literal) )) (compound_statement "{\n        return (int)puVar6 - iVar1;\n      }" { (return_statement "return (int)puVar6 - iVar1;" return (binary_expression "(int)puVar6 - iVar1" (cast_expression "(int)puVar6" ( (type_descriptor "int" primitive_type) ) identifier) - identifier) ;) })) })) (return_statement "return iVar1;" return identifier ;) })) (expression_statement "pcVar18 = *(code **)(pcVar18 + 0x6f74c);" (assignment_expression "pcVar18 = *(code **)(pcVar18 + 0x6f74c)" identifier = (pointer_expression "*(code **)(pcVar18 + 0x6f74c)" * (cast_expression "(code **)(pcVar18 + 0x6f74c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar18 + 0x6f74c)" ( (binary_expression "pcVar18 + 0x6f74c" identifier + number_literal) ))))) ;) (expression_statement "uVar22 = 0x27f54;" (assignment_expression "uVar22 = 0x27f54" identifier = number_literal) ;) (expression_statement "(*pcVar18)();" (call_expression "(*pcVar18)()" (parenthesized_expression "(*pcVar18)" ( (pointer_expression "*pcVar18" * identifier) )) (argument_list "()" ( ))) ;) (expression_statement "pcVar21 = pcVar18 + 0x770e0;" (assignment_expression "pcVar21 = pcVar18 + 0x770e0" identifier = (binary_expression "pcVar18 + 0x770e0" identifier + number_literal)) ;) (expression_statement "puVar16 = puVar19 + -0x80;" (assignment_expression "puVar16 = puVar19 + -0x80" identifier = (binary_expression "puVar19 + -0x80" identifier + number_literal)) ;) (expression_statement "puVar20 = puVar19 + -0x80;" (assignment_expression "puVar20 = puVar19 + -0x80" identifier = (binary_expression "puVar19 + -0x80" identifier + number_literal)) ;) (expression_statement "*(uint *)(puVar19 + -0x4c) = uVar12;" (assignment_expression "*(uint *)(puVar19 + -0x4c) = uVar12" (pointer_expression "*(uint *)(puVar19 + -0x4c)" * (cast_expression "(uint *)(puVar19 + -0x4c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar19 + -0x4c)" ( (binary_expression "puVar19 + -0x4c" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar19 + -0x38) = unaff_s6;" (assignment_expression "*(undefined4 *)(puVar19 + -0x38) = unaff_s6" (pointer_expression "*(undefined4 *)(puVar19 + -0x38)" * (cast_expression "(undefined4 *)(puVar19 + -0x38)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar19 + -0x38)" ( (binary_expression "puVar19 + -0x38" identifier + number_literal) )))) = identifier) ;) (expression_statement "piVar13 = *(int **)(pcVar18 + 0x6f5e0);" (assignment_expression "piVar13 = *(int **)(pcVar18 + 0x6f5e0)" identifier = (pointer_expression "*(int **)(pcVar18 + 0x6f5e0)" * (cast_expression "(int **)(pcVar18 + 0x6f5e0)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar18 + 0x6f5e0)" ( (binary_expression "pcVar18 + 0x6f5e0" identifier + number_literal) ))))) ;) (expression_statement "*(undefined1 **)(puVar19 + -0x30) = auStack_80;" (assignment_expression "*(undefined1 **)(puVar19 + -0x30) = auStack_80" (pointer_expression "*(undefined1 **)(puVar19 + -0x30)" * (cast_expression "(undefined1 **)(puVar19 + -0x30)" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar19 + -0x30)" ( (binary_expression "puVar19 + -0x30" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar19 + -0x3c) = unaff_s5;" (assignment_expression "*(undefined4 *)(puVar19 + -0x3c) = unaff_s5" (pointer_expression "*(undefined4 *)(puVar19 + -0x3c)" * (cast_expression "(undefined4 *)(puVar19 + -0x3c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar19 + -0x3c)" ( (binary_expression "puVar19 + -0x3c" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar19 + -0x2c) = uVar22;" (assignment_expression "*(undefined4 *)(puVar19 + -0x2c) = uVar22" (pointer_expression "*(undefined4 *)(puVar19 + -0x2c)" * (cast_expression "(undefined4 *)(puVar19 + -0x2c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar19 + -0x2c)" ( (binary_expression "puVar19 + -0x2c" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar19 + -0x34) = unaff_s7;" (assignment_expression "*(undefined4 *)(puVar19 + -0x34) = unaff_s7" (pointer_expression "*(undefined4 *)(puVar19 + -0x34)" * (cast_expression "(undefined4 *)(puVar19 + -0x34)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar19 + -0x34)" ( (binary_expression "puVar19 + -0x34" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(uint *)(puVar19 + -0x40) = param_2;" (assignment_expression "*(uint *)(puVar19 + -0x40) = param_2" (pointer_expression "*(uint *)(puVar19 + -0x40)" * (cast_expression "(uint *)(puVar19 + -0x40)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar19 + -0x40)" ( (binary_expression "puVar19 + -0x40" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int **)(puVar19 + -0x44) = piVar15;" (assignment_expression "*(int **)(puVar19 + -0x44) = piVar15" (pointer_expression "*(int **)(puVar19 + -0x44)" * (cast_expression "(int **)(puVar19 + -0x44)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar19 + -0x44)" ( (binary_expression "puVar19 + -0x44" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(uint **)(puVar19 + -0x48) = param_1;" (assignment_expression "*(uint **)(puVar19 + -0x48) = param_1" (pointer_expression "*(uint **)(puVar19 + -0x48)" * (cast_expression "(uint **)(puVar19 + -0x48)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar19 + -0x48)" ( (binary_expression "puVar19 + -0x48" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int **)(puVar19 + -0x50) = piVar11;" (assignment_expression "*(int **)(puVar19 + -0x50) = piVar11" (pointer_expression "*(int **)(puVar19 + -0x50)" * (cast_expression "(int **)(puVar19 + -0x50)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar19 + -0x50)" ( (binary_expression "puVar19 + -0x50" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(code **)(puVar19 + -0x68) = pcVar21;" (assignment_expression "*(code **)(puVar19 + -0x68) = pcVar21" (pointer_expression "*(code **)(puVar19 + -0x68)" * (cast_expression "(code **)(puVar19 + -0x68)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar19 + -0x68)" ( (binary_expression "puVar19 + -0x68" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(puVar19 + -0x54) = *piVar13;" (assignment_expression "*(int *)(puVar19 + -0x54) = *piVar13" (pointer_expression "*(int *)(puVar19 + -0x54)" * (cast_expression "(int *)(puVar19 + -0x54)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar19 + -0x54)" ( (binary_expression "puVar19 + -0x54" identifier + number_literal) )))) = (pointer_expression "*piVar13" * identifier)) ;) (if_statement "if (puVar6 < (uint *)0x30) {\n    piVar7 = (int *)piVar3[2];\n    piVar4 = (int *)(((int)puVar6 + 1U) * 4);\n    *piVar7 = *(int *)(*(int *)(pcVar18 + 0x6f5ec) + (int)piVar4);\n    piVar3[1] = (uint)(puVar6 != (uint *)0x0);\n  }\n  else {\n    iVar9 = (((uint)puVar6 >> 6) * 0x17 >> 5) + 5;\n    uVar10 = (uint)puVar6 >> 1;\n    if (*piVar3 < iVar9 * 2) {\n      pcVar18 = *(code **)(pcVar18 + 0x6f65c);\n      *(uint *)(puVar19 + -0x5c) = uVar10;\n      piVar15 = (int *)(*pcVar18)();\n      pcVar21 = *(code **)(puVar19 + -0x68);\n      uVar10 = *(uint *)(puVar19 + -0x5c);\n    }\n    else {\n      piVar15 = (int *)piVar3[2];\n    }\n    *(undefined4 *)(puVar19 + -0x58) = 0;\n    if ((uint)(iVar9 * 8) < 0x7f01) {\n      puVar20 = puVar19 + iVar9 * -8 + -0x80;\n      puVar16 = puVar19 + iVar9 * -8 + -0x68;\n    }\n    else {\n      pcVar18 = *(code **)(pcVar21 + -0x7d50);\n      *(uint *)(puVar19 + -0x5c) = uVar10;\n      puVar16 = (undefined1 *)(*pcVar18)(puVar19 + -0x58);\n      pcVar21 = *(code **)(puVar19 + -0x68);\n      uVar10 = *(uint *)(puVar19 + -0x5c);\n    }\n    piVar11 = (int *)(puVar16 + iVar9 * 4);\n    iVar9 = (**(code **)(pcVar21 + -0x7e94))(puVar16,piVar11,uVar10);\n    if (((uint)puVar6 & 1) == 0) {\n      iVar1 = (**(code **)(*(int *)(puVar19 + -0x68) + -0x7ad4))(piVar11,piVar11);\n      iVar2 = (**(code **)(*(int *)(puVar19 + -0x68) + -0x7d0c))(piVar11,piVar11,puVar16,iVar9);\n      uVar10 = (uint)(iVar1 + iVar2 != 0) + iVar9;\n      pcVar18 = *(code **)(*(int *)(puVar19 + -0x68) + -0x7d8c);\n      piVar11[iVar9] = iVar1 + iVar2;\n      *(int *)(puVar20 + 0x10) = iVar9;\n      iVar9 = iVar9 + uVar10;\n      piVar7 = piVar11;\n      iVar1 = (*pcVar18)(piVar15,piVar11,uVar10,puVar16);\n      pcVar21 = *(code **)(puVar19 + -0x68);\n    }\n    else {\n      uVar22 = (**(code **)(*(int *)(puVar19 + -0x68) + -0x7ad4))(piVar15,puVar16,iVar9,1);\n      *(undefined4 *)(puVar19 + -0x5c) = uVar22;\n      iVar1 = (**(code **)(*(int *)(puVar19 + -0x68) + -0x7d0c))(puVar16,piVar15,piVar11,iVar9);\n      iVar2 = *(int *)(puVar19 + -0x5c);\n      pcVar18 = *(code **)(*(int *)(puVar19 + -0x68) + -0x7b2c);\n      *(int *)(puVar16 + iVar9 * 4) = iVar1 + iVar2;\n      *(uint *)(puVar19 + -0x60) = (uint)(iVar1 + iVar2 != 0) + iVar9;\n      iVar1 = (*pcVar18)(piVar11,piVar15,piVar11,iVar9);\n      iVar2 = *(int *)(puVar19 + -0x60);\n      pcVar18 = *(code **)(*(int *)(puVar19 + -0x68) + -0x7d8c);\n      iVar14 = iVar9 + (*(int *)(puVar19 + -0x5c) - iVar1);\n      piVar11[iVar9] = *(int *)(puVar19 + -0x5c) - iVar1;\n      *(int *)(puVar20 + 0x10) = iVar14;\n      iVar9 = iVar2 + iVar14;\n      iVar1 = (*pcVar18)(piVar15,puVar16,iVar2,piVar11);\n      uVar10 = 0xfffffffe;\n      piVar7 = (int *)0x2;\n      pcVar21 = *(code **)(puVar19 + -0x68);\n      if (((uint)puVar6 & 2) != 0) {\n        piVar7 = (int *)0xfffffffe;\n      }\n      *piVar15 = (int)piVar7 + *piVar15;\n    }\n    piVar4 = *(int **)(puVar19 + -0x58);\n    iVar9 = iVar9 - (uint)(iVar1 == 0);\n    piVar15 = piVar15 + iVar9;\n    param_1 = (uint *)(iVar9 - (uint)(piVar15[-1] == 0));\n    piVar3[1] = (int)param_1;\n    puVar16 = puVar20;\n    if (piVar4 != (int *)0x0) {\n      (**(code **)(pcVar21 + -0x7a2c))();\n      pcVar21 = *(code **)(puVar19 + -0x68);\n    }\n  }" if (parenthesized_expression "(puVar6 < (uint *)0x30)" ( (binary_expression "puVar6 < (uint *)0x30" identifier < (cast_expression "(uint *)0x30" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    piVar7 = (int *)piVar3[2];\n    piVar4 = (int *)(((int)puVar6 + 1U) * 4);\n    *piVar7 = *(int *)(*(int *)(pcVar18 + 0x6f5ec) + (int)piVar4);\n    piVar3[1] = (uint)(puVar6 != (uint *)0x0);\n  }" { (expression_statement "piVar7 = (int *)piVar3[2];" (assignment_expression "piVar7 = (int *)piVar3[2]" identifier = (cast_expression "(int *)piVar3[2]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar3[2]" identifier [ number_literal ]))) ;) (expression_statement "piVar4 = (int *)(((int)puVar6 + 1U) * 4);" (assignment_expression "piVar4 = (int *)(((int)puVar6 + 1U) * 4)" identifier = (cast_expression "(int *)(((int)puVar6 + 1U) * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(((int)puVar6 + 1U) * 4)" ( (binary_expression "((int)puVar6 + 1U) * 4" (parenthesized_expression "((int)puVar6 + 1U)" ( (binary_expression "(int)puVar6 + 1U" (cast_expression "(int)puVar6" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )) * number_literal) )))) ;) (expression_statement "*piVar7 = *(int *)(*(int *)(pcVar18 + 0x6f5ec) + (int)piVar4);" (assignment_expression "*piVar7 = *(int *)(*(int *)(pcVar18 + 0x6f5ec) + (int)piVar4)" (pointer_expression "*piVar7" * identifier) = (pointer_expression "*(int *)(*(int *)(pcVar18 + 0x6f5ec) + (int)piVar4)" * (cast_expression "(int *)(*(int *)(pcVar18 + 0x6f5ec) + (int)piVar4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(pcVar18 + 0x6f5ec) + (int)piVar4)" ( (binary_expression "*(int *)(pcVar18 + 0x6f5ec) + (int)piVar4" (pointer_expression "*(int *)(pcVar18 + 0x6f5ec)" * (cast_expression "(int *)(pcVar18 + 0x6f5ec)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar18 + 0x6f5ec)" ( (binary_expression "pcVar18 + 0x6f5ec" identifier + number_literal) )))) + (cast_expression "(int)piVar4" ( (type_descriptor "int" primitive_type) ) identifier)) ))))) ;) (expression_statement "piVar3[1] = (uint)(puVar6 != (uint *)0x0);" (assignment_expression "piVar3[1] = (uint)(puVar6 != (uint *)0x0)" (subscript_expression "piVar3[1]" identifier [ number_literal ]) = (call_expression "(uint)(puVar6 != (uint *)0x0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(puVar6 != (uint *)0x0)" ( (binary_expression "puVar6 != (uint *)0x0" identifier != (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )))) ;) }) (else_clause "else {\n    iVar9 = (((uint)puVar6 >> 6) * 0x17 >> 5) + 5;\n    uVar10 = (uint)puVar6 >> 1;\n    if (*piVar3 < iVar9 * 2) {\n      pcVar18 = *(code **)(pcVar18 + 0x6f65c);\n      *(uint *)(puVar19 + -0x5c) = uVar10;\n      piVar15 = (int *)(*pcVar18)();\n      pcVar21 = *(code **)(puVar19 + -0x68);\n      uVar10 = *(uint *)(puVar19 + -0x5c);\n    }\n    else {\n      piVar15 = (int *)piVar3[2];\n    }\n    *(undefined4 *)(puVar19 + -0x58) = 0;\n    if ((uint)(iVar9 * 8) < 0x7f01) {\n      puVar20 = puVar19 + iVar9 * -8 + -0x80;\n      puVar16 = puVar19 + iVar9 * -8 + -0x68;\n    }\n    else {\n      pcVar18 = *(code **)(pcVar21 + -0x7d50);\n      *(uint *)(puVar19 + -0x5c) = uVar10;\n      puVar16 = (undefined1 *)(*pcVar18)(puVar19 + -0x58);\n      pcVar21 = *(code **)(puVar19 + -0x68);\n      uVar10 = *(uint *)(puVar19 + -0x5c);\n    }\n    piVar11 = (int *)(puVar16 + iVar9 * 4);\n    iVar9 = (**(code **)(pcVar21 + -0x7e94))(puVar16,piVar11,uVar10);\n    if (((uint)puVar6 & 1) == 0) {\n      iVar1 = (**(code **)(*(int *)(puVar19 + -0x68) + -0x7ad4))(piVar11,piVar11);\n      iVar2 = (**(code **)(*(int *)(puVar19 + -0x68) + -0x7d0c))(piVar11,piVar11,puVar16,iVar9);\n      uVar10 = (uint)(iVar1 + iVar2 != 0) + iVar9;\n      pcVar18 = *(code **)(*(int *)(puVar19 + -0x68) + -0x7d8c);\n      piVar11[iVar9] = iVar1 + iVar2;\n      *(int *)(puVar20 + 0x10) = iVar9;\n      iVar9 = iVar9 + uVar10;\n      piVar7 = piVar11;\n      iVar1 = (*pcVar18)(piVar15,piVar11,uVar10,puVar16);\n      pcVar21 = *(code **)(puVar19 + -0x68);\n    }\n    else {\n      uVar22 = (**(code **)(*(int *)(puVar19 + -0x68) + -0x7ad4))(piVar15,puVar16,iVar9,1);\n      *(undefined4 *)(puVar19 + -0x5c) = uVar22;\n      iVar1 = (**(code **)(*(int *)(puVar19 + -0x68) + -0x7d0c))(puVar16,piVar15,piVar11,iVar9);\n      iVar2 = *(int *)(puVar19 + -0x5c);\n      pcVar18 = *(code **)(*(int *)(puVar19 + -0x68) + -0x7b2c);\n      *(int *)(puVar16 + iVar9 * 4) = iVar1 + iVar2;\n      *(uint *)(puVar19 + -0x60) = (uint)(iVar1 + iVar2 != 0) + iVar9;\n      iVar1 = (*pcVar18)(piVar11,piVar15,piVar11,iVar9);\n      iVar2 = *(int *)(puVar19 + -0x60);\n      pcVar18 = *(code **)(*(int *)(puVar19 + -0x68) + -0x7d8c);\n      iVar14 = iVar9 + (*(int *)(puVar19 + -0x5c) - iVar1);\n      piVar11[iVar9] = *(int *)(puVar19 + -0x5c) - iVar1;\n      *(int *)(puVar20 + 0x10) = iVar14;\n      iVar9 = iVar2 + iVar14;\n      iVar1 = (*pcVar18)(piVar15,puVar16,iVar2,piVar11);\n      uVar10 = 0xfffffffe;\n      piVar7 = (int *)0x2;\n      pcVar21 = *(code **)(puVar19 + -0x68);\n      if (((uint)puVar6 & 2) != 0) {\n        piVar7 = (int *)0xfffffffe;\n      }\n      *piVar15 = (int)piVar7 + *piVar15;\n    }\n    piVar4 = *(int **)(puVar19 + -0x58);\n    iVar9 = iVar9 - (uint)(iVar1 == 0);\n    piVar15 = piVar15 + iVar9;\n    param_1 = (uint *)(iVar9 - (uint)(piVar15[-1] == 0));\n    piVar3[1] = (int)param_1;\n    puVar16 = puVar20;\n    if (piVar4 != (int *)0x0) {\n      (**(code **)(pcVar21 + -0x7a2c))();\n      pcVar21 = *(code **)(puVar19 + -0x68);\n    }\n  }" else (compound_statement "{\n    iVar9 = (((uint)puVar6 >> 6) * 0x17 >> 5) + 5;\n    uVar10 = (uint)puVar6 >> 1;\n    if (*piVar3 < iVar9 * 2) {\n      pcVar18 = *(code **)(pcVar18 + 0x6f65c);\n      *(uint *)(puVar19 + -0x5c) = uVar10;\n      piVar15 = (int *)(*pcVar18)();\n      pcVar21 = *(code **)(puVar19 + -0x68);\n      uVar10 = *(uint *)(puVar19 + -0x5c);\n    }\n    else {\n      piVar15 = (int *)piVar3[2];\n    }\n    *(undefined4 *)(puVar19 + -0x58) = 0;\n    if ((uint)(iVar9 * 8) < 0x7f01) {\n      puVar20 = puVar19 + iVar9 * -8 + -0x80;\n      puVar16 = puVar19 + iVar9 * -8 + -0x68;\n    }\n    else {\n      pcVar18 = *(code **)(pcVar21 + -0x7d50);\n      *(uint *)(puVar19 + -0x5c) = uVar10;\n      puVar16 = (undefined1 *)(*pcVar18)(puVar19 + -0x58);\n      pcVar21 = *(code **)(puVar19 + -0x68);\n      uVar10 = *(uint *)(puVar19 + -0x5c);\n    }\n    piVar11 = (int *)(puVar16 + iVar9 * 4);\n    iVar9 = (**(code **)(pcVar21 + -0x7e94))(puVar16,piVar11,uVar10);\n    if (((uint)puVar6 & 1) == 0) {\n      iVar1 = (**(code **)(*(int *)(puVar19 + -0x68) + -0x7ad4))(piVar11,piVar11);\n      iVar2 = (**(code **)(*(int *)(puVar19 + -0x68) + -0x7d0c))(piVar11,piVar11,puVar16,iVar9);\n      uVar10 = (uint)(iVar1 + iVar2 != 0) + iVar9;\n      pcVar18 = *(code **)(*(int *)(puVar19 + -0x68) + -0x7d8c);\n      piVar11[iVar9] = iVar1 + iVar2;\n      *(int *)(puVar20 + 0x10) = iVar9;\n      iVar9 = iVar9 + uVar10;\n      piVar7 = piVar11;\n      iVar1 = (*pcVar18)(piVar15,piVar11,uVar10,puVar16);\n      pcVar21 = *(code **)(puVar19 + -0x68);\n    }\n    else {\n      uVar22 = (**(code **)(*(int *)(puVar19 + -0x68) + -0x7ad4))(piVar15,puVar16,iVar9,1);\n      *(undefined4 *)(puVar19 + -0x5c) = uVar22;\n      iVar1 = (**(code **)(*(int *)(puVar19 + -0x68) + -0x7d0c))(puVar16,piVar15,piVar11,iVar9);\n      iVar2 = *(int *)(puVar19 + -0x5c);\n      pcVar18 = *(code **)(*(int *)(puVar19 + -0x68) + -0x7b2c);\n      *(int *)(puVar16 + iVar9 * 4) = iVar1 + iVar2;\n      *(uint *)(puVar19 + -0x60) = (uint)(iVar1 + iVar2 != 0) + iVar9;\n      iVar1 = (*pcVar18)(piVar11,piVar15,piVar11,iVar9);\n      iVar2 = *(int *)(puVar19 + -0x60);\n      pcVar18 = *(code **)(*(int *)(puVar19 + -0x68) + -0x7d8c);\n      iVar14 = iVar9 + (*(int *)(puVar19 + -0x5c) - iVar1);\n      piVar11[iVar9] = *(int *)(puVar19 + -0x5c) - iVar1;\n      *(int *)(puVar20 + 0x10) = iVar14;\n      iVar9 = iVar2 + iVar14;\n      iVar1 = (*pcVar18)(piVar15,puVar16,iVar2,piVar11);\n      uVar10 = 0xfffffffe;\n      piVar7 = (int *)0x2;\n      pcVar21 = *(code **)(puVar19 + -0x68);\n      if (((uint)puVar6 & 2) != 0) {\n        piVar7 = (int *)0xfffffffe;\n      }\n      *piVar15 = (int)piVar7 + *piVar15;\n    }\n    piVar4 = *(int **)(puVar19 + -0x58);\n    iVar9 = iVar9 - (uint)(iVar1 == 0);\n    piVar15 = piVar15 + iVar9;\n    param_1 = (uint *)(iVar9 - (uint)(piVar15[-1] == 0));\n    piVar3[1] = (int)param_1;\n    puVar16 = puVar20;\n    if (piVar4 != (int *)0x0) {\n      (**(code **)(pcVar21 + -0x7a2c))();\n      pcVar21 = *(code **)(puVar19 + -0x68);\n    }\n  }" { (expression_statement "iVar9 = (((uint)puVar6 >> 6) * 0x17 >> 5) + 5;" (assignment_expression "iVar9 = (((uint)puVar6 >> 6) * 0x17 >> 5) + 5" identifier = (binary_expression "(((uint)puVar6 >> 6) * 0x17 >> 5) + 5" (parenthesized_expression "(((uint)puVar6 >> 6) * 0x17 >> 5)" ( (binary_expression "((uint)puVar6 >> 6) * 0x17 >> 5" (binary_expression "((uint)puVar6 >> 6) * 0x17" (parenthesized_expression "((uint)puVar6 >> 6)" ( (binary_expression "(uint)puVar6 >> 6" (cast_expression "(uint)puVar6" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) )) * number_literal) >> number_literal) )) + number_literal)) ;) (expression_statement "uVar10 = (uint)puVar6 >> 1;" (assignment_expression "uVar10 = (uint)puVar6 >> 1" identifier = (binary_expression "(uint)puVar6 >> 1" (cast_expression "(uint)puVar6" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal)) ;) (if_statement "if (*piVar3 < iVar9 * 2) {\n      pcVar18 = *(code **)(pcVar18 + 0x6f65c);\n      *(uint *)(puVar19 + -0x5c) = uVar10;\n      piVar15 = (int *)(*pcVar18)();\n      pcVar21 = *(code **)(puVar19 + -0x68);\n      uVar10 = *(uint *)(puVar19 + -0x5c);\n    }\n    else {\n      piVar15 = (int *)piVar3[2];\n    }" if (parenthesized_expression "(*piVar3 < iVar9 * 2)" ( (binary_expression "*piVar3 < iVar9 * 2" (pointer_expression "*piVar3" * identifier) < (binary_expression "iVar9 * 2" identifier * number_literal)) )) (compound_statement "{\n      pcVar18 = *(code **)(pcVar18 + 0x6f65c);\n      *(uint *)(puVar19 + -0x5c) = uVar10;\n      piVar15 = (int *)(*pcVar18)();\n      pcVar21 = *(code **)(puVar19 + -0x68);\n      uVar10 = *(uint *)(puVar19 + -0x5c);\n    }" { (expression_statement "pcVar18 = *(code **)(pcVar18 + 0x6f65c);" (assignment_expression "pcVar18 = *(code **)(pcVar18 + 0x6f65c)" identifier = (pointer_expression "*(code **)(pcVar18 + 0x6f65c)" * (cast_expression "(code **)(pcVar18 + 0x6f65c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar18 + 0x6f65c)" ( (binary_expression "pcVar18 + 0x6f65c" identifier + number_literal) ))))) ;) (expression_statement "*(uint *)(puVar19 + -0x5c) = uVar10;" (assignment_expression "*(uint *)(puVar19 + -0x5c) = uVar10" (pointer_expression "*(uint *)(puVar19 + -0x5c)" * (cast_expression "(uint *)(puVar19 + -0x5c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar19 + -0x5c)" ( (binary_expression "puVar19 + -0x5c" identifier + number_literal) )))) = identifier) ;) (expression_statement "piVar15 = (int *)(*pcVar18)();" (assignment_expression "piVar15 = (int *)(*pcVar18)()" identifier = (cast_expression "(int *)(*pcVar18)()" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "(*pcVar18)()" (parenthesized_expression "(*pcVar18)" ( (pointer_expression "*pcVar18" * identifier) )) (argument_list "()" ( ))))) ;) (expression_statement "pcVar21 = *(code **)(puVar19 + -0x68);" (assignment_expression "pcVar21 = *(code **)(puVar19 + -0x68)" identifier = (pointer_expression "*(code **)(puVar19 + -0x68)" * (cast_expression "(code **)(puVar19 + -0x68)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar19 + -0x68)" ( (binary_expression "puVar19 + -0x68" identifier + number_literal) ))))) ;) (expression_statement "uVar10 = *(uint *)(puVar19 + -0x5c);" (assignment_expression "uVar10 = *(uint *)(puVar19 + -0x5c)" identifier = (pointer_expression "*(uint *)(puVar19 + -0x5c)" * (cast_expression "(uint *)(puVar19 + -0x5c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar19 + -0x5c)" ( (binary_expression "puVar19 + -0x5c" identifier + number_literal) ))))) ;) }) (else_clause "else {\n      piVar15 = (int *)piVar3[2];\n    }" else (compound_statement "{\n      piVar15 = (int *)piVar3[2];\n    }" { (expression_statement "piVar15 = (int *)piVar3[2];" (assignment_expression "piVar15 = (int *)piVar3[2]" identifier = (cast_expression "(int *)piVar3[2]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar3[2]" identifier [ number_literal ]))) ;) }))) (expression_statement "*(undefined4 *)(puVar19 + -0x58) = 0;" (assignment_expression "*(undefined4 *)(puVar19 + -0x58) = 0" (pointer_expression "*(undefined4 *)(puVar19 + -0x58)" * (cast_expression "(undefined4 *)(puVar19 + -0x58)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar19 + -0x58)" ( (binary_expression "puVar19 + -0x58" identifier + number_literal) )))) = number_literal) ;) (if_statement "if ((uint)(iVar9 * 8) < 0x7f01) {\n      puVar20 = puVar19 + iVar9 * -8 + -0x80;\n      puVar16 = puVar19 + iVar9 * -8 + -0x68;\n    }\n    else {\n      pcVar18 = *(code **)(pcVar21 + -0x7d50);\n      *(uint *)(puVar19 + -0x5c) = uVar10;\n      puVar16 = (undefined1 *)(*pcVar18)(puVar19 + -0x58);\n      pcVar21 = *(code **)(puVar19 + -0x68);\n      uVar10 = *(uint *)(puVar19 + -0x5c);\n    }" if (parenthesized_expression "((uint)(iVar9 * 8) < 0x7f01)" ( (binary_expression "(uint)(iVar9 * 8) < 0x7f01" (call_expression "(uint)(iVar9 * 8)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(iVar9 * 8)" ( (binary_expression "iVar9 * 8" identifier * number_literal) ))) < number_literal) )) (compound_statement "{\n      puVar20 = puVar19 + iVar9 * -8 + -0x80;\n      puVar16 = puVar19 + iVar9 * -8 + -0x68;\n    }" { (expression_statement "puVar20 = puVar19 + iVar9 * -8 + -0x80;" (assignment_expression "puVar20 = puVar19 + iVar9 * -8 + -0x80" identifier = (binary_expression "puVar19 + iVar9 * -8 + -0x80" (binary_expression "puVar19 + iVar9 * -8" identifier + (binary_expression "iVar9 * -8" identifier * number_literal)) + number_literal)) ;) (expression_statement "puVar16 = puVar19 + iVar9 * -8 + -0x68;" (assignment_expression "puVar16 = puVar19 + iVar9 * -8 + -0x68" identifier = (binary_expression "puVar19 + iVar9 * -8 + -0x68" (binary_expression "puVar19 + iVar9 * -8" identifier + (binary_expression "iVar9 * -8" identifier * number_literal)) + number_literal)) ;) }) (else_clause "else {\n      pcVar18 = *(code **)(pcVar21 + -0x7d50);\n      *(uint *)(puVar19 + -0x5c) = uVar10;\n      puVar16 = (undefined1 *)(*pcVar18)(puVar19 + -0x58);\n      pcVar21 = *(code **)(puVar19 + -0x68);\n      uVar10 = *(uint *)(puVar19 + -0x5c);\n    }" else (compound_statement "{\n      pcVar18 = *(code **)(pcVar21 + -0x7d50);\n      *(uint *)(puVar19 + -0x5c) = uVar10;\n      puVar16 = (undefined1 *)(*pcVar18)(puVar19 + -0x58);\n      pcVar21 = *(code **)(puVar19 + -0x68);\n      uVar10 = *(uint *)(puVar19 + -0x5c);\n    }" { (expression_statement "pcVar18 = *(code **)(pcVar21 + -0x7d50);" (assignment_expression "pcVar18 = *(code **)(pcVar21 + -0x7d50)" identifier = (pointer_expression "*(code **)(pcVar21 + -0x7d50)" * (cast_expression "(code **)(pcVar21 + -0x7d50)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar21 + -0x7d50)" ( (binary_expression "pcVar21 + -0x7d50" identifier + number_literal) ))))) ;) (expression_statement "*(uint *)(puVar19 + -0x5c) = uVar10;" (assignment_expression "*(uint *)(puVar19 + -0x5c) = uVar10" (pointer_expression "*(uint *)(puVar19 + -0x5c)" * (cast_expression "(uint *)(puVar19 + -0x5c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar19 + -0x5c)" ( (binary_expression "puVar19 + -0x5c" identifier + number_literal) )))) = identifier) ;) (expression_statement "puVar16 = (undefined1 *)(*pcVar18)(puVar19 + -0x58);" (assignment_expression "puVar16 = (undefined1 *)(*pcVar18)(puVar19 + -0x58)" identifier = (cast_expression "(undefined1 *)(*pcVar18)(puVar19 + -0x58)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(*pcVar18)(puVar19 + -0x58)" (parenthesized_expression "(*pcVar18)" ( (pointer_expression "*pcVar18" * identifier) )) (argument_list "(puVar19 + -0x58)" ( (binary_expression "puVar19 + -0x58" identifier + number_literal) ))))) ;) (expression_statement "pcVar21 = *(code **)(puVar19 + -0x68);" (assignment_expression "pcVar21 = *(code **)(puVar19 + -0x68)" identifier = (pointer_expression "*(code **)(puVar19 + -0x68)" * (cast_expression "(code **)(puVar19 + -0x68)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar19 + -0x68)" ( (binary_expression "puVar19 + -0x68" identifier + number_literal) ))))) ;) (expression_statement "uVar10 = *(uint *)(puVar19 + -0x5c);" (assignment_expression "uVar10 = *(uint *)(puVar19 + -0x5c)" identifier = (pointer_expression "*(uint *)(puVar19 + -0x5c)" * (cast_expression "(uint *)(puVar19 + -0x5c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar19 + -0x5c)" ( (binary_expression "puVar19 + -0x5c" identifier + number_literal) ))))) ;) }))) (expression_statement "piVar11 = (int *)(puVar16 + iVar9 * 4);" (assignment_expression "piVar11 = (int *)(puVar16 + iVar9 * 4)" identifier = (cast_expression "(int *)(puVar16 + iVar9 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + iVar9 * 4)" ( (binary_expression "puVar16 + iVar9 * 4" identifier + (binary_expression "iVar9 * 4" identifier * number_literal)) )))) ;) (expression_statement "iVar9 = (**(code **)(pcVar21 + -0x7e94))(puVar16,piVar11,uVar10);" (assignment_expression "iVar9 = (**(code **)(pcVar21 + -0x7e94))(puVar16,piVar11,uVar10)" identifier = (call_expression "(**(code **)(pcVar21 + -0x7e94))(puVar16,piVar11,uVar10)" (parenthesized_expression "(**(code **)(pcVar21 + -0x7e94))" ( (pointer_expression "**(code **)(pcVar21 + -0x7e94)" * (pointer_expression "*(code **)(pcVar21 + -0x7e94)" * (cast_expression "(code **)(pcVar21 + -0x7e94)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar21 + -0x7e94)" ( (binary_expression "pcVar21 + -0x7e94" identifier + number_literal) ))))) )) (argument_list "(puVar16,piVar11,uVar10)" ( identifier , identifier , identifier )))) ;) (if_statement "if (((uint)puVar6 & 1) == 0) {\n      iVar1 = (**(code **)(*(int *)(puVar19 + -0x68) + -0x7ad4))(piVar11,piVar11);\n      iVar2 = (**(code **)(*(int *)(puVar19 + -0x68) + -0x7d0c))(piVar11,piVar11,puVar16,iVar9);\n      uVar10 = (uint)(iVar1 + iVar2 != 0) + iVar9;\n      pcVar18 = *(code **)(*(int *)(puVar19 + -0x68) + -0x7d8c);\n      piVar11[iVar9] = iVar1 + iVar2;\n      *(int *)(puVar20 + 0x10) = iVar9;\n      iVar9 = iVar9 + uVar10;\n      piVar7 = piVar11;\n      iVar1 = (*pcVar18)(piVar15,piVar11,uVar10,puVar16);\n      pcVar21 = *(code **)(puVar19 + -0x68);\n    }\n    else {\n      uVar22 = (**(code **)(*(int *)(puVar19 + -0x68) + -0x7ad4))(piVar15,puVar16,iVar9,1);\n      *(undefined4 *)(puVar19 + -0x5c) = uVar22;\n      iVar1 = (**(code **)(*(int *)(puVar19 + -0x68) + -0x7d0c))(puVar16,piVar15,piVar11,iVar9);\n      iVar2 = *(int *)(puVar19 + -0x5c);\n      pcVar18 = *(code **)(*(int *)(puVar19 + -0x68) + -0x7b2c);\n      *(int *)(puVar16 + iVar9 * 4) = iVar1 + iVar2;\n      *(uint *)(puVar19 + -0x60) = (uint)(iVar1 + iVar2 != 0) + iVar9;\n      iVar1 = (*pcVar18)(piVar11,piVar15,piVar11,iVar9);\n      iVar2 = *(int *)(puVar19 + -0x60);\n      pcVar18 = *(code **)(*(int *)(puVar19 + -0x68) + -0x7d8c);\n      iVar14 = iVar9 + (*(int *)(puVar19 + -0x5c) - iVar1);\n      piVar11[iVar9] = *(int *)(puVar19 + -0x5c) - iVar1;\n      *(int *)(puVar20 + 0x10) = iVar14;\n      iVar9 = iVar2 + iVar14;\n      iVar1 = (*pcVar18)(piVar15,puVar16,iVar2,piVar11);\n      uVar10 = 0xfffffffe;\n      piVar7 = (int *)0x2;\n      pcVar21 = *(code **)(puVar19 + -0x68);\n      if (((uint)puVar6 & 2) != 0) {\n        piVar7 = (int *)0xfffffffe;\n      }\n      *piVar15 = (int)piVar7 + *piVar15;\n    }" if (parenthesized_expression "(((uint)puVar6 & 1) == 0)" ( (binary_expression "((uint)puVar6 & 1) == 0" (parenthesized_expression "((uint)puVar6 & 1)" ( (binary_expression "(uint)puVar6 & 1" (cast_expression "(uint)puVar6" ( (type_descriptor "uint" type_identifier) ) identifier) & number_literal) )) == number_literal) )) (compound_statement "{\n      iVar1 = (**(code **)(*(int *)(puVar19 + -0x68) + -0x7ad4))(piVar11,piVar11);\n      iVar2 = (**(code **)(*(int *)(puVar19 + -0x68) + -0x7d0c))(piVar11,piVar11,puVar16,iVar9);\n      uVar10 = (uint)(iVar1 + iVar2 != 0) + iVar9;\n      pcVar18 = *(code **)(*(int *)(puVar19 + -0x68) + -0x7d8c);\n      piVar11[iVar9] = iVar1 + iVar2;\n      *(int *)(puVar20 + 0x10) = iVar9;\n      iVar9 = iVar9 + uVar10;\n      piVar7 = piVar11;\n      iVar1 = (*pcVar18)(piVar15,piVar11,uVar10,puVar16);\n      pcVar21 = *(code **)(puVar19 + -0x68);\n    }" { (expression_statement "iVar1 = (**(code **)(*(int *)(puVar19 + -0x68) + -0x7ad4))(piVar11,piVar11);" (assignment_expression "iVar1 = (**(code **)(*(int *)(puVar19 + -0x68) + -0x7ad4))(piVar11,piVar11)" identifier = (call_expression "(**(code **)(*(int *)(puVar19 + -0x68) + -0x7ad4))(piVar11,piVar11)" (parenthesized_expression "(**(code **)(*(int *)(puVar19 + -0x68) + -0x7ad4))" ( (pointer_expression "**(code **)(*(int *)(puVar19 + -0x68) + -0x7ad4)" * (pointer_expression "*(code **)(*(int *)(puVar19 + -0x68) + -0x7ad4)" * (cast_expression "(code **)(*(int *)(puVar19 + -0x68) + -0x7ad4)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)(puVar19 + -0x68) + -0x7ad4)" ( (binary_expression "*(int *)(puVar19 + -0x68) + -0x7ad4" (pointer_expression "*(int *)(puVar19 + -0x68)" * (cast_expression "(int *)(puVar19 + -0x68)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar19 + -0x68)" ( (binary_expression "puVar19 + -0x68" identifier + number_literal) )))) + number_literal) ))))) )) (argument_list "(piVar11,piVar11)" ( identifier , identifier )))) ;) (expression_statement "iVar2 = (**(code **)(*(int *)(puVar19 + -0x68) + -0x7d0c))(piVar11,piVar11,puVar16,iVar9);" (assignment_expression "iVar2 = (**(code **)(*(int *)(puVar19 + -0x68) + -0x7d0c))(piVar11,piVar11,puVar16,iVar9)" identifier = (call_expression "(**(code **)(*(int *)(puVar19 + -0x68) + -0x7d0c))(piVar11,piVar11,puVar16,iVar9)" (parenthesized_expression "(**(code **)(*(int *)(puVar19 + -0x68) + -0x7d0c))" ( (pointer_expression "**(code **)(*(int *)(puVar19 + -0x68) + -0x7d0c)" * (pointer_expression "*(code **)(*(int *)(puVar19 + -0x68) + -0x7d0c)" * (cast_expression "(code **)(*(int *)(puVar19 + -0x68) + -0x7d0c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)(puVar19 + -0x68) + -0x7d0c)" ( (binary_expression "*(int *)(puVar19 + -0x68) + -0x7d0c" (pointer_expression "*(int *)(puVar19 + -0x68)" * (cast_expression "(int *)(puVar19 + -0x68)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar19 + -0x68)" ( (binary_expression "puVar19 + -0x68" identifier + number_literal) )))) + number_literal) ))))) )) (argument_list "(piVar11,piVar11,puVar16,iVar9)" ( identifier , identifier , identifier , identifier )))) ;) (expression_statement "uVar10 = (uint)(iVar1 + iVar2 != 0) + iVar9;" (assignment_expression "uVar10 = (uint)(iVar1 + iVar2 != 0) + iVar9" identifier = (binary_expression "(uint)(iVar1 + iVar2 != 0) + iVar9" (call_expression "(uint)(iVar1 + iVar2 != 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(iVar1 + iVar2 != 0)" ( (binary_expression "iVar1 + iVar2 != 0" (binary_expression "iVar1 + iVar2" identifier + identifier) != number_literal) ))) + identifier)) ;) (expression_statement "pcVar18 = *(code **)(*(int *)(puVar19 + -0x68) + -0x7d8c);" (assignment_expression "pcVar18 = *(code **)(*(int *)(puVar19 + -0x68) + -0x7d8c)" identifier = (pointer_expression "*(code **)(*(int *)(puVar19 + -0x68) + -0x7d8c)" * (cast_expression "(code **)(*(int *)(puVar19 + -0x68) + -0x7d8c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)(puVar19 + -0x68) + -0x7d8c)" ( (binary_expression "*(int *)(puVar19 + -0x68) + -0x7d8c" (pointer_expression "*(int *)(puVar19 + -0x68)" * (cast_expression "(int *)(puVar19 + -0x68)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar19 + -0x68)" ( (binary_expression "puVar19 + -0x68" identifier + number_literal) )))) + number_literal) ))))) ;) (expression_statement "piVar11[iVar9] = iVar1 + iVar2;" (assignment_expression "piVar11[iVar9] = iVar1 + iVar2" (subscript_expression "piVar11[iVar9]" identifier [ identifier ]) = (binary_expression "iVar1 + iVar2" identifier + identifier)) ;) (expression_statement "*(int *)(puVar20 + 0x10) = iVar9;" (assignment_expression "*(int *)(puVar20 + 0x10) = iVar9" (pointer_expression "*(int *)(puVar20 + 0x10)" * (cast_expression "(int *)(puVar20 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar20 + 0x10)" ( (binary_expression "puVar20 + 0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "iVar9 = iVar9 + uVar10;" (assignment_expression "iVar9 = iVar9 + uVar10" identifier = (binary_expression "iVar9 + uVar10" identifier + identifier)) ;) (expression_statement "piVar7 = piVar11;" (assignment_expression "piVar7 = piVar11" identifier = identifier) ;) (expression_statement "iVar1 = (*pcVar18)(piVar15,piVar11,uVar10,puVar16);" (assignment_expression "iVar1 = (*pcVar18)(piVar15,piVar11,uVar10,puVar16)" identifier = (call_expression "(*pcVar18)(piVar15,piVar11,uVar10,puVar16)" (parenthesized_expression "(*pcVar18)" ( (pointer_expression "*pcVar18" * identifier) )) (argument_list "(piVar15,piVar11,uVar10,puVar16)" ( identifier , identifier , identifier , identifier )))) ;) (expression_statement "pcVar21 = *(code **)(puVar19 + -0x68);" (assignment_expression "pcVar21 = *(code **)(puVar19 + -0x68)" identifier = (pointer_expression "*(code **)(puVar19 + -0x68)" * (cast_expression "(code **)(puVar19 + -0x68)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar19 + -0x68)" ( (binary_expression "puVar19 + -0x68" identifier + number_literal) ))))) ;) }) (else_clause "else {\n      uVar22 = (**(code **)(*(int *)(puVar19 + -0x68) + -0x7ad4))(piVar15,puVar16,iVar9,1);\n      *(undefined4 *)(puVar19 + -0x5c) = uVar22;\n      iVar1 = (**(code **)(*(int *)(puVar19 + -0x68) + -0x7d0c))(puVar16,piVar15,piVar11,iVar9);\n      iVar2 = *(int *)(puVar19 + -0x5c);\n      pcVar18 = *(code **)(*(int *)(puVar19 + -0x68) + -0x7b2c);\n      *(int *)(puVar16 + iVar9 * 4) = iVar1 + iVar2;\n      *(uint *)(puVar19 + -0x60) = (uint)(iVar1 + iVar2 != 0) + iVar9;\n      iVar1 = (*pcVar18)(piVar11,piVar15,piVar11,iVar9);\n      iVar2 = *(int *)(puVar19 + -0x60);\n      pcVar18 = *(code **)(*(int *)(puVar19 + -0x68) + -0x7d8c);\n      iVar14 = iVar9 + (*(int *)(puVar19 + -0x5c) - iVar1);\n      piVar11[iVar9] = *(int *)(puVar19 + -0x5c) - iVar1;\n      *(int *)(puVar20 + 0x10) = iVar14;\n      iVar9 = iVar2 + iVar14;\n      iVar1 = (*pcVar18)(piVar15,puVar16,iVar2,piVar11);\n      uVar10 = 0xfffffffe;\n      piVar7 = (int *)0x2;\n      pcVar21 = *(code **)(puVar19 + -0x68);\n      if (((uint)puVar6 & 2) != 0) {\n        piVar7 = (int *)0xfffffffe;\n      }\n      *piVar15 = (int)piVar7 + *piVar15;\n    }" else (compound_statement "{\n      uVar22 = (**(code **)(*(int *)(puVar19 + -0x68) + -0x7ad4))(piVar15,puVar16,iVar9,1);\n      *(undefined4 *)(puVar19 + -0x5c) = uVar22;\n      iVar1 = (**(code **)(*(int *)(puVar19 + -0x68) + -0x7d0c))(puVar16,piVar15,piVar11,iVar9);\n      iVar2 = *(int *)(puVar19 + -0x5c);\n      pcVar18 = *(code **)(*(int *)(puVar19 + -0x68) + -0x7b2c);\n      *(int *)(puVar16 + iVar9 * 4) = iVar1 + iVar2;\n      *(uint *)(puVar19 + -0x60) = (uint)(iVar1 + iVar2 != 0) + iVar9;\n      iVar1 = (*pcVar18)(piVar11,piVar15,piVar11,iVar9);\n      iVar2 = *(int *)(puVar19 + -0x60);\n      pcVar18 = *(code **)(*(int *)(puVar19 + -0x68) + -0x7d8c);\n      iVar14 = iVar9 + (*(int *)(puVar19 + -0x5c) - iVar1);\n      piVar11[iVar9] = *(int *)(puVar19 + -0x5c) - iVar1;\n      *(int *)(puVar20 + 0x10) = iVar14;\n      iVar9 = iVar2 + iVar14;\n      iVar1 = (*pcVar18)(piVar15,puVar16,iVar2,piVar11);\n      uVar10 = 0xfffffffe;\n      piVar7 = (int *)0x2;\n      pcVar21 = *(code **)(puVar19 + -0x68);\n      if (((uint)puVar6 & 2) != 0) {\n        piVar7 = (int *)0xfffffffe;\n      }\n      *piVar15 = (int)piVar7 + *piVar15;\n    }" { (expression_statement "uVar22 = (**(code **)(*(int *)(puVar19 + -0x68) + -0x7ad4))(piVar15,puVar16,iVar9,1);" (assignment_expression "uVar22 = (**(code **)(*(int *)(puVar19 + -0x68) + -0x7ad4))(piVar15,puVar16,iVar9,1)" identifier = (call_expression "(**(code **)(*(int *)(puVar19 + -0x68) + -0x7ad4))(piVar15,puVar16,iVar9,1)" (parenthesized_expression "(**(code **)(*(int *)(puVar19 + -0x68) + -0x7ad4))" ( (pointer_expression "**(code **)(*(int *)(puVar19 + -0x68) + -0x7ad4)" * (pointer_expression "*(code **)(*(int *)(puVar19 + -0x68) + -0x7ad4)" * (cast_expression "(code **)(*(int *)(puVar19 + -0x68) + -0x7ad4)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)(puVar19 + -0x68) + -0x7ad4)" ( (binary_expression "*(int *)(puVar19 + -0x68) + -0x7ad4" (pointer_expression "*(int *)(puVar19 + -0x68)" * (cast_expression "(int *)(puVar19 + -0x68)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar19 + -0x68)" ( (binary_expression "puVar19 + -0x68" identifier + number_literal) )))) + number_literal) ))))) )) (argument_list "(piVar15,puVar16,iVar9,1)" ( identifier , identifier , identifier , number_literal )))) ;) (expression_statement "*(undefined4 *)(puVar19 + -0x5c) = uVar22;" (assignment_expression "*(undefined4 *)(puVar19 + -0x5c) = uVar22" (pointer_expression "*(undefined4 *)(puVar19 + -0x5c)" * (cast_expression "(undefined4 *)(puVar19 + -0x5c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar19 + -0x5c)" ( (binary_expression "puVar19 + -0x5c" identifier + number_literal) )))) = identifier) ;) (expression_statement "iVar1 = (**(code **)(*(int *)(puVar19 + -0x68) + -0x7d0c))(puVar16,piVar15,piVar11,iVar9);" (assignment_expression "iVar1 = (**(code **)(*(int *)(puVar19 + -0x68) + -0x7d0c))(puVar16,piVar15,piVar11,iVar9)" identifier = (call_expression "(**(code **)(*(int *)(puVar19 + -0x68) + -0x7d0c))(puVar16,piVar15,piVar11,iVar9)" (parenthesized_expression "(**(code **)(*(int *)(puVar19 + -0x68) + -0x7d0c))" ( (pointer_expression "**(code **)(*(int *)(puVar19 + -0x68) + -0x7d0c)" * (pointer_expression "*(code **)(*(int *)(puVar19 + -0x68) + -0x7d0c)" * (cast_expression "(code **)(*(int *)(puVar19 + -0x68) + -0x7d0c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)(puVar19 + -0x68) + -0x7d0c)" ( (binary_expression "*(int *)(puVar19 + -0x68) + -0x7d0c" (pointer_expression "*(int *)(puVar19 + -0x68)" * (cast_expression "(int *)(puVar19 + -0x68)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar19 + -0x68)" ( (binary_expression "puVar19 + -0x68" identifier + number_literal) )))) + number_literal) ))))) )) (argument_list "(puVar16,piVar15,piVar11,iVar9)" ( identifier , identifier , identifier , identifier )))) ;) (expression_statement "iVar2 = *(int *)(puVar19 + -0x5c);" (assignment_expression "iVar2 = *(int *)(puVar19 + -0x5c)" identifier = (pointer_expression "*(int *)(puVar19 + -0x5c)" * (cast_expression "(int *)(puVar19 + -0x5c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar19 + -0x5c)" ( (binary_expression "puVar19 + -0x5c" identifier + number_literal) ))))) ;) (expression_statement "pcVar18 = *(code **)(*(int *)(puVar19 + -0x68) + -0x7b2c);" (assignment_expression "pcVar18 = *(code **)(*(int *)(puVar19 + -0x68) + -0x7b2c)" identifier = (pointer_expression "*(code **)(*(int *)(puVar19 + -0x68) + -0x7b2c)" * (cast_expression "(code **)(*(int *)(puVar19 + -0x68) + -0x7b2c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)(puVar19 + -0x68) + -0x7b2c)" ( (binary_expression "*(int *)(puVar19 + -0x68) + -0x7b2c" (pointer_expression "*(int *)(puVar19 + -0x68)" * (cast_expression "(int *)(puVar19 + -0x68)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar19 + -0x68)" ( (binary_expression "puVar19 + -0x68" identifier + number_literal) )))) + number_literal) ))))) ;) (expression_statement "*(int *)(puVar16 + iVar9 * 4) = iVar1 + iVar2;" (assignment_expression "*(int *)(puVar16 + iVar9 * 4) = iVar1 + iVar2" (pointer_expression "*(int *)(puVar16 + iVar9 * 4)" * (cast_expression "(int *)(puVar16 + iVar9 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + iVar9 * 4)" ( (binary_expression "puVar16 + iVar9 * 4" identifier + (binary_expression "iVar9 * 4" identifier * number_literal)) )))) = (binary_expression "iVar1 + iVar2" identifier + identifier)) ;) (expression_statement "*(uint *)(puVar19 + -0x60) = (uint)(iVar1 + iVar2 != 0) + iVar9;" (assignment_expression "*(uint *)(puVar19 + -0x60) = (uint)(iVar1 + iVar2 != 0) + iVar9" (pointer_expression "*(uint *)(puVar19 + -0x60)" * (cast_expression "(uint *)(puVar19 + -0x60)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar19 + -0x60)" ( (binary_expression "puVar19 + -0x60" identifier + number_literal) )))) = (binary_expression "(uint)(iVar1 + iVar2 != 0) + iVar9" (call_expression "(uint)(iVar1 + iVar2 != 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(iVar1 + iVar2 != 0)" ( (binary_expression "iVar1 + iVar2 != 0" (binary_expression "iVar1 + iVar2" identifier + identifier) != number_literal) ))) + identifier)) ;) (expression_statement "iVar1 = (*pcVar18)(piVar11,piVar15,piVar11,iVar9);" (assignment_expression "iVar1 = (*pcVar18)(piVar11,piVar15,piVar11,iVar9)" identifier = (call_expression "(*pcVar18)(piVar11,piVar15,piVar11,iVar9)" (parenthesized_expression "(*pcVar18)" ( (pointer_expression "*pcVar18" * identifier) )) (argument_list "(piVar11,piVar15,piVar11,iVar9)" ( identifier , identifier , identifier , identifier )))) ;) (expression_statement "iVar2 = *(int *)(puVar19 + -0x60);" (assignment_expression "iVar2 = *(int *)(puVar19 + -0x60)" identifier = (pointer_expression "*(int *)(puVar19 + -0x60)" * (cast_expression "(int *)(puVar19 + -0x60)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar19 + -0x60)" ( (binary_expression "puVar19 + -0x60" identifier + number_literal) ))))) ;) (expression_statement "pcVar18 = *(code **)(*(int *)(puVar19 + -0x68) + -0x7d8c);" (assignment_expression "pcVar18 = *(code **)(*(int *)(puVar19 + -0x68) + -0x7d8c)" identifier = (pointer_expression "*(code **)(*(int *)(puVar19 + -0x68) + -0x7d8c)" * (cast_expression "(code **)(*(int *)(puVar19 + -0x68) + -0x7d8c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)(puVar19 + -0x68) + -0x7d8c)" ( (binary_expression "*(int *)(puVar19 + -0x68) + -0x7d8c" (pointer_expression "*(int *)(puVar19 + -0x68)" * (cast_expression "(int *)(puVar19 + -0x68)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar19 + -0x68)" ( (binary_expression "puVar19 + -0x68" identifier + number_literal) )))) + number_literal) ))))) ;) (expression_statement "iVar14 = iVar9 + (*(int *)(puVar19 + -0x5c) - iVar1);" (assignment_expression "iVar14 = iVar9 + (*(int *)(puVar19 + -0x5c) - iVar1)" identifier = (binary_expression "iVar9 + (*(int *)(puVar19 + -0x5c) - iVar1)" identifier + (parenthesized_expression "(*(int *)(puVar19 + -0x5c) - iVar1)" ( (binary_expression "*(int *)(puVar19 + -0x5c) - iVar1" (pointer_expression "*(int *)(puVar19 + -0x5c)" * (cast_expression "(int *)(puVar19 + -0x5c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar19 + -0x5c)" ( (binary_expression "puVar19 + -0x5c" identifier + number_literal) )))) - identifier) )))) ;) (expression_statement "piVar11[iVar9] = *(int *)(puVar19 + -0x5c) - iVar1;" (assignment_expression "piVar11[iVar9] = *(int *)(puVar19 + -0x5c) - iVar1" (subscript_expression "piVar11[iVar9]" identifier [ identifier ]) = (binary_expression "*(int *)(puVar19 + -0x5c) - iVar1" (pointer_expression "*(int *)(puVar19 + -0x5c)" * (cast_expression "(int *)(puVar19 + -0x5c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar19 + -0x5c)" ( (binary_expression "puVar19 + -0x5c" identifier + number_literal) )))) - identifier)) ;) (expression_statement "*(int *)(puVar20 + 0x10) = iVar14;" (assignment_expression "*(int *)(puVar20 + 0x10) = iVar14" (pointer_expression "*(int *)(puVar20 + 0x10)" * (cast_expression "(int *)(puVar20 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar20 + 0x10)" ( (binary_expression "puVar20 + 0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "iVar9 = iVar2 + iVar14;" (assignment_expression "iVar9 = iVar2 + iVar14" identifier = (binary_expression "iVar2 + iVar14" identifier + identifier)) ;) (expression_statement "iVar1 = (*pcVar18)(piVar15,puVar16,iVar2,piVar11);" (assignment_expression "iVar1 = (*pcVar18)(piVar15,puVar16,iVar2,piVar11)" identifier = (call_expression "(*pcVar18)(piVar15,puVar16,iVar2,piVar11)" (parenthesized_expression "(*pcVar18)" ( (pointer_expression "*pcVar18" * identifier) )) (argument_list "(piVar15,puVar16,iVar2,piVar11)" ( identifier , identifier , identifier , identifier )))) ;) (expression_statement "uVar10 = 0xfffffffe;" (assignment_expression "uVar10 = 0xfffffffe" identifier = number_literal) ;) (expression_statement "piVar7 = (int *)0x2;" (assignment_expression "piVar7 = (int *)0x2" identifier = (cast_expression "(int *)0x2" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "pcVar21 = *(code **)(puVar19 + -0x68);" (assignment_expression "pcVar21 = *(code **)(puVar19 + -0x68)" identifier = (pointer_expression "*(code **)(puVar19 + -0x68)" * (cast_expression "(code **)(puVar19 + -0x68)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar19 + -0x68)" ( (binary_expression "puVar19 + -0x68" identifier + number_literal) ))))) ;) (if_statement "if (((uint)puVar6 & 2) != 0) {\n        piVar7 = (int *)0xfffffffe;\n      }" if (parenthesized_expression "(((uint)puVar6 & 2) != 0)" ( (binary_expression "((uint)puVar6 & 2) != 0" (parenthesized_expression "((uint)puVar6 & 2)" ( (binary_expression "(uint)puVar6 & 2" (cast_expression "(uint)puVar6" ( (type_descriptor "uint" type_identifier) ) identifier) & number_literal) )) != number_literal) )) (compound_statement "{\n        piVar7 = (int *)0xfffffffe;\n      }" { (expression_statement "piVar7 = (int *)0xfffffffe;" (assignment_expression "piVar7 = (int *)0xfffffffe" identifier = (cast_expression "(int *)0xfffffffe" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) })) (expression_statement "*piVar15 = (int)piVar7 + *piVar15;" (assignment_expression "*piVar15 = (int)piVar7 + *piVar15" (pointer_expression "*piVar15" * identifier) = (binary_expression "(int)piVar7 + *piVar15" (cast_expression "(int)piVar7" ( (type_descriptor "int" primitive_type) ) identifier) + (pointer_expression "*piVar15" * identifier))) ;) }))) (expression_statement "piVar4 = *(int **)(puVar19 + -0x58);" (assignment_expression "piVar4 = *(int **)(puVar19 + -0x58)" identifier = (pointer_expression "*(int **)(puVar19 + -0x58)" * (cast_expression "(int **)(puVar19 + -0x58)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar19 + -0x58)" ( (binary_expression "puVar19 + -0x58" identifier + number_literal) ))))) ;) (expression_statement "iVar9 = iVar9 - (uint)(iVar1 == 0);" (assignment_expression "iVar9 = iVar9 - (uint)(iVar1 == 0)" identifier = (binary_expression "iVar9 - (uint)(iVar1 == 0)" identifier - (call_expression "(uint)(iVar1 == 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(iVar1 == 0)" ( (binary_expression "iVar1 == 0" identifier == number_literal) ))))) ;) (expression_statement "piVar15 = piVar15 + iVar9;" (assignment_expression "piVar15 = piVar15 + iVar9" identifier = (binary_expression "piVar15 + iVar9" identifier + identifier)) ;) (expression_statement "param_1 = (uint *)(iVar9 - (uint)(piVar15[-1] == 0));" (assignment_expression "param_1 = (uint *)(iVar9 - (uint)(piVar15[-1] == 0))" identifier = (cast_expression "(uint *)(iVar9 - (uint)(piVar15[-1] == 0))" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar9 - (uint)(piVar15[-1] == 0))" ( (binary_expression "iVar9 - (uint)(piVar15[-1] == 0)" identifier - (call_expression "(uint)(piVar15[-1] == 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(piVar15[-1] == 0)" ( (binary_expression "piVar15[-1] == 0" (subscript_expression "piVar15[-1]" identifier [ number_literal ]) == number_literal) )))) )))) ;) (expression_statement "piVar3[1] = (int)param_1;" (assignment_expression "piVar3[1] = (int)param_1" (subscript_expression "piVar3[1]" identifier [ number_literal ]) = (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "puVar16 = puVar20;" (assignment_expression "puVar16 = puVar20" identifier = identifier) ;) (if_statement "if (piVar4 != (int *)0x0) {\n      (**(code **)(pcVar21 + -0x7a2c))();\n      pcVar21 = *(code **)(puVar19 + -0x68);\n    }" if (parenthesized_expression "(piVar4 != (int *)0x0)" ( (binary_expression "piVar4 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      (**(code **)(pcVar21 + -0x7a2c))();\n      pcVar21 = *(code **)(puVar19 + -0x68);\n    }" { (expression_statement "(**(code **)(pcVar21 + -0x7a2c))();" (call_expression "(**(code **)(pcVar21 + -0x7a2c))()" (parenthesized_expression "(**(code **)(pcVar21 + -0x7a2c))" ( (pointer_expression "**(code **)(pcVar21 + -0x7a2c)" * (pointer_expression "*(code **)(pcVar21 + -0x7a2c)" * (cast_expression "(code **)(pcVar21 + -0x7a2c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar21 + -0x7a2c)" ( (binary_expression "pcVar21 + -0x7a2c" identifier + number_literal) ))))) )) (argument_list "()" ( ))) ;) (expression_statement "pcVar21 = *(code **)(puVar19 + -0x68);" (assignment_expression "pcVar21 = *(code **)(puVar19 + -0x68)" identifier = (pointer_expression "*(code **)(puVar19 + -0x68)" * (cast_expression "(code **)(puVar19 + -0x68)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar19 + -0x68)" ( (binary_expression "puVar19 + -0x68" identifier + number_literal) ))))) ;) })) }))) (if_statement "if (*(int *)(puVar19 + -0x54) == *piVar13) {\n    return *piVar13;\n  }" if (parenthesized_expression "(*(int *)(puVar19 + -0x54) == *piVar13)" ( (binary_expression "*(int *)(puVar19 + -0x54) == *piVar13" (pointer_expression "*(int *)(puVar19 + -0x54)" * (cast_expression "(int *)(puVar19 + -0x54)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar19 + -0x54)" ( (binary_expression "puVar19 + -0x54" identifier + number_literal) )))) == (pointer_expression "*piVar13" * identifier)) )) (compound_statement "{\n    return *piVar13;\n  }" { (return_statement "return *piVar13;" return (pointer_expression "*piVar13" * identifier) ;) })) (expression_statement "pcVar18 = *(code **)(pcVar21 + -0x7b70);" (assignment_expression "pcVar18 = *(code **)(pcVar21 + -0x7b70)" identifier = (pointer_expression "*(code **)(pcVar21 + -0x7b70)" * (cast_expression "(code **)(pcVar21 + -0x7b70)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar21 + -0x7b70)" ( (binary_expression "pcVar21 + -0x7b70" identifier + number_literal) ))))) ;) (expression_statement "uVar22 = 0x2825c;" (assignment_expression "uVar22 = 0x2825c" identifier = number_literal) ;) (expression_statement "(*pcVar18)();" (call_expression "(*pcVar18)()" (parenthesized_expression "(*pcVar18)" ( (pointer_expression "*pcVar18" * identifier) )) (argument_list "()" ( ))) ;) (expression_statement "pcVar21 = pcVar18 + 0x76de0;" (assignment_expression "pcVar21 = pcVar18 + 0x76de0" identifier = (binary_expression "pcVar18 + 0x76de0" identifier + number_literal)) ;) (expression_statement "*(code **)(puVar16 + -0x28) = pcVar21;" (assignment_expression "*(code **)(puVar16 + -0x28) = pcVar21" (pointer_expression "*(code **)(puVar16 + -0x28)" * (cast_expression "(code **)(puVar16 + -0x28)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + -0x28)" ( (binary_expression "puVar16 + -0x28" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(uint **)(puVar16 + -0xc) = param_1;" (assignment_expression "*(uint **)(puVar16 + -0xc) = param_1" (pointer_expression "*(uint **)(puVar16 + -0xc)" * (cast_expression "(uint **)(puVar16 + -0xc)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + -0xc)" ( (binary_expression "puVar16 + -0xc" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar16 + -4) = uVar22;" (assignment_expression "*(undefined4 *)(puVar16 + -4) = uVar22" (pointer_expression "*(undefined4 *)(puVar16 + -4)" * (cast_expression "(undefined4 *)(puVar16 + -4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -4)" ( (binary_expression "puVar16 + -4" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int **)(puVar16 + -8) = piVar15;" (assignment_expression "*(int **)(puVar16 + -8) = piVar15" (pointer_expression "*(int **)(puVar16 + -8)" * (cast_expression "(int **)(puVar16 + -8)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + -8)" ( (binary_expression "puVar16 + -8" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int **)(puVar16 + -0x10) = piVar13;" (assignment_expression "*(int **)(puVar16 + -0x10) = piVar13" (pointer_expression "*(int **)(puVar16 + -0x10)" * (cast_expression "(int **)(puVar16 + -0x10)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + -0x10)" ( (binary_expression "puVar16 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int **)(puVar16 + -0x14) = piVar11;" (assignment_expression "*(int **)(puVar16 + -0x14) = piVar11" (pointer_expression "*(int **)(puVar16 + -0x14)" * (cast_expression "(int **)(puVar16 + -0x14)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + -0x14)" ( (binary_expression "puVar16 + -0x14" identifier + number_literal) )))) = identifier) ;) (if_statement "if (0x2f < uVar10) {\n    iVar9 = ((uVar10 >> 5) * 0x17 >> 5) + 4;\n    if (*piVar4 < iVar9) {\n      pcVar18 = *(code **)(pcVar18 + 0x6f35c);\n      *(uint *)(puVar16 + -0x1c) = uVar10;\n      iVar1 = (*pcVar18)();\n      pcVar21 = *(code **)(puVar16 + -0x28);\n      uVar10 = *(uint *)(puVar16 + -0x1c);\n    }\n    else {\n      iVar1 = piVar4[2];\n    }\n    pcVar18 = *(code **)(pcVar21 + -0x7a84);\n    if (*piVar7 < iVar9) {\n      *(uint *)(puVar16 + -0x1c) = uVar10;\n      iVar9 = (*pcVar18)(piVar7,iVar9);\n      pcVar21 = *(code **)(puVar16 + -0x28);\n    }\n    else {\n      iVar9 = piVar7[2];\n    }\n    iVar1 = (**(code **)(pcVar21 + -0x7e94))(iVar1,iVar9);\n    piVar4[1] = iVar1;\n    iVar1 = iVar1 - (uint)(*(int *)(iVar9 + iVar1 * 4 + -4) == 0);\n    piVar7[1] = iVar1;\n    return iVar1;\n  }" if (parenthesized_expression "(0x2f < uVar10)" ( (binary_expression "0x2f < uVar10" number_literal < identifier) )) (compound_statement "{\n    iVar9 = ((uVar10 >> 5) * 0x17 >> 5) + 4;\n    if (*piVar4 < iVar9) {\n      pcVar18 = *(code **)(pcVar18 + 0x6f35c);\n      *(uint *)(puVar16 + -0x1c) = uVar10;\n      iVar1 = (*pcVar18)();\n      pcVar21 = *(code **)(puVar16 + -0x28);\n      uVar10 = *(uint *)(puVar16 + -0x1c);\n    }\n    else {\n      iVar1 = piVar4[2];\n    }\n    pcVar18 = *(code **)(pcVar21 + -0x7a84);\n    if (*piVar7 < iVar9) {\n      *(uint *)(puVar16 + -0x1c) = uVar10;\n      iVar9 = (*pcVar18)(piVar7,iVar9);\n      pcVar21 = *(code **)(puVar16 + -0x28);\n    }\n    else {\n      iVar9 = piVar7[2];\n    }\n    iVar1 = (**(code **)(pcVar21 + -0x7e94))(iVar1,iVar9);\n    piVar4[1] = iVar1;\n    iVar1 = iVar1 - (uint)(*(int *)(iVar9 + iVar1 * 4 + -4) == 0);\n    piVar7[1] = iVar1;\n    return iVar1;\n  }" { (expression_statement "iVar9 = ((uVar10 >> 5) * 0x17 >> 5) + 4;" (assignment_expression "iVar9 = ((uVar10 >> 5) * 0x17 >> 5) + 4" identifier = (binary_expression "((uVar10 >> 5) * 0x17 >> 5) + 4" (parenthesized_expression "((uVar10 >> 5) * 0x17 >> 5)" ( (binary_expression "(uVar10 >> 5) * 0x17 >> 5" (binary_expression "(uVar10 >> 5) * 0x17" (parenthesized_expression "(uVar10 >> 5)" ( (binary_expression "uVar10 >> 5" identifier >> number_literal) )) * number_literal) >> number_literal) )) + number_literal)) ;) (if_statement "if (*piVar4 < iVar9) {\n      pcVar18 = *(code **)(pcVar18 + 0x6f35c);\n      *(uint *)(puVar16 + -0x1c) = uVar10;\n      iVar1 = (*pcVar18)();\n      pcVar21 = *(code **)(puVar16 + -0x28);\n      uVar10 = *(uint *)(puVar16 + -0x1c);\n    }\n    else {\n      iVar1 = piVar4[2];\n    }" if (parenthesized_expression "(*piVar4 < iVar9)" ( (binary_expression "*piVar4 < iVar9" (pointer_expression "*piVar4" * identifier) < identifier) )) (compound_statement "{\n      pcVar18 = *(code **)(pcVar18 + 0x6f35c);\n      *(uint *)(puVar16 + -0x1c) = uVar10;\n      iVar1 = (*pcVar18)();\n      pcVar21 = *(code **)(puVar16 + -0x28);\n      uVar10 = *(uint *)(puVar16 + -0x1c);\n    }" { (expression_statement "pcVar18 = *(code **)(pcVar18 + 0x6f35c);" (assignment_expression "pcVar18 = *(code **)(pcVar18 + 0x6f35c)" identifier = (pointer_expression "*(code **)(pcVar18 + 0x6f35c)" * (cast_expression "(code **)(pcVar18 + 0x6f35c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar18 + 0x6f35c)" ( (binary_expression "pcVar18 + 0x6f35c" identifier + number_literal) ))))) ;) (expression_statement "*(uint *)(puVar16 + -0x1c) = uVar10;" (assignment_expression "*(uint *)(puVar16 + -0x1c) = uVar10" (pointer_expression "*(uint *)(puVar16 + -0x1c)" * (cast_expression "(uint *)(puVar16 + -0x1c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x1c)" ( (binary_expression "puVar16 + -0x1c" identifier + number_literal) )))) = identifier) ;) (expression_statement "iVar1 = (*pcVar18)();" (assignment_expression "iVar1 = (*pcVar18)()" identifier = (call_expression "(*pcVar18)()" (parenthesized_expression "(*pcVar18)" ( (pointer_expression "*pcVar18" * identifier) )) (argument_list "()" ( )))) ;) (expression_statement "pcVar21 = *(code **)(puVar16 + -0x28);" (assignment_expression "pcVar21 = *(code **)(puVar16 + -0x28)" identifier = (pointer_expression "*(code **)(puVar16 + -0x28)" * (cast_expression "(code **)(puVar16 + -0x28)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + -0x28)" ( (binary_expression "puVar16 + -0x28" identifier + number_literal) ))))) ;) (expression_statement "uVar10 = *(uint *)(puVar16 + -0x1c);" (assignment_expression "uVar10 = *(uint *)(puVar16 + -0x1c)" identifier = (pointer_expression "*(uint *)(puVar16 + -0x1c)" * (cast_expression "(uint *)(puVar16 + -0x1c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x1c)" ( (binary_expression "puVar16 + -0x1c" identifier + number_literal) ))))) ;) }) (else_clause "else {\n      iVar1 = piVar4[2];\n    }" else (compound_statement "{\n      iVar1 = piVar4[2];\n    }" { (expression_statement "iVar1 = piVar4[2];" (assignment_expression "iVar1 = piVar4[2]" identifier = (subscript_expression "piVar4[2]" identifier [ number_literal ])) ;) }))) (expression_statement "pcVar18 = *(code **)(pcVar21 + -0x7a84);" (assignment_expression "pcVar18 = *(code **)(pcVar21 + -0x7a84)" identifier = (pointer_expression "*(code **)(pcVar21 + -0x7a84)" * (cast_expression "(code **)(pcVar21 + -0x7a84)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar21 + -0x7a84)" ( (binary_expression "pcVar21 + -0x7a84" identifier + number_literal) ))))) ;) (if_statement "if (*piVar7 < iVar9) {\n      *(uint *)(puVar16 + -0x1c) = uVar10;\n      iVar9 = (*pcVar18)(piVar7,iVar9);\n      pcVar21 = *(code **)(puVar16 + -0x28);\n    }\n    else {\n      iVar9 = piVar7[2];\n    }" if (parenthesized_expression "(*piVar7 < iVar9)" ( (binary_expression "*piVar7 < iVar9" (pointer_expression "*piVar7" * identifier) < identifier) )) (compound_statement "{\n      *(uint *)(puVar16 + -0x1c) = uVar10;\n      iVar9 = (*pcVar18)(piVar7,iVar9);\n      pcVar21 = *(code **)(puVar16 + -0x28);\n    }" { (expression_statement "*(uint *)(puVar16 + -0x1c) = uVar10;" (assignment_expression "*(uint *)(puVar16 + -0x1c) = uVar10" (pointer_expression "*(uint *)(puVar16 + -0x1c)" * (cast_expression "(uint *)(puVar16 + -0x1c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x1c)" ( (binary_expression "puVar16 + -0x1c" identifier + number_literal) )))) = identifier) ;) (expression_statement "iVar9 = (*pcVar18)(piVar7,iVar9);" (assignment_expression "iVar9 = (*pcVar18)(piVar7,iVar9)" identifier = (call_expression "(*pcVar18)(piVar7,iVar9)" (parenthesized_expression "(*pcVar18)" ( (pointer_expression "*pcVar18" * identifier) )) (argument_list "(piVar7,iVar9)" ( identifier , identifier )))) ;) (expression_statement "pcVar21 = *(code **)(puVar16 + -0x28);" (assignment_expression "pcVar21 = *(code **)(puVar16 + -0x28)" identifier = (pointer_expression "*(code **)(puVar16 + -0x28)" * (cast_expression "(code **)(puVar16 + -0x28)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + -0x28)" ( (binary_expression "puVar16 + -0x28" identifier + number_literal) ))))) ;) }) (else_clause "else {\n      iVar9 = piVar7[2];\n    }" else (compound_statement "{\n      iVar9 = piVar7[2];\n    }" { (expression_statement "iVar9 = piVar7[2];" (assignment_expression "iVar9 = piVar7[2]" identifier = (subscript_expression "piVar7[2]" identifier [ number_literal ])) ;) }))) (expression_statement "iVar1 = (**(code **)(pcVar21 + -0x7e94))(iVar1,iVar9);" (assignment_expression "iVar1 = (**(code **)(pcVar21 + -0x7e94))(iVar1,iVar9)" identifier = (call_expression "(**(code **)(pcVar21 + -0x7e94))(iVar1,iVar9)" (parenthesized_expression "(**(code **)(pcVar21 + -0x7e94))" ( (pointer_expression "**(code **)(pcVar21 + -0x7e94)" * (pointer_expression "*(code **)(pcVar21 + -0x7e94)" * (cast_expression "(code **)(pcVar21 + -0x7e94)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar21 + -0x7e94)" ( (binary_expression "pcVar21 + -0x7e94" identifier + number_literal) ))))) )) (argument_list "(iVar1,iVar9)" ( identifier , identifier )))) ;) (expression_statement "piVar4[1] = iVar1;" (assignment_expression "piVar4[1] = iVar1" (subscript_expression "piVar4[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "iVar1 = iVar1 - (uint)(*(int *)(iVar9 + iVar1 * 4 + -4) == 0);" (assignment_expression "iVar1 = iVar1 - (uint)(*(int *)(iVar9 + iVar1 * 4 + -4) == 0)" identifier = (binary_expression "iVar1 - (uint)(*(int *)(iVar9 + iVar1 * 4 + -4) == 0)" identifier - (call_expression "(uint)(*(int *)(iVar9 + iVar1 * 4 + -4) == 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(*(int *)(iVar9 + iVar1 * 4 + -4) == 0)" ( (binary_expression "*(int *)(iVar9 + iVar1 * 4 + -4) == 0" (pointer_expression "*(int *)(iVar9 + iVar1 * 4 + -4)" * (cast_expression "(int *)(iVar9 + iVar1 * 4 + -4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar9 + iVar1 * 4 + -4)" ( (binary_expression "iVar9 + iVar1 * 4 + -4" (binary_expression "iVar9 + iVar1 * 4" identifier + (binary_expression "iVar1 * 4" identifier * number_literal)) + number_literal) )))) == number_literal) ))))) ;) (expression_statement "piVar7[1] = iVar1;" (assignment_expression "piVar7[1] = iVar1" (subscript_expression "piVar7[1]" identifier [ number_literal ]) = identifier) ;) (return_statement "return iVar1;" return identifier ;) })) (expression_statement "puVar8 = (undefined4 *)piVar7[2];" (assignment_expression "puVar8 = (undefined4 *)piVar7[2]" identifier = (cast_expression "(undefined4 *)piVar7[2]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar7[2]" identifier [ number_literal ]))) ;) (expression_statement "uVar22 = *(undefined4 *)(*(int *)(pcVar18 + 0x6f2ec) + uVar10 * 4);" (assignment_expression "uVar22 = *(undefined4 *)(*(int *)(pcVar18 + 0x6f2ec) + uVar10 * 4)" identifier = (pointer_expression "*(undefined4 *)(*(int *)(pcVar18 + 0x6f2ec) + uVar10 * 4)" * (cast_expression "(undefined4 *)(*(int *)(pcVar18 + 0x6f2ec) + uVar10 * 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(pcVar18 + 0x6f2ec) + uVar10 * 4)" ( (binary_expression "*(int *)(pcVar18 + 0x6f2ec) + uVar10 * 4" (pointer_expression "*(int *)(pcVar18 + 0x6f2ec)" * (cast_expression "(int *)(pcVar18 + 0x6f2ec)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar18 + 0x6f2ec)" ( (binary_expression "pcVar18 + 0x6f2ec" identifier + number_literal) )))) + (binary_expression "uVar10 * 4" identifier * number_literal)) ))))) ;) (expression_statement "iVar9 = *(int *)(*(int *)(pcVar18 + 0x6f2ec) + (uVar10 + 1) * 4);" (assignment_expression "iVar9 = *(int *)(*(int *)(pcVar18 + 0x6f2ec) + (uVar10 + 1) * 4)" identifier = (pointer_expression "*(int *)(*(int *)(pcVar18 + 0x6f2ec) + (uVar10 + 1) * 4)" * (cast_expression "(int *)(*(int *)(pcVar18 + 0x6f2ec) + (uVar10 + 1) * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(pcVar18 + 0x6f2ec) + (uVar10 + 1) * 4)" ( (binary_expression "*(int *)(pcVar18 + 0x6f2ec) + (uVar10 + 1) * 4" (pointer_expression "*(int *)(pcVar18 + 0x6f2ec)" * (cast_expression "(int *)(pcVar18 + 0x6f2ec)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar18 + 0x6f2ec)" ( (binary_expression "pcVar18 + 0x6f2ec" identifier + number_literal) )))) + (binary_expression "(uVar10 + 1) * 4" (parenthesized_expression "(uVar10 + 1)" ( (binary_expression "uVar10 + 1" identifier + number_literal) )) * number_literal)) ))))) ;) (expression_statement "*(int *)piVar4[2] = iVar9;" (assignment_expression "*(int *)piVar4[2] = iVar9" (pointer_expression "*(int *)piVar4[2]" * (cast_expression "(int *)piVar4[2]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar4[2]" identifier [ number_literal ]))) = identifier) ;) (expression_statement "piVar4[1] = (uint)(uVar10 != 0);" (assignment_expression "piVar4[1] = (uint)(uVar10 != 0)" (subscript_expression "piVar4[1]" identifier [ number_literal ]) = (call_expression "(uint)(uVar10 != 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar10 != 0)" ( (binary_expression "uVar10 != 0" identifier != number_literal) )))) ;) (expression_statement "*puVar8 = uVar22;" (assignment_expression "*puVar8 = uVar22" (pointer_expression "*puVar8" * identifier) = identifier) ;) (expression_statement "piVar7[1] = (uint)(uVar10 != 1);" (assignment_expression "piVar7[1] = (uint)(uVar10 != 1)" (subscript_expression "piVar7[1]" identifier [ number_literal ]) = (call_expression "(uint)(uVar10 != 1)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar10 != 1)" ( (binary_expression "uVar10 != 1" identifier != number_literal) )))) ;) (return_statement "return iVar9;" return identifier ;) })))
(translation_unit "ulong __gmpz_fdiv_r_ui(mpz_ptr rem,mpz_srcptr dividend,ulong divisor)\n\n{\n  ulong uVar1;\n  int iVar2;\n  int iVar3;\n  int *piVar4;\n  int *piVar5;\n  uint uVar6;\n  mpz_ptr p_Var7;\n  int *piVar8;\n  undefined4 *puVar9;\n  int iVar10;\n  uint uVar11;\n  int *piVar12;\n  uint uVar13;\n  ulong *puVar14;\n  int iVar15;\n  ulong *puVar16;\n  int *piVar17;\n  undefined1 *puVar18;\n  undefined4 unaff_s5;\n  undefined4 unaff_s6;\n  undefined4 unaff_s7;\n  int in_t9;\n  code *pcVar19;\n  undefined1 *puVar20;\n  undefined1 *puVar21;\n  code *pcVar22;\n  undefined4 uVar23;\n  undefined1 auStack_80 [16];\n  code *apcStack_70 [3];\n  ulong uStack_64;\n  int *piStack_5c;\n  __mpz_struct _Stack_58;\n  ulong uStack_4c;\n  \n  if (divisor != 0) {\n    iVar10 = dividend->_mp_size;\n    if (iVar10 != 0) {\n      if (iVar10 < 0) {\n        uVar1 = (**(code **)(in_t9 + 0x6f8a0))(dividend->_mp_d,-iVar10,divisor);\n      }\n      else {\n        uVar1 = (**(code **)(in_t9 + 0x6f8a0))(dividend->_mp_d,iVar10,divisor);\n      }\n      if (uVar1 != 0) {\n        if (iVar10 < 0) {\n          uVar1 = divisor - uVar1;\n          *rem->_mp_d = uVar1;\n          rem->_mp_size = 1;\n        }\n        else {\n          *rem->_mp_d = uVar1;\n          rem->_mp_size = 1;\n        }\n        return uVar1;\n      }\n    }\n    rem->_mp_size = 0;\n    return 0;\n  }\n  pcVar19 = *(code **)(in_t9 + 0x6f9bc);\n  (*pcVar19)();\n  apcStack_70[0] = pcVar19 + 0x77320;\n  puVar20 = auStack_80;\n  puVar16 = *(ulong **)(pcVar19 + 0x6f820);\n  uVar11 = *(uint *)(divisor + 4);\n  piStack_5c = (int *)0x0;\n  uStack_4c = *puVar16;\n  uVar13 = dividend->_mp_size;\n  if ((int)uVar11 < 0) {\n    _Stack_58._mp_alloc = -uVar11;\n    uVar6 = uVar11 * -4;\n    if (0x7f00 < uVar6) {\n      pcVar19 = *(code **)(pcVar19 + 0x6f5d0);\n      goto LAB_00027e2c;\n    }\nLAB_00027d94:\n    iVar10 = -(uVar6 + 7 & 0xfffffff8);\n    puVar20 = auStack_80 + iVar10;\n    _Stack_58._mp_d = (mp_limb_t *)((int)apcStack_70 + iVar10);\n  }\n  else {\n    uVar6 = uVar11 * 4;\n    pcVar19 = *(code **)(pcVar19 + 0x6f5d0);\n    _Stack_58._mp_alloc = uVar11;\n    if (uVar6 < 0x7f01) goto LAB_00027d94;\nLAB_00027e2c:\n    uStack_64 = divisor;\n    _Stack_58._mp_d = (mp_limb_t *)(*pcVar19)(&piStack_5c,uVar6);\n    divisor = uStack_64;\n  }\n  p_Var7 = &_Stack_58;\n  uVar11 = uVar13 ^ uVar11;\n  (**(code **)(apcStack_70[0] + -0x7a6c))(rem,p_Var7,dividend,divisor);\n  if (((int)uVar11 < 0) && (_Stack_58._mp_size != 0)) {\n    p_Var7 = rem;\n    (**(code **)(apcStack_70[0] + -0x7ac0))(rem,rem,1);\n    piVar4 = piStack_5c;\n    if (piStack_5c == (int *)0x0) goto LAB_00027dd8;\n    pcVar19 = *(code **)(apcStack_70[0] + -0x7a2c);\n  }\n  else {\n    pcVar19 = *(code **)(apcStack_70[0] + -0x7a2c);\n    piVar4 = piStack_5c;\n    if (piStack_5c == (int *)0x0) goto LAB_00027dd8;\n  }\n  piVar4 = piStack_5c;\n  (*pcVar19)();\nLAB_00027dd8:\n  if (uStack_4c == *puVar16) {\n    return *puVar16;\n  }\n  pcVar19 = *(code **)(apcStack_70[0] + -0x7b70);\n  pcVar22 = __gmpz_fdiv_ui;\n  (*pcVar19)();\n  *(code **)(puVar20 + -0x18) = pcVar19 + 0x771b0;\n  *(code **)(puVar20 + -4) = pcVar22;\n  *(uint *)(puVar20 + -8) = uVar13;\n  *(uint *)(puVar20 + -0xc) = uVar11;\n  if (p_Var7 != (mpz_ptr)0x0) {\n    iVar10 = piVar4[1];\n    if (iVar10 == 0) {\n      return 0;\n    }\n    if (iVar10 < 0) {\n      uVar1 = (**(code **)(pcVar19 + 0x6f630))(piVar4[2],-iVar10,p_Var7);\n    }\n    else {\n      uVar1 = (**(code **)(pcVar19 + 0x6f630))(piVar4[2],iVar10,p_Var7);\n    }\n    if ((uVar1 != 0) && (iVar10 < 0)) {\n      return (int)p_Var7 - uVar1;\n    }\n    return uVar1;\n  }\n  pcVar19 = *(code **)(pcVar19 + 0x6f74c);\n  uVar23 = 0x27f54;\n  (*pcVar19)();\n  pcVar22 = pcVar19 + 0x770e0;\n  puVar21 = puVar20 + -0x80;\n  *(uint *)(puVar20 + -0x4c) = uVar13;\n  *(undefined4 *)(puVar20 + -0x38) = unaff_s6;\n  puVar14 = *(ulong **)(pcVar19 + 0x6f5e0);\n  *(undefined1 **)(puVar20 + -0x30) = auStack_80;\n  *(undefined4 *)(puVar20 + -0x3c) = unaff_s5;\n  *(undefined4 *)(puVar20 + -0x2c) = uVar23;\n  *(undefined4 *)(puVar20 + -0x34) = unaff_s7;\n  *(mpz_srcptr *)(puVar20 + -0x40) = dividend;\n  *(ulong **)(puVar20 + -0x44) = puVar16;\n  *(mpz_ptr *)(puVar20 + -0x48) = rem;\n  *(uint *)(puVar20 + -0x50) = uVar11;\n  *(code **)(puVar20 + -0x68) = pcVar22;\n  *(ulong *)(puVar20 + -0x54) = *puVar14;\n  if (p_Var7 < (mpz_ptr)0x30) {\n    *(undefined4 *)piVar4[2] =\n         *(undefined4 *)(*(int *)(pcVar19 + 0x6f5ec) + (int)((int)&p_Var7->_mp_alloc + 1) * 4);\n    piVar4[1] = (uint)(p_Var7 != (mpz_ptr)0x0);\n    uVar1 = FUN_000280d0();\n    return uVar1;\n  }\n  iVar10 = (((uint)p_Var7 >> 6) * 0x17 >> 5) + 5;\n  uVar11 = (uint)p_Var7 >> 1;\n  if (*piVar4 < iVar10 * 2) {\n    pcVar19 = *(code **)(pcVar19 + 0x6f65c);\n    *(uint *)(puVar20 + -0x5c) = uVar11;\n    piVar17 = (int *)(*pcVar19)();\n    pcVar22 = *(code **)(puVar20 + -0x68);\n    uVar11 = *(uint *)(puVar20 + -0x5c);\n  }\n  else {\n    piVar17 = (int *)piVar4[2];\n  }\n  *(undefined4 *)(puVar20 + -0x58) = 0;\n  if ((uint)(iVar10 * 8) < 0x7f01) {\n    puVar21 = puVar20 + iVar10 * -8 + -0x80;\n    puVar18 = puVar20 + iVar10 * -8 + -0x68;\n  }\n  else {\n    pcVar19 = *(code **)(pcVar22 + -0x7d50);\n    *(uint *)(puVar20 + -0x5c) = uVar11;\n    puVar18 = (undefined1 *)(*pcVar19)(puVar20 + -0x58);\n    pcVar22 = *(code **)(puVar20 + -0x68);\n    uVar11 = *(uint *)(puVar20 + -0x5c);\n  }\n  piVar12 = (int *)(puVar18 + iVar10 * 4);\n  iVar10 = (**(code **)(pcVar22 + -0x7e94))(puVar18,piVar12,uVar11);\n  if (((uint)p_Var7 & 1) == 0) {\n    iVar2 = (**(code **)(*(int *)(puVar20 + -0x68) + -0x7ad4))(piVar12,piVar12);\n    iVar3 = (**(code **)(*(int *)(puVar20 + -0x68) + -0x7d0c))(piVar12,piVar12,puVar18,iVar10);\n    uVar11 = (uint)(iVar2 + iVar3 != 0) + iVar10;\n    pcVar19 = *(code **)(*(int *)(puVar20 + -0x68) + -0x7d8c);\n    piVar12[iVar10] = iVar2 + iVar3;\n    *(int *)(puVar21 + 0x10) = iVar10;\n    iVar10 = iVar10 + uVar11;\n    piVar8 = piVar12;\n    iVar2 = (*pcVar19)(piVar17,piVar12,uVar11,puVar18);\n    iVar3 = *(int *)(puVar20 + -0x68);\n  }\n  else {\n    uVar23 = (**(code **)(*(int *)(puVar20 + -0x68) + -0x7ad4))(piVar17,puVar18,iVar10,1);\n    *(undefined4 *)(puVar20 + -0x5c) = uVar23;\n    iVar2 = (**(code **)(*(int *)(puVar20 + -0x68) + -0x7d0c))(puVar18,piVar17,piVar12,iVar10);\n    iVar3 = *(int *)(puVar20 + -0x5c);\n    pcVar19 = *(code **)(*(int *)(puVar20 + -0x68) + -0x7b2c);\n    *(int *)(puVar18 + iVar10 * 4) = iVar2 + iVar3;\n    *(uint *)(puVar20 + -0x60) = (uint)(iVar2 + iVar3 != 0) + iVar10;\n    iVar2 = (*pcVar19)(piVar12,piVar17,piVar12,iVar10);\n    iVar3 = *(int *)(puVar20 + -0x60);\n    pcVar19 = *(code **)(*(int *)(puVar20 + -0x68) + -0x7d8c);\n    iVar15 = iVar10 + (*(int *)(puVar20 + -0x5c) - iVar2);\n    piVar12[iVar10] = *(int *)(puVar20 + -0x5c) - iVar2;\n    *(int *)(puVar21 + 0x10) = iVar15;\n    iVar10 = iVar3 + iVar15;\n    iVar2 = (*pcVar19)(piVar17,puVar18,iVar3,piVar12);\n    uVar11 = 0xfffffffe;\n    piVar8 = (int *)0x2;\n    iVar3 = *(int *)(puVar20 + -0x68);\n    if (((uint)p_Var7 & 2) != 0) {\n      piVar8 = (int *)&SUB_fffffffe;\n    }\n    *piVar17 = (int)((int)piVar8 + *piVar17);\n  }\n  piVar5 = *(int **)(puVar20 + -0x58);\n  iVar10 = iVar10 - (uint)(iVar2 == 0);\n  iVar2 = iVar10 - (uint)((piVar17 + iVar10)[-1] == 0);\n  piVar4[1] = iVar2;\n  if (piVar5 != (int *)0x0) {\n    (**(code **)(iVar3 + -0x7a2c))();\n    uVar1 = FUN_000280d0();\n    return uVar1;\n  }\n  if (*(ulong *)(puVar20 + -0x54) == *puVar14) {\n    return *puVar14;\n  }\n  pcVar19 = *(code **)(iVar3 + -0x7b70);\n  uVar23 = 0x2825c;\n  (*pcVar19)();\n  pcVar22 = pcVar19 + 0x76de0;\n  *(code **)(puVar21 + -0x28) = pcVar22;\n  *(int *)(puVar21 + -0xc) = iVar2;\n  *(undefined4 *)(puVar21 + -4) = uVar23;\n  *(int **)(puVar21 + -8) = piVar17 + iVar10;\n  *(ulong **)(puVar21 + -0x10) = puVar14;\n  *(int **)(puVar21 + -0x14) = piVar12;\n  if (0x2f < uVar11) {\n    iVar10 = ((uVar11 >> 5) * 0x17 >> 5) + 4;\n    if (*piVar5 < iVar10) {\n      pcVar19 = *(code **)(pcVar19 + 0x6f35c);\n      *(uint *)(puVar21 + -0x1c) = uVar11;\n      iVar2 = (*pcVar19)();\n      pcVar22 = *(code **)(puVar21 + -0x28);\n      uVar11 = *(uint *)(puVar21 + -0x1c);\n    }\n    else {\n      iVar2 = piVar5[2];\n    }\n    pcVar19 = *(code **)(pcVar22 + -0x7a84);\n    if (*piVar8 < iVar10) {\n      *(uint *)(puVar21 + -0x1c) = uVar11;\n      iVar10 = (*pcVar19)(piVar8,iVar10);\n      pcVar22 = *(code **)(puVar21 + -0x28);\n    }\n    else {\n      iVar10 = piVar8[2];\n    }\n    iVar2 = (**(code **)(pcVar22 + -0x7e94))(iVar2,iVar10);\n    piVar5[1] = iVar2;\n    uVar1 = iVar2 - (uint)(*(int *)(iVar10 + iVar2 * 4 + -4) == 0);\n    piVar8[1] = uVar1;\n    return uVar1;\n  }\n  puVar9 = (undefined4 *)piVar8[2];\n  uVar23 = *(undefined4 *)(*(int *)(pcVar19 + 0x6f2ec) + uVar11 * 4);\n  uVar1 = *(ulong *)(*(int *)(pcVar19 + 0x6f2ec) + (uVar11 + 1) * 4);\n  *(ulong *)piVar5[2] = uVar1;\n  piVar5[1] = (uint)(uVar11 != 0);\n  *puVar9 = uVar23;\n  piVar8[1] = (uint)(uVar11 != 1);\n  return uVar1;\n}\n\n" (function_definition "ulong __gmpz_fdiv_r_ui(mpz_ptr rem,mpz_srcptr dividend,ulong divisor)\n\n{\n  ulong uVar1;\n  int iVar2;\n  int iVar3;\n  int *piVar4;\n  int *piVar5;\n  uint uVar6;\n  mpz_ptr p_Var7;\n  int *piVar8;\n  undefined4 *puVar9;\n  int iVar10;\n  uint uVar11;\n  int *piVar12;\n  uint uVar13;\n  ulong *puVar14;\n  int iVar15;\n  ulong *puVar16;\n  int *piVar17;\n  undefined1 *puVar18;\n  undefined4 unaff_s5;\n  undefined4 unaff_s6;\n  undefined4 unaff_s7;\n  int in_t9;\n  code *pcVar19;\n  undefined1 *puVar20;\n  undefined1 *puVar21;\n  code *pcVar22;\n  undefined4 uVar23;\n  undefined1 auStack_80 [16];\n  code *apcStack_70 [3];\n  ulong uStack_64;\n  int *piStack_5c;\n  __mpz_struct _Stack_58;\n  ulong uStack_4c;\n  \n  if (divisor != 0) {\n    iVar10 = dividend->_mp_size;\n    if (iVar10 != 0) {\n      if (iVar10 < 0) {\n        uVar1 = (**(code **)(in_t9 + 0x6f8a0))(dividend->_mp_d,-iVar10,divisor);\n      }\n      else {\n        uVar1 = (**(code **)(in_t9 + 0x6f8a0))(dividend->_mp_d,iVar10,divisor);\n      }\n      if (uVar1 != 0) {\n        if (iVar10 < 0) {\n          uVar1 = divisor - uVar1;\n          *rem->_mp_d = uVar1;\n          rem->_mp_size = 1;\n        }\n        else {\n          *rem->_mp_d = uVar1;\n          rem->_mp_size = 1;\n        }\n        return uVar1;\n      }\n    }\n    rem->_mp_size = 0;\n    return 0;\n  }\n  pcVar19 = *(code **)(in_t9 + 0x6f9bc);\n  (*pcVar19)();\n  apcStack_70[0] = pcVar19 + 0x77320;\n  puVar20 = auStack_80;\n  puVar16 = *(ulong **)(pcVar19 + 0x6f820);\n  uVar11 = *(uint *)(divisor + 4);\n  piStack_5c = (int *)0x0;\n  uStack_4c = *puVar16;\n  uVar13 = dividend->_mp_size;\n  if ((int)uVar11 < 0) {\n    _Stack_58._mp_alloc = -uVar11;\n    uVar6 = uVar11 * -4;\n    if (0x7f00 < uVar6) {\n      pcVar19 = *(code **)(pcVar19 + 0x6f5d0);\n      goto LAB_00027e2c;\n    }\nLAB_00027d94:\n    iVar10 = -(uVar6 + 7 & 0xfffffff8);\n    puVar20 = auStack_80 + iVar10;\n    _Stack_58._mp_d = (mp_limb_t *)((int)apcStack_70 + iVar10);\n  }\n  else {\n    uVar6 = uVar11 * 4;\n    pcVar19 = *(code **)(pcVar19 + 0x6f5d0);\n    _Stack_58._mp_alloc = uVar11;\n    if (uVar6 < 0x7f01) goto LAB_00027d94;\nLAB_00027e2c:\n    uStack_64 = divisor;\n    _Stack_58._mp_d = (mp_limb_t *)(*pcVar19)(&piStack_5c,uVar6);\n    divisor = uStack_64;\n  }\n  p_Var7 = &_Stack_58;\n  uVar11 = uVar13 ^ uVar11;\n  (**(code **)(apcStack_70[0] + -0x7a6c))(rem,p_Var7,dividend,divisor);\n  if (((int)uVar11 < 0) && (_Stack_58._mp_size != 0)) {\n    p_Var7 = rem;\n    (**(code **)(apcStack_70[0] + -0x7ac0))(rem,rem,1);\n    piVar4 = piStack_5c;\n    if (piStack_5c == (int *)0x0) goto LAB_00027dd8;\n    pcVar19 = *(code **)(apcStack_70[0] + -0x7a2c);\n  }\n  else {\n    pcVar19 = *(code **)(apcStack_70[0] + -0x7a2c);\n    piVar4 = piStack_5c;\n    if (piStack_5c == (int *)0x0) goto LAB_00027dd8;\n  }\n  piVar4 = piStack_5c;\n  (*pcVar19)();\nLAB_00027dd8:\n  if (uStack_4c == *puVar16) {\n    return *puVar16;\n  }\n  pcVar19 = *(code **)(apcStack_70[0] + -0x7b70);\n  pcVar22 = __gmpz_fdiv_ui;\n  (*pcVar19)();\n  *(code **)(puVar20 + -0x18) = pcVar19 + 0x771b0;\n  *(code **)(puVar20 + -4) = pcVar22;\n  *(uint *)(puVar20 + -8) = uVar13;\n  *(uint *)(puVar20 + -0xc) = uVar11;\n  if (p_Var7 != (mpz_ptr)0x0) {\n    iVar10 = piVar4[1];\n    if (iVar10 == 0) {\n      return 0;\n    }\n    if (iVar10 < 0) {\n      uVar1 = (**(code **)(pcVar19 + 0x6f630))(piVar4[2],-iVar10,p_Var7);\n    }\n    else {\n      uVar1 = (**(code **)(pcVar19 + 0x6f630))(piVar4[2],iVar10,p_Var7);\n    }\n    if ((uVar1 != 0) && (iVar10 < 0)) {\n      return (int)p_Var7 - uVar1;\n    }\n    return uVar1;\n  }\n  pcVar19 = *(code **)(pcVar19 + 0x6f74c);\n  uVar23 = 0x27f54;\n  (*pcVar19)();\n  pcVar22 = pcVar19 + 0x770e0;\n  puVar21 = puVar20 + -0x80;\n  *(uint *)(puVar20 + -0x4c) = uVar13;\n  *(undefined4 *)(puVar20 + -0x38) = unaff_s6;\n  puVar14 = *(ulong **)(pcVar19 + 0x6f5e0);\n  *(undefined1 **)(puVar20 + -0x30) = auStack_80;\n  *(undefined4 *)(puVar20 + -0x3c) = unaff_s5;\n  *(undefined4 *)(puVar20 + -0x2c) = uVar23;\n  *(undefined4 *)(puVar20 + -0x34) = unaff_s7;\n  *(mpz_srcptr *)(puVar20 + -0x40) = dividend;\n  *(ulong **)(puVar20 + -0x44) = puVar16;\n  *(mpz_ptr *)(puVar20 + -0x48) = rem;\n  *(uint *)(puVar20 + -0x50) = uVar11;\n  *(code **)(puVar20 + -0x68) = pcVar22;\n  *(ulong *)(puVar20 + -0x54) = *puVar14;\n  if (p_Var7 < (mpz_ptr)0x30) {\n    *(undefined4 *)piVar4[2] =\n         *(undefined4 *)(*(int *)(pcVar19 + 0x6f5ec) + (int)((int)&p_Var7->_mp_alloc + 1) * 4);\n    piVar4[1] = (uint)(p_Var7 != (mpz_ptr)0x0);\n    uVar1 = FUN_000280d0();\n    return uVar1;\n  }\n  iVar10 = (((uint)p_Var7 >> 6) * 0x17 >> 5) + 5;\n  uVar11 = (uint)p_Var7 >> 1;\n  if (*piVar4 < iVar10 * 2) {\n    pcVar19 = *(code **)(pcVar19 + 0x6f65c);\n    *(uint *)(puVar20 + -0x5c) = uVar11;\n    piVar17 = (int *)(*pcVar19)();\n    pcVar22 = *(code **)(puVar20 + -0x68);\n    uVar11 = *(uint *)(puVar20 + -0x5c);\n  }\n  else {\n    piVar17 = (int *)piVar4[2];\n  }\n  *(undefined4 *)(puVar20 + -0x58) = 0;\n  if ((uint)(iVar10 * 8) < 0x7f01) {\n    puVar21 = puVar20 + iVar10 * -8 + -0x80;\n    puVar18 = puVar20 + iVar10 * -8 + -0x68;\n  }\n  else {\n    pcVar19 = *(code **)(pcVar22 + -0x7d50);\n    *(uint *)(puVar20 + -0x5c) = uVar11;\n    puVar18 = (undefined1 *)(*pcVar19)(puVar20 + -0x58);\n    pcVar22 = *(code **)(puVar20 + -0x68);\n    uVar11 = *(uint *)(puVar20 + -0x5c);\n  }\n  piVar12 = (int *)(puVar18 + iVar10 * 4);\n  iVar10 = (**(code **)(pcVar22 + -0x7e94))(puVar18,piVar12,uVar11);\n  if (((uint)p_Var7 & 1) == 0) {\n    iVar2 = (**(code **)(*(int *)(puVar20 + -0x68) + -0x7ad4))(piVar12,piVar12);\n    iVar3 = (**(code **)(*(int *)(puVar20 + -0x68) + -0x7d0c))(piVar12,piVar12,puVar18,iVar10);\n    uVar11 = (uint)(iVar2 + iVar3 != 0) + iVar10;\n    pcVar19 = *(code **)(*(int *)(puVar20 + -0x68) + -0x7d8c);\n    piVar12[iVar10] = iVar2 + iVar3;\n    *(int *)(puVar21 + 0x10) = iVar10;\n    iVar10 = iVar10 + uVar11;\n    piVar8 = piVar12;\n    iVar2 = (*pcVar19)(piVar17,piVar12,uVar11,puVar18);\n    iVar3 = *(int *)(puVar20 + -0x68);\n  }\n  else {\n    uVar23 = (**(code **)(*(int *)(puVar20 + -0x68) + -0x7ad4))(piVar17,puVar18,iVar10,1);\n    *(undefined4 *)(puVar20 + -0x5c) = uVar23;\n    iVar2 = (**(code **)(*(int *)(puVar20 + -0x68) + -0x7d0c))(puVar18,piVar17,piVar12,iVar10);\n    iVar3 = *(int *)(puVar20 + -0x5c);\n    pcVar19 = *(code **)(*(int *)(puVar20 + -0x68) + -0x7b2c);\n    *(int *)(puVar18 + iVar10 * 4) = iVar2 + iVar3;\n    *(uint *)(puVar20 + -0x60) = (uint)(iVar2 + iVar3 != 0) + iVar10;\n    iVar2 = (*pcVar19)(piVar12,piVar17,piVar12,iVar10);\n    iVar3 = *(int *)(puVar20 + -0x60);\n    pcVar19 = *(code **)(*(int *)(puVar20 + -0x68) + -0x7d8c);\n    iVar15 = iVar10 + (*(int *)(puVar20 + -0x5c) - iVar2);\n    piVar12[iVar10] = *(int *)(puVar20 + -0x5c) - iVar2;\n    *(int *)(puVar21 + 0x10) = iVar15;\n    iVar10 = iVar3 + iVar15;\n    iVar2 = (*pcVar19)(piVar17,puVar18,iVar3,piVar12);\n    uVar11 = 0xfffffffe;\n    piVar8 = (int *)0x2;\n    iVar3 = *(int *)(puVar20 + -0x68);\n    if (((uint)p_Var7 & 2) != 0) {\n      piVar8 = (int *)&SUB_fffffffe;\n    }\n    *piVar17 = (int)((int)piVar8 + *piVar17);\n  }\n  piVar5 = *(int **)(puVar20 + -0x58);\n  iVar10 = iVar10 - (uint)(iVar2 == 0);\n  iVar2 = iVar10 - (uint)((piVar17 + iVar10)[-1] == 0);\n  piVar4[1] = iVar2;\n  if (piVar5 != (int *)0x0) {\n    (**(code **)(iVar3 + -0x7a2c))();\n    uVar1 = FUN_000280d0();\n    return uVar1;\n  }\n  if (*(ulong *)(puVar20 + -0x54) == *puVar14) {\n    return *puVar14;\n  }\n  pcVar19 = *(code **)(iVar3 + -0x7b70);\n  uVar23 = 0x2825c;\n  (*pcVar19)();\n  pcVar22 = pcVar19 + 0x76de0;\n  *(code **)(puVar21 + -0x28) = pcVar22;\n  *(int *)(puVar21 + -0xc) = iVar2;\n  *(undefined4 *)(puVar21 + -4) = uVar23;\n  *(int **)(puVar21 + -8) = piVar17 + iVar10;\n  *(ulong **)(puVar21 + -0x10) = puVar14;\n  *(int **)(puVar21 + -0x14) = piVar12;\n  if (0x2f < uVar11) {\n    iVar10 = ((uVar11 >> 5) * 0x17 >> 5) + 4;\n    if (*piVar5 < iVar10) {\n      pcVar19 = *(code **)(pcVar19 + 0x6f35c);\n      *(uint *)(puVar21 + -0x1c) = uVar11;\n      iVar2 = (*pcVar19)();\n      pcVar22 = *(code **)(puVar21 + -0x28);\n      uVar11 = *(uint *)(puVar21 + -0x1c);\n    }\n    else {\n      iVar2 = piVar5[2];\n    }\n    pcVar19 = *(code **)(pcVar22 + -0x7a84);\n    if (*piVar8 < iVar10) {\n      *(uint *)(puVar21 + -0x1c) = uVar11;\n      iVar10 = (*pcVar19)(piVar8,iVar10);\n      pcVar22 = *(code **)(puVar21 + -0x28);\n    }\n    else {\n      iVar10 = piVar8[2];\n    }\n    iVar2 = (**(code **)(pcVar22 + -0x7e94))(iVar2,iVar10);\n    piVar5[1] = iVar2;\n    uVar1 = iVar2 - (uint)(*(int *)(iVar10 + iVar2 * 4 + -4) == 0);\n    piVar8[1] = uVar1;\n    return uVar1;\n  }\n  puVar9 = (undefined4 *)piVar8[2];\n  uVar23 = *(undefined4 *)(*(int *)(pcVar19 + 0x6f2ec) + uVar11 * 4);\n  uVar1 = *(ulong *)(*(int *)(pcVar19 + 0x6f2ec) + (uVar11 + 1) * 4);\n  *(ulong *)piVar5[2] = uVar1;\n  piVar5[1] = (uint)(uVar11 != 0);\n  *puVar9 = uVar23;\n  piVar8[1] = (uint)(uVar11 != 1);\n  return uVar1;\n}" type_identifier (function_declarator "__gmpz_fdiv_r_ui(mpz_ptr rem,mpz_srcptr dividend,ulong divisor)" identifier (parameter_list "(mpz_ptr rem,mpz_srcptr dividend,ulong divisor)" ( (parameter_declaration "mpz_ptr rem" type_identifier identifier) , (parameter_declaration "mpz_srcptr dividend" type_identifier identifier) , (parameter_declaration "ulong divisor" type_identifier identifier) ))) (compound_statement "{\n  ulong uVar1;\n  int iVar2;\n  int iVar3;\n  int *piVar4;\n  int *piVar5;\n  uint uVar6;\n  mpz_ptr p_Var7;\n  int *piVar8;\n  undefined4 *puVar9;\n  int iVar10;\n  uint uVar11;\n  int *piVar12;\n  uint uVar13;\n  ulong *puVar14;\n  int iVar15;\n  ulong *puVar16;\n  int *piVar17;\n  undefined1 *puVar18;\n  undefined4 unaff_s5;\n  undefined4 unaff_s6;\n  undefined4 unaff_s7;\n  int in_t9;\n  code *pcVar19;\n  undefined1 *puVar20;\n  undefined1 *puVar21;\n  code *pcVar22;\n  undefined4 uVar23;\n  undefined1 auStack_80 [16];\n  code *apcStack_70 [3];\n  ulong uStack_64;\n  int *piStack_5c;\n  __mpz_struct _Stack_58;\n  ulong uStack_4c;\n  \n  if (divisor != 0) {\n    iVar10 = dividend->_mp_size;\n    if (iVar10 != 0) {\n      if (iVar10 < 0) {\n        uVar1 = (**(code **)(in_t9 + 0x6f8a0))(dividend->_mp_d,-iVar10,divisor);\n      }\n      else {\n        uVar1 = (**(code **)(in_t9 + 0x6f8a0))(dividend->_mp_d,iVar10,divisor);\n      }\n      if (uVar1 != 0) {\n        if (iVar10 < 0) {\n          uVar1 = divisor - uVar1;\n          *rem->_mp_d = uVar1;\n          rem->_mp_size = 1;\n        }\n        else {\n          *rem->_mp_d = uVar1;\n          rem->_mp_size = 1;\n        }\n        return uVar1;\n      }\n    }\n    rem->_mp_size = 0;\n    return 0;\n  }\n  pcVar19 = *(code **)(in_t9 + 0x6f9bc);\n  (*pcVar19)();\n  apcStack_70[0] = pcVar19 + 0x77320;\n  puVar20 = auStack_80;\n  puVar16 = *(ulong **)(pcVar19 + 0x6f820);\n  uVar11 = *(uint *)(divisor + 4);\n  piStack_5c = (int *)0x0;\n  uStack_4c = *puVar16;\n  uVar13 = dividend->_mp_size;\n  if ((int)uVar11 < 0) {\n    _Stack_58._mp_alloc = -uVar11;\n    uVar6 = uVar11 * -4;\n    if (0x7f00 < uVar6) {\n      pcVar19 = *(code **)(pcVar19 + 0x6f5d0);\n      goto LAB_00027e2c;\n    }\nLAB_00027d94:\n    iVar10 = -(uVar6 + 7 & 0xfffffff8);\n    puVar20 = auStack_80 + iVar10;\n    _Stack_58._mp_d = (mp_limb_t *)((int)apcStack_70 + iVar10);\n  }\n  else {\n    uVar6 = uVar11 * 4;\n    pcVar19 = *(code **)(pcVar19 + 0x6f5d0);\n    _Stack_58._mp_alloc = uVar11;\n    if (uVar6 < 0x7f01) goto LAB_00027d94;\nLAB_00027e2c:\n    uStack_64 = divisor;\n    _Stack_58._mp_d = (mp_limb_t *)(*pcVar19)(&piStack_5c,uVar6);\n    divisor = uStack_64;\n  }\n  p_Var7 = &_Stack_58;\n  uVar11 = uVar13 ^ uVar11;\n  (**(code **)(apcStack_70[0] + -0x7a6c))(rem,p_Var7,dividend,divisor);\n  if (((int)uVar11 < 0) && (_Stack_58._mp_size != 0)) {\n    p_Var7 = rem;\n    (**(code **)(apcStack_70[0] + -0x7ac0))(rem,rem,1);\n    piVar4 = piStack_5c;\n    if (piStack_5c == (int *)0x0) goto LAB_00027dd8;\n    pcVar19 = *(code **)(apcStack_70[0] + -0x7a2c);\n  }\n  else {\n    pcVar19 = *(code **)(apcStack_70[0] + -0x7a2c);\n    piVar4 = piStack_5c;\n    if (piStack_5c == (int *)0x0) goto LAB_00027dd8;\n  }\n  piVar4 = piStack_5c;\n  (*pcVar19)();\nLAB_00027dd8:\n  if (uStack_4c == *puVar16) {\n    return *puVar16;\n  }\n  pcVar19 = *(code **)(apcStack_70[0] + -0x7b70);\n  pcVar22 = __gmpz_fdiv_ui;\n  (*pcVar19)();\n  *(code **)(puVar20 + -0x18) = pcVar19 + 0x771b0;\n  *(code **)(puVar20 + -4) = pcVar22;\n  *(uint *)(puVar20 + -8) = uVar13;\n  *(uint *)(puVar20 + -0xc) = uVar11;\n  if (p_Var7 != (mpz_ptr)0x0) {\n    iVar10 = piVar4[1];\n    if (iVar10 == 0) {\n      return 0;\n    }\n    if (iVar10 < 0) {\n      uVar1 = (**(code **)(pcVar19 + 0x6f630))(piVar4[2],-iVar10,p_Var7);\n    }\n    else {\n      uVar1 = (**(code **)(pcVar19 + 0x6f630))(piVar4[2],iVar10,p_Var7);\n    }\n    if ((uVar1 != 0) && (iVar10 < 0)) {\n      return (int)p_Var7 - uVar1;\n    }\n    return uVar1;\n  }\n  pcVar19 = *(code **)(pcVar19 + 0x6f74c);\n  uVar23 = 0x27f54;\n  (*pcVar19)();\n  pcVar22 = pcVar19 + 0x770e0;\n  puVar21 = puVar20 + -0x80;\n  *(uint *)(puVar20 + -0x4c) = uVar13;\n  *(undefined4 *)(puVar20 + -0x38) = unaff_s6;\n  puVar14 = *(ulong **)(pcVar19 + 0x6f5e0);\n  *(undefined1 **)(puVar20 + -0x30) = auStack_80;\n  *(undefined4 *)(puVar20 + -0x3c) = unaff_s5;\n  *(undefined4 *)(puVar20 + -0x2c) = uVar23;\n  *(undefined4 *)(puVar20 + -0x34) = unaff_s7;\n  *(mpz_srcptr *)(puVar20 + -0x40) = dividend;\n  *(ulong **)(puVar20 + -0x44) = puVar16;\n  *(mpz_ptr *)(puVar20 + -0x48) = rem;\n  *(uint *)(puVar20 + -0x50) = uVar11;\n  *(code **)(puVar20 + -0x68) = pcVar22;\n  *(ulong *)(puVar20 + -0x54) = *puVar14;\n  if (p_Var7 < (mpz_ptr)0x30) {\n    *(undefined4 *)piVar4[2] =\n         *(undefined4 *)(*(int *)(pcVar19 + 0x6f5ec) + (int)((int)&p_Var7->_mp_alloc + 1) * 4);\n    piVar4[1] = (uint)(p_Var7 != (mpz_ptr)0x0);\n    uVar1 = FUN_000280d0();\n    return uVar1;\n  }\n  iVar10 = (((uint)p_Var7 >> 6) * 0x17 >> 5) + 5;\n  uVar11 = (uint)p_Var7 >> 1;\n  if (*piVar4 < iVar10 * 2) {\n    pcVar19 = *(code **)(pcVar19 + 0x6f65c);\n    *(uint *)(puVar20 + -0x5c) = uVar11;\n    piVar17 = (int *)(*pcVar19)();\n    pcVar22 = *(code **)(puVar20 + -0x68);\n    uVar11 = *(uint *)(puVar20 + -0x5c);\n  }\n  else {\n    piVar17 = (int *)piVar4[2];\n  }\n  *(undefined4 *)(puVar20 + -0x58) = 0;\n  if ((uint)(iVar10 * 8) < 0x7f01) {\n    puVar21 = puVar20 + iVar10 * -8 + -0x80;\n    puVar18 = puVar20 + iVar10 * -8 + -0x68;\n  }\n  else {\n    pcVar19 = *(code **)(pcVar22 + -0x7d50);\n    *(uint *)(puVar20 + -0x5c) = uVar11;\n    puVar18 = (undefined1 *)(*pcVar19)(puVar20 + -0x58);\n    pcVar22 = *(code **)(puVar20 + -0x68);\n    uVar11 = *(uint *)(puVar20 + -0x5c);\n  }\n  piVar12 = (int *)(puVar18 + iVar10 * 4);\n  iVar10 = (**(code **)(pcVar22 + -0x7e94))(puVar18,piVar12,uVar11);\n  if (((uint)p_Var7 & 1) == 0) {\n    iVar2 = (**(code **)(*(int *)(puVar20 + -0x68) + -0x7ad4))(piVar12,piVar12);\n    iVar3 = (**(code **)(*(int *)(puVar20 + -0x68) + -0x7d0c))(piVar12,piVar12,puVar18,iVar10);\n    uVar11 = (uint)(iVar2 + iVar3 != 0) + iVar10;\n    pcVar19 = *(code **)(*(int *)(puVar20 + -0x68) + -0x7d8c);\n    piVar12[iVar10] = iVar2 + iVar3;\n    *(int *)(puVar21 + 0x10) = iVar10;\n    iVar10 = iVar10 + uVar11;\n    piVar8 = piVar12;\n    iVar2 = (*pcVar19)(piVar17,piVar12,uVar11,puVar18);\n    iVar3 = *(int *)(puVar20 + -0x68);\n  }\n  else {\n    uVar23 = (**(code **)(*(int *)(puVar20 + -0x68) + -0x7ad4))(piVar17,puVar18,iVar10,1);\n    *(undefined4 *)(puVar20 + -0x5c) = uVar23;\n    iVar2 = (**(code **)(*(int *)(puVar20 + -0x68) + -0x7d0c))(puVar18,piVar17,piVar12,iVar10);\n    iVar3 = *(int *)(puVar20 + -0x5c);\n    pcVar19 = *(code **)(*(int *)(puVar20 + -0x68) + -0x7b2c);\n    *(int *)(puVar18 + iVar10 * 4) = iVar2 + iVar3;\n    *(uint *)(puVar20 + -0x60) = (uint)(iVar2 + iVar3 != 0) + iVar10;\n    iVar2 = (*pcVar19)(piVar12,piVar17,piVar12,iVar10);\n    iVar3 = *(int *)(puVar20 + -0x60);\n    pcVar19 = *(code **)(*(int *)(puVar20 + -0x68) + -0x7d8c);\n    iVar15 = iVar10 + (*(int *)(puVar20 + -0x5c) - iVar2);\n    piVar12[iVar10] = *(int *)(puVar20 + -0x5c) - iVar2;\n    *(int *)(puVar21 + 0x10) = iVar15;\n    iVar10 = iVar3 + iVar15;\n    iVar2 = (*pcVar19)(piVar17,puVar18,iVar3,piVar12);\n    uVar11 = 0xfffffffe;\n    piVar8 = (int *)0x2;\n    iVar3 = *(int *)(puVar20 + -0x68);\n    if (((uint)p_Var7 & 2) != 0) {\n      piVar8 = (int *)&SUB_fffffffe;\n    }\n    *piVar17 = (int)((int)piVar8 + *piVar17);\n  }\n  piVar5 = *(int **)(puVar20 + -0x58);\n  iVar10 = iVar10 - (uint)(iVar2 == 0);\n  iVar2 = iVar10 - (uint)((piVar17 + iVar10)[-1] == 0);\n  piVar4[1] = iVar2;\n  if (piVar5 != (int *)0x0) {\n    (**(code **)(iVar3 + -0x7a2c))();\n    uVar1 = FUN_000280d0();\n    return uVar1;\n  }\n  if (*(ulong *)(puVar20 + -0x54) == *puVar14) {\n    return *puVar14;\n  }\n  pcVar19 = *(code **)(iVar3 + -0x7b70);\n  uVar23 = 0x2825c;\n  (*pcVar19)();\n  pcVar22 = pcVar19 + 0x76de0;\n  *(code **)(puVar21 + -0x28) = pcVar22;\n  *(int *)(puVar21 + -0xc) = iVar2;\n  *(undefined4 *)(puVar21 + -4) = uVar23;\n  *(int **)(puVar21 + -8) = piVar17 + iVar10;\n  *(ulong **)(puVar21 + -0x10) = puVar14;\n  *(int **)(puVar21 + -0x14) = piVar12;\n  if (0x2f < uVar11) {\n    iVar10 = ((uVar11 >> 5) * 0x17 >> 5) + 4;\n    if (*piVar5 < iVar10) {\n      pcVar19 = *(code **)(pcVar19 + 0x6f35c);\n      *(uint *)(puVar21 + -0x1c) = uVar11;\n      iVar2 = (*pcVar19)();\n      pcVar22 = *(code **)(puVar21 + -0x28);\n      uVar11 = *(uint *)(puVar21 + -0x1c);\n    }\n    else {\n      iVar2 = piVar5[2];\n    }\n    pcVar19 = *(code **)(pcVar22 + -0x7a84);\n    if (*piVar8 < iVar10) {\n      *(uint *)(puVar21 + -0x1c) = uVar11;\n      iVar10 = (*pcVar19)(piVar8,iVar10);\n      pcVar22 = *(code **)(puVar21 + -0x28);\n    }\n    else {\n      iVar10 = piVar8[2];\n    }\n    iVar2 = (**(code **)(pcVar22 + -0x7e94))(iVar2,iVar10);\n    piVar5[1] = iVar2;\n    uVar1 = iVar2 - (uint)(*(int *)(iVar10 + iVar2 * 4 + -4) == 0);\n    piVar8[1] = uVar1;\n    return uVar1;\n  }\n  puVar9 = (undefined4 *)piVar8[2];\n  uVar23 = *(undefined4 *)(*(int *)(pcVar19 + 0x6f2ec) + uVar11 * 4);\n  uVar1 = *(ulong *)(*(int *)(pcVar19 + 0x6f2ec) + (uVar11 + 1) * 4);\n  *(ulong *)piVar5[2] = uVar1;\n  piVar5[1] = (uint)(uVar11 != 0);\n  *puVar9 = uVar23;\n  piVar8[1] = (uint)(uVar11 != 1);\n  return uVar1;\n}" { (declaration "ulong uVar1;" type_identifier identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "int *piVar4;" primitive_type (pointer_declarator "*piVar4" * identifier) ;) (declaration "int *piVar5;" primitive_type (pointer_declarator "*piVar5" * identifier) ;) (declaration "uint uVar6;" type_identifier identifier ;) (declaration "mpz_ptr p_Var7;" type_identifier identifier ;) (declaration "int *piVar8;" primitive_type (pointer_declarator "*piVar8" * identifier) ;) (declaration "undefined4 *puVar9;" type_identifier (pointer_declarator "*puVar9" * identifier) ;) (declaration "int iVar10;" primitive_type identifier ;) (declaration "uint uVar11;" type_identifier identifier ;) (declaration "int *piVar12;" primitive_type (pointer_declarator "*piVar12" * identifier) ;) (declaration "uint uVar13;" type_identifier identifier ;) (declaration "ulong *puVar14;" type_identifier (pointer_declarator "*puVar14" * identifier) ;) (declaration "int iVar15;" primitive_type identifier ;) (declaration "ulong *puVar16;" type_identifier (pointer_declarator "*puVar16" * identifier) ;) (declaration "int *piVar17;" primitive_type (pointer_declarator "*piVar17" * identifier) ;) (declaration "undefined1 *puVar18;" type_identifier (pointer_declarator "*puVar18" * identifier) ;) (declaration "undefined4 unaff_s5;" type_identifier identifier ;) (declaration "undefined4 unaff_s6;" type_identifier identifier ;) (declaration "undefined4 unaff_s7;" type_identifier identifier ;) (declaration "int in_t9;" primitive_type identifier ;) (declaration "code *pcVar19;" type_identifier (pointer_declarator "*pcVar19" * identifier) ;) (declaration "undefined1 *puVar20;" type_identifier (pointer_declarator "*puVar20" * identifier) ;) (declaration "undefined1 *puVar21;" type_identifier (pointer_declarator "*puVar21" * identifier) ;) (declaration "code *pcVar22;" type_identifier (pointer_declarator "*pcVar22" * identifier) ;) (declaration "undefined4 uVar23;" type_identifier identifier ;) (declaration "undefined1 auStack_80 [16];" type_identifier (array_declarator "auStack_80 [16]" identifier [ number_literal ]) ;) (declaration "code *apcStack_70 [3];" type_identifier (pointer_declarator "*apcStack_70 [3]" * (array_declarator "apcStack_70 [3]" identifier [ number_literal ])) ;) (declaration "ulong uStack_64;" type_identifier identifier ;) (declaration "int *piStack_5c;" primitive_type (pointer_declarator "*piStack_5c" * identifier) ;) (declaration "__mpz_struct _Stack_58;" type_identifier identifier ;) (declaration "ulong uStack_4c;" type_identifier identifier ;) (if_statement "if (divisor != 0) {\n    iVar10 = dividend->_mp_size;\n    if (iVar10 != 0) {\n      if (iVar10 < 0) {\n        uVar1 = (**(code **)(in_t9 + 0x6f8a0))(dividend->_mp_d,-iVar10,divisor);\n      }\n      else {\n        uVar1 = (**(code **)(in_t9 + 0x6f8a0))(dividend->_mp_d,iVar10,divisor);\n      }\n      if (uVar1 != 0) {\n        if (iVar10 < 0) {\n          uVar1 = divisor - uVar1;\n          *rem->_mp_d = uVar1;\n          rem->_mp_size = 1;\n        }\n        else {\n          *rem->_mp_d = uVar1;\n          rem->_mp_size = 1;\n        }\n        return uVar1;\n      }\n    }\n    rem->_mp_size = 0;\n    return 0;\n  }" if (parenthesized_expression "(divisor != 0)" ( (binary_expression "divisor != 0" identifier != number_literal) )) (compound_statement "{\n    iVar10 = dividend->_mp_size;\n    if (iVar10 != 0) {\n      if (iVar10 < 0) {\n        uVar1 = (**(code **)(in_t9 + 0x6f8a0))(dividend->_mp_d,-iVar10,divisor);\n      }\n      else {\n        uVar1 = (**(code **)(in_t9 + 0x6f8a0))(dividend->_mp_d,iVar10,divisor);\n      }\n      if (uVar1 != 0) {\n        if (iVar10 < 0) {\n          uVar1 = divisor - uVar1;\n          *rem->_mp_d = uVar1;\n          rem->_mp_size = 1;\n        }\n        else {\n          *rem->_mp_d = uVar1;\n          rem->_mp_size = 1;\n        }\n        return uVar1;\n      }\n    }\n    rem->_mp_size = 0;\n    return 0;\n  }" { (expression_statement "iVar10 = dividend->_mp_size;" (assignment_expression "iVar10 = dividend->_mp_size" identifier = (field_expression "dividend->_mp_size" identifier -> field_identifier)) ;) (if_statement "if (iVar10 != 0) {\n      if (iVar10 < 0) {\n        uVar1 = (**(code **)(in_t9 + 0x6f8a0))(dividend->_mp_d,-iVar10,divisor);\n      }\n      else {\n        uVar1 = (**(code **)(in_t9 + 0x6f8a0))(dividend->_mp_d,iVar10,divisor);\n      }\n      if (uVar1 != 0) {\n        if (iVar10 < 0) {\n          uVar1 = divisor - uVar1;\n          *rem->_mp_d = uVar1;\n          rem->_mp_size = 1;\n        }\n        else {\n          *rem->_mp_d = uVar1;\n          rem->_mp_size = 1;\n        }\n        return uVar1;\n      }\n    }" if (parenthesized_expression "(iVar10 != 0)" ( (binary_expression "iVar10 != 0" identifier != number_literal) )) (compound_statement "{\n      if (iVar10 < 0) {\n        uVar1 = (**(code **)(in_t9 + 0x6f8a0))(dividend->_mp_d,-iVar10,divisor);\n      }\n      else {\n        uVar1 = (**(code **)(in_t9 + 0x6f8a0))(dividend->_mp_d,iVar10,divisor);\n      }\n      if (uVar1 != 0) {\n        if (iVar10 < 0) {\n          uVar1 = divisor - uVar1;\n          *rem->_mp_d = uVar1;\n          rem->_mp_size = 1;\n        }\n        else {\n          *rem->_mp_d = uVar1;\n          rem->_mp_size = 1;\n        }\n        return uVar1;\n      }\n    }" { (if_statement "if (iVar10 < 0) {\n        uVar1 = (**(code **)(in_t9 + 0x6f8a0))(dividend->_mp_d,-iVar10,divisor);\n      }\n      else {\n        uVar1 = (**(code **)(in_t9 + 0x6f8a0))(dividend->_mp_d,iVar10,divisor);\n      }" if (parenthesized_expression "(iVar10 < 0)" ( (binary_expression "iVar10 < 0" identifier < number_literal) )) (compound_statement "{\n        uVar1 = (**(code **)(in_t9 + 0x6f8a0))(dividend->_mp_d,-iVar10,divisor);\n      }" { (expression_statement "uVar1 = (**(code **)(in_t9 + 0x6f8a0))(dividend->_mp_d,-iVar10,divisor);" (assignment_expression "uVar1 = (**(code **)(in_t9 + 0x6f8a0))(dividend->_mp_d,-iVar10,divisor)" identifier = (call_expression "(**(code **)(in_t9 + 0x6f8a0))(dividend->_mp_d,-iVar10,divisor)" (parenthesized_expression "(**(code **)(in_t9 + 0x6f8a0))" ( (pointer_expression "**(code **)(in_t9 + 0x6f8a0)" * (pointer_expression "*(code **)(in_t9 + 0x6f8a0)" * (cast_expression "(code **)(in_t9 + 0x6f8a0)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(in_t9 + 0x6f8a0)" ( (binary_expression "in_t9 + 0x6f8a0" identifier + number_literal) ))))) )) (argument_list "(dividend->_mp_d,-iVar10,divisor)" ( (field_expression "dividend->_mp_d" identifier -> field_identifier) , (unary_expression "-iVar10" - identifier) , identifier )))) ;) }) (else_clause "else {\n        uVar1 = (**(code **)(in_t9 + 0x6f8a0))(dividend->_mp_d,iVar10,divisor);\n      }" else (compound_statement "{\n        uVar1 = (**(code **)(in_t9 + 0x6f8a0))(dividend->_mp_d,iVar10,divisor);\n      }" { (expression_statement "uVar1 = (**(code **)(in_t9 + 0x6f8a0))(dividend->_mp_d,iVar10,divisor);" (assignment_expression "uVar1 = (**(code **)(in_t9 + 0x6f8a0))(dividend->_mp_d,iVar10,divisor)" identifier = (call_expression "(**(code **)(in_t9 + 0x6f8a0))(dividend->_mp_d,iVar10,divisor)" (parenthesized_expression "(**(code **)(in_t9 + 0x6f8a0))" ( (pointer_expression "**(code **)(in_t9 + 0x6f8a0)" * (pointer_expression "*(code **)(in_t9 + 0x6f8a0)" * (cast_expression "(code **)(in_t9 + 0x6f8a0)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(in_t9 + 0x6f8a0)" ( (binary_expression "in_t9 + 0x6f8a0" identifier + number_literal) ))))) )) (argument_list "(dividend->_mp_d,iVar10,divisor)" ( (field_expression "dividend->_mp_d" identifier -> field_identifier) , identifier , identifier )))) ;) }))) (if_statement "if (uVar1 != 0) {\n        if (iVar10 < 0) {\n          uVar1 = divisor - uVar1;\n          *rem->_mp_d = uVar1;\n          rem->_mp_size = 1;\n        }\n        else {\n          *rem->_mp_d = uVar1;\n          rem->_mp_size = 1;\n        }\n        return uVar1;\n      }" if (parenthesized_expression "(uVar1 != 0)" ( (binary_expression "uVar1 != 0" identifier != number_literal) )) (compound_statement "{\n        if (iVar10 < 0) {\n          uVar1 = divisor - uVar1;\n          *rem->_mp_d = uVar1;\n          rem->_mp_size = 1;\n        }\n        else {\n          *rem->_mp_d = uVar1;\n          rem->_mp_size = 1;\n        }\n        return uVar1;\n      }" { (if_statement "if (iVar10 < 0) {\n          uVar1 = divisor - uVar1;\n          *rem->_mp_d = uVar1;\n          rem->_mp_size = 1;\n        }\n        else {\n          *rem->_mp_d = uVar1;\n          rem->_mp_size = 1;\n        }" if (parenthesized_expression "(iVar10 < 0)" ( (binary_expression "iVar10 < 0" identifier < number_literal) )) (compound_statement "{\n          uVar1 = divisor - uVar1;\n          *rem->_mp_d = uVar1;\n          rem->_mp_size = 1;\n        }" { (expression_statement "uVar1 = divisor - uVar1;" (assignment_expression "uVar1 = divisor - uVar1" identifier = (binary_expression "divisor - uVar1" identifier - identifier)) ;) (expression_statement "*rem->_mp_d = uVar1;" (assignment_expression "*rem->_mp_d = uVar1" (pointer_expression "*rem->_mp_d" * (field_expression "rem->_mp_d" identifier -> field_identifier)) = identifier) ;) (expression_statement "rem->_mp_size = 1;" (assignment_expression "rem->_mp_size = 1" (field_expression "rem->_mp_size" identifier -> field_identifier) = number_literal) ;) }) (else_clause "else {\n          *rem->_mp_d = uVar1;\n          rem->_mp_size = 1;\n        }" else (compound_statement "{\n          *rem->_mp_d = uVar1;\n          rem->_mp_size = 1;\n        }" { (expression_statement "*rem->_mp_d = uVar1;" (assignment_expression "*rem->_mp_d = uVar1" (pointer_expression "*rem->_mp_d" * (field_expression "rem->_mp_d" identifier -> field_identifier)) = identifier) ;) (expression_statement "rem->_mp_size = 1;" (assignment_expression "rem->_mp_size = 1" (field_expression "rem->_mp_size" identifier -> field_identifier) = number_literal) ;) }))) (return_statement "return uVar1;" return identifier ;) })) })) (expression_statement "rem->_mp_size = 0;" (assignment_expression "rem->_mp_size = 0" (field_expression "rem->_mp_size" identifier -> field_identifier) = number_literal) ;) (return_statement "return 0;" return number_literal ;) })) (expression_statement "pcVar19 = *(code **)(in_t9 + 0x6f9bc);" (assignment_expression "pcVar19 = *(code **)(in_t9 + 0x6f9bc)" identifier = (pointer_expression "*(code **)(in_t9 + 0x6f9bc)" * (cast_expression "(code **)(in_t9 + 0x6f9bc)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(in_t9 + 0x6f9bc)" ( (binary_expression "in_t9 + 0x6f9bc" identifier + number_literal) ))))) ;) (expression_statement "(*pcVar19)();" (call_expression "(*pcVar19)()" (parenthesized_expression "(*pcVar19)" ( (pointer_expression "*pcVar19" * identifier) )) (argument_list "()" ( ))) ;) (expression_statement "apcStack_70[0] = pcVar19 + 0x77320;" (assignment_expression "apcStack_70[0] = pcVar19 + 0x77320" (subscript_expression "apcStack_70[0]" identifier [ number_literal ]) = (binary_expression "pcVar19 + 0x77320" identifier + number_literal)) ;) (expression_statement "puVar20 = auStack_80;" (assignment_expression "puVar20 = auStack_80" identifier = identifier) ;) (expression_statement "puVar16 = *(ulong **)(pcVar19 + 0x6f820);" (assignment_expression "puVar16 = *(ulong **)(pcVar19 + 0x6f820)" identifier = (pointer_expression "*(ulong **)(pcVar19 + 0x6f820)" * (cast_expression "(ulong **)(pcVar19 + 0x6f820)" ( (type_descriptor "ulong **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar19 + 0x6f820)" ( (binary_expression "pcVar19 + 0x6f820" identifier + number_literal) ))))) ;) (expression_statement "uVar11 = *(uint *)(divisor + 4);" (assignment_expression "uVar11 = *(uint *)(divisor + 4)" identifier = (pointer_expression "*(uint *)(divisor + 4)" * (cast_expression "(uint *)(divisor + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(divisor + 4)" ( (binary_expression "divisor + 4" identifier + number_literal) ))))) ;) (expression_statement "piStack_5c = (int *)0x0;" (assignment_expression "piStack_5c = (int *)0x0" identifier = (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "uStack_4c = *puVar16;" (assignment_expression "uStack_4c = *puVar16" identifier = (pointer_expression "*puVar16" * identifier)) ;) (expression_statement "uVar13 = dividend->_mp_size;" (assignment_expression "uVar13 = dividend->_mp_size" identifier = (field_expression "dividend->_mp_size" identifier -> field_identifier)) ;) (if_statement "if ((int)uVar11 < 0) {\n    _Stack_58._mp_alloc = -uVar11;\n    uVar6 = uVar11 * -4;\n    if (0x7f00 < uVar6) {\n      pcVar19 = *(code **)(pcVar19 + 0x6f5d0);\n      goto LAB_00027e2c;\n    }\nLAB_00027d94:\n    iVar10 = -(uVar6 + 7 & 0xfffffff8);\n    puVar20 = auStack_80 + iVar10;\n    _Stack_58._mp_d = (mp_limb_t *)((int)apcStack_70 + iVar10);\n  }\n  else {\n    uVar6 = uVar11 * 4;\n    pcVar19 = *(code **)(pcVar19 + 0x6f5d0);\n    _Stack_58._mp_alloc = uVar11;\n    if (uVar6 < 0x7f01) goto LAB_00027d94;\nLAB_00027e2c:\n    uStack_64 = divisor;\n    _Stack_58._mp_d = (mp_limb_t *)(*pcVar19)(&piStack_5c,uVar6);\n    divisor = uStack_64;\n  }" if (parenthesized_expression "((int)uVar11 < 0)" ( (binary_expression "(int)uVar11 < 0" (cast_expression "(int)uVar11" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n    _Stack_58._mp_alloc = -uVar11;\n    uVar6 = uVar11 * -4;\n    if (0x7f00 < uVar6) {\n      pcVar19 = *(code **)(pcVar19 + 0x6f5d0);\n      goto LAB_00027e2c;\n    }\nLAB_00027d94:\n    iVar10 = -(uVar6 + 7 & 0xfffffff8);\n    puVar20 = auStack_80 + iVar10;\n    _Stack_58._mp_d = (mp_limb_t *)((int)apcStack_70 + iVar10);\n  }" { (expression_statement "_Stack_58._mp_alloc = -uVar11;" (assignment_expression "_Stack_58._mp_alloc = -uVar11" (field_expression "_Stack_58._mp_alloc" identifier . field_identifier) = (unary_expression "-uVar11" - identifier)) ;) (expression_statement "uVar6 = uVar11 * -4;" (assignment_expression "uVar6 = uVar11 * -4" identifier = (binary_expression "uVar11 * -4" identifier * number_literal)) ;) (if_statement "if (0x7f00 < uVar6) {\n      pcVar19 = *(code **)(pcVar19 + 0x6f5d0);\n      goto LAB_00027e2c;\n    }" if (parenthesized_expression "(0x7f00 < uVar6)" ( (binary_expression "0x7f00 < uVar6" number_literal < identifier) )) (compound_statement "{\n      pcVar19 = *(code **)(pcVar19 + 0x6f5d0);\n      goto LAB_00027e2c;\n    }" { (expression_statement "pcVar19 = *(code **)(pcVar19 + 0x6f5d0);" (assignment_expression "pcVar19 = *(code **)(pcVar19 + 0x6f5d0)" identifier = (pointer_expression "*(code **)(pcVar19 + 0x6f5d0)" * (cast_expression "(code **)(pcVar19 + 0x6f5d0)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar19 + 0x6f5d0)" ( (binary_expression "pcVar19 + 0x6f5d0" identifier + number_literal) ))))) ;) (goto_statement "goto LAB_00027e2c;" goto statement_identifier ;) })) (labeled_statement "LAB_00027d94:\n    iVar10 = -(uVar6 + 7 & 0xfffffff8);" statement_identifier : (expression_statement "iVar10 = -(uVar6 + 7 & 0xfffffff8);" (assignment_expression "iVar10 = -(uVar6 + 7 & 0xfffffff8)" identifier = (unary_expression "-(uVar6 + 7 & 0xfffffff8)" - (parenthesized_expression "(uVar6 + 7 & 0xfffffff8)" ( (binary_expression "uVar6 + 7 & 0xfffffff8" (binary_expression "uVar6 + 7" identifier + number_literal) & number_literal) )))) ;)) (expression_statement "puVar20 = auStack_80 + iVar10;" (assignment_expression "puVar20 = auStack_80 + iVar10" identifier = (binary_expression "auStack_80 + iVar10" identifier + identifier)) ;) (expression_statement "_Stack_58._mp_d = (mp_limb_t *)((int)apcStack_70 + iVar10);" (assignment_expression "_Stack_58._mp_d = (mp_limb_t *)((int)apcStack_70 + iVar10)" (field_expression "_Stack_58._mp_d" identifier . field_identifier) = (cast_expression "(mp_limb_t *)((int)apcStack_70 + iVar10)" ( (type_descriptor "mp_limb_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)apcStack_70 + iVar10)" ( (binary_expression "(int)apcStack_70 + iVar10" (cast_expression "(int)apcStack_70" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) ;) }) (else_clause "else {\n    uVar6 = uVar11 * 4;\n    pcVar19 = *(code **)(pcVar19 + 0x6f5d0);\n    _Stack_58._mp_alloc = uVar11;\n    if (uVar6 < 0x7f01) goto LAB_00027d94;\nLAB_00027e2c:\n    uStack_64 = divisor;\n    _Stack_58._mp_d = (mp_limb_t *)(*pcVar19)(&piStack_5c,uVar6);\n    divisor = uStack_64;\n  }" else (compound_statement "{\n    uVar6 = uVar11 * 4;\n    pcVar19 = *(code **)(pcVar19 + 0x6f5d0);\n    _Stack_58._mp_alloc = uVar11;\n    if (uVar6 < 0x7f01) goto LAB_00027d94;\nLAB_00027e2c:\n    uStack_64 = divisor;\n    _Stack_58._mp_d = (mp_limb_t *)(*pcVar19)(&piStack_5c,uVar6);\n    divisor = uStack_64;\n  }" { (expression_statement "uVar6 = uVar11 * 4;" (assignment_expression "uVar6 = uVar11 * 4" identifier = (binary_expression "uVar11 * 4" identifier * number_literal)) ;) (expression_statement "pcVar19 = *(code **)(pcVar19 + 0x6f5d0);" (assignment_expression "pcVar19 = *(code **)(pcVar19 + 0x6f5d0)" identifier = (pointer_expression "*(code **)(pcVar19 + 0x6f5d0)" * (cast_expression "(code **)(pcVar19 + 0x6f5d0)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar19 + 0x6f5d0)" ( (binary_expression "pcVar19 + 0x6f5d0" identifier + number_literal) ))))) ;) (expression_statement "_Stack_58._mp_alloc = uVar11;" (assignment_expression "_Stack_58._mp_alloc = uVar11" (field_expression "_Stack_58._mp_alloc" identifier . field_identifier) = identifier) ;) (if_statement "if (uVar6 < 0x7f01) goto LAB_00027d94;" if (parenthesized_expression "(uVar6 < 0x7f01)" ( (binary_expression "uVar6 < 0x7f01" identifier < number_literal) )) (goto_statement "goto LAB_00027d94;" goto statement_identifier ;)) (labeled_statement "LAB_00027e2c:\n    uStack_64 = divisor;" statement_identifier : (expression_statement "uStack_64 = divisor;" (assignment_expression "uStack_64 = divisor" identifier = identifier) ;)) (expression_statement "_Stack_58._mp_d = (mp_limb_t *)(*pcVar19)(&piStack_5c,uVar6);" (assignment_expression "_Stack_58._mp_d = (mp_limb_t *)(*pcVar19)(&piStack_5c,uVar6)" (field_expression "_Stack_58._mp_d" identifier . field_identifier) = (cast_expression "(mp_limb_t *)(*pcVar19)(&piStack_5c,uVar6)" ( (type_descriptor "mp_limb_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(*pcVar19)(&piStack_5c,uVar6)" (parenthesized_expression "(*pcVar19)" ( (pointer_expression "*pcVar19" * identifier) )) (argument_list "(&piStack_5c,uVar6)" ( (pointer_expression "&piStack_5c" & identifier) , identifier ))))) ;) (expression_statement "divisor = uStack_64;" (assignment_expression "divisor = uStack_64" identifier = identifier) ;) }))) (expression_statement "p_Var7 = &_Stack_58;" (assignment_expression "p_Var7 = &_Stack_58" identifier = (pointer_expression "&_Stack_58" & identifier)) ;) (expression_statement "uVar11 = uVar13 ^ uVar11;" (assignment_expression "uVar11 = uVar13 ^ uVar11" identifier = (binary_expression "uVar13 ^ uVar11" identifier ^ identifier)) ;) (expression_statement "(**(code **)(apcStack_70[0] + -0x7a6c))(rem,p_Var7,dividend,divisor);" (call_expression "(**(code **)(apcStack_70[0] + -0x7a6c))(rem,p_Var7,dividend,divisor)" (parenthesized_expression "(**(code **)(apcStack_70[0] + -0x7a6c))" ( (pointer_expression "**(code **)(apcStack_70[0] + -0x7a6c)" * (pointer_expression "*(code **)(apcStack_70[0] + -0x7a6c)" * (cast_expression "(code **)(apcStack_70[0] + -0x7a6c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(apcStack_70[0] + -0x7a6c)" ( (binary_expression "apcStack_70[0] + -0x7a6c" (subscript_expression "apcStack_70[0]" identifier [ number_literal ]) + number_literal) ))))) )) (argument_list "(rem,p_Var7,dividend,divisor)" ( identifier , identifier , identifier , identifier ))) ;) (if_statement "if (((int)uVar11 < 0) && (_Stack_58._mp_size != 0)) {\n    p_Var7 = rem;\n    (**(code **)(apcStack_70[0] + -0x7ac0))(rem,rem,1);\n    piVar4 = piStack_5c;\n    if (piStack_5c == (int *)0x0) goto LAB_00027dd8;\n    pcVar19 = *(code **)(apcStack_70[0] + -0x7a2c);\n  }\n  else {\n    pcVar19 = *(code **)(apcStack_70[0] + -0x7a2c);\n    piVar4 = piStack_5c;\n    if (piStack_5c == (int *)0x0) goto LAB_00027dd8;\n  }" if (parenthesized_expression "(((int)uVar11 < 0) && (_Stack_58._mp_size != 0))" ( (binary_expression "((int)uVar11 < 0) && (_Stack_58._mp_size != 0)" (parenthesized_expression "((int)uVar11 < 0)" ( (binary_expression "(int)uVar11 < 0" (cast_expression "(int)uVar11" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) && (parenthesized_expression "(_Stack_58._mp_size != 0)" ( (binary_expression "_Stack_58._mp_size != 0" (field_expression "_Stack_58._mp_size" identifier . field_identifier) != number_literal) ))) )) (compound_statement "{\n    p_Var7 = rem;\n    (**(code **)(apcStack_70[0] + -0x7ac0))(rem,rem,1);\n    piVar4 = piStack_5c;\n    if (piStack_5c == (int *)0x0) goto LAB_00027dd8;\n    pcVar19 = *(code **)(apcStack_70[0] + -0x7a2c);\n  }" { (expression_statement "p_Var7 = rem;" (assignment_expression "p_Var7 = rem" identifier = identifier) ;) (expression_statement "(**(code **)(apcStack_70[0] + -0x7ac0))(rem,rem,1);" (call_expression "(**(code **)(apcStack_70[0] + -0x7ac0))(rem,rem,1)" (parenthesized_expression "(**(code **)(apcStack_70[0] + -0x7ac0))" ( (pointer_expression "**(code **)(apcStack_70[0] + -0x7ac0)" * (pointer_expression "*(code **)(apcStack_70[0] + -0x7ac0)" * (cast_expression "(code **)(apcStack_70[0] + -0x7ac0)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(apcStack_70[0] + -0x7ac0)" ( (binary_expression "apcStack_70[0] + -0x7ac0" (subscript_expression "apcStack_70[0]" identifier [ number_literal ]) + number_literal) ))))) )) (argument_list "(rem,rem,1)" ( identifier , identifier , number_literal ))) ;) (expression_statement "piVar4 = piStack_5c;" (assignment_expression "piVar4 = piStack_5c" identifier = identifier) ;) (if_statement "if (piStack_5c == (int *)0x0) goto LAB_00027dd8;" if (parenthesized_expression "(piStack_5c == (int *)0x0)" ( (binary_expression "piStack_5c == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_00027dd8;" goto statement_identifier ;)) (expression_statement "pcVar19 = *(code **)(apcStack_70[0] + -0x7a2c);" (assignment_expression "pcVar19 = *(code **)(apcStack_70[0] + -0x7a2c)" identifier = (pointer_expression "*(code **)(apcStack_70[0] + -0x7a2c)" * (cast_expression "(code **)(apcStack_70[0] + -0x7a2c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(apcStack_70[0] + -0x7a2c)" ( (binary_expression "apcStack_70[0] + -0x7a2c" (subscript_expression "apcStack_70[0]" identifier [ number_literal ]) + number_literal) ))))) ;) }) (else_clause "else {\n    pcVar19 = *(code **)(apcStack_70[0] + -0x7a2c);\n    piVar4 = piStack_5c;\n    if (piStack_5c == (int *)0x0) goto LAB_00027dd8;\n  }" else (compound_statement "{\n    pcVar19 = *(code **)(apcStack_70[0] + -0x7a2c);\n    piVar4 = piStack_5c;\n    if (piStack_5c == (int *)0x0) goto LAB_00027dd8;\n  }" { (expression_statement "pcVar19 = *(code **)(apcStack_70[0] + -0x7a2c);" (assignment_expression "pcVar19 = *(code **)(apcStack_70[0] + -0x7a2c)" identifier = (pointer_expression "*(code **)(apcStack_70[0] + -0x7a2c)" * (cast_expression "(code **)(apcStack_70[0] + -0x7a2c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(apcStack_70[0] + -0x7a2c)" ( (binary_expression "apcStack_70[0] + -0x7a2c" (subscript_expression "apcStack_70[0]" identifier [ number_literal ]) + number_literal) ))))) ;) (expression_statement "piVar4 = piStack_5c;" (assignment_expression "piVar4 = piStack_5c" identifier = identifier) ;) (if_statement "if (piStack_5c == (int *)0x0) goto LAB_00027dd8;" if (parenthesized_expression "(piStack_5c == (int *)0x0)" ( (binary_expression "piStack_5c == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_00027dd8;" goto statement_identifier ;)) }))) (expression_statement "piVar4 = piStack_5c;" (assignment_expression "piVar4 = piStack_5c" identifier = identifier) ;) (expression_statement "(*pcVar19)();" (call_expression "(*pcVar19)()" (parenthesized_expression "(*pcVar19)" ( (pointer_expression "*pcVar19" * identifier) )) (argument_list "()" ( ))) ;) (labeled_statement "LAB_00027dd8:\n  if (uStack_4c == *puVar16) {\n    return *puVar16;\n  }" statement_identifier : (if_statement "if (uStack_4c == *puVar16) {\n    return *puVar16;\n  }" if (parenthesized_expression "(uStack_4c == *puVar16)" ( (binary_expression "uStack_4c == *puVar16" identifier == (pointer_expression "*puVar16" * identifier)) )) (compound_statement "{\n    return *puVar16;\n  }" { (return_statement "return *puVar16;" return (pointer_expression "*puVar16" * identifier) ;) }))) (expression_statement "pcVar19 = *(code **)(apcStack_70[0] + -0x7b70);" (assignment_expression "pcVar19 = *(code **)(apcStack_70[0] + -0x7b70)" identifier = (pointer_expression "*(code **)(apcStack_70[0] + -0x7b70)" * (cast_expression "(code **)(apcStack_70[0] + -0x7b70)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(apcStack_70[0] + -0x7b70)" ( (binary_expression "apcStack_70[0] + -0x7b70" (subscript_expression "apcStack_70[0]" identifier [ number_literal ]) + number_literal) ))))) ;) (expression_statement "pcVar22 = __gmpz_fdiv_ui;" (assignment_expression "pcVar22 = __gmpz_fdiv_ui" identifier = identifier) ;) (expression_statement "(*pcVar19)();" (call_expression "(*pcVar19)()" (parenthesized_expression "(*pcVar19)" ( (pointer_expression "*pcVar19" * identifier) )) (argument_list "()" ( ))) ;) (expression_statement "*(code **)(puVar20 + -0x18) = pcVar19 + 0x771b0;" (assignment_expression "*(code **)(puVar20 + -0x18) = pcVar19 + 0x771b0" (pointer_expression "*(code **)(puVar20 + -0x18)" * (cast_expression "(code **)(puVar20 + -0x18)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar20 + -0x18)" ( (binary_expression "puVar20 + -0x18" identifier + number_literal) )))) = (binary_expression "pcVar19 + 0x771b0" identifier + number_literal)) ;) (expression_statement "*(code **)(puVar20 + -4) = pcVar22;" (assignment_expression "*(code **)(puVar20 + -4) = pcVar22" (pointer_expression "*(code **)(puVar20 + -4)" * (cast_expression "(code **)(puVar20 + -4)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar20 + -4)" ( (binary_expression "puVar20 + -4" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(uint *)(puVar20 + -8) = uVar13;" (assignment_expression "*(uint *)(puVar20 + -8) = uVar13" (pointer_expression "*(uint *)(puVar20 + -8)" * (cast_expression "(uint *)(puVar20 + -8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar20 + -8)" ( (binary_expression "puVar20 + -8" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(uint *)(puVar20 + -0xc) = uVar11;" (assignment_expression "*(uint *)(puVar20 + -0xc) = uVar11" (pointer_expression "*(uint *)(puVar20 + -0xc)" * (cast_expression "(uint *)(puVar20 + -0xc)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar20 + -0xc)" ( (binary_expression "puVar20 + -0xc" identifier + number_literal) )))) = identifier) ;) (if_statement "if (p_Var7 != (mpz_ptr)0x0) {\n    iVar10 = piVar4[1];\n    if (iVar10 == 0) {\n      return 0;\n    }\n    if (iVar10 < 0) {\n      uVar1 = (**(code **)(pcVar19 + 0x6f630))(piVar4[2],-iVar10,p_Var7);\n    }\n    else {\n      uVar1 = (**(code **)(pcVar19 + 0x6f630))(piVar4[2],iVar10,p_Var7);\n    }\n    if ((uVar1 != 0) && (iVar10 < 0)) {\n      return (int)p_Var7 - uVar1;\n    }\n    return uVar1;\n  }" if (parenthesized_expression "(p_Var7 != (mpz_ptr)0x0)" ( (binary_expression "p_Var7 != (mpz_ptr)0x0" identifier != (cast_expression "(mpz_ptr)0x0" ( (type_descriptor "mpz_ptr" type_identifier) ) number_literal)) )) (compound_statement "{\n    iVar10 = piVar4[1];\n    if (iVar10 == 0) {\n      return 0;\n    }\n    if (iVar10 < 0) {\n      uVar1 = (**(code **)(pcVar19 + 0x6f630))(piVar4[2],-iVar10,p_Var7);\n    }\n    else {\n      uVar1 = (**(code **)(pcVar19 + 0x6f630))(piVar4[2],iVar10,p_Var7);\n    }\n    if ((uVar1 != 0) && (iVar10 < 0)) {\n      return (int)p_Var7 - uVar1;\n    }\n    return uVar1;\n  }" { (expression_statement "iVar10 = piVar4[1];" (assignment_expression "iVar10 = piVar4[1]" identifier = (subscript_expression "piVar4[1]" identifier [ number_literal ])) ;) (if_statement "if (iVar10 == 0) {\n      return 0;\n    }" if (parenthesized_expression "(iVar10 == 0)" ( (binary_expression "iVar10 == 0" identifier == number_literal) )) (compound_statement "{\n      return 0;\n    }" { (return_statement "return 0;" return number_literal ;) })) (if_statement "if (iVar10 < 0) {\n      uVar1 = (**(code **)(pcVar19 + 0x6f630))(piVar4[2],-iVar10,p_Var7);\n    }\n    else {\n      uVar1 = (**(code **)(pcVar19 + 0x6f630))(piVar4[2],iVar10,p_Var7);\n    }" if (parenthesized_expression "(iVar10 < 0)" ( (binary_expression "iVar10 < 0" identifier < number_literal) )) (compound_statement "{\n      uVar1 = (**(code **)(pcVar19 + 0x6f630))(piVar4[2],-iVar10,p_Var7);\n    }" { (expression_statement "uVar1 = (**(code **)(pcVar19 + 0x6f630))(piVar4[2],-iVar10,p_Var7);" (assignment_expression "uVar1 = (**(code **)(pcVar19 + 0x6f630))(piVar4[2],-iVar10,p_Var7)" identifier = (call_expression "(**(code **)(pcVar19 + 0x6f630))(piVar4[2],-iVar10,p_Var7)" (parenthesized_expression "(**(code **)(pcVar19 + 0x6f630))" ( (pointer_expression "**(code **)(pcVar19 + 0x6f630)" * (pointer_expression "*(code **)(pcVar19 + 0x6f630)" * (cast_expression "(code **)(pcVar19 + 0x6f630)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar19 + 0x6f630)" ( (binary_expression "pcVar19 + 0x6f630" identifier + number_literal) ))))) )) (argument_list "(piVar4[2],-iVar10,p_Var7)" ( (subscript_expression "piVar4[2]" identifier [ number_literal ]) , (unary_expression "-iVar10" - identifier) , identifier )))) ;) }) (else_clause "else {\n      uVar1 = (**(code **)(pcVar19 + 0x6f630))(piVar4[2],iVar10,p_Var7);\n    }" else (compound_statement "{\n      uVar1 = (**(code **)(pcVar19 + 0x6f630))(piVar4[2],iVar10,p_Var7);\n    }" { (expression_statement "uVar1 = (**(code **)(pcVar19 + 0x6f630))(piVar4[2],iVar10,p_Var7);" (assignment_expression "uVar1 = (**(code **)(pcVar19 + 0x6f630))(piVar4[2],iVar10,p_Var7)" identifier = (call_expression "(**(code **)(pcVar19 + 0x6f630))(piVar4[2],iVar10,p_Var7)" (parenthesized_expression "(**(code **)(pcVar19 + 0x6f630))" ( (pointer_expression "**(code **)(pcVar19 + 0x6f630)" * (pointer_expression "*(code **)(pcVar19 + 0x6f630)" * (cast_expression "(code **)(pcVar19 + 0x6f630)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar19 + 0x6f630)" ( (binary_expression "pcVar19 + 0x6f630" identifier + number_literal) ))))) )) (argument_list "(piVar4[2],iVar10,p_Var7)" ( (subscript_expression "piVar4[2]" identifier [ number_literal ]) , identifier , identifier )))) ;) }))) (if_statement "if ((uVar1 != 0) && (iVar10 < 0)) {\n      return (int)p_Var7 - uVar1;\n    }" if (parenthesized_expression "((uVar1 != 0) && (iVar10 < 0))" ( (binary_expression "(uVar1 != 0) && (iVar10 < 0)" (parenthesized_expression "(uVar1 != 0)" ( (binary_expression "uVar1 != 0" identifier != number_literal) )) && (parenthesized_expression "(iVar10 < 0)" ( (binary_expression "iVar10 < 0" identifier < number_literal) ))) )) (compound_statement "{\n      return (int)p_Var7 - uVar1;\n    }" { (return_statement "return (int)p_Var7 - uVar1;" return (binary_expression "(int)p_Var7 - uVar1" (cast_expression "(int)p_Var7" ( (type_descriptor "int" primitive_type) ) identifier) - identifier) ;) })) (return_statement "return uVar1;" return identifier ;) })) (expression_statement "pcVar19 = *(code **)(pcVar19 + 0x6f74c);" (assignment_expression "pcVar19 = *(code **)(pcVar19 + 0x6f74c)" identifier = (pointer_expression "*(code **)(pcVar19 + 0x6f74c)" * (cast_expression "(code **)(pcVar19 + 0x6f74c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar19 + 0x6f74c)" ( (binary_expression "pcVar19 + 0x6f74c" identifier + number_literal) ))))) ;) (expression_statement "uVar23 = 0x27f54;" (assignment_expression "uVar23 = 0x27f54" identifier = number_literal) ;) (expression_statement "(*pcVar19)();" (call_expression "(*pcVar19)()" (parenthesized_expression "(*pcVar19)" ( (pointer_expression "*pcVar19" * identifier) )) (argument_list "()" ( ))) ;) (expression_statement "pcVar22 = pcVar19 + 0x770e0;" (assignment_expression "pcVar22 = pcVar19 + 0x770e0" identifier = (binary_expression "pcVar19 + 0x770e0" identifier + number_literal)) ;) (expression_statement "puVar21 = puVar20 + -0x80;" (assignment_expression "puVar21 = puVar20 + -0x80" identifier = (binary_expression "puVar20 + -0x80" identifier + number_literal)) ;) (expression_statement "*(uint *)(puVar20 + -0x4c) = uVar13;" (assignment_expression "*(uint *)(puVar20 + -0x4c) = uVar13" (pointer_expression "*(uint *)(puVar20 + -0x4c)" * (cast_expression "(uint *)(puVar20 + -0x4c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar20 + -0x4c)" ( (binary_expression "puVar20 + -0x4c" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar20 + -0x38) = unaff_s6;" (assignment_expression "*(undefined4 *)(puVar20 + -0x38) = unaff_s6" (pointer_expression "*(undefined4 *)(puVar20 + -0x38)" * (cast_expression "(undefined4 *)(puVar20 + -0x38)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar20 + -0x38)" ( (binary_expression "puVar20 + -0x38" identifier + number_literal) )))) = identifier) ;) (expression_statement "puVar14 = *(ulong **)(pcVar19 + 0x6f5e0);" (assignment_expression "puVar14 = *(ulong **)(pcVar19 + 0x6f5e0)" identifier = (pointer_expression "*(ulong **)(pcVar19 + 0x6f5e0)" * (cast_expression "(ulong **)(pcVar19 + 0x6f5e0)" ( (type_descriptor "ulong **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar19 + 0x6f5e0)" ( (binary_expression "pcVar19 + 0x6f5e0" identifier + number_literal) ))))) ;) (expression_statement "*(undefined1 **)(puVar20 + -0x30) = auStack_80;" (assignment_expression "*(undefined1 **)(puVar20 + -0x30) = auStack_80" (pointer_expression "*(undefined1 **)(puVar20 + -0x30)" * (cast_expression "(undefined1 **)(puVar20 + -0x30)" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar20 + -0x30)" ( (binary_expression "puVar20 + -0x30" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar20 + -0x3c) = unaff_s5;" (assignment_expression "*(undefined4 *)(puVar20 + -0x3c) = unaff_s5" (pointer_expression "*(undefined4 *)(puVar20 + -0x3c)" * (cast_expression "(undefined4 *)(puVar20 + -0x3c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar20 + -0x3c)" ( (binary_expression "puVar20 + -0x3c" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar20 + -0x2c) = uVar23;" (assignment_expression "*(undefined4 *)(puVar20 + -0x2c) = uVar23" (pointer_expression "*(undefined4 *)(puVar20 + -0x2c)" * (cast_expression "(undefined4 *)(puVar20 + -0x2c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar20 + -0x2c)" ( (binary_expression "puVar20 + -0x2c" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar20 + -0x34) = unaff_s7;" (assignment_expression "*(undefined4 *)(puVar20 + -0x34) = unaff_s7" (pointer_expression "*(undefined4 *)(puVar20 + -0x34)" * (cast_expression "(undefined4 *)(puVar20 + -0x34)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar20 + -0x34)" ( (binary_expression "puVar20 + -0x34" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(mpz_srcptr *)(puVar20 + -0x40) = dividend;" (assignment_expression "*(mpz_srcptr *)(puVar20 + -0x40) = dividend" (pointer_expression "*(mpz_srcptr *)(puVar20 + -0x40)" * (cast_expression "(mpz_srcptr *)(puVar20 + -0x40)" ( (type_descriptor "mpz_srcptr *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar20 + -0x40)" ( (binary_expression "puVar20 + -0x40" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(ulong **)(puVar20 + -0x44) = puVar16;" (assignment_expression "*(ulong **)(puVar20 + -0x44) = puVar16" (pointer_expression "*(ulong **)(puVar20 + -0x44)" * (cast_expression "(ulong **)(puVar20 + -0x44)" ( (type_descriptor "ulong **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar20 + -0x44)" ( (binary_expression "puVar20 + -0x44" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(mpz_ptr *)(puVar20 + -0x48) = rem;" (assignment_expression "*(mpz_ptr *)(puVar20 + -0x48) = rem" (pointer_expression "*(mpz_ptr *)(puVar20 + -0x48)" * (cast_expression "(mpz_ptr *)(puVar20 + -0x48)" ( (type_descriptor "mpz_ptr *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar20 + -0x48)" ( (binary_expression "puVar20 + -0x48" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(uint *)(puVar20 + -0x50) = uVar11;" (assignment_expression "*(uint *)(puVar20 + -0x50) = uVar11" (pointer_expression "*(uint *)(puVar20 + -0x50)" * (cast_expression "(uint *)(puVar20 + -0x50)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar20 + -0x50)" ( (binary_expression "puVar20 + -0x50" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(code **)(puVar20 + -0x68) = pcVar22;" (assignment_expression "*(code **)(puVar20 + -0x68) = pcVar22" (pointer_expression "*(code **)(puVar20 + -0x68)" * (cast_expression "(code **)(puVar20 + -0x68)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar20 + -0x68)" ( (binary_expression "puVar20 + -0x68" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(ulong *)(puVar20 + -0x54) = *puVar14;" (assignment_expression "*(ulong *)(puVar20 + -0x54) = *puVar14" (pointer_expression "*(ulong *)(puVar20 + -0x54)" * (cast_expression "(ulong *)(puVar20 + -0x54)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar20 + -0x54)" ( (binary_expression "puVar20 + -0x54" identifier + number_literal) )))) = (pointer_expression "*puVar14" * identifier)) ;) (if_statement "if (p_Var7 < (mpz_ptr)0x30) {\n    *(undefined4 *)piVar4[2] =\n         *(undefined4 *)(*(int *)(pcVar19 + 0x6f5ec) + (int)((int)&p_Var7->_mp_alloc + 1) * 4);\n    piVar4[1] = (uint)(p_Var7 != (mpz_ptr)0x0);\n    uVar1 = FUN_000280d0();\n    return uVar1;\n  }" if (parenthesized_expression "(p_Var7 < (mpz_ptr)0x30)" ( (binary_expression "p_Var7 < (mpz_ptr)0x30" identifier < (cast_expression "(mpz_ptr)0x30" ( (type_descriptor "mpz_ptr" type_identifier) ) number_literal)) )) (compound_statement "{\n    *(undefined4 *)piVar4[2] =\n         *(undefined4 *)(*(int *)(pcVar19 + 0x6f5ec) + (int)((int)&p_Var7->_mp_alloc + 1) * 4);\n    piVar4[1] = (uint)(p_Var7 != (mpz_ptr)0x0);\n    uVar1 = FUN_000280d0();\n    return uVar1;\n  }" { (expression_statement "*(undefined4 *)piVar4[2] =\n         *(undefined4 *)(*(int *)(pcVar19 + 0x6f5ec) + (int)((int)&p_Var7->_mp_alloc + 1) * 4);" (assignment_expression "*(undefined4 *)piVar4[2] =\n         *(undefined4 *)(*(int *)(pcVar19 + 0x6f5ec) + (int)((int)&p_Var7->_mp_alloc + 1) * 4)" (pointer_expression "*(undefined4 *)piVar4[2]" * (cast_expression "(undefined4 *)piVar4[2]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar4[2]" identifier [ number_literal ]))) = (pointer_expression "*(undefined4 *)(*(int *)(pcVar19 + 0x6f5ec) + (int)((int)&p_Var7->_mp_alloc + 1) * 4)" * (cast_expression "(undefined4 *)(*(int *)(pcVar19 + 0x6f5ec) + (int)((int)&p_Var7->_mp_alloc + 1) * 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(pcVar19 + 0x6f5ec) + (int)((int)&p_Var7->_mp_alloc + 1) * 4)" ( (binary_expression "*(int *)(pcVar19 + 0x6f5ec) + (int)((int)&p_Var7->_mp_alloc + 1) * 4" (pointer_expression "*(int *)(pcVar19 + 0x6f5ec)" * (cast_expression "(int *)(pcVar19 + 0x6f5ec)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar19 + 0x6f5ec)" ( (binary_expression "pcVar19 + 0x6f5ec" identifier + number_literal) )))) + (binary_expression "(int)((int)&p_Var7->_mp_alloc + 1) * 4" (cast_expression "(int)((int)&p_Var7->_mp_alloc + 1)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((int)&p_Var7->_mp_alloc + 1)" ( (binary_expression "(int)&p_Var7->_mp_alloc + 1" (cast_expression "(int)&p_Var7->_mp_alloc" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&p_Var7->_mp_alloc" & (field_expression "p_Var7->_mp_alloc" identifier -> field_identifier))) + number_literal) ))) * number_literal)) ))))) ;) (expression_statement "piVar4[1] = (uint)(p_Var7 != (mpz_ptr)0x0);" (assignment_expression "piVar4[1] = (uint)(p_Var7 != (mpz_ptr)0x0)" (subscript_expression "piVar4[1]" identifier [ number_literal ]) = (call_expression "(uint)(p_Var7 != (mpz_ptr)0x0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(p_Var7 != (mpz_ptr)0x0)" ( (binary_expression "p_Var7 != (mpz_ptr)0x0" identifier != (cast_expression "(mpz_ptr)0x0" ( (type_descriptor "mpz_ptr" type_identifier) ) number_literal)) )))) ;) (expression_statement "uVar1 = FUN_000280d0();" (assignment_expression "uVar1 = FUN_000280d0()" identifier = (call_expression "FUN_000280d0()" identifier (argument_list "()" ( )))) ;) (return_statement "return uVar1;" return identifier ;) })) (expression_statement "iVar10 = (((uint)p_Var7 >> 6) * 0x17 >> 5) + 5;" (assignment_expression "iVar10 = (((uint)p_Var7 >> 6) * 0x17 >> 5) + 5" identifier = (binary_expression "(((uint)p_Var7 >> 6) * 0x17 >> 5) + 5" (parenthesized_expression "(((uint)p_Var7 >> 6) * 0x17 >> 5)" ( (binary_expression "((uint)p_Var7 >> 6) * 0x17 >> 5" (binary_expression "((uint)p_Var7 >> 6) * 0x17" (parenthesized_expression "((uint)p_Var7 >> 6)" ( (binary_expression "(uint)p_Var7 >> 6" (cast_expression "(uint)p_Var7" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) )) * number_literal) >> number_literal) )) + number_literal)) ;) (expression_statement "uVar11 = (uint)p_Var7 >> 1;" (assignment_expression "uVar11 = (uint)p_Var7 >> 1" identifier = (binary_expression "(uint)p_Var7 >> 1" (cast_expression "(uint)p_Var7" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal)) ;) (if_statement "if (*piVar4 < iVar10 * 2) {\n    pcVar19 = *(code **)(pcVar19 + 0x6f65c);\n    *(uint *)(puVar20 + -0x5c) = uVar11;\n    piVar17 = (int *)(*pcVar19)();\n    pcVar22 = *(code **)(puVar20 + -0x68);\n    uVar11 = *(uint *)(puVar20 + -0x5c);\n  }\n  else {\n    piVar17 = (int *)piVar4[2];\n  }" if (parenthesized_expression "(*piVar4 < iVar10 * 2)" ( (binary_expression "*piVar4 < iVar10 * 2" (pointer_expression "*piVar4" * identifier) < (binary_expression "iVar10 * 2" identifier * number_literal)) )) (compound_statement "{\n    pcVar19 = *(code **)(pcVar19 + 0x6f65c);\n    *(uint *)(puVar20 + -0x5c) = uVar11;\n    piVar17 = (int *)(*pcVar19)();\n    pcVar22 = *(code **)(puVar20 + -0x68);\n    uVar11 = *(uint *)(puVar20 + -0x5c);\n  }" { (expression_statement "pcVar19 = *(code **)(pcVar19 + 0x6f65c);" (assignment_expression "pcVar19 = *(code **)(pcVar19 + 0x6f65c)" identifier = (pointer_expression "*(code **)(pcVar19 + 0x6f65c)" * (cast_expression "(code **)(pcVar19 + 0x6f65c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar19 + 0x6f65c)" ( (binary_expression "pcVar19 + 0x6f65c" identifier + number_literal) ))))) ;) (expression_statement "*(uint *)(puVar20 + -0x5c) = uVar11;" (assignment_expression "*(uint *)(puVar20 + -0x5c) = uVar11" (pointer_expression "*(uint *)(puVar20 + -0x5c)" * (cast_expression "(uint *)(puVar20 + -0x5c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar20 + -0x5c)" ( (binary_expression "puVar20 + -0x5c" identifier + number_literal) )))) = identifier) ;) (expression_statement "piVar17 = (int *)(*pcVar19)();" (assignment_expression "piVar17 = (int *)(*pcVar19)()" identifier = (cast_expression "(int *)(*pcVar19)()" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "(*pcVar19)()" (parenthesized_expression "(*pcVar19)" ( (pointer_expression "*pcVar19" * identifier) )) (argument_list "()" ( ))))) ;) (expression_statement "pcVar22 = *(code **)(puVar20 + -0x68);" (assignment_expression "pcVar22 = *(code **)(puVar20 + -0x68)" identifier = (pointer_expression "*(code **)(puVar20 + -0x68)" * (cast_expression "(code **)(puVar20 + -0x68)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar20 + -0x68)" ( (binary_expression "puVar20 + -0x68" identifier + number_literal) ))))) ;) (expression_statement "uVar11 = *(uint *)(puVar20 + -0x5c);" (assignment_expression "uVar11 = *(uint *)(puVar20 + -0x5c)" identifier = (pointer_expression "*(uint *)(puVar20 + -0x5c)" * (cast_expression "(uint *)(puVar20 + -0x5c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar20 + -0x5c)" ( (binary_expression "puVar20 + -0x5c" identifier + number_literal) ))))) ;) }) (else_clause "else {\n    piVar17 = (int *)piVar4[2];\n  }" else (compound_statement "{\n    piVar17 = (int *)piVar4[2];\n  }" { (expression_statement "piVar17 = (int *)piVar4[2];" (assignment_expression "piVar17 = (int *)piVar4[2]" identifier = (cast_expression "(int *)piVar4[2]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar4[2]" identifier [ number_literal ]))) ;) }))) (expression_statement "*(undefined4 *)(puVar20 + -0x58) = 0;" (assignment_expression "*(undefined4 *)(puVar20 + -0x58) = 0" (pointer_expression "*(undefined4 *)(puVar20 + -0x58)" * (cast_expression "(undefined4 *)(puVar20 + -0x58)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar20 + -0x58)" ( (binary_expression "puVar20 + -0x58" identifier + number_literal) )))) = number_literal) ;) (if_statement "if ((uint)(iVar10 * 8) < 0x7f01) {\n    puVar21 = puVar20 + iVar10 * -8 + -0x80;\n    puVar18 = puVar20 + iVar10 * -8 + -0x68;\n  }\n  else {\n    pcVar19 = *(code **)(pcVar22 + -0x7d50);\n    *(uint *)(puVar20 + -0x5c) = uVar11;\n    puVar18 = (undefined1 *)(*pcVar19)(puVar20 + -0x58);\n    pcVar22 = *(code **)(puVar20 + -0x68);\n    uVar11 = *(uint *)(puVar20 + -0x5c);\n  }" if (parenthesized_expression "((uint)(iVar10 * 8) < 0x7f01)" ( (binary_expression "(uint)(iVar10 * 8) < 0x7f01" (call_expression "(uint)(iVar10 * 8)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(iVar10 * 8)" ( (binary_expression "iVar10 * 8" identifier * number_literal) ))) < number_literal) )) (compound_statement "{\n    puVar21 = puVar20 + iVar10 * -8 + -0x80;\n    puVar18 = puVar20 + iVar10 * -8 + -0x68;\n  }" { (expression_statement "puVar21 = puVar20 + iVar10 * -8 + -0x80;" (assignment_expression "puVar21 = puVar20 + iVar10 * -8 + -0x80" identifier = (binary_expression "puVar20 + iVar10 * -8 + -0x80" (binary_expression "puVar20 + iVar10 * -8" identifier + (binary_expression "iVar10 * -8" identifier * number_literal)) + number_literal)) ;) (expression_statement "puVar18 = puVar20 + iVar10 * -8 + -0x68;" (assignment_expression "puVar18 = puVar20 + iVar10 * -8 + -0x68" identifier = (binary_expression "puVar20 + iVar10 * -8 + -0x68" (binary_expression "puVar20 + iVar10 * -8" identifier + (binary_expression "iVar10 * -8" identifier * number_literal)) + number_literal)) ;) }) (else_clause "else {\n    pcVar19 = *(code **)(pcVar22 + -0x7d50);\n    *(uint *)(puVar20 + -0x5c) = uVar11;\n    puVar18 = (undefined1 *)(*pcVar19)(puVar20 + -0x58);\n    pcVar22 = *(code **)(puVar20 + -0x68);\n    uVar11 = *(uint *)(puVar20 + -0x5c);\n  }" else (compound_statement "{\n    pcVar19 = *(code **)(pcVar22 + -0x7d50);\n    *(uint *)(puVar20 + -0x5c) = uVar11;\n    puVar18 = (undefined1 *)(*pcVar19)(puVar20 + -0x58);\n    pcVar22 = *(code **)(puVar20 + -0x68);\n    uVar11 = *(uint *)(puVar20 + -0x5c);\n  }" { (expression_statement "pcVar19 = *(code **)(pcVar22 + -0x7d50);" (assignment_expression "pcVar19 = *(code **)(pcVar22 + -0x7d50)" identifier = (pointer_expression "*(code **)(pcVar22 + -0x7d50)" * (cast_expression "(code **)(pcVar22 + -0x7d50)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar22 + -0x7d50)" ( (binary_expression "pcVar22 + -0x7d50" identifier + number_literal) ))))) ;) (expression_statement "*(uint *)(puVar20 + -0x5c) = uVar11;" (assignment_expression "*(uint *)(puVar20 + -0x5c) = uVar11" (pointer_expression "*(uint *)(puVar20 + -0x5c)" * (cast_expression "(uint *)(puVar20 + -0x5c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar20 + -0x5c)" ( (binary_expression "puVar20 + -0x5c" identifier + number_literal) )))) = identifier) ;) (expression_statement "puVar18 = (undefined1 *)(*pcVar19)(puVar20 + -0x58);" (assignment_expression "puVar18 = (undefined1 *)(*pcVar19)(puVar20 + -0x58)" identifier = (cast_expression "(undefined1 *)(*pcVar19)(puVar20 + -0x58)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(*pcVar19)(puVar20 + -0x58)" (parenthesized_expression "(*pcVar19)" ( (pointer_expression "*pcVar19" * identifier) )) (argument_list "(puVar20 + -0x58)" ( (binary_expression "puVar20 + -0x58" identifier + number_literal) ))))) ;) (expression_statement "pcVar22 = *(code **)(puVar20 + -0x68);" (assignment_expression "pcVar22 = *(code **)(puVar20 + -0x68)" identifier = (pointer_expression "*(code **)(puVar20 + -0x68)" * (cast_expression "(code **)(puVar20 + -0x68)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar20 + -0x68)" ( (binary_expression "puVar20 + -0x68" identifier + number_literal) ))))) ;) (expression_statement "uVar11 = *(uint *)(puVar20 + -0x5c);" (assignment_expression "uVar11 = *(uint *)(puVar20 + -0x5c)" identifier = (pointer_expression "*(uint *)(puVar20 + -0x5c)" * (cast_expression "(uint *)(puVar20 + -0x5c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar20 + -0x5c)" ( (binary_expression "puVar20 + -0x5c" identifier + number_literal) ))))) ;) }))) (expression_statement "piVar12 = (int *)(puVar18 + iVar10 * 4);" (assignment_expression "piVar12 = (int *)(puVar18 + iVar10 * 4)" identifier = (cast_expression "(int *)(puVar18 + iVar10 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar18 + iVar10 * 4)" ( (binary_expression "puVar18 + iVar10 * 4" identifier + (binary_expression "iVar10 * 4" identifier * number_literal)) )))) ;) (expression_statement "iVar10 = (**(code **)(pcVar22 + -0x7e94))(puVar18,piVar12,uVar11);" (assignment_expression "iVar10 = (**(code **)(pcVar22 + -0x7e94))(puVar18,piVar12,uVar11)" identifier = (call_expression "(**(code **)(pcVar22 + -0x7e94))(puVar18,piVar12,uVar11)" (parenthesized_expression "(**(code **)(pcVar22 + -0x7e94))" ( (pointer_expression "**(code **)(pcVar22 + -0x7e94)" * (pointer_expression "*(code **)(pcVar22 + -0x7e94)" * (cast_expression "(code **)(pcVar22 + -0x7e94)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar22 + -0x7e94)" ( (binary_expression "pcVar22 + -0x7e94" identifier + number_literal) ))))) )) (argument_list "(puVar18,piVar12,uVar11)" ( identifier , identifier , identifier )))) ;) (if_statement "if (((uint)p_Var7 & 1) == 0) {\n    iVar2 = (**(code **)(*(int *)(puVar20 + -0x68) + -0x7ad4))(piVar12,piVar12);\n    iVar3 = (**(code **)(*(int *)(puVar20 + -0x68) + -0x7d0c))(piVar12,piVar12,puVar18,iVar10);\n    uVar11 = (uint)(iVar2 + iVar3 != 0) + iVar10;\n    pcVar19 = *(code **)(*(int *)(puVar20 + -0x68) + -0x7d8c);\n    piVar12[iVar10] = iVar2 + iVar3;\n    *(int *)(puVar21 + 0x10) = iVar10;\n    iVar10 = iVar10 + uVar11;\n    piVar8 = piVar12;\n    iVar2 = (*pcVar19)(piVar17,piVar12,uVar11,puVar18);\n    iVar3 = *(int *)(puVar20 + -0x68);\n  }\n  else {\n    uVar23 = (**(code **)(*(int *)(puVar20 + -0x68) + -0x7ad4))(piVar17,puVar18,iVar10,1);\n    *(undefined4 *)(puVar20 + -0x5c) = uVar23;\n    iVar2 = (**(code **)(*(int *)(puVar20 + -0x68) + -0x7d0c))(puVar18,piVar17,piVar12,iVar10);\n    iVar3 = *(int *)(puVar20 + -0x5c);\n    pcVar19 = *(code **)(*(int *)(puVar20 + -0x68) + -0x7b2c);\n    *(int *)(puVar18 + iVar10 * 4) = iVar2 + iVar3;\n    *(uint *)(puVar20 + -0x60) = (uint)(iVar2 + iVar3 != 0) + iVar10;\n    iVar2 = (*pcVar19)(piVar12,piVar17,piVar12,iVar10);\n    iVar3 = *(int *)(puVar20 + -0x60);\n    pcVar19 = *(code **)(*(int *)(puVar20 + -0x68) + -0x7d8c);\n    iVar15 = iVar10 + (*(int *)(puVar20 + -0x5c) - iVar2);\n    piVar12[iVar10] = *(int *)(puVar20 + -0x5c) - iVar2;\n    *(int *)(puVar21 + 0x10) = iVar15;\n    iVar10 = iVar3 + iVar15;\n    iVar2 = (*pcVar19)(piVar17,puVar18,iVar3,piVar12);\n    uVar11 = 0xfffffffe;\n    piVar8 = (int *)0x2;\n    iVar3 = *(int *)(puVar20 + -0x68);\n    if (((uint)p_Var7 & 2) != 0) {\n      piVar8 = (int *)&SUB_fffffffe;\n    }\n    *piVar17 = (int)((int)piVar8 + *piVar17);\n  }" if (parenthesized_expression "(((uint)p_Var7 & 1) == 0)" ( (binary_expression "((uint)p_Var7 & 1) == 0" (parenthesized_expression "((uint)p_Var7 & 1)" ( (binary_expression "(uint)p_Var7 & 1" (cast_expression "(uint)p_Var7" ( (type_descriptor "uint" type_identifier) ) identifier) & number_literal) )) == number_literal) )) (compound_statement "{\n    iVar2 = (**(code **)(*(int *)(puVar20 + -0x68) + -0x7ad4))(piVar12,piVar12);\n    iVar3 = (**(code **)(*(int *)(puVar20 + -0x68) + -0x7d0c))(piVar12,piVar12,puVar18,iVar10);\n    uVar11 = (uint)(iVar2 + iVar3 != 0) + iVar10;\n    pcVar19 = *(code **)(*(int *)(puVar20 + -0x68) + -0x7d8c);\n    piVar12[iVar10] = iVar2 + iVar3;\n    *(int *)(puVar21 + 0x10) = iVar10;\n    iVar10 = iVar10 + uVar11;\n    piVar8 = piVar12;\n    iVar2 = (*pcVar19)(piVar17,piVar12,uVar11,puVar18);\n    iVar3 = *(int *)(puVar20 + -0x68);\n  }" { (expression_statement "iVar2 = (**(code **)(*(int *)(puVar20 + -0x68) + -0x7ad4))(piVar12,piVar12);" (assignment_expression "iVar2 = (**(code **)(*(int *)(puVar20 + -0x68) + -0x7ad4))(piVar12,piVar12)" identifier = (call_expression "(**(code **)(*(int *)(puVar20 + -0x68) + -0x7ad4))(piVar12,piVar12)" (parenthesized_expression "(**(code **)(*(int *)(puVar20 + -0x68) + -0x7ad4))" ( (pointer_expression "**(code **)(*(int *)(puVar20 + -0x68) + -0x7ad4)" * (pointer_expression "*(code **)(*(int *)(puVar20 + -0x68) + -0x7ad4)" * (cast_expression "(code **)(*(int *)(puVar20 + -0x68) + -0x7ad4)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)(puVar20 + -0x68) + -0x7ad4)" ( (binary_expression "*(int *)(puVar20 + -0x68) + -0x7ad4" (pointer_expression "*(int *)(puVar20 + -0x68)" * (cast_expression "(int *)(puVar20 + -0x68)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar20 + -0x68)" ( (binary_expression "puVar20 + -0x68" identifier + number_literal) )))) + number_literal) ))))) )) (argument_list "(piVar12,piVar12)" ( identifier , identifier )))) ;) (expression_statement "iVar3 = (**(code **)(*(int *)(puVar20 + -0x68) + -0x7d0c))(piVar12,piVar12,puVar18,iVar10);" (assignment_expression "iVar3 = (**(code **)(*(int *)(puVar20 + -0x68) + -0x7d0c))(piVar12,piVar12,puVar18,iVar10)" identifier = (call_expression "(**(code **)(*(int *)(puVar20 + -0x68) + -0x7d0c))(piVar12,piVar12,puVar18,iVar10)" (parenthesized_expression "(**(code **)(*(int *)(puVar20 + -0x68) + -0x7d0c))" ( (pointer_expression "**(code **)(*(int *)(puVar20 + -0x68) + -0x7d0c)" * (pointer_expression "*(code **)(*(int *)(puVar20 + -0x68) + -0x7d0c)" * (cast_expression "(code **)(*(int *)(puVar20 + -0x68) + -0x7d0c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)(puVar20 + -0x68) + -0x7d0c)" ( (binary_expression "*(int *)(puVar20 + -0x68) + -0x7d0c" (pointer_expression "*(int *)(puVar20 + -0x68)" * (cast_expression "(int *)(puVar20 + -0x68)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar20 + -0x68)" ( (binary_expression "puVar20 + -0x68" identifier + number_literal) )))) + number_literal) ))))) )) (argument_list "(piVar12,piVar12,puVar18,iVar10)" ( identifier , identifier , identifier , identifier )))) ;) (expression_statement "uVar11 = (uint)(iVar2 + iVar3 != 0) + iVar10;" (assignment_expression "uVar11 = (uint)(iVar2 + iVar3 != 0) + iVar10" identifier = (binary_expression "(uint)(iVar2 + iVar3 != 0) + iVar10" (call_expression "(uint)(iVar2 + iVar3 != 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(iVar2 + iVar3 != 0)" ( (binary_expression "iVar2 + iVar3 != 0" (binary_expression "iVar2 + iVar3" identifier + identifier) != number_literal) ))) + identifier)) ;) (expression_statement "pcVar19 = *(code **)(*(int *)(puVar20 + -0x68) + -0x7d8c);" (assignment_expression "pcVar19 = *(code **)(*(int *)(puVar20 + -0x68) + -0x7d8c)" identifier = (pointer_expression "*(code **)(*(int *)(puVar20 + -0x68) + -0x7d8c)" * (cast_expression "(code **)(*(int *)(puVar20 + -0x68) + -0x7d8c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)(puVar20 + -0x68) + -0x7d8c)" ( (binary_expression "*(int *)(puVar20 + -0x68) + -0x7d8c" (pointer_expression "*(int *)(puVar20 + -0x68)" * (cast_expression "(int *)(puVar20 + -0x68)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar20 + -0x68)" ( (binary_expression "puVar20 + -0x68" identifier + number_literal) )))) + number_literal) ))))) ;) (expression_statement "piVar12[iVar10] = iVar2 + iVar3;" (assignment_expression "piVar12[iVar10] = iVar2 + iVar3" (subscript_expression "piVar12[iVar10]" identifier [ identifier ]) = (binary_expression "iVar2 + iVar3" identifier + identifier)) ;) (expression_statement "*(int *)(puVar21 + 0x10) = iVar10;" (assignment_expression "*(int *)(puVar21 + 0x10) = iVar10" (pointer_expression "*(int *)(puVar21 + 0x10)" * (cast_expression "(int *)(puVar21 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar21 + 0x10)" ( (binary_expression "puVar21 + 0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "iVar10 = iVar10 + uVar11;" (assignment_expression "iVar10 = iVar10 + uVar11" identifier = (binary_expression "iVar10 + uVar11" identifier + identifier)) ;) (expression_statement "piVar8 = piVar12;" (assignment_expression "piVar8 = piVar12" identifier = identifier) ;) (expression_statement "iVar2 = (*pcVar19)(piVar17,piVar12,uVar11,puVar18);" (assignment_expression "iVar2 = (*pcVar19)(piVar17,piVar12,uVar11,puVar18)" identifier = (call_expression "(*pcVar19)(piVar17,piVar12,uVar11,puVar18)" (parenthesized_expression "(*pcVar19)" ( (pointer_expression "*pcVar19" * identifier) )) (argument_list "(piVar17,piVar12,uVar11,puVar18)" ( identifier , identifier , identifier , identifier )))) ;) (expression_statement "iVar3 = *(int *)(puVar20 + -0x68);" (assignment_expression "iVar3 = *(int *)(puVar20 + -0x68)" identifier = (pointer_expression "*(int *)(puVar20 + -0x68)" * (cast_expression "(int *)(puVar20 + -0x68)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar20 + -0x68)" ( (binary_expression "puVar20 + -0x68" identifier + number_literal) ))))) ;) }) (else_clause "else {\n    uVar23 = (**(code **)(*(int *)(puVar20 + -0x68) + -0x7ad4))(piVar17,puVar18,iVar10,1);\n    *(undefined4 *)(puVar20 + -0x5c) = uVar23;\n    iVar2 = (**(code **)(*(int *)(puVar20 + -0x68) + -0x7d0c))(puVar18,piVar17,piVar12,iVar10);\n    iVar3 = *(int *)(puVar20 + -0x5c);\n    pcVar19 = *(code **)(*(int *)(puVar20 + -0x68) + -0x7b2c);\n    *(int *)(puVar18 + iVar10 * 4) = iVar2 + iVar3;\n    *(uint *)(puVar20 + -0x60) = (uint)(iVar2 + iVar3 != 0) + iVar10;\n    iVar2 = (*pcVar19)(piVar12,piVar17,piVar12,iVar10);\n    iVar3 = *(int *)(puVar20 + -0x60);\n    pcVar19 = *(code **)(*(int *)(puVar20 + -0x68) + -0x7d8c);\n    iVar15 = iVar10 + (*(int *)(puVar20 + -0x5c) - iVar2);\n    piVar12[iVar10] = *(int *)(puVar20 + -0x5c) - iVar2;\n    *(int *)(puVar21 + 0x10) = iVar15;\n    iVar10 = iVar3 + iVar15;\n    iVar2 = (*pcVar19)(piVar17,puVar18,iVar3,piVar12);\n    uVar11 = 0xfffffffe;\n    piVar8 = (int *)0x2;\n    iVar3 = *(int *)(puVar20 + -0x68);\n    if (((uint)p_Var7 & 2) != 0) {\n      piVar8 = (int *)&SUB_fffffffe;\n    }\n    *piVar17 = (int)((int)piVar8 + *piVar17);\n  }" else (compound_statement "{\n    uVar23 = (**(code **)(*(int *)(puVar20 + -0x68) + -0x7ad4))(piVar17,puVar18,iVar10,1);\n    *(undefined4 *)(puVar20 + -0x5c) = uVar23;\n    iVar2 = (**(code **)(*(int *)(puVar20 + -0x68) + -0x7d0c))(puVar18,piVar17,piVar12,iVar10);\n    iVar3 = *(int *)(puVar20 + -0x5c);\n    pcVar19 = *(code **)(*(int *)(puVar20 + -0x68) + -0x7b2c);\n    *(int *)(puVar18 + iVar10 * 4) = iVar2 + iVar3;\n    *(uint *)(puVar20 + -0x60) = (uint)(iVar2 + iVar3 != 0) + iVar10;\n    iVar2 = (*pcVar19)(piVar12,piVar17,piVar12,iVar10);\n    iVar3 = *(int *)(puVar20 + -0x60);\n    pcVar19 = *(code **)(*(int *)(puVar20 + -0x68) + -0x7d8c);\n    iVar15 = iVar10 + (*(int *)(puVar20 + -0x5c) - iVar2);\n    piVar12[iVar10] = *(int *)(puVar20 + -0x5c) - iVar2;\n    *(int *)(puVar21 + 0x10) = iVar15;\n    iVar10 = iVar3 + iVar15;\n    iVar2 = (*pcVar19)(piVar17,puVar18,iVar3,piVar12);\n    uVar11 = 0xfffffffe;\n    piVar8 = (int *)0x2;\n    iVar3 = *(int *)(puVar20 + -0x68);\n    if (((uint)p_Var7 & 2) != 0) {\n      piVar8 = (int *)&SUB_fffffffe;\n    }\n    *piVar17 = (int)((int)piVar8 + *piVar17);\n  }" { (expression_statement "uVar23 = (**(code **)(*(int *)(puVar20 + -0x68) + -0x7ad4))(piVar17,puVar18,iVar10,1);" (assignment_expression "uVar23 = (**(code **)(*(int *)(puVar20 + -0x68) + -0x7ad4))(piVar17,puVar18,iVar10,1)" identifier = (call_expression "(**(code **)(*(int *)(puVar20 + -0x68) + -0x7ad4))(piVar17,puVar18,iVar10,1)" (parenthesized_expression "(**(code **)(*(int *)(puVar20 + -0x68) + -0x7ad4))" ( (pointer_expression "**(code **)(*(int *)(puVar20 + -0x68) + -0x7ad4)" * (pointer_expression "*(code **)(*(int *)(puVar20 + -0x68) + -0x7ad4)" * (cast_expression "(code **)(*(int *)(puVar20 + -0x68) + -0x7ad4)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)(puVar20 + -0x68) + -0x7ad4)" ( (binary_expression "*(int *)(puVar20 + -0x68) + -0x7ad4" (pointer_expression "*(int *)(puVar20 + -0x68)" * (cast_expression "(int *)(puVar20 + -0x68)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar20 + -0x68)" ( (binary_expression "puVar20 + -0x68" identifier + number_literal) )))) + number_literal) ))))) )) (argument_list "(piVar17,puVar18,iVar10,1)" ( identifier , identifier , identifier , number_literal )))) ;) (expression_statement "*(undefined4 *)(puVar20 + -0x5c) = uVar23;" (assignment_expression "*(undefined4 *)(puVar20 + -0x5c) = uVar23" (pointer_expression "*(undefined4 *)(puVar20 + -0x5c)" * (cast_expression "(undefined4 *)(puVar20 + -0x5c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar20 + -0x5c)" ( (binary_expression "puVar20 + -0x5c" identifier + number_literal) )))) = identifier) ;) (expression_statement "iVar2 = (**(code **)(*(int *)(puVar20 + -0x68) + -0x7d0c))(puVar18,piVar17,piVar12,iVar10);" (assignment_expression "iVar2 = (**(code **)(*(int *)(puVar20 + -0x68) + -0x7d0c))(puVar18,piVar17,piVar12,iVar10)" identifier = (call_expression "(**(code **)(*(int *)(puVar20 + -0x68) + -0x7d0c))(puVar18,piVar17,piVar12,iVar10)" (parenthesized_expression "(**(code **)(*(int *)(puVar20 + -0x68) + -0x7d0c))" ( (pointer_expression "**(code **)(*(int *)(puVar20 + -0x68) + -0x7d0c)" * (pointer_expression "*(code **)(*(int *)(puVar20 + -0x68) + -0x7d0c)" * (cast_expression "(code **)(*(int *)(puVar20 + -0x68) + -0x7d0c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)(puVar20 + -0x68) + -0x7d0c)" ( (binary_expression "*(int *)(puVar20 + -0x68) + -0x7d0c" (pointer_expression "*(int *)(puVar20 + -0x68)" * (cast_expression "(int *)(puVar20 + -0x68)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar20 + -0x68)" ( (binary_expression "puVar20 + -0x68" identifier + number_literal) )))) + number_literal) ))))) )) (argument_list "(puVar18,piVar17,piVar12,iVar10)" ( identifier , identifier , identifier , identifier )))) ;) (expression_statement "iVar3 = *(int *)(puVar20 + -0x5c);" (assignment_expression "iVar3 = *(int *)(puVar20 + -0x5c)" identifier = (pointer_expression "*(int *)(puVar20 + -0x5c)" * (cast_expression "(int *)(puVar20 + -0x5c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar20 + -0x5c)" ( (binary_expression "puVar20 + -0x5c" identifier + number_literal) ))))) ;) (expression_statement "pcVar19 = *(code **)(*(int *)(puVar20 + -0x68) + -0x7b2c);" (assignment_expression "pcVar19 = *(code **)(*(int *)(puVar20 + -0x68) + -0x7b2c)" identifier = (pointer_expression "*(code **)(*(int *)(puVar20 + -0x68) + -0x7b2c)" * (cast_expression "(code **)(*(int *)(puVar20 + -0x68) + -0x7b2c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)(puVar20 + -0x68) + -0x7b2c)" ( (binary_expression "*(int *)(puVar20 + -0x68) + -0x7b2c" (pointer_expression "*(int *)(puVar20 + -0x68)" * (cast_expression "(int *)(puVar20 + -0x68)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar20 + -0x68)" ( (binary_expression "puVar20 + -0x68" identifier + number_literal) )))) + number_literal) ))))) ;) (expression_statement "*(int *)(puVar18 + iVar10 * 4) = iVar2 + iVar3;" (assignment_expression "*(int *)(puVar18 + iVar10 * 4) = iVar2 + iVar3" (pointer_expression "*(int *)(puVar18 + iVar10 * 4)" * (cast_expression "(int *)(puVar18 + iVar10 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar18 + iVar10 * 4)" ( (binary_expression "puVar18 + iVar10 * 4" identifier + (binary_expression "iVar10 * 4" identifier * number_literal)) )))) = (binary_expression "iVar2 + iVar3" identifier + identifier)) ;) (expression_statement "*(uint *)(puVar20 + -0x60) = (uint)(iVar2 + iVar3 != 0) + iVar10;" (assignment_expression "*(uint *)(puVar20 + -0x60) = (uint)(iVar2 + iVar3 != 0) + iVar10" (pointer_expression "*(uint *)(puVar20 + -0x60)" * (cast_expression "(uint *)(puVar20 + -0x60)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar20 + -0x60)" ( (binary_expression "puVar20 + -0x60" identifier + number_literal) )))) = (binary_expression "(uint)(iVar2 + iVar3 != 0) + iVar10" (call_expression "(uint)(iVar2 + iVar3 != 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(iVar2 + iVar3 != 0)" ( (binary_expression "iVar2 + iVar3 != 0" (binary_expression "iVar2 + iVar3" identifier + identifier) != number_literal) ))) + identifier)) ;) (expression_statement "iVar2 = (*pcVar19)(piVar12,piVar17,piVar12,iVar10);" (assignment_expression "iVar2 = (*pcVar19)(piVar12,piVar17,piVar12,iVar10)" identifier = (call_expression "(*pcVar19)(piVar12,piVar17,piVar12,iVar10)" (parenthesized_expression "(*pcVar19)" ( (pointer_expression "*pcVar19" * identifier) )) (argument_list "(piVar12,piVar17,piVar12,iVar10)" ( identifier , identifier , identifier , identifier )))) ;) (expression_statement "iVar3 = *(int *)(puVar20 + -0x60);" (assignment_expression "iVar3 = *(int *)(puVar20 + -0x60)" identifier = (pointer_expression "*(int *)(puVar20 + -0x60)" * (cast_expression "(int *)(puVar20 + -0x60)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar20 + -0x60)" ( (binary_expression "puVar20 + -0x60" identifier + number_literal) ))))) ;) (expression_statement "pcVar19 = *(code **)(*(int *)(puVar20 + -0x68) + -0x7d8c);" (assignment_expression "pcVar19 = *(code **)(*(int *)(puVar20 + -0x68) + -0x7d8c)" identifier = (pointer_expression "*(code **)(*(int *)(puVar20 + -0x68) + -0x7d8c)" * (cast_expression "(code **)(*(int *)(puVar20 + -0x68) + -0x7d8c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)(puVar20 + -0x68) + -0x7d8c)" ( (binary_expression "*(int *)(puVar20 + -0x68) + -0x7d8c" (pointer_expression "*(int *)(puVar20 + -0x68)" * (cast_expression "(int *)(puVar20 + -0x68)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar20 + -0x68)" ( (binary_expression "puVar20 + -0x68" identifier + number_literal) )))) + number_literal) ))))) ;) (expression_statement "iVar15 = iVar10 + (*(int *)(puVar20 + -0x5c) - iVar2);" (assignment_expression "iVar15 = iVar10 + (*(int *)(puVar20 + -0x5c) - iVar2)" identifier = (binary_expression "iVar10 + (*(int *)(puVar20 + -0x5c) - iVar2)" identifier + (parenthesized_expression "(*(int *)(puVar20 + -0x5c) - iVar2)" ( (binary_expression "*(int *)(puVar20 + -0x5c) - iVar2" (pointer_expression "*(int *)(puVar20 + -0x5c)" * (cast_expression "(int *)(puVar20 + -0x5c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar20 + -0x5c)" ( (binary_expression "puVar20 + -0x5c" identifier + number_literal) )))) - identifier) )))) ;) (expression_statement "piVar12[iVar10] = *(int *)(puVar20 + -0x5c) - iVar2;" (assignment_expression "piVar12[iVar10] = *(int *)(puVar20 + -0x5c) - iVar2" (subscript_expression "piVar12[iVar10]" identifier [ identifier ]) = (binary_expression "*(int *)(puVar20 + -0x5c) - iVar2" (pointer_expression "*(int *)(puVar20 + -0x5c)" * (cast_expression "(int *)(puVar20 + -0x5c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar20 + -0x5c)" ( (binary_expression "puVar20 + -0x5c" identifier + number_literal) )))) - identifier)) ;) (expression_statement "*(int *)(puVar21 + 0x10) = iVar15;" (assignment_expression "*(int *)(puVar21 + 0x10) = iVar15" (pointer_expression "*(int *)(puVar21 + 0x10)" * (cast_expression "(int *)(puVar21 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar21 + 0x10)" ( (binary_expression "puVar21 + 0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "iVar10 = iVar3 + iVar15;" (assignment_expression "iVar10 = iVar3 + iVar15" identifier = (binary_expression "iVar3 + iVar15" identifier + identifier)) ;) (expression_statement "iVar2 = (*pcVar19)(piVar17,puVar18,iVar3,piVar12);" (assignment_expression "iVar2 = (*pcVar19)(piVar17,puVar18,iVar3,piVar12)" identifier = (call_expression "(*pcVar19)(piVar17,puVar18,iVar3,piVar12)" (parenthesized_expression "(*pcVar19)" ( (pointer_expression "*pcVar19" * identifier) )) (argument_list "(piVar17,puVar18,iVar3,piVar12)" ( identifier , identifier , identifier , identifier )))) ;) (expression_statement "uVar11 = 0xfffffffe;" (assignment_expression "uVar11 = 0xfffffffe" identifier = number_literal) ;) (expression_statement "piVar8 = (int *)0x2;" (assignment_expression "piVar8 = (int *)0x2" identifier = (cast_expression "(int *)0x2" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "iVar3 = *(int *)(puVar20 + -0x68);" (assignment_expression "iVar3 = *(int *)(puVar20 + -0x68)" identifier = (pointer_expression "*(int *)(puVar20 + -0x68)" * (cast_expression "(int *)(puVar20 + -0x68)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar20 + -0x68)" ( (binary_expression "puVar20 + -0x68" identifier + number_literal) ))))) ;) (if_statement "if (((uint)p_Var7 & 2) != 0) {\n      piVar8 = (int *)&SUB_fffffffe;\n    }" if (parenthesized_expression "(((uint)p_Var7 & 2) != 0)" ( (binary_expression "((uint)p_Var7 & 2) != 0" (parenthesized_expression "((uint)p_Var7 & 2)" ( (binary_expression "(uint)p_Var7 & 2" (cast_expression "(uint)p_Var7" ( (type_descriptor "uint" type_identifier) ) identifier) & number_literal) )) != number_literal) )) (compound_statement "{\n      piVar8 = (int *)&SUB_fffffffe;\n    }" { (expression_statement "piVar8 = (int *)&SUB_fffffffe;" (assignment_expression "piVar8 = (int *)&SUB_fffffffe" identifier = (cast_expression "(int *)&SUB_fffffffe" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "&SUB_fffffffe" & identifier))) ;) })) (expression_statement "*piVar17 = (int)((int)piVar8 + *piVar17);" (assignment_expression "*piVar17 = (int)((int)piVar8 + *piVar17)" (pointer_expression "*piVar17" * identifier) = (cast_expression "(int)((int)piVar8 + *piVar17)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((int)piVar8 + *piVar17)" ( (binary_expression "(int)piVar8 + *piVar17" (cast_expression "(int)piVar8" ( (type_descriptor "int" primitive_type) ) identifier) + (pointer_expression "*piVar17" * identifier)) )))) ;) }))) (expression_statement "piVar5 = *(int **)(puVar20 + -0x58);" (assignment_expression "piVar5 = *(int **)(puVar20 + -0x58)" identifier = (pointer_expression "*(int **)(puVar20 + -0x58)" * (cast_expression "(int **)(puVar20 + -0x58)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar20 + -0x58)" ( (binary_expression "puVar20 + -0x58" identifier + number_literal) ))))) ;) (expression_statement "iVar10 = iVar10 - (uint)(iVar2 == 0);" (assignment_expression "iVar10 = iVar10 - (uint)(iVar2 == 0)" identifier = (binary_expression "iVar10 - (uint)(iVar2 == 0)" identifier - (call_expression "(uint)(iVar2 == 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(iVar2 == 0)" ( (binary_expression "iVar2 == 0" identifier == number_literal) ))))) ;) (expression_statement "iVar2 = iVar10 - (uint)((piVar17 + iVar10)[-1] == 0);" (assignment_expression "iVar2 = iVar10 - (uint)((piVar17 + iVar10)[-1] == 0)" identifier = (binary_expression "iVar10 - (uint)((piVar17 + iVar10)[-1] == 0)" identifier - (call_expression "(uint)((piVar17 + iVar10)[-1] == 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((piVar17 + iVar10)[-1] == 0)" ( (binary_expression "(piVar17 + iVar10)[-1] == 0" (subscript_expression "(piVar17 + iVar10)[-1]" (parenthesized_expression "(piVar17 + iVar10)" ( (binary_expression "piVar17 + iVar10" identifier + identifier) )) [ number_literal ]) == number_literal) ))))) ;) (expression_statement "piVar4[1] = iVar2;" (assignment_expression "piVar4[1] = iVar2" (subscript_expression "piVar4[1]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (piVar5 != (int *)0x0) {\n    (**(code **)(iVar3 + -0x7a2c))();\n    uVar1 = FUN_000280d0();\n    return uVar1;\n  }" if (parenthesized_expression "(piVar5 != (int *)0x0)" ( (binary_expression "piVar5 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    (**(code **)(iVar3 + -0x7a2c))();\n    uVar1 = FUN_000280d0();\n    return uVar1;\n  }" { (expression_statement "(**(code **)(iVar3 + -0x7a2c))();" (call_expression "(**(code **)(iVar3 + -0x7a2c))()" (parenthesized_expression "(**(code **)(iVar3 + -0x7a2c))" ( (pointer_expression "**(code **)(iVar3 + -0x7a2c)" * (pointer_expression "*(code **)(iVar3 + -0x7a2c)" * (cast_expression "(code **)(iVar3 + -0x7a2c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar3 + -0x7a2c)" ( (binary_expression "iVar3 + -0x7a2c" identifier + number_literal) ))))) )) (argument_list "()" ( ))) ;) (expression_statement "uVar1 = FUN_000280d0();" (assignment_expression "uVar1 = FUN_000280d0()" identifier = (call_expression "FUN_000280d0()" identifier (argument_list "()" ( )))) ;) (return_statement "return uVar1;" return identifier ;) })) (if_statement "if (*(ulong *)(puVar20 + -0x54) == *puVar14) {\n    return *puVar14;\n  }" if (parenthesized_expression "(*(ulong *)(puVar20 + -0x54) == *puVar14)" ( (binary_expression "*(ulong *)(puVar20 + -0x54) == *puVar14" (pointer_expression "*(ulong *)(puVar20 + -0x54)" * (cast_expression "(ulong *)(puVar20 + -0x54)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar20 + -0x54)" ( (binary_expression "puVar20 + -0x54" identifier + number_literal) )))) == (pointer_expression "*puVar14" * identifier)) )) (compound_statement "{\n    return *puVar14;\n  }" { (return_statement "return *puVar14;" return (pointer_expression "*puVar14" * identifier) ;) })) (expression_statement "pcVar19 = *(code **)(iVar3 + -0x7b70);" (assignment_expression "pcVar19 = *(code **)(iVar3 + -0x7b70)" identifier = (pointer_expression "*(code **)(iVar3 + -0x7b70)" * (cast_expression "(code **)(iVar3 + -0x7b70)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar3 + -0x7b70)" ( (binary_expression "iVar3 + -0x7b70" identifier + number_literal) ))))) ;) (expression_statement "uVar23 = 0x2825c;" (assignment_expression "uVar23 = 0x2825c" identifier = number_literal) ;) (expression_statement "(*pcVar19)();" (call_expression "(*pcVar19)()" (parenthesized_expression "(*pcVar19)" ( (pointer_expression "*pcVar19" * identifier) )) (argument_list "()" ( ))) ;) (expression_statement "pcVar22 = pcVar19 + 0x76de0;" (assignment_expression "pcVar22 = pcVar19 + 0x76de0" identifier = (binary_expression "pcVar19 + 0x76de0" identifier + number_literal)) ;) (expression_statement "*(code **)(puVar21 + -0x28) = pcVar22;" (assignment_expression "*(code **)(puVar21 + -0x28) = pcVar22" (pointer_expression "*(code **)(puVar21 + -0x28)" * (cast_expression "(code **)(puVar21 + -0x28)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar21 + -0x28)" ( (binary_expression "puVar21 + -0x28" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(puVar21 + -0xc) = iVar2;" (assignment_expression "*(int *)(puVar21 + -0xc) = iVar2" (pointer_expression "*(int *)(puVar21 + -0xc)" * (cast_expression "(int *)(puVar21 + -0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar21 + -0xc)" ( (binary_expression "puVar21 + -0xc" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar21 + -4) = uVar23;" (assignment_expression "*(undefined4 *)(puVar21 + -4) = uVar23" (pointer_expression "*(undefined4 *)(puVar21 + -4)" * (cast_expression "(undefined4 *)(puVar21 + -4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar21 + -4)" ( (binary_expression "puVar21 + -4" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int **)(puVar21 + -8) = piVar17 + iVar10;" (assignment_expression "*(int **)(puVar21 + -8) = piVar17 + iVar10" (pointer_expression "*(int **)(puVar21 + -8)" * (cast_expression "(int **)(puVar21 + -8)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar21 + -8)" ( (binary_expression "puVar21 + -8" identifier + number_literal) )))) = (binary_expression "piVar17 + iVar10" identifier + identifier)) ;) (expression_statement "*(ulong **)(puVar21 + -0x10) = puVar14;" (assignment_expression "*(ulong **)(puVar21 + -0x10) = puVar14" (pointer_expression "*(ulong **)(puVar21 + -0x10)" * (cast_expression "(ulong **)(puVar21 + -0x10)" ( (type_descriptor "ulong **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar21 + -0x10)" ( (binary_expression "puVar21 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int **)(puVar21 + -0x14) = piVar12;" (assignment_expression "*(int **)(puVar21 + -0x14) = piVar12" (pointer_expression "*(int **)(puVar21 + -0x14)" * (cast_expression "(int **)(puVar21 + -0x14)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar21 + -0x14)" ( (binary_expression "puVar21 + -0x14" identifier + number_literal) )))) = identifier) ;) (if_statement "if (0x2f < uVar11) {\n    iVar10 = ((uVar11 >> 5) * 0x17 >> 5) + 4;\n    if (*piVar5 < iVar10) {\n      pcVar19 = *(code **)(pcVar19 + 0x6f35c);\n      *(uint *)(puVar21 + -0x1c) = uVar11;\n      iVar2 = (*pcVar19)();\n      pcVar22 = *(code **)(puVar21 + -0x28);\n      uVar11 = *(uint *)(puVar21 + -0x1c);\n    }\n    else {\n      iVar2 = piVar5[2];\n    }\n    pcVar19 = *(code **)(pcVar22 + -0x7a84);\n    if (*piVar8 < iVar10) {\n      *(uint *)(puVar21 + -0x1c) = uVar11;\n      iVar10 = (*pcVar19)(piVar8,iVar10);\n      pcVar22 = *(code **)(puVar21 + -0x28);\n    }\n    else {\n      iVar10 = piVar8[2];\n    }\n    iVar2 = (**(code **)(pcVar22 + -0x7e94))(iVar2,iVar10);\n    piVar5[1] = iVar2;\n    uVar1 = iVar2 - (uint)(*(int *)(iVar10 + iVar2 * 4 + -4) == 0);\n    piVar8[1] = uVar1;\n    return uVar1;\n  }" if (parenthesized_expression "(0x2f < uVar11)" ( (binary_expression "0x2f < uVar11" number_literal < identifier) )) (compound_statement "{\n    iVar10 = ((uVar11 >> 5) * 0x17 >> 5) + 4;\n    if (*piVar5 < iVar10) {\n      pcVar19 = *(code **)(pcVar19 + 0x6f35c);\n      *(uint *)(puVar21 + -0x1c) = uVar11;\n      iVar2 = (*pcVar19)();\n      pcVar22 = *(code **)(puVar21 + -0x28);\n      uVar11 = *(uint *)(puVar21 + -0x1c);\n    }\n    else {\n      iVar2 = piVar5[2];\n    }\n    pcVar19 = *(code **)(pcVar22 + -0x7a84);\n    if (*piVar8 < iVar10) {\n      *(uint *)(puVar21 + -0x1c) = uVar11;\n      iVar10 = (*pcVar19)(piVar8,iVar10);\n      pcVar22 = *(code **)(puVar21 + -0x28);\n    }\n    else {\n      iVar10 = piVar8[2];\n    }\n    iVar2 = (**(code **)(pcVar22 + -0x7e94))(iVar2,iVar10);\n    piVar5[1] = iVar2;\n    uVar1 = iVar2 - (uint)(*(int *)(iVar10 + iVar2 * 4 + -4) == 0);\n    piVar8[1] = uVar1;\n    return uVar1;\n  }" { (expression_statement "iVar10 = ((uVar11 >> 5) * 0x17 >> 5) + 4;" (assignment_expression "iVar10 = ((uVar11 >> 5) * 0x17 >> 5) + 4" identifier = (binary_expression "((uVar11 >> 5) * 0x17 >> 5) + 4" (parenthesized_expression "((uVar11 >> 5) * 0x17 >> 5)" ( (binary_expression "(uVar11 >> 5) * 0x17 >> 5" (binary_expression "(uVar11 >> 5) * 0x17" (parenthesized_expression "(uVar11 >> 5)" ( (binary_expression "uVar11 >> 5" identifier >> number_literal) )) * number_literal) >> number_literal) )) + number_literal)) ;) (if_statement "if (*piVar5 < iVar10) {\n      pcVar19 = *(code **)(pcVar19 + 0x6f35c);\n      *(uint *)(puVar21 + -0x1c) = uVar11;\n      iVar2 = (*pcVar19)();\n      pcVar22 = *(code **)(puVar21 + -0x28);\n      uVar11 = *(uint *)(puVar21 + -0x1c);\n    }\n    else {\n      iVar2 = piVar5[2];\n    }" if (parenthesized_expression "(*piVar5 < iVar10)" ( (binary_expression "*piVar5 < iVar10" (pointer_expression "*piVar5" * identifier) < identifier) )) (compound_statement "{\n      pcVar19 = *(code **)(pcVar19 + 0x6f35c);\n      *(uint *)(puVar21 + -0x1c) = uVar11;\n      iVar2 = (*pcVar19)();\n      pcVar22 = *(code **)(puVar21 + -0x28);\n      uVar11 = *(uint *)(puVar21 + -0x1c);\n    }" { (expression_statement "pcVar19 = *(code **)(pcVar19 + 0x6f35c);" (assignment_expression "pcVar19 = *(code **)(pcVar19 + 0x6f35c)" identifier = (pointer_expression "*(code **)(pcVar19 + 0x6f35c)" * (cast_expression "(code **)(pcVar19 + 0x6f35c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar19 + 0x6f35c)" ( (binary_expression "pcVar19 + 0x6f35c" identifier + number_literal) ))))) ;) (expression_statement "*(uint *)(puVar21 + -0x1c) = uVar11;" (assignment_expression "*(uint *)(puVar21 + -0x1c) = uVar11" (pointer_expression "*(uint *)(puVar21 + -0x1c)" * (cast_expression "(uint *)(puVar21 + -0x1c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar21 + -0x1c)" ( (binary_expression "puVar21 + -0x1c" identifier + number_literal) )))) = identifier) ;) (expression_statement "iVar2 = (*pcVar19)();" (assignment_expression "iVar2 = (*pcVar19)()" identifier = (call_expression "(*pcVar19)()" (parenthesized_expression "(*pcVar19)" ( (pointer_expression "*pcVar19" * identifier) )) (argument_list "()" ( )))) ;) (expression_statement "pcVar22 = *(code **)(puVar21 + -0x28);" (assignment_expression "pcVar22 = *(code **)(puVar21 + -0x28)" identifier = (pointer_expression "*(code **)(puVar21 + -0x28)" * (cast_expression "(code **)(puVar21 + -0x28)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar21 + -0x28)" ( (binary_expression "puVar21 + -0x28" identifier + number_literal) ))))) ;) (expression_statement "uVar11 = *(uint *)(puVar21 + -0x1c);" (assignment_expression "uVar11 = *(uint *)(puVar21 + -0x1c)" identifier = (pointer_expression "*(uint *)(puVar21 + -0x1c)" * (cast_expression "(uint *)(puVar21 + -0x1c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar21 + -0x1c)" ( (binary_expression "puVar21 + -0x1c" identifier + number_literal) ))))) ;) }) (else_clause "else {\n      iVar2 = piVar5[2];\n    }" else (compound_statement "{\n      iVar2 = piVar5[2];\n    }" { (expression_statement "iVar2 = piVar5[2];" (assignment_expression "iVar2 = piVar5[2]" identifier = (subscript_expression "piVar5[2]" identifier [ number_literal ])) ;) }))) (expression_statement "pcVar19 = *(code **)(pcVar22 + -0x7a84);" (assignment_expression "pcVar19 = *(code **)(pcVar22 + -0x7a84)" identifier = (pointer_expression "*(code **)(pcVar22 + -0x7a84)" * (cast_expression "(code **)(pcVar22 + -0x7a84)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar22 + -0x7a84)" ( (binary_expression "pcVar22 + -0x7a84" identifier + number_literal) ))))) ;) (if_statement "if (*piVar8 < iVar10) {\n      *(uint *)(puVar21 + -0x1c) = uVar11;\n      iVar10 = (*pcVar19)(piVar8,iVar10);\n      pcVar22 = *(code **)(puVar21 + -0x28);\n    }\n    else {\n      iVar10 = piVar8[2];\n    }" if (parenthesized_expression "(*piVar8 < iVar10)" ( (binary_expression "*piVar8 < iVar10" (pointer_expression "*piVar8" * identifier) < identifier) )) (compound_statement "{\n      *(uint *)(puVar21 + -0x1c) = uVar11;\n      iVar10 = (*pcVar19)(piVar8,iVar10);\n      pcVar22 = *(code **)(puVar21 + -0x28);\n    }" { (expression_statement "*(uint *)(puVar21 + -0x1c) = uVar11;" (assignment_expression "*(uint *)(puVar21 + -0x1c) = uVar11" (pointer_expression "*(uint *)(puVar21 + -0x1c)" * (cast_expression "(uint *)(puVar21 + -0x1c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar21 + -0x1c)" ( (binary_expression "puVar21 + -0x1c" identifier + number_literal) )))) = identifier) ;) (expression_statement "iVar10 = (*pcVar19)(piVar8,iVar10);" (assignment_expression "iVar10 = (*pcVar19)(piVar8,iVar10)" identifier = (call_expression "(*pcVar19)(piVar8,iVar10)" (parenthesized_expression "(*pcVar19)" ( (pointer_expression "*pcVar19" * identifier) )) (argument_list "(piVar8,iVar10)" ( identifier , identifier )))) ;) (expression_statement "pcVar22 = *(code **)(puVar21 + -0x28);" (assignment_expression "pcVar22 = *(code **)(puVar21 + -0x28)" identifier = (pointer_expression "*(code **)(puVar21 + -0x28)" * (cast_expression "(code **)(puVar21 + -0x28)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar21 + -0x28)" ( (binary_expression "puVar21 + -0x28" identifier + number_literal) ))))) ;) }) (else_clause "else {\n      iVar10 = piVar8[2];\n    }" else (compound_statement "{\n      iVar10 = piVar8[2];\n    }" { (expression_statement "iVar10 = piVar8[2];" (assignment_expression "iVar10 = piVar8[2]" identifier = (subscript_expression "piVar8[2]" identifier [ number_literal ])) ;) }))) (expression_statement "iVar2 = (**(code **)(pcVar22 + -0x7e94))(iVar2,iVar10);" (assignment_expression "iVar2 = (**(code **)(pcVar22 + -0x7e94))(iVar2,iVar10)" identifier = (call_expression "(**(code **)(pcVar22 + -0x7e94))(iVar2,iVar10)" (parenthesized_expression "(**(code **)(pcVar22 + -0x7e94))" ( (pointer_expression "**(code **)(pcVar22 + -0x7e94)" * (pointer_expression "*(code **)(pcVar22 + -0x7e94)" * (cast_expression "(code **)(pcVar22 + -0x7e94)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar22 + -0x7e94)" ( (binary_expression "pcVar22 + -0x7e94" identifier + number_literal) ))))) )) (argument_list "(iVar2,iVar10)" ( identifier , identifier )))) ;) (expression_statement "piVar5[1] = iVar2;" (assignment_expression "piVar5[1] = iVar2" (subscript_expression "piVar5[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "uVar1 = iVar2 - (uint)(*(int *)(iVar10 + iVar2 * 4 + -4) == 0);" (assignment_expression "uVar1 = iVar2 - (uint)(*(int *)(iVar10 + iVar2 * 4 + -4) == 0)" identifier = (binary_expression "iVar2 - (uint)(*(int *)(iVar10 + iVar2 * 4 + -4) == 0)" identifier - (call_expression "(uint)(*(int *)(iVar10 + iVar2 * 4 + -4) == 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(*(int *)(iVar10 + iVar2 * 4 + -4) == 0)" ( (binary_expression "*(int *)(iVar10 + iVar2 * 4 + -4) == 0" (pointer_expression "*(int *)(iVar10 + iVar2 * 4 + -4)" * (cast_expression "(int *)(iVar10 + iVar2 * 4 + -4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar10 + iVar2 * 4 + -4)" ( (binary_expression "iVar10 + iVar2 * 4 + -4" (binary_expression "iVar10 + iVar2 * 4" identifier + (binary_expression "iVar2 * 4" identifier * number_literal)) + number_literal) )))) == number_literal) ))))) ;) (expression_statement "piVar8[1] = uVar1;" (assignment_expression "piVar8[1] = uVar1" (subscript_expression "piVar8[1]" identifier [ number_literal ]) = identifier) ;) (return_statement "return uVar1;" return identifier ;) })) (expression_statement "puVar9 = (undefined4 *)piVar8[2];" (assignment_expression "puVar9 = (undefined4 *)piVar8[2]" identifier = (cast_expression "(undefined4 *)piVar8[2]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar8[2]" identifier [ number_literal ]))) ;) (expression_statement "uVar23 = *(undefined4 *)(*(int *)(pcVar19 + 0x6f2ec) + uVar11 * 4);" (assignment_expression "uVar23 = *(undefined4 *)(*(int *)(pcVar19 + 0x6f2ec) + uVar11 * 4)" identifier = (pointer_expression "*(undefined4 *)(*(int *)(pcVar19 + 0x6f2ec) + uVar11 * 4)" * (cast_expression "(undefined4 *)(*(int *)(pcVar19 + 0x6f2ec) + uVar11 * 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(pcVar19 + 0x6f2ec) + uVar11 * 4)" ( (binary_expression "*(int *)(pcVar19 + 0x6f2ec) + uVar11 * 4" (pointer_expression "*(int *)(pcVar19 + 0x6f2ec)" * (cast_expression "(int *)(pcVar19 + 0x6f2ec)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar19 + 0x6f2ec)" ( (binary_expression "pcVar19 + 0x6f2ec" identifier + number_literal) )))) + (binary_expression "uVar11 * 4" identifier * number_literal)) ))))) ;) (expression_statement "uVar1 = *(ulong *)(*(int *)(pcVar19 + 0x6f2ec) + (uVar11 + 1) * 4);" (assignment_expression "uVar1 = *(ulong *)(*(int *)(pcVar19 + 0x6f2ec) + (uVar11 + 1) * 4)" identifier = (pointer_expression "*(ulong *)(*(int *)(pcVar19 + 0x6f2ec) + (uVar11 + 1) * 4)" * (cast_expression "(ulong *)(*(int *)(pcVar19 + 0x6f2ec) + (uVar11 + 1) * 4)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(pcVar19 + 0x6f2ec) + (uVar11 + 1) * 4)" ( (binary_expression "*(int *)(pcVar19 + 0x6f2ec) + (uVar11 + 1) * 4" (pointer_expression "*(int *)(pcVar19 + 0x6f2ec)" * (cast_expression "(int *)(pcVar19 + 0x6f2ec)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar19 + 0x6f2ec)" ( (binary_expression "pcVar19 + 0x6f2ec" identifier + number_literal) )))) + (binary_expression "(uVar11 + 1) * 4" (parenthesized_expression "(uVar11 + 1)" ( (binary_expression "uVar11 + 1" identifier + number_literal) )) * number_literal)) ))))) ;) (expression_statement "*(ulong *)piVar5[2] = uVar1;" (assignment_expression "*(ulong *)piVar5[2] = uVar1" (pointer_expression "*(ulong *)piVar5[2]" * (cast_expression "(ulong *)piVar5[2]" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar5[2]" identifier [ number_literal ]))) = identifier) ;) (expression_statement "piVar5[1] = (uint)(uVar11 != 0);" (assignment_expression "piVar5[1] = (uint)(uVar11 != 0)" (subscript_expression "piVar5[1]" identifier [ number_literal ]) = (call_expression "(uint)(uVar11 != 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar11 != 0)" ( (binary_expression "uVar11 != 0" identifier != number_literal) )))) ;) (expression_statement "*puVar9 = uVar23;" (assignment_expression "*puVar9 = uVar23" (pointer_expression "*puVar9" * identifier) = identifier) ;) (expression_statement "piVar8[1] = (uint)(uVar11 != 1);" (assignment_expression "piVar8[1] = (uint)(uVar11 != 1)" (subscript_expression "piVar8[1]" identifier [ number_literal ]) = (call_expression "(uint)(uVar11 != 1)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar11 != 1)" ( (binary_expression "uVar11 != 1" identifier != number_literal) )))) ;) (return_statement "return uVar1;" return identifier ;) })))
(translation_unit "int __gmpz_fdiv_r_ui(uint *param_1,uint param_2,int param_3)\n\n{\n  int iVar1;\n  int iVar2;\n  int *piVar3;\n  int *piVar4;\n  uint uVar5;\n  uint *puVar6;\n  int *piVar7;\n  undefined4 *puVar8;\n  int iVar9;\n  uint uVar10;\n  int *piVar11;\n  uint uVar12;\n  int *piVar13;\n  int iVar14;\n  int *piVar15;\n  undefined1 *puVar16;\n  undefined4 unaff_s5;\n  undefined4 unaff_s6;\n  undefined4 unaff_s7;\n  undefined *puVar17;\n  code *pcVar18;\n  undefined1 *puVar19;\n  undefined1 *puVar20;\n  code *pcVar21;\n  undefined4 uVar22;\n  undefined1 auStack_80 [16];\n  undefined *apuStack_70 [3];\n  int iStack_64;\n  int *piStack_5c;\n  uint uStack_58;\n  int iStack_54;\n  int iStack_50;\n  int iStack_4c;\n  \n  if (param_3 != 0) {\n    iVar9 = *(int *)(param_2 + 4);\n    if (iVar9 != 0) {\n      if (iVar9 < 0) {\n        iVar1 = (*(code *)PTR___gmpn_mod_1_000974c0)(*(undefined4 *)(param_2 + 8),-iVar9,param_3);\n      }\n      else {\n        iVar1 = (*(code *)PTR___gmpn_mod_1_000974c0)(*(undefined4 *)(param_2 + 8),iVar9,param_3);\n      }\n      if (iVar1 != 0) {\n        if (iVar9 < 0) {\n          iVar1 = param_3 - iVar1;\n          *(int *)param_1[2] = iVar1;\n          param_1[1] = 1;\n        }\n        else {\n          *(int *)param_1[2] = iVar1;\n          param_1[1] = 1;\n        }\n        return iVar1;\n      }\n    }\n    param_1[1] = 0;\n    return 0;\n  }\n  puVar17 = PTR___gmp_divide_by_zero_000975dc;\n  (*(code *)PTR___gmp_divide_by_zero_000975dc)();\n  apuStack_70[0] = puVar17 + 0x77320;\n  puVar19 = auStack_80;\n  piVar15 = *(int **)(puVar17 + 0x6f820);\n  uVar10 = *(uint *)(param_3 + 4);\n  piStack_5c = (int *)0x0;\n  iStack_4c = *piVar15;\n  uVar12 = *(uint *)(param_2 + 4);\n  if ((int)uVar10 < 0) {\n    uStack_58 = -uVar10;\n    uVar5 = uVar10 * -4;\n    if (0x7f00 < uVar5) {\n      pcVar18 = *(code **)(puVar17 + 0x6f5d0);\n      goto LAB_00027e2c;\n    }\nLAB_00027d94:\n    iStack_50 = -(uVar5 + 7 & 0xfffffff8);\n    puVar19 = auStack_80 + iStack_50;\n    iStack_50 = (int)apuStack_70 + iStack_50;\n  }\n  else {\n    uVar5 = uVar10 * 4;\n    pcVar18 = *(code **)(puVar17 + 0x6f5d0);\n    uStack_58 = uVar10;\n    if (uVar5 < 0x7f01) goto LAB_00027d94;\nLAB_00027e2c:\n    iStack_64 = param_3;\n    iStack_50 = (*pcVar18)(&piStack_5c,uVar5);\n    param_3 = iStack_64;\n  }\n  puVar6 = &uStack_58;\n  piVar11 = (int *)(uVar12 ^ uVar10);\n  uVar10 = param_2;\n  (**(code **)(apuStack_70[0] + -0x7a6c))(param_1,puVar6,param_2,param_3);\n  if (((int)piVar11 < 0) && (iStack_54 != 0)) {\n    uVar10 = 1;\n    puVar6 = param_1;\n    (**(code **)(apuStack_70[0] + -0x7ac0))(param_1);\n    piVar3 = piStack_5c;\n    if (piStack_5c == (int *)0x0) goto LAB_00027dd8;\n    pcVar18 = *(code **)(apuStack_70[0] + -0x7a2c);\n  }\n  else {\n    pcVar18 = *(code **)(apuStack_70[0] + -0x7a2c);\n    piVar3 = piStack_5c;\n    if (piStack_5c == (int *)0x0) goto LAB_00027dd8;\n  }\n  piVar3 = piStack_5c;\n  (*pcVar18)();\nLAB_00027dd8:\n  if (iStack_4c == *piVar15) {\n    return *piVar15;\n  }\n  pcVar18 = *(code **)(apuStack_70[0] + -0x7b70);\n  pcVar21 = __gmpz_fdiv_ui;\n  (*pcVar18)();\n  *(code **)(puVar19 + -0x18) = pcVar18 + 0x771b0;\n  *(code **)(puVar19 + -4) = pcVar21;\n  *(uint *)(puVar19 + -8) = uVar12;\n  *(int **)(puVar19 + -0xc) = piVar11;\n  if (puVar6 != (uint *)0x0) {\n    iVar9 = piVar3[1];\n    if (iVar9 == 0) {\n      return 0;\n    }\n    if (iVar9 < 0) {\n      iVar1 = (**(code **)(pcVar18 + 0x6f630))(piVar3[2],-iVar9,puVar6);\n    }\n    else {\n      iVar1 = (**(code **)(pcVar18 + 0x6f630))(piVar3[2],iVar9,puVar6);\n    }\n    if (iVar1 != 0) {\n      if (iVar9 < 0) {\n        return (int)puVar6 - iVar1;\n      }\n    }\n    return iVar1;\n  }\n  pcVar18 = *(code **)(pcVar18 + 0x6f74c);\n  uVar22 = 0x27f54;\n  (*pcVar18)();\n  pcVar21 = pcVar18 + 0x770e0;\n  puVar16 = puVar19 + -0x80;\n  puVar20 = puVar19 + -0x80;\n  *(uint *)(puVar19 + -0x4c) = uVar12;\n  *(undefined4 *)(puVar19 + -0x38) = unaff_s6;\n  piVar13 = *(int **)(pcVar18 + 0x6f5e0);\n  *(undefined1 **)(puVar19 + -0x30) = auStack_80;\n  *(undefined4 *)(puVar19 + -0x3c) = unaff_s5;\n  *(undefined4 *)(puVar19 + -0x2c) = uVar22;\n  *(undefined4 *)(puVar19 + -0x34) = unaff_s7;\n  *(uint *)(puVar19 + -0x40) = param_2;\n  *(int **)(puVar19 + -0x44) = piVar15;\n  *(uint **)(puVar19 + -0x48) = param_1;\n  *(int **)(puVar19 + -0x50) = piVar11;\n  *(code **)(puVar19 + -0x68) = pcVar21;\n  *(int *)(puVar19 + -0x54) = *piVar13;\n  if (puVar6 < (uint *)0x30) {\n    piVar7 = (int *)piVar3[2];\n    piVar4 = (int *)(((int)puVar6 + 1U) * 4);\n    *piVar7 = *(int *)(*(int *)(pcVar18 + 0x6f5ec) + (int)piVar4);\n    piVar3[1] = (uint)(puVar6 != (uint *)0x0);\n  }\n  else {\n    iVar9 = (((uint)puVar6 >> 6) * 0x17 >> 5) + 5;\n    uVar10 = (uint)puVar6 >> 1;\n    if (*piVar3 < iVar9 * 2) {\n      pcVar18 = *(code **)(pcVar18 + 0x6f65c);\n      *(uint *)(puVar19 + -0x5c) = uVar10;\n      piVar15 = (int *)(*pcVar18)();\n      pcVar21 = *(code **)(puVar19 + -0x68);\n      uVar10 = *(uint *)(puVar19 + -0x5c);\n    }\n    else {\n      piVar15 = (int *)piVar3[2];\n    }\n    *(undefined4 *)(puVar19 + -0x58) = 0;\n    if ((uint)(iVar9 * 8) < 0x7f01) {\n      puVar20 = puVar19 + iVar9 * -8 + -0x80;\n      puVar16 = puVar19 + iVar9 * -8 + -0x68;\n    }\n    else {\n      pcVar18 = *(code **)(pcVar21 + -0x7d50);\n      *(uint *)(puVar19 + -0x5c) = uVar10;\n      puVar16 = (undefined1 *)(*pcVar18)(puVar19 + -0x58);\n      pcVar21 = *(code **)(puVar19 + -0x68);\n      uVar10 = *(uint *)(puVar19 + -0x5c);\n    }\n    piVar11 = (int *)(puVar16 + iVar9 * 4);\n    iVar9 = (**(code **)(pcVar21 + -0x7e94))(puVar16,piVar11,uVar10);\n    if (((uint)puVar6 & 1) == 0) {\n      iVar1 = (**(code **)(*(int *)(puVar19 + -0x68) + -0x7ad4))(piVar11,piVar11);\n      iVar2 = (**(code **)(*(int *)(puVar19 + -0x68) + -0x7d0c))(piVar11,piVar11,puVar16,iVar9);\n      uVar10 = (uint)(iVar1 + iVar2 != 0) + iVar9;\n      pcVar18 = *(code **)(*(int *)(puVar19 + -0x68) + -0x7d8c);\n      piVar11[iVar9] = iVar1 + iVar2;\n      *(int *)(puVar20 + 0x10) = iVar9;\n      iVar9 = iVar9 + uVar10;\n      piVar7 = piVar11;\n      iVar1 = (*pcVar18)(piVar15,piVar11,uVar10,puVar16);\n      pcVar21 = *(code **)(puVar19 + -0x68);\n    }\n    else {\n      uVar22 = (**(code **)(*(int *)(puVar19 + -0x68) + -0x7ad4))(piVar15,puVar16,iVar9,1);\n      *(undefined4 *)(puVar19 + -0x5c) = uVar22;\n      iVar1 = (**(code **)(*(int *)(puVar19 + -0x68) + -0x7d0c))(puVar16,piVar15,piVar11,iVar9);\n      iVar2 = *(int *)(puVar19 + -0x5c);\n      pcVar18 = *(code **)(*(int *)(puVar19 + -0x68) + -0x7b2c);\n      *(int *)(puVar16 + iVar9 * 4) = iVar1 + iVar2;\n      *(uint *)(puVar19 + -0x60) = (uint)(iVar1 + iVar2 != 0) + iVar9;\n      iVar1 = (*pcVar18)(piVar11,piVar15,piVar11,iVar9);\n      iVar2 = *(int *)(puVar19 + -0x60);\n      pcVar18 = *(code **)(*(int *)(puVar19 + -0x68) + -0x7d8c);\n      iVar14 = iVar9 + (*(int *)(puVar19 + -0x5c) - iVar1);\n      piVar11[iVar9] = *(int *)(puVar19 + -0x5c) - iVar1;\n      *(int *)(puVar20 + 0x10) = iVar14;\n      iVar9 = iVar2 + iVar14;\n      iVar1 = (*pcVar18)(piVar15,puVar16,iVar2,piVar11);\n      uVar10 = 0xfffffffe;\n      piVar7 = (int *)0x2;\n      pcVar21 = *(code **)(puVar19 + -0x68);\n      if (((uint)puVar6 & 2) != 0) {\n        piVar7 = (int *)0xfffffffe;\n      }\n      *piVar15 = (int)piVar7 + *piVar15;\n    }\n    piVar4 = *(int **)(puVar19 + -0x58);\n    iVar9 = iVar9 - (uint)(iVar1 == 0);\n    piVar15 = piVar15 + iVar9;\n    param_1 = (uint *)(iVar9 - (uint)(piVar15[-1] == 0));\n    piVar3[1] = (int)param_1;\n    puVar16 = puVar20;\n    if (piVar4 != (int *)0x0) {\n      (**(code **)(pcVar21 + -0x7a2c))();\n      pcVar21 = *(code **)(puVar19 + -0x68);\n    }\n  }\n  if (*(int *)(puVar19 + -0x54) == *piVar13) {\n    return *piVar13;\n  }\n  pcVar18 = *(code **)(pcVar21 + -0x7b70);\n  uVar22 = 0x2825c;\n  (*pcVar18)();\n  pcVar21 = pcVar18 + 0x76de0;\n  *(code **)(puVar16 + -0x28) = pcVar21;\n  *(uint **)(puVar16 + -0xc) = param_1;\n  *(undefined4 *)(puVar16 + -4) = uVar22;\n  *(int **)(puVar16 + -8) = piVar15;\n  *(int **)(puVar16 + -0x10) = piVar13;\n  *(int **)(puVar16 + -0x14) = piVar11;\n  if (0x2f < uVar10) {\n    iVar9 = ((uVar10 >> 5) * 0x17 >> 5) + 4;\n    if (*piVar4 < iVar9) {\n      pcVar18 = *(code **)(pcVar18 + 0x6f35c);\n      *(uint *)(puVar16 + -0x1c) = uVar10;\n      iVar1 = (*pcVar18)();\n      pcVar21 = *(code **)(puVar16 + -0x28);\n      uVar10 = *(uint *)(puVar16 + -0x1c);\n    }\n    else {\n      iVar1 = piVar4[2];\n    }\n    pcVar18 = *(code **)(pcVar21 + -0x7a84);\n    if (*piVar7 < iVar9) {\n      *(uint *)(puVar16 + -0x1c) = uVar10;\n      iVar9 = (*pcVar18)(piVar7,iVar9);\n      pcVar21 = *(code **)(puVar16 + -0x28);\n    }\n    else {\n      iVar9 = piVar7[2];\n    }\n    iVar1 = (**(code **)(pcVar21 + -0x7e94))(iVar1,iVar9);\n    piVar4[1] = iVar1;\n    iVar1 = iVar1 - (uint)(*(int *)(iVar9 + iVar1 * 4 + -4) == 0);\n    piVar7[1] = iVar1;\n    return iVar1;\n  }\n  puVar8 = (undefined4 *)piVar7[2];\n  uVar22 = *(undefined4 *)(*(int *)(pcVar18 + 0x6f2ec) + uVar10 * 4);\n  iVar9 = *(int *)(*(int *)(pcVar18 + 0x6f2ec) + (uVar10 + 1) * 4);\n  *(int *)piVar4[2] = iVar9;\n  piVar4[1] = (uint)(uVar10 != 0);\n  *puVar8 = uVar22;\n  piVar7[1] = (uint)(uVar10 != 1);\n  return iVar9;\n}\n\n" (function_definition "int __gmpz_fdiv_r_ui(uint *param_1,uint param_2,int param_3)\n\n{\n  int iVar1;\n  int iVar2;\n  int *piVar3;\n  int *piVar4;\n  uint uVar5;\n  uint *puVar6;\n  int *piVar7;\n  undefined4 *puVar8;\n  int iVar9;\n  uint uVar10;\n  int *piVar11;\n  uint uVar12;\n  int *piVar13;\n  int iVar14;\n  int *piVar15;\n  undefined1 *puVar16;\n  undefined4 unaff_s5;\n  undefined4 unaff_s6;\n  undefined4 unaff_s7;\n  undefined *puVar17;\n  code *pcVar18;\n  undefined1 *puVar19;\n  undefined1 *puVar20;\n  code *pcVar21;\n  undefined4 uVar22;\n  undefined1 auStack_80 [16];\n  undefined *apuStack_70 [3];\n  int iStack_64;\n  int *piStack_5c;\n  uint uStack_58;\n  int iStack_54;\n  int iStack_50;\n  int iStack_4c;\n  \n  if (param_3 != 0) {\n    iVar9 = *(int *)(param_2 + 4);\n    if (iVar9 != 0) {\n      if (iVar9 < 0) {\n        iVar1 = (*(code *)PTR___gmpn_mod_1_000974c0)(*(undefined4 *)(param_2 + 8),-iVar9,param_3);\n      }\n      else {\n        iVar1 = (*(code *)PTR___gmpn_mod_1_000974c0)(*(undefined4 *)(param_2 + 8),iVar9,param_3);\n      }\n      if (iVar1 != 0) {\n        if (iVar9 < 0) {\n          iVar1 = param_3 - iVar1;\n          *(int *)param_1[2] = iVar1;\n          param_1[1] = 1;\n        }\n        else {\n          *(int *)param_1[2] = iVar1;\n          param_1[1] = 1;\n        }\n        return iVar1;\n      }\n    }\n    param_1[1] = 0;\n    return 0;\n  }\n  puVar17 = PTR___gmp_divide_by_zero_000975dc;\n  (*(code *)PTR___gmp_divide_by_zero_000975dc)();\n  apuStack_70[0] = puVar17 + 0x77320;\n  puVar19 = auStack_80;\n  piVar15 = *(int **)(puVar17 + 0x6f820);\n  uVar10 = *(uint *)(param_3 + 4);\n  piStack_5c = (int *)0x0;\n  iStack_4c = *piVar15;\n  uVar12 = *(uint *)(param_2 + 4);\n  if ((int)uVar10 < 0) {\n    uStack_58 = -uVar10;\n    uVar5 = uVar10 * -4;\n    if (0x7f00 < uVar5) {\n      pcVar18 = *(code **)(puVar17 + 0x6f5d0);\n      goto LAB_00027e2c;\n    }\nLAB_00027d94:\n    iStack_50 = -(uVar5 + 7 & 0xfffffff8);\n    puVar19 = auStack_80 + iStack_50;\n    iStack_50 = (int)apuStack_70 + iStack_50;\n  }\n  else {\n    uVar5 = uVar10 * 4;\n    pcVar18 = *(code **)(puVar17 + 0x6f5d0);\n    uStack_58 = uVar10;\n    if (uVar5 < 0x7f01) goto LAB_00027d94;\nLAB_00027e2c:\n    iStack_64 = param_3;\n    iStack_50 = (*pcVar18)(&piStack_5c,uVar5);\n    param_3 = iStack_64;\n  }\n  puVar6 = &uStack_58;\n  piVar11 = (int *)(uVar12 ^ uVar10);\n  uVar10 = param_2;\n  (**(code **)(apuStack_70[0] + -0x7a6c))(param_1,puVar6,param_2,param_3);\n  if (((int)piVar11 < 0) && (iStack_54 != 0)) {\n    uVar10 = 1;\n    puVar6 = param_1;\n    (**(code **)(apuStack_70[0] + -0x7ac0))(param_1);\n    piVar3 = piStack_5c;\n    if (piStack_5c == (int *)0x0) goto LAB_00027dd8;\n    pcVar18 = *(code **)(apuStack_70[0] + -0x7a2c);\n  }\n  else {\n    pcVar18 = *(code **)(apuStack_70[0] + -0x7a2c);\n    piVar3 = piStack_5c;\n    if (piStack_5c == (int *)0x0) goto LAB_00027dd8;\n  }\n  piVar3 = piStack_5c;\n  (*pcVar18)();\nLAB_00027dd8:\n  if (iStack_4c == *piVar15) {\n    return *piVar15;\n  }\n  pcVar18 = *(code **)(apuStack_70[0] + -0x7b70);\n  pcVar21 = __gmpz_fdiv_ui;\n  (*pcVar18)();\n  *(code **)(puVar19 + -0x18) = pcVar18 + 0x771b0;\n  *(code **)(puVar19 + -4) = pcVar21;\n  *(uint *)(puVar19 + -8) = uVar12;\n  *(int **)(puVar19 + -0xc) = piVar11;\n  if (puVar6 != (uint *)0x0) {\n    iVar9 = piVar3[1];\n    if (iVar9 == 0) {\n      return 0;\n    }\n    if (iVar9 < 0) {\n      iVar1 = (**(code **)(pcVar18 + 0x6f630))(piVar3[2],-iVar9,puVar6);\n    }\n    else {\n      iVar1 = (**(code **)(pcVar18 + 0x6f630))(piVar3[2],iVar9,puVar6);\n    }\n    if (iVar1 != 0) {\n      if (iVar9 < 0) {\n        return (int)puVar6 - iVar1;\n      }\n    }\n    return iVar1;\n  }\n  pcVar18 = *(code **)(pcVar18 + 0x6f74c);\n  uVar22 = 0x27f54;\n  (*pcVar18)();\n  pcVar21 = pcVar18 + 0x770e0;\n  puVar16 = puVar19 + -0x80;\n  puVar20 = puVar19 + -0x80;\n  *(uint *)(puVar19 + -0x4c) = uVar12;\n  *(undefined4 *)(puVar19 + -0x38) = unaff_s6;\n  piVar13 = *(int **)(pcVar18 + 0x6f5e0);\n  *(undefined1 **)(puVar19 + -0x30) = auStack_80;\n  *(undefined4 *)(puVar19 + -0x3c) = unaff_s5;\n  *(undefined4 *)(puVar19 + -0x2c) = uVar22;\n  *(undefined4 *)(puVar19 + -0x34) = unaff_s7;\n  *(uint *)(puVar19 + -0x40) = param_2;\n  *(int **)(puVar19 + -0x44) = piVar15;\n  *(uint **)(puVar19 + -0x48) = param_1;\n  *(int **)(puVar19 + -0x50) = piVar11;\n  *(code **)(puVar19 + -0x68) = pcVar21;\n  *(int *)(puVar19 + -0x54) = *piVar13;\n  if (puVar6 < (uint *)0x30) {\n    piVar7 = (int *)piVar3[2];\n    piVar4 = (int *)(((int)puVar6 + 1U) * 4);\n    *piVar7 = *(int *)(*(int *)(pcVar18 + 0x6f5ec) + (int)piVar4);\n    piVar3[1] = (uint)(puVar6 != (uint *)0x0);\n  }\n  else {\n    iVar9 = (((uint)puVar6 >> 6) * 0x17 >> 5) + 5;\n    uVar10 = (uint)puVar6 >> 1;\n    if (*piVar3 < iVar9 * 2) {\n      pcVar18 = *(code **)(pcVar18 + 0x6f65c);\n      *(uint *)(puVar19 + -0x5c) = uVar10;\n      piVar15 = (int *)(*pcVar18)();\n      pcVar21 = *(code **)(puVar19 + -0x68);\n      uVar10 = *(uint *)(puVar19 + -0x5c);\n    }\n    else {\n      piVar15 = (int *)piVar3[2];\n    }\n    *(undefined4 *)(puVar19 + -0x58) = 0;\n    if ((uint)(iVar9 * 8) < 0x7f01) {\n      puVar20 = puVar19 + iVar9 * -8 + -0x80;\n      puVar16 = puVar19 + iVar9 * -8 + -0x68;\n    }\n    else {\n      pcVar18 = *(code **)(pcVar21 + -0x7d50);\n      *(uint *)(puVar19 + -0x5c) = uVar10;\n      puVar16 = (undefined1 *)(*pcVar18)(puVar19 + -0x58);\n      pcVar21 = *(code **)(puVar19 + -0x68);\n      uVar10 = *(uint *)(puVar19 + -0x5c);\n    }\n    piVar11 = (int *)(puVar16 + iVar9 * 4);\n    iVar9 = (**(code **)(pcVar21 + -0x7e94))(puVar16,piVar11,uVar10);\n    if (((uint)puVar6 & 1) == 0) {\n      iVar1 = (**(code **)(*(int *)(puVar19 + -0x68) + -0x7ad4))(piVar11,piVar11);\n      iVar2 = (**(code **)(*(int *)(puVar19 + -0x68) + -0x7d0c))(piVar11,piVar11,puVar16,iVar9);\n      uVar10 = (uint)(iVar1 + iVar2 != 0) + iVar9;\n      pcVar18 = *(code **)(*(int *)(puVar19 + -0x68) + -0x7d8c);\n      piVar11[iVar9] = iVar1 + iVar2;\n      *(int *)(puVar20 + 0x10) = iVar9;\n      iVar9 = iVar9 + uVar10;\n      piVar7 = piVar11;\n      iVar1 = (*pcVar18)(piVar15,piVar11,uVar10,puVar16);\n      pcVar21 = *(code **)(puVar19 + -0x68);\n    }\n    else {\n      uVar22 = (**(code **)(*(int *)(puVar19 + -0x68) + -0x7ad4))(piVar15,puVar16,iVar9,1);\n      *(undefined4 *)(puVar19 + -0x5c) = uVar22;\n      iVar1 = (**(code **)(*(int *)(puVar19 + -0x68) + -0x7d0c))(puVar16,piVar15,piVar11,iVar9);\n      iVar2 = *(int *)(puVar19 + -0x5c);\n      pcVar18 = *(code **)(*(int *)(puVar19 + -0x68) + -0x7b2c);\n      *(int *)(puVar16 + iVar9 * 4) = iVar1 + iVar2;\n      *(uint *)(puVar19 + -0x60) = (uint)(iVar1 + iVar2 != 0) + iVar9;\n      iVar1 = (*pcVar18)(piVar11,piVar15,piVar11,iVar9);\n      iVar2 = *(int *)(puVar19 + -0x60);\n      pcVar18 = *(code **)(*(int *)(puVar19 + -0x68) + -0x7d8c);\n      iVar14 = iVar9 + (*(int *)(puVar19 + -0x5c) - iVar1);\n      piVar11[iVar9] = *(int *)(puVar19 + -0x5c) - iVar1;\n      *(int *)(puVar20 + 0x10) = iVar14;\n      iVar9 = iVar2 + iVar14;\n      iVar1 = (*pcVar18)(piVar15,puVar16,iVar2,piVar11);\n      uVar10 = 0xfffffffe;\n      piVar7 = (int *)0x2;\n      pcVar21 = *(code **)(puVar19 + -0x68);\n      if (((uint)puVar6 & 2) != 0) {\n        piVar7 = (int *)0xfffffffe;\n      }\n      *piVar15 = (int)piVar7 + *piVar15;\n    }\n    piVar4 = *(int **)(puVar19 + -0x58);\n    iVar9 = iVar9 - (uint)(iVar1 == 0);\n    piVar15 = piVar15 + iVar9;\n    param_1 = (uint *)(iVar9 - (uint)(piVar15[-1] == 0));\n    piVar3[1] = (int)param_1;\n    puVar16 = puVar20;\n    if (piVar4 != (int *)0x0) {\n      (**(code **)(pcVar21 + -0x7a2c))();\n      pcVar21 = *(code **)(puVar19 + -0x68);\n    }\n  }\n  if (*(int *)(puVar19 + -0x54) == *piVar13) {\n    return *piVar13;\n  }\n  pcVar18 = *(code **)(pcVar21 + -0x7b70);\n  uVar22 = 0x2825c;\n  (*pcVar18)();\n  pcVar21 = pcVar18 + 0x76de0;\n  *(code **)(puVar16 + -0x28) = pcVar21;\n  *(uint **)(puVar16 + -0xc) = param_1;\n  *(undefined4 *)(puVar16 + -4) = uVar22;\n  *(int **)(puVar16 + -8) = piVar15;\n  *(int **)(puVar16 + -0x10) = piVar13;\n  *(int **)(puVar16 + -0x14) = piVar11;\n  if (0x2f < uVar10) {\n    iVar9 = ((uVar10 >> 5) * 0x17 >> 5) + 4;\n    if (*piVar4 < iVar9) {\n      pcVar18 = *(code **)(pcVar18 + 0x6f35c);\n      *(uint *)(puVar16 + -0x1c) = uVar10;\n      iVar1 = (*pcVar18)();\n      pcVar21 = *(code **)(puVar16 + -0x28);\n      uVar10 = *(uint *)(puVar16 + -0x1c);\n    }\n    else {\n      iVar1 = piVar4[2];\n    }\n    pcVar18 = *(code **)(pcVar21 + -0x7a84);\n    if (*piVar7 < iVar9) {\n      *(uint *)(puVar16 + -0x1c) = uVar10;\n      iVar9 = (*pcVar18)(piVar7,iVar9);\n      pcVar21 = *(code **)(puVar16 + -0x28);\n    }\n    else {\n      iVar9 = piVar7[2];\n    }\n    iVar1 = (**(code **)(pcVar21 + -0x7e94))(iVar1,iVar9);\n    piVar4[1] = iVar1;\n    iVar1 = iVar1 - (uint)(*(int *)(iVar9 + iVar1 * 4 + -4) == 0);\n    piVar7[1] = iVar1;\n    return iVar1;\n  }\n  puVar8 = (undefined4 *)piVar7[2];\n  uVar22 = *(undefined4 *)(*(int *)(pcVar18 + 0x6f2ec) + uVar10 * 4);\n  iVar9 = *(int *)(*(int *)(pcVar18 + 0x6f2ec) + (uVar10 + 1) * 4);\n  *(int *)piVar4[2] = iVar9;\n  piVar4[1] = (uint)(uVar10 != 0);\n  *puVar8 = uVar22;\n  piVar7[1] = (uint)(uVar10 != 1);\n  return iVar9;\n}" primitive_type (function_declarator "__gmpz_fdiv_r_ui(uint *param_1,uint param_2,int param_3)" identifier (parameter_list "(uint *param_1,uint param_2,int param_3)" ( (parameter_declaration "uint *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "uint param_2" type_identifier identifier) , (parameter_declaration "int param_3" primitive_type identifier) ))) (compound_statement "{\n  int iVar1;\n  int iVar2;\n  int *piVar3;\n  int *piVar4;\n  uint uVar5;\n  uint *puVar6;\n  int *piVar7;\n  undefined4 *puVar8;\n  int iVar9;\n  uint uVar10;\n  int *piVar11;\n  uint uVar12;\n  int *piVar13;\n  int iVar14;\n  int *piVar15;\n  undefined1 *puVar16;\n  undefined4 unaff_s5;\n  undefined4 unaff_s6;\n  undefined4 unaff_s7;\n  undefined *puVar17;\n  code *pcVar18;\n  undefined1 *puVar19;\n  undefined1 *puVar20;\n  code *pcVar21;\n  undefined4 uVar22;\n  undefined1 auStack_80 [16];\n  undefined *apuStack_70 [3];\n  int iStack_64;\n  int *piStack_5c;\n  uint uStack_58;\n  int iStack_54;\n  int iStack_50;\n  int iStack_4c;\n  \n  if (param_3 != 0) {\n    iVar9 = *(int *)(param_2 + 4);\n    if (iVar9 != 0) {\n      if (iVar9 < 0) {\n        iVar1 = (*(code *)PTR___gmpn_mod_1_000974c0)(*(undefined4 *)(param_2 + 8),-iVar9,param_3);\n      }\n      else {\n        iVar1 = (*(code *)PTR___gmpn_mod_1_000974c0)(*(undefined4 *)(param_2 + 8),iVar9,param_3);\n      }\n      if (iVar1 != 0) {\n        if (iVar9 < 0) {\n          iVar1 = param_3 - iVar1;\n          *(int *)param_1[2] = iVar1;\n          param_1[1] = 1;\n        }\n        else {\n          *(int *)param_1[2] = iVar1;\n          param_1[1] = 1;\n        }\n        return iVar1;\n      }\n    }\n    param_1[1] = 0;\n    return 0;\n  }\n  puVar17 = PTR___gmp_divide_by_zero_000975dc;\n  (*(code *)PTR___gmp_divide_by_zero_000975dc)();\n  apuStack_70[0] = puVar17 + 0x77320;\n  puVar19 = auStack_80;\n  piVar15 = *(int **)(puVar17 + 0x6f820);\n  uVar10 = *(uint *)(param_3 + 4);\n  piStack_5c = (int *)0x0;\n  iStack_4c = *piVar15;\n  uVar12 = *(uint *)(param_2 + 4);\n  if ((int)uVar10 < 0) {\n    uStack_58 = -uVar10;\n    uVar5 = uVar10 * -4;\n    if (0x7f00 < uVar5) {\n      pcVar18 = *(code **)(puVar17 + 0x6f5d0);\n      goto LAB_00027e2c;\n    }\nLAB_00027d94:\n    iStack_50 = -(uVar5 + 7 & 0xfffffff8);\n    puVar19 = auStack_80 + iStack_50;\n    iStack_50 = (int)apuStack_70 + iStack_50;\n  }\n  else {\n    uVar5 = uVar10 * 4;\n    pcVar18 = *(code **)(puVar17 + 0x6f5d0);\n    uStack_58 = uVar10;\n    if (uVar5 < 0x7f01) goto LAB_00027d94;\nLAB_00027e2c:\n    iStack_64 = param_3;\n    iStack_50 = (*pcVar18)(&piStack_5c,uVar5);\n    param_3 = iStack_64;\n  }\n  puVar6 = &uStack_58;\n  piVar11 = (int *)(uVar12 ^ uVar10);\n  uVar10 = param_2;\n  (**(code **)(apuStack_70[0] + -0x7a6c))(param_1,puVar6,param_2,param_3);\n  if (((int)piVar11 < 0) && (iStack_54 != 0)) {\n    uVar10 = 1;\n    puVar6 = param_1;\n    (**(code **)(apuStack_70[0] + -0x7ac0))(param_1);\n    piVar3 = piStack_5c;\n    if (piStack_5c == (int *)0x0) goto LAB_00027dd8;\n    pcVar18 = *(code **)(apuStack_70[0] + -0x7a2c);\n  }\n  else {\n    pcVar18 = *(code **)(apuStack_70[0] + -0x7a2c);\n    piVar3 = piStack_5c;\n    if (piStack_5c == (int *)0x0) goto LAB_00027dd8;\n  }\n  piVar3 = piStack_5c;\n  (*pcVar18)();\nLAB_00027dd8:\n  if (iStack_4c == *piVar15) {\n    return *piVar15;\n  }\n  pcVar18 = *(code **)(apuStack_70[0] + -0x7b70);\n  pcVar21 = __gmpz_fdiv_ui;\n  (*pcVar18)();\n  *(code **)(puVar19 + -0x18) = pcVar18 + 0x771b0;\n  *(code **)(puVar19 + -4) = pcVar21;\n  *(uint *)(puVar19 + -8) = uVar12;\n  *(int **)(puVar19 + -0xc) = piVar11;\n  if (puVar6 != (uint *)0x0) {\n    iVar9 = piVar3[1];\n    if (iVar9 == 0) {\n      return 0;\n    }\n    if (iVar9 < 0) {\n      iVar1 = (**(code **)(pcVar18 + 0x6f630))(piVar3[2],-iVar9,puVar6);\n    }\n    else {\n      iVar1 = (**(code **)(pcVar18 + 0x6f630))(piVar3[2],iVar9,puVar6);\n    }\n    if (iVar1 != 0) {\n      if (iVar9 < 0) {\n        return (int)puVar6 - iVar1;\n      }\n    }\n    return iVar1;\n  }\n  pcVar18 = *(code **)(pcVar18 + 0x6f74c);\n  uVar22 = 0x27f54;\n  (*pcVar18)();\n  pcVar21 = pcVar18 + 0x770e0;\n  puVar16 = puVar19 + -0x80;\n  puVar20 = puVar19 + -0x80;\n  *(uint *)(puVar19 + -0x4c) = uVar12;\n  *(undefined4 *)(puVar19 + -0x38) = unaff_s6;\n  piVar13 = *(int **)(pcVar18 + 0x6f5e0);\n  *(undefined1 **)(puVar19 + -0x30) = auStack_80;\n  *(undefined4 *)(puVar19 + -0x3c) = unaff_s5;\n  *(undefined4 *)(puVar19 + -0x2c) = uVar22;\n  *(undefined4 *)(puVar19 + -0x34) = unaff_s7;\n  *(uint *)(puVar19 + -0x40) = param_2;\n  *(int **)(puVar19 + -0x44) = piVar15;\n  *(uint **)(puVar19 + -0x48) = param_1;\n  *(int **)(puVar19 + -0x50) = piVar11;\n  *(code **)(puVar19 + -0x68) = pcVar21;\n  *(int *)(puVar19 + -0x54) = *piVar13;\n  if (puVar6 < (uint *)0x30) {\n    piVar7 = (int *)piVar3[2];\n    piVar4 = (int *)(((int)puVar6 + 1U) * 4);\n    *piVar7 = *(int *)(*(int *)(pcVar18 + 0x6f5ec) + (int)piVar4);\n    piVar3[1] = (uint)(puVar6 != (uint *)0x0);\n  }\n  else {\n    iVar9 = (((uint)puVar6 >> 6) * 0x17 >> 5) + 5;\n    uVar10 = (uint)puVar6 >> 1;\n    if (*piVar3 < iVar9 * 2) {\n      pcVar18 = *(code **)(pcVar18 + 0x6f65c);\n      *(uint *)(puVar19 + -0x5c) = uVar10;\n      piVar15 = (int *)(*pcVar18)();\n      pcVar21 = *(code **)(puVar19 + -0x68);\n      uVar10 = *(uint *)(puVar19 + -0x5c);\n    }\n    else {\n      piVar15 = (int *)piVar3[2];\n    }\n    *(undefined4 *)(puVar19 + -0x58) = 0;\n    if ((uint)(iVar9 * 8) < 0x7f01) {\n      puVar20 = puVar19 + iVar9 * -8 + -0x80;\n      puVar16 = puVar19 + iVar9 * -8 + -0x68;\n    }\n    else {\n      pcVar18 = *(code **)(pcVar21 + -0x7d50);\n      *(uint *)(puVar19 + -0x5c) = uVar10;\n      puVar16 = (undefined1 *)(*pcVar18)(puVar19 + -0x58);\n      pcVar21 = *(code **)(puVar19 + -0x68);\n      uVar10 = *(uint *)(puVar19 + -0x5c);\n    }\n    piVar11 = (int *)(puVar16 + iVar9 * 4);\n    iVar9 = (**(code **)(pcVar21 + -0x7e94))(puVar16,piVar11,uVar10);\n    if (((uint)puVar6 & 1) == 0) {\n      iVar1 = (**(code **)(*(int *)(puVar19 + -0x68) + -0x7ad4))(piVar11,piVar11);\n      iVar2 = (**(code **)(*(int *)(puVar19 + -0x68) + -0x7d0c))(piVar11,piVar11,puVar16,iVar9);\n      uVar10 = (uint)(iVar1 + iVar2 != 0) + iVar9;\n      pcVar18 = *(code **)(*(int *)(puVar19 + -0x68) + -0x7d8c);\n      piVar11[iVar9] = iVar1 + iVar2;\n      *(int *)(puVar20 + 0x10) = iVar9;\n      iVar9 = iVar9 + uVar10;\n      piVar7 = piVar11;\n      iVar1 = (*pcVar18)(piVar15,piVar11,uVar10,puVar16);\n      pcVar21 = *(code **)(puVar19 + -0x68);\n    }\n    else {\n      uVar22 = (**(code **)(*(int *)(puVar19 + -0x68) + -0x7ad4))(piVar15,puVar16,iVar9,1);\n      *(undefined4 *)(puVar19 + -0x5c) = uVar22;\n      iVar1 = (**(code **)(*(int *)(puVar19 + -0x68) + -0x7d0c))(puVar16,piVar15,piVar11,iVar9);\n      iVar2 = *(int *)(puVar19 + -0x5c);\n      pcVar18 = *(code **)(*(int *)(puVar19 + -0x68) + -0x7b2c);\n      *(int *)(puVar16 + iVar9 * 4) = iVar1 + iVar2;\n      *(uint *)(puVar19 + -0x60) = (uint)(iVar1 + iVar2 != 0) + iVar9;\n      iVar1 = (*pcVar18)(piVar11,piVar15,piVar11,iVar9);\n      iVar2 = *(int *)(puVar19 + -0x60);\n      pcVar18 = *(code **)(*(int *)(puVar19 + -0x68) + -0x7d8c);\n      iVar14 = iVar9 + (*(int *)(puVar19 + -0x5c) - iVar1);\n      piVar11[iVar9] = *(int *)(puVar19 + -0x5c) - iVar1;\n      *(int *)(puVar20 + 0x10) = iVar14;\n      iVar9 = iVar2 + iVar14;\n      iVar1 = (*pcVar18)(piVar15,puVar16,iVar2,piVar11);\n      uVar10 = 0xfffffffe;\n      piVar7 = (int *)0x2;\n      pcVar21 = *(code **)(puVar19 + -0x68);\n      if (((uint)puVar6 & 2) != 0) {\n        piVar7 = (int *)0xfffffffe;\n      }\n      *piVar15 = (int)piVar7 + *piVar15;\n    }\n    piVar4 = *(int **)(puVar19 + -0x58);\n    iVar9 = iVar9 - (uint)(iVar1 == 0);\n    piVar15 = piVar15 + iVar9;\n    param_1 = (uint *)(iVar9 - (uint)(piVar15[-1] == 0));\n    piVar3[1] = (int)param_1;\n    puVar16 = puVar20;\n    if (piVar4 != (int *)0x0) {\n      (**(code **)(pcVar21 + -0x7a2c))();\n      pcVar21 = *(code **)(puVar19 + -0x68);\n    }\n  }\n  if (*(int *)(puVar19 + -0x54) == *piVar13) {\n    return *piVar13;\n  }\n  pcVar18 = *(code **)(pcVar21 + -0x7b70);\n  uVar22 = 0x2825c;\n  (*pcVar18)();\n  pcVar21 = pcVar18 + 0x76de0;\n  *(code **)(puVar16 + -0x28) = pcVar21;\n  *(uint **)(puVar16 + -0xc) = param_1;\n  *(undefined4 *)(puVar16 + -4) = uVar22;\n  *(int **)(puVar16 + -8) = piVar15;\n  *(int **)(puVar16 + -0x10) = piVar13;\n  *(int **)(puVar16 + -0x14) = piVar11;\n  if (0x2f < uVar10) {\n    iVar9 = ((uVar10 >> 5) * 0x17 >> 5) + 4;\n    if (*piVar4 < iVar9) {\n      pcVar18 = *(code **)(pcVar18 + 0x6f35c);\n      *(uint *)(puVar16 + -0x1c) = uVar10;\n      iVar1 = (*pcVar18)();\n      pcVar21 = *(code **)(puVar16 + -0x28);\n      uVar10 = *(uint *)(puVar16 + -0x1c);\n    }\n    else {\n      iVar1 = piVar4[2];\n    }\n    pcVar18 = *(code **)(pcVar21 + -0x7a84);\n    if (*piVar7 < iVar9) {\n      *(uint *)(puVar16 + -0x1c) = uVar10;\n      iVar9 = (*pcVar18)(piVar7,iVar9);\n      pcVar21 = *(code **)(puVar16 + -0x28);\n    }\n    else {\n      iVar9 = piVar7[2];\n    }\n    iVar1 = (**(code **)(pcVar21 + -0x7e94))(iVar1,iVar9);\n    piVar4[1] = iVar1;\n    iVar1 = iVar1 - (uint)(*(int *)(iVar9 + iVar1 * 4 + -4) == 0);\n    piVar7[1] = iVar1;\n    return iVar1;\n  }\n  puVar8 = (undefined4 *)piVar7[2];\n  uVar22 = *(undefined4 *)(*(int *)(pcVar18 + 0x6f2ec) + uVar10 * 4);\n  iVar9 = *(int *)(*(int *)(pcVar18 + 0x6f2ec) + (uVar10 + 1) * 4);\n  *(int *)piVar4[2] = iVar9;\n  piVar4[1] = (uint)(uVar10 != 0);\n  *puVar8 = uVar22;\n  piVar7[1] = (uint)(uVar10 != 1);\n  return iVar9;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "int *piVar3;" primitive_type (pointer_declarator "*piVar3" * identifier) ;) (declaration "int *piVar4;" primitive_type (pointer_declarator "*piVar4" * identifier) ;) (declaration "uint uVar5;" type_identifier identifier ;) (declaration "uint *puVar6;" type_identifier (pointer_declarator "*puVar6" * identifier) ;) (declaration "int *piVar7;" primitive_type (pointer_declarator "*piVar7" * identifier) ;) (declaration "undefined4 *puVar8;" type_identifier (pointer_declarator "*puVar8" * identifier) ;) (declaration "int iVar9;" primitive_type identifier ;) (declaration "uint uVar10;" type_identifier identifier ;) (declaration "int *piVar11;" primitive_type (pointer_declarator "*piVar11" * identifier) ;) (declaration "uint uVar12;" type_identifier identifier ;) (declaration "int *piVar13;" primitive_type (pointer_declarator "*piVar13" * identifier) ;) (declaration "int iVar14;" primitive_type identifier ;) (declaration "int *piVar15;" primitive_type (pointer_declarator "*piVar15" * identifier) ;) (declaration "undefined1 *puVar16;" type_identifier (pointer_declarator "*puVar16" * identifier) ;) (declaration "undefined4 unaff_s5;" type_identifier identifier ;) (declaration "undefined4 unaff_s6;" type_identifier identifier ;) (declaration "undefined4 unaff_s7;" type_identifier identifier ;) (declaration "undefined *puVar17;" type_identifier (pointer_declarator "*puVar17" * identifier) ;) (declaration "code *pcVar18;" type_identifier (pointer_declarator "*pcVar18" * identifier) ;) (declaration "undefined1 *puVar19;" type_identifier (pointer_declarator "*puVar19" * identifier) ;) (declaration "undefined1 *puVar20;" type_identifier (pointer_declarator "*puVar20" * identifier) ;) (declaration "code *pcVar21;" type_identifier (pointer_declarator "*pcVar21" * identifier) ;) (declaration "undefined4 uVar22;" type_identifier identifier ;) (declaration "undefined1 auStack_80 [16];" type_identifier (array_declarator "auStack_80 [16]" identifier [ number_literal ]) ;) (declaration "undefined *apuStack_70 [3];" type_identifier (pointer_declarator "*apuStack_70 [3]" * (array_declarator "apuStack_70 [3]" identifier [ number_literal ])) ;) (declaration "int iStack_64;" primitive_type identifier ;) (declaration "int *piStack_5c;" primitive_type (pointer_declarator "*piStack_5c" * identifier) ;) (declaration "uint uStack_58;" type_identifier identifier ;) (declaration "int iStack_54;" primitive_type identifier ;) (declaration "int iStack_50;" primitive_type identifier ;) (declaration "int iStack_4c;" primitive_type identifier ;) (if_statement "if (param_3 != 0) {\n    iVar9 = *(int *)(param_2 + 4);\n    if (iVar9 != 0) {\n      if (iVar9 < 0) {\n        iVar1 = (*(code *)PTR___gmpn_mod_1_000974c0)(*(undefined4 *)(param_2 + 8),-iVar9,param_3);\n      }\n      else {\n        iVar1 = (*(code *)PTR___gmpn_mod_1_000974c0)(*(undefined4 *)(param_2 + 8),iVar9,param_3);\n      }\n      if (iVar1 != 0) {\n        if (iVar9 < 0) {\n          iVar1 = param_3 - iVar1;\n          *(int *)param_1[2] = iVar1;\n          param_1[1] = 1;\n        }\n        else {\n          *(int *)param_1[2] = iVar1;\n          param_1[1] = 1;\n        }\n        return iVar1;\n      }\n    }\n    param_1[1] = 0;\n    return 0;\n  }" if (parenthesized_expression "(param_3 != 0)" ( (binary_expression "param_3 != 0" identifier != number_literal) )) (compound_statement "{\n    iVar9 = *(int *)(param_2 + 4);\n    if (iVar9 != 0) {\n      if (iVar9 < 0) {\n        iVar1 = (*(code *)PTR___gmpn_mod_1_000974c0)(*(undefined4 *)(param_2 + 8),-iVar9,param_3);\n      }\n      else {\n        iVar1 = (*(code *)PTR___gmpn_mod_1_000974c0)(*(undefined4 *)(param_2 + 8),iVar9,param_3);\n      }\n      if (iVar1 != 0) {\n        if (iVar9 < 0) {\n          iVar1 = param_3 - iVar1;\n          *(int *)param_1[2] = iVar1;\n          param_1[1] = 1;\n        }\n        else {\n          *(int *)param_1[2] = iVar1;\n          param_1[1] = 1;\n        }\n        return iVar1;\n      }\n    }\n    param_1[1] = 0;\n    return 0;\n  }" { (expression_statement "iVar9 = *(int *)(param_2 + 4);" (assignment_expression "iVar9 = *(int *)(param_2 + 4)" identifier = (pointer_expression "*(int *)(param_2 + 4)" * (cast_expression "(int *)(param_2 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 4)" ( (binary_expression "param_2 + 4" identifier + number_literal) ))))) ;) (if_statement "if (iVar9 != 0) {\n      if (iVar9 < 0) {\n        iVar1 = (*(code *)PTR___gmpn_mod_1_000974c0)(*(undefined4 *)(param_2 + 8),-iVar9,param_3);\n      }\n      else {\n        iVar1 = (*(code *)PTR___gmpn_mod_1_000974c0)(*(undefined4 *)(param_2 + 8),iVar9,param_3);\n      }\n      if (iVar1 != 0) {\n        if (iVar9 < 0) {\n          iVar1 = param_3 - iVar1;\n          *(int *)param_1[2] = iVar1;\n          param_1[1] = 1;\n        }\n        else {\n          *(int *)param_1[2] = iVar1;\n          param_1[1] = 1;\n        }\n        return iVar1;\n      }\n    }" if (parenthesized_expression "(iVar9 != 0)" ( (binary_expression "iVar9 != 0" identifier != number_literal) )) (compound_statement "{\n      if (iVar9 < 0) {\n        iVar1 = (*(code *)PTR___gmpn_mod_1_000974c0)(*(undefined4 *)(param_2 + 8),-iVar9,param_3);\n      }\n      else {\n        iVar1 = (*(code *)PTR___gmpn_mod_1_000974c0)(*(undefined4 *)(param_2 + 8),iVar9,param_3);\n      }\n      if (iVar1 != 0) {\n        if (iVar9 < 0) {\n          iVar1 = param_3 - iVar1;\n          *(int *)param_1[2] = iVar1;\n          param_1[1] = 1;\n        }\n        else {\n          *(int *)param_1[2] = iVar1;\n          param_1[1] = 1;\n        }\n        return iVar1;\n      }\n    }" { (if_statement "if (iVar9 < 0) {\n        iVar1 = (*(code *)PTR___gmpn_mod_1_000974c0)(*(undefined4 *)(param_2 + 8),-iVar9,param_3);\n      }\n      else {\n        iVar1 = (*(code *)PTR___gmpn_mod_1_000974c0)(*(undefined4 *)(param_2 + 8),iVar9,param_3);\n      }" if (parenthesized_expression "(iVar9 < 0)" ( (binary_expression "iVar9 < 0" identifier < number_literal) )) (compound_statement "{\n        iVar1 = (*(code *)PTR___gmpn_mod_1_000974c0)(*(undefined4 *)(param_2 + 8),-iVar9,param_3);\n      }" { (expression_statement "iVar1 = (*(code *)PTR___gmpn_mod_1_000974c0)(*(undefined4 *)(param_2 + 8),-iVar9,param_3);" (assignment_expression "iVar1 = (*(code *)PTR___gmpn_mod_1_000974c0)(*(undefined4 *)(param_2 + 8),-iVar9,param_3)" identifier = (call_expression "(*(code *)PTR___gmpn_mod_1_000974c0)(*(undefined4 *)(param_2 + 8),-iVar9,param_3)" (parenthesized_expression "(*(code *)PTR___gmpn_mod_1_000974c0)" ( (pointer_expression "*(code *)PTR___gmpn_mod_1_000974c0" * (cast_expression "(code *)PTR___gmpn_mod_1_000974c0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(*(undefined4 *)(param_2 + 8),-iVar9,param_3)" ( (pointer_expression "*(undefined4 *)(param_2 + 8)" * (cast_expression "(undefined4 *)(param_2 + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 8)" ( (binary_expression "param_2 + 8" identifier + number_literal) )))) , (unary_expression "-iVar9" - identifier) , identifier )))) ;) }) (else_clause "else {\n        iVar1 = (*(code *)PTR___gmpn_mod_1_000974c0)(*(undefined4 *)(param_2 + 8),iVar9,param_3);\n      }" else (compound_statement "{\n        iVar1 = (*(code *)PTR___gmpn_mod_1_000974c0)(*(undefined4 *)(param_2 + 8),iVar9,param_3);\n      }" { (expression_statement "iVar1 = (*(code *)PTR___gmpn_mod_1_000974c0)(*(undefined4 *)(param_2 + 8),iVar9,param_3);" (assignment_expression "iVar1 = (*(code *)PTR___gmpn_mod_1_000974c0)(*(undefined4 *)(param_2 + 8),iVar9,param_3)" identifier = (call_expression "(*(code *)PTR___gmpn_mod_1_000974c0)(*(undefined4 *)(param_2 + 8),iVar9,param_3)" (parenthesized_expression "(*(code *)PTR___gmpn_mod_1_000974c0)" ( (pointer_expression "*(code *)PTR___gmpn_mod_1_000974c0" * (cast_expression "(code *)PTR___gmpn_mod_1_000974c0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(*(undefined4 *)(param_2 + 8),iVar9,param_3)" ( (pointer_expression "*(undefined4 *)(param_2 + 8)" * (cast_expression "(undefined4 *)(param_2 + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 8)" ( (binary_expression "param_2 + 8" identifier + number_literal) )))) , identifier , identifier )))) ;) }))) (if_statement "if (iVar1 != 0) {\n        if (iVar9 < 0) {\n          iVar1 = param_3 - iVar1;\n          *(int *)param_1[2] = iVar1;\n          param_1[1] = 1;\n        }\n        else {\n          *(int *)param_1[2] = iVar1;\n          param_1[1] = 1;\n        }\n        return iVar1;\n      }" if (parenthesized_expression "(iVar1 != 0)" ( (binary_expression "iVar1 != 0" identifier != number_literal) )) (compound_statement "{\n        if (iVar9 < 0) {\n          iVar1 = param_3 - iVar1;\n          *(int *)param_1[2] = iVar1;\n          param_1[1] = 1;\n        }\n        else {\n          *(int *)param_1[2] = iVar1;\n          param_1[1] = 1;\n        }\n        return iVar1;\n      }" { (if_statement "if (iVar9 < 0) {\n          iVar1 = param_3 - iVar1;\n          *(int *)param_1[2] = iVar1;\n          param_1[1] = 1;\n        }\n        else {\n          *(int *)param_1[2] = iVar1;\n          param_1[1] = 1;\n        }" if (parenthesized_expression "(iVar9 < 0)" ( (binary_expression "iVar9 < 0" identifier < number_literal) )) (compound_statement "{\n          iVar1 = param_3 - iVar1;\n          *(int *)param_1[2] = iVar1;\n          param_1[1] = 1;\n        }" { (expression_statement "iVar1 = param_3 - iVar1;" (assignment_expression "iVar1 = param_3 - iVar1" identifier = (binary_expression "param_3 - iVar1" identifier - identifier)) ;) (expression_statement "*(int *)param_1[2] = iVar1;" (assignment_expression "*(int *)param_1[2] = iVar1" (pointer_expression "*(int *)param_1[2]" * (cast_expression "(int *)param_1[2]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[2]" identifier [ number_literal ]))) = identifier) ;) (expression_statement "param_1[1] = 1;" (assignment_expression "param_1[1] = 1" (subscript_expression "param_1[1]" identifier [ number_literal ]) = number_literal) ;) }) (else_clause "else {\n          *(int *)param_1[2] = iVar1;\n          param_1[1] = 1;\n        }" else (compound_statement "{\n          *(int *)param_1[2] = iVar1;\n          param_1[1] = 1;\n        }" { (expression_statement "*(int *)param_1[2] = iVar1;" (assignment_expression "*(int *)param_1[2] = iVar1" (pointer_expression "*(int *)param_1[2]" * (cast_expression "(int *)param_1[2]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[2]" identifier [ number_literal ]))) = identifier) ;) (expression_statement "param_1[1] = 1;" (assignment_expression "param_1[1] = 1" (subscript_expression "param_1[1]" identifier [ number_literal ]) = number_literal) ;) }))) (return_statement "return iVar1;" return identifier ;) })) })) (expression_statement "param_1[1] = 0;" (assignment_expression "param_1[1] = 0" (subscript_expression "param_1[1]" identifier [ number_literal ]) = number_literal) ;) (return_statement "return 0;" return number_literal ;) })) (expression_statement "puVar17 = PTR___gmp_divide_by_zero_000975dc;" (assignment_expression "puVar17 = PTR___gmp_divide_by_zero_000975dc" identifier = 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 "apuStack_70[0] = puVar17 + 0x77320;" (assignment_expression "apuStack_70[0] = puVar17 + 0x77320" (subscript_expression "apuStack_70[0]" identifier [ number_literal ]) = (binary_expression "puVar17 + 0x77320" identifier + number_literal)) ;) (expression_statement "puVar19 = auStack_80;" (assignment_expression "puVar19 = auStack_80" identifier = identifier) ;) (expression_statement "piVar15 = *(int **)(puVar17 + 0x6f820);" (assignment_expression "piVar15 = *(int **)(puVar17 + 0x6f820)" identifier = (pointer_expression "*(int **)(puVar17 + 0x6f820)" * (cast_expression "(int **)(puVar17 + 0x6f820)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar17 + 0x6f820)" ( (binary_expression "puVar17 + 0x6f820" identifier + number_literal) ))))) ;) (expression_statement "uVar10 = *(uint *)(param_3 + 4);" (assignment_expression "uVar10 = *(uint *)(param_3 + 4)" identifier = (pointer_expression "*(uint *)(param_3 + 4)" * (cast_expression "(uint *)(param_3 + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 4)" ( (binary_expression "param_3 + 4" identifier + number_literal) ))))) ;) (expression_statement "piStack_5c = (int *)0x0;" (assignment_expression "piStack_5c = (int *)0x0" identifier = (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "iStack_4c = *piVar15;" (assignment_expression "iStack_4c = *piVar15" identifier = (pointer_expression "*piVar15" * identifier)) ;) (expression_statement "uVar12 = *(uint *)(param_2 + 4);" (assignment_expression "uVar12 = *(uint *)(param_2 + 4)" identifier = (pointer_expression "*(uint *)(param_2 + 4)" * (cast_expression "(uint *)(param_2 + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 4)" ( (binary_expression "param_2 + 4" identifier + number_literal) ))))) ;) (if_statement "if ((int)uVar10 < 0) {\n    uStack_58 = -uVar10;\n    uVar5 = uVar10 * -4;\n    if (0x7f00 < uVar5) {\n      pcVar18 = *(code **)(puVar17 + 0x6f5d0);\n      goto LAB_00027e2c;\n    }\nLAB_00027d94:\n    iStack_50 = -(uVar5 + 7 & 0xfffffff8);\n    puVar19 = auStack_80 + iStack_50;\n    iStack_50 = (int)apuStack_70 + iStack_50;\n  }\n  else {\n    uVar5 = uVar10 * 4;\n    pcVar18 = *(code **)(puVar17 + 0x6f5d0);\n    uStack_58 = uVar10;\n    if (uVar5 < 0x7f01) goto LAB_00027d94;\nLAB_00027e2c:\n    iStack_64 = param_3;\n    iStack_50 = (*pcVar18)(&piStack_5c,uVar5);\n    param_3 = iStack_64;\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    uStack_58 = -uVar10;\n    uVar5 = uVar10 * -4;\n    if (0x7f00 < uVar5) {\n      pcVar18 = *(code **)(puVar17 + 0x6f5d0);\n      goto LAB_00027e2c;\n    }\nLAB_00027d94:\n    iStack_50 = -(uVar5 + 7 & 0xfffffff8);\n    puVar19 = auStack_80 + iStack_50;\n    iStack_50 = (int)apuStack_70 + iStack_50;\n  }" { (expression_statement "uStack_58 = -uVar10;" (assignment_expression "uStack_58 = -uVar10" identifier = (unary_expression "-uVar10" - identifier)) ;) (expression_statement "uVar5 = uVar10 * -4;" (assignment_expression "uVar5 = uVar10 * -4" identifier = (binary_expression "uVar10 * -4" identifier * number_literal)) ;) (if_statement "if (0x7f00 < uVar5) {\n      pcVar18 = *(code **)(puVar17 + 0x6f5d0);\n      goto LAB_00027e2c;\n    }" if (parenthesized_expression "(0x7f00 < uVar5)" ( (binary_expression "0x7f00 < uVar5" number_literal < identifier) )) (compound_statement "{\n      pcVar18 = *(code **)(puVar17 + 0x6f5d0);\n      goto LAB_00027e2c;\n    }" { (expression_statement "pcVar18 = *(code **)(puVar17 + 0x6f5d0);" (assignment_expression "pcVar18 = *(code **)(puVar17 + 0x6f5d0)" identifier = (pointer_expression "*(code **)(puVar17 + 0x6f5d0)" * (cast_expression "(code **)(puVar17 + 0x6f5d0)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar17 + 0x6f5d0)" ( (binary_expression "puVar17 + 0x6f5d0" identifier + number_literal) ))))) ;) (goto_statement "goto LAB_00027e2c;" goto statement_identifier ;) })) (labeled_statement "LAB_00027d94:\n    iStack_50 = -(uVar5 + 7 & 0xfffffff8);" statement_identifier : (expression_statement "iStack_50 = -(uVar5 + 7 & 0xfffffff8);" (assignment_expression "iStack_50 = -(uVar5 + 7 & 0xfffffff8)" identifier = (unary_expression "-(uVar5 + 7 & 0xfffffff8)" - (parenthesized_expression "(uVar5 + 7 & 0xfffffff8)" ( (binary_expression "uVar5 + 7 & 0xfffffff8" (binary_expression "uVar5 + 7" identifier + number_literal) & number_literal) )))) ;)) (expression_statement "puVar19 = auStack_80 + iStack_50;" (assignment_expression "puVar19 = auStack_80 + iStack_50" identifier = (binary_expression "auStack_80 + iStack_50" identifier + identifier)) ;) (expression_statement "iStack_50 = (int)apuStack_70 + iStack_50;" (assignment_expression "iStack_50 = (int)apuStack_70 + iStack_50" identifier = (binary_expression "(int)apuStack_70 + iStack_50" (cast_expression "(int)apuStack_70" ( (type_descriptor "int" primitive_type) ) identifier) + identifier)) ;) }) (else_clause "else {\n    uVar5 = uVar10 * 4;\n    pcVar18 = *(code **)(puVar17 + 0x6f5d0);\n    uStack_58 = uVar10;\n    if (uVar5 < 0x7f01) goto LAB_00027d94;\nLAB_00027e2c:\n    iStack_64 = param_3;\n    iStack_50 = (*pcVar18)(&piStack_5c,uVar5);\n    param_3 = iStack_64;\n  }" else (compound_statement "{\n    uVar5 = uVar10 * 4;\n    pcVar18 = *(code **)(puVar17 + 0x6f5d0);\n    uStack_58 = uVar10;\n    if (uVar5 < 0x7f01) goto LAB_00027d94;\nLAB_00027e2c:\n    iStack_64 = param_3;\n    iStack_50 = (*pcVar18)(&piStack_5c,uVar5);\n    param_3 = iStack_64;\n  }" { (expression_statement "uVar5 = uVar10 * 4;" (assignment_expression "uVar5 = uVar10 * 4" identifier = (binary_expression "uVar10 * 4" identifier * number_literal)) ;) (expression_statement "pcVar18 = *(code **)(puVar17 + 0x6f5d0);" (assignment_expression "pcVar18 = *(code **)(puVar17 + 0x6f5d0)" identifier = (pointer_expression "*(code **)(puVar17 + 0x6f5d0)" * (cast_expression "(code **)(puVar17 + 0x6f5d0)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar17 + 0x6f5d0)" ( (binary_expression "puVar17 + 0x6f5d0" identifier + number_literal) ))))) ;) (expression_statement "uStack_58 = uVar10;" (assignment_expression "uStack_58 = uVar10" identifier = identifier) ;) (if_statement "if (uVar5 < 0x7f01) goto LAB_00027d94;" if (parenthesized_expression "(uVar5 < 0x7f01)" ( (binary_expression "uVar5 < 0x7f01" identifier < number_literal) )) (goto_statement "goto LAB_00027d94;" goto statement_identifier ;)) (labeled_statement "LAB_00027e2c:\n    iStack_64 = param_3;" statement_identifier : (expression_statement "iStack_64 = param_3;" (assignment_expression "iStack_64 = param_3" identifier = identifier) ;)) (expression_statement "iStack_50 = (*pcVar18)(&piStack_5c,uVar5);" (assignment_expression "iStack_50 = (*pcVar18)(&piStack_5c,uVar5)" identifier = (call_expression "(*pcVar18)(&piStack_5c,uVar5)" (parenthesized_expression "(*pcVar18)" ( (pointer_expression "*pcVar18" * identifier) )) (argument_list "(&piStack_5c,uVar5)" ( (pointer_expression "&piStack_5c" & identifier) , identifier )))) ;) (expression_statement "param_3 = iStack_64;" (assignment_expression "param_3 = iStack_64" identifier = identifier) ;) }))) (expression_statement "puVar6 = &uStack_58;" (assignment_expression "puVar6 = &uStack_58" identifier = (pointer_expression "&uStack_58" & identifier)) ;) (expression_statement "piVar11 = (int *)(uVar12 ^ uVar10);" (assignment_expression "piVar11 = (int *)(uVar12 ^ uVar10)" identifier = (cast_expression "(int *)(uVar12 ^ uVar10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar12 ^ uVar10)" ( (binary_expression "uVar12 ^ uVar10" identifier ^ identifier) )))) ;) (expression_statement "uVar10 = param_2;" (assignment_expression "uVar10 = param_2" identifier = identifier) ;) (expression_statement "(**(code **)(apuStack_70[0] + -0x7a6c))(param_1,puVar6,param_2,param_3);" (call_expression "(**(code **)(apuStack_70[0] + -0x7a6c))(param_1,puVar6,param_2,param_3)" (parenthesized_expression "(**(code **)(apuStack_70[0] + -0x7a6c))" ( (pointer_expression "**(code **)(apuStack_70[0] + -0x7a6c)" * (pointer_expression "*(code **)(apuStack_70[0] + -0x7a6c)" * (cast_expression "(code **)(apuStack_70[0] + -0x7a6c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(apuStack_70[0] + -0x7a6c)" ( (binary_expression "apuStack_70[0] + -0x7a6c" (subscript_expression "apuStack_70[0]" identifier [ number_literal ]) + number_literal) ))))) )) (argument_list "(param_1,puVar6,param_2,param_3)" ( identifier , identifier , identifier , identifier ))) ;) (if_statement "if (((int)piVar11 < 0) && (iStack_54 != 0)) {\n    uVar10 = 1;\n    puVar6 = param_1;\n    (**(code **)(apuStack_70[0] + -0x7ac0))(param_1);\n    piVar3 = piStack_5c;\n    if (piStack_5c == (int *)0x0) goto LAB_00027dd8;\n    pcVar18 = *(code **)(apuStack_70[0] + -0x7a2c);\n  }\n  else {\n    pcVar18 = *(code **)(apuStack_70[0] + -0x7a2c);\n    piVar3 = piStack_5c;\n    if (piStack_5c == (int *)0x0) goto LAB_00027dd8;\n  }" if (parenthesized_expression "(((int)piVar11 < 0) && (iStack_54 != 0))" ( (binary_expression "((int)piVar11 < 0) && (iStack_54 != 0)" (parenthesized_expression "((int)piVar11 < 0)" ( (binary_expression "(int)piVar11 < 0" (cast_expression "(int)piVar11" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) && (parenthesized_expression "(iStack_54 != 0)" ( (binary_expression "iStack_54 != 0" identifier != number_literal) ))) )) (compound_statement "{\n    uVar10 = 1;\n    puVar6 = param_1;\n    (**(code **)(apuStack_70[0] + -0x7ac0))(param_1);\n    piVar3 = piStack_5c;\n    if (piStack_5c == (int *)0x0) goto LAB_00027dd8;\n    pcVar18 = *(code **)(apuStack_70[0] + -0x7a2c);\n  }" { (expression_statement "uVar10 = 1;" (assignment_expression "uVar10 = 1" identifier = number_literal) ;) (expression_statement "puVar6 = param_1;" (assignment_expression "puVar6 = param_1" identifier = identifier) ;) (expression_statement "(**(code **)(apuStack_70[0] + -0x7ac0))(param_1);" (call_expression "(**(code **)(apuStack_70[0] + -0x7ac0))(param_1)" (parenthesized_expression "(**(code **)(apuStack_70[0] + -0x7ac0))" ( (pointer_expression "**(code **)(apuStack_70[0] + -0x7ac0)" * (pointer_expression "*(code **)(apuStack_70[0] + -0x7ac0)" * (cast_expression "(code **)(apuStack_70[0] + -0x7ac0)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(apuStack_70[0] + -0x7ac0)" ( (binary_expression "apuStack_70[0] + -0x7ac0" (subscript_expression "apuStack_70[0]" identifier [ number_literal ]) + number_literal) ))))) )) (argument_list "(param_1)" ( identifier ))) ;) (expression_statement "piVar3 = piStack_5c;" (assignment_expression "piVar3 = piStack_5c" identifier = identifier) ;) (if_statement "if (piStack_5c == (int *)0x0) goto LAB_00027dd8;" if (parenthesized_expression "(piStack_5c == (int *)0x0)" ( (binary_expression "piStack_5c == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_00027dd8;" goto statement_identifier ;)) (expression_statement "pcVar18 = *(code **)(apuStack_70[0] + -0x7a2c);" (assignment_expression "pcVar18 = *(code **)(apuStack_70[0] + -0x7a2c)" identifier = (pointer_expression "*(code **)(apuStack_70[0] + -0x7a2c)" * (cast_expression "(code **)(apuStack_70[0] + -0x7a2c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(apuStack_70[0] + -0x7a2c)" ( (binary_expression "apuStack_70[0] + -0x7a2c" (subscript_expression "apuStack_70[0]" identifier [ number_literal ]) + number_literal) ))))) ;) }) (else_clause "else {\n    pcVar18 = *(code **)(apuStack_70[0] + -0x7a2c);\n    piVar3 = piStack_5c;\n    if (piStack_5c == (int *)0x0) goto LAB_00027dd8;\n  }" else (compound_statement "{\n    pcVar18 = *(code **)(apuStack_70[0] + -0x7a2c);\n    piVar3 = piStack_5c;\n    if (piStack_5c == (int *)0x0) goto LAB_00027dd8;\n  }" { (expression_statement "pcVar18 = *(code **)(apuStack_70[0] + -0x7a2c);" (assignment_expression "pcVar18 = *(code **)(apuStack_70[0] + -0x7a2c)" identifier = (pointer_expression "*(code **)(apuStack_70[0] + -0x7a2c)" * (cast_expression "(code **)(apuStack_70[0] + -0x7a2c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(apuStack_70[0] + -0x7a2c)" ( (binary_expression "apuStack_70[0] + -0x7a2c" (subscript_expression "apuStack_70[0]" identifier [ number_literal ]) + number_literal) ))))) ;) (expression_statement "piVar3 = piStack_5c;" (assignment_expression "piVar3 = piStack_5c" identifier = identifier) ;) (if_statement "if (piStack_5c == (int *)0x0) goto LAB_00027dd8;" if (parenthesized_expression "(piStack_5c == (int *)0x0)" ( (binary_expression "piStack_5c == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_00027dd8;" goto statement_identifier ;)) }))) (expression_statement "piVar3 = piStack_5c;" (assignment_expression "piVar3 = piStack_5c" identifier = identifier) ;) (expression_statement "(*pcVar18)();" (call_expression "(*pcVar18)()" (parenthesized_expression "(*pcVar18)" ( (pointer_expression "*pcVar18" * identifier) )) (argument_list "()" ( ))) ;) (labeled_statement "LAB_00027dd8:\n  if (iStack_4c == *piVar15) {\n    return *piVar15;\n  }" statement_identifier : (if_statement "if (iStack_4c == *piVar15) {\n    return *piVar15;\n  }" if (parenthesized_expression "(iStack_4c == *piVar15)" ( (binary_expression "iStack_4c == *piVar15" identifier == (pointer_expression "*piVar15" * identifier)) )) (compound_statement "{\n    return *piVar15;\n  }" { (return_statement "return *piVar15;" return (pointer_expression "*piVar15" * identifier) ;) }))) (expression_statement "pcVar18 = *(code **)(apuStack_70[0] + -0x7b70);" (assignment_expression "pcVar18 = *(code **)(apuStack_70[0] + -0x7b70)" identifier = (pointer_expression "*(code **)(apuStack_70[0] + -0x7b70)" * (cast_expression "(code **)(apuStack_70[0] + -0x7b70)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(apuStack_70[0] + -0x7b70)" ( (binary_expression "apuStack_70[0] + -0x7b70" (subscript_expression "apuStack_70[0]" identifier [ number_literal ]) + number_literal) ))))) ;) (expression_statement "pcVar21 = __gmpz_fdiv_ui;" (assignment_expression "pcVar21 = __gmpz_fdiv_ui" identifier = identifier) ;) (expression_statement "(*pcVar18)();" (call_expression "(*pcVar18)()" (parenthesized_expression "(*pcVar18)" ( (pointer_expression "*pcVar18" * identifier) )) (argument_list "()" ( ))) ;) (expression_statement "*(code **)(puVar19 + -0x18) = pcVar18 + 0x771b0;" (assignment_expression "*(code **)(puVar19 + -0x18) = pcVar18 + 0x771b0" (pointer_expression "*(code **)(puVar19 + -0x18)" * (cast_expression "(code **)(puVar19 + -0x18)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar19 + -0x18)" ( (binary_expression "puVar19 + -0x18" identifier + number_literal) )))) = (binary_expression "pcVar18 + 0x771b0" identifier + number_literal)) ;) (expression_statement "*(code **)(puVar19 + -4) = pcVar21;" (assignment_expression "*(code **)(puVar19 + -4) = pcVar21" (pointer_expression "*(code **)(puVar19 + -4)" * (cast_expression "(code **)(puVar19 + -4)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar19 + -4)" ( (binary_expression "puVar19 + -4" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(uint *)(puVar19 + -8) = uVar12;" (assignment_expression "*(uint *)(puVar19 + -8) = uVar12" (pointer_expression "*(uint *)(puVar19 + -8)" * (cast_expression "(uint *)(puVar19 + -8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar19 + -8)" ( (binary_expression "puVar19 + -8" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int **)(puVar19 + -0xc) = piVar11;" (assignment_expression "*(int **)(puVar19 + -0xc) = piVar11" (pointer_expression "*(int **)(puVar19 + -0xc)" * (cast_expression "(int **)(puVar19 + -0xc)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar19 + -0xc)" ( (binary_expression "puVar19 + -0xc" identifier + number_literal) )))) = identifier) ;) (if_statement "if (puVar6 != (uint *)0x0) {\n    iVar9 = piVar3[1];\n    if (iVar9 == 0) {\n      return 0;\n    }\n    if (iVar9 < 0) {\n      iVar1 = (**(code **)(pcVar18 + 0x6f630))(piVar3[2],-iVar9,puVar6);\n    }\n    else {\n      iVar1 = (**(code **)(pcVar18 + 0x6f630))(piVar3[2],iVar9,puVar6);\n    }\n    if (iVar1 != 0) {\n      if (iVar9 < 0) {\n        return (int)puVar6 - iVar1;\n      }\n    }\n    return iVar1;\n  }" if (parenthesized_expression "(puVar6 != (uint *)0x0)" ( (binary_expression "puVar6 != (uint *)0x0" identifier != (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    iVar9 = piVar3[1];\n    if (iVar9 == 0) {\n      return 0;\n    }\n    if (iVar9 < 0) {\n      iVar1 = (**(code **)(pcVar18 + 0x6f630))(piVar3[2],-iVar9,puVar6);\n    }\n    else {\n      iVar1 = (**(code **)(pcVar18 + 0x6f630))(piVar3[2],iVar9,puVar6);\n    }\n    if (iVar1 != 0) {\n      if (iVar9 < 0) {\n        return (int)puVar6 - iVar1;\n      }\n    }\n    return iVar1;\n  }" { (expression_statement "iVar9 = piVar3[1];" (assignment_expression "iVar9 = piVar3[1]" identifier = (subscript_expression "piVar3[1]" identifier [ number_literal ])) ;) (if_statement "if (iVar9 == 0) {\n      return 0;\n    }" if (parenthesized_expression "(iVar9 == 0)" ( (binary_expression "iVar9 == 0" identifier == number_literal) )) (compound_statement "{\n      return 0;\n    }" { (return_statement "return 0;" return number_literal ;) })) (if_statement "if (iVar9 < 0) {\n      iVar1 = (**(code **)(pcVar18 + 0x6f630))(piVar3[2],-iVar9,puVar6);\n    }\n    else {\n      iVar1 = (**(code **)(pcVar18 + 0x6f630))(piVar3[2],iVar9,puVar6);\n    }" if (parenthesized_expression "(iVar9 < 0)" ( (binary_expression "iVar9 < 0" identifier < number_literal) )) (compound_statement "{\n      iVar1 = (**(code **)(pcVar18 + 0x6f630))(piVar3[2],-iVar9,puVar6);\n    }" { (expression_statement "iVar1 = (**(code **)(pcVar18 + 0x6f630))(piVar3[2],-iVar9,puVar6);" (assignment_expression "iVar1 = (**(code **)(pcVar18 + 0x6f630))(piVar3[2],-iVar9,puVar6)" identifier = (call_expression "(**(code **)(pcVar18 + 0x6f630))(piVar3[2],-iVar9,puVar6)" (parenthesized_expression "(**(code **)(pcVar18 + 0x6f630))" ( (pointer_expression "**(code **)(pcVar18 + 0x6f630)" * (pointer_expression "*(code **)(pcVar18 + 0x6f630)" * (cast_expression "(code **)(pcVar18 + 0x6f630)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar18 + 0x6f630)" ( (binary_expression "pcVar18 + 0x6f630" identifier + number_literal) ))))) )) (argument_list "(piVar3[2],-iVar9,puVar6)" ( (subscript_expression "piVar3[2]" identifier [ number_literal ]) , (unary_expression "-iVar9" - identifier) , identifier )))) ;) }) (else_clause "else {\n      iVar1 = (**(code **)(pcVar18 + 0x6f630))(piVar3[2],iVar9,puVar6);\n    }" else (compound_statement "{\n      iVar1 = (**(code **)(pcVar18 + 0x6f630))(piVar3[2],iVar9,puVar6);\n    }" { (expression_statement "iVar1 = (**(code **)(pcVar18 + 0x6f630))(piVar3[2],iVar9,puVar6);" (assignment_expression "iVar1 = (**(code **)(pcVar18 + 0x6f630))(piVar3[2],iVar9,puVar6)" identifier = (call_expression "(**(code **)(pcVar18 + 0x6f630))(piVar3[2],iVar9,puVar6)" (parenthesized_expression "(**(code **)(pcVar18 + 0x6f630))" ( (pointer_expression "**(code **)(pcVar18 + 0x6f630)" * (pointer_expression "*(code **)(pcVar18 + 0x6f630)" * (cast_expression "(code **)(pcVar18 + 0x6f630)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar18 + 0x6f630)" ( (binary_expression "pcVar18 + 0x6f630" identifier + number_literal) ))))) )) (argument_list "(piVar3[2],iVar9,puVar6)" ( (subscript_expression "piVar3[2]" identifier [ number_literal ]) , identifier , identifier )))) ;) }))) (if_statement "if (iVar1 != 0) {\n      if (iVar9 < 0) {\n        return (int)puVar6 - iVar1;\n      }\n    }" if (parenthesized_expression "(iVar1 != 0)" ( (binary_expression "iVar1 != 0" identifier != number_literal) )) (compound_statement "{\n      if (iVar9 < 0) {\n        return (int)puVar6 - iVar1;\n      }\n    }" { (if_statement "if (iVar9 < 0) {\n        return (int)puVar6 - iVar1;\n      }" if (parenthesized_expression "(iVar9 < 0)" ( (binary_expression "iVar9 < 0" identifier < number_literal) )) (compound_statement "{\n        return (int)puVar6 - iVar1;\n      }" { (return_statement "return (int)puVar6 - iVar1;" return (binary_expression "(int)puVar6 - iVar1" (cast_expression "(int)puVar6" ( (type_descriptor "int" primitive_type) ) identifier) - identifier) ;) })) })) (return_statement "return iVar1;" return identifier ;) })) (expression_statement "pcVar18 = *(code **)(pcVar18 + 0x6f74c);" (assignment_expression "pcVar18 = *(code **)(pcVar18 + 0x6f74c)" identifier = (pointer_expression "*(code **)(pcVar18 + 0x6f74c)" * (cast_expression "(code **)(pcVar18 + 0x6f74c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar18 + 0x6f74c)" ( (binary_expression "pcVar18 + 0x6f74c" identifier + number_literal) ))))) ;) (expression_statement "uVar22 = 0x27f54;" (assignment_expression "uVar22 = 0x27f54" identifier = number_literal) ;) (expression_statement "(*pcVar18)();" (call_expression "(*pcVar18)()" (parenthesized_expression "(*pcVar18)" ( (pointer_expression "*pcVar18" * identifier) )) (argument_list "()" ( ))) ;) (expression_statement "pcVar21 = pcVar18 + 0x770e0;" (assignment_expression "pcVar21 = pcVar18 + 0x770e0" identifier = (binary_expression "pcVar18 + 0x770e0" identifier + number_literal)) ;) (expression_statement "puVar16 = puVar19 + -0x80;" (assignment_expression "puVar16 = puVar19 + -0x80" identifier = (binary_expression "puVar19 + -0x80" identifier + number_literal)) ;) (expression_statement "puVar20 = puVar19 + -0x80;" (assignment_expression "puVar20 = puVar19 + -0x80" identifier = (binary_expression "puVar19 + -0x80" identifier + number_literal)) ;) (expression_statement "*(uint *)(puVar19 + -0x4c) = uVar12;" (assignment_expression "*(uint *)(puVar19 + -0x4c) = uVar12" (pointer_expression "*(uint *)(puVar19 + -0x4c)" * (cast_expression "(uint *)(puVar19 + -0x4c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar19 + -0x4c)" ( (binary_expression "puVar19 + -0x4c" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar19 + -0x38) = unaff_s6;" (assignment_expression "*(undefined4 *)(puVar19 + -0x38) = unaff_s6" (pointer_expression "*(undefined4 *)(puVar19 + -0x38)" * (cast_expression "(undefined4 *)(puVar19 + -0x38)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar19 + -0x38)" ( (binary_expression "puVar19 + -0x38" identifier + number_literal) )))) = identifier) ;) (expression_statement "piVar13 = *(int **)(pcVar18 + 0x6f5e0);" (assignment_expression "piVar13 = *(int **)(pcVar18 + 0x6f5e0)" identifier = (pointer_expression "*(int **)(pcVar18 + 0x6f5e0)" * (cast_expression "(int **)(pcVar18 + 0x6f5e0)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar18 + 0x6f5e0)" ( (binary_expression "pcVar18 + 0x6f5e0" identifier + number_literal) ))))) ;) (expression_statement "*(undefined1 **)(puVar19 + -0x30) = auStack_80;" (assignment_expression "*(undefined1 **)(puVar19 + -0x30) = auStack_80" (pointer_expression "*(undefined1 **)(puVar19 + -0x30)" * (cast_expression "(undefined1 **)(puVar19 + -0x30)" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar19 + -0x30)" ( (binary_expression "puVar19 + -0x30" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar19 + -0x3c) = unaff_s5;" (assignment_expression "*(undefined4 *)(puVar19 + -0x3c) = unaff_s5" (pointer_expression "*(undefined4 *)(puVar19 + -0x3c)" * (cast_expression "(undefined4 *)(puVar19 + -0x3c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar19 + -0x3c)" ( (binary_expression "puVar19 + -0x3c" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar19 + -0x2c) = uVar22;" (assignment_expression "*(undefined4 *)(puVar19 + -0x2c) = uVar22" (pointer_expression "*(undefined4 *)(puVar19 + -0x2c)" * (cast_expression "(undefined4 *)(puVar19 + -0x2c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar19 + -0x2c)" ( (binary_expression "puVar19 + -0x2c" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar19 + -0x34) = unaff_s7;" (assignment_expression "*(undefined4 *)(puVar19 + -0x34) = unaff_s7" (pointer_expression "*(undefined4 *)(puVar19 + -0x34)" * (cast_expression "(undefined4 *)(puVar19 + -0x34)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar19 + -0x34)" ( (binary_expression "puVar19 + -0x34" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(uint *)(puVar19 + -0x40) = param_2;" (assignment_expression "*(uint *)(puVar19 + -0x40) = param_2" (pointer_expression "*(uint *)(puVar19 + -0x40)" * (cast_expression "(uint *)(puVar19 + -0x40)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar19 + -0x40)" ( (binary_expression "puVar19 + -0x40" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int **)(puVar19 + -0x44) = piVar15;" (assignment_expression "*(int **)(puVar19 + -0x44) = piVar15" (pointer_expression "*(int **)(puVar19 + -0x44)" * (cast_expression "(int **)(puVar19 + -0x44)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar19 + -0x44)" ( (binary_expression "puVar19 + -0x44" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(uint **)(puVar19 + -0x48) = param_1;" (assignment_expression "*(uint **)(puVar19 + -0x48) = param_1" (pointer_expression "*(uint **)(puVar19 + -0x48)" * (cast_expression "(uint **)(puVar19 + -0x48)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar19 + -0x48)" ( (binary_expression "puVar19 + -0x48" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int **)(puVar19 + -0x50) = piVar11;" (assignment_expression "*(int **)(puVar19 + -0x50) = piVar11" (pointer_expression "*(int **)(puVar19 + -0x50)" * (cast_expression "(int **)(puVar19 + -0x50)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar19 + -0x50)" ( (binary_expression "puVar19 + -0x50" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(code **)(puVar19 + -0x68) = pcVar21;" (assignment_expression "*(code **)(puVar19 + -0x68) = pcVar21" (pointer_expression "*(code **)(puVar19 + -0x68)" * (cast_expression "(code **)(puVar19 + -0x68)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar19 + -0x68)" ( (binary_expression "puVar19 + -0x68" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(puVar19 + -0x54) = *piVar13;" (assignment_expression "*(int *)(puVar19 + -0x54) = *piVar13" (pointer_expression "*(int *)(puVar19 + -0x54)" * (cast_expression "(int *)(puVar19 + -0x54)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar19 + -0x54)" ( (binary_expression "puVar19 + -0x54" identifier + number_literal) )))) = (pointer_expression "*piVar13" * identifier)) ;) (if_statement "if (puVar6 < (uint *)0x30) {\n    piVar7 = (int *)piVar3[2];\n    piVar4 = (int *)(((int)puVar6 + 1U) * 4);\n    *piVar7 = *(int *)(*(int *)(pcVar18 + 0x6f5ec) + (int)piVar4);\n    piVar3[1] = (uint)(puVar6 != (uint *)0x0);\n  }\n  else {\n    iVar9 = (((uint)puVar6 >> 6) * 0x17 >> 5) + 5;\n    uVar10 = (uint)puVar6 >> 1;\n    if (*piVar3 < iVar9 * 2) {\n      pcVar18 = *(code **)(pcVar18 + 0x6f65c);\n      *(uint *)(puVar19 + -0x5c) = uVar10;\n      piVar15 = (int *)(*pcVar18)();\n      pcVar21 = *(code **)(puVar19 + -0x68);\n      uVar10 = *(uint *)(puVar19 + -0x5c);\n    }\n    else {\n      piVar15 = (int *)piVar3[2];\n    }\n    *(undefined4 *)(puVar19 + -0x58) = 0;\n    if ((uint)(iVar9 * 8) < 0x7f01) {\n      puVar20 = puVar19 + iVar9 * -8 + -0x80;\n      puVar16 = puVar19 + iVar9 * -8 + -0x68;\n    }\n    else {\n      pcVar18 = *(code **)(pcVar21 + -0x7d50);\n      *(uint *)(puVar19 + -0x5c) = uVar10;\n      puVar16 = (undefined1 *)(*pcVar18)(puVar19 + -0x58);\n      pcVar21 = *(code **)(puVar19 + -0x68);\n      uVar10 = *(uint *)(puVar19 + -0x5c);\n    }\n    piVar11 = (int *)(puVar16 + iVar9 * 4);\n    iVar9 = (**(code **)(pcVar21 + -0x7e94))(puVar16,piVar11,uVar10);\n    if (((uint)puVar6 & 1) == 0) {\n      iVar1 = (**(code **)(*(int *)(puVar19 + -0x68) + -0x7ad4))(piVar11,piVar11);\n      iVar2 = (**(code **)(*(int *)(puVar19 + -0x68) + -0x7d0c))(piVar11,piVar11,puVar16,iVar9);\n      uVar10 = (uint)(iVar1 + iVar2 != 0) + iVar9;\n      pcVar18 = *(code **)(*(int *)(puVar19 + -0x68) + -0x7d8c);\n      piVar11[iVar9] = iVar1 + iVar2;\n      *(int *)(puVar20 + 0x10) = iVar9;\n      iVar9 = iVar9 + uVar10;\n      piVar7 = piVar11;\n      iVar1 = (*pcVar18)(piVar15,piVar11,uVar10,puVar16);\n      pcVar21 = *(code **)(puVar19 + -0x68);\n    }\n    else {\n      uVar22 = (**(code **)(*(int *)(puVar19 + -0x68) + -0x7ad4))(piVar15,puVar16,iVar9,1);\n      *(undefined4 *)(puVar19 + -0x5c) = uVar22;\n      iVar1 = (**(code **)(*(int *)(puVar19 + -0x68) + -0x7d0c))(puVar16,piVar15,piVar11,iVar9);\n      iVar2 = *(int *)(puVar19 + -0x5c);\n      pcVar18 = *(code **)(*(int *)(puVar19 + -0x68) + -0x7b2c);\n      *(int *)(puVar16 + iVar9 * 4) = iVar1 + iVar2;\n      *(uint *)(puVar19 + -0x60) = (uint)(iVar1 + iVar2 != 0) + iVar9;\n      iVar1 = (*pcVar18)(piVar11,piVar15,piVar11,iVar9);\n      iVar2 = *(int *)(puVar19 + -0x60);\n      pcVar18 = *(code **)(*(int *)(puVar19 + -0x68) + -0x7d8c);\n      iVar14 = iVar9 + (*(int *)(puVar19 + -0x5c) - iVar1);\n      piVar11[iVar9] = *(int *)(puVar19 + -0x5c) - iVar1;\n      *(int *)(puVar20 + 0x10) = iVar14;\n      iVar9 = iVar2 + iVar14;\n      iVar1 = (*pcVar18)(piVar15,puVar16,iVar2,piVar11);\n      uVar10 = 0xfffffffe;\n      piVar7 = (int *)0x2;\n      pcVar21 = *(code **)(puVar19 + -0x68);\n      if (((uint)puVar6 & 2) != 0) {\n        piVar7 = (int *)0xfffffffe;\n      }\n      *piVar15 = (int)piVar7 + *piVar15;\n    }\n    piVar4 = *(int **)(puVar19 + -0x58);\n    iVar9 = iVar9 - (uint)(iVar1 == 0);\n    piVar15 = piVar15 + iVar9;\n    param_1 = (uint *)(iVar9 - (uint)(piVar15[-1] == 0));\n    piVar3[1] = (int)param_1;\n    puVar16 = puVar20;\n    if (piVar4 != (int *)0x0) {\n      (**(code **)(pcVar21 + -0x7a2c))();\n      pcVar21 = *(code **)(puVar19 + -0x68);\n    }\n  }" if (parenthesized_expression "(puVar6 < (uint *)0x30)" ( (binary_expression "puVar6 < (uint *)0x30" identifier < (cast_expression "(uint *)0x30" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    piVar7 = (int *)piVar3[2];\n    piVar4 = (int *)(((int)puVar6 + 1U) * 4);\n    *piVar7 = *(int *)(*(int *)(pcVar18 + 0x6f5ec) + (int)piVar4);\n    piVar3[1] = (uint)(puVar6 != (uint *)0x0);\n  }" { (expression_statement "piVar7 = (int *)piVar3[2];" (assignment_expression "piVar7 = (int *)piVar3[2]" identifier = (cast_expression "(int *)piVar3[2]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar3[2]" identifier [ number_literal ]))) ;) (expression_statement "piVar4 = (int *)(((int)puVar6 + 1U) * 4);" (assignment_expression "piVar4 = (int *)(((int)puVar6 + 1U) * 4)" identifier = (cast_expression "(int *)(((int)puVar6 + 1U) * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(((int)puVar6 + 1U) * 4)" ( (binary_expression "((int)puVar6 + 1U) * 4" (parenthesized_expression "((int)puVar6 + 1U)" ( (binary_expression "(int)puVar6 + 1U" (cast_expression "(int)puVar6" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )) * number_literal) )))) ;) (expression_statement "*piVar7 = *(int *)(*(int *)(pcVar18 + 0x6f5ec) + (int)piVar4);" (assignment_expression "*piVar7 = *(int *)(*(int *)(pcVar18 + 0x6f5ec) + (int)piVar4)" (pointer_expression "*piVar7" * identifier) = (pointer_expression "*(int *)(*(int *)(pcVar18 + 0x6f5ec) + (int)piVar4)" * (cast_expression "(int *)(*(int *)(pcVar18 + 0x6f5ec) + (int)piVar4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(pcVar18 + 0x6f5ec) + (int)piVar4)" ( (binary_expression "*(int *)(pcVar18 + 0x6f5ec) + (int)piVar4" (pointer_expression "*(int *)(pcVar18 + 0x6f5ec)" * (cast_expression "(int *)(pcVar18 + 0x6f5ec)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar18 + 0x6f5ec)" ( (binary_expression "pcVar18 + 0x6f5ec" identifier + number_literal) )))) + (cast_expression "(int)piVar4" ( (type_descriptor "int" primitive_type) ) identifier)) ))))) ;) (expression_statement "piVar3[1] = (uint)(puVar6 != (uint *)0x0);" (assignment_expression "piVar3[1] = (uint)(puVar6 != (uint *)0x0)" (subscript_expression "piVar3[1]" identifier [ number_literal ]) = (call_expression "(uint)(puVar6 != (uint *)0x0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(puVar6 != (uint *)0x0)" ( (binary_expression "puVar6 != (uint *)0x0" identifier != (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )))) ;) }) (else_clause "else {\n    iVar9 = (((uint)puVar6 >> 6) * 0x17 >> 5) + 5;\n    uVar10 = (uint)puVar6 >> 1;\n    if (*piVar3 < iVar9 * 2) {\n      pcVar18 = *(code **)(pcVar18 + 0x6f65c);\n      *(uint *)(puVar19 + -0x5c) = uVar10;\n      piVar15 = (int *)(*pcVar18)();\n      pcVar21 = *(code **)(puVar19 + -0x68);\n      uVar10 = *(uint *)(puVar19 + -0x5c);\n    }\n    else {\n      piVar15 = (int *)piVar3[2];\n    }\n    *(undefined4 *)(puVar19 + -0x58) = 0;\n    if ((uint)(iVar9 * 8) < 0x7f01) {\n      puVar20 = puVar19 + iVar9 * -8 + -0x80;\n      puVar16 = puVar19 + iVar9 * -8 + -0x68;\n    }\n    else {\n      pcVar18 = *(code **)(pcVar21 + -0x7d50);\n      *(uint *)(puVar19 + -0x5c) = uVar10;\n      puVar16 = (undefined1 *)(*pcVar18)(puVar19 + -0x58);\n      pcVar21 = *(code **)(puVar19 + -0x68);\n      uVar10 = *(uint *)(puVar19 + -0x5c);\n    }\n    piVar11 = (int *)(puVar16 + iVar9 * 4);\n    iVar9 = (**(code **)(pcVar21 + -0x7e94))(puVar16,piVar11,uVar10);\n    if (((uint)puVar6 & 1) == 0) {\n      iVar1 = (**(code **)(*(int *)(puVar19 + -0x68) + -0x7ad4))(piVar11,piVar11);\n      iVar2 = (**(code **)(*(int *)(puVar19 + -0x68) + -0x7d0c))(piVar11,piVar11,puVar16,iVar9);\n      uVar10 = (uint)(iVar1 + iVar2 != 0) + iVar9;\n      pcVar18 = *(code **)(*(int *)(puVar19 + -0x68) + -0x7d8c);\n      piVar11[iVar9] = iVar1 + iVar2;\n      *(int *)(puVar20 + 0x10) = iVar9;\n      iVar9 = iVar9 + uVar10;\n      piVar7 = piVar11;\n      iVar1 = (*pcVar18)(piVar15,piVar11,uVar10,puVar16);\n      pcVar21 = *(code **)(puVar19 + -0x68);\n    }\n    else {\n      uVar22 = (**(code **)(*(int *)(puVar19 + -0x68) + -0x7ad4))(piVar15,puVar16,iVar9,1);\n      *(undefined4 *)(puVar19 + -0x5c) = uVar22;\n      iVar1 = (**(code **)(*(int *)(puVar19 + -0x68) + -0x7d0c))(puVar16,piVar15,piVar11,iVar9);\n      iVar2 = *(int *)(puVar19 + -0x5c);\n      pcVar18 = *(code **)(*(int *)(puVar19 + -0x68) + -0x7b2c);\n      *(int *)(puVar16 + iVar9 * 4) = iVar1 + iVar2;\n      *(uint *)(puVar19 + -0x60) = (uint)(iVar1 + iVar2 != 0) + iVar9;\n      iVar1 = (*pcVar18)(piVar11,piVar15,piVar11,iVar9);\n      iVar2 = *(int *)(puVar19 + -0x60);\n      pcVar18 = *(code **)(*(int *)(puVar19 + -0x68) + -0x7d8c);\n      iVar14 = iVar9 + (*(int *)(puVar19 + -0x5c) - iVar1);\n      piVar11[iVar9] = *(int *)(puVar19 + -0x5c) - iVar1;\n      *(int *)(puVar20 + 0x10) = iVar14;\n      iVar9 = iVar2 + iVar14;\n      iVar1 = (*pcVar18)(piVar15,puVar16,iVar2,piVar11);\n      uVar10 = 0xfffffffe;\n      piVar7 = (int *)0x2;\n      pcVar21 = *(code **)(puVar19 + -0x68);\n      if (((uint)puVar6 & 2) != 0) {\n        piVar7 = (int *)0xfffffffe;\n      }\n      *piVar15 = (int)piVar7 + *piVar15;\n    }\n    piVar4 = *(int **)(puVar19 + -0x58);\n    iVar9 = iVar9 - (uint)(iVar1 == 0);\n    piVar15 = piVar15 + iVar9;\n    param_1 = (uint *)(iVar9 - (uint)(piVar15[-1] == 0));\n    piVar3[1] = (int)param_1;\n    puVar16 = puVar20;\n    if (piVar4 != (int *)0x0) {\n      (**(code **)(pcVar21 + -0x7a2c))();\n      pcVar21 = *(code **)(puVar19 + -0x68);\n    }\n  }" else (compound_statement "{\n    iVar9 = (((uint)puVar6 >> 6) * 0x17 >> 5) + 5;\n    uVar10 = (uint)puVar6 >> 1;\n    if (*piVar3 < iVar9 * 2) {\n      pcVar18 = *(code **)(pcVar18 + 0x6f65c);\n      *(uint *)(puVar19 + -0x5c) = uVar10;\n      piVar15 = (int *)(*pcVar18)();\n      pcVar21 = *(code **)(puVar19 + -0x68);\n      uVar10 = *(uint *)(puVar19 + -0x5c);\n    }\n    else {\n      piVar15 = (int *)piVar3[2];\n    }\n    *(undefined4 *)(puVar19 + -0x58) = 0;\n    if ((uint)(iVar9 * 8) < 0x7f01) {\n      puVar20 = puVar19 + iVar9 * -8 + -0x80;\n      puVar16 = puVar19 + iVar9 * -8 + -0x68;\n    }\n    else {\n      pcVar18 = *(code **)(pcVar21 + -0x7d50);\n      *(uint *)(puVar19 + -0x5c) = uVar10;\n      puVar16 = (undefined1 *)(*pcVar18)(puVar19 + -0x58);\n      pcVar21 = *(code **)(puVar19 + -0x68);\n      uVar10 = *(uint *)(puVar19 + -0x5c);\n    }\n    piVar11 = (int *)(puVar16 + iVar9 * 4);\n    iVar9 = (**(code **)(pcVar21 + -0x7e94))(puVar16,piVar11,uVar10);\n    if (((uint)puVar6 & 1) == 0) {\n      iVar1 = (**(code **)(*(int *)(puVar19 + -0x68) + -0x7ad4))(piVar11,piVar11);\n      iVar2 = (**(code **)(*(int *)(puVar19 + -0x68) + -0x7d0c))(piVar11,piVar11,puVar16,iVar9);\n      uVar10 = (uint)(iVar1 + iVar2 != 0) + iVar9;\n      pcVar18 = *(code **)(*(int *)(puVar19 + -0x68) + -0x7d8c);\n      piVar11[iVar9] = iVar1 + iVar2;\n      *(int *)(puVar20 + 0x10) = iVar9;\n      iVar9 = iVar9 + uVar10;\n      piVar7 = piVar11;\n      iVar1 = (*pcVar18)(piVar15,piVar11,uVar10,puVar16);\n      pcVar21 = *(code **)(puVar19 + -0x68);\n    }\n    else {\n      uVar22 = (**(code **)(*(int *)(puVar19 + -0x68) + -0x7ad4))(piVar15,puVar16,iVar9,1);\n      *(undefined4 *)(puVar19 + -0x5c) = uVar22;\n      iVar1 = (**(code **)(*(int *)(puVar19 + -0x68) + -0x7d0c))(puVar16,piVar15,piVar11,iVar9);\n      iVar2 = *(int *)(puVar19 + -0x5c);\n      pcVar18 = *(code **)(*(int *)(puVar19 + -0x68) + -0x7b2c);\n      *(int *)(puVar16 + iVar9 * 4) = iVar1 + iVar2;\n      *(uint *)(puVar19 + -0x60) = (uint)(iVar1 + iVar2 != 0) + iVar9;\n      iVar1 = (*pcVar18)(piVar11,piVar15,piVar11,iVar9);\n      iVar2 = *(int *)(puVar19 + -0x60);\n      pcVar18 = *(code **)(*(int *)(puVar19 + -0x68) + -0x7d8c);\n      iVar14 = iVar9 + (*(int *)(puVar19 + -0x5c) - iVar1);\n      piVar11[iVar9] = *(int *)(puVar19 + -0x5c) - iVar1;\n      *(int *)(puVar20 + 0x10) = iVar14;\n      iVar9 = iVar2 + iVar14;\n      iVar1 = (*pcVar18)(piVar15,puVar16,iVar2,piVar11);\n      uVar10 = 0xfffffffe;\n      piVar7 = (int *)0x2;\n      pcVar21 = *(code **)(puVar19 + -0x68);\n      if (((uint)puVar6 & 2) != 0) {\n        piVar7 = (int *)0xfffffffe;\n      }\n      *piVar15 = (int)piVar7 + *piVar15;\n    }\n    piVar4 = *(int **)(puVar19 + -0x58);\n    iVar9 = iVar9 - (uint)(iVar1 == 0);\n    piVar15 = piVar15 + iVar9;\n    param_1 = (uint *)(iVar9 - (uint)(piVar15[-1] == 0));\n    piVar3[1] = (int)param_1;\n    puVar16 = puVar20;\n    if (piVar4 != (int *)0x0) {\n      (**(code **)(pcVar21 + -0x7a2c))();\n      pcVar21 = *(code **)(puVar19 + -0x68);\n    }\n  }" { (expression_statement "iVar9 = (((uint)puVar6 >> 6) * 0x17 >> 5) + 5;" (assignment_expression "iVar9 = (((uint)puVar6 >> 6) * 0x17 >> 5) + 5" identifier = (binary_expression "(((uint)puVar6 >> 6) * 0x17 >> 5) + 5" (parenthesized_expression "(((uint)puVar6 >> 6) * 0x17 >> 5)" ( (binary_expression "((uint)puVar6 >> 6) * 0x17 >> 5" (binary_expression "((uint)puVar6 >> 6) * 0x17" (parenthesized_expression "((uint)puVar6 >> 6)" ( (binary_expression "(uint)puVar6 >> 6" (cast_expression "(uint)puVar6" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) )) * number_literal) >> number_literal) )) + number_literal)) ;) (expression_statement "uVar10 = (uint)puVar6 >> 1;" (assignment_expression "uVar10 = (uint)puVar6 >> 1" identifier = (binary_expression "(uint)puVar6 >> 1" (cast_expression "(uint)puVar6" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal)) ;) (if_statement "if (*piVar3 < iVar9 * 2) {\n      pcVar18 = *(code **)(pcVar18 + 0x6f65c);\n      *(uint *)(puVar19 + -0x5c) = uVar10;\n      piVar15 = (int *)(*pcVar18)();\n      pcVar21 = *(code **)(puVar19 + -0x68);\n      uVar10 = *(uint *)(puVar19 + -0x5c);\n    }\n    else {\n      piVar15 = (int *)piVar3[2];\n    }" if (parenthesized_expression "(*piVar3 < iVar9 * 2)" ( (binary_expression "*piVar3 < iVar9 * 2" (pointer_expression "*piVar3" * identifier) < (binary_expression "iVar9 * 2" identifier * number_literal)) )) (compound_statement "{\n      pcVar18 = *(code **)(pcVar18 + 0x6f65c);\n      *(uint *)(puVar19 + -0x5c) = uVar10;\n      piVar15 = (int *)(*pcVar18)();\n      pcVar21 = *(code **)(puVar19 + -0x68);\n      uVar10 = *(uint *)(puVar19 + -0x5c);\n    }" { (expression_statement "pcVar18 = *(code **)(pcVar18 + 0x6f65c);" (assignment_expression "pcVar18 = *(code **)(pcVar18 + 0x6f65c)" identifier = (pointer_expression "*(code **)(pcVar18 + 0x6f65c)" * (cast_expression "(code **)(pcVar18 + 0x6f65c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar18 + 0x6f65c)" ( (binary_expression "pcVar18 + 0x6f65c" identifier + number_literal) ))))) ;) (expression_statement "*(uint *)(puVar19 + -0x5c) = uVar10;" (assignment_expression "*(uint *)(puVar19 + -0x5c) = uVar10" (pointer_expression "*(uint *)(puVar19 + -0x5c)" * (cast_expression "(uint *)(puVar19 + -0x5c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar19 + -0x5c)" ( (binary_expression "puVar19 + -0x5c" identifier + number_literal) )))) = identifier) ;) (expression_statement "piVar15 = (int *)(*pcVar18)();" (assignment_expression "piVar15 = (int *)(*pcVar18)()" identifier = (cast_expression "(int *)(*pcVar18)()" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "(*pcVar18)()" (parenthesized_expression "(*pcVar18)" ( (pointer_expression "*pcVar18" * identifier) )) (argument_list "()" ( ))))) ;) (expression_statement "pcVar21 = *(code **)(puVar19 + -0x68);" (assignment_expression "pcVar21 = *(code **)(puVar19 + -0x68)" identifier = (pointer_expression "*(code **)(puVar19 + -0x68)" * (cast_expression "(code **)(puVar19 + -0x68)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar19 + -0x68)" ( (binary_expression "puVar19 + -0x68" identifier + number_literal) ))))) ;) (expression_statement "uVar10 = *(uint *)(puVar19 + -0x5c);" (assignment_expression "uVar10 = *(uint *)(puVar19 + -0x5c)" identifier = (pointer_expression "*(uint *)(puVar19 + -0x5c)" * (cast_expression "(uint *)(puVar19 + -0x5c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar19 + -0x5c)" ( (binary_expression "puVar19 + -0x5c" identifier + number_literal) ))))) ;) }) (else_clause "else {\n      piVar15 = (int *)piVar3[2];\n    }" else (compound_statement "{\n      piVar15 = (int *)piVar3[2];\n    }" { (expression_statement "piVar15 = (int *)piVar3[2];" (assignment_expression "piVar15 = (int *)piVar3[2]" identifier = (cast_expression "(int *)piVar3[2]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar3[2]" identifier [ number_literal ]))) ;) }))) (expression_statement "*(undefined4 *)(puVar19 + -0x58) = 0;" (assignment_expression "*(undefined4 *)(puVar19 + -0x58) = 0" (pointer_expression "*(undefined4 *)(puVar19 + -0x58)" * (cast_expression "(undefined4 *)(puVar19 + -0x58)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar19 + -0x58)" ( (binary_expression "puVar19 + -0x58" identifier + number_literal) )))) = number_literal) ;) (if_statement "if ((uint)(iVar9 * 8) < 0x7f01) {\n      puVar20 = puVar19 + iVar9 * -8 + -0x80;\n      puVar16 = puVar19 + iVar9 * -8 + -0x68;\n    }\n    else {\n      pcVar18 = *(code **)(pcVar21 + -0x7d50);\n      *(uint *)(puVar19 + -0x5c) = uVar10;\n      puVar16 = (undefined1 *)(*pcVar18)(puVar19 + -0x58);\n      pcVar21 = *(code **)(puVar19 + -0x68);\n      uVar10 = *(uint *)(puVar19 + -0x5c);\n    }" if (parenthesized_expression "((uint)(iVar9 * 8) < 0x7f01)" ( (binary_expression "(uint)(iVar9 * 8) < 0x7f01" (call_expression "(uint)(iVar9 * 8)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(iVar9 * 8)" ( (binary_expression "iVar9 * 8" identifier * number_literal) ))) < number_literal) )) (compound_statement "{\n      puVar20 = puVar19 + iVar9 * -8 + -0x80;\n      puVar16 = puVar19 + iVar9 * -8 + -0x68;\n    }" { (expression_statement "puVar20 = puVar19 + iVar9 * -8 + -0x80;" (assignment_expression "puVar20 = puVar19 + iVar9 * -8 + -0x80" identifier = (binary_expression "puVar19 + iVar9 * -8 + -0x80" (binary_expression "puVar19 + iVar9 * -8" identifier + (binary_expression "iVar9 * -8" identifier * number_literal)) + number_literal)) ;) (expression_statement "puVar16 = puVar19 + iVar9 * -8 + -0x68;" (assignment_expression "puVar16 = puVar19 + iVar9 * -8 + -0x68" identifier = (binary_expression "puVar19 + iVar9 * -8 + -0x68" (binary_expression "puVar19 + iVar9 * -8" identifier + (binary_expression "iVar9 * -8" identifier * number_literal)) + number_literal)) ;) }) (else_clause "else {\n      pcVar18 = *(code **)(pcVar21 + -0x7d50);\n      *(uint *)(puVar19 + -0x5c) = uVar10;\n      puVar16 = (undefined1 *)(*pcVar18)(puVar19 + -0x58);\n      pcVar21 = *(code **)(puVar19 + -0x68);\n      uVar10 = *(uint *)(puVar19 + -0x5c);\n    }" else (compound_statement "{\n      pcVar18 = *(code **)(pcVar21 + -0x7d50);\n      *(uint *)(puVar19 + -0x5c) = uVar10;\n      puVar16 = (undefined1 *)(*pcVar18)(puVar19 + -0x58);\n      pcVar21 = *(code **)(puVar19 + -0x68);\n      uVar10 = *(uint *)(puVar19 + -0x5c);\n    }" { (expression_statement "pcVar18 = *(code **)(pcVar21 + -0x7d50);" (assignment_expression "pcVar18 = *(code **)(pcVar21 + -0x7d50)" identifier = (pointer_expression "*(code **)(pcVar21 + -0x7d50)" * (cast_expression "(code **)(pcVar21 + -0x7d50)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar21 + -0x7d50)" ( (binary_expression "pcVar21 + -0x7d50" identifier + number_literal) ))))) ;) (expression_statement "*(uint *)(puVar19 + -0x5c) = uVar10;" (assignment_expression "*(uint *)(puVar19 + -0x5c) = uVar10" (pointer_expression "*(uint *)(puVar19 + -0x5c)" * (cast_expression "(uint *)(puVar19 + -0x5c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar19 + -0x5c)" ( (binary_expression "puVar19 + -0x5c" identifier + number_literal) )))) = identifier) ;) (expression_statement "puVar16 = (undefined1 *)(*pcVar18)(puVar19 + -0x58);" (assignment_expression "puVar16 = (undefined1 *)(*pcVar18)(puVar19 + -0x58)" identifier = (cast_expression "(undefined1 *)(*pcVar18)(puVar19 + -0x58)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(*pcVar18)(puVar19 + -0x58)" (parenthesized_expression "(*pcVar18)" ( (pointer_expression "*pcVar18" * identifier) )) (argument_list "(puVar19 + -0x58)" ( (binary_expression "puVar19 + -0x58" identifier + number_literal) ))))) ;) (expression_statement "pcVar21 = *(code **)(puVar19 + -0x68);" (assignment_expression "pcVar21 = *(code **)(puVar19 + -0x68)" identifier = (pointer_expression "*(code **)(puVar19 + -0x68)" * (cast_expression "(code **)(puVar19 + -0x68)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar19 + -0x68)" ( (binary_expression "puVar19 + -0x68" identifier + number_literal) ))))) ;) (expression_statement "uVar10 = *(uint *)(puVar19 + -0x5c);" (assignment_expression "uVar10 = *(uint *)(puVar19 + -0x5c)" identifier = (pointer_expression "*(uint *)(puVar19 + -0x5c)" * (cast_expression "(uint *)(puVar19 + -0x5c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar19 + -0x5c)" ( (binary_expression "puVar19 + -0x5c" identifier + number_literal) ))))) ;) }))) (expression_statement "piVar11 = (int *)(puVar16 + iVar9 * 4);" (assignment_expression "piVar11 = (int *)(puVar16 + iVar9 * 4)" identifier = (cast_expression "(int *)(puVar16 + iVar9 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + iVar9 * 4)" ( (binary_expression "puVar16 + iVar9 * 4" identifier + (binary_expression "iVar9 * 4" identifier * number_literal)) )))) ;) (expression_statement "iVar9 = (**(code **)(pcVar21 + -0x7e94))(puVar16,piVar11,uVar10);" (assignment_expression "iVar9 = (**(code **)(pcVar21 + -0x7e94))(puVar16,piVar11,uVar10)" identifier = (call_expression "(**(code **)(pcVar21 + -0x7e94))(puVar16,piVar11,uVar10)" (parenthesized_expression "(**(code **)(pcVar21 + -0x7e94))" ( (pointer_expression "**(code **)(pcVar21 + -0x7e94)" * (pointer_expression "*(code **)(pcVar21 + -0x7e94)" * (cast_expression "(code **)(pcVar21 + -0x7e94)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar21 + -0x7e94)" ( (binary_expression "pcVar21 + -0x7e94" identifier + number_literal) ))))) )) (argument_list "(puVar16,piVar11,uVar10)" ( identifier , identifier , identifier )))) ;) (if_statement "if (((uint)puVar6 & 1) == 0) {\n      iVar1 = (**(code **)(*(int *)(puVar19 + -0x68) + -0x7ad4))(piVar11,piVar11);\n      iVar2 = (**(code **)(*(int *)(puVar19 + -0x68) + -0x7d0c))(piVar11,piVar11,puVar16,iVar9);\n      uVar10 = (uint)(iVar1 + iVar2 != 0) + iVar9;\n      pcVar18 = *(code **)(*(int *)(puVar19 + -0x68) + -0x7d8c);\n      piVar11[iVar9] = iVar1 + iVar2;\n      *(int *)(puVar20 + 0x10) = iVar9;\n      iVar9 = iVar9 + uVar10;\n      piVar7 = piVar11;\n      iVar1 = (*pcVar18)(piVar15,piVar11,uVar10,puVar16);\n      pcVar21 = *(code **)(puVar19 + -0x68);\n    }\n    else {\n      uVar22 = (**(code **)(*(int *)(puVar19 + -0x68) + -0x7ad4))(piVar15,puVar16,iVar9,1);\n      *(undefined4 *)(puVar19 + -0x5c) = uVar22;\n      iVar1 = (**(code **)(*(int *)(puVar19 + -0x68) + -0x7d0c))(puVar16,piVar15,piVar11,iVar9);\n      iVar2 = *(int *)(puVar19 + -0x5c);\n      pcVar18 = *(code **)(*(int *)(puVar19 + -0x68) + -0x7b2c);\n      *(int *)(puVar16 + iVar9 * 4) = iVar1 + iVar2;\n      *(uint *)(puVar19 + -0x60) = (uint)(iVar1 + iVar2 != 0) + iVar9;\n      iVar1 = (*pcVar18)(piVar11,piVar15,piVar11,iVar9);\n      iVar2 = *(int *)(puVar19 + -0x60);\n      pcVar18 = *(code **)(*(int *)(puVar19 + -0x68) + -0x7d8c);\n      iVar14 = iVar9 + (*(int *)(puVar19 + -0x5c) - iVar1);\n      piVar11[iVar9] = *(int *)(puVar19 + -0x5c) - iVar1;\n      *(int *)(puVar20 + 0x10) = iVar14;\n      iVar9 = iVar2 + iVar14;\n      iVar1 = (*pcVar18)(piVar15,puVar16,iVar2,piVar11);\n      uVar10 = 0xfffffffe;\n      piVar7 = (int *)0x2;\n      pcVar21 = *(code **)(puVar19 + -0x68);\n      if (((uint)puVar6 & 2) != 0) {\n        piVar7 = (int *)0xfffffffe;\n      }\n      *piVar15 = (int)piVar7 + *piVar15;\n    }" if (parenthesized_expression "(((uint)puVar6 & 1) == 0)" ( (binary_expression "((uint)puVar6 & 1) == 0" (parenthesized_expression "((uint)puVar6 & 1)" ( (binary_expression "(uint)puVar6 & 1" (cast_expression "(uint)puVar6" ( (type_descriptor "uint" type_identifier) ) identifier) & number_literal) )) == number_literal) )) (compound_statement "{\n      iVar1 = (**(code **)(*(int *)(puVar19 + -0x68) + -0x7ad4))(piVar11,piVar11);\n      iVar2 = (**(code **)(*(int *)(puVar19 + -0x68) + -0x7d0c))(piVar11,piVar11,puVar16,iVar9);\n      uVar10 = (uint)(iVar1 + iVar2 != 0) + iVar9;\n      pcVar18 = *(code **)(*(int *)(puVar19 + -0x68) + -0x7d8c);\n      piVar11[iVar9] = iVar1 + iVar2;\n      *(int *)(puVar20 + 0x10) = iVar9;\n      iVar9 = iVar9 + uVar10;\n      piVar7 = piVar11;\n      iVar1 = (*pcVar18)(piVar15,piVar11,uVar10,puVar16);\n      pcVar21 = *(code **)(puVar19 + -0x68);\n    }" { (expression_statement "iVar1 = (**(code **)(*(int *)(puVar19 + -0x68) + -0x7ad4))(piVar11,piVar11);" (assignment_expression "iVar1 = (**(code **)(*(int *)(puVar19 + -0x68) + -0x7ad4))(piVar11,piVar11)" identifier = (call_expression "(**(code **)(*(int *)(puVar19 + -0x68) + -0x7ad4))(piVar11,piVar11)" (parenthesized_expression "(**(code **)(*(int *)(puVar19 + -0x68) + -0x7ad4))" ( (pointer_expression "**(code **)(*(int *)(puVar19 + -0x68) + -0x7ad4)" * (pointer_expression "*(code **)(*(int *)(puVar19 + -0x68) + -0x7ad4)" * (cast_expression "(code **)(*(int *)(puVar19 + -0x68) + -0x7ad4)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)(puVar19 + -0x68) + -0x7ad4)" ( (binary_expression "*(int *)(puVar19 + -0x68) + -0x7ad4" (pointer_expression "*(int *)(puVar19 + -0x68)" * (cast_expression "(int *)(puVar19 + -0x68)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar19 + -0x68)" ( (binary_expression "puVar19 + -0x68" identifier + number_literal) )))) + number_literal) ))))) )) (argument_list "(piVar11,piVar11)" ( identifier , identifier )))) ;) (expression_statement "iVar2 = (**(code **)(*(int *)(puVar19 + -0x68) + -0x7d0c))(piVar11,piVar11,puVar16,iVar9);" (assignment_expression "iVar2 = (**(code **)(*(int *)(puVar19 + -0x68) + -0x7d0c))(piVar11,piVar11,puVar16,iVar9)" identifier = (call_expression "(**(code **)(*(int *)(puVar19 + -0x68) + -0x7d0c))(piVar11,piVar11,puVar16,iVar9)" (parenthesized_expression "(**(code **)(*(int *)(puVar19 + -0x68) + -0x7d0c))" ( (pointer_expression "**(code **)(*(int *)(puVar19 + -0x68) + -0x7d0c)" * (pointer_expression "*(code **)(*(int *)(puVar19 + -0x68) + -0x7d0c)" * (cast_expression "(code **)(*(int *)(puVar19 + -0x68) + -0x7d0c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)(puVar19 + -0x68) + -0x7d0c)" ( (binary_expression "*(int *)(puVar19 + -0x68) + -0x7d0c" (pointer_expression "*(int *)(puVar19 + -0x68)" * (cast_expression "(int *)(puVar19 + -0x68)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar19 + -0x68)" ( (binary_expression "puVar19 + -0x68" identifier + number_literal) )))) + number_literal) ))))) )) (argument_list "(piVar11,piVar11,puVar16,iVar9)" ( identifier , identifier , identifier , identifier )))) ;) (expression_statement "uVar10 = (uint)(iVar1 + iVar2 != 0) + iVar9;" (assignment_expression "uVar10 = (uint)(iVar1 + iVar2 != 0) + iVar9" identifier = (binary_expression "(uint)(iVar1 + iVar2 != 0) + iVar9" (call_expression "(uint)(iVar1 + iVar2 != 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(iVar1 + iVar2 != 0)" ( (binary_expression "iVar1 + iVar2 != 0" (binary_expression "iVar1 + iVar2" identifier + identifier) != number_literal) ))) + identifier)) ;) (expression_statement "pcVar18 = *(code **)(*(int *)(puVar19 + -0x68) + -0x7d8c);" (assignment_expression "pcVar18 = *(code **)(*(int *)(puVar19 + -0x68) + -0x7d8c)" identifier = (pointer_expression "*(code **)(*(int *)(puVar19 + -0x68) + -0x7d8c)" * (cast_expression "(code **)(*(int *)(puVar19 + -0x68) + -0x7d8c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)(puVar19 + -0x68) + -0x7d8c)" ( (binary_expression "*(int *)(puVar19 + -0x68) + -0x7d8c" (pointer_expression "*(int *)(puVar19 + -0x68)" * (cast_expression "(int *)(puVar19 + -0x68)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar19 + -0x68)" ( (binary_expression "puVar19 + -0x68" identifier + number_literal) )))) + number_literal) ))))) ;) (expression_statement "piVar11[iVar9] = iVar1 + iVar2;" (assignment_expression "piVar11[iVar9] = iVar1 + iVar2" (subscript_expression "piVar11[iVar9]" identifier [ identifier ]) = (binary_expression "iVar1 + iVar2" identifier + identifier)) ;) (expression_statement "*(int *)(puVar20 + 0x10) = iVar9;" (assignment_expression "*(int *)(puVar20 + 0x10) = iVar9" (pointer_expression "*(int *)(puVar20 + 0x10)" * (cast_expression "(int *)(puVar20 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar20 + 0x10)" ( (binary_expression "puVar20 + 0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "iVar9 = iVar9 + uVar10;" (assignment_expression "iVar9 = iVar9 + uVar10" identifier = (binary_expression "iVar9 + uVar10" identifier + identifier)) ;) (expression_statement "piVar7 = piVar11;" (assignment_expression "piVar7 = piVar11" identifier = identifier) ;) (expression_statement "iVar1 = (*pcVar18)(piVar15,piVar11,uVar10,puVar16);" (assignment_expression "iVar1 = (*pcVar18)(piVar15,piVar11,uVar10,puVar16)" identifier = (call_expression "(*pcVar18)(piVar15,piVar11,uVar10,puVar16)" (parenthesized_expression "(*pcVar18)" ( (pointer_expression "*pcVar18" * identifier) )) (argument_list "(piVar15,piVar11,uVar10,puVar16)" ( identifier , identifier , identifier , identifier )))) ;) (expression_statement "pcVar21 = *(code **)(puVar19 + -0x68);" (assignment_expression "pcVar21 = *(code **)(puVar19 + -0x68)" identifier = (pointer_expression "*(code **)(puVar19 + -0x68)" * (cast_expression "(code **)(puVar19 + -0x68)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar19 + -0x68)" ( (binary_expression "puVar19 + -0x68" identifier + number_literal) ))))) ;) }) (else_clause "else {\n      uVar22 = (**(code **)(*(int *)(puVar19 + -0x68) + -0x7ad4))(piVar15,puVar16,iVar9,1);\n      *(undefined4 *)(puVar19 + -0x5c) = uVar22;\n      iVar1 = (**(code **)(*(int *)(puVar19 + -0x68) + -0x7d0c))(puVar16,piVar15,piVar11,iVar9);\n      iVar2 = *(int *)(puVar19 + -0x5c);\n      pcVar18 = *(code **)(*(int *)(puVar19 + -0x68) + -0x7b2c);\n      *(int *)(puVar16 + iVar9 * 4) = iVar1 + iVar2;\n      *(uint *)(puVar19 + -0x60) = (uint)(iVar1 + iVar2 != 0) + iVar9;\n      iVar1 = (*pcVar18)(piVar11,piVar15,piVar11,iVar9);\n      iVar2 = *(int *)(puVar19 + -0x60);\n      pcVar18 = *(code **)(*(int *)(puVar19 + -0x68) + -0x7d8c);\n      iVar14 = iVar9 + (*(int *)(puVar19 + -0x5c) - iVar1);\n      piVar11[iVar9] = *(int *)(puVar19 + -0x5c) - iVar1;\n      *(int *)(puVar20 + 0x10) = iVar14;\n      iVar9 = iVar2 + iVar14;\n      iVar1 = (*pcVar18)(piVar15,puVar16,iVar2,piVar11);\n      uVar10 = 0xfffffffe;\n      piVar7 = (int *)0x2;\n      pcVar21 = *(code **)(puVar19 + -0x68);\n      if (((uint)puVar6 & 2) != 0) {\n        piVar7 = (int *)0xfffffffe;\n      }\n      *piVar15 = (int)piVar7 + *piVar15;\n    }" else (compound_statement "{\n      uVar22 = (**(code **)(*(int *)(puVar19 + -0x68) + -0x7ad4))(piVar15,puVar16,iVar9,1);\n      *(undefined4 *)(puVar19 + -0x5c) = uVar22;\n      iVar1 = (**(code **)(*(int *)(puVar19 + -0x68) + -0x7d0c))(puVar16,piVar15,piVar11,iVar9);\n      iVar2 = *(int *)(puVar19 + -0x5c);\n      pcVar18 = *(code **)(*(int *)(puVar19 + -0x68) + -0x7b2c);\n      *(int *)(puVar16 + iVar9 * 4) = iVar1 + iVar2;\n      *(uint *)(puVar19 + -0x60) = (uint)(iVar1 + iVar2 != 0) + iVar9;\n      iVar1 = (*pcVar18)(piVar11,piVar15,piVar11,iVar9);\n      iVar2 = *(int *)(puVar19 + -0x60);\n      pcVar18 = *(code **)(*(int *)(puVar19 + -0x68) + -0x7d8c);\n      iVar14 = iVar9 + (*(int *)(puVar19 + -0x5c) - iVar1);\n      piVar11[iVar9] = *(int *)(puVar19 + -0x5c) - iVar1;\n      *(int *)(puVar20 + 0x10) = iVar14;\n      iVar9 = iVar2 + iVar14;\n      iVar1 = (*pcVar18)(piVar15,puVar16,iVar2,piVar11);\n      uVar10 = 0xfffffffe;\n      piVar7 = (int *)0x2;\n      pcVar21 = *(code **)(puVar19 + -0x68);\n      if (((uint)puVar6 & 2) != 0) {\n        piVar7 = (int *)0xfffffffe;\n      }\n      *piVar15 = (int)piVar7 + *piVar15;\n    }" { (expression_statement "uVar22 = (**(code **)(*(int *)(puVar19 + -0x68) + -0x7ad4))(piVar15,puVar16,iVar9,1);" (assignment_expression "uVar22 = (**(code **)(*(int *)(puVar19 + -0x68) + -0x7ad4))(piVar15,puVar16,iVar9,1)" identifier = (call_expression "(**(code **)(*(int *)(puVar19 + -0x68) + -0x7ad4))(piVar15,puVar16,iVar9,1)" (parenthesized_expression "(**(code **)(*(int *)(puVar19 + -0x68) + -0x7ad4))" ( (pointer_expression "**(code **)(*(int *)(puVar19 + -0x68) + -0x7ad4)" * (pointer_expression "*(code **)(*(int *)(puVar19 + -0x68) + -0x7ad4)" * (cast_expression "(code **)(*(int *)(puVar19 + -0x68) + -0x7ad4)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)(puVar19 + -0x68) + -0x7ad4)" ( (binary_expression "*(int *)(puVar19 + -0x68) + -0x7ad4" (pointer_expression "*(int *)(puVar19 + -0x68)" * (cast_expression "(int *)(puVar19 + -0x68)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar19 + -0x68)" ( (binary_expression "puVar19 + -0x68" identifier + number_literal) )))) + number_literal) ))))) )) (argument_list "(piVar15,puVar16,iVar9,1)" ( identifier , identifier , identifier , number_literal )))) ;) (expression_statement "*(undefined4 *)(puVar19 + -0x5c) = uVar22;" (assignment_expression "*(undefined4 *)(puVar19 + -0x5c) = uVar22" (pointer_expression "*(undefined4 *)(puVar19 + -0x5c)" * (cast_expression "(undefined4 *)(puVar19 + -0x5c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar19 + -0x5c)" ( (binary_expression "puVar19 + -0x5c" identifier + number_literal) )))) = identifier) ;) (expression_statement "iVar1 = (**(code **)(*(int *)(puVar19 + -0x68) + -0x7d0c))(puVar16,piVar15,piVar11,iVar9);" (assignment_expression "iVar1 = (**(code **)(*(int *)(puVar19 + -0x68) + -0x7d0c))(puVar16,piVar15,piVar11,iVar9)" identifier = (call_expression "(**(code **)(*(int *)(puVar19 + -0x68) + -0x7d0c))(puVar16,piVar15,piVar11,iVar9)" (parenthesized_expression "(**(code **)(*(int *)(puVar19 + -0x68) + -0x7d0c))" ( (pointer_expression "**(code **)(*(int *)(puVar19 + -0x68) + -0x7d0c)" * (pointer_expression "*(code **)(*(int *)(puVar19 + -0x68) + -0x7d0c)" * (cast_expression "(code **)(*(int *)(puVar19 + -0x68) + -0x7d0c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)(puVar19 + -0x68) + -0x7d0c)" ( (binary_expression "*(int *)(puVar19 + -0x68) + -0x7d0c" (pointer_expression "*(int *)(puVar19 + -0x68)" * (cast_expression "(int *)(puVar19 + -0x68)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar19 + -0x68)" ( (binary_expression "puVar19 + -0x68" identifier + number_literal) )))) + number_literal) ))))) )) (argument_list "(puVar16,piVar15,piVar11,iVar9)" ( identifier , identifier , identifier , identifier )))) ;) (expression_statement "iVar2 = *(int *)(puVar19 + -0x5c);" (assignment_expression "iVar2 = *(int *)(puVar19 + -0x5c)" identifier = (pointer_expression "*(int *)(puVar19 + -0x5c)" * (cast_expression "(int *)(puVar19 + -0x5c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar19 + -0x5c)" ( (binary_expression "puVar19 + -0x5c" identifier + number_literal) ))))) ;) (expression_statement "pcVar18 = *(code **)(*(int *)(puVar19 + -0x68) + -0x7b2c);" (assignment_expression "pcVar18 = *(code **)(*(int *)(puVar19 + -0x68) + -0x7b2c)" identifier = (pointer_expression "*(code **)(*(int *)(puVar19 + -0x68) + -0x7b2c)" * (cast_expression "(code **)(*(int *)(puVar19 + -0x68) + -0x7b2c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)(puVar19 + -0x68) + -0x7b2c)" ( (binary_expression "*(int *)(puVar19 + -0x68) + -0x7b2c" (pointer_expression "*(int *)(puVar19 + -0x68)" * (cast_expression "(int *)(puVar19 + -0x68)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar19 + -0x68)" ( (binary_expression "puVar19 + -0x68" identifier + number_literal) )))) + number_literal) ))))) ;) (expression_statement "*(int *)(puVar16 + iVar9 * 4) = iVar1 + iVar2;" (assignment_expression "*(int *)(puVar16 + iVar9 * 4) = iVar1 + iVar2" (pointer_expression "*(int *)(puVar16 + iVar9 * 4)" * (cast_expression "(int *)(puVar16 + iVar9 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + iVar9 * 4)" ( (binary_expression "puVar16 + iVar9 * 4" identifier + (binary_expression "iVar9 * 4" identifier * number_literal)) )))) = (binary_expression "iVar1 + iVar2" identifier + identifier)) ;) (expression_statement "*(uint *)(puVar19 + -0x60) = (uint)(iVar1 + iVar2 != 0) + iVar9;" (assignment_expression "*(uint *)(puVar19 + -0x60) = (uint)(iVar1 + iVar2 != 0) + iVar9" (pointer_expression "*(uint *)(puVar19 + -0x60)" * (cast_expression "(uint *)(puVar19 + -0x60)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar19 + -0x60)" ( (binary_expression "puVar19 + -0x60" identifier + number_literal) )))) = (binary_expression "(uint)(iVar1 + iVar2 != 0) + iVar9" (call_expression "(uint)(iVar1 + iVar2 != 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(iVar1 + iVar2 != 0)" ( (binary_expression "iVar1 + iVar2 != 0" (binary_expression "iVar1 + iVar2" identifier + identifier) != number_literal) ))) + identifier)) ;) (expression_statement "iVar1 = (*pcVar18)(piVar11,piVar15,piVar11,iVar9);" (assignment_expression "iVar1 = (*pcVar18)(piVar11,piVar15,piVar11,iVar9)" identifier = (call_expression "(*pcVar18)(piVar11,piVar15,piVar11,iVar9)" (parenthesized_expression "(*pcVar18)" ( (pointer_expression "*pcVar18" * identifier) )) (argument_list "(piVar11,piVar15,piVar11,iVar9)" ( identifier , identifier , identifier , identifier )))) ;) (expression_statement "iVar2 = *(int *)(puVar19 + -0x60);" (assignment_expression "iVar2 = *(int *)(puVar19 + -0x60)" identifier = (pointer_expression "*(int *)(puVar19 + -0x60)" * (cast_expression "(int *)(puVar19 + -0x60)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar19 + -0x60)" ( (binary_expression "puVar19 + -0x60" identifier + number_literal) ))))) ;) (expression_statement "pcVar18 = *(code **)(*(int *)(puVar19 + -0x68) + -0x7d8c);" (assignment_expression "pcVar18 = *(code **)(*(int *)(puVar19 + -0x68) + -0x7d8c)" identifier = (pointer_expression "*(code **)(*(int *)(puVar19 + -0x68) + -0x7d8c)" * (cast_expression "(code **)(*(int *)(puVar19 + -0x68) + -0x7d8c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)(puVar19 + -0x68) + -0x7d8c)" ( (binary_expression "*(int *)(puVar19 + -0x68) + -0x7d8c" (pointer_expression "*(int *)(puVar19 + -0x68)" * (cast_expression "(int *)(puVar19 + -0x68)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar19 + -0x68)" ( (binary_expression "puVar19 + -0x68" identifier + number_literal) )))) + number_literal) ))))) ;) (expression_statement "iVar14 = iVar9 + (*(int *)(puVar19 + -0x5c) - iVar1);" (assignment_expression "iVar14 = iVar9 + (*(int *)(puVar19 + -0x5c) - iVar1)" identifier = (binary_expression "iVar9 + (*(int *)(puVar19 + -0x5c) - iVar1)" identifier + (parenthesized_expression "(*(int *)(puVar19 + -0x5c) - iVar1)" ( (binary_expression "*(int *)(puVar19 + -0x5c) - iVar1" (pointer_expression "*(int *)(puVar19 + -0x5c)" * (cast_expression "(int *)(puVar19 + -0x5c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar19 + -0x5c)" ( (binary_expression "puVar19 + -0x5c" identifier + number_literal) )))) - identifier) )))) ;) (expression_statement "piVar11[iVar9] = *(int *)(puVar19 + -0x5c) - iVar1;" (assignment_expression "piVar11[iVar9] = *(int *)(puVar19 + -0x5c) - iVar1" (subscript_expression "piVar11[iVar9]" identifier [ identifier ]) = (binary_expression "*(int *)(puVar19 + -0x5c) - iVar1" (pointer_expression "*(int *)(puVar19 + -0x5c)" * (cast_expression "(int *)(puVar19 + -0x5c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar19 + -0x5c)" ( (binary_expression "puVar19 + -0x5c" identifier + number_literal) )))) - identifier)) ;) (expression_statement "*(int *)(puVar20 + 0x10) = iVar14;" (assignment_expression "*(int *)(puVar20 + 0x10) = iVar14" (pointer_expression "*(int *)(puVar20 + 0x10)" * (cast_expression "(int *)(puVar20 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar20 + 0x10)" ( (binary_expression "puVar20 + 0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "iVar9 = iVar2 + iVar14;" (assignment_expression "iVar9 = iVar2 + iVar14" identifier = (binary_expression "iVar2 + iVar14" identifier + identifier)) ;) (expression_statement "iVar1 = (*pcVar18)(piVar15,puVar16,iVar2,piVar11);" (assignment_expression "iVar1 = (*pcVar18)(piVar15,puVar16,iVar2,piVar11)" identifier = (call_expression "(*pcVar18)(piVar15,puVar16,iVar2,piVar11)" (parenthesized_expression "(*pcVar18)" ( (pointer_expression "*pcVar18" * identifier) )) (argument_list "(piVar15,puVar16,iVar2,piVar11)" ( identifier , identifier , identifier , identifier )))) ;) (expression_statement "uVar10 = 0xfffffffe;" (assignment_expression "uVar10 = 0xfffffffe" identifier = number_literal) ;) (expression_statement "piVar7 = (int *)0x2;" (assignment_expression "piVar7 = (int *)0x2" identifier = (cast_expression "(int *)0x2" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "pcVar21 = *(code **)(puVar19 + -0x68);" (assignment_expression "pcVar21 = *(code **)(puVar19 + -0x68)" identifier = (pointer_expression "*(code **)(puVar19 + -0x68)" * (cast_expression "(code **)(puVar19 + -0x68)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar19 + -0x68)" ( (binary_expression "puVar19 + -0x68" identifier + number_literal) ))))) ;) (if_statement "if (((uint)puVar6 & 2) != 0) {\n        piVar7 = (int *)0xfffffffe;\n      }" if (parenthesized_expression "(((uint)puVar6 & 2) != 0)" ( (binary_expression "((uint)puVar6 & 2) != 0" (parenthesized_expression "((uint)puVar6 & 2)" ( (binary_expression "(uint)puVar6 & 2" (cast_expression "(uint)puVar6" ( (type_descriptor "uint" type_identifier) ) identifier) & number_literal) )) != number_literal) )) (compound_statement "{\n        piVar7 = (int *)0xfffffffe;\n      }" { (expression_statement "piVar7 = (int *)0xfffffffe;" (assignment_expression "piVar7 = (int *)0xfffffffe" identifier = (cast_expression "(int *)0xfffffffe" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) })) (expression_statement "*piVar15 = (int)piVar7 + *piVar15;" (assignment_expression "*piVar15 = (int)piVar7 + *piVar15" (pointer_expression "*piVar15" * identifier) = (binary_expression "(int)piVar7 + *piVar15" (cast_expression "(int)piVar7" ( (type_descriptor "int" primitive_type) ) identifier) + (pointer_expression "*piVar15" * identifier))) ;) }))) (expression_statement "piVar4 = *(int **)(puVar19 + -0x58);" (assignment_expression "piVar4 = *(int **)(puVar19 + -0x58)" identifier = (pointer_expression "*(int **)(puVar19 + -0x58)" * (cast_expression "(int **)(puVar19 + -0x58)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar19 + -0x58)" ( (binary_expression "puVar19 + -0x58" identifier + number_literal) ))))) ;) (expression_statement "iVar9 = iVar9 - (uint)(iVar1 == 0);" (assignment_expression "iVar9 = iVar9 - (uint)(iVar1 == 0)" identifier = (binary_expression "iVar9 - (uint)(iVar1 == 0)" identifier - (call_expression "(uint)(iVar1 == 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(iVar1 == 0)" ( (binary_expression "iVar1 == 0" identifier == number_literal) ))))) ;) (expression_statement "piVar15 = piVar15 + iVar9;" (assignment_expression "piVar15 = piVar15 + iVar9" identifier = (binary_expression "piVar15 + iVar9" identifier + identifier)) ;) (expression_statement "param_1 = (uint *)(iVar9 - (uint)(piVar15[-1] == 0));" (assignment_expression "param_1 = (uint *)(iVar9 - (uint)(piVar15[-1] == 0))" identifier = (cast_expression "(uint *)(iVar9 - (uint)(piVar15[-1] == 0))" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar9 - (uint)(piVar15[-1] == 0))" ( (binary_expression "iVar9 - (uint)(piVar15[-1] == 0)" identifier - (call_expression "(uint)(piVar15[-1] == 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(piVar15[-1] == 0)" ( (binary_expression "piVar15[-1] == 0" (subscript_expression "piVar15[-1]" identifier [ number_literal ]) == number_literal) )))) )))) ;) (expression_statement "piVar3[1] = (int)param_1;" (assignment_expression "piVar3[1] = (int)param_1" (subscript_expression "piVar3[1]" identifier [ number_literal ]) = (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "puVar16 = puVar20;" (assignment_expression "puVar16 = puVar20" identifier = identifier) ;) (if_statement "if (piVar4 != (int *)0x0) {\n      (**(code **)(pcVar21 + -0x7a2c))();\n      pcVar21 = *(code **)(puVar19 + -0x68);\n    }" if (parenthesized_expression "(piVar4 != (int *)0x0)" ( (binary_expression "piVar4 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      (**(code **)(pcVar21 + -0x7a2c))();\n      pcVar21 = *(code **)(puVar19 + -0x68);\n    }" { (expression_statement "(**(code **)(pcVar21 + -0x7a2c))();" (call_expression "(**(code **)(pcVar21 + -0x7a2c))()" (parenthesized_expression "(**(code **)(pcVar21 + -0x7a2c))" ( (pointer_expression "**(code **)(pcVar21 + -0x7a2c)" * (pointer_expression "*(code **)(pcVar21 + -0x7a2c)" * (cast_expression "(code **)(pcVar21 + -0x7a2c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar21 + -0x7a2c)" ( (binary_expression "pcVar21 + -0x7a2c" identifier + number_literal) ))))) )) (argument_list "()" ( ))) ;) (expression_statement "pcVar21 = *(code **)(puVar19 + -0x68);" (assignment_expression "pcVar21 = *(code **)(puVar19 + -0x68)" identifier = (pointer_expression "*(code **)(puVar19 + -0x68)" * (cast_expression "(code **)(puVar19 + -0x68)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar19 + -0x68)" ( (binary_expression "puVar19 + -0x68" identifier + number_literal) ))))) ;) })) }))) (if_statement "if (*(int *)(puVar19 + -0x54) == *piVar13) {\n    return *piVar13;\n  }" if (parenthesized_expression "(*(int *)(puVar19 + -0x54) == *piVar13)" ( (binary_expression "*(int *)(puVar19 + -0x54) == *piVar13" (pointer_expression "*(int *)(puVar19 + -0x54)" * (cast_expression "(int *)(puVar19 + -0x54)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar19 + -0x54)" ( (binary_expression "puVar19 + -0x54" identifier + number_literal) )))) == (pointer_expression "*piVar13" * identifier)) )) (compound_statement "{\n    return *piVar13;\n  }" { (return_statement "return *piVar13;" return (pointer_expression "*piVar13" * identifier) ;) })) (expression_statement "pcVar18 = *(code **)(pcVar21 + -0x7b70);" (assignment_expression "pcVar18 = *(code **)(pcVar21 + -0x7b70)" identifier = (pointer_expression "*(code **)(pcVar21 + -0x7b70)" * (cast_expression "(code **)(pcVar21 + -0x7b70)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar21 + -0x7b70)" ( (binary_expression "pcVar21 + -0x7b70" identifier + number_literal) ))))) ;) (expression_statement "uVar22 = 0x2825c;" (assignment_expression "uVar22 = 0x2825c" identifier = number_literal) ;) (expression_statement "(*pcVar18)();" (call_expression "(*pcVar18)()" (parenthesized_expression "(*pcVar18)" ( (pointer_expression "*pcVar18" * identifier) )) (argument_list "()" ( ))) ;) (expression_statement "pcVar21 = pcVar18 + 0x76de0;" (assignment_expression "pcVar21 = pcVar18 + 0x76de0" identifier = (binary_expression "pcVar18 + 0x76de0" identifier + number_literal)) ;) (expression_statement "*(code **)(puVar16 + -0x28) = pcVar21;" (assignment_expression "*(code **)(puVar16 + -0x28) = pcVar21" (pointer_expression "*(code **)(puVar16 + -0x28)" * (cast_expression "(code **)(puVar16 + -0x28)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + -0x28)" ( (binary_expression "puVar16 + -0x28" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(uint **)(puVar16 + -0xc) = param_1;" (assignment_expression "*(uint **)(puVar16 + -0xc) = param_1" (pointer_expression "*(uint **)(puVar16 + -0xc)" * (cast_expression "(uint **)(puVar16 + -0xc)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + -0xc)" ( (binary_expression "puVar16 + -0xc" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar16 + -4) = uVar22;" (assignment_expression "*(undefined4 *)(puVar16 + -4) = uVar22" (pointer_expression "*(undefined4 *)(puVar16 + -4)" * (cast_expression "(undefined4 *)(puVar16 + -4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -4)" ( (binary_expression "puVar16 + -4" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int **)(puVar16 + -8) = piVar15;" (assignment_expression "*(int **)(puVar16 + -8) = piVar15" (pointer_expression "*(int **)(puVar16 + -8)" * (cast_expression "(int **)(puVar16 + -8)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + -8)" ( (binary_expression "puVar16 + -8" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int **)(puVar16 + -0x10) = piVar13;" (assignment_expression "*(int **)(puVar16 + -0x10) = piVar13" (pointer_expression "*(int **)(puVar16 + -0x10)" * (cast_expression "(int **)(puVar16 + -0x10)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + -0x10)" ( (binary_expression "puVar16 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int **)(puVar16 + -0x14) = piVar11;" (assignment_expression "*(int **)(puVar16 + -0x14) = piVar11" (pointer_expression "*(int **)(puVar16 + -0x14)" * (cast_expression "(int **)(puVar16 + -0x14)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + -0x14)" ( (binary_expression "puVar16 + -0x14" identifier + number_literal) )))) = identifier) ;) (if_statement "if (0x2f < uVar10) {\n    iVar9 = ((uVar10 >> 5) * 0x17 >> 5) + 4;\n    if (*piVar4 < iVar9) {\n      pcVar18 = *(code **)(pcVar18 + 0x6f35c);\n      *(uint *)(puVar16 + -0x1c) = uVar10;\n      iVar1 = (*pcVar18)();\n      pcVar21 = *(code **)(puVar16 + -0x28);\n      uVar10 = *(uint *)(puVar16 + -0x1c);\n    }\n    else {\n      iVar1 = piVar4[2];\n    }\n    pcVar18 = *(code **)(pcVar21 + -0x7a84);\n    if (*piVar7 < iVar9) {\n      *(uint *)(puVar16 + -0x1c) = uVar10;\n      iVar9 = (*pcVar18)(piVar7,iVar9);\n      pcVar21 = *(code **)(puVar16 + -0x28);\n    }\n    else {\n      iVar9 = piVar7[2];\n    }\n    iVar1 = (**(code **)(pcVar21 + -0x7e94))(iVar1,iVar9);\n    piVar4[1] = iVar1;\n    iVar1 = iVar1 - (uint)(*(int *)(iVar9 + iVar1 * 4 + -4) == 0);\n    piVar7[1] = iVar1;\n    return iVar1;\n  }" if (parenthesized_expression "(0x2f < uVar10)" ( (binary_expression "0x2f < uVar10" number_literal < identifier) )) (compound_statement "{\n    iVar9 = ((uVar10 >> 5) * 0x17 >> 5) + 4;\n    if (*piVar4 < iVar9) {\n      pcVar18 = *(code **)(pcVar18 + 0x6f35c);\n      *(uint *)(puVar16 + -0x1c) = uVar10;\n      iVar1 = (*pcVar18)();\n      pcVar21 = *(code **)(puVar16 + -0x28);\n      uVar10 = *(uint *)(puVar16 + -0x1c);\n    }\n    else {\n      iVar1 = piVar4[2];\n    }\n    pcVar18 = *(code **)(pcVar21 + -0x7a84);\n    if (*piVar7 < iVar9) {\n      *(uint *)(puVar16 + -0x1c) = uVar10;\n      iVar9 = (*pcVar18)(piVar7,iVar9);\n      pcVar21 = *(code **)(puVar16 + -0x28);\n    }\n    else {\n      iVar9 = piVar7[2];\n    }\n    iVar1 = (**(code **)(pcVar21 + -0x7e94))(iVar1,iVar9);\n    piVar4[1] = iVar1;\n    iVar1 = iVar1 - (uint)(*(int *)(iVar9 + iVar1 * 4 + -4) == 0);\n    piVar7[1] = iVar1;\n    return iVar1;\n  }" { (expression_statement "iVar9 = ((uVar10 >> 5) * 0x17 >> 5) + 4;" (assignment_expression "iVar9 = ((uVar10 >> 5) * 0x17 >> 5) + 4" identifier = (binary_expression "((uVar10 >> 5) * 0x17 >> 5) + 4" (parenthesized_expression "((uVar10 >> 5) * 0x17 >> 5)" ( (binary_expression "(uVar10 >> 5) * 0x17 >> 5" (binary_expression "(uVar10 >> 5) * 0x17" (parenthesized_expression "(uVar10 >> 5)" ( (binary_expression "uVar10 >> 5" identifier >> number_literal) )) * number_literal) >> number_literal) )) + number_literal)) ;) (if_statement "if (*piVar4 < iVar9) {\n      pcVar18 = *(code **)(pcVar18 + 0x6f35c);\n      *(uint *)(puVar16 + -0x1c) = uVar10;\n      iVar1 = (*pcVar18)();\n      pcVar21 = *(code **)(puVar16 + -0x28);\n      uVar10 = *(uint *)(puVar16 + -0x1c);\n    }\n    else {\n      iVar1 = piVar4[2];\n    }" if (parenthesized_expression "(*piVar4 < iVar9)" ( (binary_expression "*piVar4 < iVar9" (pointer_expression "*piVar4" * identifier) < identifier) )) (compound_statement "{\n      pcVar18 = *(code **)(pcVar18 + 0x6f35c);\n      *(uint *)(puVar16 + -0x1c) = uVar10;\n      iVar1 = (*pcVar18)();\n      pcVar21 = *(code **)(puVar16 + -0x28);\n      uVar10 = *(uint *)(puVar16 + -0x1c);\n    }" { (expression_statement "pcVar18 = *(code **)(pcVar18 + 0x6f35c);" (assignment_expression "pcVar18 = *(code **)(pcVar18 + 0x6f35c)" identifier = (pointer_expression "*(code **)(pcVar18 + 0x6f35c)" * (cast_expression "(code **)(pcVar18 + 0x6f35c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar18 + 0x6f35c)" ( (binary_expression "pcVar18 + 0x6f35c" identifier + number_literal) ))))) ;) (expression_statement "*(uint *)(puVar16 + -0x1c) = uVar10;" (assignment_expression "*(uint *)(puVar16 + -0x1c) = uVar10" (pointer_expression "*(uint *)(puVar16 + -0x1c)" * (cast_expression "(uint *)(puVar16 + -0x1c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x1c)" ( (binary_expression "puVar16 + -0x1c" identifier + number_literal) )))) = identifier) ;) (expression_statement "iVar1 = (*pcVar18)();" (assignment_expression "iVar1 = (*pcVar18)()" identifier = (call_expression "(*pcVar18)()" (parenthesized_expression "(*pcVar18)" ( (pointer_expression "*pcVar18" * identifier) )) (argument_list "()" ( )))) ;) (expression_statement "pcVar21 = *(code **)(puVar16 + -0x28);" (assignment_expression "pcVar21 = *(code **)(puVar16 + -0x28)" identifier = (pointer_expression "*(code **)(puVar16 + -0x28)" * (cast_expression "(code **)(puVar16 + -0x28)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + -0x28)" ( (binary_expression "puVar16 + -0x28" identifier + number_literal) ))))) ;) (expression_statement "uVar10 = *(uint *)(puVar16 + -0x1c);" (assignment_expression "uVar10 = *(uint *)(puVar16 + -0x1c)" identifier = (pointer_expression "*(uint *)(puVar16 + -0x1c)" * (cast_expression "(uint *)(puVar16 + -0x1c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x1c)" ( (binary_expression "puVar16 + -0x1c" identifier + number_literal) ))))) ;) }) (else_clause "else {\n      iVar1 = piVar4[2];\n    }" else (compound_statement "{\n      iVar1 = piVar4[2];\n    }" { (expression_statement "iVar1 = piVar4[2];" (assignment_expression "iVar1 = piVar4[2]" identifier = (subscript_expression "piVar4[2]" identifier [ number_literal ])) ;) }))) (expression_statement "pcVar18 = *(code **)(pcVar21 + -0x7a84);" (assignment_expression "pcVar18 = *(code **)(pcVar21 + -0x7a84)" identifier = (pointer_expression "*(code **)(pcVar21 + -0x7a84)" * (cast_expression "(code **)(pcVar21 + -0x7a84)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar21 + -0x7a84)" ( (binary_expression "pcVar21 + -0x7a84" identifier + number_literal) ))))) ;) (if_statement "if (*piVar7 < iVar9) {\n      *(uint *)(puVar16 + -0x1c) = uVar10;\n      iVar9 = (*pcVar18)(piVar7,iVar9);\n      pcVar21 = *(code **)(puVar16 + -0x28);\n    }\n    else {\n      iVar9 = piVar7[2];\n    }" if (parenthesized_expression "(*piVar7 < iVar9)" ( (binary_expression "*piVar7 < iVar9" (pointer_expression "*piVar7" * identifier) < identifier) )) (compound_statement "{\n      *(uint *)(puVar16 + -0x1c) = uVar10;\n      iVar9 = (*pcVar18)(piVar7,iVar9);\n      pcVar21 = *(code **)(puVar16 + -0x28);\n    }" { (expression_statement "*(uint *)(puVar16 + -0x1c) = uVar10;" (assignment_expression "*(uint *)(puVar16 + -0x1c) = uVar10" (pointer_expression "*(uint *)(puVar16 + -0x1c)" * (cast_expression "(uint *)(puVar16 + -0x1c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x1c)" ( (binary_expression "puVar16 + -0x1c" identifier + number_literal) )))) = identifier) ;) (expression_statement "iVar9 = (*pcVar18)(piVar7,iVar9);" (assignment_expression "iVar9 = (*pcVar18)(piVar7,iVar9)" identifier = (call_expression "(*pcVar18)(piVar7,iVar9)" (parenthesized_expression "(*pcVar18)" ( (pointer_expression "*pcVar18" * identifier) )) (argument_list "(piVar7,iVar9)" ( identifier , identifier )))) ;) (expression_statement "pcVar21 = *(code **)(puVar16 + -0x28);" (assignment_expression "pcVar21 = *(code **)(puVar16 + -0x28)" identifier = (pointer_expression "*(code **)(puVar16 + -0x28)" * (cast_expression "(code **)(puVar16 + -0x28)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + -0x28)" ( (binary_expression "puVar16 + -0x28" identifier + number_literal) ))))) ;) }) (else_clause "else {\n      iVar9 = piVar7[2];\n    }" else (compound_statement "{\n      iVar9 = piVar7[2];\n    }" { (expression_statement "iVar9 = piVar7[2];" (assignment_expression "iVar9 = piVar7[2]" identifier = (subscript_expression "piVar7[2]" identifier [ number_literal ])) ;) }))) (expression_statement "iVar1 = (**(code **)(pcVar21 + -0x7e94))(iVar1,iVar9);" (assignment_expression "iVar1 = (**(code **)(pcVar21 + -0x7e94))(iVar1,iVar9)" identifier = (call_expression "(**(code **)(pcVar21 + -0x7e94))(iVar1,iVar9)" (parenthesized_expression "(**(code **)(pcVar21 + -0x7e94))" ( (pointer_expression "**(code **)(pcVar21 + -0x7e94)" * (pointer_expression "*(code **)(pcVar21 + -0x7e94)" * (cast_expression "(code **)(pcVar21 + -0x7e94)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar21 + -0x7e94)" ( (binary_expression "pcVar21 + -0x7e94" identifier + number_literal) ))))) )) (argument_list "(iVar1,iVar9)" ( identifier , identifier )))) ;) (expression_statement "piVar4[1] = iVar1;" (assignment_expression "piVar4[1] = iVar1" (subscript_expression "piVar4[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "iVar1 = iVar1 - (uint)(*(int *)(iVar9 + iVar1 * 4 + -4) == 0);" (assignment_expression "iVar1 = iVar1 - (uint)(*(int *)(iVar9 + iVar1 * 4 + -4) == 0)" identifier = (binary_expression "iVar1 - (uint)(*(int *)(iVar9 + iVar1 * 4 + -4) == 0)" identifier - (call_expression "(uint)(*(int *)(iVar9 + iVar1 * 4 + -4) == 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(*(int *)(iVar9 + iVar1 * 4 + -4) == 0)" ( (binary_expression "*(int *)(iVar9 + iVar1 * 4 + -4) == 0" (pointer_expression "*(int *)(iVar9 + iVar1 * 4 + -4)" * (cast_expression "(int *)(iVar9 + iVar1 * 4 + -4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar9 + iVar1 * 4 + -4)" ( (binary_expression "iVar9 + iVar1 * 4 + -4" (binary_expression "iVar9 + iVar1 * 4" identifier + (binary_expression "iVar1 * 4" identifier * number_literal)) + number_literal) )))) == number_literal) ))))) ;) (expression_statement "piVar7[1] = iVar1;" (assignment_expression "piVar7[1] = iVar1" (subscript_expression "piVar7[1]" identifier [ number_literal ]) = identifier) ;) (return_statement "return iVar1;" return identifier ;) })) (expression_statement "puVar8 = (undefined4 *)piVar7[2];" (assignment_expression "puVar8 = (undefined4 *)piVar7[2]" identifier = (cast_expression "(undefined4 *)piVar7[2]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar7[2]" identifier [ number_literal ]))) ;) (expression_statement "uVar22 = *(undefined4 *)(*(int *)(pcVar18 + 0x6f2ec) + uVar10 * 4);" (assignment_expression "uVar22 = *(undefined4 *)(*(int *)(pcVar18 + 0x6f2ec) + uVar10 * 4)" identifier = (pointer_expression "*(undefined4 *)(*(int *)(pcVar18 + 0x6f2ec) + uVar10 * 4)" * (cast_expression "(undefined4 *)(*(int *)(pcVar18 + 0x6f2ec) + uVar10 * 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(pcVar18 + 0x6f2ec) + uVar10 * 4)" ( (binary_expression "*(int *)(pcVar18 + 0x6f2ec) + uVar10 * 4" (pointer_expression "*(int *)(pcVar18 + 0x6f2ec)" * (cast_expression "(int *)(pcVar18 + 0x6f2ec)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar18 + 0x6f2ec)" ( (binary_expression "pcVar18 + 0x6f2ec" identifier + number_literal) )))) + (binary_expression "uVar10 * 4" identifier * number_literal)) ))))) ;) (expression_statement "iVar9 = *(int *)(*(int *)(pcVar18 + 0x6f2ec) + (uVar10 + 1) * 4);" (assignment_expression "iVar9 = *(int *)(*(int *)(pcVar18 + 0x6f2ec) + (uVar10 + 1) * 4)" identifier = (pointer_expression "*(int *)(*(int *)(pcVar18 + 0x6f2ec) + (uVar10 + 1) * 4)" * (cast_expression "(int *)(*(int *)(pcVar18 + 0x6f2ec) + (uVar10 + 1) * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(pcVar18 + 0x6f2ec) + (uVar10 + 1) * 4)" ( (binary_expression "*(int *)(pcVar18 + 0x6f2ec) + (uVar10 + 1) * 4" (pointer_expression "*(int *)(pcVar18 + 0x6f2ec)" * (cast_expression "(int *)(pcVar18 + 0x6f2ec)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar18 + 0x6f2ec)" ( (binary_expression "pcVar18 + 0x6f2ec" identifier + number_literal) )))) + (binary_expression "(uVar10 + 1) * 4" (parenthesized_expression "(uVar10 + 1)" ( (binary_expression "uVar10 + 1" identifier + number_literal) )) * number_literal)) ))))) ;) (expression_statement "*(int *)piVar4[2] = iVar9;" (assignment_expression "*(int *)piVar4[2] = iVar9" (pointer_expression "*(int *)piVar4[2]" * (cast_expression "(int *)piVar4[2]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar4[2]" identifier [ number_literal ]))) = identifier) ;) (expression_statement "piVar4[1] = (uint)(uVar10 != 0);" (assignment_expression "piVar4[1] = (uint)(uVar10 != 0)" (subscript_expression "piVar4[1]" identifier [ number_literal ]) = (call_expression "(uint)(uVar10 != 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar10 != 0)" ( (binary_expression "uVar10 != 0" identifier != number_literal) )))) ;) (expression_statement "*puVar8 = uVar22;" (assignment_expression "*puVar8 = uVar22" (pointer_expression "*puVar8" * identifier) = identifier) ;) (expression_statement "piVar7[1] = (uint)(uVar10 != 1);" (assignment_expression "piVar7[1] = (uint)(uVar10 != 1)" (subscript_expression "piVar7[1]" identifier [ number_literal ]) = (call_expression "(uint)(uVar10 != 1)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar10 != 1)" ( (binary_expression "uVar10 != 1" identifier != number_literal) )))) ;) (return_statement "return iVar9;" return identifier ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (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 (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (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 (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE (pointer_declarator * (array_declarator IDENT [ LIT ])) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (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 { (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , (unary_expression - IDENT) , IDENT )))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , IDENT , IDENT )))) ;) }))) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT - IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) }))) (return_statement return IDENT ;) })) })) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (return_statement return 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 ( ))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (expression_statement (assignment_expression IDENT = (pointer_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 (cast_expression ( (type_descriptor TYPE) ) IDENT) < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (unary_expression - IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT * LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (goto_statement goto statement_identifier ;) })) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (unary_expression - (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) & LIT) )))) ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + IDENT)) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT * LIT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (goto_statement goto statement_identifier ;)) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = IDENT) ;)) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( (pointer_expression & IDENT) , IDENT )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }))) (expression_statement (assignment_expression IDENT = (pointer_expression & IDENT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT ^ IDENT) )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) + LIT) ))))) )) (argument_list ( IDENT , IDENT , IDENT , IDENT ))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < LIT) )) && (parenthesized_expression ( (binary_expression IDENT != LIT) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) + LIT) ))))) )) (argument_list ( IDENT ))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) + LIT) ))))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (goto_statement goto statement_identifier ;)) }))) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( ))) ;) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT == (pointer_expression * IDENT)) )) (compound_statement { (return_statement return (pointer_expression * IDENT) ;) }))) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( ))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (return_statement return LIT ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( (subscript_expression IDENT [ LIT ]) , (unary_expression - IDENT) , IDENT )))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( (subscript_expression IDENT [ LIT ]) , IDENT , IDENT )))) ;) }))) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (return_statement return (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) - IDENT) ;) })) })) (return_statement return IDENT ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (pointer_expression * IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )) * LIT) )))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + (cast_expression ( (type_descriptor TYPE) ) IDENT)) ))))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression (binary_expression (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) )) * LIT) >> LIT) )) + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) < (binary_expression IDENT * LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) }))) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT * LIT) ))) < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (binary_expression IDENT * LIT)) + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (binary_expression IDENT * LIT)) + LIT)) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) }))) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression IDENT * LIT)) )))) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( IDENT , IDENT , IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) & LIT) )) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) ))))) )) (argument_list ( IDENT , IDENT )))) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) ))))) )) (argument_list ( IDENT , IDENT , IDENT , IDENT )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (binary_expression IDENT + IDENT) != LIT) ))) + IDENT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) ))))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ IDENT ]) = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( IDENT , IDENT , IDENT , IDENT )))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) ))))) )) (argument_list ( IDENT , IDENT , IDENT , LIT )))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) ))))) )) (argument_list ( IDENT , IDENT , IDENT , IDENT )))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression IDENT * LIT)) )))) = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (binary_expression IDENT + IDENT) != LIT) ))) + IDENT)) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( IDENT , IDENT , IDENT , IDENT )))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) - IDENT) )))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ IDENT ]) = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) - IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( IDENT , IDENT , IDENT , IDENT )))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) & LIT) )) != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) })) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + (pointer_expression * IDENT))) ;) }))) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT == LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT - (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (subscript_expression IDENT [ LIT ]) == LIT) )))) )))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) })) }))) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == (pointer_expression * IDENT)) )) (compound_statement { (return_statement return (pointer_expression * IDENT) ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression (binary_expression (parenthesized_expression ( (binary_expression IDENT >> LIT) )) * LIT) >> LIT) )) + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( )))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) }) (else_clause else (compound_statement { (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 *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) < IDENT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( IDENT , IDENT )))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) }))) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( IDENT , IDENT )))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + (binary_expression IDENT * LIT)) + LIT) )))) == LIT) ))))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (return_statement return IDENT ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + (binary_expression IDENT * LIT)) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + (binary_expression (parenthesized_expression ( (binary_expression IDENT + LIT) )) * LIT)) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT != LIT) )))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT != LIT) )))) ;) (return_statement return IDENT ;) })))
(function_definition "int __gmpz_fdiv_r_ui(uint *param_1,uint param_2,int param_3)\n\n{\n  int iVar1;\n  int iVar2;\n  int *piVar3;\n  int *piVar4;\n  uint uVar5;\n  uint *puVar6;\n  int *piVar7;\n  undefined4 *puVar8;\n  int iVar9;\n  uint uVar10;\n  int *piVar11;\n  uint uVar12;\n  int *piVar13;\n  int iVar14;\n  int *piVar15;\n  undefined1 *puVar16;\n  undefined4 unaff_s5;\n  undefined4 unaff_s6;\n  undefined4 unaff_s7;\n  undefined *puVar17;\n  code *pcVar18;\n  undefined1 *puVar19;\n  undefined1 *puVar20;\n  code *pcVar21;\n  undefined4 uVar22;\n  undefined1 auStack_80 [16];\n  undefined *apuStack_70 [3];\n  int iStack_64;\n  int *piStack_5c;\n  uint uStack_58;\n  int iStack_54;\n  int iStack_50;\n  int iStack_4c;\n  \n  if (param_3 != 0) {\n    iVar9 = *(int *)(param_2 + 4);\n    if (iVar9 != 0) {\n      if (iVar9 < 0) {\n        iVar1 = (*(code *)PTR___gmpn_mod_1_000974c0)(*(undefined4 *)(param_2 + 8),-iVar9,param_3);\n      }\n      else {\n        iVar1 = (*(code *)PTR___gmpn_mod_1_000974c0)(*(undefined4 *)(param_2 + 8),iVar9,param_3);\n      }\n      if (iVar1 != 0) {\n        if (iVar9 < 0) {\n          iVar1 = param_3 - iVar1;\n          *(int *)param_1[2] = iVar1;\n          param_1[1] = 1;\n        }\n        else {\n          *(int *)param_1[2] = iVar1;\n          param_1[1] = 1;\n        }\n        return iVar1;\n      }\n    }\n    param_1[1] = 0;\n    return 0;\n  }\n  puVar17 = PTR___gmp_divide_by_zero_000975dc;\n  (*(code *)PTR___gmp_divide_by_zero_000975dc)();\n  apuStack_70[0] = puVar17 + 0x77320;\n  puVar19 = auStack_80;\n  piVar15 = *(int **)(puVar17 + 0x6f820);\n  uVar10 = *(uint *)(param_3 + 4);\n  piStack_5c = (int *)0x0;\n  iStack_4c = *piVar15;\n  uVar12 = *(uint *)(param_2 + 4);\n  if ((int)uVar10 < 0) {\n    uStack_58 = -uVar10;\n    uVar5 = uVar10 * -4;\n    if (0x7f00 < uVar5) {\n      pcVar18 = *(code **)(puVar17 + 0x6f5d0);\n      goto LAB_00027e2c;\n    }\nLAB_00027d94:\n    iStack_50 = -(uVar5 + 7 & 0xfffffff8);\n    puVar19 = auStack_80 + iStack_50;\n    iStack_50 = (int)apuStack_70 + iStack_50;\n  }\n  else {\n    uVar5 = uVar10 * 4;\n    pcVar18 = *(code **)(puVar17 + 0x6f5d0);\n    uStack_58 = uVar10;\n    if (uVar5 < 0x7f01) goto LAB_00027d94;\nLAB_00027e2c:\n    iStack_64 = param_3;\n    iStack_50 = (*pcVar18)(&piStack_5c,uVar5);\n    param_3 = iStack_64;\n  }\n  puVar6 = &uStack_58;\n  piVar11 = (int *)(uVar12 ^ uVar10);\n  uVar10 = param_2;\n  (**(code **)(apuStack_70[0] + -0x7a6c))(param_1,puVar6,param_2,param_3);\n  if (((int)piVar11 < 0) && (iStack_54 != 0)) {\n    uVar10 = 1;\n    puVar6 = param_1;\n    (**(code **)(apuStack_70[0] + -0x7ac0))(param_1);\n    piVar3 = piStack_5c;\n    if (piStack_5c == (int *)0x0) goto LAB_00027dd8;\n    pcVar18 = *(code **)(apuStack_70[0] + -0x7a2c);\n  }\n  else {\n    pcVar18 = *(code **)(apuStack_70[0] + -0x7a2c);\n    piVar3 = piStack_5c;\n    if (piStack_5c == (int *)0x0) goto LAB_00027dd8;\n  }\n  piVar3 = piStack_5c;\n  (*pcVar18)();\nLAB_00027dd8:\n  if (iStack_4c == *piVar15) {\n    return *piVar15;\n  }\n  pcVar18 = *(code **)(apuStack_70[0] + -0x7b70);\n  pcVar21 = __gmpz_fdiv_ui;\n  (*pcVar18)();\n  *(code **)(puVar19 + -0x18) = pcVar18 + 0x771b0;\n  *(code **)(puVar19 + -4) = pcVar21;\n  *(uint *)(puVar19 + -8) = uVar12;\n  *(int **)(puVar19 + -0xc) = piVar11;\n  if (puVar6 != (uint *)0x0) {\n    iVar9 = piVar3[1];\n    if (iVar9 == 0) {\n      return 0;\n    }\n    if (iVar9 < 0) {\n      iVar1 = (**(code **)(pcVar18 + 0x6f630))(piVar3[2],-iVar9,puVar6);\n    }\n    else {\n      iVar1 = (**(code **)(pcVar18 + 0x6f630))(piVar3[2],iVar9,puVar6);\n    }\n    if (iVar1 != 0) {\n      if (iVar9 < 0) {\n        return (int)puVar6 - iVar1;\n      }\n    }\n    return iVar1;\n  }\n  pcVar18 = *(code **)(pcVar18 + 0x6f74c);\n  uVar22 = 0x27f54;\n  (*pcVar18)();\n  pcVar21 = pcVar18 + 0x770e0;\n  puVar16 = puVar19 + -0x80;\n  puVar20 = puVar19 + -0x80;\n  *(uint *)(puVar19 + -0x4c) = uVar12;\n  *(undefined4 *)(puVar19 + -0x38) = unaff_s6;\n  piVar13 = *(int **)(pcVar18 + 0x6f5e0);\n  *(undefined1 **)(puVar19 + -0x30) = auStack_80;\n  *(undefined4 *)(puVar19 + -0x3c) = unaff_s5;\n  *(undefined4 *)(puVar19 + -0x2c) = uVar22;\n  *(undefined4 *)(puVar19 + -0x34) = unaff_s7;\n  *(uint *)(puVar19 + -0x40) = param_2;\n  *(int **)(puVar19 + -0x44) = piVar15;\n  *(uint **)(puVar19 + -0x48) = param_1;\n  *(int **)(puVar19 + -0x50) = piVar11;\n  *(code **)(puVar19 + -0x68) = pcVar21;\n  *(int *)(puVar19 + -0x54) = *piVar13;\n  if (puVar6 < (uint *)0x30) {\n    piVar7 = (int *)piVar3[2];\n    piVar4 = (int *)(((int)puVar6 + 1U) * 4);\n    *piVar7 = *(int *)(*(int *)(pcVar18 + 0x6f5ec) + (int)piVar4);\n    piVar3[1] = (uint)(puVar6 != (uint *)0x0);\n  }\n  else {\n    iVar9 = (((uint)puVar6 >> 6) * 0x17 >> 5) + 5;\n    uVar10 = (uint)puVar6 >> 1;\n    if (*piVar3 < iVar9 * 2) {\n      pcVar18 = *(code **)(pcVar18 + 0x6f65c);\n      *(uint *)(puVar19 + -0x5c) = uVar10;\n      piVar15 = (int *)(*pcVar18)();\n      pcVar21 = *(code **)(puVar19 + -0x68);\n      uVar10 = *(uint *)(puVar19 + -0x5c);\n    }\n    else {\n      piVar15 = (int *)piVar3[2];\n    }\n    *(undefined4 *)(puVar19 + -0x58) = 0;\n    if ((uint)(iVar9 * 8) < 0x7f01) {\n      puVar20 = puVar19 + iVar9 * -8 + -0x80;\n      puVar16 = puVar19 + iVar9 * -8 + -0x68;\n    }\n    else {\n      pcVar18 = *(code **)(pcVar21 + -0x7d50);\n      *(uint *)(puVar19 + -0x5c) = uVar10;\n      puVar16 = (undefined1 *)(*pcVar18)(puVar19 + -0x58);\n      pcVar21 = *(code **)(puVar19 + -0x68);\n      uVar10 = *(uint *)(puVar19 + -0x5c);\n    }\n    piVar11 = (int *)(puVar16 + iVar9 * 4);\n    iVar9 = (**(code **)(pcVar21 + -0x7e94))(puVar16,piVar11,uVar10);\n    if (((uint)puVar6 & 1) == 0) {\n      iVar1 = (**(code **)(*(int *)(puVar19 + -0x68) + -0x7ad4))(piVar11,piVar11);\n      iVar2 = (**(code **)(*(int *)(puVar19 + -0x68) + -0x7d0c))(piVar11,piVar11,puVar16,iVar9);\n      uVar10 = (uint)(iVar1 + iVar2 != 0) + iVar9;\n      pcVar18 = *(code **)(*(int *)(puVar19 + -0x68) + -0x7d8c);\n      piVar11[iVar9] = iVar1 + iVar2;\n      *(int *)(puVar20 + 0x10) = iVar9;\n      iVar9 = iVar9 + uVar10;\n      piVar7 = piVar11;\n      iVar1 = (*pcVar18)(piVar15,piVar11,uVar10,puVar16);\n      pcVar21 = *(code **)(puVar19 + -0x68);\n    }\n    else {\n      uVar22 = (**(code **)(*(int *)(puVar19 + -0x68) + -0x7ad4))(piVar15,puVar16,iVar9,1);\n      *(undefined4 *)(puVar19 + -0x5c) = uVar22;\n      iVar1 = (**(code **)(*(int *)(puVar19 + -0x68) + -0x7d0c))(puVar16,piVar15,piVar11,iVar9);\n      iVar2 = *(int *)(puVar19 + -0x5c);\n      pcVar18 = *(code **)(*(int *)(puVar19 + -0x68) + -0x7b2c);\n      *(int *)(puVar16 + iVar9 * 4) = iVar1 + iVar2;\n      *(uint *)(puVar19 + -0x60) = (uint)(iVar1 + iVar2 != 0) + iVar9;\n      iVar1 = (*pcVar18)(piVar11,piVar15,piVar11,iVar9);\n      iVar2 = *(int *)(puVar19 + -0x60);\n      pcVar18 = *(code **)(*(int *)(puVar19 + -0x68) + -0x7d8c);\n      iVar14 = iVar9 + (*(int *)(puVar19 + -0x5c) - iVar1);\n      piVar11[iVar9] = *(int *)(puVar19 + -0x5c) - iVar1;\n      *(int *)(puVar20 + 0x10) = iVar14;\n      iVar9 = iVar2 + iVar14;\n      iVar1 = (*pcVar18)(piVar15,puVar16,iVar2,piVar11);\n      uVar10 = 0xfffffffe;\n      piVar7 = (int *)0x2;\n      pcVar21 = *(code **)(puVar19 + -0x68);\n      if (((uint)puVar6 & 2) != 0) {\n        piVar7 = (int *)0xfffffffe;\n      }\n      *piVar15 = (int)piVar7 + *piVar15;\n    }\n    piVar4 = *(int **)(puVar19 + -0x58);\n    iVar9 = iVar9 - (uint)(iVar1 == 0);\n    piVar15 = piVar15 + iVar9;\n    param_1 = (uint *)(iVar9 - (uint)(piVar15[-1] == 0));\n    piVar3[1] = (int)param_1;\n    puVar16 = puVar20;\n    if (piVar4 != (int *)0x0) {\n      (**(code **)(pcVar21 + -0x7a2c))();\n      pcVar21 = *(code **)(puVar19 + -0x68);\n    }\n  }\n  if (*(int *)(puVar19 + -0x54) == *piVar13) {\n    return *piVar13;\n  }\n  pcVar18 = *(code **)(pcVar21 + -0x7b70);\n  uVar22 = 0x2825c;\n  (*pcVar18)();\n  pcVar21 = pcVar18 + 0x76de0;\n  *(code **)(puVar16 + -0x28) = pcVar21;\n  *(uint **)(puVar16 + -0xc) = param_1;\n  *(undefined4 *)(puVar16 + -4) = uVar22;\n  *(int **)(puVar16 + -8) = piVar15;\n  *(int **)(puVar16 + -0x10) = piVar13;\n  *(int **)(puVar16 + -0x14) = piVar11;\n  if (0x2f < uVar10) {\n    iVar9 = ((uVar10 >> 5) * 0x17 >> 5) + 4;\n    if (*piVar4 < iVar9) {\n      pcVar18 = *(code **)(pcVar18 + 0x6f35c);\n      *(uint *)(puVar16 + -0x1c) = uVar10;\n      iVar1 = (*pcVar18)();\n      pcVar21 = *(code **)(puVar16 + -0x28);\n      uVar10 = *(uint *)(puVar16 + -0x1c);\n    }\n    else {\n      iVar1 = piVar4[2];\n    }\n    pcVar18 = *(code **)(pcVar21 + -0x7a84);\n    if (*piVar7 < iVar9) {\n      *(uint *)(puVar16 + -0x1c) = uVar10;\n      iVar9 = (*pcVar18)(piVar7,iVar9);\n      pcVar21 = *(code **)(puVar16 + -0x28);\n    }\n    else {\n      iVar9 = piVar7[2];\n    }\n    iVar1 = (**(code **)(pcVar21 + -0x7e94))(iVar1,iVar9);\n    piVar4[1] = iVar1;\n    iVar1 = iVar1 - (uint)(*(int *)(iVar9 + iVar1 * 4 + -4) == 0);\n    piVar7[1] = iVar1;\n    return iVar1;\n  }\n  puVar8 = (undefined4 *)piVar7[2];\n  uVar22 = *(undefined4 *)(*(int *)(pcVar18 + 0x6f2ec) + uVar10 * 4);\n  iVar9 = *(int *)(*(int *)(pcVar18 + 0x6f2ec) + (uVar10 + 1) * 4);\n  *(int *)piVar4[2] = iVar9;\n  piVar4[1] = (uint)(uVar10 != 0);\n  *puVar8 = uVar22;\n  piVar7[1] = (uint)(uVar10 != 1);\n  return iVar9;\n}" (primitive_type "int") (function_declarator "__gmpz_fdiv_r_ui(uint *param_1,uint param_2,int param_3)" (identifier "__gmpz_fdiv_r_ui") (parameter_list "(uint *param_1,uint param_2,int 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") (identifier "param_2")) (, ",") (parameter_declaration "int param_3" (primitive_type "int") (identifier "param_3")) () ")"))) (compound_statement "{\n  int iVar1;\n  int iVar2;\n  int *piVar3;\n  int *piVar4;\n  uint uVar5;\n  uint *puVar6;\n  int *piVar7;\n  undefined4 *puVar8;\n  int iVar9;\n  uint uVar10;\n  int *piVar11;\n  uint uVar12;\n  int *piVar13;\n  int iVar14;\n  int *piVar15;\n  undefined1 *puVar16;\n  undefined4 unaff_s5;\n  undefined4 unaff_s6;\n  undefined4 unaff_s7;\n  undefined *puVar17;\n  code *pcVar18;\n  undefined1 *puVar19;\n  undefined1 *puVar20;\n  code *pcVar21;\n  undefined4 uVar22;\n  undefined1 auStack_80 [16];\n  undefined *apuStack_70 [3];\n  int iStack_64;\n  int *piStack_5c;\n  uint uStack_58;\n  int iStack_54;\n  int iStack_50;\n  int iStack_4c;\n  \n  if (param_3 != 0) {\n    iVar9 = *(int *)(param_2 + 4);\n    if (iVar9 != 0) {\n      if (iVar9 < 0) {\n        iVar1 = (*(code *)PTR___gmpn_mod_1_000974c0)(*(undefined4 *)(param_2 + 8),-iVar9,param_3);\n      }\n      else {\n        iVar1 = (*(code *)PTR___gmpn_mod_1_000974c0)(*(undefined4 *)(param_2 + 8),iVar9,param_3);\n      }\n      if (iVar1 != 0) {\n        if (iVar9 < 0) {\n          iVar1 = param_3 - iVar1;\n          *(int *)param_1[2] = iVar1;\n          param_1[1] = 1;\n        }\n        else {\n          *(int *)param_1[2] = iVar1;\n          param_1[1] = 1;\n        }\n        return iVar1;\n      }\n    }\n    param_1[1] = 0;\n    return 0;\n  }\n  puVar17 = PTR___gmp_divide_by_zero_000975dc;\n  (*(code *)PTR___gmp_divide_by_zero_000975dc)();\n  apuStack_70[0] = puVar17 + 0x77320;\n  puVar19 = auStack_80;\n  piVar15 = *(int **)(puVar17 + 0x6f820);\n  uVar10 = *(uint *)(param_3 + 4);\n  piStack_5c = (int *)0x0;\n  iStack_4c = *piVar15;\n  uVar12 = *(uint *)(param_2 + 4);\n  if ((int)uVar10 < 0) {\n    uStack_58 = -uVar10;\n    uVar5 = uVar10 * -4;\n    if (0x7f00 < uVar5) {\n      pcVar18 = *(code **)(puVar17 + 0x6f5d0);\n      goto LAB_00027e2c;\n    }\nLAB_00027d94:\n    iStack_50 = -(uVar5 + 7 & 0xfffffff8);\n    puVar19 = auStack_80 + iStack_50;\n    iStack_50 = (int)apuStack_70 + iStack_50;\n  }\n  else {\n    uVar5 = uVar10 * 4;\n    pcVar18 = *(code **)(puVar17 + 0x6f5d0);\n    uStack_58 = uVar10;\n    if (uVar5 < 0x7f01) goto LAB_00027d94;\nLAB_00027e2c:\n    iStack_64 = param_3;\n    iStack_50 = (*pcVar18)(&piStack_5c,uVar5);\n    param_3 = iStack_64;\n  }\n  puVar6 = &uStack_58;\n  piVar11 = (int *)(uVar12 ^ uVar10);\n  uVar10 = param_2;\n  (**(code **)(apuStack_70[0] + -0x7a6c))(param_1,puVar6,param_2,param_3);\n  if (((int)piVar11 < 0) && (iStack_54 != 0)) {\n    uVar10 = 1;\n    puVar6 = param_1;\n    (**(code **)(apuStack_70[0] + -0x7ac0))(param_1);\n    piVar3 = piStack_5c;\n    if (piStack_5c == (int *)0x0) goto LAB_00027dd8;\n    pcVar18 = *(code **)(apuStack_70[0] + -0x7a2c);\n  }\n  else {\n    pcVar18 = *(code **)(apuStack_70[0] + -0x7a2c);\n    piVar3 = piStack_5c;\n    if (piStack_5c == (int *)0x0) goto LAB_00027dd8;\n  }\n  piVar3 = piStack_5c;\n  (*pcVar18)();\nLAB_00027dd8:\n  if (iStack_4c == *piVar15) {\n    return *piVar15;\n  }\n  pcVar18 = *(code **)(apuStack_70[0] + -0x7b70);\n  pcVar21 = __gmpz_fdiv_ui;\n  (*pcVar18)();\n  *(code **)(puVar19 + -0x18) = pcVar18 + 0x771b0;\n  *(code **)(puVar19 + -4) = pcVar21;\n  *(uint *)(puVar19 + -8) = uVar12;\n  *(int **)(puVar19 + -0xc) = piVar11;\n  if (puVar6 != (uint *)0x0) {\n    iVar9 = piVar3[1];\n    if (iVar9 == 0) {\n      return 0;\n    }\n    if (iVar9 < 0) {\n      iVar1 = (**(code **)(pcVar18 + 0x6f630))(piVar3[2],-iVar9,puVar6);\n    }\n    else {\n      iVar1 = (**(code **)(pcVar18 + 0x6f630))(piVar3[2],iVar9,puVar6);\n    }\n    if (iVar1 != 0) {\n      if (iVar9 < 0) {\n        return (int)puVar6 - iVar1;\n      }\n    }\n    return iVar1;\n  }\n  pcVar18 = *(code **)(pcVar18 + 0x6f74c);\n  uVar22 = 0x27f54;\n  (*pcVar18)();\n  pcVar21 = pcVar18 + 0x770e0;\n  puVar16 = puVar19 + -0x80;\n  puVar20 = puVar19 + -0x80;\n  *(uint *)(puVar19 + -0x4c) = uVar12;\n  *(undefined4 *)(puVar19 + -0x38) = unaff_s6;\n  piVar13 = *(int **)(pcVar18 + 0x6f5e0);\n  *(undefined1 **)(puVar19 + -0x30) = auStack_80;\n  *(undefined4 *)(puVar19 + -0x3c) = unaff_s5;\n  *(undefined4 *)(puVar19 + -0x2c) = uVar22;\n  *(undefined4 *)(puVar19 + -0x34) = unaff_s7;\n  *(uint *)(puVar19 + -0x40) = param_2;\n  *(int **)(puVar19 + -0x44) = piVar15;\n  *(uint **)(puVar19 + -0x48) = param_1;\n  *(int **)(puVar19 + -0x50) = piVar11;\n  *(code **)(puVar19 + -0x68) = pcVar21;\n  *(int *)(puVar19 + -0x54) = *piVar13;\n  if (puVar6 < (uint *)0x30) {\n    piVar7 = (int *)piVar3[2];\n    piVar4 = (int *)(((int)puVar6 + 1U) * 4);\n    *piVar7 = *(int *)(*(int *)(pcVar18 + 0x6f5ec) + (int)piVar4);\n    piVar3[1] = (uint)(puVar6 != (uint *)0x0);\n  }\n  else {\n    iVar9 = (((uint)puVar6 >> 6) * 0x17 >> 5) + 5;\n    uVar10 = (uint)puVar6 >> 1;\n    if (*piVar3 < iVar9 * 2) {\n      pcVar18 = *(code **)(pcVar18 + 0x6f65c);\n      *(uint *)(puVar19 + -0x5c) = uVar10;\n      piVar15 = (int *)(*pcVar18)();\n      pcVar21 = *(code **)(puVar19 + -0x68);\n      uVar10 = *(uint *)(puVar19 + -0x5c);\n    }\n    else {\n      piVar15 = (int *)piVar3[2];\n    }\n    *(undefined4 *)(puVar19 + -0x58) = 0;\n    if ((uint)(iVar9 * 8) < 0x7f01) {\n      puVar20 = puVar19 + iVar9 * -8 + -0x80;\n      puVar16 = puVar19 + iVar9 * -8 + -0x68;\n    }\n    else {\n      pcVar18 = *(code **)(pcVar21 + -0x7d50);\n      *(uint *)(puVar19 + -0x5c) = uVar10;\n      puVar16 = (undefined1 *)(*pcVar18)(puVar19 + -0x58);\n      pcVar21 = *(code **)(puVar19 + -0x68);\n      uVar10 = *(uint *)(puVar19 + -0x5c);\n    }\n    piVar11 = (int *)(puVar16 + iVar9 * 4);\n    iVar9 = (**(code **)(pcVar21 + -0x7e94))(puVar16,piVar11,uVar10);\n    if (((uint)puVar6 & 1) == 0) {\n      iVar1 = (**(code **)(*(int *)(puVar19 + -0x68) + -0x7ad4))(piVar11,piVar11);\n      iVar2 = (**(code **)(*(int *)(puVar19 + -0x68) + -0x7d0c))(piVar11,piVar11,puVar16,iVar9);\n      uVar10 = (uint)(iVar1 + iVar2 != 0) + iVar9;\n      pcVar18 = *(code **)(*(int *)(puVar19 + -0x68) + -0x7d8c);\n      piVar11[iVar9] = iVar1 + iVar2;\n      *(int *)(puVar20 + 0x10) = iVar9;\n      iVar9 = iVar9 + uVar10;\n      piVar7 = piVar11;\n      iVar1 = (*pcVar18)(piVar15,piVar11,uVar10,puVar16);\n      pcVar21 = *(code **)(puVar19 + -0x68);\n    }\n    else {\n      uVar22 = (**(code **)(*(int *)(puVar19 + -0x68) + -0x7ad4))(piVar15,puVar16,iVar9,1);\n      *(undefined4 *)(puVar19 + -0x5c) = uVar22;\n      iVar1 = (**(code **)(*(int *)(puVar19 + -0x68) + -0x7d0c))(puVar16,piVar15,piVar11,iVar9);\n      iVar2 = *(int *)(puVar19 + -0x5c);\n      pcVar18 = *(code **)(*(int *)(puVar19 + -0x68) + -0x7b2c);\n      *(int *)(puVar16 + iVar9 * 4) = iVar1 + iVar2;\n      *(uint *)(puVar19 + -0x60) = (uint)(iVar1 + iVar2 != 0) + iVar9;\n      iVar1 = (*pcVar18)(piVar11,piVar15,piVar11,iVar9);\n      iVar2 = *(int *)(puVar19 + -0x60);\n      pcVar18 = *(code **)(*(int *)(puVar19 + -0x68) + -0x7d8c);\n      iVar14 = iVar9 + (*(int *)(puVar19 + -0x5c) - iVar1);\n      piVar11[iVar9] = *(int *)(puVar19 + -0x5c) - iVar1;\n      *(int *)(puVar20 + 0x10) = iVar14;\n      iVar9 = iVar2 + iVar14;\n      iVar1 = (*pcVar18)(piVar15,puVar16,iVar2,piVar11);\n      uVar10 = 0xfffffffe;\n      piVar7 = (int *)0x2;\n      pcVar21 = *(code **)(puVar19 + -0x68);\n      if (((uint)puVar6 & 2) != 0) {\n        piVar7 = (int *)0xfffffffe;\n      }\n      *piVar15 = (int)piVar7 + *piVar15;\n    }\n    piVar4 = *(int **)(puVar19 + -0x58);\n    iVar9 = iVar9 - (uint)(iVar1 == 0);\n    piVar15 = piVar15 + iVar9;\n    param_1 = (uint *)(iVar9 - (uint)(piVar15[-1] == 0));\n    piVar3[1] = (int)param_1;\n    puVar16 = puVar20;\n    if (piVar4 != (int *)0x0) {\n      (**(code **)(pcVar21 + -0x7a2c))();\n      pcVar21 = *(code **)(puVar19 + -0x68);\n    }\n  }\n  if (*(int *)(puVar19 + -0x54) == *piVar13) {\n    return *piVar13;\n  }\n  pcVar18 = *(code **)(pcVar21 + -0x7b70);\n  uVar22 = 0x2825c;\n  (*pcVar18)();\n  pcVar21 = pcVar18 + 0x76de0;\n  *(code **)(puVar16 + -0x28) = pcVar21;\n  *(uint **)(puVar16 + -0xc) = param_1;\n  *(undefined4 *)(puVar16 + -4) = uVar22;\n  *(int **)(puVar16 + -8) = piVar15;\n  *(int **)(puVar16 + -0x10) = piVar13;\n  *(int **)(puVar16 + -0x14) = piVar11;\n  if (0x2f < uVar10) {\n    iVar9 = ((uVar10 >> 5) * 0x17 >> 5) + 4;\n    if (*piVar4 < iVar9) {\n      pcVar18 = *(code **)(pcVar18 + 0x6f35c);\n      *(uint *)(puVar16 + -0x1c) = uVar10;\n      iVar1 = (*pcVar18)();\n      pcVar21 = *(code **)(puVar16 + -0x28);\n      uVar10 = *(uint *)(puVar16 + -0x1c);\n    }\n    else {\n      iVar1 = piVar4[2];\n    }\n    pcVar18 = *(code **)(pcVar21 + -0x7a84);\n    if (*piVar7 < iVar9) {\n      *(uint *)(puVar16 + -0x1c) = uVar10;\n      iVar9 = (*pcVar18)(piVar7,iVar9);\n      pcVar21 = *(code **)(puVar16 + -0x28);\n    }\n    else {\n      iVar9 = piVar7[2];\n    }\n    iVar1 = (**(code **)(pcVar21 + -0x7e94))(iVar1,iVar9);\n    piVar4[1] = iVar1;\n    iVar1 = iVar1 - (uint)(*(int *)(iVar9 + iVar1 * 4 + -4) == 0);\n    piVar7[1] = iVar1;\n    return iVar1;\n  }\n  puVar8 = (undefined4 *)piVar7[2];\n  uVar22 = *(undefined4 *)(*(int *)(pcVar18 + 0x6f2ec) + uVar10 * 4);\n  iVar9 = *(int *)(*(int *)(pcVar18 + 0x6f2ec) + (uVar10 + 1) * 4);\n  *(int *)piVar4[2] = iVar9;\n  piVar4[1] = (uint)(uVar10 != 0);\n  *puVar8 = uVar22;\n  piVar7[1] = (uint)(uVar10 != 1);\n  return iVar9;\n}" ({ "{") (declaration "int iVar1;" (primitive_type "int") (identifier "iVar1") (; ";")) (declaration "int iVar2;" (primitive_type "int") (identifier "iVar2") (; ";")) (declaration "int *piVar3;" (primitive_type "int") (pointer_declarator "*piVar3" (* "*") (identifier "piVar3")) (; ";")) (declaration "int *piVar4;" (primitive_type "int") (pointer_declarator "*piVar4" (* "*") (identifier "piVar4")) (; ";")) (declaration "uint uVar5;" (type_identifier "uint") (identifier "uVar5") (; ";")) (declaration "uint *puVar6;" (type_identifier "uint") (pointer_declarator "*puVar6" (* "*") (identifier "puVar6")) (; ";")) (declaration "int *piVar7;" (primitive_type "int") (pointer_declarator "*piVar7" (* "*") (identifier "piVar7")) (; ";")) (declaration "undefined4 *puVar8;" (type_identifier "undefined4") (pointer_declarator "*puVar8" (* "*") (identifier "puVar8")) (; ";")) (declaration "int iVar9;" (primitive_type "int") (identifier "iVar9") (; ";")) (declaration "uint uVar10;" (type_identifier "uint") (identifier "uVar10") (; ";")) (declaration "int *piVar11;" (primitive_type "int") (pointer_declarator "*piVar11" (* "*") (identifier "piVar11")) (; ";")) (declaration "uint uVar12;" (type_identifier "uint") (identifier "uVar12") (; ";")) (declaration "int *piVar13;" (primitive_type "int") (pointer_declarator "*piVar13" (* "*") (identifier "piVar13")) (; ";")) (declaration "int iVar14;" (primitive_type "int") (identifier "iVar14") (; ";")) (declaration "int *piVar15;" (primitive_type "int") (pointer_declarator "*piVar15" (* "*") (identifier "piVar15")) (; ";")) (declaration "undefined1 *puVar16;" (type_identifier "undefined1") (pointer_declarator "*puVar16" (* "*") (identifier "puVar16")) (; ";")) (declaration "undefined4 unaff_s5;" (type_identifier "undefined4") (identifier "unaff_s5") (; ";")) (declaration "undefined4 unaff_s6;" (type_identifier "undefined4") (identifier "unaff_s6") (; ";")) (declaration "undefined4 unaff_s7;" (type_identifier "undefined4") (identifier "unaff_s7") (; ";")) (declaration "undefined *puVar17;" (type_identifier "undefined") (pointer_declarator "*puVar17" (* "*") (identifier "puVar17")) (; ";")) (declaration "code *pcVar18;" (type_identifier "code") (pointer_declarator "*pcVar18" (* "*") (identifier "pcVar18")) (; ";")) (declaration "undefined1 *puVar19;" (type_identifier "undefined1") (pointer_declarator "*puVar19" (* "*") (identifier "puVar19")) (; ";")) (declaration "undefined1 *puVar20;" (type_identifier "undefined1") (pointer_declarator "*puVar20" (* "*") (identifier "puVar20")) (; ";")) (declaration "code *pcVar21;" (type_identifier "code") (pointer_declarator "*pcVar21" (* "*") (identifier "pcVar21")) (; ";")) (declaration "undefined4 uVar22;" (type_identifier "undefined4") (identifier "uVar22") (; ";")) (declaration "undefined1 auStack_80 [16];" (type_identifier "undefined1") (array_declarator "auStack_80 [16]" (identifier "auStack_80") ([ "[") (number_literal "16") (] "]")) (; ";")) (declaration "undefined *apuStack_70 [3];" (type_identifier "undefined") (pointer_declarator "*apuStack_70 [3]" (* "*") (array_declarator "apuStack_70 [3]" (identifier "apuStack_70") ([ "[") (number_literal "3") (] "]"))) (; ";")) (declaration "int iStack_64;" (primitive_type "int") (identifier "iStack_64") (; ";")) (declaration "int *piStack_5c;" (primitive_type "int") (pointer_declarator "*piStack_5c" (* "*") (identifier "piStack_5c")) (; ";")) (declaration "uint uStack_58;" (type_identifier "uint") (identifier "uStack_58") (; ";")) (declaration "int iStack_54;" (primitive_type "int") (identifier "iStack_54") (; ";")) (declaration "int iStack_50;" (primitive_type "int") (identifier "iStack_50") (; ";")) (declaration "int iStack_4c;" (primitive_type "int") (identifier "iStack_4c") (; ";")) (if_statement "if (param_3 != 0) {\n    iVar9 = *(int *)(param_2 + 4);\n    if (iVar9 != 0) {\n      if (iVar9 < 0) {\n        iVar1 = (*(code *)PTR___gmpn_mod_1_000974c0)(*(undefined4 *)(param_2 + 8),-iVar9,param_3);\n      }\n      else {\n        iVar1 = (*(code *)PTR___gmpn_mod_1_000974c0)(*(undefined4 *)(param_2 + 8),iVar9,param_3);\n      }\n      if (iVar1 != 0) {\n        if (iVar9 < 0) {\n          iVar1 = param_3 - iVar1;\n          *(int *)param_1[2] = iVar1;\n          param_1[1] = 1;\n        }\n        else {\n          *(int *)param_1[2] = iVar1;\n          param_1[1] = 1;\n        }\n        return iVar1;\n      }\n    }\n    param_1[1] = 0;\n    return 0;\n  }" (if "if") (parenthesized_expression "(param_3 != 0)" (( "(") (binary_expression "param_3 != 0" (identifier "param_3") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    iVar9 = *(int *)(param_2 + 4);\n    if (iVar9 != 0) {\n      if (iVar9 < 0) {\n        iVar1 = (*(code *)PTR___gmpn_mod_1_000974c0)(*(undefined4 *)(param_2 + 8),-iVar9,param_3);\n      }\n      else {\n        iVar1 = (*(code *)PTR___gmpn_mod_1_000974c0)(*(undefined4 *)(param_2 + 8),iVar9,param_3);\n      }\n      if (iVar1 != 0) {\n        if (iVar9 < 0) {\n          iVar1 = param_3 - iVar1;\n          *(int *)param_1[2] = iVar1;\n          param_1[1] = 1;\n        }\n        else {\n          *(int *)param_1[2] = iVar1;\n          param_1[1] = 1;\n        }\n        return iVar1;\n      }\n    }\n    param_1[1] = 0;\n    return 0;\n  }" ({ "{") (expression_statement "iVar9 = *(int *)(param_2 + 4);" (assignment_expression "iVar9 = *(int *)(param_2 + 4)" (identifier "iVar9") (= "=") (pointer_expression "*(int *)(param_2 + 4)" (* "*") (cast_expression "(int *)(param_2 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 4)" (( "(") (binary_expression "param_2 + 4" (identifier "param_2") (+ "+") (number_literal "4")) () ")"))))) (; ";")) (if_statement "if (iVar9 != 0) {\n      if (iVar9 < 0) {\n        iVar1 = (*(code *)PTR___gmpn_mod_1_000974c0)(*(undefined4 *)(param_2 + 8),-iVar9,param_3);\n      }\n      else {\n        iVar1 = (*(code *)PTR___gmpn_mod_1_000974c0)(*(undefined4 *)(param_2 + 8),iVar9,param_3);\n      }\n      if (iVar1 != 0) {\n        if (iVar9 < 0) {\n          iVar1 = param_3 - iVar1;\n          *(int *)param_1[2] = iVar1;\n          param_1[1] = 1;\n        }\n        else {\n          *(int *)param_1[2] = iVar1;\n          param_1[1] = 1;\n        }\n        return iVar1;\n      }\n    }" (if "if") (parenthesized_expression "(iVar9 != 0)" (( "(") (binary_expression "iVar9 != 0" (identifier "iVar9") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      if (iVar9 < 0) {\n        iVar1 = (*(code *)PTR___gmpn_mod_1_000974c0)(*(undefined4 *)(param_2 + 8),-iVar9,param_3);\n      }\n      else {\n        iVar1 = (*(code *)PTR___gmpn_mod_1_000974c0)(*(undefined4 *)(param_2 + 8),iVar9,param_3);\n      }\n      if (iVar1 != 0) {\n        if (iVar9 < 0) {\n          iVar1 = param_3 - iVar1;\n          *(int *)param_1[2] = iVar1;\n          param_1[1] = 1;\n        }\n        else {\n          *(int *)param_1[2] = iVar1;\n          param_1[1] = 1;\n        }\n        return iVar1;\n      }\n    }" ({ "{") (if_statement "if (iVar9 < 0) {\n        iVar1 = (*(code *)PTR___gmpn_mod_1_000974c0)(*(undefined4 *)(param_2 + 8),-iVar9,param_3);\n      }\n      else {\n        iVar1 = (*(code *)PTR___gmpn_mod_1_000974c0)(*(undefined4 *)(param_2 + 8),iVar9,param_3);\n      }" (if "if") (parenthesized_expression "(iVar9 < 0)" (( "(") (binary_expression "iVar9 < 0" (identifier "iVar9") (< "<") (number_literal "0")) () ")")) (compound_statement "{\n        iVar1 = (*(code *)PTR___gmpn_mod_1_000974c0)(*(undefined4 *)(param_2 + 8),-iVar9,param_3);\n      }" ({ "{") (expression_statement "iVar1 = (*(code *)PTR___gmpn_mod_1_000974c0)(*(undefined4 *)(param_2 + 8),-iVar9,param_3);" (assignment_expression "iVar1 = (*(code *)PTR___gmpn_mod_1_000974c0)(*(undefined4 *)(param_2 + 8),-iVar9,param_3)" (identifier "iVar1") (= "=") (call_expression "(*(code *)PTR___gmpn_mod_1_000974c0)(*(undefined4 *)(param_2 + 8),-iVar9,param_3)" (parenthesized_expression "(*(code *)PTR___gmpn_mod_1_000974c0)" (( "(") (pointer_expression "*(code *)PTR___gmpn_mod_1_000974c0" (* "*") (cast_expression "(code *)PTR___gmpn_mod_1_000974c0" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___gmpn_mod_1_000974c0"))) () ")")) (argument_list "(*(undefined4 *)(param_2 + 8),-iVar9,param_3)" (( "(") (pointer_expression "*(undefined4 *)(param_2 + 8)" (* "*") (cast_expression "(undefined4 *)(param_2 + 8)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 8)" (( "(") (binary_expression "param_2 + 8" (identifier "param_2") (+ "+") (number_literal "8")) () ")")))) (, ",") (unary_expression "-iVar9" (- "-") (identifier "iVar9")) (, ",") (identifier "param_3") () ")")))) (; ";")) (} "}")) (else_clause "else {\n        iVar1 = (*(code *)PTR___gmpn_mod_1_000974c0)(*(undefined4 *)(param_2 + 8),iVar9,param_3);\n      }" (else "else") (compound_statement "{\n        iVar1 = (*(code *)PTR___gmpn_mod_1_000974c0)(*(undefined4 *)(param_2 + 8),iVar9,param_3);\n      }" ({ "{") (expression_statement "iVar1 = (*(code *)PTR___gmpn_mod_1_000974c0)(*(undefined4 *)(param_2 + 8),iVar9,param_3);" (assignment_expression "iVar1 = (*(code *)PTR___gmpn_mod_1_000974c0)(*(undefined4 *)(param_2 + 8),iVar9,param_3)" (identifier "iVar1") (= "=") (call_expression "(*(code *)PTR___gmpn_mod_1_000974c0)(*(undefined4 *)(param_2 + 8),iVar9,param_3)" (parenthesized_expression "(*(code *)PTR___gmpn_mod_1_000974c0)" (( "(") (pointer_expression "*(code *)PTR___gmpn_mod_1_000974c0" (* "*") (cast_expression "(code *)PTR___gmpn_mod_1_000974c0" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___gmpn_mod_1_000974c0"))) () ")")) (argument_list "(*(undefined4 *)(param_2 + 8),iVar9,param_3)" (( "(") (pointer_expression "*(undefined4 *)(param_2 + 8)" (* "*") (cast_expression "(undefined4 *)(param_2 + 8)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 8)" (( "(") (binary_expression "param_2 + 8" (identifier "param_2") (+ "+") (number_literal "8")) () ")")))) (, ",") (identifier "iVar9") (, ",") (identifier "param_3") () ")")))) (; ";")) (} "}")))) (if_statement "if (iVar1 != 0) {\n        if (iVar9 < 0) {\n          iVar1 = param_3 - iVar1;\n          *(int *)param_1[2] = iVar1;\n          param_1[1] = 1;\n        }\n        else {\n          *(int *)param_1[2] = iVar1;\n          param_1[1] = 1;\n        }\n        return iVar1;\n      }" (if "if") (parenthesized_expression "(iVar1 != 0)" (( "(") (binary_expression "iVar1 != 0" (identifier "iVar1") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n        if (iVar9 < 0) {\n          iVar1 = param_3 - iVar1;\n          *(int *)param_1[2] = iVar1;\n          param_1[1] = 1;\n        }\n        else {\n          *(int *)param_1[2] = iVar1;\n          param_1[1] = 1;\n        }\n        return iVar1;\n      }" ({ "{") (if_statement "if (iVar9 < 0) {\n          iVar1 = param_3 - iVar1;\n          *(int *)param_1[2] = iVar1;\n          param_1[1] = 1;\n        }\n        else {\n          *(int *)param_1[2] = iVar1;\n          param_1[1] = 1;\n        }" (if "if") (parenthesized_expression "(iVar9 < 0)" (( "(") (binary_expression "iVar9 < 0" (identifier "iVar9") (< "<") (number_literal "0")) () ")")) (compound_statement "{\n          iVar1 = param_3 - iVar1;\n          *(int *)param_1[2] = iVar1;\n          param_1[1] = 1;\n        }" ({ "{") (expression_statement "iVar1 = param_3 - iVar1;" (assignment_expression "iVar1 = param_3 - iVar1" (identifier "iVar1") (= "=") (binary_expression "param_3 - iVar1" (identifier "param_3") (- "-") (identifier "iVar1"))) (; ";")) (expression_statement "*(int *)param_1[2] = iVar1;" (assignment_expression "*(int *)param_1[2] = iVar1" (pointer_expression "*(int *)param_1[2]" (* "*") (cast_expression "(int *)param_1[2]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_1[2]" (identifier "param_1") ([ "[") (number_literal "2") (] "]")))) (= "=") (identifier "iVar1")) (; ";")) (expression_statement "param_1[1] = 1;" (assignment_expression "param_1[1] = 1" (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]")) (= "=") (number_literal "1")) (; ";")) (} "}")) (else_clause "else {\n          *(int *)param_1[2] = iVar1;\n          param_1[1] = 1;\n        }" (else "else") (compound_statement "{\n          *(int *)param_1[2] = iVar1;\n          param_1[1] = 1;\n        }" ({ "{") (expression_statement "*(int *)param_1[2] = iVar1;" (assignment_expression "*(int *)param_1[2] = iVar1" (pointer_expression "*(int *)param_1[2]" (* "*") (cast_expression "(int *)param_1[2]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_1[2]" (identifier "param_1") ([ "[") (number_literal "2") (] "]")))) (= "=") (identifier "iVar1")) (; ";")) (expression_statement "param_1[1] = 1;" (assignment_expression "param_1[1] = 1" (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]")) (= "=") (number_literal "1")) (; ";")) (} "}")))) (return_statement "return iVar1;" (return "return") (identifier "iVar1") (; ";")) (} "}"))) (} "}"))) (expression_statement "param_1[1] = 0;" (assignment_expression "param_1[1] = 0" (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]")) (= "=") (number_literal "0")) (; ";")) (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (expression_statement "puVar17 = PTR___gmp_divide_by_zero_000975dc;" (assignment_expression "puVar17 = PTR___gmp_divide_by_zero_000975dc" (identifier "puVar17") (= "=") (identifier "PTR___gmp_divide_by_zero_000975dc")) (; ";")) (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 "apuStack_70[0] = puVar17 + 0x77320;" (assignment_expression "apuStack_70[0] = puVar17 + 0x77320" (subscript_expression "apuStack_70[0]" (identifier "apuStack_70") ([ "[") (number_literal "0") (] "]")) (= "=") (binary_expression "puVar17 + 0x77320" (identifier "puVar17") (+ "+") (number_literal "0x77320"))) (; ";")) (expression_statement "puVar19 = auStack_80;" (assignment_expression "puVar19 = auStack_80" (identifier "puVar19") (= "=") (identifier "auStack_80")) (; ";")) (expression_statement "piVar15 = *(int **)(puVar17 + 0x6f820);" (assignment_expression "piVar15 = *(int **)(puVar17 + 0x6f820)" (identifier "piVar15") (= "=") (pointer_expression "*(int **)(puVar17 + 0x6f820)" (* "*") (cast_expression "(int **)(puVar17 + 0x6f820)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar17 + 0x6f820)" (( "(") (binary_expression "puVar17 + 0x6f820" (identifier "puVar17") (+ "+") (number_literal "0x6f820")) () ")"))))) (; ";")) (expression_statement "uVar10 = *(uint *)(param_3 + 4);" (assignment_expression "uVar10 = *(uint *)(param_3 + 4)" (identifier "uVar10") (= "=") (pointer_expression "*(uint *)(param_3 + 4)" (* "*") (cast_expression "(uint *)(param_3 + 4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + 4)" (( "(") (binary_expression "param_3 + 4" (identifier "param_3") (+ "+") (number_literal "4")) () ")"))))) (; ";")) (expression_statement "piStack_5c = (int *)0x0;" (assignment_expression "piStack_5c = (int *)0x0" (identifier "piStack_5c") (= "=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (expression_statement "iStack_4c = *piVar15;" (assignment_expression "iStack_4c = *piVar15" (identifier "iStack_4c") (= "=") (pointer_expression "*piVar15" (* "*") (identifier "piVar15"))) (; ";")) (expression_statement "uVar12 = *(uint *)(param_2 + 4);" (assignment_expression "uVar12 = *(uint *)(param_2 + 4)" (identifier "uVar12") (= "=") (pointer_expression "*(uint *)(param_2 + 4)" (* "*") (cast_expression "(uint *)(param_2 + 4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 4)" (( "(") (binary_expression "param_2 + 4" (identifier "param_2") (+ "+") (number_literal "4")) () ")"))))) (; ";")) (if_statement "if ((int)uVar10 < 0) {\n    uStack_58 = -uVar10;\n    uVar5 = uVar10 * -4;\n    if (0x7f00 < uVar5) {\n      pcVar18 = *(code **)(puVar17 + 0x6f5d0);\n      goto LAB_00027e2c;\n    }\nLAB_00027d94:\n    iStack_50 = -(uVar5 + 7 & 0xfffffff8);\n    puVar19 = auStack_80 + iStack_50;\n    iStack_50 = (int)apuStack_70 + iStack_50;\n  }\n  else {\n    uVar5 = uVar10 * 4;\n    pcVar18 = *(code **)(puVar17 + 0x6f5d0);\n    uStack_58 = uVar10;\n    if (uVar5 < 0x7f01) goto LAB_00027d94;\nLAB_00027e2c:\n    iStack_64 = param_3;\n    iStack_50 = (*pcVar18)(&piStack_5c,uVar5);\n    param_3 = iStack_64;\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    uStack_58 = -uVar10;\n    uVar5 = uVar10 * -4;\n    if (0x7f00 < uVar5) {\n      pcVar18 = *(code **)(puVar17 + 0x6f5d0);\n      goto LAB_00027e2c;\n    }\nLAB_00027d94:\n    iStack_50 = -(uVar5 + 7 & 0xfffffff8);\n    puVar19 = auStack_80 + iStack_50;\n    iStack_50 = (int)apuStack_70 + iStack_50;\n  }" ({ "{") (expression_statement "uStack_58 = -uVar10;" (assignment_expression "uStack_58 = -uVar10" (identifier "uStack_58") (= "=") (unary_expression "-uVar10" (- "-") (identifier "uVar10"))) (; ";")) (expression_statement "uVar5 = uVar10 * -4;" (assignment_expression "uVar5 = uVar10 * -4" (identifier "uVar5") (= "=") (binary_expression "uVar10 * -4" (identifier "uVar10") (* "*") (number_literal "-4"))) (; ";")) (if_statement "if (0x7f00 < uVar5) {\n      pcVar18 = *(code **)(puVar17 + 0x6f5d0);\n      goto LAB_00027e2c;\n    }" (if "if") (parenthesized_expression "(0x7f00 < uVar5)" (( "(") (binary_expression "0x7f00 < uVar5" (number_literal "0x7f00") (< "<") (identifier "uVar5")) () ")")) (compound_statement "{\n      pcVar18 = *(code **)(puVar17 + 0x6f5d0);\n      goto LAB_00027e2c;\n    }" ({ "{") (expression_statement "pcVar18 = *(code **)(puVar17 + 0x6f5d0);" (assignment_expression "pcVar18 = *(code **)(puVar17 + 0x6f5d0)" (identifier "pcVar18") (= "=") (pointer_expression "*(code **)(puVar17 + 0x6f5d0)" (* "*") (cast_expression "(code **)(puVar17 + 0x6f5d0)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar17 + 0x6f5d0)" (( "(") (binary_expression "puVar17 + 0x6f5d0" (identifier "puVar17") (+ "+") (number_literal "0x6f5d0")) () ")"))))) (; ";")) (goto_statement "goto LAB_00027e2c;" (goto "goto") (statement_identifier "LAB_00027e2c") (; ";")) (} "}"))) (labeled_statement "LAB_00027d94:\n    iStack_50 = -(uVar5 + 7 & 0xfffffff8);" (statement_identifier "LAB_00027d94") (: ":") (expression_statement "iStack_50 = -(uVar5 + 7 & 0xfffffff8);" (assignment_expression "iStack_50 = -(uVar5 + 7 & 0xfffffff8)" (identifier "iStack_50") (= "=") (unary_expression "-(uVar5 + 7 & 0xfffffff8)" (- "-") (parenthesized_expression "(uVar5 + 7 & 0xfffffff8)" (( "(") (binary_expression "uVar5 + 7 & 0xfffffff8" (binary_expression "uVar5 + 7" (identifier "uVar5") (+ "+") (number_literal "7")) (& "&") (number_literal "0xfffffff8")) () ")")))) (; ";"))) (expression_statement "puVar19 = auStack_80 + iStack_50;" (assignment_expression "puVar19 = auStack_80 + iStack_50" (identifier "puVar19") (= "=") (binary_expression "auStack_80 + iStack_50" (identifier "auStack_80") (+ "+") (identifier "iStack_50"))) (; ";")) (expression_statement "iStack_50 = (int)apuStack_70 + iStack_50;" (assignment_expression "iStack_50 = (int)apuStack_70 + iStack_50" (identifier "iStack_50") (= "=") (binary_expression "(int)apuStack_70 + iStack_50" (cast_expression "(int)apuStack_70" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "apuStack_70")) (+ "+") (identifier "iStack_50"))) (; ";")) (} "}")) (else_clause "else {\n    uVar5 = uVar10 * 4;\n    pcVar18 = *(code **)(puVar17 + 0x6f5d0);\n    uStack_58 = uVar10;\n    if (uVar5 < 0x7f01) goto LAB_00027d94;\nLAB_00027e2c:\n    iStack_64 = param_3;\n    iStack_50 = (*pcVar18)(&piStack_5c,uVar5);\n    param_3 = iStack_64;\n  }" (else "else") (compound_statement "{\n    uVar5 = uVar10 * 4;\n    pcVar18 = *(code **)(puVar17 + 0x6f5d0);\n    uStack_58 = uVar10;\n    if (uVar5 < 0x7f01) goto LAB_00027d94;\nLAB_00027e2c:\n    iStack_64 = param_3;\n    iStack_50 = (*pcVar18)(&piStack_5c,uVar5);\n    param_3 = iStack_64;\n  }" ({ "{") (expression_statement "uVar5 = uVar10 * 4;" (assignment_expression "uVar5 = uVar10 * 4" (identifier "uVar5") (= "=") (binary_expression "uVar10 * 4" (identifier "uVar10") (* "*") (number_literal "4"))) (; ";")) (expression_statement "pcVar18 = *(code **)(puVar17 + 0x6f5d0);" (assignment_expression "pcVar18 = *(code **)(puVar17 + 0x6f5d0)" (identifier "pcVar18") (= "=") (pointer_expression "*(code **)(puVar17 + 0x6f5d0)" (* "*") (cast_expression "(code **)(puVar17 + 0x6f5d0)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar17 + 0x6f5d0)" (( "(") (binary_expression "puVar17 + 0x6f5d0" (identifier "puVar17") (+ "+") (number_literal "0x6f5d0")) () ")"))))) (; ";")) (expression_statement "uStack_58 = uVar10;" (assignment_expression "uStack_58 = uVar10" (identifier "uStack_58") (= "=") (identifier "uVar10")) (; ";")) (if_statement "if (uVar5 < 0x7f01) goto LAB_00027d94;" (if "if") (parenthesized_expression "(uVar5 < 0x7f01)" (( "(") (binary_expression "uVar5 < 0x7f01" (identifier "uVar5") (< "<") (number_literal "0x7f01")) () ")")) (goto_statement "goto LAB_00027d94;" (goto "goto") (statement_identifier "LAB_00027d94") (; ";"))) (labeled_statement "LAB_00027e2c:\n    iStack_64 = param_3;" (statement_identifier "LAB_00027e2c") (: ":") (expression_statement "iStack_64 = param_3;" (assignment_expression "iStack_64 = param_3" (identifier "iStack_64") (= "=") (identifier "param_3")) (; ";"))) (expression_statement "iStack_50 = (*pcVar18)(&piStack_5c,uVar5);" (assignment_expression "iStack_50 = (*pcVar18)(&piStack_5c,uVar5)" (identifier "iStack_50") (= "=") (call_expression "(*pcVar18)(&piStack_5c,uVar5)" (parenthesized_expression "(*pcVar18)" (( "(") (pointer_expression "*pcVar18" (* "*") (identifier "pcVar18")) () ")")) (argument_list "(&piStack_5c,uVar5)" (( "(") (pointer_expression "&piStack_5c" (& "&") (identifier "piStack_5c")) (, ",") (identifier "uVar5") () ")")))) (; ";")) (expression_statement "param_3 = iStack_64;" (assignment_expression "param_3 = iStack_64" (identifier "param_3") (= "=") (identifier "iStack_64")) (; ";")) (} "}")))) (expression_statement "puVar6 = &uStack_58;" (assignment_expression "puVar6 = &uStack_58" (identifier "puVar6") (= "=") (pointer_expression "&uStack_58" (& "&") (identifier "uStack_58"))) (; ";")) (expression_statement "piVar11 = (int *)(uVar12 ^ uVar10);" (assignment_expression "piVar11 = (int *)(uVar12 ^ uVar10)" (identifier "piVar11") (= "=") (cast_expression "(int *)(uVar12 ^ uVar10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar12 ^ uVar10)" (( "(") (binary_expression "uVar12 ^ uVar10" (identifier "uVar12") (^ "^") (identifier "uVar10")) () ")")))) (; ";")) (expression_statement "uVar10 = param_2;" (assignment_expression "uVar10 = param_2" (identifier "uVar10") (= "=") (identifier "param_2")) (; ";")) (expression_statement "(**(code **)(apuStack_70[0] + -0x7a6c))(param_1,puVar6,param_2,param_3);" (call_expression "(**(code **)(apuStack_70[0] + -0x7a6c))(param_1,puVar6,param_2,param_3)" (parenthesized_expression "(**(code **)(apuStack_70[0] + -0x7a6c))" (( "(") (pointer_expression "**(code **)(apuStack_70[0] + -0x7a6c)" (* "*") (pointer_expression "*(code **)(apuStack_70[0] + -0x7a6c)" (* "*") (cast_expression "(code **)(apuStack_70[0] + -0x7a6c)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(apuStack_70[0] + -0x7a6c)" (( "(") (binary_expression "apuStack_70[0] + -0x7a6c" (subscript_expression "apuStack_70[0]" (identifier "apuStack_70") ([ "[") (number_literal "0") (] "]")) (+ "+") (number_literal "-0x7a6c")) () ")"))))) () ")")) (argument_list "(param_1,puVar6,param_2,param_3)" (( "(") (identifier "param_1") (, ",") (identifier "puVar6") (, ",") (identifier "param_2") (, ",") (identifier "param_3") () ")"))) (; ";")) (if_statement "if (((int)piVar11 < 0) && (iStack_54 != 0)) {\n    uVar10 = 1;\n    puVar6 = param_1;\n    (**(code **)(apuStack_70[0] + -0x7ac0))(param_1);\n    piVar3 = piStack_5c;\n    if (piStack_5c == (int *)0x0) goto LAB_00027dd8;\n    pcVar18 = *(code **)(apuStack_70[0] + -0x7a2c);\n  }\n  else {\n    pcVar18 = *(code **)(apuStack_70[0] + -0x7a2c);\n    piVar3 = piStack_5c;\n    if (piStack_5c == (int *)0x0) goto LAB_00027dd8;\n  }" (if "if") (parenthesized_expression "(((int)piVar11 < 0) && (iStack_54 != 0))" (( "(") (binary_expression "((int)piVar11 < 0) && (iStack_54 != 0)" (parenthesized_expression "((int)piVar11 < 0)" (( "(") (binary_expression "(int)piVar11 < 0" (cast_expression "(int)piVar11" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar11")) (< "<") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(iStack_54 != 0)" (( "(") (binary_expression "iStack_54 != 0" (identifier "iStack_54") (!= "!=") (number_literal "0")) () ")"))) () ")")) (compound_statement "{\n    uVar10 = 1;\n    puVar6 = param_1;\n    (**(code **)(apuStack_70[0] + -0x7ac0))(param_1);\n    piVar3 = piStack_5c;\n    if (piStack_5c == (int *)0x0) goto LAB_00027dd8;\n    pcVar18 = *(code **)(apuStack_70[0] + -0x7a2c);\n  }" ({ "{") (expression_statement "uVar10 = 1;" (assignment_expression "uVar10 = 1" (identifier "uVar10") (= "=") (number_literal "1")) (; ";")) (expression_statement "puVar6 = param_1;" (assignment_expression "puVar6 = param_1" (identifier "puVar6") (= "=") (identifier "param_1")) (; ";")) (expression_statement "(**(code **)(apuStack_70[0] + -0x7ac0))(param_1);" (call_expression "(**(code **)(apuStack_70[0] + -0x7ac0))(param_1)" (parenthesized_expression "(**(code **)(apuStack_70[0] + -0x7ac0))" (( "(") (pointer_expression "**(code **)(apuStack_70[0] + -0x7ac0)" (* "*") (pointer_expression "*(code **)(apuStack_70[0] + -0x7ac0)" (* "*") (cast_expression "(code **)(apuStack_70[0] + -0x7ac0)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(apuStack_70[0] + -0x7ac0)" (( "(") (binary_expression "apuStack_70[0] + -0x7ac0" (subscript_expression "apuStack_70[0]" (identifier "apuStack_70") ([ "[") (number_literal "0") (] "]")) (+ "+") (number_literal "-0x7ac0")) () ")"))))) () ")")) (argument_list "(param_1)" (( "(") (identifier "param_1") () ")"))) (; ";")) (expression_statement "piVar3 = piStack_5c;" (assignment_expression "piVar3 = piStack_5c" (identifier "piVar3") (= "=") (identifier "piStack_5c")) (; ";")) (if_statement "if (piStack_5c == (int *)0x0) goto LAB_00027dd8;" (if "if") (parenthesized_expression "(piStack_5c == (int *)0x0)" (( "(") (binary_expression "piStack_5c == (int *)0x0" (identifier "piStack_5c") (== "==") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (goto_statement "goto LAB_00027dd8;" (goto "goto") (statement_identifier "LAB_00027dd8") (; ";"))) (expression_statement "pcVar18 = *(code **)(apuStack_70[0] + -0x7a2c);" (assignment_expression "pcVar18 = *(code **)(apuStack_70[0] + -0x7a2c)" (identifier "pcVar18") (= "=") (pointer_expression "*(code **)(apuStack_70[0] + -0x7a2c)" (* "*") (cast_expression "(code **)(apuStack_70[0] + -0x7a2c)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(apuStack_70[0] + -0x7a2c)" (( "(") (binary_expression "apuStack_70[0] + -0x7a2c" (subscript_expression "apuStack_70[0]" (identifier "apuStack_70") ([ "[") (number_literal "0") (] "]")) (+ "+") (number_literal "-0x7a2c")) () ")"))))) (; ";")) (} "}")) (else_clause "else {\n    pcVar18 = *(code **)(apuStack_70[0] + -0x7a2c);\n    piVar3 = piStack_5c;\n    if (piStack_5c == (int *)0x0) goto LAB_00027dd8;\n  }" (else "else") (compound_statement "{\n    pcVar18 = *(code **)(apuStack_70[0] + -0x7a2c);\n    piVar3 = piStack_5c;\n    if (piStack_5c == (int *)0x0) goto LAB_00027dd8;\n  }" ({ "{") (expression_statement "pcVar18 = *(code **)(apuStack_70[0] + -0x7a2c);" (assignment_expression "pcVar18 = *(code **)(apuStack_70[0] + -0x7a2c)" (identifier "pcVar18") (= "=") (pointer_expression "*(code **)(apuStack_70[0] + -0x7a2c)" (* "*") (cast_expression "(code **)(apuStack_70[0] + -0x7a2c)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(apuStack_70[0] + -0x7a2c)" (( "(") (binary_expression "apuStack_70[0] + -0x7a2c" (subscript_expression "apuStack_70[0]" (identifier "apuStack_70") ([ "[") (number_literal "0") (] "]")) (+ "+") (number_literal "-0x7a2c")) () ")"))))) (; ";")) (expression_statement "piVar3 = piStack_5c;" (assignment_expression "piVar3 = piStack_5c" (identifier "piVar3") (= "=") (identifier "piStack_5c")) (; ";")) (if_statement "if (piStack_5c == (int *)0x0) goto LAB_00027dd8;" (if "if") (parenthesized_expression "(piStack_5c == (int *)0x0)" (( "(") (binary_expression "piStack_5c == (int *)0x0" (identifier "piStack_5c") (== "==") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (goto_statement "goto LAB_00027dd8;" (goto "goto") (statement_identifier "LAB_00027dd8") (; ";"))) (} "}")))) (expression_statement "piVar3 = piStack_5c;" (assignment_expression "piVar3 = piStack_5c" (identifier "piVar3") (= "=") (identifier "piStack_5c")) (; ";")) (expression_statement "(*pcVar18)();" (call_expression "(*pcVar18)()" (parenthesized_expression "(*pcVar18)" (( "(") (pointer_expression "*pcVar18" (* "*") (identifier "pcVar18")) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (labeled_statement "LAB_00027dd8:\n  if (iStack_4c == *piVar15) {\n    return *piVar15;\n  }" (statement_identifier "LAB_00027dd8") (: ":") (if_statement "if (iStack_4c == *piVar15) {\n    return *piVar15;\n  }" (if "if") (parenthesized_expression "(iStack_4c == *piVar15)" (( "(") (binary_expression "iStack_4c == *piVar15" (identifier "iStack_4c") (== "==") (pointer_expression "*piVar15" (* "*") (identifier "piVar15"))) () ")")) (compound_statement "{\n    return *piVar15;\n  }" ({ "{") (return_statement "return *piVar15;" (return "return") (pointer_expression "*piVar15" (* "*") (identifier "piVar15")) (; ";")) (} "}")))) (expression_statement "pcVar18 = *(code **)(apuStack_70[0] + -0x7b70);" (assignment_expression "pcVar18 = *(code **)(apuStack_70[0] + -0x7b70)" (identifier "pcVar18") (= "=") (pointer_expression "*(code **)(apuStack_70[0] + -0x7b70)" (* "*") (cast_expression "(code **)(apuStack_70[0] + -0x7b70)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(apuStack_70[0] + -0x7b70)" (( "(") (binary_expression "apuStack_70[0] + -0x7b70" (subscript_expression "apuStack_70[0]" (identifier "apuStack_70") ([ "[") (number_literal "0") (] "]")) (+ "+") (number_literal "-0x7b70")) () ")"))))) (; ";")) (expression_statement "pcVar21 = __gmpz_fdiv_ui;" (assignment_expression "pcVar21 = __gmpz_fdiv_ui" (identifier "pcVar21") (= "=") (identifier "__gmpz_fdiv_ui")) (; ";")) (expression_statement "(*pcVar18)();" (call_expression "(*pcVar18)()" (parenthesized_expression "(*pcVar18)" (( "(") (pointer_expression "*pcVar18" (* "*") (identifier "pcVar18")) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "*(code **)(puVar19 + -0x18) = pcVar18 + 0x771b0;" (assignment_expression "*(code **)(puVar19 + -0x18) = pcVar18 + 0x771b0" (pointer_expression "*(code **)(puVar19 + -0x18)" (* "*") (cast_expression "(code **)(puVar19 + -0x18)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar19 + -0x18)" (( "(") (binary_expression "puVar19 + -0x18" (identifier "puVar19") (+ "+") (number_literal "-0x18")) () ")")))) (= "=") (binary_expression "pcVar18 + 0x771b0" (identifier "pcVar18") (+ "+") (number_literal "0x771b0"))) (; ";")) (expression_statement "*(code **)(puVar19 + -4) = pcVar21;" (assignment_expression "*(code **)(puVar19 + -4) = pcVar21" (pointer_expression "*(code **)(puVar19 + -4)" (* "*") (cast_expression "(code **)(puVar19 + -4)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar19 + -4)" (( "(") (binary_expression "puVar19 + -4" (identifier "puVar19") (+ "+") (number_literal "-4")) () ")")))) (= "=") (identifier "pcVar21")) (; ";")) (expression_statement "*(uint *)(puVar19 + -8) = uVar12;" (assignment_expression "*(uint *)(puVar19 + -8) = uVar12" (pointer_expression "*(uint *)(puVar19 + -8)" (* "*") (cast_expression "(uint *)(puVar19 + -8)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar19 + -8)" (( "(") (binary_expression "puVar19 + -8" (identifier "puVar19") (+ "+") (number_literal "-8")) () ")")))) (= "=") (identifier "uVar12")) (; ";")) (expression_statement "*(int **)(puVar19 + -0xc) = piVar11;" (assignment_expression "*(int **)(puVar19 + -0xc) = piVar11" (pointer_expression "*(int **)(puVar19 + -0xc)" (* "*") (cast_expression "(int **)(puVar19 + -0xc)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar19 + -0xc)" (( "(") (binary_expression "puVar19 + -0xc" (identifier "puVar19") (+ "+") (number_literal "-0xc")) () ")")))) (= "=") (identifier "piVar11")) (; ";")) (if_statement "if (puVar6 != (uint *)0x0) {\n    iVar9 = piVar3[1];\n    if (iVar9 == 0) {\n      return 0;\n    }\n    if (iVar9 < 0) {\n      iVar1 = (**(code **)(pcVar18 + 0x6f630))(piVar3[2],-iVar9,puVar6);\n    }\n    else {\n      iVar1 = (**(code **)(pcVar18 + 0x6f630))(piVar3[2],iVar9,puVar6);\n    }\n    if (iVar1 != 0) {\n      if (iVar9 < 0) {\n        return (int)puVar6 - iVar1;\n      }\n    }\n    return iVar1;\n  }" (if "if") (parenthesized_expression "(puVar6 != (uint *)0x0)" (( "(") (binary_expression "puVar6 != (uint *)0x0" (identifier "puVar6") (!= "!=") (cast_expression "(uint *)0x0" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n    iVar9 = piVar3[1];\n    if (iVar9 == 0) {\n      return 0;\n    }\n    if (iVar9 < 0) {\n      iVar1 = (**(code **)(pcVar18 + 0x6f630))(piVar3[2],-iVar9,puVar6);\n    }\n    else {\n      iVar1 = (**(code **)(pcVar18 + 0x6f630))(piVar3[2],iVar9,puVar6);\n    }\n    if (iVar1 != 0) {\n      if (iVar9 < 0) {\n        return (int)puVar6 - iVar1;\n      }\n    }\n    return iVar1;\n  }" ({ "{") (expression_statement "iVar9 = piVar3[1];" (assignment_expression "iVar9 = piVar3[1]" (identifier "iVar9") (= "=") (subscript_expression "piVar3[1]" (identifier "piVar3") ([ "[") (number_literal "1") (] "]"))) (; ";")) (if_statement "if (iVar9 == 0) {\n      return 0;\n    }" (if "if") (parenthesized_expression "(iVar9 == 0)" (( "(") (binary_expression "iVar9 == 0" (identifier "iVar9") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      return 0;\n    }" ({ "{") (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (if_statement "if (iVar9 < 0) {\n      iVar1 = (**(code **)(pcVar18 + 0x6f630))(piVar3[2],-iVar9,puVar6);\n    }\n    else {\n      iVar1 = (**(code **)(pcVar18 + 0x6f630))(piVar3[2],iVar9,puVar6);\n    }" (if "if") (parenthesized_expression "(iVar9 < 0)" (( "(") (binary_expression "iVar9 < 0" (identifier "iVar9") (< "<") (number_literal "0")) () ")")) (compound_statement "{\n      iVar1 = (**(code **)(pcVar18 + 0x6f630))(piVar3[2],-iVar9,puVar6);\n    }" ({ "{") (expression_statement "iVar1 = (**(code **)(pcVar18 + 0x6f630))(piVar3[2],-iVar9,puVar6);" (assignment_expression "iVar1 = (**(code **)(pcVar18 + 0x6f630))(piVar3[2],-iVar9,puVar6)" (identifier "iVar1") (= "=") (call_expression "(**(code **)(pcVar18 + 0x6f630))(piVar3[2],-iVar9,puVar6)" (parenthesized_expression "(**(code **)(pcVar18 + 0x6f630))" (( "(") (pointer_expression "**(code **)(pcVar18 + 0x6f630)" (* "*") (pointer_expression "*(code **)(pcVar18 + 0x6f630)" (* "*") (cast_expression "(code **)(pcVar18 + 0x6f630)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(pcVar18 + 0x6f630)" (( "(") (binary_expression "pcVar18 + 0x6f630" (identifier "pcVar18") (+ "+") (number_literal "0x6f630")) () ")"))))) () ")")) (argument_list "(piVar3[2],-iVar9,puVar6)" (( "(") (subscript_expression "piVar3[2]" (identifier "piVar3") ([ "[") (number_literal "2") (] "]")) (, ",") (unary_expression "-iVar9" (- "-") (identifier "iVar9")) (, ",") (identifier "puVar6") () ")")))) (; ";")) (} "}")) (else_clause "else {\n      iVar1 = (**(code **)(pcVar18 + 0x6f630))(piVar3[2],iVar9,puVar6);\n    }" (else "else") (compound_statement "{\n      iVar1 = (**(code **)(pcVar18 + 0x6f630))(piVar3[2],iVar9,puVar6);\n    }" ({ "{") (expression_statement "iVar1 = (**(code **)(pcVar18 + 0x6f630))(piVar3[2],iVar9,puVar6);" (assignment_expression "iVar1 = (**(code **)(pcVar18 + 0x6f630))(piVar3[2],iVar9,puVar6)" (identifier "iVar1") (= "=") (call_expression "(**(code **)(pcVar18 + 0x6f630))(piVar3[2],iVar9,puVar6)" (parenthesized_expression "(**(code **)(pcVar18 + 0x6f630))" (( "(") (pointer_expression "**(code **)(pcVar18 + 0x6f630)" (* "*") (pointer_expression "*(code **)(pcVar18 + 0x6f630)" (* "*") (cast_expression "(code **)(pcVar18 + 0x6f630)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(pcVar18 + 0x6f630)" (( "(") (binary_expression "pcVar18 + 0x6f630" (identifier "pcVar18") (+ "+") (number_literal "0x6f630")) () ")"))))) () ")")) (argument_list "(piVar3[2],iVar9,puVar6)" (( "(") (subscript_expression "piVar3[2]" (identifier "piVar3") ([ "[") (number_literal "2") (] "]")) (, ",") (identifier "iVar9") (, ",") (identifier "puVar6") () ")")))) (; ";")) (} "}")))) (if_statement "if (iVar1 != 0) {\n      if (iVar9 < 0) {\n        return (int)puVar6 - iVar1;\n      }\n    }" (if "if") (parenthesized_expression "(iVar1 != 0)" (( "(") (binary_expression "iVar1 != 0" (identifier "iVar1") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      if (iVar9 < 0) {\n        return (int)puVar6 - iVar1;\n      }\n    }" ({ "{") (if_statement "if (iVar9 < 0) {\n        return (int)puVar6 - iVar1;\n      }" (if "if") (parenthesized_expression "(iVar9 < 0)" (( "(") (binary_expression "iVar9 < 0" (identifier "iVar9") (< "<") (number_literal "0")) () ")")) (compound_statement "{\n        return (int)puVar6 - iVar1;\n      }" ({ "{") (return_statement "return (int)puVar6 - iVar1;" (return "return") (binary_expression "(int)puVar6 - iVar1" (cast_expression "(int)puVar6" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar6")) (- "-") (identifier "iVar1")) (; ";")) (} "}"))) (} "}"))) (return_statement "return iVar1;" (return "return") (identifier "iVar1") (; ";")) (} "}"))) (expression_statement "pcVar18 = *(code **)(pcVar18 + 0x6f74c);" (assignment_expression "pcVar18 = *(code **)(pcVar18 + 0x6f74c)" (identifier "pcVar18") (= "=") (pointer_expression "*(code **)(pcVar18 + 0x6f74c)" (* "*") (cast_expression "(code **)(pcVar18 + 0x6f74c)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(pcVar18 + 0x6f74c)" (( "(") (binary_expression "pcVar18 + 0x6f74c" (identifier "pcVar18") (+ "+") (number_literal "0x6f74c")) () ")"))))) (; ";")) (expression_statement "uVar22 = 0x27f54;" (assignment_expression "uVar22 = 0x27f54" (identifier "uVar22") (= "=") (number_literal "0x27f54")) (; ";")) (expression_statement "(*pcVar18)();" (call_expression "(*pcVar18)()" (parenthesized_expression "(*pcVar18)" (( "(") (pointer_expression "*pcVar18" (* "*") (identifier "pcVar18")) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "pcVar21 = pcVar18 + 0x770e0;" (assignment_expression "pcVar21 = pcVar18 + 0x770e0" (identifier "pcVar21") (= "=") (binary_expression "pcVar18 + 0x770e0" (identifier "pcVar18") (+ "+") (number_literal "0x770e0"))) (; ";")) (expression_statement "puVar16 = puVar19 + -0x80;" (assignment_expression "puVar16 = puVar19 + -0x80" (identifier "puVar16") (= "=") (binary_expression "puVar19 + -0x80" (identifier "puVar19") (+ "+") (number_literal "-0x80"))) (; ";")) (expression_statement "puVar20 = puVar19 + -0x80;" (assignment_expression "puVar20 = puVar19 + -0x80" (identifier "puVar20") (= "=") (binary_expression "puVar19 + -0x80" (identifier "puVar19") (+ "+") (number_literal "-0x80"))) (; ";")) (expression_statement "*(uint *)(puVar19 + -0x4c) = uVar12;" (assignment_expression "*(uint *)(puVar19 + -0x4c) = uVar12" (pointer_expression "*(uint *)(puVar19 + -0x4c)" (* "*") (cast_expression "(uint *)(puVar19 + -0x4c)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar19 + -0x4c)" (( "(") (binary_expression "puVar19 + -0x4c" (identifier "puVar19") (+ "+") (number_literal "-0x4c")) () ")")))) (= "=") (identifier "uVar12")) (; ";")) (expression_statement "*(undefined4 *)(puVar19 + -0x38) = unaff_s6;" (assignment_expression "*(undefined4 *)(puVar19 + -0x38) = unaff_s6" (pointer_expression "*(undefined4 *)(puVar19 + -0x38)" (* "*") (cast_expression "(undefined4 *)(puVar19 + -0x38)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar19 + -0x38)" (( "(") (binary_expression "puVar19 + -0x38" (identifier "puVar19") (+ "+") (number_literal "-0x38")) () ")")))) (= "=") (identifier "unaff_s6")) (; ";")) (expression_statement "piVar13 = *(int **)(pcVar18 + 0x6f5e0);" (assignment_expression "piVar13 = *(int **)(pcVar18 + 0x6f5e0)" (identifier "piVar13") (= "=") (pointer_expression "*(int **)(pcVar18 + 0x6f5e0)" (* "*") (cast_expression "(int **)(pcVar18 + 0x6f5e0)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(pcVar18 + 0x6f5e0)" (( "(") (binary_expression "pcVar18 + 0x6f5e0" (identifier "pcVar18") (+ "+") (number_literal "0x6f5e0")) () ")"))))) (; ";")) (expression_statement "*(undefined1 **)(puVar19 + -0x30) = auStack_80;" (assignment_expression "*(undefined1 **)(puVar19 + -0x30) = auStack_80" (pointer_expression "*(undefined1 **)(puVar19 + -0x30)" (* "*") (cast_expression "(undefined1 **)(puVar19 + -0x30)" (( "(") (type_descriptor "undefined1 **" (type_identifier "undefined1") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar19 + -0x30)" (( "(") (binary_expression "puVar19 + -0x30" (identifier "puVar19") (+ "+") (number_literal "-0x30")) () ")")))) (= "=") (identifier "auStack_80")) (; ";")) (expression_statement "*(undefined4 *)(puVar19 + -0x3c) = unaff_s5;" (assignment_expression "*(undefined4 *)(puVar19 + -0x3c) = unaff_s5" (pointer_expression "*(undefined4 *)(puVar19 + -0x3c)" (* "*") (cast_expression "(undefined4 *)(puVar19 + -0x3c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar19 + -0x3c)" (( "(") (binary_expression "puVar19 + -0x3c" (identifier "puVar19") (+ "+") (number_literal "-0x3c")) () ")")))) (= "=") (identifier "unaff_s5")) (; ";")) (expression_statement "*(undefined4 *)(puVar19 + -0x2c) = uVar22;" (assignment_expression "*(undefined4 *)(puVar19 + -0x2c) = uVar22" (pointer_expression "*(undefined4 *)(puVar19 + -0x2c)" (* "*") (cast_expression "(undefined4 *)(puVar19 + -0x2c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar19 + -0x2c)" (( "(") (binary_expression "puVar19 + -0x2c" (identifier "puVar19") (+ "+") (number_literal "-0x2c")) () ")")))) (= "=") (identifier "uVar22")) (; ";")) (expression_statement "*(undefined4 *)(puVar19 + -0x34) = unaff_s7;" (assignment_expression "*(undefined4 *)(puVar19 + -0x34) = unaff_s7" (pointer_expression "*(undefined4 *)(puVar19 + -0x34)" (* "*") (cast_expression "(undefined4 *)(puVar19 + -0x34)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar19 + -0x34)" (( "(") (binary_expression "puVar19 + -0x34" (identifier "puVar19") (+ "+") (number_literal "-0x34")) () ")")))) (= "=") (identifier "unaff_s7")) (; ";")) (expression_statement "*(uint *)(puVar19 + -0x40) = param_2;" (assignment_expression "*(uint *)(puVar19 + -0x40) = param_2" (pointer_expression "*(uint *)(puVar19 + -0x40)" (* "*") (cast_expression "(uint *)(puVar19 + -0x40)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar19 + -0x40)" (( "(") (binary_expression "puVar19 + -0x40" (identifier "puVar19") (+ "+") (number_literal "-0x40")) () ")")))) (= "=") (identifier "param_2")) (; ";")) (expression_statement "*(int **)(puVar19 + -0x44) = piVar15;" (assignment_expression "*(int **)(puVar19 + -0x44) = piVar15" (pointer_expression "*(int **)(puVar19 + -0x44)" (* "*") (cast_expression "(int **)(puVar19 + -0x44)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar19 + -0x44)" (( "(") (binary_expression "puVar19 + -0x44" (identifier "puVar19") (+ "+") (number_literal "-0x44")) () ")")))) (= "=") (identifier "piVar15")) (; ";")) (expression_statement "*(uint **)(puVar19 + -0x48) = param_1;" (assignment_expression "*(uint **)(puVar19 + -0x48) = param_1" (pointer_expression "*(uint **)(puVar19 + -0x48)" (* "*") (cast_expression "(uint **)(puVar19 + -0x48)" (( "(") (type_descriptor "uint **" (type_identifier "uint") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar19 + -0x48)" (( "(") (binary_expression "puVar19 + -0x48" (identifier "puVar19") (+ "+") (number_literal "-0x48")) () ")")))) (= "=") (identifier "param_1")) (; ";")) (expression_statement "*(int **)(puVar19 + -0x50) = piVar11;" (assignment_expression "*(int **)(puVar19 + -0x50) = piVar11" (pointer_expression "*(int **)(puVar19 + -0x50)" (* "*") (cast_expression "(int **)(puVar19 + -0x50)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar19 + -0x50)" (( "(") (binary_expression "puVar19 + -0x50" (identifier "puVar19") (+ "+") (number_literal "-0x50")) () ")")))) (= "=") (identifier "piVar11")) (; ";")) (expression_statement "*(code **)(puVar19 + -0x68) = pcVar21;" (assignment_expression "*(code **)(puVar19 + -0x68) = pcVar21" (pointer_expression "*(code **)(puVar19 + -0x68)" (* "*") (cast_expression "(code **)(puVar19 + -0x68)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar19 + -0x68)" (( "(") (binary_expression "puVar19 + -0x68" (identifier "puVar19") (+ "+") (number_literal "-0x68")) () ")")))) (= "=") (identifier "pcVar21")) (; ";")) (expression_statement "*(int *)(puVar19 + -0x54) = *piVar13;" (assignment_expression "*(int *)(puVar19 + -0x54) = *piVar13" (pointer_expression "*(int *)(puVar19 + -0x54)" (* "*") (cast_expression "(int *)(puVar19 + -0x54)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar19 + -0x54)" (( "(") (binary_expression "puVar19 + -0x54" (identifier "puVar19") (+ "+") (number_literal "-0x54")) () ")")))) (= "=") (pointer_expression "*piVar13" (* "*") (identifier "piVar13"))) (; ";")) (if_statement "if (puVar6 < (uint *)0x30) {\n    piVar7 = (int *)piVar3[2];\n    piVar4 = (int *)(((int)puVar6 + 1U) * 4);\n    *piVar7 = *(int *)(*(int *)(pcVar18 + 0x6f5ec) + (int)piVar4);\n    piVar3[1] = (uint)(puVar6 != (uint *)0x0);\n  }\n  else {\n    iVar9 = (((uint)puVar6 >> 6) * 0x17 >> 5) + 5;\n    uVar10 = (uint)puVar6 >> 1;\n    if (*piVar3 < iVar9 * 2) {\n      pcVar18 = *(code **)(pcVar18 + 0x6f65c);\n      *(uint *)(puVar19 + -0x5c) = uVar10;\n      piVar15 = (int *)(*pcVar18)();\n      pcVar21 = *(code **)(puVar19 + -0x68);\n      uVar10 = *(uint *)(puVar19 + -0x5c);\n    }\n    else {\n      piVar15 = (int *)piVar3[2];\n    }\n    *(undefined4 *)(puVar19 + -0x58) = 0;\n    if ((uint)(iVar9 * 8) < 0x7f01) {\n      puVar20 = puVar19 + iVar9 * -8 + -0x80;\n      puVar16 = puVar19 + iVar9 * -8 + -0x68;\n    }\n    else {\n      pcVar18 = *(code **)(pcVar21 + -0x7d50);\n      *(uint *)(puVar19 + -0x5c) = uVar10;\n      puVar16 = (undefined1 *)(*pcVar18)(puVar19 + -0x58);\n      pcVar21 = *(code **)(puVar19 + -0x68);\n      uVar10 = *(uint *)(puVar19 + -0x5c);\n    }\n    piVar11 = (int *)(puVar16 + iVar9 * 4);\n    iVar9 = (**(code **)(pcVar21 + -0x7e94))(puVar16,piVar11,uVar10);\n    if (((uint)puVar6 & 1) == 0) {\n      iVar1 = (**(code **)(*(int *)(puVar19 + -0x68) + -0x7ad4))(piVar11,piVar11);\n      iVar2 = (**(code **)(*(int *)(puVar19 + -0x68) + -0x7d0c))(piVar11,piVar11,puVar16,iVar9);\n      uVar10 = (uint)(iVar1 + iVar2 != 0) + iVar9;\n      pcVar18 = *(code **)(*(int *)(puVar19 + -0x68) + -0x7d8c);\n      piVar11[iVar9] = iVar1 + iVar2;\n      *(int *)(puVar20 + 0x10) = iVar9;\n      iVar9 = iVar9 + uVar10;\n      piVar7 = piVar11;\n      iVar1 = (*pcVar18)(piVar15,piVar11,uVar10,puVar16);\n      pcVar21 = *(code **)(puVar19 + -0x68);\n    }\n    else {\n      uVar22 = (**(code **)(*(int *)(puVar19 + -0x68) + -0x7ad4))(piVar15,puVar16,iVar9,1);\n      *(undefined4 *)(puVar19 + -0x5c) = uVar22;\n      iVar1 = (**(code **)(*(int *)(puVar19 + -0x68) + -0x7d0c))(puVar16,piVar15,piVar11,iVar9);\n      iVar2 = *(int *)(puVar19 + -0x5c);\n      pcVar18 = *(code **)(*(int *)(puVar19 + -0x68) + -0x7b2c);\n      *(int *)(puVar16 + iVar9 * 4) = iVar1 + iVar2;\n      *(uint *)(puVar19 + -0x60) = (uint)(iVar1 + iVar2 != 0) + iVar9;\n      iVar1 = (*pcVar18)(piVar11,piVar15,piVar11,iVar9);\n      iVar2 = *(int *)(puVar19 + -0x60);\n      pcVar18 = *(code **)(*(int *)(puVar19 + -0x68) + -0x7d8c);\n      iVar14 = iVar9 + (*(int *)(puVar19 + -0x5c) - iVar1);\n      piVar11[iVar9] = *(int *)(puVar19 + -0x5c) - iVar1;\n      *(int *)(puVar20 + 0x10) = iVar14;\n      iVar9 = iVar2 + iVar14;\n      iVar1 = (*pcVar18)(piVar15,puVar16,iVar2,piVar11);\n      uVar10 = 0xfffffffe;\n      piVar7 = (int *)0x2;\n      pcVar21 = *(code **)(puVar19 + -0x68);\n      if (((uint)puVar6 & 2) != 0) {\n        piVar7 = (int *)0xfffffffe;\n      }\n      *piVar15 = (int)piVar7 + *piVar15;\n    }\n    piVar4 = *(int **)(puVar19 + -0x58);\n    iVar9 = iVar9 - (uint)(iVar1 == 0);\n    piVar15 = piVar15 + iVar9;\n    param_1 = (uint *)(iVar9 - (uint)(piVar15[-1] == 0));\n    piVar3[1] = (int)param_1;\n    puVar16 = puVar20;\n    if (piVar4 != (int *)0x0) {\n      (**(code **)(pcVar21 + -0x7a2c))();\n      pcVar21 = *(code **)(puVar19 + -0x68);\n    }\n  }" (if "if") (parenthesized_expression "(puVar6 < (uint *)0x30)" (( "(") (binary_expression "puVar6 < (uint *)0x30" (identifier "puVar6") (< "<") (cast_expression "(uint *)0x30" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x30"))) () ")")) (compound_statement "{\n    piVar7 = (int *)piVar3[2];\n    piVar4 = (int *)(((int)puVar6 + 1U) * 4);\n    *piVar7 = *(int *)(*(int *)(pcVar18 + 0x6f5ec) + (int)piVar4);\n    piVar3[1] = (uint)(puVar6 != (uint *)0x0);\n  }" ({ "{") (expression_statement "piVar7 = (int *)piVar3[2];" (assignment_expression "piVar7 = (int *)piVar3[2]" (identifier "piVar7") (= "=") (cast_expression "(int *)piVar3[2]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "piVar3[2]" (identifier "piVar3") ([ "[") (number_literal "2") (] "]")))) (; ";")) (expression_statement "piVar4 = (int *)(((int)puVar6 + 1U) * 4);" (assignment_expression "piVar4 = (int *)(((int)puVar6 + 1U) * 4)" (identifier "piVar4") (= "=") (cast_expression "(int *)(((int)puVar6 + 1U) * 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(((int)puVar6 + 1U) * 4)" (( "(") (binary_expression "((int)puVar6 + 1U) * 4" (parenthesized_expression "((int)puVar6 + 1U)" (( "(") (binary_expression "(int)puVar6 + 1U" (cast_expression "(int)puVar6" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar6")) (+ "+") (number_literal "1U")) () ")")) (* "*") (number_literal "4")) () ")")))) (; ";")) (expression_statement "*piVar7 = *(int *)(*(int *)(pcVar18 + 0x6f5ec) + (int)piVar4);" (assignment_expression "*piVar7 = *(int *)(*(int *)(pcVar18 + 0x6f5ec) + (int)piVar4)" (pointer_expression "*piVar7" (* "*") (identifier "piVar7")) (= "=") (pointer_expression "*(int *)(*(int *)(pcVar18 + 0x6f5ec) + (int)piVar4)" (* "*") (cast_expression "(int *)(*(int *)(pcVar18 + 0x6f5ec) + (int)piVar4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(pcVar18 + 0x6f5ec) + (int)piVar4)" (( "(") (binary_expression "*(int *)(pcVar18 + 0x6f5ec) + (int)piVar4" (pointer_expression "*(int *)(pcVar18 + 0x6f5ec)" (* "*") (cast_expression "(int *)(pcVar18 + 0x6f5ec)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(pcVar18 + 0x6f5ec)" (( "(") (binary_expression "pcVar18 + 0x6f5ec" (identifier "pcVar18") (+ "+") (number_literal "0x6f5ec")) () ")")))) (+ "+") (cast_expression "(int)piVar4" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar4"))) () ")"))))) (; ";")) (expression_statement "piVar3[1] = (uint)(puVar6 != (uint *)0x0);" (assignment_expression "piVar3[1] = (uint)(puVar6 != (uint *)0x0)" (subscript_expression "piVar3[1]" (identifier "piVar3") ([ "[") (number_literal "1") (] "]")) (= "=") (call_expression "(uint)(puVar6 != (uint *)0x0)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(puVar6 != (uint *)0x0)" (( "(") (binary_expression "puVar6 != (uint *)0x0" (identifier "puVar6") (!= "!=") (cast_expression "(uint *)0x0" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")))) (; ";")) (} "}")) (else_clause "else {\n    iVar9 = (((uint)puVar6 >> 6) * 0x17 >> 5) + 5;\n    uVar10 = (uint)puVar6 >> 1;\n    if (*piVar3 < iVar9 * 2) {\n      pcVar18 = *(code **)(pcVar18 + 0x6f65c);\n      *(uint *)(puVar19 + -0x5c) = uVar10;\n      piVar15 = (int *)(*pcVar18)();\n      pcVar21 = *(code **)(puVar19 + -0x68);\n      uVar10 = *(uint *)(puVar19 + -0x5c);\n    }\n    else {\n      piVar15 = (int *)piVar3[2];\n    }\n    *(undefined4 *)(puVar19 + -0x58) = 0;\n    if ((uint)(iVar9 * 8) < 0x7f01) {\n      puVar20 = puVar19 + iVar9 * -8 + -0x80;\n      puVar16 = puVar19 + iVar9 * -8 + -0x68;\n    }\n    else {\n      pcVar18 = *(code **)(pcVar21 + -0x7d50);\n      *(uint *)(puVar19 + -0x5c) = uVar10;\n      puVar16 = (undefined1 *)(*pcVar18)(puVar19 + -0x58);\n      pcVar21 = *(code **)(puVar19 + -0x68);\n      uVar10 = *(uint *)(puVar19 + -0x5c);\n    }\n    piVar11 = (int *)(puVar16 + iVar9 * 4);\n    iVar9 = (**(code **)(pcVar21 + -0x7e94))(puVar16,piVar11,uVar10);\n    if (((uint)puVar6 & 1) == 0) {\n      iVar1 = (**(code **)(*(int *)(puVar19 + -0x68) + -0x7ad4))(piVar11,piVar11);\n      iVar2 = (**(code **)(*(int *)(puVar19 + -0x68) + -0x7d0c))(piVar11,piVar11,puVar16,iVar9);\n      uVar10 = (uint)(iVar1 + iVar2 != 0) + iVar9;\n      pcVar18 = *(code **)(*(int *)(puVar19 + -0x68) + -0x7d8c);\n      piVar11[iVar9] = iVar1 + iVar2;\n      *(int *)(puVar20 + 0x10) = iVar9;\n      iVar9 = iVar9 + uVar10;\n      piVar7 = piVar11;\n      iVar1 = (*pcVar18)(piVar15,piVar11,uVar10,puVar16);\n      pcVar21 = *(code **)(puVar19 + -0x68);\n    }\n    else {\n      uVar22 = (**(code **)(*(int *)(puVar19 + -0x68) + -0x7ad4))(piVar15,puVar16,iVar9,1);\n      *(undefined4 *)(puVar19 + -0x5c) = uVar22;\n      iVar1 = (**(code **)(*(int *)(puVar19 + -0x68) + -0x7d0c))(puVar16,piVar15,piVar11,iVar9);\n      iVar2 = *(int *)(puVar19 + -0x5c);\n      pcVar18 = *(code **)(*(int *)(puVar19 + -0x68) + -0x7b2c);\n      *(int *)(puVar16 + iVar9 * 4) = iVar1 + iVar2;\n      *(uint *)(puVar19 + -0x60) = (uint)(iVar1 + iVar2 != 0) + iVar9;\n      iVar1 = (*pcVar18)(piVar11,piVar15,piVar11,iVar9);\n      iVar2 = *(int *)(puVar19 + -0x60);\n      pcVar18 = *(code **)(*(int *)(puVar19 + -0x68) + -0x7d8c);\n      iVar14 = iVar9 + (*(int *)(puVar19 + -0x5c) - iVar1);\n      piVar11[iVar9] = *(int *)(puVar19 + -0x5c) - iVar1;\n      *(int *)(puVar20 + 0x10) = iVar14;\n      iVar9 = iVar2 + iVar14;\n      iVar1 = (*pcVar18)(piVar15,puVar16,iVar2,piVar11);\n      uVar10 = 0xfffffffe;\n      piVar7 = (int *)0x2;\n      pcVar21 = *(code **)(puVar19 + -0x68);\n      if (((uint)puVar6 & 2) != 0) {\n        piVar7 = (int *)0xfffffffe;\n      }\n      *piVar15 = (int)piVar7 + *piVar15;\n    }\n    piVar4 = *(int **)(puVar19 + -0x58);\n    iVar9 = iVar9 - (uint)(iVar1 == 0);\n    piVar15 = piVar15 + iVar9;\n    param_1 = (uint *)(iVar9 - (uint)(piVar15[-1] == 0));\n    piVar3[1] = (int)param_1;\n    puVar16 = puVar20;\n    if (piVar4 != (int *)0x0) {\n      (**(code **)(pcVar21 + -0x7a2c))();\n      pcVar21 = *(code **)(puVar19 + -0x68);\n    }\n  }" (else "else") (compound_statement "{\n    iVar9 = (((uint)puVar6 >> 6) * 0x17 >> 5) + 5;\n    uVar10 = (uint)puVar6 >> 1;\n    if (*piVar3 < iVar9 * 2) {\n      pcVar18 = *(code **)(pcVar18 + 0x6f65c);\n      *(uint *)(puVar19 + -0x5c) = uVar10;\n      piVar15 = (int *)(*pcVar18)();\n      pcVar21 = *(code **)(puVar19 + -0x68);\n      uVar10 = *(uint *)(puVar19 + -0x5c);\n    }\n    else {\n      piVar15 = (int *)piVar3[2];\n    }\n    *(undefined4 *)(puVar19 + -0x58) = 0;\n    if ((uint)(iVar9 * 8) < 0x7f01) {\n      puVar20 = puVar19 + iVar9 * -8 + -0x80;\n      puVar16 = puVar19 + iVar9 * -8 + -0x68;\n    }\n    else {\n      pcVar18 = *(code **)(pcVar21 + -0x7d50);\n      *(uint *)(puVar19 + -0x5c) = uVar10;\n      puVar16 = (undefined1 *)(*pcVar18)(puVar19 + -0x58);\n      pcVar21 = *(code **)(puVar19 + -0x68);\n      uVar10 = *(uint *)(puVar19 + -0x5c);\n    }\n    piVar11 = (int *)(puVar16 + iVar9 * 4);\n    iVar9 = (**(code **)(pcVar21 + -0x7e94))(puVar16,piVar11,uVar10);\n    if (((uint)puVar6 & 1) == 0) {\n      iVar1 = (**(code **)(*(int *)(puVar19 + -0x68) + -0x7ad4))(piVar11,piVar11);\n      iVar2 = (**(code **)(*(int *)(puVar19 + -0x68) + -0x7d0c))(piVar11,piVar11,puVar16,iVar9);\n      uVar10 = (uint)(iVar1 + iVar2 != 0) + iVar9;\n      pcVar18 = *(code **)(*(int *)(puVar19 + -0x68) + -0x7d8c);\n      piVar11[iVar9] = iVar1 + iVar2;\n      *(int *)(puVar20 + 0x10) = iVar9;\n      iVar9 = iVar9 + uVar10;\n      piVar7 = piVar11;\n      iVar1 = (*pcVar18)(piVar15,piVar11,uVar10,puVar16);\n      pcVar21 = *(code **)(puVar19 + -0x68);\n    }\n    else {\n      uVar22 = (**(code **)(*(int *)(puVar19 + -0x68) + -0x7ad4))(piVar15,puVar16,iVar9,1);\n      *(undefined4 *)(puVar19 + -0x5c) = uVar22;\n      iVar1 = (**(code **)(*(int *)(puVar19 + -0x68) + -0x7d0c))(puVar16,piVar15,piVar11,iVar9);\n      iVar2 = *(int *)(puVar19 + -0x5c);\n      pcVar18 = *(code **)(*(int *)(puVar19 + -0x68) + -0x7b2c);\n      *(int *)(puVar16 + iVar9 * 4) = iVar1 + iVar2;\n      *(uint *)(puVar19 + -0x60) = (uint)(iVar1 + iVar2 != 0) + iVar9;\n      iVar1 = (*pcVar18)(piVar11,piVar15,piVar11,iVar9);\n      iVar2 = *(int *)(puVar19 + -0x60);\n      pcVar18 = *(code **)(*(int *)(puVar19 + -0x68) + -0x7d8c);\n      iVar14 = iVar9 + (*(int *)(puVar19 + -0x5c) - iVar1);\n      piVar11[iVar9] = *(int *)(puVar19 + -0x5c) - iVar1;\n      *(int *)(puVar20 + 0x10) = iVar14;\n      iVar9 = iVar2 + iVar14;\n      iVar1 = (*pcVar18)(piVar15,puVar16,iVar2,piVar11);\n      uVar10 = 0xfffffffe;\n      piVar7 = (int *)0x2;\n      pcVar21 = *(code **)(puVar19 + -0x68);\n      if (((uint)puVar6 & 2) != 0) {\n        piVar7 = (int *)0xfffffffe;\n      }\n      *piVar15 = (int)piVar7 + *piVar15;\n    }\n    piVar4 = *(int **)(puVar19 + -0x58);\n    iVar9 = iVar9 - (uint)(iVar1 == 0);\n    piVar15 = piVar15 + iVar9;\n    param_1 = (uint *)(iVar9 - (uint)(piVar15[-1] == 0));\n    piVar3[1] = (int)param_1;\n    puVar16 = puVar20;\n    if (piVar4 != (int *)0x0) {\n      (**(code **)(pcVar21 + -0x7a2c))();\n      pcVar21 = *(code **)(puVar19 + -0x68);\n    }\n  }" ({ "{") (expression_statement "iVar9 = (((uint)puVar6 >> 6) * 0x17 >> 5) + 5;" (assignment_expression "iVar9 = (((uint)puVar6 >> 6) * 0x17 >> 5) + 5" (identifier "iVar9") (= "=") (binary_expression "(((uint)puVar6 >> 6) * 0x17 >> 5) + 5" (parenthesized_expression "(((uint)puVar6 >> 6) * 0x17 >> 5)" (( "(") (binary_expression "((uint)puVar6 >> 6) * 0x17 >> 5" (binary_expression "((uint)puVar6 >> 6) * 0x17" (parenthesized_expression "((uint)puVar6 >> 6)" (( "(") (binary_expression "(uint)puVar6 >> 6" (cast_expression "(uint)puVar6" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "puVar6")) (>> ">>") (number_literal "6")) () ")")) (* "*") (number_literal "0x17")) (>> ">>") (number_literal "5")) () ")")) (+ "+") (number_literal "5"))) (; ";")) (expression_statement "uVar10 = (uint)puVar6 >> 1;" (assignment_expression "uVar10 = (uint)puVar6 >> 1" (identifier "uVar10") (= "=") (binary_expression "(uint)puVar6 >> 1" (cast_expression "(uint)puVar6" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "puVar6")) (>> ">>") (number_literal "1"))) (; ";")) (if_statement "if (*piVar3 < iVar9 * 2) {\n      pcVar18 = *(code **)(pcVar18 + 0x6f65c);\n      *(uint *)(puVar19 + -0x5c) = uVar10;\n      piVar15 = (int *)(*pcVar18)();\n      pcVar21 = *(code **)(puVar19 + -0x68);\n      uVar10 = *(uint *)(puVar19 + -0x5c);\n    }\n    else {\n      piVar15 = (int *)piVar3[2];\n    }" (if "if") (parenthesized_expression "(*piVar3 < iVar9 * 2)" (( "(") (binary_expression "*piVar3 < iVar9 * 2" (pointer_expression "*piVar3" (* "*") (identifier "piVar3")) (< "<") (binary_expression "iVar9 * 2" (identifier "iVar9") (* "*") (number_literal "2"))) () ")")) (compound_statement "{\n      pcVar18 = *(code **)(pcVar18 + 0x6f65c);\n      *(uint *)(puVar19 + -0x5c) = uVar10;\n      piVar15 = (int *)(*pcVar18)();\n      pcVar21 = *(code **)(puVar19 + -0x68);\n      uVar10 = *(uint *)(puVar19 + -0x5c);\n    }" ({ "{") (expression_statement "pcVar18 = *(code **)(pcVar18 + 0x6f65c);" (assignment_expression "pcVar18 = *(code **)(pcVar18 + 0x6f65c)" (identifier "pcVar18") (= "=") (pointer_expression "*(code **)(pcVar18 + 0x6f65c)" (* "*") (cast_expression "(code **)(pcVar18 + 0x6f65c)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(pcVar18 + 0x6f65c)" (( "(") (binary_expression "pcVar18 + 0x6f65c" (identifier "pcVar18") (+ "+") (number_literal "0x6f65c")) () ")"))))) (; ";")) (expression_statement "*(uint *)(puVar19 + -0x5c) = uVar10;" (assignment_expression "*(uint *)(puVar19 + -0x5c) = uVar10" (pointer_expression "*(uint *)(puVar19 + -0x5c)" (* "*") (cast_expression "(uint *)(puVar19 + -0x5c)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar19 + -0x5c)" (( "(") (binary_expression "puVar19 + -0x5c" (identifier "puVar19") (+ "+") (number_literal "-0x5c")) () ")")))) (= "=") (identifier "uVar10")) (; ";")) (expression_statement "piVar15 = (int *)(*pcVar18)();" (assignment_expression "piVar15 = (int *)(*pcVar18)()" (identifier "piVar15") (= "=") (cast_expression "(int *)(*pcVar18)()" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "(*pcVar18)()" (parenthesized_expression "(*pcVar18)" (( "(") (pointer_expression "*pcVar18" (* "*") (identifier "pcVar18")) () ")")) (argument_list "()" (( "(") () ")"))))) (; ";")) (expression_statement "pcVar21 = *(code **)(puVar19 + -0x68);" (assignment_expression "pcVar21 = *(code **)(puVar19 + -0x68)" (identifier "pcVar21") (= "=") (pointer_expression "*(code **)(puVar19 + -0x68)" (* "*") (cast_expression "(code **)(puVar19 + -0x68)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar19 + -0x68)" (( "(") (binary_expression "puVar19 + -0x68" (identifier "puVar19") (+ "+") (number_literal "-0x68")) () ")"))))) (; ";")) (expression_statement "uVar10 = *(uint *)(puVar19 + -0x5c);" (assignment_expression "uVar10 = *(uint *)(puVar19 + -0x5c)" (identifier "uVar10") (= "=") (pointer_expression "*(uint *)(puVar19 + -0x5c)" (* "*") (cast_expression "(uint *)(puVar19 + -0x5c)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar19 + -0x5c)" (( "(") (binary_expression "puVar19 + -0x5c" (identifier "puVar19") (+ "+") (number_literal "-0x5c")) () ")"))))) (; ";")) (} "}")) (else_clause "else {\n      piVar15 = (int *)piVar3[2];\n    }" (else "else") (compound_statement "{\n      piVar15 = (int *)piVar3[2];\n    }" ({ "{") (expression_statement "piVar15 = (int *)piVar3[2];" (assignment_expression "piVar15 = (int *)piVar3[2]" (identifier "piVar15") (= "=") (cast_expression "(int *)piVar3[2]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "piVar3[2]" (identifier "piVar3") ([ "[") (number_literal "2") (] "]")))) (; ";")) (} "}")))) (expression_statement "*(undefined4 *)(puVar19 + -0x58) = 0;" (assignment_expression "*(undefined4 *)(puVar19 + -0x58) = 0" (pointer_expression "*(undefined4 *)(puVar19 + -0x58)" (* "*") (cast_expression "(undefined4 *)(puVar19 + -0x58)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar19 + -0x58)" (( "(") (binary_expression "puVar19 + -0x58" (identifier "puVar19") (+ "+") (number_literal "-0x58")) () ")")))) (= "=") (number_literal "0")) (; ";")) (if_statement "if ((uint)(iVar9 * 8) < 0x7f01) {\n      puVar20 = puVar19 + iVar9 * -8 + -0x80;\n      puVar16 = puVar19 + iVar9 * -8 + -0x68;\n    }\n    else {\n      pcVar18 = *(code **)(pcVar21 + -0x7d50);\n      *(uint *)(puVar19 + -0x5c) = uVar10;\n      puVar16 = (undefined1 *)(*pcVar18)(puVar19 + -0x58);\n      pcVar21 = *(code **)(puVar19 + -0x68);\n      uVar10 = *(uint *)(puVar19 + -0x5c);\n    }" (if "if") (parenthesized_expression "((uint)(iVar9 * 8) < 0x7f01)" (( "(") (binary_expression "(uint)(iVar9 * 8) < 0x7f01" (call_expression "(uint)(iVar9 * 8)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(iVar9 * 8)" (( "(") (binary_expression "iVar9 * 8" (identifier "iVar9") (* "*") (number_literal "8")) () ")"))) (< "<") (number_literal "0x7f01")) () ")")) (compound_statement "{\n      puVar20 = puVar19 + iVar9 * -8 + -0x80;\n      puVar16 = puVar19 + iVar9 * -8 + -0x68;\n    }" ({ "{") (expression_statement "puVar20 = puVar19 + iVar9 * -8 + -0x80;" (assignment_expression "puVar20 = puVar19 + iVar9 * -8 + -0x80" (identifier "puVar20") (= "=") (binary_expression "puVar19 + iVar9 * -8 + -0x80" (binary_expression "puVar19 + iVar9 * -8" (identifier "puVar19") (+ "+") (binary_expression "iVar9 * -8" (identifier "iVar9") (* "*") (number_literal "-8"))) (+ "+") (number_literal "-0x80"))) (; ";")) (expression_statement "puVar16 = puVar19 + iVar9 * -8 + -0x68;" (assignment_expression "puVar16 = puVar19 + iVar9 * -8 + -0x68" (identifier "puVar16") (= "=") (binary_expression "puVar19 + iVar9 * -8 + -0x68" (binary_expression "puVar19 + iVar9 * -8" (identifier "puVar19") (+ "+") (binary_expression "iVar9 * -8" (identifier "iVar9") (* "*") (number_literal "-8"))) (+ "+") (number_literal "-0x68"))) (; ";")) (} "}")) (else_clause "else {\n      pcVar18 = *(code **)(pcVar21 + -0x7d50);\n      *(uint *)(puVar19 + -0x5c) = uVar10;\n      puVar16 = (undefined1 *)(*pcVar18)(puVar19 + -0x58);\n      pcVar21 = *(code **)(puVar19 + -0x68);\n      uVar10 = *(uint *)(puVar19 + -0x5c);\n    }" (else "else") (compound_statement "{\n      pcVar18 = *(code **)(pcVar21 + -0x7d50);\n      *(uint *)(puVar19 + -0x5c) = uVar10;\n      puVar16 = (undefined1 *)(*pcVar18)(puVar19 + -0x58);\n      pcVar21 = *(code **)(puVar19 + -0x68);\n      uVar10 = *(uint *)(puVar19 + -0x5c);\n    }" ({ "{") (expression_statement "pcVar18 = *(code **)(pcVar21 + -0x7d50);" (assignment_expression "pcVar18 = *(code **)(pcVar21 + -0x7d50)" (identifier "pcVar18") (= "=") (pointer_expression "*(code **)(pcVar21 + -0x7d50)" (* "*") (cast_expression "(code **)(pcVar21 + -0x7d50)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(pcVar21 + -0x7d50)" (( "(") (binary_expression "pcVar21 + -0x7d50" (identifier "pcVar21") (+ "+") (number_literal "-0x7d50")) () ")"))))) (; ";")) (expression_statement "*(uint *)(puVar19 + -0x5c) = uVar10;" (assignment_expression "*(uint *)(puVar19 + -0x5c) = uVar10" (pointer_expression "*(uint *)(puVar19 + -0x5c)" (* "*") (cast_expression "(uint *)(puVar19 + -0x5c)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar19 + -0x5c)" (( "(") (binary_expression "puVar19 + -0x5c" (identifier "puVar19") (+ "+") (number_literal "-0x5c")) () ")")))) (= "=") (identifier "uVar10")) (; ";")) (expression_statement "puVar16 = (undefined1 *)(*pcVar18)(puVar19 + -0x58);" (assignment_expression "puVar16 = (undefined1 *)(*pcVar18)(puVar19 + -0x58)" (identifier "puVar16") (= "=") (cast_expression "(undefined1 *)(*pcVar18)(puVar19 + -0x58)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "(*pcVar18)(puVar19 + -0x58)" (parenthesized_expression "(*pcVar18)" (( "(") (pointer_expression "*pcVar18" (* "*") (identifier "pcVar18")) () ")")) (argument_list "(puVar19 + -0x58)" (( "(") (binary_expression "puVar19 + -0x58" (identifier "puVar19") (+ "+") (number_literal "-0x58")) () ")"))))) (; ";")) (expression_statement "pcVar21 = *(code **)(puVar19 + -0x68);" (assignment_expression "pcVar21 = *(code **)(puVar19 + -0x68)" (identifier "pcVar21") (= "=") (pointer_expression "*(code **)(puVar19 + -0x68)" (* "*") (cast_expression "(code **)(puVar19 + -0x68)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar19 + -0x68)" (( "(") (binary_expression "puVar19 + -0x68" (identifier "puVar19") (+ "+") (number_literal "-0x68")) () ")"))))) (; ";")) (expression_statement "uVar10 = *(uint *)(puVar19 + -0x5c);" (assignment_expression "uVar10 = *(uint *)(puVar19 + -0x5c)" (identifier "uVar10") (= "=") (pointer_expression "*(uint *)(puVar19 + -0x5c)" (* "*") (cast_expression "(uint *)(puVar19 + -0x5c)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar19 + -0x5c)" (( "(") (binary_expression "puVar19 + -0x5c" (identifier "puVar19") (+ "+") (number_literal "-0x5c")) () ")"))))) (; ";")) (} "}")))) (expression_statement "piVar11 = (int *)(puVar16 + iVar9 * 4);" (assignment_expression "piVar11 = (int *)(puVar16 + iVar9 * 4)" (identifier "piVar11") (= "=") (cast_expression "(int *)(puVar16 + iVar9 * 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + iVar9 * 4)" (( "(") (binary_expression "puVar16 + iVar9 * 4" (identifier "puVar16") (+ "+") (binary_expression "iVar9 * 4" (identifier "iVar9") (* "*") (number_literal "4"))) () ")")))) (; ";")) (expression_statement "iVar9 = (**(code **)(pcVar21 + -0x7e94))(puVar16,piVar11,uVar10);" (assignment_expression "iVar9 = (**(code **)(pcVar21 + -0x7e94))(puVar16,piVar11,uVar10)" (identifier "iVar9") (= "=") (call_expression "(**(code **)(pcVar21 + -0x7e94))(puVar16,piVar11,uVar10)" (parenthesized_expression "(**(code **)(pcVar21 + -0x7e94))" (( "(") (pointer_expression "**(code **)(pcVar21 + -0x7e94)" (* "*") (pointer_expression "*(code **)(pcVar21 + -0x7e94)" (* "*") (cast_expression "(code **)(pcVar21 + -0x7e94)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(pcVar21 + -0x7e94)" (( "(") (binary_expression "pcVar21 + -0x7e94" (identifier "pcVar21") (+ "+") (number_literal "-0x7e94")) () ")"))))) () ")")) (argument_list "(puVar16,piVar11,uVar10)" (( "(") (identifier "puVar16") (, ",") (identifier "piVar11") (, ",") (identifier "uVar10") () ")")))) (; ";")) (if_statement "if (((uint)puVar6 & 1) == 0) {\n      iVar1 = (**(code **)(*(int *)(puVar19 + -0x68) + -0x7ad4))(piVar11,piVar11);\n      iVar2 = (**(code **)(*(int *)(puVar19 + -0x68) + -0x7d0c))(piVar11,piVar11,puVar16,iVar9);\n      uVar10 = (uint)(iVar1 + iVar2 != 0) + iVar9;\n      pcVar18 = *(code **)(*(int *)(puVar19 + -0x68) + -0x7d8c);\n      piVar11[iVar9] = iVar1 + iVar2;\n      *(int *)(puVar20 + 0x10) = iVar9;\n      iVar9 = iVar9 + uVar10;\n      piVar7 = piVar11;\n      iVar1 = (*pcVar18)(piVar15,piVar11,uVar10,puVar16);\n      pcVar21 = *(code **)(puVar19 + -0x68);\n    }\n    else {\n      uVar22 = (**(code **)(*(int *)(puVar19 + -0x68) + -0x7ad4))(piVar15,puVar16,iVar9,1);\n      *(undefined4 *)(puVar19 + -0x5c) = uVar22;\n      iVar1 = (**(code **)(*(int *)(puVar19 + -0x68) + -0x7d0c))(puVar16,piVar15,piVar11,iVar9);\n      iVar2 = *(int *)(puVar19 + -0x5c);\n      pcVar18 = *(code **)(*(int *)(puVar19 + -0x68) + -0x7b2c);\n      *(int *)(puVar16 + iVar9 * 4) = iVar1 + iVar2;\n      *(uint *)(puVar19 + -0x60) = (uint)(iVar1 + iVar2 != 0) + iVar9;\n      iVar1 = (*pcVar18)(piVar11,piVar15,piVar11,iVar9);\n      iVar2 = *(int *)(puVar19 + -0x60);\n      pcVar18 = *(code **)(*(int *)(puVar19 + -0x68) + -0x7d8c);\n      iVar14 = iVar9 + (*(int *)(puVar19 + -0x5c) - iVar1);\n      piVar11[iVar9] = *(int *)(puVar19 + -0x5c) - iVar1;\n      *(int *)(puVar20 + 0x10) = iVar14;\n      iVar9 = iVar2 + iVar14;\n      iVar1 = (*pcVar18)(piVar15,puVar16,iVar2,piVar11);\n      uVar10 = 0xfffffffe;\n      piVar7 = (int *)0x2;\n      pcVar21 = *(code **)(puVar19 + -0x68);\n      if (((uint)puVar6 & 2) != 0) {\n        piVar7 = (int *)0xfffffffe;\n      }\n      *piVar15 = (int)piVar7 + *piVar15;\n    }" (if "if") (parenthesized_expression "(((uint)puVar6 & 1) == 0)" (( "(") (binary_expression "((uint)puVar6 & 1) == 0" (parenthesized_expression "((uint)puVar6 & 1)" (( "(") (binary_expression "(uint)puVar6 & 1" (cast_expression "(uint)puVar6" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "puVar6")) (& "&") (number_literal "1")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      iVar1 = (**(code **)(*(int *)(puVar19 + -0x68) + -0x7ad4))(piVar11,piVar11);\n      iVar2 = (**(code **)(*(int *)(puVar19 + -0x68) + -0x7d0c))(piVar11,piVar11,puVar16,iVar9);\n      uVar10 = (uint)(iVar1 + iVar2 != 0) + iVar9;\n      pcVar18 = *(code **)(*(int *)(puVar19 + -0x68) + -0x7d8c);\n      piVar11[iVar9] = iVar1 + iVar2;\n      *(int *)(puVar20 + 0x10) = iVar9;\n      iVar9 = iVar9 + uVar10;\n      piVar7 = piVar11;\n      iVar1 = (*pcVar18)(piVar15,piVar11,uVar10,puVar16);\n      pcVar21 = *(code **)(puVar19 + -0x68);\n    }" ({ "{") (expression_statement "iVar1 = (**(code **)(*(int *)(puVar19 + -0x68) + -0x7ad4))(piVar11,piVar11);" (assignment_expression "iVar1 = (**(code **)(*(int *)(puVar19 + -0x68) + -0x7ad4))(piVar11,piVar11)" (identifier "iVar1") (= "=") (call_expression "(**(code **)(*(int *)(puVar19 + -0x68) + -0x7ad4))(piVar11,piVar11)" (parenthesized_expression "(**(code **)(*(int *)(puVar19 + -0x68) + -0x7ad4))" (( "(") (pointer_expression "**(code **)(*(int *)(puVar19 + -0x68) + -0x7ad4)" (* "*") (pointer_expression "*(code **)(*(int *)(puVar19 + -0x68) + -0x7ad4)" (* "*") (cast_expression "(code **)(*(int *)(puVar19 + -0x68) + -0x7ad4)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*(int *)(puVar19 + -0x68) + -0x7ad4)" (( "(") (binary_expression "*(int *)(puVar19 + -0x68) + -0x7ad4" (pointer_expression "*(int *)(puVar19 + -0x68)" (* "*") (cast_expression "(int *)(puVar19 + -0x68)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar19 + -0x68)" (( "(") (binary_expression "puVar19 + -0x68" (identifier "puVar19") (+ "+") (number_literal "-0x68")) () ")")))) (+ "+") (number_literal "-0x7ad4")) () ")"))))) () ")")) (argument_list "(piVar11,piVar11)" (( "(") (identifier "piVar11") (, ",") (identifier "piVar11") () ")")))) (; ";")) (expression_statement "iVar2 = (**(code **)(*(int *)(puVar19 + -0x68) + -0x7d0c))(piVar11,piVar11,puVar16,iVar9);" (assignment_expression "iVar2 = (**(code **)(*(int *)(puVar19 + -0x68) + -0x7d0c))(piVar11,piVar11,puVar16,iVar9)" (identifier "iVar2") (= "=") (call_expression "(**(code **)(*(int *)(puVar19 + -0x68) + -0x7d0c))(piVar11,piVar11,puVar16,iVar9)" (parenthesized_expression "(**(code **)(*(int *)(puVar19 + -0x68) + -0x7d0c))" (( "(") (pointer_expression "**(code **)(*(int *)(puVar19 + -0x68) + -0x7d0c)" (* "*") (pointer_expression "*(code **)(*(int *)(puVar19 + -0x68) + -0x7d0c)" (* "*") (cast_expression "(code **)(*(int *)(puVar19 + -0x68) + -0x7d0c)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*(int *)(puVar19 + -0x68) + -0x7d0c)" (( "(") (binary_expression "*(int *)(puVar19 + -0x68) + -0x7d0c" (pointer_expression "*(int *)(puVar19 + -0x68)" (* "*") (cast_expression "(int *)(puVar19 + -0x68)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar19 + -0x68)" (( "(") (binary_expression "puVar19 + -0x68" (identifier "puVar19") (+ "+") (number_literal "-0x68")) () ")")))) (+ "+") (number_literal "-0x7d0c")) () ")"))))) () ")")) (argument_list "(piVar11,piVar11,puVar16,iVar9)" (( "(") (identifier "piVar11") (, ",") (identifier "piVar11") (, ",") (identifier "puVar16") (, ",") (identifier "iVar9") () ")")))) (; ";")) (expression_statement "uVar10 = (uint)(iVar1 + iVar2 != 0) + iVar9;" (assignment_expression "uVar10 = (uint)(iVar1 + iVar2 != 0) + iVar9" (identifier "uVar10") (= "=") (binary_expression "(uint)(iVar1 + iVar2 != 0) + iVar9" (call_expression "(uint)(iVar1 + iVar2 != 0)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(iVar1 + iVar2 != 0)" (( "(") (binary_expression "iVar1 + iVar2 != 0" (binary_expression "iVar1 + iVar2" (identifier "iVar1") (+ "+") (identifier "iVar2")) (!= "!=") (number_literal "0")) () ")"))) (+ "+") (identifier "iVar9"))) (; ";")) (expression_statement "pcVar18 = *(code **)(*(int *)(puVar19 + -0x68) + -0x7d8c);" (assignment_expression "pcVar18 = *(code **)(*(int *)(puVar19 + -0x68) + -0x7d8c)" (identifier "pcVar18") (= "=") (pointer_expression "*(code **)(*(int *)(puVar19 + -0x68) + -0x7d8c)" (* "*") (cast_expression "(code **)(*(int *)(puVar19 + -0x68) + -0x7d8c)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*(int *)(puVar19 + -0x68) + -0x7d8c)" (( "(") (binary_expression "*(int *)(puVar19 + -0x68) + -0x7d8c" (pointer_expression "*(int *)(puVar19 + -0x68)" (* "*") (cast_expression "(int *)(puVar19 + -0x68)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar19 + -0x68)" (( "(") (binary_expression "puVar19 + -0x68" (identifier "puVar19") (+ "+") (number_literal "-0x68")) () ")")))) (+ "+") (number_literal "-0x7d8c")) () ")"))))) (; ";")) (expression_statement "piVar11[iVar9] = iVar1 + iVar2;" (assignment_expression "piVar11[iVar9] = iVar1 + iVar2" (subscript_expression "piVar11[iVar9]" (identifier "piVar11") ([ "[") (identifier "iVar9") (] "]")) (= "=") (binary_expression "iVar1 + iVar2" (identifier "iVar1") (+ "+") (identifier "iVar2"))) (; ";")) (expression_statement "*(int *)(puVar20 + 0x10) = iVar9;" (assignment_expression "*(int *)(puVar20 + 0x10) = iVar9" (pointer_expression "*(int *)(puVar20 + 0x10)" (* "*") (cast_expression "(int *)(puVar20 + 0x10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar20 + 0x10)" (( "(") (binary_expression "puVar20 + 0x10" (identifier "puVar20") (+ "+") (number_literal "0x10")) () ")")))) (= "=") (identifier "iVar9")) (; ";")) (expression_statement "iVar9 = iVar9 + uVar10;" (assignment_expression "iVar9 = iVar9 + uVar10" (identifier "iVar9") (= "=") (binary_expression "iVar9 + uVar10" (identifier "iVar9") (+ "+") (identifier "uVar10"))) (; ";")) (expression_statement "piVar7 = piVar11;" (assignment_expression "piVar7 = piVar11" (identifier "piVar7") (= "=") (identifier "piVar11")) (; ";")) (expression_statement "iVar1 = (*pcVar18)(piVar15,piVar11,uVar10,puVar16);" (assignment_expression "iVar1 = (*pcVar18)(piVar15,piVar11,uVar10,puVar16)" (identifier "iVar1") (= "=") (call_expression "(*pcVar18)(piVar15,piVar11,uVar10,puVar16)" (parenthesized_expression "(*pcVar18)" (( "(") (pointer_expression "*pcVar18" (* "*") (identifier "pcVar18")) () ")")) (argument_list "(piVar15,piVar11,uVar10,puVar16)" (( "(") (identifier "piVar15") (, ",") (identifier "piVar11") (, ",") (identifier "uVar10") (, ",") (identifier "puVar16") () ")")))) (; ";")) (expression_statement "pcVar21 = *(code **)(puVar19 + -0x68);" (assignment_expression "pcVar21 = *(code **)(puVar19 + -0x68)" (identifier "pcVar21") (= "=") (pointer_expression "*(code **)(puVar19 + -0x68)" (* "*") (cast_expression "(code **)(puVar19 + -0x68)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar19 + -0x68)" (( "(") (binary_expression "puVar19 + -0x68" (identifier "puVar19") (+ "+") (number_literal "-0x68")) () ")"))))) (; ";")) (} "}")) (else_clause "else {\n      uVar22 = (**(code **)(*(int *)(puVar19 + -0x68) + -0x7ad4))(piVar15,puVar16,iVar9,1);\n      *(undefined4 *)(puVar19 + -0x5c) = uVar22;\n      iVar1 = (**(code **)(*(int *)(puVar19 + -0x68) + -0x7d0c))(puVar16,piVar15,piVar11,iVar9);\n      iVar2 = *(int *)(puVar19 + -0x5c);\n      pcVar18 = *(code **)(*(int *)(puVar19 + -0x68) + -0x7b2c);\n      *(int *)(puVar16 + iVar9 * 4) = iVar1 + iVar2;\n      *(uint *)(puVar19 + -0x60) = (uint)(iVar1 + iVar2 != 0) + iVar9;\n      iVar1 = (*pcVar18)(piVar11,piVar15,piVar11,iVar9);\n      iVar2 = *(int *)(puVar19 + -0x60);\n      pcVar18 = *(code **)(*(int *)(puVar19 + -0x68) + -0x7d8c);\n      iVar14 = iVar9 + (*(int *)(puVar19 + -0x5c) - iVar1);\n      piVar11[iVar9] = *(int *)(puVar19 + -0x5c) - iVar1;\n      *(int *)(puVar20 + 0x10) = iVar14;\n      iVar9 = iVar2 + iVar14;\n      iVar1 = (*pcVar18)(piVar15,puVar16,iVar2,piVar11);\n      uVar10 = 0xfffffffe;\n      piVar7 = (int *)0x2;\n      pcVar21 = *(code **)(puVar19 + -0x68);\n      if (((uint)puVar6 & 2) != 0) {\n        piVar7 = (int *)0xfffffffe;\n      }\n      *piVar15 = (int)piVar7 + *piVar15;\n    }" (else "else") (compound_statement "{\n      uVar22 = (**(code **)(*(int *)(puVar19 + -0x68) + -0x7ad4))(piVar15,puVar16,iVar9,1);\n      *(undefined4 *)(puVar19 + -0x5c) = uVar22;\n      iVar1 = (**(code **)(*(int *)(puVar19 + -0x68) + -0x7d0c))(puVar16,piVar15,piVar11,iVar9);\n      iVar2 = *(int *)(puVar19 + -0x5c);\n      pcVar18 = *(code **)(*(int *)(puVar19 + -0x68) + -0x7b2c);\n      *(int *)(puVar16 + iVar9 * 4) = iVar1 + iVar2;\n      *(uint *)(puVar19 + -0x60) = (uint)(iVar1 + iVar2 != 0) + iVar9;\n      iVar1 = (*pcVar18)(piVar11,piVar15,piVar11,iVar9);\n      iVar2 = *(int *)(puVar19 + -0x60);\n      pcVar18 = *(code **)(*(int *)(puVar19 + -0x68) + -0x7d8c);\n      iVar14 = iVar9 + (*(int *)(puVar19 + -0x5c) - iVar1);\n      piVar11[iVar9] = *(int *)(puVar19 + -0x5c) - iVar1;\n      *(int *)(puVar20 + 0x10) = iVar14;\n      iVar9 = iVar2 + iVar14;\n      iVar1 = (*pcVar18)(piVar15,puVar16,iVar2,piVar11);\n      uVar10 = 0xfffffffe;\n      piVar7 = (int *)0x2;\n      pcVar21 = *(code **)(puVar19 + -0x68);\n      if (((uint)puVar6 & 2) != 0) {\n        piVar7 = (int *)0xfffffffe;\n      }\n      *piVar15 = (int)piVar7 + *piVar15;\n    }" ({ "{") (expression_statement "uVar22 = (**(code **)(*(int *)(puVar19 + -0x68) + -0x7ad4))(piVar15,puVar16,iVar9,1);" (assignment_expression "uVar22 = (**(code **)(*(int *)(puVar19 + -0x68) + -0x7ad4))(piVar15,puVar16,iVar9,1)" (identifier "uVar22") (= "=") (call_expression "(**(code **)(*(int *)(puVar19 + -0x68) + -0x7ad4))(piVar15,puVar16,iVar9,1)" (parenthesized_expression "(**(code **)(*(int *)(puVar19 + -0x68) + -0x7ad4))" (( "(") (pointer_expression "**(code **)(*(int *)(puVar19 + -0x68) + -0x7ad4)" (* "*") (pointer_expression "*(code **)(*(int *)(puVar19 + -0x68) + -0x7ad4)" (* "*") (cast_expression "(code **)(*(int *)(puVar19 + -0x68) + -0x7ad4)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*(int *)(puVar19 + -0x68) + -0x7ad4)" (( "(") (binary_expression "*(int *)(puVar19 + -0x68) + -0x7ad4" (pointer_expression "*(int *)(puVar19 + -0x68)" (* "*") (cast_expression "(int *)(puVar19 + -0x68)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar19 + -0x68)" (( "(") (binary_expression "puVar19 + -0x68" (identifier "puVar19") (+ "+") (number_literal "-0x68")) () ")")))) (+ "+") (number_literal "-0x7ad4")) () ")"))))) () ")")) (argument_list "(piVar15,puVar16,iVar9,1)" (( "(") (identifier "piVar15") (, ",") (identifier "puVar16") (, ",") (identifier "iVar9") (, ",") (number_literal "1") () ")")))) (; ";")) (expression_statement "*(undefined4 *)(puVar19 + -0x5c) = uVar22;" (assignment_expression "*(undefined4 *)(puVar19 + -0x5c) = uVar22" (pointer_expression "*(undefined4 *)(puVar19 + -0x5c)" (* "*") (cast_expression "(undefined4 *)(puVar19 + -0x5c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar19 + -0x5c)" (( "(") (binary_expression "puVar19 + -0x5c" (identifier "puVar19") (+ "+") (number_literal "-0x5c")) () ")")))) (= "=") (identifier "uVar22")) (; ";")) (expression_statement "iVar1 = (**(code **)(*(int *)(puVar19 + -0x68) + -0x7d0c))(puVar16,piVar15,piVar11,iVar9);" (assignment_expression "iVar1 = (**(code **)(*(int *)(puVar19 + -0x68) + -0x7d0c))(puVar16,piVar15,piVar11,iVar9)" (identifier "iVar1") (= "=") (call_expression "(**(code **)(*(int *)(puVar19 + -0x68) + -0x7d0c))(puVar16,piVar15,piVar11,iVar9)" (parenthesized_expression "(**(code **)(*(int *)(puVar19 + -0x68) + -0x7d0c))" (( "(") (pointer_expression "**(code **)(*(int *)(puVar19 + -0x68) + -0x7d0c)" (* "*") (pointer_expression "*(code **)(*(int *)(puVar19 + -0x68) + -0x7d0c)" (* "*") (cast_expression "(code **)(*(int *)(puVar19 + -0x68) + -0x7d0c)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*(int *)(puVar19 + -0x68) + -0x7d0c)" (( "(") (binary_expression "*(int *)(puVar19 + -0x68) + -0x7d0c" (pointer_expression "*(int *)(puVar19 + -0x68)" (* "*") (cast_expression "(int *)(puVar19 + -0x68)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar19 + -0x68)" (( "(") (binary_expression "puVar19 + -0x68" (identifier "puVar19") (+ "+") (number_literal "-0x68")) () ")")))) (+ "+") (number_literal "-0x7d0c")) () ")"))))) () ")")) (argument_list "(puVar16,piVar15,piVar11,iVar9)" (( "(") (identifier "puVar16") (, ",") (identifier "piVar15") (, ",") (identifier "piVar11") (, ",") (identifier "iVar9") () ")")))) (; ";")) (expression_statement "iVar2 = *(int *)(puVar19 + -0x5c);" (assignment_expression "iVar2 = *(int *)(puVar19 + -0x5c)" (identifier "iVar2") (= "=") (pointer_expression "*(int *)(puVar19 + -0x5c)" (* "*") (cast_expression "(int *)(puVar19 + -0x5c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar19 + -0x5c)" (( "(") (binary_expression "puVar19 + -0x5c" (identifier "puVar19") (+ "+") (number_literal "-0x5c")) () ")"))))) (; ";")) (expression_statement "pcVar18 = *(code **)(*(int *)(puVar19 + -0x68) + -0x7b2c);" (assignment_expression "pcVar18 = *(code **)(*(int *)(puVar19 + -0x68) + -0x7b2c)" (identifier "pcVar18") (= "=") (pointer_expression "*(code **)(*(int *)(puVar19 + -0x68) + -0x7b2c)" (* "*") (cast_expression "(code **)(*(int *)(puVar19 + -0x68) + -0x7b2c)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*(int *)(puVar19 + -0x68) + -0x7b2c)" (( "(") (binary_expression "*(int *)(puVar19 + -0x68) + -0x7b2c" (pointer_expression "*(int *)(puVar19 + -0x68)" (* "*") (cast_expression "(int *)(puVar19 + -0x68)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar19 + -0x68)" (( "(") (binary_expression "puVar19 + -0x68" (identifier "puVar19") (+ "+") (number_literal "-0x68")) () ")")))) (+ "+") (number_literal "-0x7b2c")) () ")"))))) (; ";")) (expression_statement "*(int *)(puVar16 + iVar9 * 4) = iVar1 + iVar2;" (assignment_expression "*(int *)(puVar16 + iVar9 * 4) = iVar1 + iVar2" (pointer_expression "*(int *)(puVar16 + iVar9 * 4)" (* "*") (cast_expression "(int *)(puVar16 + iVar9 * 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + iVar9 * 4)" (( "(") (binary_expression "puVar16 + iVar9 * 4" (identifier "puVar16") (+ "+") (binary_expression "iVar9 * 4" (identifier "iVar9") (* "*") (number_literal "4"))) () ")")))) (= "=") (binary_expression "iVar1 + iVar2" (identifier "iVar1") (+ "+") (identifier "iVar2"))) (; ";")) (expression_statement "*(uint *)(puVar19 + -0x60) = (uint)(iVar1 + iVar2 != 0) + iVar9;" (assignment_expression "*(uint *)(puVar19 + -0x60) = (uint)(iVar1 + iVar2 != 0) + iVar9" (pointer_expression "*(uint *)(puVar19 + -0x60)" (* "*") (cast_expression "(uint *)(puVar19 + -0x60)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar19 + -0x60)" (( "(") (binary_expression "puVar19 + -0x60" (identifier "puVar19") (+ "+") (number_literal "-0x60")) () ")")))) (= "=") (binary_expression "(uint)(iVar1 + iVar2 != 0) + iVar9" (call_expression "(uint)(iVar1 + iVar2 != 0)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(iVar1 + iVar2 != 0)" (( "(") (binary_expression "iVar1 + iVar2 != 0" (binary_expression "iVar1 + iVar2" (identifier "iVar1") (+ "+") (identifier "iVar2")) (!= "!=") (number_literal "0")) () ")"))) (+ "+") (identifier "iVar9"))) (; ";")) (expression_statement "iVar1 = (*pcVar18)(piVar11,piVar15,piVar11,iVar9);" (assignment_expression "iVar1 = (*pcVar18)(piVar11,piVar15,piVar11,iVar9)" (identifier "iVar1") (= "=") (call_expression "(*pcVar18)(piVar11,piVar15,piVar11,iVar9)" (parenthesized_expression "(*pcVar18)" (( "(") (pointer_expression "*pcVar18" (* "*") (identifier "pcVar18")) () ")")) (argument_list "(piVar11,piVar15,piVar11,iVar9)" (( "(") (identifier "piVar11") (, ",") (identifier "piVar15") (, ",") (identifier "piVar11") (, ",") (identifier "iVar9") () ")")))) (; ";")) (expression_statement "iVar2 = *(int *)(puVar19 + -0x60);" (assignment_expression "iVar2 = *(int *)(puVar19 + -0x60)" (identifier "iVar2") (= "=") (pointer_expression "*(int *)(puVar19 + -0x60)" (* "*") (cast_expression "(int *)(puVar19 + -0x60)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar19 + -0x60)" (( "(") (binary_expression "puVar19 + -0x60" (identifier "puVar19") (+ "+") (number_literal "-0x60")) () ")"))))) (; ";")) (expression_statement "pcVar18 = *(code **)(*(int *)(puVar19 + -0x68) + -0x7d8c);" (assignment_expression "pcVar18 = *(code **)(*(int *)(puVar19 + -0x68) + -0x7d8c)" (identifier "pcVar18") (= "=") (pointer_expression "*(code **)(*(int *)(puVar19 + -0x68) + -0x7d8c)" (* "*") (cast_expression "(code **)(*(int *)(puVar19 + -0x68) + -0x7d8c)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*(int *)(puVar19 + -0x68) + -0x7d8c)" (( "(") (binary_expression "*(int *)(puVar19 + -0x68) + -0x7d8c" (pointer_expression "*(int *)(puVar19 + -0x68)" (* "*") (cast_expression "(int *)(puVar19 + -0x68)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar19 + -0x68)" (( "(") (binary_expression "puVar19 + -0x68" (identifier "puVar19") (+ "+") (number_literal "-0x68")) () ")")))) (+ "+") (number_literal "-0x7d8c")) () ")"))))) (; ";")) (expression_statement "iVar14 = iVar9 + (*(int *)(puVar19 + -0x5c) - iVar1);" (assignment_expression "iVar14 = iVar9 + (*(int *)(puVar19 + -0x5c) - iVar1)" (identifier "iVar14") (= "=") (binary_expression "iVar9 + (*(int *)(puVar19 + -0x5c) - iVar1)" (identifier "iVar9") (+ "+") (parenthesized_expression "(*(int *)(puVar19 + -0x5c) - iVar1)" (( "(") (binary_expression "*(int *)(puVar19 + -0x5c) - iVar1" (pointer_expression "*(int *)(puVar19 + -0x5c)" (* "*") (cast_expression "(int *)(puVar19 + -0x5c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar19 + -0x5c)" (( "(") (binary_expression "puVar19 + -0x5c" (identifier "puVar19") (+ "+") (number_literal "-0x5c")) () ")")))) (- "-") (identifier "iVar1")) () ")")))) (; ";")) (expression_statement "piVar11[iVar9] = *(int *)(puVar19 + -0x5c) - iVar1;" (assignment_expression "piVar11[iVar9] = *(int *)(puVar19 + -0x5c) - iVar1" (subscript_expression "piVar11[iVar9]" (identifier "piVar11") ([ "[") (identifier "iVar9") (] "]")) (= "=") (binary_expression "*(int *)(puVar19 + -0x5c) - iVar1" (pointer_expression "*(int *)(puVar19 + -0x5c)" (* "*") (cast_expression "(int *)(puVar19 + -0x5c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar19 + -0x5c)" (( "(") (binary_expression "puVar19 + -0x5c" (identifier "puVar19") (+ "+") (number_literal "-0x5c")) () ")")))) (- "-") (identifier "iVar1"))) (; ";")) (expression_statement "*(int *)(puVar20 + 0x10) = iVar14;" (assignment_expression "*(int *)(puVar20 + 0x10) = iVar14" (pointer_expression "*(int *)(puVar20 + 0x10)" (* "*") (cast_expression "(int *)(puVar20 + 0x10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar20 + 0x10)" (( "(") (binary_expression "puVar20 + 0x10" (identifier "puVar20") (+ "+") (number_literal "0x10")) () ")")))) (= "=") (identifier "iVar14")) (; ";")) (expression_statement "iVar9 = iVar2 + iVar14;" (assignment_expression "iVar9 = iVar2 + iVar14" (identifier "iVar9") (= "=") (binary_expression "iVar2 + iVar14" (identifier "iVar2") (+ "+") (identifier "iVar14"))) (; ";")) (expression_statement "iVar1 = (*pcVar18)(piVar15,puVar16,iVar2,piVar11);" (assignment_expression "iVar1 = (*pcVar18)(piVar15,puVar16,iVar2,piVar11)" (identifier "iVar1") (= "=") (call_expression "(*pcVar18)(piVar15,puVar16,iVar2,piVar11)" (parenthesized_expression "(*pcVar18)" (( "(") (pointer_expression "*pcVar18" (* "*") (identifier "pcVar18")) () ")")) (argument_list "(piVar15,puVar16,iVar2,piVar11)" (( "(") (identifier "piVar15") (, ",") (identifier "puVar16") (, ",") (identifier "iVar2") (, ",") (identifier "piVar11") () ")")))) (; ";")) (expression_statement "uVar10 = 0xfffffffe;" (assignment_expression "uVar10 = 0xfffffffe" (identifier "uVar10") (= "=") (number_literal "0xfffffffe")) (; ";")) (expression_statement "piVar7 = (int *)0x2;" (assignment_expression "piVar7 = (int *)0x2" (identifier "piVar7") (= "=") (cast_expression "(int *)0x2" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x2"))) (; ";")) (expression_statement "pcVar21 = *(code **)(puVar19 + -0x68);" (assignment_expression "pcVar21 = *(code **)(puVar19 + -0x68)" (identifier "pcVar21") (= "=") (pointer_expression "*(code **)(puVar19 + -0x68)" (* "*") (cast_expression "(code **)(puVar19 + -0x68)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar19 + -0x68)" (( "(") (binary_expression "puVar19 + -0x68" (identifier "puVar19") (+ "+") (number_literal "-0x68")) () ")"))))) (; ";")) (if_statement "if (((uint)puVar6 & 2) != 0) {\n        piVar7 = (int *)0xfffffffe;\n      }" (if "if") (parenthesized_expression "(((uint)puVar6 & 2) != 0)" (( "(") (binary_expression "((uint)puVar6 & 2) != 0" (parenthesized_expression "((uint)puVar6 & 2)" (( "(") (binary_expression "(uint)puVar6 & 2" (cast_expression "(uint)puVar6" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "puVar6")) (& "&") (number_literal "2")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n        piVar7 = (int *)0xfffffffe;\n      }" ({ "{") (expression_statement "piVar7 = (int *)0xfffffffe;" (assignment_expression "piVar7 = (int *)0xfffffffe" (identifier "piVar7") (= "=") (cast_expression "(int *)0xfffffffe" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0xfffffffe"))) (; ";")) (} "}"))) (expression_statement "*piVar15 = (int)piVar7 + *piVar15;" (assignment_expression "*piVar15 = (int)piVar7 + *piVar15" (pointer_expression "*piVar15" (* "*") (identifier "piVar15")) (= "=") (binary_expression "(int)piVar7 + *piVar15" (cast_expression "(int)piVar7" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar7")) (+ "+") (pointer_expression "*piVar15" (* "*") (identifier "piVar15")))) (; ";")) (} "}")))) (expression_statement "piVar4 = *(int **)(puVar19 + -0x58);" (assignment_expression "piVar4 = *(int **)(puVar19 + -0x58)" (identifier "piVar4") (= "=") (pointer_expression "*(int **)(puVar19 + -0x58)" (* "*") (cast_expression "(int **)(puVar19 + -0x58)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar19 + -0x58)" (( "(") (binary_expression "puVar19 + -0x58" (identifier "puVar19") (+ "+") (number_literal "-0x58")) () ")"))))) (; ";")) (expression_statement "iVar9 = iVar9 - (uint)(iVar1 == 0);" (assignment_expression "iVar9 = iVar9 - (uint)(iVar1 == 0)" (identifier "iVar9") (= "=") (binary_expression "iVar9 - (uint)(iVar1 == 0)" (identifier "iVar9") (- "-") (call_expression "(uint)(iVar1 == 0)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(iVar1 == 0)" (( "(") (binary_expression "iVar1 == 0" (identifier "iVar1") (== "==") (number_literal "0")) () ")"))))) (; ";")) (expression_statement "piVar15 = piVar15 + iVar9;" (assignment_expression "piVar15 = piVar15 + iVar9" (identifier "piVar15") (= "=") (binary_expression "piVar15 + iVar9" (identifier "piVar15") (+ "+") (identifier "iVar9"))) (; ";")) (expression_statement "param_1 = (uint *)(iVar9 - (uint)(piVar15[-1] == 0));" (assignment_expression "param_1 = (uint *)(iVar9 - (uint)(piVar15[-1] == 0))" (identifier "param_1") (= "=") (cast_expression "(uint *)(iVar9 - (uint)(piVar15[-1] == 0))" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar9 - (uint)(piVar15[-1] == 0))" (( "(") (binary_expression "iVar9 - (uint)(piVar15[-1] == 0)" (identifier "iVar9") (- "-") (call_expression "(uint)(piVar15[-1] == 0)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(piVar15[-1] == 0)" (( "(") (binary_expression "piVar15[-1] == 0" (subscript_expression "piVar15[-1]" (identifier "piVar15") ([ "[") (number_literal "-1") (] "]")) (== "==") (number_literal "0")) () ")")))) () ")")))) (; ";")) (expression_statement "piVar3[1] = (int)param_1;" (assignment_expression "piVar3[1] = (int)param_1" (subscript_expression "piVar3[1]" (identifier "piVar3") ([ "[") (number_literal "1") (] "]")) (= "=") (cast_expression "(int)param_1" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_1"))) (; ";")) (expression_statement "puVar16 = puVar20;" (assignment_expression "puVar16 = puVar20" (identifier "puVar16") (= "=") (identifier "puVar20")) (; ";")) (if_statement "if (piVar4 != (int *)0x0) {\n      (**(code **)(pcVar21 + -0x7a2c))();\n      pcVar21 = *(code **)(puVar19 + -0x68);\n    }" (if "if") (parenthesized_expression "(piVar4 != (int *)0x0)" (( "(") (binary_expression "piVar4 != (int *)0x0" (identifier "piVar4") (!= "!=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n      (**(code **)(pcVar21 + -0x7a2c))();\n      pcVar21 = *(code **)(puVar19 + -0x68);\n    }" ({ "{") (expression_statement "(**(code **)(pcVar21 + -0x7a2c))();" (call_expression "(**(code **)(pcVar21 + -0x7a2c))()" (parenthesized_expression "(**(code **)(pcVar21 + -0x7a2c))" (( "(") (pointer_expression "**(code **)(pcVar21 + -0x7a2c)" (* "*") (pointer_expression "*(code **)(pcVar21 + -0x7a2c)" (* "*") (cast_expression "(code **)(pcVar21 + -0x7a2c)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(pcVar21 + -0x7a2c)" (( "(") (binary_expression "pcVar21 + -0x7a2c" (identifier "pcVar21") (+ "+") (number_literal "-0x7a2c")) () ")"))))) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "pcVar21 = *(code **)(puVar19 + -0x68);" (assignment_expression "pcVar21 = *(code **)(puVar19 + -0x68)" (identifier "pcVar21") (= "=") (pointer_expression "*(code **)(puVar19 + -0x68)" (* "*") (cast_expression "(code **)(puVar19 + -0x68)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar19 + -0x68)" (( "(") (binary_expression "puVar19 + -0x68" (identifier "puVar19") (+ "+") (number_literal "-0x68")) () ")"))))) (; ";")) (} "}"))) (} "}")))) (if_statement "if (*(int *)(puVar19 + -0x54) == *piVar13) {\n    return *piVar13;\n  }" (if "if") (parenthesized_expression "(*(int *)(puVar19 + -0x54) == *piVar13)" (( "(") (binary_expression "*(int *)(puVar19 + -0x54) == *piVar13" (pointer_expression "*(int *)(puVar19 + -0x54)" (* "*") (cast_expression "(int *)(puVar19 + -0x54)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar19 + -0x54)" (( "(") (binary_expression "puVar19 + -0x54" (identifier "puVar19") (+ "+") (number_literal "-0x54")) () ")")))) (== "==") (pointer_expression "*piVar13" (* "*") (identifier "piVar13"))) () ")")) (compound_statement "{\n    return *piVar13;\n  }" ({ "{") (return_statement "return *piVar13;" (return "return") (pointer_expression "*piVar13" (* "*") (identifier "piVar13")) (; ";")) (} "}"))) (expression_statement "pcVar18 = *(code **)(pcVar21 + -0x7b70);" (assignment_expression "pcVar18 = *(code **)(pcVar21 + -0x7b70)" (identifier "pcVar18") (= "=") (pointer_expression "*(code **)(pcVar21 + -0x7b70)" (* "*") (cast_expression "(code **)(pcVar21 + -0x7b70)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(pcVar21 + -0x7b70)" (( "(") (binary_expression "pcVar21 + -0x7b70" (identifier "pcVar21") (+ "+") (number_literal "-0x7b70")) () ")"))))) (; ";")) (expression_statement "uVar22 = 0x2825c;" (assignment_expression "uVar22 = 0x2825c" (identifier "uVar22") (= "=") (number_literal "0x2825c")) (; ";")) (expression_statement "(*pcVar18)();" (call_expression "(*pcVar18)()" (parenthesized_expression "(*pcVar18)" (( "(") (pointer_expression "*pcVar18" (* "*") (identifier "pcVar18")) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "pcVar21 = pcVar18 + 0x76de0;" (assignment_expression "pcVar21 = pcVar18 + 0x76de0" (identifier "pcVar21") (= "=") (binary_expression "pcVar18 + 0x76de0" (identifier "pcVar18") (+ "+") (number_literal "0x76de0"))) (; ";")) (expression_statement "*(code **)(puVar16 + -0x28) = pcVar21;" (assignment_expression "*(code **)(puVar16 + -0x28) = pcVar21" (pointer_expression "*(code **)(puVar16 + -0x28)" (* "*") (cast_expression "(code **)(puVar16 + -0x28)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar16 + -0x28)" (( "(") (binary_expression "puVar16 + -0x28" (identifier "puVar16") (+ "+") (number_literal "-0x28")) () ")")))) (= "=") (identifier "pcVar21")) (; ";")) (expression_statement "*(uint **)(puVar16 + -0xc) = param_1;" (assignment_expression "*(uint **)(puVar16 + -0xc) = param_1" (pointer_expression "*(uint **)(puVar16 + -0xc)" (* "*") (cast_expression "(uint **)(puVar16 + -0xc)" (( "(") (type_descriptor "uint **" (type_identifier "uint") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar16 + -0xc)" (( "(") (binary_expression "puVar16 + -0xc" (identifier "puVar16") (+ "+") (number_literal "-0xc")) () ")")))) (= "=") (identifier "param_1")) (; ";")) (expression_statement "*(undefined4 *)(puVar16 + -4) = uVar22;" (assignment_expression "*(undefined4 *)(puVar16 + -4) = uVar22" (pointer_expression "*(undefined4 *)(puVar16 + -4)" (* "*") (cast_expression "(undefined4 *)(puVar16 + -4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + -4)" (( "(") (binary_expression "puVar16 + -4" (identifier "puVar16") (+ "+") (number_literal "-4")) () ")")))) (= "=") (identifier "uVar22")) (; ";")) (expression_statement "*(int **)(puVar16 + -8) = piVar15;" (assignment_expression "*(int **)(puVar16 + -8) = piVar15" (pointer_expression "*(int **)(puVar16 + -8)" (* "*") (cast_expression "(int **)(puVar16 + -8)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar16 + -8)" (( "(") (binary_expression "puVar16 + -8" (identifier "puVar16") (+ "+") (number_literal "-8")) () ")")))) (= "=") (identifier "piVar15")) (; ";")) (expression_statement "*(int **)(puVar16 + -0x10) = piVar13;" (assignment_expression "*(int **)(puVar16 + -0x10) = piVar13" (pointer_expression "*(int **)(puVar16 + -0x10)" (* "*") (cast_expression "(int **)(puVar16 + -0x10)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar16 + -0x10)" (( "(") (binary_expression "puVar16 + -0x10" (identifier "puVar16") (+ "+") (number_literal "-0x10")) () ")")))) (= "=") (identifier "piVar13")) (; ";")) (expression_statement "*(int **)(puVar16 + -0x14) = piVar11;" (assignment_expression "*(int **)(puVar16 + -0x14) = piVar11" (pointer_expression "*(int **)(puVar16 + -0x14)" (* "*") (cast_expression "(int **)(puVar16 + -0x14)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar16 + -0x14)" (( "(") (binary_expression "puVar16 + -0x14" (identifier "puVar16") (+ "+") (number_literal "-0x14")) () ")")))) (= "=") (identifier "piVar11")) (; ";")) (if_statement "if (0x2f < uVar10) {\n    iVar9 = ((uVar10 >> 5) * 0x17 >> 5) + 4;\n    if (*piVar4 < iVar9) {\n      pcVar18 = *(code **)(pcVar18 + 0x6f35c);\n      *(uint *)(puVar16 + -0x1c) = uVar10;\n      iVar1 = (*pcVar18)();\n      pcVar21 = *(code **)(puVar16 + -0x28);\n      uVar10 = *(uint *)(puVar16 + -0x1c);\n    }\n    else {\n      iVar1 = piVar4[2];\n    }\n    pcVar18 = *(code **)(pcVar21 + -0x7a84);\n    if (*piVar7 < iVar9) {\n      *(uint *)(puVar16 + -0x1c) = uVar10;\n      iVar9 = (*pcVar18)(piVar7,iVar9);\n      pcVar21 = *(code **)(puVar16 + -0x28);\n    }\n    else {\n      iVar9 = piVar7[2];\n    }\n    iVar1 = (**(code **)(pcVar21 + -0x7e94))(iVar1,iVar9);\n    piVar4[1] = iVar1;\n    iVar1 = iVar1 - (uint)(*(int *)(iVar9 + iVar1 * 4 + -4) == 0);\n    piVar7[1] = iVar1;\n    return iVar1;\n  }" (if "if") (parenthesized_expression "(0x2f < uVar10)" (( "(") (binary_expression "0x2f < uVar10" (number_literal "0x2f") (< "<") (identifier "uVar10")) () ")")) (compound_statement "{\n    iVar9 = ((uVar10 >> 5) * 0x17 >> 5) + 4;\n    if (*piVar4 < iVar9) {\n      pcVar18 = *(code **)(pcVar18 + 0x6f35c);\n      *(uint *)(puVar16 + -0x1c) = uVar10;\n      iVar1 = (*pcVar18)();\n      pcVar21 = *(code **)(puVar16 + -0x28);\n      uVar10 = *(uint *)(puVar16 + -0x1c);\n    }\n    else {\n      iVar1 = piVar4[2];\n    }\n    pcVar18 = *(code **)(pcVar21 + -0x7a84);\n    if (*piVar7 < iVar9) {\n      *(uint *)(puVar16 + -0x1c) = uVar10;\n      iVar9 = (*pcVar18)(piVar7,iVar9);\n      pcVar21 = *(code **)(puVar16 + -0x28);\n    }\n    else {\n      iVar9 = piVar7[2];\n    }\n    iVar1 = (**(code **)(pcVar21 + -0x7e94))(iVar1,iVar9);\n    piVar4[1] = iVar1;\n    iVar1 = iVar1 - (uint)(*(int *)(iVar9 + iVar1 * 4 + -4) == 0);\n    piVar7[1] = iVar1;\n    return iVar1;\n  }" ({ "{") (expression_statement "iVar9 = ((uVar10 >> 5) * 0x17 >> 5) + 4;" (assignment_expression "iVar9 = ((uVar10 >> 5) * 0x17 >> 5) + 4" (identifier "iVar9") (= "=") (binary_expression "((uVar10 >> 5) * 0x17 >> 5) + 4" (parenthesized_expression "((uVar10 >> 5) * 0x17 >> 5)" (( "(") (binary_expression "(uVar10 >> 5) * 0x17 >> 5" (binary_expression "(uVar10 >> 5) * 0x17" (parenthesized_expression "(uVar10 >> 5)" (( "(") (binary_expression "uVar10 >> 5" (identifier "uVar10") (>> ">>") (number_literal "5")) () ")")) (* "*") (number_literal "0x17")) (>> ">>") (number_literal "5")) () ")")) (+ "+") (number_literal "4"))) (; ";")) (if_statement "if (*piVar4 < iVar9) {\n      pcVar18 = *(code **)(pcVar18 + 0x6f35c);\n      *(uint *)(puVar16 + -0x1c) = uVar10;\n      iVar1 = (*pcVar18)();\n      pcVar21 = *(code **)(puVar16 + -0x28);\n      uVar10 = *(uint *)(puVar16 + -0x1c);\n    }\n    else {\n      iVar1 = piVar4[2];\n    }" (if "if") (parenthesized_expression "(*piVar4 < iVar9)" (( "(") (binary_expression "*piVar4 < iVar9" (pointer_expression "*piVar4" (* "*") (identifier "piVar4")) (< "<") (identifier "iVar9")) () ")")) (compound_statement "{\n      pcVar18 = *(code **)(pcVar18 + 0x6f35c);\n      *(uint *)(puVar16 + -0x1c) = uVar10;\n      iVar1 = (*pcVar18)();\n      pcVar21 = *(code **)(puVar16 + -0x28);\n      uVar10 = *(uint *)(puVar16 + -0x1c);\n    }" ({ "{") (expression_statement "pcVar18 = *(code **)(pcVar18 + 0x6f35c);" (assignment_expression "pcVar18 = *(code **)(pcVar18 + 0x6f35c)" (identifier "pcVar18") (= "=") (pointer_expression "*(code **)(pcVar18 + 0x6f35c)" (* "*") (cast_expression "(code **)(pcVar18 + 0x6f35c)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(pcVar18 + 0x6f35c)" (( "(") (binary_expression "pcVar18 + 0x6f35c" (identifier "pcVar18") (+ "+") (number_literal "0x6f35c")) () ")"))))) (; ";")) (expression_statement "*(uint *)(puVar16 + -0x1c) = uVar10;" (assignment_expression "*(uint *)(puVar16 + -0x1c) = uVar10" (pointer_expression "*(uint *)(puVar16 + -0x1c)" (* "*") (cast_expression "(uint *)(puVar16 + -0x1c)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + -0x1c)" (( "(") (binary_expression "puVar16 + -0x1c" (identifier "puVar16") (+ "+") (number_literal "-0x1c")) () ")")))) (= "=") (identifier "uVar10")) (; ";")) (expression_statement "iVar1 = (*pcVar18)();" (assignment_expression "iVar1 = (*pcVar18)()" (identifier "iVar1") (= "=") (call_expression "(*pcVar18)()" (parenthesized_expression "(*pcVar18)" (( "(") (pointer_expression "*pcVar18" (* "*") (identifier "pcVar18")) () ")")) (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "pcVar21 = *(code **)(puVar16 + -0x28);" (assignment_expression "pcVar21 = *(code **)(puVar16 + -0x28)" (identifier "pcVar21") (= "=") (pointer_expression "*(code **)(puVar16 + -0x28)" (* "*") (cast_expression "(code **)(puVar16 + -0x28)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar16 + -0x28)" (( "(") (binary_expression "puVar16 + -0x28" (identifier "puVar16") (+ "+") (number_literal "-0x28")) () ")"))))) (; ";")) (expression_statement "uVar10 = *(uint *)(puVar16 + -0x1c);" (assignment_expression "uVar10 = *(uint *)(puVar16 + -0x1c)" (identifier "uVar10") (= "=") (pointer_expression "*(uint *)(puVar16 + -0x1c)" (* "*") (cast_expression "(uint *)(puVar16 + -0x1c)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + -0x1c)" (( "(") (binary_expression "puVar16 + -0x1c" (identifier "puVar16") (+ "+") (number_literal "-0x1c")) () ")"))))) (; ";")) (} "}")) (else_clause "else {\n      iVar1 = piVar4[2];\n    }" (else "else") (compound_statement "{\n      iVar1 = piVar4[2];\n    }" ({ "{") (expression_statement "iVar1 = piVar4[2];" (assignment_expression "iVar1 = piVar4[2]" (identifier "iVar1") (= "=") (subscript_expression "piVar4[2]" (identifier "piVar4") ([ "[") (number_literal "2") (] "]"))) (; ";")) (} "}")))) (expression_statement "pcVar18 = *(code **)(pcVar21 + -0x7a84);" (assignment_expression "pcVar18 = *(code **)(pcVar21 + -0x7a84)" (identifier "pcVar18") (= "=") (pointer_expression "*(code **)(pcVar21 + -0x7a84)" (* "*") (cast_expression "(code **)(pcVar21 + -0x7a84)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(pcVar21 + -0x7a84)" (( "(") (binary_expression "pcVar21 + -0x7a84" (identifier "pcVar21") (+ "+") (number_literal "-0x7a84")) () ")"))))) (; ";")) (if_statement "if (*piVar7 < iVar9) {\n      *(uint *)(puVar16 + -0x1c) = uVar10;\n      iVar9 = (*pcVar18)(piVar7,iVar9);\n      pcVar21 = *(code **)(puVar16 + -0x28);\n    }\n    else {\n      iVar9 = piVar7[2];\n    }" (if "if") (parenthesized_expression "(*piVar7 < iVar9)" (( "(") (binary_expression "*piVar7 < iVar9" (pointer_expression "*piVar7" (* "*") (identifier "piVar7")) (< "<") (identifier "iVar9")) () ")")) (compound_statement "{\n      *(uint *)(puVar16 + -0x1c) = uVar10;\n      iVar9 = (*pcVar18)(piVar7,iVar9);\n      pcVar21 = *(code **)(puVar16 + -0x28);\n    }" ({ "{") (expression_statement "*(uint *)(puVar16 + -0x1c) = uVar10;" (assignment_expression "*(uint *)(puVar16 + -0x1c) = uVar10" (pointer_expression "*(uint *)(puVar16 + -0x1c)" (* "*") (cast_expression "(uint *)(puVar16 + -0x1c)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + -0x1c)" (( "(") (binary_expression "puVar16 + -0x1c" (identifier "puVar16") (+ "+") (number_literal "-0x1c")) () ")")))) (= "=") (identifier "uVar10")) (; ";")) (expression_statement "iVar9 = (*pcVar18)(piVar7,iVar9);" (assignment_expression "iVar9 = (*pcVar18)(piVar7,iVar9)" (identifier "iVar9") (= "=") (call_expression "(*pcVar18)(piVar7,iVar9)" (parenthesized_expression "(*pcVar18)" (( "(") (pointer_expression "*pcVar18" (* "*") (identifier "pcVar18")) () ")")) (argument_list "(piVar7,iVar9)" (( "(") (identifier "piVar7") (, ",") (identifier "iVar9") () ")")))) (; ";")) (expression_statement "pcVar21 = *(code **)(puVar16 + -0x28);" (assignment_expression "pcVar21 = *(code **)(puVar16 + -0x28)" (identifier "pcVar21") (= "=") (pointer_expression "*(code **)(puVar16 + -0x28)" (* "*") (cast_expression "(code **)(puVar16 + -0x28)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar16 + -0x28)" (( "(") (binary_expression "puVar16 + -0x28" (identifier "puVar16") (+ "+") (number_literal "-0x28")) () ")"))))) (; ";")) (} "}")) (else_clause "else {\n      iVar9 = piVar7[2];\n    }" (else "else") (compound_statement "{\n      iVar9 = piVar7[2];\n    }" ({ "{") (expression_statement "iVar9 = piVar7[2];" (assignment_expression "iVar9 = piVar7[2]" (identifier "iVar9") (= "=") (subscript_expression "piVar7[2]" (identifier "piVar7") ([ "[") (number_literal "2") (] "]"))) (; ";")) (} "}")))) (expression_statement "iVar1 = (**(code **)(pcVar21 + -0x7e94))(iVar1,iVar9);" (assignment_expression "iVar1 = (**(code **)(pcVar21 + -0x7e94))(iVar1,iVar9)" (identifier "iVar1") (= "=") (call_expression "(**(code **)(pcVar21 + -0x7e94))(iVar1,iVar9)" (parenthesized_expression "(**(code **)(pcVar21 + -0x7e94))" (( "(") (pointer_expression "**(code **)(pcVar21 + -0x7e94)" (* "*") (pointer_expression "*(code **)(pcVar21 + -0x7e94)" (* "*") (cast_expression "(code **)(pcVar21 + -0x7e94)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(pcVar21 + -0x7e94)" (( "(") (binary_expression "pcVar21 + -0x7e94" (identifier "pcVar21") (+ "+") (number_literal "-0x7e94")) () ")"))))) () ")")) (argument_list "(iVar1,iVar9)" (( "(") (identifier "iVar1") (, ",") (identifier "iVar9") () ")")))) (; ";")) (expression_statement "piVar4[1] = iVar1;" (assignment_expression "piVar4[1] = iVar1" (subscript_expression "piVar4[1]" (identifier "piVar4") ([ "[") (number_literal "1") (] "]")) (= "=") (identifier "iVar1")) (; ";")) (expression_statement "iVar1 = iVar1 - (uint)(*(int *)(iVar9 + iVar1 * 4 + -4) == 0);" (assignment_expression "iVar1 = iVar1 - (uint)(*(int *)(iVar9 + iVar1 * 4 + -4) == 0)" (identifier "iVar1") (= "=") (binary_expression "iVar1 - (uint)(*(int *)(iVar9 + iVar1 * 4 + -4) == 0)" (identifier "iVar1") (- "-") (call_expression "(uint)(*(int *)(iVar9 + iVar1 * 4 + -4) == 0)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(*(int *)(iVar9 + iVar1 * 4 + -4) == 0)" (( "(") (binary_expression "*(int *)(iVar9 + iVar1 * 4 + -4) == 0" (pointer_expression "*(int *)(iVar9 + iVar1 * 4 + -4)" (* "*") (cast_expression "(int *)(iVar9 + iVar1 * 4 + -4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar9 + iVar1 * 4 + -4)" (( "(") (binary_expression "iVar9 + iVar1 * 4 + -4" (binary_expression "iVar9 + iVar1 * 4" (identifier "iVar9") (+ "+") (binary_expression "iVar1 * 4" (identifier "iVar1") (* "*") (number_literal "4"))) (+ "+") (number_literal "-4")) () ")")))) (== "==") (number_literal "0")) () ")"))))) (; ";")) (expression_statement "piVar7[1] = iVar1;" (assignment_expression "piVar7[1] = iVar1" (subscript_expression "piVar7[1]" (identifier "piVar7") ([ "[") (number_literal "1") (] "]")) (= "=") (identifier "iVar1")) (; ";")) (return_statement "return iVar1;" (return "return") (identifier "iVar1") (; ";")) (} "}"))) (expression_statement "puVar8 = (undefined4 *)piVar7[2];" (assignment_expression "puVar8 = (undefined4 *)piVar7[2]" (identifier "puVar8") (= "=") (cast_expression "(undefined4 *)piVar7[2]" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "piVar7[2]" (identifier "piVar7") ([ "[") (number_literal "2") (] "]")))) (; ";")) (expression_statement "uVar22 = *(undefined4 *)(*(int *)(pcVar18 + 0x6f2ec) + uVar10 * 4);" (assignment_expression "uVar22 = *(undefined4 *)(*(int *)(pcVar18 + 0x6f2ec) + uVar10 * 4)" (identifier "uVar22") (= "=") (pointer_expression "*(undefined4 *)(*(int *)(pcVar18 + 0x6f2ec) + uVar10 * 4)" (* "*") (cast_expression "(undefined4 *)(*(int *)(pcVar18 + 0x6f2ec) + uVar10 * 4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(pcVar18 + 0x6f2ec) + uVar10 * 4)" (( "(") (binary_expression "*(int *)(pcVar18 + 0x6f2ec) + uVar10 * 4" (pointer_expression "*(int *)(pcVar18 + 0x6f2ec)" (* "*") (cast_expression "(int *)(pcVar18 + 0x6f2ec)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(pcVar18 + 0x6f2ec)" (( "(") (binary_expression "pcVar18 + 0x6f2ec" (identifier "pcVar18") (+ "+") (number_literal "0x6f2ec")) () ")")))) (+ "+") (binary_expression "uVar10 * 4" (identifier "uVar10") (* "*") (number_literal "4"))) () ")"))))) (; ";")) (expression_statement "iVar9 = *(int *)(*(int *)(pcVar18 + 0x6f2ec) + (uVar10 + 1) * 4);" (assignment_expression "iVar9 = *(int *)(*(int *)(pcVar18 + 0x6f2ec) + (uVar10 + 1) * 4)" (identifier "iVar9") (= "=") (pointer_expression "*(int *)(*(int *)(pcVar18 + 0x6f2ec) + (uVar10 + 1) * 4)" (* "*") (cast_expression "(int *)(*(int *)(pcVar18 + 0x6f2ec) + (uVar10 + 1) * 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(pcVar18 + 0x6f2ec) + (uVar10 + 1) * 4)" (( "(") (binary_expression "*(int *)(pcVar18 + 0x6f2ec) + (uVar10 + 1) * 4" (pointer_expression "*(int *)(pcVar18 + 0x6f2ec)" (* "*") (cast_expression "(int *)(pcVar18 + 0x6f2ec)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(pcVar18 + 0x6f2ec)" (( "(") (binary_expression "pcVar18 + 0x6f2ec" (identifier "pcVar18") (+ "+") (number_literal "0x6f2ec")) () ")")))) (+ "+") (binary_expression "(uVar10 + 1) * 4" (parenthesized_expression "(uVar10 + 1)" (( "(") (binary_expression "uVar10 + 1" (identifier "uVar10") (+ "+") (number_literal "1")) () ")")) (* "*") (number_literal "4"))) () ")"))))) (; ";")) (expression_statement "*(int *)piVar4[2] = iVar9;" (assignment_expression "*(int *)piVar4[2] = iVar9" (pointer_expression "*(int *)piVar4[2]" (* "*") (cast_expression "(int *)piVar4[2]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "piVar4[2]" (identifier "piVar4") ([ "[") (number_literal "2") (] "]")))) (= "=") (identifier "iVar9")) (; ";")) (expression_statement "piVar4[1] = (uint)(uVar10 != 0);" (assignment_expression "piVar4[1] = (uint)(uVar10 != 0)" (subscript_expression "piVar4[1]" (identifier "piVar4") ([ "[") (number_literal "1") (] "]")) (= "=") (call_expression "(uint)(uVar10 != 0)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(uVar10 != 0)" (( "(") (binary_expression "uVar10 != 0" (identifier "uVar10") (!= "!=") (number_literal "0")) () ")")))) (; ";")) (expression_statement "*puVar8 = uVar22;" (assignment_expression "*puVar8 = uVar22" (pointer_expression "*puVar8" (* "*") (identifier "puVar8")) (= "=") (identifier "uVar22")) (; ";")) (expression_statement "piVar7[1] = (uint)(uVar10 != 1);" (assignment_expression "piVar7[1] = (uint)(uVar10 != 1)" (subscript_expression "piVar7[1]" (identifier "piVar7") ([ "[") (number_literal "1") (] "]")) (= "=") (call_expression "(uint)(uVar10 != 1)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(uVar10 != 1)" (( "(") (binary_expression "uVar10 != 1" (identifier "uVar10") (!= "!=") (number_literal "1")) () ")")))) (; ";")) (return_statement "return iVar9;" (return "return") (identifier "iVar9") (; ";")) (} "}")))

type_1 function_1(type_2 rem,type_3 dividend,type_1 var_1)

{
  type_1 var_4;
  int var_17;
  int var_18;
  int *piVar4;
  int *var_22;
  type_4 var_7;
  type_2 var_13;
  int *piVar8;
  type_5 *puVar9;
  int var_2;
  type_4 var_6;
  int *piVar12;
  type_4 var_9;
  type_1 *puVar14;
  int var_20;
  type_1 *puVar16;
  int *var_21;
  type_6 *var_16;
  type_5 unaff_s5;
  type_5 unaff_s6;
  type_5 unaff_s7;
  int var_3;
  type_7 *var_5;
  type_6 *var_12;
  type_6 *var_19;
  type_7 *var_15;
  type_5 uVar23;
  type_6 var_8 [16];
  type_7 *apcStack_70 [3];
  type_1 uStack_64;
  int *var_10;
  type_8 _Stack_58;
  type_1 var_11;
  
  if (var_1 != 0) {
    var_2 = dividend->_mp_size;
    if (var_2 != 0) {
      if (var_2 < 0) {
        var_4 = (**(type_7 **)(var_3 + 0x6f8a0))(dividend->_mp_d,-var_2,var_1);
      }
      else {
        var_4 = (**(type_7 **)(var_3 + 0x6f8a0))(dividend->_mp_d,var_2,var_1);
      }
      if (var_4 != 0) {
        if (var_2 < 0) {
          var_4 = var_1 - var_4;
          *rem->_mp_d = var_4;
          rem->_mp_size = 1;
        }
        else {
          *rem->_mp_d = var_4;
          rem->_mp_size = 1;
        }
        return var_4;
      }
    }
    rem->_mp_size = 0;
    return 0;
  }
  var_5 = *(type_7 **)(var_3 + 0x6f9bc);
  (*var_5)();
  apcStack_70[0] = var_5 + 0x77320;
  var_12 = var_8;
  puVar16 = *(type_1 **)(var_5 + 0x6f820);
  var_6 = *(type_4 *)(var_1 + 4);
  var_10 = (int *)0x0;
  var_11 = *puVar16;
  var_9 = dividend->_mp_size;
  if ((int)var_6 < 0) {
    _Stack_58._mp_alloc = -var_6;
    var_7 = var_6 * -4;
    if (0x7f00 < var_7) {
      var_5 = *(type_7 **)(var_5 + 0x6f5d0);
      goto LAB_00027e2c;
    }
LAB_00027d94:
    var_2 = -(var_7 + 7 & 0xfffffff8);
    var_12 = var_8 + var_2;
    _Stack_58._mp_d = (type_9 *)((int)apcStack_70 + var_2);
  }
  else {
    var_7 = var_6 * 4;
    var_5 = *(type_7 **)(var_5 + 0x6f5d0);
    _Stack_58._mp_alloc = var_6;
    if (var_7 < 0x7f01) goto LAB_00027d94;
LAB_00027e2c:
    uStack_64 = var_1;
    _Stack_58._mp_d = (type_9 *)(*var_5)(&var_10,var_7);
    var_1 = uStack_64;
  }
  var_13 = &_Stack_58;
  var_6 = var_9 ^ var_6;
  (**(type_7 **)(apcStack_70[0] + -0x7a6c))(rem,var_13,dividend,var_1);
  if (((int)var_6 < 0) && (_Stack_58._mp_size != 0)) {
    var_13 = rem;
    (**(type_7 **)(apcStack_70[0] + -0x7ac0))(rem,rem,1);
    piVar4 = var_10;
    if (var_10 == (int *)0x0) goto LAB_00027dd8;
    var_5 = *(type_7 **)(apcStack_70[0] + -0x7a2c);
  }
  else {
    var_5 = *(type_7 **)(apcStack_70[0] + -0x7a2c);
    piVar4 = var_10;
    if (var_10 == (int *)0x0) goto LAB_00027dd8;
  }
  piVar4 = var_10;
  (*var_5)();
LAB_00027dd8:
  if (var_11 == *puVar16) {
    return *puVar16;
  }
  var_5 = *(type_7 **)(apcStack_70[0] + -0x7b70);
  var_15 = __gmpz_fdiv_ui;
  (*var_5)();
  *(type_7 **)(var_12 + -0x18) = var_5 + 0x771b0;
  *(type_7 **)(var_12 + -4) = var_15;
  *(type_4 *)(var_12 + -8) = var_9;
  *(type_4 *)(var_12 + -0xc) = var_6;
  if (var_13 != (type_2)0x0) {
    var_2 = piVar4[1];
    if (var_2 == 0) {
      return 0;
    }
    if (var_2 < 0) {
      var_4 = (**(type_7 **)(var_5 + 0x6f630))(piVar4[2],-var_2,var_13);
    }
    else {
      var_4 = (**(type_7 **)(var_5 + 0x6f630))(piVar4[2],var_2,var_13);
    }
    if ((var_4 != 0) && (var_2 < 0)) {
      return (int)var_13 - var_4;
    }
    return var_4;
  }
  var_5 = *(type_7 **)(var_5 + 0x6f74c);
  uVar23 = 0x27f54;
  (*var_5)();
  var_15 = var_5 + 0x770e0;
  var_19 = var_12 + -0x80;
  *(type_4 *)(var_12 + -0x4c) = var_9;
  *(type_5 *)(var_12 + -0x38) = unaff_s6;
  puVar14 = *(type_1 **)(var_5 + 0x6f5e0);
  *(type_6 **)(var_12 + -0x30) = var_8;
  *(type_5 *)(var_12 + -0x3c) = unaff_s5;
  *(type_5 *)(var_12 + -0x2c) = uVar23;
  *(type_5 *)(var_12 + -0x34) = unaff_s7;
  *(type_3 *)(var_12 + -0x40) = dividend;
  *(type_1 **)(var_12 + -0x44) = puVar16;
  *(type_2 *)(var_12 + -0x48) = rem;
  *(type_4 *)(var_12 + -0x50) = var_6;
  *(type_7 **)(var_12 + -0x68) = var_15;
  *(type_1 *)(var_12 + -0x54) = *puVar14;
  if (var_13 < (type_2)0x30) {
    *(type_5 *)piVar4[2] =
         *(type_5 *)(*(int *)(var_5 + 0x6f5ec) + (int)((int)&var_13->_mp_alloc + 1) * 4);
    piVar4[1] = (type_4)(var_13 != (type_2)0x0);
    var_4 = var_14();
    return var_4;
  }
  var_2 = (((type_4)var_13 >> 6) * 0x17 >> 5) + 5;
  var_6 = (type_4)var_13 >> 1;
  if (*piVar4 < var_2 * 2) {
    var_5 = *(type_7 **)(var_5 + 0x6f65c);
    *(type_4 *)(var_12 + -0x5c) = var_6;
    var_21 = (int *)(*var_5)();
    var_15 = *(type_7 **)(var_12 + -0x68);
    var_6 = *(type_4 *)(var_12 + -0x5c);
  }
  else {
    var_21 = (int *)piVar4[2];
  }
  *(type_5 *)(var_12 + -0x58) = 0;
  if ((type_4)(var_2 * 8) < 0x7f01) {
    var_19 = var_12 + var_2 * -8 + -0x80;
    var_16 = var_12 + var_2 * -8 + -0x68;
  }
  else {
    var_5 = *(type_7 **)(var_15 + -0x7d50);
    *(type_4 *)(var_12 + -0x5c) = var_6;
    var_16 = (type_6 *)(*var_5)(var_12 + -0x58);
    var_15 = *(type_7 **)(var_12 + -0x68);
    var_6 = *(type_4 *)(var_12 + -0x5c);
  }
  piVar12 = (int *)(var_16 + var_2 * 4);
  var_2 = (**(type_7 **)(var_15 + -0x7e94))(var_16,piVar12,var_6);
  if (((type_4)var_13 & 1) == 0) {
    var_17 = (**(type_7 **)(*(int *)(var_12 + -0x68) + -0x7ad4))(piVar12,piVar12);
    var_18 = (**(type_7 **)(*(int *)(var_12 + -0x68) + -0x7d0c))(piVar12,piVar12,var_16,var_2);
    var_6 = (type_4)(var_17 + var_18 != 0) + var_2;
    var_5 = *(type_7 **)(*(int *)(var_12 + -0x68) + -0x7d8c);
    piVar12[var_2] = var_17 + var_18;
    *(int *)(var_19 + 0x10) = var_2;
    var_2 = var_2 + var_6;
    piVar8 = piVar12;
    var_17 = (*var_5)(var_21,piVar12,var_6,var_16);
    var_18 = *(int *)(var_12 + -0x68);
  }
  else {
    uVar23 = (**(type_7 **)(*(int *)(var_12 + -0x68) + -0x7ad4))(var_21,var_16,var_2,1);
    *(type_5 *)(var_12 + -0x5c) = uVar23;
    var_17 = (**(type_7 **)(*(int *)(var_12 + -0x68) + -0x7d0c))(var_16,var_21,piVar12,var_2);
    var_18 = *(int *)(var_12 + -0x5c);
    var_5 = *(type_7 **)(*(int *)(var_12 + -0x68) + -0x7b2c);
    *(int *)(var_16 + var_2 * 4) = var_17 + var_18;
    *(type_4 *)(var_12 + -0x60) = (type_4)(var_17 + var_18 != 0) + var_2;
    var_17 = (*var_5)(piVar12,var_21,piVar12,var_2);
    var_18 = *(int *)(var_12 + -0x60);
    var_5 = *(type_7 **)(*(int *)(var_12 + -0x68) + -0x7d8c);
    var_20 = var_2 + (*(int *)(var_12 + -0x5c) - var_17);
    piVar12[var_2] = *(int *)(var_12 + -0x5c) - var_17;
    *(int *)(var_19 + 0x10) = var_20;
    var_2 = var_18 + var_20;
    var_17 = (*var_5)(var_21,var_16,var_18,piVar12);
    var_6 = 0xfffffffe;
    piVar8 = (int *)0x2;
    var_18 = *(int *)(var_12 + -0x68);
    if (((type_4)var_13 & 2) != 0) {
      piVar8 = (int *)&SUB_fffffffe;
    }
    *var_21 = (int)((int)piVar8 + *var_21);
  }
  var_22 = *(int **)(var_12 + -0x58);
  var_2 = var_2 - (type_4)(var_17 == 0);
  var_17 = var_2 - (type_4)((var_21 + var_2)[-1] == 0);
  piVar4[1] = var_17;
  if (var_22 != (int *)0x0) {
    (**(type_7 **)(var_18 + -0x7a2c))();
    var_4 = var_14();
    return var_4;
  }
  if (*(type_1 *)(var_12 + -0x54) == *puVar14) {
    return *puVar14;
  }
  var_5 = *(type_7 **)(var_18 + -0x7b70);
  uVar23 = 0x2825c;
  (*var_5)();
  var_15 = var_5 + 0x76de0;
  *(type_7 **)(var_19 + -0x28) = var_15;
  *(int *)(var_19 + -0xc) = var_17;
  *(type_5 *)(var_19 + -4) = uVar23;
  *(int **)(var_19 + -8) = var_21 + var_2;
  *(type_1 **)(var_19 + -0x10) = puVar14;
  *(int **)(var_19 + -0x14) = piVar12;
  if (0x2f < var_6) {
    var_2 = ((var_6 >> 5) * 0x17 >> 5) + 4;
    if (*var_22 < var_2) {
      var_5 = *(type_7 **)(var_5 + 0x6f35c);
      *(type_4 *)(var_19 + -0x1c) = var_6;
      var_17 = (*var_5)();
      var_15 = *(type_7 **)(var_19 + -0x28);
      var_6 = *(type_4 *)(var_19 + -0x1c);
    }
    else {
      var_17 = var_22[2];
    }
    var_5 = *(type_7 **)(var_15 + -0x7a84);
    if (*piVar8 < var_2) {
      *(type_4 *)(var_19 + -0x1c) = var_6;
      var_2 = (*var_5)(piVar8,var_2);
      var_15 = *(type_7 **)(var_19 + -0x28);
    }
    else {
      var_2 = piVar8[2];
    }
    var_17 = (**(type_7 **)(var_15 + -0x7e94))(var_17,var_2);
    var_22[1] = var_17;
    var_4 = var_17 - (type_4)(*(int *)(var_2 + var_17 * 4 + -4) == 0);
    piVar8[1] = var_4;
    return var_4;
  }
  puVar9 = (type_5 *)piVar8[2];
  uVar23 = *(type_5 *)(*(int *)(var_5 + 0x6f2ec) + var_6 * 4);
  var_4 = *(type_1 *)(*(int *)(var_5 + 0x6f2ec) + (var_6 + 1) * 4);
  *(type_1 *)var_22[2] = var_4;
  var_22[1] = (type_4)(var_6 != 0);
  *puVar9 = uVar23;
  piVar8[1] = (type_4)(var_6 != 1);
  return var_4;
}


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

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

{
  int iVar1;
  int iVar2;
  int *piVar3;
  int *piVar4;
  uint uVar5;
  uint *puVar6;
  int *piVar7;
  undefined4 *puVar8;
  int iVar9;
  uint uVar10;
  int *piVar11;
  uint uVar12;
  int *piVar13;
  int iVar14;
  int *piVar15;
  undefined1 *puVar16;
  undefined4 unaff_s5;
  undefined4 unaff_s6;
  undefined4 unaff_s7;
  undefined *puVar17;
  code *pcVar18;
  undefined1 *puVar19;
  undefined1 *puVar20;
  code *pcVar21;
  undefined4 uVar22;
  undefined1 auStack_80 [16];
  undefined *apuStack_70 [3];
  int iStack_64;
  int *piStack_5c;
  uint uStack_58;
  int iStack_54;
  int iStack_50;
  int iStack_4c;
  
  if (param_3 != 0) {
    iVar9 = *(int *)(param_2 + 4);
    if (iVar9 != 0) {
      if (iVar9 < 0) {
        iVar1 = (*(code *)PTR___gmpn_mod_1_000974c0)(*(undefined4 *)(param_2 + 8),-iVar9,param_3);
      }
      else {
        iVar1 = (*(code *)PTR___gmpn_mod_1_000974c0)(*(undefined4 *)(param_2 + 8),iVar9,param_3);
      }
      if (iVar1 != 0) {
        if (iVar9 < 0) {
          iVar1 = param_3 - iVar1;
          *(int *)param_1[2] = iVar1;
          param_1[1] = 1;
        }
        else {
          *(int *)param_1[2] = iVar1;
          param_1[1] = 1;
        }
        return iVar1;
      }
    }
    param_1[1] = 0;
    return 0;
  }
  puVar17 = PTR___gmp_divide_by_zero_000975dc;
  (*(code *)PTR___gmp_divide_by_zero_000975dc)();
  apuStack_70[0] = puVar17 + 0x77320;
  puVar19 = auStack_80;
  piVar15 = *(int **)(puVar17 + 0x6f820);
  uVar10 = *(uint *)(param_3 + 4);
  piStack_5c = (int *)0x0;
  iStack_4c = *piVar15;
  uVar12 = *(uint *)(param_2 + 4);
  if ((int)uVar10 < 0) {
    uStack_58 = -uVar10;
    uVar5 = uVar10 * -4;
    if (0x7f00 < uVar5) {
      pcVar18 = *(code **)(puVar17 + 0x6f5d0);
      goto LAB_00027e2c;
    }
LAB_00027d94:
    iStack_50 = -(uVar5 + 7 & 0xfffffff8);
    puVar19 = auStack_80 + iStack_50;
    iStack_50 = (int)apuStack_70 + iStack_50;
  }
  else {
    uVar5 = uVar10 * 4;
    pcVar18 = *(code **)(puVar17 + 0x6f5d0);
    uStack_58 = uVar10;
    if (uVar5 < 0x7f01) goto LAB_00027d94;
LAB_00027e2c:
    iStack_64 = param_3;
    iStack_50 = (*pcVar18)(&piStack_5c,uVar5);
    param_3 = iStack_64;
  }
  puVar6 = &uStack_58;
  piVar11 = (int *)(uVar12 ^ uVar10);
  uVar10 = param_2;
  (**(code **)(apuStack_70[0] + -0x7a6c))(param_1,puVar6,param_2,param_3);
  if (((int)piVar11 < 0) && (iStack_54 != 0)) {
    uVar10 = 1;
    puVar6 = param_1;
    (**(code **)(apuStack_70[0] + -0x7ac0))(param_1);
    piVar3 = piStack_5c;
    if (piStack_5c == (int *)0x0) goto LAB_00027dd8;
    pcVar18 = *(code **)(apuStack_70[0] + -0x7a2c);
  }
  else {
    pcVar18 = *(code **)(apuStack_70[0] + -0x7a2c);
    piVar3 = piStack_5c;
    if (piStack_5c == (int *)0x0) goto LAB_00027dd8;
  }
  piVar3 = piStack_5c;
  (*pcVar18)();
LAB_00027dd8:
  if (iStack_4c == *piVar15) {
    return *piVar15;
  }
  pcVar18 = *(code **)(apuStack_70[0] + -0x7b70);
  pcVar21 = __gmpz_fdiv_ui;
  (*pcVar18)();
  *(code **)(puVar19 + -0x18) = pcVar18 + 0x771b0;
  *(code **)(puVar19 + -4) = pcVar21;
  *(uint *)(puVar19 + -8) = uVar12;
  *(int **)(puVar19 + -0xc) = piVar11;
  if (puVar6 != (uint *)0x0) {
    iVar9 = piVar3[1];
    if (iVar9 == 0) {
      return 0;
    }
    if (iVar9 < 0) {
      iVar1 = (**(code **)(pcVar18 + 0x6f630))(piVar3[2],-iVar9,puVar6);
    }
    else {
      iVar1 = (**(code **)(pcVar18 + 0x6f630))(piVar3[2],iVar9,puVar6);
    }
    if (iVar1 != 0) {
      if (iVar9 < 0) {
        return (int)puVar6 - iVar1;
      }
    }
    return iVar1;
  }
  pcVar18 = *(code **)(pcVar18 + 0x6f74c);
  uVar22 = 0x27f54;
  (*pcVar18)();
  pcVar21 = pcVar18 + 0x770e0;
  puVar16 = puVar19 + -0x80;
  puVar20 = puVar19 + -0x80;
  *(uint *)(puVar19 + -0x4c) = uVar12;
  *(undefined4 *)(puVar19 + -0x38) = unaff_s6;
  piVar13 = *(int **)(pcVar18 + 0x6f5e0);
  *(undefined1 **)(puVar19 + -0x30) = auStack_80;
  *(undefined4 *)(puVar19 + -0x3c) = unaff_s5;
  *(undefined4 *)(puVar19 + -0x2c) = uVar22;
  *(undefined4 *)(puVar19 + -0x34) = unaff_s7;
  *(uint *)(puVar19 + -0x40) = param_2;
  *(int **)(puVar19 + -0x44) = piVar15;
  *(uint **)(puVar19 + -0x48) = param_1;
  *(int **)(puVar19 + -0x50) = piVar11;
  *(code **)(puVar19 + -0x68) = pcVar21;
  *(int *)(puVar19 + -0x54) = *piVar13;
  if (puVar6 < (uint *)0x30) {
    piVar7 = (int *)piVar3[2];
    piVar4 = (int *)(((int)puVar6 + 1U) * 4);
    *piVar7 = *(int *)(*(int *)(pcVar18 + 0x6f5ec) + (int)piVar4);
    piVar3[1] = (uint)(puVar6 != (uint *)0x0);
  }
  else {
    iVar9 = (((uint)puVar6 >> 6) * 0x17 >> 5) + 5;
    uVar10 = (uint)puVar6 >> 1;
    if (*piVar3 < iVar9 * 2) {
      pcVar18 = *(code **)(pcVar18 + 0x6f65c);
      *(uint *)(puVar19 + -0x5c) = uVar10;
      piVar15 = (int *)(*pcVar18)();
      pcVar21 = *(code **)(puVar19 + -0x68);
      uVar10 = *(uint *)(puVar19 + -0x5c);
    }
    else {
      piVar15 = (int *)piVar3[2];
    }
    *(undefined4 *)(puVar19 + -0x58) = 0;
    if ((uint)(iVar9 * 8) < 0x7f01) {
      puVar20 = puVar19 + iVar9 * -8 + -0x80;
      puVar16 = puVar19 + iVar9 * -8 + -0x68;
    }
    else {
      pcVar18 = *(code **)(pcVar21 + -0x7d50);
      *(uint *)(puVar19 + -0x5c) = uVar10;
      puVar16 = (undefined1 *)(*pcVar18)(puVar19 + -0x58);
      pcVar21 = *(code **)(puVar19 + -0x68);
      uVar10 = *(uint *)(puVar19 + -0x5c);
    }
    piVar11 = (int *)(puVar16 + iVar9 * 4);
    iVar9 = (**(code **)(pcVar21 + -0x7e94))(puVar16,piVar11,uVar10);
    if (((uint)puVar6 & 1) == 0) {
      iVar1 = (**(code **)(*(int *)(puVar19 + -0x68) + -0x7ad4))(piVar11,piVar11);
      iVar2 = (**(code **)(*(int *)(puVar19 + -0x68) + -0x7d0c))(piVar11,piVar11,puVar16,iVar9);
      uVar10 = (uint)(iVar1 + iVar2 != 0) + iVar9;
      pcVar18 = *(code **)(*(int *)(puVar19 + -0x68) + -0x7d8c);
      piVar11[iVar9] = iVar1 + iVar2;
      *(int *)(puVar20 + 0x10) = iVar9;
      iVar9 = iVar9 + uVar10;
      piVar7 = piVar11;
      iVar1 = (*pcVar18)(piVar15,piVar11,uVar10,puVar16);
      pcVar21 = *(code **)(puVar19 + -0x68);
    }
    else {
      uVar22 = (**(code **)(*(int *)(puVar19 + -0x68) + -0x7ad4))(piVar15,puVar16,iVar9,1);
      *(undefined4 *)(puVar19 + -0x5c) = uVar22;
      iVar1 = (**(code **)(*(int *)(puVar19 + -0x68) + -0x7d0c))(puVar16,piVar15,piVar11,iVar9);
      iVar2 = *(int *)(puVar19 + -0x5c);
      pcVar18 = *(code **)(*(int *)(puVar19 + -0x68) + -0x7b2c);
      *(int *)(puVar16 + iVar9 * 4) = iVar1 + iVar2;
      *(uint *)(puVar19 + -0x60) = (uint)(iVar1 + iVar2 != 0) + iVar9;
      iVar1 = (*pcVar18)(piVar11,piVar15,piVar11,iVar9);
      iVar2 = *(int *)(puVar19 + -0x60);
      pcVar18 = *(code **)(*(int *)(puVar19 + -0x68) + -0x7d8c);
      iVar14 = iVar9 + (*(int *)(puVar19 + -0x5c) - iVar1);
      piVar11[iVar9] = *(int *)(puVar19 + -0x5c) - iVar1;
      *(int *)(puVar20 + 0x10) = iVar14;
      iVar9 = iVar2 + iVar14;
      iVar1 = (*pcVar18)(piVar15,puVar16,iVar2,piVar11);
      uVar10 = 0xfffffffe;
      piVar7 = (int *)0x2;
      pcVar21 = *(code **)(puVar19 + -0x68);
      if (((uint)puVar6 & 2) != 0) {
        piVar7 = (int *)0xfffffffe;
      }
      *piVar15 = (int)piVar7 + *piVar15;
    }
    piVar4 = *(int **)(puVar19 + -0x58);
    iVar9 = iVar9 - (uint)(iVar1 == 0);
    piVar15 = piVar15 + iVar9;
    param_1 = (uint *)(iVar9 - (uint)(piVar15[-1] == 0));
    piVar3[1] = (int)param_1;
    puVar16 = puVar20;
    if (piVar4 != (int *)0x0) {
      (**(code **)(pcVar21 + -0x7a2c))();
      pcVar21 = *(code **)(puVar19 + -0x68);
    }
  }
  if (*(int *)(puVar19 + -0x54) == *piVar13) {
    return *piVar13;
  }
  pcVar18 = *(code **)(pcVar21 + -0x7b70);
  uVar22 = 0x2825c;
  (*pcVar18)();
  pcVar21 = pcVar18 + 0x76de0;
  *(code **)(puVar16 + -0x28) = pcVar21;
  *(uint **)(puVar16 + -0xc) = param_1;
  *(undefined4 *)(puVar16 + -4) = uVar22;
  *(int **)(puVar16 + -8) = piVar15;
  *(int **)(puVar16 + -0x10) = piVar13;
  *(int **)(puVar16 + -0x14) = piVar11;
  if (0x2f < uVar10) {
    iVar9 = ((uVar10 >> 5) * 0x17 >> 5) + 4;
    if (*piVar4 < iVar9) {
      pcVar18 = *(code **)(pcVar18 + 0x6f35c);
      *(uint *)(puVar16 + -0x1c) = uVar10;
      iVar1 = (*pcVar18)();
      pcVar21 = *(code **)(puVar16 + -0x28);
      uVar10 = *(uint *)(puVar16 + -0x1c);
    }
    else {
      iVar1 = piVar4[2];
    }
    pcVar18 = *(code **)(pcVar21 + -0x7a84);
    if (*piVar7 < iVar9) {
      *(uint *)(puVar16 + -0x1c) = uVar10;
      iVar9 = (*pcVar18)(piVar7,iVar9);
      pcVar21 = *(code **)(puVar16 + -0x28);
    }
    else {
      iVar9 = piVar7[2];
    }
    iVar1 = (**(code **)(pcVar21 + -0x7e94))(iVar1,iVar9);
    piVar4[1] = iVar1;
    iVar1 = iVar1 - (uint)(*(int *)(iVar9 + iVar1 * 4 + -4) == 0);
    piVar7[1] = iVar1;
    return iVar1;
  }
  puVar8 = (undefined4 *)piVar7[2];
  uVar22 = *(undefined4 *)(*(int *)(pcVar18 + 0x6f2ec) + uVar10 * 4);
  iVar9 = *(int *)(*(int *)(pcVar18 + 0x6f2ec) + (uVar10 + 1) * 4);
  *(int *)piVar4[2] = iVar9;
  piVar4[1] = (uint)(uVar10 != 0);
  *puVar8 = uVar22;
  piVar7[1] = (uint)(uVar10 != 1);
  return iVar9;
}

