
void mpz_goetgheluck_bin_uiui(mpz_ptr r,ulong n,ulong k)

{
  bool bVar1;
  bool bVar2;
  mpz_ptr p_Var3;
  undefined *puVar4;
  int iVar5;
  uint uVar6;
  uint *puVar7;
  uint *puVar8;
  undefined4 uVar9;
  uint uVar10;
  uint uVar11;
  uint *puVar12;
  undefined1 *puVar13;
  undefined *puVar14;
  ulong uVar15;
  mp_limb_t mVar16;
  tmp_reentrant_t *ptVar17;
  undefined4 *puVar18;
  mpz_ptr r_00;
  int *piVar19;
  uint uVar20;
  undefined4 *puVar21;
  mpz_ptr p_Var22;
  mpz_ptr p_Var23;
  uint uVar24;
  mpz_ptr p_Var25;
  mp_limb_t *pmVar26;
  uint uVar27;
  int iVar28;
  ulong uVar29;
  uint uVar30;
  uint uVar31;
  int iVar32;
  mpz_ptr k_00;
  mpz_ptr p_Var33;
  mpz_ptr p_Var34;
  int *piVar35;
  int iVar36;
  int *piVar37;
  uint uVar38;
  mpz_ptr p_Var39;
  uint uVar40;
  mpz_ptr p_Var41;
  int iVar42;
  mp_limb_t **ppmVar43;
  uint uVar44;
  int iVar45;
  uint uVar46;
  undefined *puVar47;
  code *pcVar48;
  undefined1 *puVar49;
  undefined1 *puVar50;
  undefined1 *puVar51;
  undefined1 *puVar52;
  undefined1 *puVar53;
  undefined1 *puVar54;
  code *pcVar55;
  code *pcVar56;
  uint uVar57;
  uint uVar58;
  undefined1 auStack_48 [16];
  tmp_reentrant_t *__tmp_marker;
  int local_2c;
  
  puVar4 = PTR___stack_chk_guard_0009d540;
  puVar49 = auStack_48;
  uVar40 = n - 5 | 1;
  __tmp_marker = (tmp_reentrant_t *)0x0;
  local_2c = *(int *)PTR___stack_chk_guard_0009d540;
  uVar20 = (uVar40 / 0x60 + 1) * 4;
  if (uVar20 < 0x7f01) {
    iVar5 = -(uVar20 + 7 & 0xfffffff8);
    puVar49 = auStack_48 + iVar5;
    puVar13 = &stack0xffffffc8 + iVar5;
  }
  else {
    puVar13 = (undefined1 *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&__tmp_marker);
  }
  iVar5 = (*(code *)PTR___gmp_primesieve_0009d144)(puVar13,n);
  uVar6 = iVar5 + 1;
  puVar7 = (uint *)(PTR___gmp_limbroots_table_0009d3d4 + 0x1c);
  uVar20 = 8;
  do {
    uVar27 = uVar20;
    uVar10 = *puVar7;
    puVar7 = puVar7 + -1;
    uVar20 = uVar27 - 1;
  } while (uVar10 < n);
  if (uVar27 == 0) {
    trap(7);
  }
  puVar7 = (uint *)(PTR___gmp_limbroots_table_0009d3d4 + 0x1c);
  uVar20 = 8;
  if ((uVar6 / uVar27 + 1) * 4 < 0x7f01) {
    do {
      uVar27 = uVar20;
      uVar10 = *puVar7;
      puVar7 = puVar7 + -1;
      uVar20 = uVar27 - 1;
    } while (uVar10 < n);
    if (uVar27 == 0) {
      trap(7);
    }
    iVar5 = -((uVar6 / uVar27) * 4 + 0xb & 0xfffffff8);
    puVar50 = puVar49 + iVar5;
    puVar7 = (uint *)(puVar49 + iVar5 + 0x10);
  }
  else {
    for (puVar14 = PTR___gmp_limbroots_table_0009d3d4 + 0x18; *(uint *)(puVar14 + 4) < n;
        puVar14 = puVar14 + -4) {
      uVar20 = uVar20 - 1;
    }
    if (uVar20 == 0) {
      trap(7);
    }
    puVar7 = (uint *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)
                               (&__tmp_marker,(uVar6 / uVar20 + 1) * 4);
    puVar50 = puVar49;
  }
  uVar20 = n - k;
  if (n == 0) {
    trap(7);
  }
  uVar57 = 0xffffffff / n;
  uVar44 = n >> 1;
  uVar10 = uVar20 - (uVar20 >> 1 & 0x55555555);
  uVar27 = n - (uVar44 & 0x55555555);
  uVar6 = k - (k >> 1 & 0x55555555);
  uVar30 = (uVar10 >> 2 & 0x33333333) + (uVar10 & 0x33333333);
  uVar27 = (uVar27 >> 2 & 0x33333333) + (uVar27 & 0x33333333);
  uVar10 = (uVar6 >> 2 & 0x33333333) + (uVar6 & 0x33333333);
  uVar6 = (uVar30 >> 4) + uVar30 & 0xf0f0f0f;
  uVar27 = (uVar27 >> 4) + uVar27 & 0xf0f0f0f;
  uVar6 = (uVar6 >> 8) + uVar6;
  uVar10 = (uVar10 >> 4) + uVar10 & 0xf0f0f0f;
  uVar27 = (uVar27 >> 8) + uVar27;
  uVar10 = (uVar10 >> 8) + uVar10;
  uVar6 = 1 << ((uVar10 >> 0x10) + uVar10 +
                (((uVar6 >> 0x10) + uVar6 & 0xff) - ((uVar27 >> 0x10) + uVar27 & 0xff)) & 0x1f);
  bVar1 = uVar57 < uVar6;
  if (bVar1) {
    *puVar7 = uVar6;
    uVar6 = 1;
  }
  uVar10 = 0;
  uVar15 = n;
  uVar29 = k;
  do {
    bVar2 = uVar15 % 3 < uVar29 % 3 + uVar10;
    if (bVar2) {
      uVar6 = uVar6 * 3;
    }
    uVar10 = (uint)bVar2;
    bVar2 = 8 < uVar15;
    uVar15 = uVar15 / 3;
    uVar29 = uVar29 / 3;
  } while (bVar2);
  uVar10 = n - 1;
  if (uVar10 < 0x10000) {
    iVar5 = 0x18;
    if (uVar10 < 0x100) {
      iVar5 = 0x20;
    }
    iVar28 = 9;
    if (uVar10 < 0x100) {
      iVar28 = 1;
    }
  }
  else {
    iVar5 = 8;
    if (uVar10 < 0x1000000) {
      iVar5 = 0x10;
    }
    iVar28 = 0x19;
    if (uVar10 < 0x1000000) {
      iVar28 = 0x11;
    }
  }
  iVar32 = 0;
  uVar31 = 1;
  uVar46 = (((1 << ((int)(0x1f - (iVar5 - (uint)(byte)PTR___gmpn_clz_tab_0009d18c[uVar10 >> iVar28])
                         ) >> 1 & 0x1fU)) +
            (1 << ((int)(0x1e - (iVar5 - (uint)(byte)PTR___gmpn_clz_tab_0009d18c[uVar10 >> iVar28]))
                   >> 1 & 0x1fU))) - 5U | 1) / 3;
  uVar30 = uVar46 + 1;
  uVar10 = (uint)bVar1;
  uVar27 = 0;
  do {
    uVar38 = uVar27 + 1;
    uVar24 = uVar10;
    if ((uVar31 & *(uint *)(puVar13 + iVar32 * 4)) == 0) {
      uVar11 = (uVar38 & 1) + 1 + uVar38 * 3;
      if (uVar57 < uVar6) {
        uVar24 = uVar10 + 1;
        puVar7[uVar10] = uVar6;
        uVar6 = 1;
      }
      uVar10 = 0;
      uVar15 = k;
      uVar29 = n;
      do {
        if (uVar11 == 0) {
          trap(7);
        }
        if (uVar11 == 0) {
          trap(7);
        }
        uVar58 = uVar29 / uVar11;
        bVar1 = uVar29 % uVar11 < uVar15 % uVar11 + uVar10;
        if (bVar1) {
          uVar6 = uVar6 * uVar11;
        }
        uVar10 = (uint)bVar1;
        uVar15 = uVar15 / uVar11;
        uVar29 = uVar58;
      } while (uVar11 <= uVar58);
    }
    uVar31 = uVar31 * 2 - ((int)uVar31 >> 0x1f);
    bVar1 = uVar27 != uVar46;
    iVar32 = iVar32 + (uVar31 & 1);
    uVar10 = uVar24;
    uVar27 = uVar38;
  } while (bVar1);
  uVar27 = uVar30 >> 5;
  uVar10 = 1 << (uVar30 & 0x1f);
  uVar31 = (uVar44 - 5 | 1) / 3;
  do {
    while( true ) {
      uVar30 = uVar30 + 1;
      uVar46 = uVar24;
      if ((uVar10 & *(uint *)(puVar13 + uVar27 * 4)) == 0) break;
LAB_00021e80:
      uVar10 = uVar10 * 2 - ((int)uVar10 >> 0x1f);
      uVar27 = uVar27 + (uVar10 & 1);
      uVar24 = uVar46;
      if (uVar31 < uVar30) goto LAB_00021f04;
    }
    uVar11 = (uVar30 & 1) + 1 + uVar30 * 3;
    if (uVar11 == 0) {
      trap(7);
    }
    if (uVar11 == 0) {
      trap(7);
    }
    if (k % uVar11 <= n % uVar11) goto LAB_00021e80;
    if (uVar57 << 1 < uVar6) {
      uVar46 = uVar24 + 1;
      puVar7[uVar24] = uVar6;
      uVar6 = uVar11;
      goto LAB_00021e80;
    }
    uVar10 = uVar10 * 2 - ((int)uVar10 >> 0x1f);
    uVar6 = uVar6 * uVar11;
    uVar27 = uVar27 + (uVar10 & 1);
  } while (uVar30 <= uVar31);
LAB_00021f04:
  uVar20 = (uVar20 - 5 | 1) / 3 + 1;
  uVar27 = uVar20 >> 5;
  uVar40 = uVar40 / 3;
  uVar10 = 1 << (uVar20 & 0x1f);
  do {
    while( true ) {
      uVar20 = uVar20 + 1;
      uVar30 = uVar46;
      if ((uVar10 & *(uint *)(puVar13 + uVar27 * 4)) == 0) break;
LAB_00021f58:
      uVar10 = uVar10 * 2 - ((int)uVar10 >> 0x1f);
      uVar27 = uVar27 + (uVar10 & 1);
      uVar46 = uVar30;
      if (uVar40 < uVar20) goto LAB_00021fb8;
    }
    mVar16 = (uVar20 & 1) + 1 + uVar20 * 3;
    if ((uVar57 & 0x7fffffff) < uVar6) {
      uVar30 = uVar46 + 1;
      puVar7[uVar46] = uVar6;
      uVar6 = mVar16;
      goto LAB_00021f58;
    }
    uVar10 = uVar10 * 2 - ((int)uVar10 >> 0x1f);
    uVar6 = uVar6 * mVar16;
    uVar27 = uVar27 + (uVar10 & 1);
  } while (uVar20 <= uVar40);
LAB_00021fb8:
  if (uVar30 == 0) {
    *r->_mp_d = uVar6;
    r->_mp_size = 1;
    uVar20 = 0;
    ptVar17 = __tmp_marker;
  }
  else {
    uVar20 = uVar30 + 1;
    puVar7[uVar30] = uVar6;
    (*(code *)PTR___gmpz_prodlimbs_0009d284)(r);
    ptVar17 = __tmp_marker;
  }
  __tmp_marker = ptVar17;
  if (ptVar17 != (tmp_reentrant_t *)0x0) {
    (*(code *)PTR___gmp_tmp_reentrant_free_0009d618)();
  }
  if (local_2c == *(int *)puVar4) {
    return;
  }
  pcVar55 = mpz_bdiv_bin_uiui;
  puVar14 = PTR___stack_chk_fail_0009d4d0;
  (*(code *)PTR___stack_chk_fail_0009d4d0)();
  puVar47 = puVar14 + 0x82fa4;
  puVar51 = puVar50 + -0x90;
  puVar54 = puVar50 + -0x90;
  puVar53 = puVar50 + -0x90;
  *(mpz_ptr *)(puVar50 + -0x24) = r;
  *(undefined1 **)(puVar50 + -8) = auStack_48;
  puVar21 = *(undefined4 **)(puVar14 + 0x7b4a4);
  *(code **)(puVar50 + -4) = pcVar55;
  *(tmp_reentrant_t **)(puVar50 + -0x6c) = ptVar17;
  *(uint *)(puVar50 + -0xc) = uVar44;
  *(ulong *)(puVar50 + -0x10) = k;
  *(uint *)(puVar50 + -0x14) = uVar40;
  uVar40 = (((uint)puVar7 >> 5) + 1) * 3;
  *(uint *)(puVar50 + -0x18) = uVar38;
  *(undefined1 **)(puVar50 + -0x1c) = puVar13;
  *(ulong *)(puVar50 + -0x20) = n;
  *(undefined **)(puVar50 + -0x28) = puVar4;
  *(undefined **)(puVar50 + -0x78) = puVar47;
  *(undefined4 **)(puVar50 + -0x70) = puVar21;
  *(undefined4 *)(puVar50 + -0x30) = 0;
  *(undefined4 *)(puVar50 + -0x2c) = *puVar21;
  if (uVar40 < 0x2a) {
    uVar40 = 0x27;
    if (uVar20 < 0x28) {
      uVar40 = uVar20;
    }
    uVar40 = (uVar40 + 1) * 4;
  }
  else {
    uVar40 = ((int)uVar40 >> 1) + 0x13;
    if (uVar20 < uVar40) {
      uVar40 = uVar20;
    }
    uVar40 = (uVar40 + 1) * 4;
    pcVar55 = *(code **)(puVar14 + 0x7b254);
    if (0x7f00 < uVar40) {
      *(uint *)(puVar50 + 8) = uVar20;
      p_Var41 = (mpz_ptr)(*pcVar55)(puVar50 + -0x30);
      puVar47 = *(undefined **)(puVar50 + -0x78);
      uVar20 = *(uint *)(puVar50 + 8);
      goto LAB_0002214c;
    }
  }
  iVar5 = -(uVar40 + 7 & 0xfffffff8);
  puVar51 = puVar50 + iVar5 + -0x90;
  p_Var41 = (mpz_ptr)(puVar50 + iVar5 + -0x78);
LAB_0002214c:
  iVar28 = *(int *)(puVar47 + -0x7c6c);
  p_Var39 = (mpz_ptr)(puVar51 + -0x40);
  puVar12 = (uint *)(iVar28 + 0x1c);
  iVar5 = 8;
  do {
    iVar32 = iVar5;
    puVar8 = (uint *)*puVar12;
    puVar12 = puVar12 + -1;
    iVar5 = iVar32 + -1;
  } while (puVar8 < puVar7);
  *(int *)(puVar50 + -0x68) = iVar32;
  puVar12 = (uint *)(iVar28 + 0x1c);
  uVar40 = 8;
  do {
    uVar6 = uVar40;
    uVar10 = *puVar12;
    puVar12 = puVar12 + -1;
    uVar40 = uVar6 - 1;
  } while (uVar10 < uVar20);
  uVar9 = *(undefined4 *)(puVar47 + -0x7d3c);
  iVar5 = 0x11;
  *(undefined4 *)(puVar50 + -0x48) = 0;
  *(undefined4 *)(puVar50 + -100) = uVar9;
  iVar28 = *(int *)(puVar47 + -0x7e20);
  *(undefined4 *)(puVar50 + -0x5c) = 0x3fffffff;
  iVar32 = (int)puVar7 + (1 - uVar20);
  *(uint *)(puVar50 + -0x40) = (uint)*(byte *)(iVar28 + 7);
  *(undefined4 *)(puVar50 + -0x3c) = *(undefined4 *)(puVar47 + -0x7eb4);
  *(uint *)(puVar50 + -0x60) = uVar20 + 1;
  iVar28 = *(int *)(puVar50 + -0x60);
  p_Var41->_mp_alloc = 1;
  *(undefined4 *)(puVar50 + -0x44) = 1;
  *(int *)(puVar50 + -0x34) = *(int *)(puVar47 + -0x7fe4) + -0x31a4;
  *(int *)(puVar50 + -0x38) = *(int *)(puVar47 + -0x7fd4) + 0x3630;
  p_Var39->_mp_alloc = 0x260eeeeb;
  if (iVar28 - 0x11U <= uVar6) {
    uVar6 = iVar28 - 0x11U;
  }
  p_Var33 = (mpz_ptr)&DAT_00000001;
  iVar42 = iVar5;
  if (uVar6 == 0) goto LAB_00022534;
LAB_00022234:
  p_Var34 = (mpz_ptr)&DAT_00000001;
  iVar45 = *(int *)(puVar50 + -0x40);
  *(mpz_ptr *)(puVar50 + -0x4c) = p_Var33;
  *(mpz_ptr *)(puVar50 + -0x50) = p_Var41;
  do {
    iVar42 = iVar5 + uVar6;
    uVar20 = (**(code **)(*(int *)(puVar50 + -0x34) + (uVar6 - 1) * 4))(iVar5);
    if ((uVar20 & 0xff) == 0) {
      uVar40 = uVar20 >> 8;
      iVar5 = 6;
      if ((uVar40 & 0xff) == 0) {
        uVar40 = uVar20 >> 0x10;
        iVar5 = 0xe;
        if ((uVar40 & 0xff) == 0) {
          uVar40 = uVar20 >> 0x18;
          iVar5 = 0x1e;
          if (uVar40 != 0) {
            iVar5 = 0x16;
          }
        }
      }
      uVar40 = (uint)*(byte *)(*(int *)(puVar50 + -0x3c) + (-uVar40 & uVar40)) + iVar5;
    }
    else {
      uVar40 = *(byte *)(*(int *)(puVar50 + -0x3c) + (-uVar20 & uVar20)) - 2;
    }
    iVar45 = iVar45 + *(byte *)(*(int *)(puVar50 + -0x38) + (uVar6 - 1)) + uVar40;
    iVar5 = (**(code **)(*(int *)(puVar50 + -0x78) + -0x7f9c))
                      (p_Var39,p_Var39,p_Var34,uVar20 >> (uVar40 & 0x1f));
    puVar47 = *(undefined **)(puVar50 + -0x78);
    if ((uint)(iVar28 - iVar42) <= uVar6) {
      uVar6 = iVar28 - iVar42;
    }
    piVar35 = &p_Var39->_mp_alloc + (int)p_Var34;
    p_Var34 = (mpz_ptr)((int)&p_Var34->_mp_alloc + (uint)(iVar5 != 0));
    *piVar35 = iVar5;
    if (uVar6 == 0) {
      p_Var41 = *(mpz_ptr *)(puVar50 + -0x50);
      p_Var33 = *(mpz_ptr *)(puVar50 + -0x4c);
      *(int *)(puVar50 + -0x40) = iVar45;
      *(int **)(puVar50 + -0x4c) =
           &p_Var39->_mp_alloc + (int)((int)&p_Var34->_mp_alloc + *(int *)(puVar50 + -0x5c));
      goto LAB_00022340;
    }
    iVar5 = iVar42;
  } while (p_Var34 != (mpz_ptr)0x14);
  p_Var33 = *(mpz_ptr *)(puVar50 + -0x4c);
  p_Var41 = *(mpz_ptr *)(puVar50 + -0x50);
  *(int *)(puVar50 + -0x40) = iVar45;
  *(int **)(puVar50 + -0x4c) = &p_Var39[6]._mp_size;
LAB_00022340:
  do {
    iVar45 = iVar42 - *(int *)(puVar50 + -0x44);
    iVar28 = *(int *)(puVar50 + -0x5c);
    iVar5 = iVar45;
    if (iVar45 != 0) {
      *(uint *)(puVar50 + -0x44) = uVar6;
      *(mpz_ptr *)(puVar50 + -0x50) = p_Var34;
      *(mpz_ptr *)(puVar50 + -0x54) = p_Var39;
      *(int *)(puVar50 + -0x58) = iVar42;
      iVar5 = *(int *)(puVar50 + -0x48);
      iVar42 = *(int *)(puVar50 + -0x68);
      iVar28 = iVar32;
      do {
        iVar36 = iVar45;
        if (iVar42 <= iVar45) {
          iVar36 = iVar42;
        }
        iVar32 = iVar28 + iVar36;
        uVar20 = (**(code **)(*(int *)(puVar50 + -0x34) + (iVar36 + -1) * 4))(iVar28);
        if ((uVar20 & 0xff) == 0) {
          uVar40 = uVar20 >> 8;
          iVar28 = 6;
          if ((uVar40 & 0xff) == 0) {
            uVar40 = uVar20 >> 0x10;
            iVar28 = 0xe;
            if ((uVar40 & 0xff) == 0) {
              uVar40 = uVar20 >> 0x18;
              iVar28 = 0x16;
              if (uVar40 == 0) {
                iVar28 = 0x1e;
              }
            }
          }
          uVar40 = (uint)*(byte *)(*(int *)(puVar50 + -0x3c) + (-uVar40 & uVar40)) + iVar28;
        }
        else {
          uVar40 = *(byte *)(*(int *)(puVar50 + -0x3c) + (-uVar20 & uVar20)) - 2;
        }
        iVar45 = iVar45 - iVar36;
        iVar5 = iVar5 + *(byte *)(*(int *)(puVar50 + -0x38) + iVar36 + -1) + uVar40;
        iVar28 = (**(code **)(*(int *)(puVar50 + -0x78) + -0x7f9c))
                           (p_Var41,p_Var41,p_Var33,uVar20 >> (uVar40 & 0x1f));
        puVar47 = *(undefined **)(puVar50 + -0x78);
        piVar35 = &p_Var41->_mp_alloc + (int)p_Var33;
        p_Var33 = (mpz_ptr)((int)&p_Var33->_mp_alloc + (uint)(iVar28 != 0));
        *piVar35 = iVar28;
        iVar28 = iVar32;
      } while (iVar45 != 0);
      uVar6 = *(uint *)(puVar50 + -0x44);
      p_Var34 = *(mpz_ptr *)(puVar50 + -0x50);
      p_Var39 = *(mpz_ptr *)(puVar50 + -0x54);
      iVar42 = *(int *)(puVar50 + -0x58);
      *(int *)(puVar50 + -0x48) = iVar5;
      iVar28 = *(int *)(puVar50 + -0x5c);
    }
    iVar45 = p_Var39->_mp_alloc;
    pcVar55 = *(code **)(puVar47 + -0x7bc0);
    uVar20 = (uint)*(byte *)(*(int *)(puVar50 + -100) + ((uint)(iVar45 << 0x18) >> 0x19));
    p_Var33 = (mpz_ptr)((int)p_Var33 +
                       (((uint)(&p_Var41->_mp_alloc)[(int)((int)&p_Var33->_mp_alloc + iVar28)] <
                         **(uint **)(puVar50 + -0x4c) ^ 1) - (int)p_Var34));
    iVar28 = uVar20 * 2 - uVar20 * uVar20 * iVar45;
    if ((int)p_Var33 < (int)p_Var34) {
      p_Var34 = p_Var33;
    }
    *(mpz_ptr *)(puVar51 + -0x48) = p_Var34;
    *(int *)(puVar51 + -0x44) = iVar28 * iVar28 * iVar45 + iVar28 * -2;
    p_Var22 = p_Var41;
    p_Var25 = p_Var33;
    (*pcVar55)(p_Var41,p_Var41,p_Var33,p_Var39);
    iVar28 = *(int *)(puVar50 + -0x78);
    if (uVar6 == 0) {
      if (*(int *)(puVar50 + -0x48) == *(int *)(puVar50 + -0x40)) {
        p_Var33 = (mpz_ptr)((int)p_Var33 -
                           (uint)(*(int *)((int)p_Var41 + (int)p_Var33 * 4 + -4) == 0));
        pcVar55 = *(code **)(iVar28 + -0x7a80);
        if ((int)p_Var33 <= **(int **)(puVar50 + -0x6c)) goto LAB_00022600;
LAB_00022734:
        p_Var22 = p_Var33;
        puVar21 = (undefined4 *)(*pcVar55)(*(undefined4 *)(puVar50 + -0x6c));
        iVar28 = *(int *)(puVar50 + -0x78);
      }
      else {
        p_Var22 = p_Var41;
        p_Var25 = p_Var33;
        iVar45 = (**(code **)(iVar28 + -0x7ad4))(p_Var41);
        iVar28 = *(int *)(puVar50 + -0x78);
        puVar13 = (undefined1 *)((int)&p_Var33->_mp_alloc + (uint)(iVar45 != 0));
        *(int *)((int)p_Var41 + (int)p_Var33 * 4) = iVar45;
        p_Var33 = (mpz_ptr)(puVar13 + -(uint)(*(int *)((int)p_Var41 + (int)puVar13 * 4 + -4) == 0));
        pcVar55 = *(code **)(iVar28 + -0x7a80);
        if (**(int **)(puVar50 + -0x6c) < (int)p_Var33) goto LAB_00022734;
LAB_00022600:
        puVar21 = *(undefined4 **)(*(int *)(puVar50 + -0x6c) + 8);
      }
      *(mpz_ptr *)(*(int *)(puVar50 + -0x6c) + 4) = p_Var33;
      if (p_Var33 != (mpz_ptr)0x0) {
        puVar13 = (undefined1 *)((int)&p_Var33[-1]._mp_d + 3);
        p_Var22 = (mpz_ptr)p_Var41->_mp_alloc;
        if (puVar13 != (undefined1 *)0x0) {
          puVar18 = puVar21;
          ppmVar43 = (mp_limb_t **)&p_Var41->_mp_size;
          do {
            *puVar18 = p_Var22;
            p_Var41 = (mpz_ptr)(ppmVar43 + 1);
            puVar13 = puVar13 + -1;
            p_Var22 = (mpz_ptr)*ppmVar43;
            puVar18 = puVar18 + 1;
            ppmVar43 = (mp_limb_t **)p_Var41;
          } while (puVar13 != (undefined1 *)0x0);
          p_Var33 = (mpz_ptr)((int)p_Var33 * 4);
          puVar21 = (undefined4 *)((int)puVar21 + (int)&p_Var33[-1]._mp_d);
        }
        *puVar21 = p_Var22;
      }
      r_00 = *(mpz_ptr *)(puVar50 + -0x30);
      if (r_00 != (mpz_ptr)0x0) {
        (**(code **)(iVar28 + -0x7a28))();
        iVar28 = *(int *)(puVar50 + -0x78);
      }
      if (*(int *)(puVar50 + -0x2c) == **(int **)(puVar50 + -0x70)) {
        return;
      }
      pcVar55 = *(code **)(iVar28 + -0x7b70);
      pcVar56 = __gmpz_bin_uiui;
      (*pcVar55)();
      pcVar48 = pcVar55 + 0x8289c;
      *(mpz_ptr *)(puVar51 + -0x78) = p_Var34;
      piVar35 = *(int **)(pcVar55 + 0x7ad9c);
      *(code **)(puVar51 + -0xf0) = pcVar48;
      *(int *)(puVar51 + -0x74) = iVar42;
      *(code **)(puVar51 + -0x5c) = pcVar56;
      *(undefined1 **)(puVar51 + -0x60) = puVar50 + -0x90;
      *(int *)(puVar51 + -100) = iVar5;
      *(int *)(puVar51 + -0x68) = iVar32;
      *(mpz_ptr *)(puVar51 + -0x6c) = p_Var41;
      *(mpz_ptr *)(puVar51 + -0x70) = p_Var39;
      *(mpz_ptr *)(puVar51 + -0x7c) = p_Var33;
      *(undefined4 *)(puVar51 + -0x80) = 0;
      *(int *)(puVar51 + -0x84) = *piVar35;
      p_Var34 = r_00;
      p_Var23 = p_Var22;
      if (p_Var22 < p_Var25) {
        r_00->_mp_size = 0;
        k_00 = (mpz_ptr)0x0;
      }
      else {
        k_00 = p_Var25;
        if ((mpz_ptr)((int)p_Var22 - (int)p_Var25) <= p_Var25) {
          k_00 = (mpz_ptr)((int)p_Var22 - (int)p_Var25);
        }
        p_Var25 = k_00;
        p_Var39 = p_Var22;
        if (k_00 < (mpz_ptr)0x2) {
          if (k_00 == (mpz_ptr)0x0) {
            p_Var39 = (mpz_ptr)&DAT_00000001;
          }
          *r_00->_mp_d = (mp_limb_t)p_Var39;
          r_00->_mp_size = 1;
          puVar53 = puVar50 + -0x90;
        }
        else if (p_Var22 < (mpz_ptr)0x23) {
          p_Var3 = k_00 + -1;
          iVar5 = *(int *)(pcVar55 + 0x7aa7c);
          p_Var23 = (mpz_ptr)r_00->_mp_d;
          uVar20 = (int)p_Var22 - (int)k_00;
          p_Var39 = (mpz_ptr)(iVar5 + ((uint)p_Var22 >> 1));
          k_00 = (mpz_ptr)(iVar5 + ((uint)k_00 >> 1));
          p_Var25 = (mpz_ptr)(uint)*(byte *)((int)&k_00[-1]._mp_d + 3);
          p_Var34 = (mpz_ptr)(uint)*(byte *)(iVar5 + (uVar20 >> 1) + -1);
          p_Var23->_mp_alloc =
               *(int *)((int)((int)&p_Var3->_mp_d + 2) * 4 + *(int *)(pcVar55 + 0x7a8c8) + 0x35b4) *
               *(int *)(*(int *)(pcVar55 + 0x7ad64) + (int)p_Var22 * 4) *
               *(int *)((uVar20 - 2) * 4 + *(int *)(pcVar55 + 0x7a8c8) + 0x35b4) <<
               (((uint)*(byte *)((int)&p_Var39[-1]._mp_d + 3) - (int)p_Var25) - (int)p_Var34 & 0x1f)
          ;
          r_00->_mp_size = 1;
          puVar53 = puVar50 + -0x90;
        }
        else if (k_00 < (mpz_ptr)&DAT_00000011) {
          mpz_smallk_bin_uiui(r_00,(ulong)p_Var22,(ulong)k_00);
          pcVar48 = *(code **)(puVar51 + -0xf0);
          puVar53 = puVar50 + -0x90;
        }
        else if (k_00 < (mpz_ptr)&DAT_00000021) {
          uVar20 = (uint)k_00 >> 1;
          uVar40 = (int)p_Var22 - uVar20;
          mpz_smallk_bin_uiui(r_00,(ulong)p_Var22,uVar20);
          iVar5 = *(int *)(puVar51 + -0xf0);
          uVar6 = (int)k_00 - uVar20;
          if (uVar40 < 0x23) {
            puVar54 = (undefined1 *)r_00->_mp_size;
            if ((int)puVar54 < r_00->_mp_alloc) {
              p_Var33 = (mpz_ptr)r_00->_mp_d;
            }
            else {
              p_Var33 = (mpz_ptr)(**(code **)(iVar5 + -0x7a80))(r_00,puVar54 + 1);
              iVar5 = *(int *)(puVar51 + -0xf0);
            }
            iVar32 = *(int *)(iVar5 + -0x7e20);
            iVar28 = *(int *)(iVar5 + -0x7fd4) + 0x35b4;
            iVar28 = (**(code **)(iVar5 + -0x7f9c))
                               (p_Var33,p_Var33,puVar54,
                                *(int *)((((int)p_Var22 - (int)k_00) - 2U) * 4 + iVar28) *
                                *(int *)(*(int *)(iVar5 + -0x7b38) + uVar40 * 4) *
                                *(int *)((uVar6 - 2) * 4 + iVar28) <<
                                (((uint)*(byte *)(iVar32 + (uVar40 >> 1) + -1) -
                                 (uint)*(byte *)(iVar32 + (uVar6 >> 1) + -1)) -
                                 (uint)*(byte *)(iVar32 + ((uint)((int)p_Var22 - (int)k_00) >> 1) +
                                                -1) & 0x1f));
            iVar5 = *(int *)(puVar51 + -0xf0);
            k_00 = (mpz_ptr)(puVar54 + (iVar28 != 0));
            (&p_Var33->_mp_alloc)[(int)puVar54] = iVar28;
          }
          else {
            *(undefined4 *)(puVar51 + -0xe4) = 0x15;
            *(undefined1 **)(puVar51 + -0xdc) = puVar51 + -0xd8;
            mpz_smallk_bin_uiui((mpz_ptr)(puVar51 + -0xe4),uVar40,uVar6);
            (**(code **)(*(int *)(puVar51 + -0xf0) + -0x7ba8))(r_00,r_00,(mpz_ptr)(puVar51 + -0xe4))
            ;
            iVar5 = *(int *)(puVar51 + -0xf0);
            p_Var33 = (mpz_ptr)r_00->_mp_d;
            k_00 = (mpz_ptr)r_00->_mp_size;
          }
          pcVar55 = *(code **)(iVar5 + -0x7bb4);
          p_Var41 = (mpz_ptr)((uint)*(byte *)((uVar6 - 8) + *(int *)(iVar5 + -0x7fd4) + 0x3550) -
                             (uint)(uVar20 != uVar6));
          *(undefined4 *)(puVar51 + -0xf8) =
               *(undefined4 *)((uVar6 - 8) * 4 + *(int *)(iVar5 + -0x7fd4) + 0x355c);
          *(mpz_ptr *)(puVar51 + -0xf4) = p_Var41;
          p_Var34 = p_Var33;
          p_Var23 = p_Var33;
          p_Var25 = k_00;
          (*pcVar55)();
          pcVar48 = *(code **)(puVar51 + -0xf0);
          if (*(int *)((int)p_Var33 + (int)k_00 * 4 + -4) == 0) {
            piVar37 = &p_Var33->_mp_alloc + (int)k_00;
            do {
              piVar19 = piVar37 + -2;
              k_00 = (mpz_ptr)((int)&k_00[-1]._mp_d + 3);
              piVar37 = piVar37 + -1;
            } while (*piVar19 == 0);
          }
          r_00->_mp_size = (int)k_00;
          puVar53 = puVar54;
        }
        else if ((k_00 < (mpz_ptr)0x3e8) || (k_00 <= (mpz_ptr)((uint)p_Var22 >> 4))) {
          mpz_bdiv_bin_uiui(r_00,(ulong)p_Var22,(ulong)k_00);
          pcVar48 = *(code **)(puVar51 + -0xf0);
          puVar53 = puVar50 + -0x90;
        }
        else {
          mpz_goetgheluck_bin_uiui(r_00,(ulong)p_Var22,(ulong)k_00);
          pcVar48 = *(code **)(puVar51 + -0xf0);
          puVar53 = puVar50 + -0x90;
        }
      }
      if (*(int *)(puVar51 + -0x84) == *piVar35) {
        return;
      }
      pcVar55 = *(code **)(pcVar48 + -0x7b70);
      uVar9 = 0x22b64;
      (*pcVar55)();
      pcVar48 = pcVar55 + 0x824d0;
      puVar52 = puVar51 + -0x160;
      *(mpz_ptr *)(puVar51 + -0x118) = r_00;
      *(mpz_ptr *)(puVar51 + -0x124) = k_00;
      piVar37 = *(int **)(pcVar55 + 0x7a9d0);
      uVar20 = p_Var25->_mp_size;
      *(undefined1 **)(puVar51 + -0x110) = puVar53;
      *(mpz_ptr *)(puVar51 + -0x114) = p_Var39;
      *(int **)(puVar51 + -0x11c) = piVar35;
      *(mpz_ptr *)(puVar51 + -0x120) = p_Var33;
      *(undefined4 *)(puVar51 + -0x10c) = uVar9;
      *(code **)(puVar51 + -0x150) = pcVar48;
      *(undefined4 *)(puVar51 + -0x13c) = 0;
      p_Var39 = (mpz_ptr)p_Var23->_mp_size;
      *(int *)(puVar51 + -300) = *piVar37;
      if ((int)uVar20 < 0) {
        uVar40 = uVar20 * -4;
        *(uint *)(puVar51 + -0x138) = -uVar20;
        if (0x7f00 < uVar40) {
          pcVar55 = *(code **)(pcVar55 + 0x7a780);
          goto LAB_00022c88;
        }
LAB_00022be4:
        iVar5 = -(uVar40 + 7 & 0xfffffff8);
        puVar52 = puVar51 + iVar5 + -0x160;
        puVar13 = puVar51 + iVar5 + -0x150;
      }
      else {
        uVar40 = uVar20 * 4;
        *(uint *)(puVar51 + -0x138) = uVar20;
        pcVar55 = *(code **)(pcVar55 + 0x7a780);
        if (uVar40 < 0x7f01) goto LAB_00022be4;
LAB_00022c88:
        *(mpz_ptr *)(puVar51 + -0x144) = p_Var25;
        puVar13 = (undefined1 *)(*pcVar55)(puVar51 + -0x13c,uVar40);
        pcVar48 = *(code **)(puVar51 + -0x150);
        p_Var25 = *(mpz_ptr *)(puVar51 + -0x144);
      }
      pcVar55 = *(code **)(pcVar48 + -0x7a68);
      p_Var33 = (mpz_ptr)(puVar51 + -0x138);
      *(undefined1 **)(puVar51 + -0x130) = puVar13;
      p_Var22 = p_Var23;
      (*pcVar55)(p_Var34,p_Var33,p_Var23,p_Var25);
      iVar5 = *(int *)(puVar51 + -0x150);
      if (((int)((uint)p_Var39 ^ uVar20) < 0) || (*(int *)(puVar51 + -0x134) == 0)) {
        piVar35 = *(int **)(puVar51 + -0x13c);
        pcVar55 = *(code **)(iVar5 + -0x7a28);
        if (piVar35 != (int *)0x0) goto LAB_00022cc0;
      }
      else {
        p_Var22 = (mpz_ptr)&DAT_00000001;
        p_Var33 = p_Var34;
        (**(code **)(iVar5 + -0x7c9c))(p_Var34);
        piVar35 = *(int **)(puVar51 + -0x13c);
        iVar5 = *(int *)(puVar51 + -0x150);
        if (piVar35 != (int *)0x0) {
          pcVar55 = *(code **)(iVar5 + -0x7a28);
LAB_00022cc0:
          (*pcVar55)();
          iVar5 = *(int *)(puVar51 + -0x150);
        }
      }
      if (*(int *)(puVar51 + -300) == *piVar37) {
        return;
      }
      pcVar55 = *(code **)(iVar5 + -0x7b70);
      uVar9 = 0x22cdc;
      (*pcVar55)();
      pcVar48 = pcVar55 + 0x82360;
      *(code **)(puVar52 + -0x28) = pcVar48;
      *(undefined4 *)(puVar52 + -4) = uVar9;
      *(mpz_ptr *)(puVar52 + -8) = p_Var41;
      *(mpz_ptr *)(puVar52 + -0xc) = p_Var23;
      *(int **)(puVar52 + -0x10) = piVar37;
      *(mpz_ptr *)(puVar52 + -0x14) = p_Var34;
      *(mpz_ptr *)(puVar52 + -0x18) = p_Var39;
      *(uint *)(puVar52 + -0x1c) = (uint)p_Var39 ^ uVar20;
      if (p_Var22 == (mpz_ptr)0x0) {
        pcVar55 = *(code **)(pcVar55 + 0x7a900);
        (*pcVar55)();
LAB_00022e2c:
        piVar35 = (int *)(*pcVar55)(piVar37,p_Var34);
        pcVar48 = *(code **)(puVar52 + -0x28);
      }
      else {
        p_Var39 = (mpz_ptr)p_Var33->_mp_size;
        if (p_Var39 == (mpz_ptr)0x0) {
          piVar35[1] = 0;
          return;
        }
        p_Var34 = p_Var39;
        if ((int)p_Var39 < 0) {
          p_Var34 = (mpz_ptr)-(int)p_Var39;
        }
        pcVar55 = *(code **)(pcVar55 + 0x7a8e0);
        piVar37 = piVar35;
        p_Var23 = p_Var22;
        p_Var41 = p_Var33;
        if (*piVar35 < (int)p_Var34) goto LAB_00022e2c;
        piVar35 = (int *)piVar35[2];
      }
      pcVar55 = *(code **)(pcVar48 + -0x7d98);
      pmVar26 = p_Var41->_mp_d;
      *(mpz_ptr *)(puVar52 + -0x30) = p_Var23;
      iVar5 = (*pcVar55)(piVar35,0,pmVar26,p_Var34);
      piVar19 = piVar35 + (int)((int)&p_Var34[-1]._mp_d + 3);
      if (iVar5 == 0) {
        uVar20 = (uint)(*piVar19 == 0);
        if (-1 < (int)p_Var39) {
          iVar5 = (int)p_Var34 - uVar20;
          goto LAB_00022d9c;
        }
      }
      else {
        if (-1 < (int)p_Var39) {
          do {
            iVar5 = *piVar35;
            *piVar35 = iVar5 + 1;
            piVar35 = piVar35 + 1;
          } while (iVar5 + 1 == 0);
          iVar5 = (int)p_Var34 - (uint)(*piVar19 == 0);
          goto LAB_00022d9c;
        }
        uVar20 = (uint)(*piVar19 == 0);
      }
      iVar5 = uVar20 - (int)p_Var34;
LAB_00022d9c:
      piVar37[1] = iVar5;
      return;
    }
    *(int *)(puVar50 + -0x44) = iVar42;
    iVar5 = iVar42 + uVar6;
    uVar20 = (**(code **)(*(int *)(puVar50 + -0x34) + (uVar6 - 1) * 4))(iVar42);
    puVar47 = *(undefined **)(puVar50 + -0x78);
    if ((uVar20 & 0xff) == 0) {
      uVar40 = uVar20 >> 8;
      iVar28 = 6;
      if ((uVar40 & 0xff) == 0) {
        uVar40 = uVar20 >> 0x10;
        iVar28 = 0xe;
        if ((uVar40 & 0xff) == 0) {
          uVar40 = uVar20 >> 0x18;
          iVar28 = 0x1e;
          if (uVar40 != 0) {
            iVar28 = 0x16;
          }
        }
      }
      uVar40 = (uint)*(byte *)(*(int *)(puVar50 + -0x3c) + (-uVar40 & uVar40)) + iVar28;
    }
    else {
      uVar40 = *(byte *)(*(int *)(puVar50 + -0x3c) + (-uVar20 & uVar20)) - 2;
    }
    iVar42 = *(int *)(puVar50 + -0x38);
    p_Var39->_mp_alloc = uVar20 >> (uVar40 & 0x1f);
    iVar28 = *(int *)(puVar50 + -0x60);
    *(uint *)(puVar50 + -0x40) =
         *(int *)(puVar50 + -0x40) + *(byte *)(iVar42 + (uVar6 - 1)) + uVar40;
    if ((uint)(iVar28 - iVar5) <= uVar6) {
      uVar6 = iVar28 - iVar5;
    }
    iVar42 = iVar5;
    if (uVar6 != 0) goto LAB_00022234;
LAB_00022534:
    p_Var34 = (mpz_ptr)&DAT_00000001;
    *(mpz_ptr *)(puVar50 + -0x4c) = p_Var39;
  } while( true );
}



int FUN_000219dc(int param_1,uint param_2,uint param_3)

{
  uint *puVar1;
  byte bVar2;
  bool bVar3;
  bool bVar4;
  undefined *puVar5;
  int iVar6;
  uint uVar7;
  uint *puVar8;
  uint *puVar9;
  undefined4 uVar10;
  uint uVar11;
  uint uVar12;
  undefined1 *puVar13;
  undefined *puVar14;
  undefined4 *puVar15;
  uint *puVar16;
  int *piVar17;
  uint uVar18;
  undefined4 *puVar19;
  uint *puVar20;
  uint uVar21;
  uint *puVar22;
  uint uVar23;
  int iVar24;
  uint uVar25;
  uint uVar26;
  uint uVar27;
  uint uVar28;
  int iVar29;
  uint *puVar30;
  uint *puVar31;
  int *piVar32;
  int iVar33;
  int *piVar34;
  uint uVar35;
  uint *puVar36;
  uint uVar37;
  uint *puVar38;
  int iVar39;
  uint uVar40;
  int iVar41;
  uint uVar42;
  undefined *puVar43;
  code *pcVar44;
  undefined1 *puVar45;
  undefined1 *puVar46;
  undefined1 *puVar47;
  undefined1 *puVar48;
  undefined1 *puVar49;
  undefined1 *puVar50;
  code *pcVar51;
  code *pcVar52;
  uint uVar53;
  uint uVar54;
  undefined1 auStack_48 [16];
  int local_30;
  int local_2c;
  
  puVar5 = PTR___stack_chk_guard_0009d540;
  puVar45 = auStack_48;
  uVar37 = param_2 - 5 | 1;
  local_30 = 0;
  local_2c = *(int *)PTR___stack_chk_guard_0009d540;
  uVar18 = (uVar37 / 0x60 + 1) * 4;
  if (uVar18 < 0x7f01) {
    iVar6 = -(uVar18 + 7 & 0xfffffff8);
    puVar45 = auStack_48 + iVar6;
    puVar13 = &stack0xffffffc8 + iVar6;
  }
  else {
    puVar13 = (undefined1 *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&local_30);
  }
  iVar6 = (*(code *)PTR___gmp_primesieve_0009d144)(puVar13,param_2);
  uVar7 = iVar6 + 1;
  puVar8 = (uint *)(PTR___gmp_limbroots_table_0009d3d4 + 0x1c);
  uVar18 = 8;
  do {
    uVar23 = uVar18;
    uVar11 = *puVar8;
    puVar8 = puVar8 + -1;
    uVar18 = uVar23 - 1;
  } while (uVar11 < param_2);
  if (uVar23 == 0) {
    trap(7);
  }
  puVar8 = (uint *)(PTR___gmp_limbroots_table_0009d3d4 + 0x1c);
  uVar18 = 8;
  if ((uVar7 / uVar23 + 1) * 4 < 0x7f01) {
    do {
      uVar23 = uVar18;
      uVar11 = *puVar8;
      puVar8 = puVar8 + -1;
      uVar18 = uVar23 - 1;
    } while (uVar11 < param_2);
    if (uVar23 == 0) {
      trap(7);
    }
    iVar6 = -((uVar7 / uVar23) * 4 + 0xb & 0xfffffff8);
    puVar46 = puVar45 + iVar6;
    puVar8 = (uint *)(puVar45 + iVar6 + 0x10);
  }
  else {
    for (puVar14 = PTR___gmp_limbroots_table_0009d3d4 + 0x18; *(uint *)(puVar14 + 4) < param_2;
        puVar14 = puVar14 + -4) {
      uVar18 = uVar18 - 1;
    }
    if (uVar18 == 0) {
      trap(7);
    }
    puVar8 = (uint *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)
                               (&local_30,(uVar7 / uVar18 + 1) * 4);
    puVar46 = puVar45;
  }
  uVar18 = param_2 - param_3;
  if (param_2 == 0) {
    trap(7);
  }
  uVar53 = 0xffffffff / param_2;
  uVar40 = param_2 >> 1;
  uVar11 = uVar18 - (uVar18 >> 1 & 0x55555555);
  uVar23 = param_2 - (uVar40 & 0x55555555);
  uVar7 = param_3 - (param_3 >> 1 & 0x55555555);
  uVar26 = (uVar11 >> 2 & 0x33333333) + (uVar11 & 0x33333333);
  uVar23 = (uVar23 >> 2 & 0x33333333) + (uVar23 & 0x33333333);
  uVar11 = (uVar7 >> 2 & 0x33333333) + (uVar7 & 0x33333333);
  uVar7 = (uVar26 >> 4) + uVar26 & 0xf0f0f0f;
  uVar23 = (uVar23 >> 4) + uVar23 & 0xf0f0f0f;
  uVar7 = (uVar7 >> 8) + uVar7;
  uVar11 = (uVar11 >> 4) + uVar11 & 0xf0f0f0f;
  uVar23 = (uVar23 >> 8) + uVar23;
  uVar11 = (uVar11 >> 8) + uVar11;
  uVar7 = 1 << ((uVar11 >> 0x10) + uVar11 +
                (((uVar7 >> 0x10) + uVar7 & 0xff) - ((uVar23 >> 0x10) + uVar23 & 0xff)) & 0x1f);
  bVar3 = uVar53 < uVar7;
  if (bVar3) {
    *puVar8 = uVar7;
    uVar7 = 1;
  }
  uVar11 = 0;
  uVar23 = param_2;
  uVar26 = param_3;
  do {
    bVar4 = uVar23 % 3 < uVar26 % 3 + uVar11;
    if (bVar4) {
      uVar7 = uVar7 * 3;
    }
    uVar11 = (uint)bVar4;
    bVar4 = 8 < uVar23;
    uVar23 = uVar23 / 3;
    uVar26 = uVar26 / 3;
  } while (bVar4);
  uVar11 = param_2 - 1;
  if (uVar11 < 0x10000) {
    iVar6 = 0x18;
    if (uVar11 < 0x100) {
      iVar6 = 0x20;
    }
    iVar24 = 9;
    if (uVar11 < 0x100) {
      iVar24 = 1;
    }
  }
  else {
    iVar6 = 8;
    if (uVar11 < 0x1000000) {
      iVar6 = 0x10;
    }
    iVar24 = 0x19;
    if (uVar11 < 0x1000000) {
      iVar24 = 0x11;
    }
  }
  iVar29 = 0;
  uVar28 = 1;
  uVar42 = (((1 << ((int)(0x1f - (iVar6 - (uint)(byte)PTR___gmpn_clz_tab_0009d18c[uVar11 >> iVar24])
                         ) >> 1 & 0x1fU)) +
            (1 << ((int)(0x1e - (iVar6 - (uint)(byte)PTR___gmpn_clz_tab_0009d18c[uVar11 >> iVar24]))
                   >> 1 & 0x1fU))) - 5U | 1) / 3;
  uVar26 = uVar42 + 1;
  uVar11 = (uint)bVar3;
  uVar23 = 0;
  do {
    uVar35 = uVar23 + 1;
    uVar21 = uVar11;
    if ((uVar28 & *(uint *)(puVar13 + iVar29 * 4)) == 0) {
      uVar12 = (uVar35 & 1) + 1 + uVar35 * 3;
      if (uVar53 < uVar7) {
        uVar21 = uVar11 + 1;
        puVar8[uVar11] = uVar7;
        uVar7 = 1;
      }
      uVar27 = 0;
      uVar11 = param_3;
      uVar25 = param_2;
      do {
        if (uVar12 == 0) {
          trap(7);
        }
        if (uVar12 == 0) {
          trap(7);
        }
        uVar54 = uVar25 / uVar12;
        bVar3 = uVar25 % uVar12 < uVar11 % uVar12 + uVar27;
        if (bVar3) {
          uVar7 = uVar7 * uVar12;
        }
        uVar27 = (uint)bVar3;
        uVar11 = uVar11 / uVar12;
        uVar25 = uVar54;
      } while (uVar12 <= uVar54);
    }
    uVar28 = uVar28 * 2 - ((int)uVar28 >> 0x1f);
    bVar3 = uVar23 != uVar42;
    iVar29 = iVar29 + (uVar28 & 1);
    uVar11 = uVar21;
    uVar23 = uVar35;
  } while (bVar3);
  uVar23 = uVar26 >> 5;
  uVar11 = 1 << (uVar26 & 0x1f);
  uVar28 = (uVar40 - 5 | 1) / 3;
  do {
    while( true ) {
      uVar26 = uVar26 + 1;
      uVar42 = uVar21;
      if ((uVar11 & *(uint *)(puVar13 + uVar23 * 4)) == 0) break;
LAB_00021e80:
      uVar11 = uVar11 * 2 - ((int)uVar11 >> 0x1f);
      uVar23 = uVar23 + (uVar11 & 1);
      uVar21 = uVar42;
      if (uVar28 < uVar26) goto LAB_00021f04;
    }
    uVar12 = (uVar26 & 1) + 1 + uVar26 * 3;
    if (uVar12 == 0) {
      trap(7);
    }
    if (uVar12 == 0) {
      trap(7);
    }
    if (param_3 % uVar12 <= param_2 % uVar12) goto LAB_00021e80;
    if (uVar53 << 1 < uVar7) {
      uVar42 = uVar21 + 1;
      puVar8[uVar21] = uVar7;
      uVar7 = uVar12;
      goto LAB_00021e80;
    }
    uVar11 = uVar11 * 2 - ((int)uVar11 >> 0x1f);
    uVar7 = uVar7 * uVar12;
    uVar23 = uVar23 + (uVar11 & 1);
  } while (uVar26 <= uVar28);
LAB_00021f04:
  uVar18 = (uVar18 - 5 | 1) / 3 + 1;
  uVar23 = uVar18 >> 5;
  uVar37 = uVar37 / 3;
  uVar11 = 1 << (uVar18 & 0x1f);
  do {
    while( true ) {
      uVar18 = uVar18 + 1;
      uVar26 = uVar42;
      if ((uVar11 & *(uint *)(puVar13 + uVar23 * 4)) == 0) break;
LAB_00021f58:
      uVar11 = uVar11 * 2 - ((int)uVar11 >> 0x1f);
      uVar23 = uVar23 + (uVar11 & 1);
      uVar42 = uVar26;
      if (uVar37 < uVar18) goto LAB_00021fb8;
    }
    uVar28 = (uVar18 & 1) + 1 + uVar18 * 3;
    if ((uVar53 & 0x7fffffff) < uVar7) {
      uVar26 = uVar42 + 1;
      puVar8[uVar42] = uVar7;
      uVar7 = uVar28;
      goto LAB_00021f58;
    }
    uVar11 = uVar11 * 2 - ((int)uVar11 >> 0x1f);
    uVar7 = uVar7 * uVar28;
    uVar23 = uVar23 + (uVar11 & 1);
  } while (uVar18 <= uVar37);
LAB_00021fb8:
  if (uVar26 == 0) {
    **(uint **)(param_1 + 8) = uVar7;
    *(undefined4 *)(param_1 + 4) = 1;
    uVar18 = 0;
    iVar6 = local_30;
  }
  else {
    uVar18 = uVar26 + 1;
    puVar8[uVar26] = uVar7;
    (*(code *)PTR___gmpz_prodlimbs_0009d284)(param_1);
    iVar6 = local_30;
  }
  local_30 = iVar6;
  if (iVar6 != 0) {
    (*(code *)PTR___gmp_tmp_reentrant_free_0009d618)();
  }
  iVar24 = *(int *)puVar5;
  if (local_2c == iVar24) {
    return iVar24;
  }
  pcVar51 = FUN_0002209c;
  puVar14 = PTR___stack_chk_fail_0009d4d0;
  (*(code *)PTR___stack_chk_fail_0009d4d0)();
  puVar43 = puVar14 + 0x82fa4;
  puVar47 = puVar46 + -0x90;
  puVar50 = puVar46 + -0x90;
  puVar49 = puVar46 + -0x90;
  *(int *)(puVar46 + -0x24) = param_1;
  *(undefined1 **)(puVar46 + -8) = auStack_48;
  puVar19 = *(undefined4 **)(puVar14 + 0x7b4a4);
  *(code **)(puVar46 + -4) = pcVar51;
  *(int *)(puVar46 + -0x6c) = iVar6;
  *(uint *)(puVar46 + -0xc) = uVar40;
  *(uint *)(puVar46 + -0x10) = param_3;
  *(uint *)(puVar46 + -0x14) = uVar37;
  uVar37 = (((uint)puVar8 >> 5) + 1) * 3;
  *(uint *)(puVar46 + -0x18) = uVar35;
  *(undefined1 **)(puVar46 + -0x1c) = puVar13;
  *(uint *)(puVar46 + -0x20) = param_2;
  *(undefined **)(puVar46 + -0x28) = puVar5;
  *(undefined **)(puVar46 + -0x78) = puVar43;
  *(undefined4 **)(puVar46 + -0x70) = puVar19;
  *(undefined4 *)(puVar46 + -0x30) = 0;
  *(undefined4 *)(puVar46 + -0x2c) = *puVar19;
  if (uVar37 < 0x2a) {
    uVar37 = 0x27;
    if (uVar18 < 0x28) {
      uVar37 = uVar18;
    }
    uVar37 = (uVar37 + 1) * 4;
  }
  else {
    uVar37 = ((int)uVar37 >> 1) + 0x13;
    if (uVar18 < uVar37) {
      uVar37 = uVar18;
    }
    uVar37 = (uVar37 + 1) * 4;
    pcVar51 = *(code **)(puVar14 + 0x7b254);
    if (0x7f00 < uVar37) {
      *(uint *)(puVar46 + 8) = uVar18;
      puVar38 = (uint *)(*pcVar51)(puVar46 + -0x30);
      puVar43 = *(undefined **)(puVar46 + -0x78);
      uVar18 = *(uint *)(puVar46 + 8);
      goto LAB_0002214c;
    }
  }
  iVar6 = -(uVar37 + 7 & 0xfffffff8);
  puVar47 = puVar46 + iVar6 + -0x90;
  puVar38 = (uint *)(puVar46 + iVar6 + -0x78);
LAB_0002214c:
  iVar24 = *(int *)(puVar43 + -0x7c6c);
  puVar36 = (uint *)(puVar47 + -0x40);
  puVar31 = (uint *)(iVar24 + 0x1c);
  iVar6 = 8;
  do {
    iVar29 = iVar6;
    puVar9 = (uint *)*puVar31;
    puVar31 = puVar31 + -1;
    iVar6 = iVar29 + -1;
  } while (puVar9 < puVar8);
  *(int *)(puVar46 + -0x68) = iVar29;
  puVar31 = (uint *)(iVar24 + 0x1c);
  uVar37 = 8;
  do {
    uVar7 = uVar37;
    uVar11 = *puVar31;
    puVar31 = puVar31 + -1;
    uVar37 = uVar7 - 1;
  } while (uVar11 < uVar18);
  uVar10 = *(undefined4 *)(puVar43 + -0x7d3c);
  iVar6 = 0x11;
  *(undefined4 *)(puVar46 + -0x48) = 0;
  *(undefined4 *)(puVar46 + -100) = uVar10;
  iVar24 = *(int *)(puVar43 + -0x7e20);
  *(undefined4 *)(puVar46 + -0x5c) = 0x3fffffff;
  iVar29 = (int)puVar8 + (1 - uVar18);
  *(uint *)(puVar46 + -0x40) = (uint)*(byte *)(iVar24 + 7);
  *(undefined4 *)(puVar46 + -0x3c) = *(undefined4 *)(puVar43 + -0x7eb4);
  *(uint *)(puVar46 + -0x60) = uVar18 + 1;
  iVar24 = *(int *)(puVar46 + -0x60);
  *puVar38 = 1;
  *(undefined4 *)(puVar46 + -0x44) = 1;
  *(int *)(puVar46 + -0x34) = *(int *)(puVar43 + -0x7fe4) + -0x31a4;
  *(int *)(puVar46 + -0x38) = *(int *)(puVar43 + -0x7fd4) + 0x3630;
  *puVar36 = 0x260eeeeb;
  if (iVar24 - 0x11U <= uVar7) {
    uVar7 = iVar24 - 0x11U;
  }
  puVar8 = (uint *)0x1;
  iVar39 = iVar6;
  if (uVar7 == 0) goto LAB_00022534;
LAB_00022234:
  puVar31 = (uint *)0x1;
  iVar41 = *(int *)(puVar46 + -0x40);
  *(uint **)(puVar46 + -0x4c) = puVar8;
  *(uint **)(puVar46 + -0x50) = puVar38;
  do {
    iVar39 = iVar6 + uVar7;
    uVar18 = (**(code **)(*(int *)(puVar46 + -0x34) + (uVar7 - 1) * 4))(iVar6);
    if ((uVar18 & 0xff) == 0) {
      uVar37 = uVar18 >> 8;
      iVar6 = 6;
      if ((uVar37 & 0xff) == 0) {
        uVar37 = uVar18 >> 0x10;
        iVar6 = 0xe;
        if ((uVar37 & 0xff) == 0) {
          uVar37 = uVar18 >> 0x18;
          iVar6 = 0x1e;
          if (uVar37 != 0) {
            iVar6 = 0x16;
          }
        }
      }
      uVar37 = (uint)*(byte *)(*(int *)(puVar46 + -0x3c) + (-uVar37 & uVar37)) + iVar6;
    }
    else {
      uVar37 = *(byte *)(*(int *)(puVar46 + -0x3c) + (-uVar18 & uVar18)) - 2;
    }
    iVar41 = iVar41 + *(byte *)(*(int *)(puVar46 + -0x38) + (uVar7 - 1)) + uVar37;
    uVar18 = (**(code **)(*(int *)(puVar46 + -0x78) + -0x7f9c))
                       (puVar36,puVar36,puVar31,uVar18 >> (uVar37 & 0x1f));
    puVar43 = *(undefined **)(puVar46 + -0x78);
    if ((uint)(iVar24 - iVar39) <= uVar7) {
      uVar7 = iVar24 - iVar39;
    }
    puVar8 = puVar36 + (int)puVar31;
    puVar31 = (uint *)((int)puVar31 + (uint)(uVar18 != 0));
    *puVar8 = uVar18;
    if (uVar7 == 0) {
      puVar38 = *(uint **)(puVar46 + -0x50);
      puVar8 = *(uint **)(puVar46 + -0x4c);
      *(int *)(puVar46 + -0x40) = iVar41;
      *(uint **)(puVar46 + -0x4c) = puVar36 + (int)((int)puVar31 + *(int *)(puVar46 + -0x5c));
      goto LAB_00022340;
    }
    iVar6 = iVar39;
  } while (puVar31 != (uint *)0x14);
  puVar8 = *(uint **)(puVar46 + -0x4c);
  puVar38 = *(uint **)(puVar46 + -0x50);
  *(int *)(puVar46 + -0x40) = iVar41;
  *(uint **)(puVar46 + -0x4c) = puVar36 + 0x13;
LAB_00022340:
  do {
    iVar41 = iVar39 - *(int *)(puVar46 + -0x44);
    iVar24 = *(int *)(puVar46 + -0x5c);
    iVar6 = iVar41;
    if (iVar41 != 0) {
      *(uint *)(puVar46 + -0x44) = uVar7;
      *(uint **)(puVar46 + -0x50) = puVar31;
      *(uint **)(puVar46 + -0x54) = puVar36;
      *(int *)(puVar46 + -0x58) = iVar39;
      iVar6 = *(int *)(puVar46 + -0x48);
      iVar39 = *(int *)(puVar46 + -0x68);
      iVar24 = iVar29;
      do {
        iVar33 = iVar41;
        if (iVar39 <= iVar41) {
          iVar33 = iVar39;
        }
        iVar29 = iVar24 + iVar33;
        uVar18 = (**(code **)(*(int *)(puVar46 + -0x34) + (iVar33 + -1) * 4))(iVar24);
        if ((uVar18 & 0xff) == 0) {
          uVar37 = uVar18 >> 8;
          iVar24 = 6;
          if ((uVar37 & 0xff) == 0) {
            uVar37 = uVar18 >> 0x10;
            iVar24 = 0xe;
            if ((uVar37 & 0xff) == 0) {
              uVar37 = uVar18 >> 0x18;
              iVar24 = 0x16;
              if (uVar37 == 0) {
                iVar24 = 0x1e;
              }
            }
          }
          uVar37 = (uint)*(byte *)(*(int *)(puVar46 + -0x3c) + (-uVar37 & uVar37)) + iVar24;
        }
        else {
          uVar37 = *(byte *)(*(int *)(puVar46 + -0x3c) + (-uVar18 & uVar18)) - 2;
        }
        iVar41 = iVar41 - iVar33;
        iVar6 = iVar6 + *(byte *)(*(int *)(puVar46 + -0x38) + iVar33 + -1) + uVar37;
        uVar18 = (**(code **)(*(int *)(puVar46 + -0x78) + -0x7f9c))
                           (puVar38,puVar38,puVar8,uVar18 >> (uVar37 & 0x1f));
        puVar43 = *(undefined **)(puVar46 + -0x78);
        puVar31 = puVar38 + (int)puVar8;
        puVar8 = (uint *)((int)puVar8 + (uint)(uVar18 != 0));
        *puVar31 = uVar18;
        iVar24 = iVar29;
      } while (iVar41 != 0);
      uVar7 = *(uint *)(puVar46 + -0x44);
      puVar31 = *(uint **)(puVar46 + -0x50);
      puVar36 = *(uint **)(puVar46 + -0x54);
      iVar39 = *(int *)(puVar46 + -0x58);
      *(int *)(puVar46 + -0x48) = iVar6;
      iVar24 = *(int *)(puVar46 + -0x5c);
    }
    uVar37 = *puVar36;
    pcVar51 = *(code **)(puVar43 + -0x7bc0);
    uVar18 = (uint)*(byte *)(*(int *)(puVar46 + -100) + ((uVar37 << 0x18) >> 0x19));
    puVar8 = (uint *)((int)puVar8 +
                     ((puVar38[(int)((int)puVar8 + iVar24)] < **(uint **)(puVar46 + -0x4c) ^ 1) -
                     (int)puVar31));
    iVar24 = uVar18 * 2 - uVar18 * uVar18 * uVar37;
    if ((int)puVar8 < (int)puVar31) {
      puVar31 = puVar8;
    }
    *(uint **)(puVar47 + -0x48) = puVar31;
    *(uint *)(puVar47 + -0x44) = iVar24 * iVar24 * uVar37 + iVar24 * -2;
    puVar9 = puVar38;
    puVar22 = puVar8;
    (*pcVar51)(puVar38,puVar38,puVar8,puVar36);
    iVar24 = *(int *)(puVar46 + -0x78);
    if (uVar7 == 0) {
      if (*(int *)(puVar46 + -0x48) == *(int *)(puVar46 + -0x40)) {
        puVar8 = (uint *)((int)puVar8 - (uint)(puVar38[(int)((int)puVar8 + -1)] == 0));
        pcVar51 = *(code **)(iVar24 + -0x7a80);
        if ((int)puVar8 <= **(int **)(puVar46 + -0x6c)) goto LAB_00022600;
LAB_00022734:
        puVar9 = puVar8;
        puVar19 = (undefined4 *)(*pcVar51)(*(undefined4 *)(puVar46 + -0x6c));
        iVar24 = *(int *)(puVar46 + -0x78);
      }
      else {
        puVar9 = puVar38;
        puVar22 = puVar8;
        uVar18 = (**(code **)(iVar24 + -0x7ad4))(puVar38);
        iVar24 = *(int *)(puVar46 + -0x78);
        puVar38[(int)puVar8] = uVar18;
        puVar8 = (uint *)((int)puVar8 +
                         ((uint)(uVar18 != 0) -
                         (uint)(puVar38[(int)((int)puVar8 + ((uVar18 != 0) - 1))] == 0)));
        pcVar51 = *(code **)(iVar24 + -0x7a80);
        if (**(int **)(puVar46 + -0x6c) < (int)puVar8) goto LAB_00022734;
LAB_00022600:
        puVar19 = *(undefined4 **)(*(int *)(puVar46 + -0x6c) + 8);
      }
      *(uint **)(*(int *)(puVar46 + -0x6c) + 4) = puVar8;
      if (puVar8 != (uint *)0x0) {
        puVar13 = (undefined1 *)((int)puVar8 + -1);
        puVar9 = (uint *)*puVar38;
        if (puVar13 != (undefined1 *)0x0) {
          puVar15 = puVar19;
          puVar16 = puVar38 + 1;
          do {
            *puVar15 = puVar9;
            puVar38 = puVar16 + 1;
            puVar13 = puVar13 + -1;
            puVar9 = (uint *)*puVar16;
            puVar15 = puVar15 + 1;
            puVar16 = puVar38;
          } while (puVar13 != (undefined1 *)0x0);
          puVar8 = (uint *)((int)puVar8 * 4);
          puVar19 = (undefined4 *)((int)puVar19 + (int)(puVar8 + -1));
        }
        *puVar19 = puVar9;
      }
      puVar16 = *(uint **)(puVar46 + -0x30);
      if (puVar16 != (uint *)0x0) {
        (**(code **)(iVar24 + -0x7a28))();
        iVar24 = *(int *)(puVar46 + -0x78);
      }
      if (*(int *)(puVar46 + -0x2c) == **(int **)(puVar46 + -0x70)) {
        return **(int **)(puVar46 + -0x70);
      }
      pcVar51 = *(code **)(iVar24 + -0x7b70);
      pcVar52 = __gmpz_bin_uiui;
      (*pcVar51)();
      pcVar44 = pcVar51 + 0x8289c;
      *(uint **)(puVar47 + -0x78) = puVar31;
      piVar32 = *(int **)(pcVar51 + 0x7ad9c);
      *(code **)(puVar47 + -0xf0) = pcVar44;
      *(int *)(puVar47 + -0x74) = iVar39;
      *(code **)(puVar47 + -0x5c) = pcVar52;
      *(undefined1 **)(puVar47 + -0x60) = puVar46 + -0x90;
      *(int *)(puVar47 + -100) = iVar6;
      *(int *)(puVar47 + -0x68) = iVar29;
      *(uint **)(puVar47 + -0x6c) = puVar38;
      *(uint **)(puVar47 + -0x70) = puVar36;
      *(uint **)(puVar47 + -0x7c) = puVar8;
      *(undefined4 *)(puVar47 + -0x80) = 0;
      *(int *)(puVar47 + -0x84) = *piVar32;
      puVar31 = puVar16;
      puVar20 = puVar9;
      if (puVar9 < puVar22) {
        puVar16[1] = 0;
        puVar30 = (uint *)0x0;
      }
      else {
        puVar30 = puVar22;
        if ((uint *)((int)puVar9 - (int)puVar22) <= puVar22) {
          puVar30 = (uint *)((int)puVar9 - (int)puVar22);
        }
        puVar22 = puVar30;
        puVar36 = puVar9;
        if (puVar30 < (uint *)0x2) {
          if (puVar30 == (uint *)0x0) {
            puVar36 = (uint *)0x1;
          }
          *(uint **)puVar16[2] = puVar36;
          puVar16[1] = 1;
          puVar49 = puVar46 + -0x90;
        }
        else if (puVar9 < (uint *)0x23) {
          puVar13 = (undefined1 *)((int)puVar30 + -2);
          iVar6 = *(int *)(pcVar51 + 0x7aa7c);
          puVar20 = (uint *)puVar16[2];
          uVar18 = (int)puVar9 - (int)puVar30;
          puVar36 = (uint *)(iVar6 + ((uint)puVar9 >> 1));
          puVar30 = (uint *)(iVar6 + ((uint)puVar30 >> 1));
          bVar2 = *(byte *)((int)puVar30 + -1);
          puVar31 = (uint *)(uint)*(byte *)(iVar6 + (uVar18 >> 1) + -1);
          *puVar20 = *(int *)((int)puVar13 * 4 + *(int *)(pcVar51 + 0x7a8c8) + 0x35b4) *
                     *(int *)(*(int *)(pcVar51 + 0x7ad64) + (int)puVar9 * 4) *
                     *(int *)((uVar18 - 2) * 4 + *(int *)(pcVar51 + 0x7a8c8) + 0x35b4) <<
                     (((uint)*(byte *)((int)puVar36 + -1) - (int)(uint)bVar2) - (int)puVar31 & 0x1f)
          ;
          puVar16[1] = 1;
          puVar22 = (uint *)(uint)bVar2;
          puVar49 = puVar46 + -0x90;
        }
        else if (puVar30 < &DAT_00000011) {
          FUN_000216e8();
          pcVar44 = *(code **)(puVar47 + -0xf0);
          puVar49 = puVar46 + -0x90;
        }
        else if (puVar30 < &DAT_00000021) {
          uVar18 = (uint)puVar30 >> 1;
          uVar37 = (int)puVar9 - uVar18;
          FUN_000216e8();
          iVar6 = *(int *)(puVar47 + -0xf0);
          uVar7 = (int)puVar30 - uVar18;
          if (uVar37 < 0x23) {
            puVar50 = (undefined1 *)puVar16[1];
            if ((int)puVar50 < (int)*puVar16) {
              puVar8 = (uint *)puVar16[2];
            }
            else {
              puVar8 = (uint *)(**(code **)(iVar6 + -0x7a80))(puVar16,puVar50 + 1);
              iVar6 = *(int *)(puVar47 + -0xf0);
            }
            iVar29 = *(int *)(iVar6 + -0x7e20);
            iVar24 = *(int *)(iVar6 + -0x7fd4) + 0x35b4;
            uVar37 = (**(code **)(iVar6 + -0x7f9c))
                               (puVar8,puVar8,puVar50,
                                *(int *)((((int)puVar9 - (int)puVar30) - 2U) * 4 + iVar24) *
                                *(int *)(*(int *)(iVar6 + -0x7b38) + uVar37 * 4) *
                                *(int *)((uVar7 - 2) * 4 + iVar24) <<
                                (((uint)*(byte *)(iVar29 + (uVar37 >> 1) + -1) -
                                 (uint)*(byte *)(iVar29 + (uVar7 >> 1) + -1)) -
                                 (uint)*(byte *)(iVar29 + ((uint)((int)puVar9 - (int)puVar30) >> 1)
                                                + -1) & 0x1f));
            iVar6 = *(int *)(puVar47 + -0xf0);
            puVar30 = (uint *)(puVar50 + (uVar37 != 0));
            puVar8[(int)puVar50] = uVar37;
          }
          else {
            *(undefined4 *)(puVar47 + -0xe4) = 0x15;
            *(undefined1 **)(puVar47 + -0xdc) = puVar47 + -0xd8;
            FUN_000216e8(puVar47 + -0xe4,uVar37,uVar7);
            (**(code **)(*(int *)(puVar47 + -0xf0) + -0x7ba8))(puVar16,puVar16,puVar47 + -0xe4);
            iVar6 = *(int *)(puVar47 + -0xf0);
            puVar8 = (uint *)puVar16[2];
            puVar30 = (uint *)puVar16[1];
          }
          pcVar51 = *(code **)(iVar6 + -0x7bb4);
          puVar38 = (uint *)((uint)*(byte *)((uVar7 - 8) + *(int *)(iVar6 + -0x7fd4) + 0x3550) -
                            (uint)(uVar18 != uVar7));
          *(undefined4 *)(puVar47 + -0xf8) =
               *(undefined4 *)((uVar7 - 8) * 4 + *(int *)(iVar6 + -0x7fd4) + 0x355c);
          *(uint **)(puVar47 + -0xf4) = puVar38;
          puVar31 = puVar8;
          puVar20 = puVar8;
          puVar22 = puVar30;
          (*pcVar51)();
          pcVar44 = *(code **)(puVar47 + -0xf0);
          if (puVar8[(int)((int)puVar30 + -1)] == 0) {
            puVar9 = puVar8 + (int)puVar30;
            do {
              puVar1 = puVar9 + -2;
              puVar30 = (uint *)((int)puVar30 + -1);
              puVar9 = puVar9 + -1;
            } while (*puVar1 == 0);
          }
          puVar16[1] = (uint)puVar30;
          puVar49 = puVar50;
        }
        else if ((puVar30 < (uint *)0x3e8) || (puVar30 <= (uint *)((uint)puVar9 >> 4))) {
          FUN_0002209c();
          pcVar44 = *(code **)(puVar47 + -0xf0);
          puVar49 = puVar46 + -0x90;
        }
        else {
          FUN_000219dc();
          pcVar44 = *(code **)(puVar47 + -0xf0);
          puVar49 = puVar46 + -0x90;
        }
      }
      if (*(int *)(puVar47 + -0x84) == *piVar32) {
        return *piVar32;
      }
      pcVar51 = *(code **)(pcVar44 + -0x7b70);
      uVar10 = 0x22b64;
      (*pcVar51)();
      pcVar44 = pcVar51 + 0x824d0;
      puVar48 = puVar47 + -0x160;
      *(uint **)(puVar47 + -0x118) = puVar16;
      *(uint **)(puVar47 + -0x124) = puVar30;
      piVar34 = *(int **)(pcVar51 + 0x7a9d0);
      uVar18 = puVar22[1];
      *(undefined1 **)(puVar47 + -0x110) = puVar49;
      *(uint **)(puVar47 + -0x114) = puVar36;
      *(int **)(puVar47 + -0x11c) = piVar32;
      *(uint **)(puVar47 + -0x120) = puVar8;
      *(undefined4 *)(puVar47 + -0x10c) = uVar10;
      *(code **)(puVar47 + -0x150) = pcVar44;
      *(undefined4 *)(puVar47 + -0x13c) = 0;
      puVar8 = (uint *)puVar20[1];
      *(int *)(puVar47 + -300) = *piVar34;
      if ((int)uVar18 < 0) {
        uVar37 = uVar18 * -4;
        *(uint *)(puVar47 + -0x138) = -uVar18;
        if (0x7f00 < uVar37) {
          pcVar51 = *(code **)(pcVar51 + 0x7a780);
          goto LAB_00022c88;
        }
LAB_00022be4:
        iVar6 = -(uVar37 + 7 & 0xfffffff8);
        puVar48 = puVar47 + iVar6 + -0x160;
        puVar13 = puVar47 + iVar6 + -0x150;
      }
      else {
        uVar37 = uVar18 * 4;
        *(uint *)(puVar47 + -0x138) = uVar18;
        pcVar51 = *(code **)(pcVar51 + 0x7a780);
        if (uVar37 < 0x7f01) goto LAB_00022be4;
LAB_00022c88:
        *(uint **)(puVar47 + -0x144) = puVar22;
        puVar13 = (undefined1 *)(*pcVar51)(puVar47 + -0x13c,uVar37);
        pcVar44 = *(code **)(puVar47 + -0x150);
        puVar22 = *(uint **)(puVar47 + -0x144);
      }
      pcVar51 = *(code **)(pcVar44 + -0x7a68);
      puVar36 = (uint *)(puVar47 + -0x138);
      *(undefined1 **)(puVar47 + -0x130) = puVar13;
      puVar9 = puVar20;
      (*pcVar51)(puVar31,puVar36,puVar20,puVar22);
      iVar6 = *(int *)(puVar47 + -0x150);
      if (((int)((uint)puVar8 ^ uVar18) < 0) || (*(int *)(puVar47 + -0x134) == 0)) {
        piVar32 = *(int **)(puVar47 + -0x13c);
        pcVar51 = *(code **)(iVar6 + -0x7a28);
        if (piVar32 != (int *)0x0) goto LAB_00022cc0;
      }
      else {
        puVar9 = (uint *)0x1;
        puVar36 = puVar31;
        (**(code **)(iVar6 + -0x7c9c))(puVar31);
        piVar32 = *(int **)(puVar47 + -0x13c);
        iVar6 = *(int *)(puVar47 + -0x150);
        if (piVar32 != (int *)0x0) {
          pcVar51 = *(code **)(iVar6 + -0x7a28);
LAB_00022cc0:
          (*pcVar51)();
          iVar6 = *(int *)(puVar47 + -0x150);
        }
      }
      if (*(int *)(puVar47 + -300) == *piVar34) {
        return *piVar34;
      }
      pcVar51 = *(code **)(iVar6 + -0x7b70);
      uVar10 = 0x22cdc;
      (*pcVar51)();
      pcVar44 = pcVar51 + 0x82360;
      *(code **)(puVar48 + -0x28) = pcVar44;
      *(undefined4 *)(puVar48 + -4) = uVar10;
      *(uint **)(puVar48 + -8) = puVar38;
      *(uint **)(puVar48 + -0xc) = puVar20;
      *(int **)(puVar48 + -0x10) = piVar34;
      *(uint **)(puVar48 + -0x14) = puVar31;
      *(uint **)(puVar48 + -0x18) = puVar8;
      *(uint *)(puVar48 + -0x1c) = (uint)puVar8 ^ uVar18;
      if (puVar9 == (uint *)0x0) {
        pcVar51 = *(code **)(pcVar51 + 0x7a900);
        (*pcVar51)();
LAB_00022e2c:
        piVar32 = (int *)(*pcVar51)(piVar34,puVar31);
        pcVar44 = *(code **)(puVar48 + -0x28);
      }
      else {
        puVar8 = (uint *)puVar36[1];
        if (puVar8 == (uint *)0x0) {
          piVar32[1] = 0;
          return 0;
        }
        puVar31 = puVar8;
        if ((int)puVar8 < 0) {
          puVar31 = (uint *)-(int)puVar8;
        }
        pcVar51 = *(code **)(pcVar51 + 0x7a8e0);
        piVar34 = piVar32;
        puVar20 = puVar9;
        puVar38 = puVar36;
        if (*piVar32 < (int)puVar31) goto LAB_00022e2c;
        piVar32 = (int *)piVar32[2];
      }
      pcVar51 = *(code **)(pcVar44 + -0x7d98);
      uVar18 = puVar38[2];
      *(uint **)(puVar48 + -0x30) = puVar20;
      iVar6 = (*pcVar51)(piVar32,0,uVar18,puVar31);
      piVar17 = piVar32 + (int)puVar31 + -1;
      if (iVar6 == 0) {
        uVar18 = (uint)(*piVar17 == 0);
        if (-1 < (int)puVar8) {
          iVar24 = (int)puVar31 - uVar18;
          goto LAB_00022d9c;
        }
      }
      else {
        if (-1 < (int)puVar8) {
          do {
            iVar24 = *piVar32;
            *piVar32 = iVar24 + 1;
            piVar32 = piVar32 + 1;
          } while (iVar24 + 1 == 0);
          iVar6 = (int)puVar20 - iVar6;
          iVar24 = (int)puVar31 - (uint)(*piVar17 == 0);
          goto LAB_00022d9c;
        }
        uVar18 = (uint)(*piVar17 == 0);
      }
      iVar24 = uVar18 - (int)puVar31;
LAB_00022d9c:
      piVar34[1] = iVar24;
      return iVar6;
    }
    *(int *)(puVar46 + -0x44) = iVar39;
    iVar6 = iVar39 + uVar7;
    uVar18 = (**(code **)(*(int *)(puVar46 + -0x34) + (uVar7 - 1) * 4))(iVar39);
    puVar43 = *(undefined **)(puVar46 + -0x78);
    if ((uVar18 & 0xff) == 0) {
      uVar37 = uVar18 >> 8;
      iVar24 = 6;
      if ((uVar37 & 0xff) == 0) {
        uVar37 = uVar18 >> 0x10;
        iVar24 = 0xe;
        if ((uVar37 & 0xff) == 0) {
          uVar37 = uVar18 >> 0x18;
          iVar24 = 0x1e;
          if (uVar37 != 0) {
            iVar24 = 0x16;
          }
        }
      }
      uVar37 = (uint)*(byte *)(*(int *)(puVar46 + -0x3c) + (-uVar37 & uVar37)) + iVar24;
    }
    else {
      uVar37 = *(byte *)(*(int *)(puVar46 + -0x3c) + (-uVar18 & uVar18)) - 2;
    }
    iVar39 = *(int *)(puVar46 + -0x38);
    *puVar36 = uVar18 >> (uVar37 & 0x1f);
    iVar24 = *(int *)(puVar46 + -0x60);
    *(uint *)(puVar46 + -0x40) =
         *(int *)(puVar46 + -0x40) + *(byte *)(iVar39 + (uVar7 - 1)) + uVar37;
    if ((uint)(iVar24 - iVar6) <= uVar7) {
      uVar7 = iVar24 - iVar6;
    }
    iVar39 = iVar6;
    if (uVar7 != 0) goto LAB_00022234;
LAB_00022534:
    puVar31 = (uint *)0x1;
    *(uint **)(puVar46 + -0x4c) = puVar36;
  } while( true );
}


lui gp,0x8
addiu gp,gp,0x3664
addu gp,gp,t9
addiu sp,sp,-0x48
lui v0,0xaaaa
sw s5,0x34(sp)
addiu s5,a1,-0x5
ori v0,v0,0xaaab
sw s2,0x28(sp)
ori s5,s5,0x1
sw s0,0x20(sp)
multu s5,v0
lw s0,-0x7b00(gp)
or s2,a1,zero
sw s8,0x40(sp)
or s8,sp,zero
sw s6,0x38(sp)
sw s1,0x24(sp)
or s1,a0,zero
mfhi v0
sw ra,0x44(sp)
sw s7,0x3c(sp)
or s6,a2,zero
sw s4,0x30(sp)
sw s3,0x2c(sp)
sw gp,0x10(sp)
sw zero,0x18(s8)
lw v1,0x0(s0)
srl a1,v0,0x6
addiu a1,a1,0x1
sw v1,0x1c(s8)
sll a1,a1,0x2
sltiu v0,a1,0x7f01
beq v0,zero,0x0002207c
_lw t9,-0x7d50(gp)
addiu v0,a1,0x7
srl v0,v0,0x3
sll v0,v0,0x3
subu sp,sp,v0
addiu s3,sp,0x10
lw t9,-0x7efc(gp)
or a1,s2,zero
jalr t9
_or a0,s3,zero
li a2,0x8
lw gp,0x10(s8)
addiu v0,v0,0x1
lw a0,-0x7c6c(gp)
addiu a0,a0,0x1c
b 0x00021aac
_or a1,a0,zero
or a2,a3,zero
addiu a1,a1,-0x4
lw v1,0x4(a1)
sltu v1,v1,s2
bne v1,zero,0x00021aa8
_addiu a3,a2,-0x1
teq a2,zero
divu v0,a2
mflo v1
addiu v1,v1,0x1
sll v1,v1,0x2
sltiu v1,v1,0x7f01
bne v1,zero,0x00021aec
_li a1,0x8
b 0x00021e04
_addiu a0,a0,-0x4
or a1,a2,zero
addiu a0,a0,-0x4
lw v1,0x4(a0)
sltu v1,v1,s2
bne v1,zero,0x00021ae8
_addiu a2,a1,-0x1
teq a1,zero
divu v0,a1
mflo v0
sll v0,v0,0x2
addiu v0,v0,0xb
srl v0,v0,0x3
sll v0,v0,0x3
subu sp,sp,v0
addiu a1,sp,0x10
li v0,-0x1
subu t3,s2,s6
teq s2,zero
divu v0,s2
lui t0,0x5555
srl a2,t3,0x1
addiu t0,t0,0x5555
srl s7,s2,0x1
and a2,a2,t0
and a3,s7,t0
srl v1,s6,0x1
subu a2,t3,a2
subu a3,s2,a3
lui a0,0x3333
and v1,v1,t0
addiu a0,a0,0x3333
subu v1,s6,v1
srl t2,a2,0x2
srl t1,a3,0x2
and a2,a2,a0
and a3,a3,a0
and t2,t2,a0
and t1,t1,a0
srl t0,v1,0x2
addu t2,t2,a2
addu t1,t1,a3
and t0,t0,a0
and a0,v1,a0
addu t0,t0,a0
srl a3,t2,0x4
srl a2,t1,0x4
lui a0,0xf0f
addu v1,a3,t2
addiu t4,a0,0xf0f
addu a2,a2,t1
srl a0,t0,0x4
and v1,v1,t4
and a2,a2,t4
srl t1,v1,0x8
addu a0,a0,t0
srl a3,a2,0x8
addu t0,t1,v1
and a0,a0,t4
addu a3,a3,a2
srl t2,a0,0x8
srl v1,t0,0x10
srl a2,a3,0x10
addu a0,t2,a0
addu v1,v1,t0
addu a2,a2,a3
srl t2,a0,0x10
andi v1,v1,0xff
andi a2,a2,0xff
mflo v0
addu t2,t2,a0
subu v1,v1,a2
addu v1,t2,v1
li t2,0x1
sllv t2,t2,v1
sltu v1,v0,t2
beq v1,zero,0x00022048
_nop
sw t2,0x0(a1)
li a2,0x1
li t2,0x1
lui t4,0xaaaa
or t5,s6,zero
or t1,s2,zero
or t6,zero,zero
b 0x00021c58
_ori t4,t4,0xaaab
sll v1,t2,0x1
sltiu t1,t1,0x9
li t6,0x1
bne t1,zero,0x00021ca4
_addu t2,v1,t2
or t1,a3,zero
multu t5,t4
mfhi t0
multu t1,t4
mfhi a3
srl t0,t0,0x1
sll a0,t0,0x1
addu a0,a0,t0
srl a3,a3,0x1
subu a0,t5,a0
sll v1,a3,0x1
addu a0,a0,t6
addu v1,v1,a3
subu v1,t1,v1
sltu v1,v1,a0
bne v1,zero,0x00021c40
_or t5,t0,zero
sltiu t1,t1,0x9
beq t1,zero,0x00021c54
_or t6,zero,zero
addiu a0,s2,-0x1
lui v1,0x1
sltu v1,a0,v1
beq v1,zero,0x00022024
_lui a3,0x100
li t0,0x20
li v1,0x18
sltiu a3,a0,0x100
movn v1,t0,a3
li t1,0x1
li t0,0x9
movn t0,t1,a3
or a3,t0,zero
lw t0,-0x7eb4(gp)
srlv a0,a0,a3
li t9,0x1f
li a3,0x1
addu a0,t0,a0
or t8,zero,zero
or t7,zero,zero
lbu a0,0x0(a0)
li t6,0x1
subu a0,v1,a0
li v1,0x1e
subu t9,t9,a0
subu v1,v1,a0
sra t9,t9,0x1
sra v1,v1,0x1
sllv t9,a3,t9
sllv v1,a3,v1
addu t9,t9,v1
lui v1,0xaaaa
addiu t9,t9,-0x5
ori v1,v1,0xaaab
ori t9,t9,0x1
multu t9,v1
mfhi t9
srl t9,t9,0x1
b 0x00021d58
_addiu t5,t9,0x1
rotr t6,t6,0x1f
andi v1,t6,0x1
beq t8,t9,0x00021e40
_addu t7,t7,v1
or t8,s4,zero
sll v1,t7,0x2
addu v1,s3,v1
lw v1,0x0(v1)
and v1,t6,v1
bne v1,zero,0x00021d44
_addiu s4,t8,0x1
sll v1,s4,0x1
andi a3,s4,0x1
addiu a3,a3,0x1
addu v1,v1,s4
sltu a0,v0,t2
beq a0,zero,0x00021da0
_addu v1,a3,v1
sll a0,a2,0x2
addiu a2,a2,0x1
addu a0,a1,a0
sw t2,0x0(a0)
li t2,0x1
or t4,zero,zero
or a0,s6,zero
b 0x00021dc4
_or t0,s2,zero
mul t2,t2,v1
li t4,0x1
sltu a3,a3,v1
bne a3,zero,0x00021d44
_nop
teq v1,zero
divu a0,v1
mfhi t1
mflo a0
teq v1,zero
divu t0,v1
addu t1,t1,t4
mfhi t0
mflo a3
sltu t1,t0,t1
bne t1,zero,0x00021db0
_mflo t0
b 0x00021db8
_or t4,zero,zero
or a1,a2,zero
addiu a0,a0,-0x4
lw v1,0x4(a0)
sltu v1,v1,s2
bne v1,zero,0x00021dfc
_addiu a2,a1,-0x1
teq a1,zero
divu v0,a1
lw t9,-0x7d50(gp)
addiu a0,s8,0x18
mflo v0
addiu a1,v0,0x1
jalr t9
_sll a1,a1,0x2
lw gp,0x10(s8)
b 0x00021b24
_or a1,v0,zero
addiu t0,s7,-0x5
lui v1,0xaaaa
ori t0,t0,0x1
ori v1,v1,0xaaab
multu t0,v1
li a0,0x1
sll t1,v0,0x1
srl a3,t5,0x5
mfhi t0
sllv a0,a0,t5
b 0x00021e94
_srl t0,t0,0x1
addiu a2,a2,0x1
addu t4,a1,t4
sw t2,0x0(t4)
or t2,v1,zero
rotr a0,a0,0x1f
sltu v1,t0,t5
andi t4,a0,0x1
bne v1,zero,0x00021f04
_addu a3,a3,t4
sll v1,a3,0x2
addu v1,s3,v1
lw v1,0x0(v1)
and v1,a0,v1
bne v1,zero,0x00021e80
_addiu t5,t5,0x1
sll v1,t5,0x1
andi t4,t5,0x1
addiu t4,t4,0x1
addu v1,v1,t5
addu v1,t4,v1
teq v1,zero
divu s2,v1
mfhi t4
teq v1,zero
divu s6,v1
mfhi t6
sltu t4,t4,t6
beq t4,zero,0x00021e80
_sltu t4,t1,t2
bne t4,zero,0x00021e70
_sll t4,a2,0x2
rotr a0,a0,0x1f
mul t2,t2,v1
andi t4,a0,0x1
sltu v1,t0,t5
beq v1,zero,0x00021e94
_addu a3,a3,t4
addiu v1,t3,-0x5
lui a0,0xaaaa
ori v1,v1,0x1
ori a0,a0,0xaaab
multu v1,a0
li a3,0x1
ext v0,v0,0x0,0x1f
mfhi v1
multu s5,a0
mfhi s5
srl v1,v1,0x1
addiu v1,v1,0x1
srl t0,v1,0x5
srl s5,s5,0x1
b 0x00021f6c
_sllv a3,a3,v1
sll t1,a2,0x2
addiu a2,a2,0x1
addu t1,a1,t1
sw t2,0x0(t1)
or t2,a0,zero
rotr a3,a3,0x1f
sltu a0,s5,v1
andi t1,a3,0x1
bne a0,zero,0x00021fb8
_addu t0,t0,t1
sll a0,t0,0x2
addu a0,s3,a0
lw a0,0x0(a0)
and a0,a3,a0
bne a0,zero,0x00021f58
_addiu v1,v1,0x1
sll a0,v1,0x1
andi t1,v1,0x1
addiu t1,t1,0x1
addu a0,a0,v1
sltu t3,v0,t2
bne t3,zero,0x00021f44
_addu a0,t1,a0
rotr a3,a3,0x1f
mul t2,t2,a0
andi t1,a3,0x1
sltu a0,s5,v1
beq a0,zero,0x00021f6c
_addu t0,t0,t1
beq a2,zero,0x00022050
_sll v0,a2,0x2
lw t9,-0x7dbc(gp)
addiu a2,a2,0x1
addu v0,a1,v0
or a0,s1,zero
jalr t9
_sw t2,0x0(v0)
lw a0,0x18(s8)
bne a0,zero,0x00022068
_lw gp,0x10(s8)
lw v1,0x1c(s8)
lw v0,0x0(s0)
bne v1,v0,0x00022090
_lw ra,0x44(s8)
or sp,s8,zero
lw s8,0x40(sp)
lw s7,0x3c(sp)
lw s6,0x38(sp)
lw s5,0x34(sp)
lw s4,0x30(sp)
lw s3,0x2c(sp)
lw s2,0x28(sp)
lw s1,0x24(sp)
lw s0,0x20(sp)
jr ra
_addiu sp,sp,0x48
li t0,0x10
li v1,0x8
sltu a3,a0,a3
movn v1,t0,a3
li t1,0x11
li t0,0x19
movn t0,t1,a3
b 0x00021cd8
_or a3,t0,zero
b 0x00021c28
_or a2,zero,zero
lw v0,0x8(s1)
lw a0,0x18(s8)
sw t2,0x0(v0)
li v0,0x1
beq a0,zero,0x00021fe4
_sw v0,0x4(s1)
lw t9,-0x7a28(gp)
jalr t9
_nop
b 0x00021fe4
_lw gp,0x10(s8)
jalr t9
_addiu a0,s8,0x18
lw gp,0x10(s8)
b 0x00021a7c
_or s3,v0,zero
lw t9,-0x7b70(gp)
jalr t9
_nop
(translation_unit "int FUN_000219dc(int param_1,uint param_2,uint param_3)\n\n{\n  uint *puVar1;\n  byte bVar2;\n  bool bVar3;\n  bool bVar4;\n  undefined *puVar5;\n  int iVar6;\n  uint uVar7;\n  uint *puVar8;\n  uint *puVar9;\n  undefined4 uVar10;\n  uint uVar11;\n  uint uVar12;\n  undefined1 *puVar13;\n  undefined *puVar14;\n  undefined4 *puVar15;\n  uint *puVar16;\n  int *piVar17;\n  uint uVar18;\n  undefined4 *puVar19;\n  uint *puVar20;\n  uint uVar21;\n  uint *puVar22;\n  uint uVar23;\n  int iVar24;\n  uint uVar25;\n  uint uVar26;\n  uint uVar27;\n  uint uVar28;\n  int iVar29;\n  uint *puVar30;\n  uint *puVar31;\n  int *piVar32;\n  int iVar33;\n  int *piVar34;\n  uint uVar35;\n  uint *puVar36;\n  uint uVar37;\n  uint *puVar38;\n  int iVar39;\n  uint uVar40;\n  int iVar41;\n  uint uVar42;\n  undefined *puVar43;\n  code *pcVar44;\n  undefined1 *puVar45;\n  undefined1 *puVar46;\n  undefined1 *puVar47;\n  undefined1 *puVar48;\n  undefined1 *puVar49;\n  undefined1 *puVar50;\n  code *pcVar51;\n  code *pcVar52;\n  uint uVar53;\n  uint uVar54;\n  undefined1 auStack_48 [16];\n  int local_30;\n  int local_2c;\n  \n  puVar5 = PTR___stack_chk_guard_0009d540;\n  puVar45 = auStack_48;\n  uVar37 = param_2 - 5 | 1;\n  local_30 = 0;\n  local_2c = *(int *)PTR___stack_chk_guard_0009d540;\n  uVar18 = (uVar37 / 0x60 + 1) * 4;\n  if (uVar18 < 0x7f01) {\n    iVar6 = -(uVar18 + 7 & 0xfffffff8);\n    puVar45 = auStack_48 + iVar6;\n    puVar13 = &stack0xffffffc8 + iVar6;\n  }\n  else {\n    puVar13 = (undefined1 *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&local_30);\n  }\n  iVar6 = (*(code *)PTR___gmp_primesieve_0009d144)(puVar13,param_2);\n  uVar7 = iVar6 + 1;\n  puVar8 = (uint *)(PTR___gmp_limbroots_table_0009d3d4 + 0x1c);\n  uVar18 = 8;\n  do {\n    uVar23 = uVar18;\n    uVar11 = *puVar8;\n    puVar8 = puVar8 + -1;\n    uVar18 = uVar23 - 1;\n  } while (uVar11 < param_2);\n  if (uVar23 == 0) {\n    trap(7);\n  }\n  puVar8 = (uint *)(PTR___gmp_limbroots_table_0009d3d4 + 0x1c);\n  uVar18 = 8;\n  if ((uVar7 / uVar23 + 1) * 4 < 0x7f01) {\n    do {\n      uVar23 = uVar18;\n      uVar11 = *puVar8;\n      puVar8 = puVar8 + -1;\n      uVar18 = uVar23 - 1;\n    } while (uVar11 < param_2);\n    if (uVar23 == 0) {\n      trap(7);\n    }\n    iVar6 = -((uVar7 / uVar23) * 4 + 0xb & 0xfffffff8);\n    puVar46 = puVar45 + iVar6;\n    puVar8 = (uint *)(puVar45 + iVar6 + 0x10);\n  }\n  else {\n    for (puVar14 = PTR___gmp_limbroots_table_0009d3d4 + 0x18; *(uint *)(puVar14 + 4) < param_2;\n        puVar14 = puVar14 + -4) {\n      uVar18 = uVar18 - 1;\n    }\n    if (uVar18 == 0) {\n      trap(7);\n    }\n    puVar8 = (uint *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)\n                               (&local_30,(uVar7 / uVar18 + 1) * 4);\n    puVar46 = puVar45;\n  }\n  uVar18 = param_2 - param_3;\n  if (param_2 == 0) {\n    trap(7);\n  }\n  uVar53 = 0xffffffff / param_2;\n  uVar40 = param_2 >> 1;\n  uVar11 = uVar18 - (uVar18 >> 1 & 0x55555555);\n  uVar23 = param_2 - (uVar40 & 0x55555555);\n  uVar7 = param_3 - (param_3 >> 1 & 0x55555555);\n  uVar26 = (uVar11 >> 2 & 0x33333333) + (uVar11 & 0x33333333);\n  uVar23 = (uVar23 >> 2 & 0x33333333) + (uVar23 & 0x33333333);\n  uVar11 = (uVar7 >> 2 & 0x33333333) + (uVar7 & 0x33333333);\n  uVar7 = (uVar26 >> 4) + uVar26 & 0xf0f0f0f;\n  uVar23 = (uVar23 >> 4) + uVar23 & 0xf0f0f0f;\n  uVar7 = (uVar7 >> 8) + uVar7;\n  uVar11 = (uVar11 >> 4) + uVar11 & 0xf0f0f0f;\n  uVar23 = (uVar23 >> 8) + uVar23;\n  uVar11 = (uVar11 >> 8) + uVar11;\n  uVar7 = 1 << ((uVar11 >> 0x10) + uVar11 +\n                (((uVar7 >> 0x10) + uVar7 & 0xff) - ((uVar23 >> 0x10) + uVar23 & 0xff)) & 0x1f);\n  bVar3 = uVar53 < uVar7;\n  if (bVar3) {\n    *puVar8 = uVar7;\n    uVar7 = 1;\n  }\n  uVar11 = 0;\n  uVar23 = param_2;\n  uVar26 = param_3;\n  do {\n    bVar4 = uVar23 % 3 < uVar26 % 3 + uVar11;\n    if (bVar4) {\n      uVar7 = uVar7 * 3;\n    }\n    uVar11 = (uint)bVar4;\n    bVar4 = 8 < uVar23;\n    uVar23 = uVar23 / 3;\n    uVar26 = uVar26 / 3;\n  } while (bVar4);\n  uVar11 = param_2 - 1;\n  if (uVar11 < 0x10000) {\n    iVar6 = 0x18;\n    if (uVar11 < 0x100) {\n      iVar6 = 0x20;\n    }\n    iVar24 = 9;\n    if (uVar11 < 0x100) {\n      iVar24 = 1;\n    }\n  }\n  else {\n    iVar6 = 8;\n    if (uVar11 < 0x1000000) {\n      iVar6 = 0x10;\n    }\n    iVar24 = 0x19;\n    if (uVar11 < 0x1000000) {\n      iVar24 = 0x11;\n    }\n  }\n  iVar29 = 0;\n  uVar28 = 1;\n  uVar42 = (((1 << ((int)(0x1f - (iVar6 - (uint)(byte)PTR___gmpn_clz_tab_0009d18c[uVar11 >> iVar24])\n                         ) >> 1 & 0x1fU)) +\n            (1 << ((int)(0x1e - (iVar6 - (uint)(byte)PTR___gmpn_clz_tab_0009d18c[uVar11 >> iVar24]))\n                   >> 1 & 0x1fU))) - 5U | 1) / 3;\n  uVar26 = uVar42 + 1;\n  uVar11 = (uint)bVar3;\n  uVar23 = 0;\n  do {\n    uVar35 = uVar23 + 1;\n    uVar21 = uVar11;\n    if ((uVar28 & *(uint *)(puVar13 + iVar29 * 4)) == 0) {\n      uVar12 = (uVar35 & 1) + 1 + uVar35 * 3;\n      if (uVar53 < uVar7) {\n        uVar21 = uVar11 + 1;\n        puVar8[uVar11] = uVar7;\n        uVar7 = 1;\n      }\n      uVar27 = 0;\n      uVar11 = param_3;\n      uVar25 = param_2;\n      do {\n        if (uVar12 == 0) {\n          trap(7);\n        }\n        if (uVar12 == 0) {\n          trap(7);\n        }\n        uVar54 = uVar25 / uVar12;\n        bVar3 = uVar25 % uVar12 < uVar11 % uVar12 + uVar27;\n        if (bVar3) {\n          uVar7 = uVar7 * uVar12;\n        }\n        uVar27 = (uint)bVar3;\n        uVar11 = uVar11 / uVar12;\n        uVar25 = uVar54;\n      } while (uVar12 <= uVar54);\n    }\n    uVar28 = uVar28 * 2 - ((int)uVar28 >> 0x1f);\n    bVar3 = uVar23 != uVar42;\n    iVar29 = iVar29 + (uVar28 & 1);\n    uVar11 = uVar21;\n    uVar23 = uVar35;\n  } while (bVar3);\n  uVar23 = uVar26 >> 5;\n  uVar11 = 1 << (uVar26 & 0x1f);\n  uVar28 = (uVar40 - 5 | 1) / 3;\n  do {\n    while( true ) {\n      uVar26 = uVar26 + 1;\n      uVar42 = uVar21;\n      if ((uVar11 & *(uint *)(puVar13 + uVar23 * 4)) == 0) break;\nLAB_00021e80:\n      uVar11 = uVar11 * 2 - ((int)uVar11 >> 0x1f);\n      uVar23 = uVar23 + (uVar11 & 1);\n      uVar21 = uVar42;\n      if (uVar28 < uVar26) goto LAB_00021f04;\n    }\n    uVar12 = (uVar26 & 1) + 1 + uVar26 * 3;\n    if (uVar12 == 0) {\n      trap(7);\n    }\n    if (uVar12 == 0) {\n      trap(7);\n    }\n    if (param_3 % uVar12 <= param_2 % uVar12) goto LAB_00021e80;\n    if (uVar53 << 1 < uVar7) {\n      uVar42 = uVar21 + 1;\n      puVar8[uVar21] = uVar7;\n      uVar7 = uVar12;\n      goto LAB_00021e80;\n    }\n    uVar11 = uVar11 * 2 - ((int)uVar11 >> 0x1f);\n    uVar7 = uVar7 * uVar12;\n    uVar23 = uVar23 + (uVar11 & 1);\n  } while (uVar26 <= uVar28);\nLAB_00021f04:\n  uVar18 = (uVar18 - 5 | 1) / 3 + 1;\n  uVar23 = uVar18 >> 5;\n  uVar37 = uVar37 / 3;\n  uVar11 = 1 << (uVar18 & 0x1f);\n  do {\n    while( true ) {\n      uVar18 = uVar18 + 1;\n      uVar26 = uVar42;\n      if ((uVar11 & *(uint *)(puVar13 + uVar23 * 4)) == 0) break;\nLAB_00021f58:\n      uVar11 = uVar11 * 2 - ((int)uVar11 >> 0x1f);\n      uVar23 = uVar23 + (uVar11 & 1);\n      uVar42 = uVar26;\n      if (uVar37 < uVar18) goto LAB_00021fb8;\n    }\n    uVar28 = (uVar18 & 1) + 1 + uVar18 * 3;\n    if ((uVar53 & 0x7fffffff) < uVar7) {\n      uVar26 = uVar42 + 1;\n      puVar8[uVar42] = uVar7;\n      uVar7 = uVar28;\n      goto LAB_00021f58;\n    }\n    uVar11 = uVar11 * 2 - ((int)uVar11 >> 0x1f);\n    uVar7 = uVar7 * uVar28;\n    uVar23 = uVar23 + (uVar11 & 1);\n  } while (uVar18 <= uVar37);\nLAB_00021fb8:\n  if (uVar26 == 0) {\n    **(uint **)(param_1 + 8) = uVar7;\n    *(undefined4 *)(param_1 + 4) = 1;\n    uVar18 = 0;\n    iVar6 = local_30;\n  }\n  else {\n    uVar18 = uVar26 + 1;\n    puVar8[uVar26] = uVar7;\n    (*(code *)PTR___gmpz_prodlimbs_0009d284)(param_1);\n    iVar6 = local_30;\n  }\n  local_30 = iVar6;\n  if (iVar6 != 0) {\n    (*(code *)PTR___gmp_tmp_reentrant_free_0009d618)();\n  }\n  iVar24 = *(int *)puVar5;\n  if (local_2c == iVar24) {\n    return iVar24;\n  }\n  pcVar51 = FUN_0002209c;\n  puVar14 = PTR___stack_chk_fail_0009d4d0;\n  (*(code *)PTR___stack_chk_fail_0009d4d0)();\n  puVar43 = puVar14 + 0x82fa4;\n  puVar47 = puVar46 + -0x90;\n  puVar50 = puVar46 + -0x90;\n  puVar49 = puVar46 + -0x90;\n  *(int *)(puVar46 + -0x24) = param_1;\n  *(undefined1 **)(puVar46 + -8) = auStack_48;\n  puVar19 = *(undefined4 **)(puVar14 + 0x7b4a4);\n  *(code **)(puVar46 + -4) = pcVar51;\n  *(int *)(puVar46 + -0x6c) = iVar6;\n  *(uint *)(puVar46 + -0xc) = uVar40;\n  *(uint *)(puVar46 + -0x10) = param_3;\n  *(uint *)(puVar46 + -0x14) = uVar37;\n  uVar37 = (((uint)puVar8 >> 5) + 1) * 3;\n  *(uint *)(puVar46 + -0x18) = uVar35;\n  *(undefined1 **)(puVar46 + -0x1c) = puVar13;\n  *(uint *)(puVar46 + -0x20) = param_2;\n  *(undefined **)(puVar46 + -0x28) = puVar5;\n  *(undefined **)(puVar46 + -0x78) = puVar43;\n  *(undefined4 **)(puVar46 + -0x70) = puVar19;\n  *(undefined4 *)(puVar46 + -0x30) = 0;\n  *(undefined4 *)(puVar46 + -0x2c) = *puVar19;\n  if (uVar37 < 0x2a) {\n    uVar37 = 0x27;\n    if (uVar18 < 0x28) {\n      uVar37 = uVar18;\n    }\n    uVar37 = (uVar37 + 1) * 4;\n  }\n  else {\n    uVar37 = ((int)uVar37 >> 1) + 0x13;\n    if (uVar18 < uVar37) {\n      uVar37 = uVar18;\n    }\n    uVar37 = (uVar37 + 1) * 4;\n    pcVar51 = *(code **)(puVar14 + 0x7b254);\n    if (0x7f00 < uVar37) {\n      *(uint *)(puVar46 + 8) = uVar18;\n      puVar38 = (uint *)(*pcVar51)(puVar46 + -0x30);\n      puVar43 = *(undefined **)(puVar46 + -0x78);\n      uVar18 = *(uint *)(puVar46 + 8);\n      goto LAB_0002214c;\n    }\n  }\n  iVar6 = -(uVar37 + 7 & 0xfffffff8);\n  puVar47 = puVar46 + iVar6 + -0x90;\n  puVar38 = (uint *)(puVar46 + iVar6 + -0x78);\nLAB_0002214c:\n  iVar24 = *(int *)(puVar43 + -0x7c6c);\n  puVar36 = (uint *)(puVar47 + -0x40);\n  puVar31 = (uint *)(iVar24 + 0x1c);\n  iVar6 = 8;\n  do {\n    iVar29 = iVar6;\n    puVar9 = (uint *)*puVar31;\n    puVar31 = puVar31 + -1;\n    iVar6 = iVar29 + -1;\n  } while (puVar9 < puVar8);\n  *(int *)(puVar46 + -0x68) = iVar29;\n  puVar31 = (uint *)(iVar24 + 0x1c);\n  uVar37 = 8;\n  do {\n    uVar7 = uVar37;\n    uVar11 = *puVar31;\n    puVar31 = puVar31 + -1;\n    uVar37 = uVar7 - 1;\n  } while (uVar11 < uVar18);\n  uVar10 = *(undefined4 *)(puVar43 + -0x7d3c);\n  iVar6 = 0x11;\n  *(undefined4 *)(puVar46 + -0x48) = 0;\n  *(undefined4 *)(puVar46 + -100) = uVar10;\n  iVar24 = *(int *)(puVar43 + -0x7e20);\n  *(undefined4 *)(puVar46 + -0x5c) = 0x3fffffff;\n  iVar29 = (int)puVar8 + (1 - uVar18);\n  *(uint *)(puVar46 + -0x40) = (uint)*(byte *)(iVar24 + 7);\n  *(undefined4 *)(puVar46 + -0x3c) = *(undefined4 *)(puVar43 + -0x7eb4);\n  *(uint *)(puVar46 + -0x60) = uVar18 + 1;\n  iVar24 = *(int *)(puVar46 + -0x60);\n  *puVar38 = 1;\n  *(undefined4 *)(puVar46 + -0x44) = 1;\n  *(int *)(puVar46 + -0x34) = *(int *)(puVar43 + -0x7fe4) + -0x31a4;\n  *(int *)(puVar46 + -0x38) = *(int *)(puVar43 + -0x7fd4) + 0x3630;\n  *puVar36 = 0x260eeeeb;\n  if (iVar24 - 0x11U <= uVar7) {\n    uVar7 = iVar24 - 0x11U;\n  }\n  puVar8 = (uint *)0x1;\n  iVar39 = iVar6;\n  if (uVar7 == 0) goto LAB_00022534;\nLAB_00022234:\n  puVar31 = (uint *)0x1;\n  iVar41 = *(int *)(puVar46 + -0x40);\n  *(uint **)(puVar46 + -0x4c) = puVar8;\n  *(uint **)(puVar46 + -0x50) = puVar38;\n  do {\n    iVar39 = iVar6 + uVar7;\n    uVar18 = (**(code **)(*(int *)(puVar46 + -0x34) + (uVar7 - 1) * 4))(iVar6);\n    if ((uVar18 & 0xff) == 0) {\n      uVar37 = uVar18 >> 8;\n      iVar6 = 6;\n      if ((uVar37 & 0xff) == 0) {\n        uVar37 = uVar18 >> 0x10;\n        iVar6 = 0xe;\n        if ((uVar37 & 0xff) == 0) {\n          uVar37 = uVar18 >> 0x18;\n          iVar6 = 0x1e;\n          if (uVar37 != 0) {\n            iVar6 = 0x16;\n          }\n        }\n      }\n      uVar37 = (uint)*(byte *)(*(int *)(puVar46 + -0x3c) + (-uVar37 & uVar37)) + iVar6;\n    }\n    else {\n      uVar37 = *(byte *)(*(int *)(puVar46 + -0x3c) + (-uVar18 & uVar18)) - 2;\n    }\n    iVar41 = iVar41 + *(byte *)(*(int *)(puVar46 + -0x38) + (uVar7 - 1)) + uVar37;\n    uVar18 = (**(code **)(*(int *)(puVar46 + -0x78) + -0x7f9c))\n                       (puVar36,puVar36,puVar31,uVar18 >> (uVar37 & 0x1f));\n    puVar43 = *(undefined **)(puVar46 + -0x78);\n    if ((uint)(iVar24 - iVar39) <= uVar7) {\n      uVar7 = iVar24 - iVar39;\n    }\n    puVar8 = puVar36 + (int)puVar31;\n    puVar31 = (uint *)((int)puVar31 + (uint)(uVar18 != 0));\n    *puVar8 = uVar18;\n    if (uVar7 == 0) {\n      puVar38 = *(uint **)(puVar46 + -0x50);\n      puVar8 = *(uint **)(puVar46 + -0x4c);\n      *(int *)(puVar46 + -0x40) = iVar41;\n      *(uint **)(puVar46 + -0x4c) = puVar36 + (int)((int)puVar31 + *(int *)(puVar46 + -0x5c));\n      goto LAB_00022340;\n    }\n    iVar6 = iVar39;\n  } while (puVar31 != (uint *)0x14);\n  puVar8 = *(uint **)(puVar46 + -0x4c);\n  puVar38 = *(uint **)(puVar46 + -0x50);\n  *(int *)(puVar46 + -0x40) = iVar41;\n  *(uint **)(puVar46 + -0x4c) = puVar36 + 0x13;\nLAB_00022340:\n  do {\n    iVar41 = iVar39 - *(int *)(puVar46 + -0x44);\n    iVar24 = *(int *)(puVar46 + -0x5c);\n    iVar6 = iVar41;\n    if (iVar41 != 0) {\n      *(uint *)(puVar46 + -0x44) = uVar7;\n      *(uint **)(puVar46 + -0x50) = puVar31;\n      *(uint **)(puVar46 + -0x54) = puVar36;\n      *(int *)(puVar46 + -0x58) = iVar39;\n      iVar6 = *(int *)(puVar46 + -0x48);\n      iVar39 = *(int *)(puVar46 + -0x68);\n      iVar24 = iVar29;\n      do {\n        iVar33 = iVar41;\n        if (iVar39 <= iVar41) {\n          iVar33 = iVar39;\n        }\n        iVar29 = iVar24 + iVar33;\n        uVar18 = (**(code **)(*(int *)(puVar46 + -0x34) + (iVar33 + -1) * 4))(iVar24);\n        if ((uVar18 & 0xff) == 0) {\n          uVar37 = uVar18 >> 8;\n          iVar24 = 6;\n          if ((uVar37 & 0xff) == 0) {\n            uVar37 = uVar18 >> 0x10;\n            iVar24 = 0xe;\n            if ((uVar37 & 0xff) == 0) {\n              uVar37 = uVar18 >> 0x18;\n              iVar24 = 0x16;\n              if (uVar37 == 0) {\n                iVar24 = 0x1e;\n              }\n            }\n          }\n          uVar37 = (uint)*(byte *)(*(int *)(puVar46 + -0x3c) + (-uVar37 & uVar37)) + iVar24;\n        }\n        else {\n          uVar37 = *(byte *)(*(int *)(puVar46 + -0x3c) + (-uVar18 & uVar18)) - 2;\n        }\n        iVar41 = iVar41 - iVar33;\n        iVar6 = iVar6 + *(byte *)(*(int *)(puVar46 + -0x38) + iVar33 + -1) + uVar37;\n        uVar18 = (**(code **)(*(int *)(puVar46 + -0x78) + -0x7f9c))\n                           (puVar38,puVar38,puVar8,uVar18 >> (uVar37 & 0x1f));\n        puVar43 = *(undefined **)(puVar46 + -0x78);\n        puVar31 = puVar38 + (int)puVar8;\n        puVar8 = (uint *)((int)puVar8 + (uint)(uVar18 != 0));\n        *puVar31 = uVar18;\n        iVar24 = iVar29;\n      } while (iVar41 != 0);\n      uVar7 = *(uint *)(puVar46 + -0x44);\n      puVar31 = *(uint **)(puVar46 + -0x50);\n      puVar36 = *(uint **)(puVar46 + -0x54);\n      iVar39 = *(int *)(puVar46 + -0x58);\n      *(int *)(puVar46 + -0x48) = iVar6;\n      iVar24 = *(int *)(puVar46 + -0x5c);\n    }\n    uVar37 = *puVar36;\n    pcVar51 = *(code **)(puVar43 + -0x7bc0);\n    uVar18 = (uint)*(byte *)(*(int *)(puVar46 + -100) + ((uVar37 << 0x18) >> 0x19));\n    puVar8 = (uint *)((int)puVar8 +\n                     ((puVar38[(int)((int)puVar8 + iVar24)] < **(uint **)(puVar46 + -0x4c) ^ 1) -\n                     (int)puVar31));\n    iVar24 = uVar18 * 2 - uVar18 * uVar18 * uVar37;\n    if ((int)puVar8 < (int)puVar31) {\n      puVar31 = puVar8;\n    }\n    *(uint **)(puVar47 + -0x48) = puVar31;\n    *(uint *)(puVar47 + -0x44) = iVar24 * iVar24 * uVar37 + iVar24 * -2;\n    puVar9 = puVar38;\n    puVar22 = puVar8;\n    (*pcVar51)(puVar38,puVar38,puVar8,puVar36);\n    iVar24 = *(int *)(puVar46 + -0x78);\n    if (uVar7 == 0) {\n      if (*(int *)(puVar46 + -0x48) == *(int *)(puVar46 + -0x40)) {\n        puVar8 = (uint *)((int)puVar8 - (uint)(puVar38[(int)((int)puVar8 + -1)] == 0));\n        pcVar51 = *(code **)(iVar24 + -0x7a80);\n        if ((int)puVar8 <= **(int **)(puVar46 + -0x6c)) goto LAB_00022600;\nLAB_00022734:\n        puVar9 = puVar8;\n        puVar19 = (undefined4 *)(*pcVar51)(*(undefined4 *)(puVar46 + -0x6c));\n        iVar24 = *(int *)(puVar46 + -0x78);\n      }\n      else {\n        puVar9 = puVar38;\n        puVar22 = puVar8;\n        uVar18 = (**(code **)(iVar24 + -0x7ad4))(puVar38);\n        iVar24 = *(int *)(puVar46 + -0x78);\n        puVar38[(int)puVar8] = uVar18;\n        puVar8 = (uint *)((int)puVar8 +\n                         ((uint)(uVar18 != 0) -\n                         (uint)(puVar38[(int)((int)puVar8 + ((uVar18 != 0) - 1))] == 0)));\n        pcVar51 = *(code **)(iVar24 + -0x7a80);\n        if (**(int **)(puVar46 + -0x6c) < (int)puVar8) goto LAB_00022734;\nLAB_00022600:\n        puVar19 = *(undefined4 **)(*(int *)(puVar46 + -0x6c) + 8);\n      }\n      *(uint **)(*(int *)(puVar46 + -0x6c) + 4) = puVar8;\n      if (puVar8 != (uint *)0x0) {\n        puVar13 = (undefined1 *)((int)puVar8 + -1);\n        puVar9 = (uint *)*puVar38;\n        if (puVar13 != (undefined1 *)0x0) {\n          puVar15 = puVar19;\n          puVar16 = puVar38 + 1;\n          do {\n            *puVar15 = puVar9;\n            puVar38 = puVar16 + 1;\n            puVar13 = puVar13 + -1;\n            puVar9 = (uint *)*puVar16;\n            puVar15 = puVar15 + 1;\n            puVar16 = puVar38;\n          } while (puVar13 != (undefined1 *)0x0);\n          puVar8 = (uint *)((int)puVar8 * 4);\n          puVar19 = (undefined4 *)((int)puVar19 + (int)(puVar8 + -1));\n        }\n        *puVar19 = puVar9;\n      }\n      puVar16 = *(uint **)(puVar46 + -0x30);\n      if (puVar16 != (uint *)0x0) {\n        (**(code **)(iVar24 + -0x7a28))();\n        iVar24 = *(int *)(puVar46 + -0x78);\n      }\n      if (*(int *)(puVar46 + -0x2c) == **(int **)(puVar46 + -0x70)) {\n        return **(int **)(puVar46 + -0x70);\n      }\n      pcVar51 = *(code **)(iVar24 + -0x7b70);\n      pcVar52 = __gmpz_bin_uiui;\n      (*pcVar51)();\n      pcVar44 = pcVar51 + 0x8289c;\n      *(uint **)(puVar47 + -0x78) = puVar31;\n      piVar32 = *(int **)(pcVar51 + 0x7ad9c);\n      *(code **)(puVar47 + -0xf0) = pcVar44;\n      *(int *)(puVar47 + -0x74) = iVar39;\n      *(code **)(puVar47 + -0x5c) = pcVar52;\n      *(undefined1 **)(puVar47 + -0x60) = puVar46 + -0x90;\n      *(int *)(puVar47 + -100) = iVar6;\n      *(int *)(puVar47 + -0x68) = iVar29;\n      *(uint **)(puVar47 + -0x6c) = puVar38;\n      *(uint **)(puVar47 + -0x70) = puVar36;\n      *(uint **)(puVar47 + -0x7c) = puVar8;\n      *(undefined4 *)(puVar47 + -0x80) = 0;\n      *(int *)(puVar47 + -0x84) = *piVar32;\n      puVar31 = puVar16;\n      puVar20 = puVar9;\n      if (puVar9 < puVar22) {\n        puVar16[1] = 0;\n        puVar30 = (uint *)0x0;\n      }\n      else {\n        puVar30 = puVar22;\n        if ((uint *)((int)puVar9 - (int)puVar22) <= puVar22) {\n          puVar30 = (uint *)((int)puVar9 - (int)puVar22);\n        }\n        puVar22 = puVar30;\n        puVar36 = puVar9;\n        if (puVar30 < (uint *)0x2) {\n          if (puVar30 == (uint *)0x0) {\n            puVar36 = (uint *)0x1;\n          }\n          *(uint **)puVar16[2] = puVar36;\n          puVar16[1] = 1;\n          puVar49 = puVar46 + -0x90;\n        }\n        else if (puVar9 < (uint *)0x23) {\n          puVar13 = (undefined1 *)((int)puVar30 + -2);\n          iVar6 = *(int *)(pcVar51 + 0x7aa7c);\n          puVar20 = (uint *)puVar16[2];\n          uVar18 = (int)puVar9 - (int)puVar30;\n          puVar36 = (uint *)(iVar6 + ((uint)puVar9 >> 1));\n          puVar30 = (uint *)(iVar6 + ((uint)puVar30 >> 1));\n          bVar2 = *(byte *)((int)puVar30 + -1);\n          puVar31 = (uint *)(uint)*(byte *)(iVar6 + (uVar18 >> 1) + -1);\n          *puVar20 = *(int *)((int)puVar13 * 4 + *(int *)(pcVar51 + 0x7a8c8) + 0x35b4) *\n                     *(int *)(*(int *)(pcVar51 + 0x7ad64) + (int)puVar9 * 4) *\n                     *(int *)((uVar18 - 2) * 4 + *(int *)(pcVar51 + 0x7a8c8) + 0x35b4) <<\n                     (((uint)*(byte *)((int)puVar36 + -1) - (int)(uint)bVar2) - (int)puVar31 & 0x1f)\n          ;\n          puVar16[1] = 1;\n          puVar22 = (uint *)(uint)bVar2;\n          puVar49 = puVar46 + -0x90;\n        }\n        else if (puVar30 < &DAT_00000011) {\n          FUN_000216e8();\n          pcVar44 = *(code **)(puVar47 + -0xf0);\n          puVar49 = puVar46 + -0x90;\n        }\n        else if (puVar30 < &DAT_00000021) {\n          uVar18 = (uint)puVar30 >> 1;\n          uVar37 = (int)puVar9 - uVar18;\n          FUN_000216e8();\n          iVar6 = *(int *)(puVar47 + -0xf0);\n          uVar7 = (int)puVar30 - uVar18;\n          if (uVar37 < 0x23) {\n            puVar50 = (undefined1 *)puVar16[1];\n            if ((int)puVar50 < (int)*puVar16) {\n              puVar8 = (uint *)puVar16[2];\n            }\n            else {\n              puVar8 = (uint *)(**(code **)(iVar6 + -0x7a80))(puVar16,puVar50 + 1);\n              iVar6 = *(int *)(puVar47 + -0xf0);\n            }\n            iVar29 = *(int *)(iVar6 + -0x7e20);\n            iVar24 = *(int *)(iVar6 + -0x7fd4) + 0x35b4;\n            uVar37 = (**(code **)(iVar6 + -0x7f9c))\n                               (puVar8,puVar8,puVar50,\n                                *(int *)((((int)puVar9 - (int)puVar30) - 2U) * 4 + iVar24) *\n                                *(int *)(*(int *)(iVar6 + -0x7b38) + uVar37 * 4) *\n                                *(int *)((uVar7 - 2) * 4 + iVar24) <<\n                                (((uint)*(byte *)(iVar29 + (uVar37 >> 1) + -1) -\n                                 (uint)*(byte *)(iVar29 + (uVar7 >> 1) + -1)) -\n                                 (uint)*(byte *)(iVar29 + ((uint)((int)puVar9 - (int)puVar30) >> 1)\n                                                + -1) & 0x1f));\n            iVar6 = *(int *)(puVar47 + -0xf0);\n            puVar30 = (uint *)(puVar50 + (uVar37 != 0));\n            puVar8[(int)puVar50] = uVar37;\n          }\n          else {\n            *(undefined4 *)(puVar47 + -0xe4) = 0x15;\n            *(undefined1 **)(puVar47 + -0xdc) = puVar47 + -0xd8;\n            FUN_000216e8(puVar47 + -0xe4,uVar37,uVar7);\n            (**(code **)(*(int *)(puVar47 + -0xf0) + -0x7ba8))(puVar16,puVar16,puVar47 + -0xe4);\n            iVar6 = *(int *)(puVar47 + -0xf0);\n            puVar8 = (uint *)puVar16[2];\n            puVar30 = (uint *)puVar16[1];\n          }\n          pcVar51 = *(code **)(iVar6 + -0x7bb4);\n          puVar38 = (uint *)((uint)*(byte *)((uVar7 - 8) + *(int *)(iVar6 + -0x7fd4) + 0x3550) -\n                            (uint)(uVar18 != uVar7));\n          *(undefined4 *)(puVar47 + -0xf8) =\n               *(undefined4 *)((uVar7 - 8) * 4 + *(int *)(iVar6 + -0x7fd4) + 0x355c);\n          *(uint **)(puVar47 + -0xf4) = puVar38;\n          puVar31 = puVar8;\n          puVar20 = puVar8;\n          puVar22 = puVar30;\n          (*pcVar51)();\n          pcVar44 = *(code **)(puVar47 + -0xf0);\n          if (puVar8[(int)((int)puVar30 + -1)] == 0) {\n            puVar9 = puVar8 + (int)puVar30;\n            do {\n              puVar1 = puVar9 + -2;\n              puVar30 = (uint *)((int)puVar30 + -1);\n              puVar9 = puVar9 + -1;\n            } while (*puVar1 == 0);\n          }\n          puVar16[1] = (uint)puVar30;\n          puVar49 = puVar50;\n        }\n        else if ((puVar30 < (uint *)0x3e8) || (puVar30 <= (uint *)((uint)puVar9 >> 4))) {\n          FUN_0002209c();\n          pcVar44 = *(code **)(puVar47 + -0xf0);\n          puVar49 = puVar46 + -0x90;\n        }\n        else {\n          FUN_000219dc();\n          pcVar44 = *(code **)(puVar47 + -0xf0);\n          puVar49 = puVar46 + -0x90;\n        }\n      }\n      if (*(int *)(puVar47 + -0x84) == *piVar32) {\n        return *piVar32;\n      }\n      pcVar51 = *(code **)(pcVar44 + -0x7b70);\n      uVar10 = 0x22b64;\n      (*pcVar51)();\n      pcVar44 = pcVar51 + 0x824d0;\n      puVar48 = puVar47 + -0x160;\n      *(uint **)(puVar47 + -0x118) = puVar16;\n      *(uint **)(puVar47 + -0x124) = puVar30;\n      piVar34 = *(int **)(pcVar51 + 0x7a9d0);\n      uVar18 = puVar22[1];\n      *(undefined1 **)(puVar47 + -0x110) = puVar49;\n      *(uint **)(puVar47 + -0x114) = puVar36;\n      *(int **)(puVar47 + -0x11c) = piVar32;\n      *(uint **)(puVar47 + -0x120) = puVar8;\n      *(undefined4 *)(puVar47 + -0x10c) = uVar10;\n      *(code **)(puVar47 + -0x150) = pcVar44;\n      *(undefined4 *)(puVar47 + -0x13c) = 0;\n      puVar8 = (uint *)puVar20[1];\n      *(int *)(puVar47 + -300) = *piVar34;\n      if ((int)uVar18 < 0) {\n        uVar37 = uVar18 * -4;\n        *(uint *)(puVar47 + -0x138) = -uVar18;\n        if (0x7f00 < uVar37) {\n          pcVar51 = *(code **)(pcVar51 + 0x7a780);\n          goto LAB_00022c88;\n        }\nLAB_00022be4:\n        iVar6 = -(uVar37 + 7 & 0xfffffff8);\n        puVar48 = puVar47 + iVar6 + -0x160;\n        puVar13 = puVar47 + iVar6 + -0x150;\n      }\n      else {\n        uVar37 = uVar18 * 4;\n        *(uint *)(puVar47 + -0x138) = uVar18;\n        pcVar51 = *(code **)(pcVar51 + 0x7a780);\n        if (uVar37 < 0x7f01) goto LAB_00022be4;\nLAB_00022c88:\n        *(uint **)(puVar47 + -0x144) = puVar22;\n        puVar13 = (undefined1 *)(*pcVar51)(puVar47 + -0x13c,uVar37);\n        pcVar44 = *(code **)(puVar47 + -0x150);\n        puVar22 = *(uint **)(puVar47 + -0x144);\n      }\n      pcVar51 = *(code **)(pcVar44 + -0x7a68);\n      puVar36 = (uint *)(puVar47 + -0x138);\n      *(undefined1 **)(puVar47 + -0x130) = puVar13;\n      puVar9 = puVar20;\n      (*pcVar51)(puVar31,puVar36,puVar20,puVar22);\n      iVar6 = *(int *)(puVar47 + -0x150);\n      if (((int)((uint)puVar8 ^ uVar18) < 0) || (*(int *)(puVar47 + -0x134) == 0)) {\n        piVar32 = *(int **)(puVar47 + -0x13c);\n        pcVar51 = *(code **)(iVar6 + -0x7a28);\n        if (piVar32 != (int *)0x0) goto LAB_00022cc0;\n      }\n      else {\n        puVar9 = (uint *)0x1;\n        puVar36 = puVar31;\n        (**(code **)(iVar6 + -0x7c9c))(puVar31);\n        piVar32 = *(int **)(puVar47 + -0x13c);\n        iVar6 = *(int *)(puVar47 + -0x150);\n        if (piVar32 != (int *)0x0) {\n          pcVar51 = *(code **)(iVar6 + -0x7a28);\nLAB_00022cc0:\n          (*pcVar51)();\n          iVar6 = *(int *)(puVar47 + -0x150);\n        }\n      }\n      if (*(int *)(puVar47 + -300) == *piVar34) {\n        return *piVar34;\n      }\n      pcVar51 = *(code **)(iVar6 + -0x7b70);\n      uVar10 = 0x22cdc;\n      (*pcVar51)();\n      pcVar44 = pcVar51 + 0x82360;\n      *(code **)(puVar48 + -0x28) = pcVar44;\n      *(undefined4 *)(puVar48 + -4) = uVar10;\n      *(uint **)(puVar48 + -8) = puVar38;\n      *(uint **)(puVar48 + -0xc) = puVar20;\n      *(int **)(puVar48 + -0x10) = piVar34;\n      *(uint **)(puVar48 + -0x14) = puVar31;\n      *(uint **)(puVar48 + -0x18) = puVar8;\n      *(uint *)(puVar48 + -0x1c) = (uint)puVar8 ^ uVar18;\n      if (puVar9 == (uint *)0x0) {\n        pcVar51 = *(code **)(pcVar51 + 0x7a900);\n        (*pcVar51)();\nLAB_00022e2c:\n        piVar32 = (int *)(*pcVar51)(piVar34,puVar31);\n        pcVar44 = *(code **)(puVar48 + -0x28);\n      }\n      else {\n        puVar8 = (uint *)puVar36[1];\n        if (puVar8 == (uint *)0x0) {\n          piVar32[1] = 0;\n          return 0;\n        }\n        puVar31 = puVar8;\n        if ((int)puVar8 < 0) {\n          puVar31 = (uint *)-(int)puVar8;\n        }\n        pcVar51 = *(code **)(pcVar51 + 0x7a8e0);\n        piVar34 = piVar32;\n        puVar20 = puVar9;\n        puVar38 = puVar36;\n        if (*piVar32 < (int)puVar31) goto LAB_00022e2c;\n        piVar32 = (int *)piVar32[2];\n      }\n      pcVar51 = *(code **)(pcVar44 + -0x7d98);\n      uVar18 = puVar38[2];\n      *(uint **)(puVar48 + -0x30) = puVar20;\n      iVar6 = (*pcVar51)(piVar32,0,uVar18,puVar31);\n      piVar17 = piVar32 + (int)puVar31 + -1;\n      if (iVar6 == 0) {\n        uVar18 = (uint)(*piVar17 == 0);\n        if (-1 < (int)puVar8) {\n          iVar24 = (int)puVar31 - uVar18;\n          goto LAB_00022d9c;\n        }\n      }\n      else {\n        if (-1 < (int)puVar8) {\n          do {\n            iVar24 = *piVar32;\n            *piVar32 = iVar24 + 1;\n            piVar32 = piVar32 + 1;\n          } while (iVar24 + 1 == 0);\n          iVar6 = (int)puVar20 - iVar6;\n          iVar24 = (int)puVar31 - (uint)(*piVar17 == 0);\n          goto LAB_00022d9c;\n        }\n        uVar18 = (uint)(*piVar17 == 0);\n      }\n      iVar24 = uVar18 - (int)puVar31;\nLAB_00022d9c:\n      piVar34[1] = iVar24;\n      return iVar6;\n    }\n    *(int *)(puVar46 + -0x44) = iVar39;\n    iVar6 = iVar39 + uVar7;\n    uVar18 = (**(code **)(*(int *)(puVar46 + -0x34) + (uVar7 - 1) * 4))(iVar39);\n    puVar43 = *(undefined **)(puVar46 + -0x78);\n    if ((uVar18 & 0xff) == 0) {\n      uVar37 = uVar18 >> 8;\n      iVar24 = 6;\n      if ((uVar37 & 0xff) == 0) {\n        uVar37 = uVar18 >> 0x10;\n        iVar24 = 0xe;\n        if ((uVar37 & 0xff) == 0) {\n          uVar37 = uVar18 >> 0x18;\n          iVar24 = 0x1e;\n          if (uVar37 != 0) {\n            iVar24 = 0x16;\n          }\n        }\n      }\n      uVar37 = (uint)*(byte *)(*(int *)(puVar46 + -0x3c) + (-uVar37 & uVar37)) + iVar24;\n    }\n    else {\n      uVar37 = *(byte *)(*(int *)(puVar46 + -0x3c) + (-uVar18 & uVar18)) - 2;\n    }\n    iVar39 = *(int *)(puVar46 + -0x38);\n    *puVar36 = uVar18 >> (uVar37 & 0x1f);\n    iVar24 = *(int *)(puVar46 + -0x60);\n    *(uint *)(puVar46 + -0x40) =\n         *(int *)(puVar46 + -0x40) + *(byte *)(iVar39 + (uVar7 - 1)) + uVar37;\n    if ((uint)(iVar24 - iVar6) <= uVar7) {\n      uVar7 = iVar24 - iVar6;\n    }\n    iVar39 = iVar6;\n    if (uVar7 != 0) goto LAB_00022234;\nLAB_00022534:\n    puVar31 = (uint *)0x1;\n    *(uint **)(puVar46 + -0x4c) = puVar36;\n  } while( true );\n}\n\n" (function_definition "int FUN_000219dc(int param_1,uint param_2,uint param_3)\n\n{\n  uint *puVar1;\n  byte bVar2;\n  bool bVar3;\n  bool bVar4;\n  undefined *puVar5;\n  int iVar6;\n  uint uVar7;\n  uint *puVar8;\n  uint *puVar9;\n  undefined4 uVar10;\n  uint uVar11;\n  uint uVar12;\n  undefined1 *puVar13;\n  undefined *puVar14;\n  undefined4 *puVar15;\n  uint *puVar16;\n  int *piVar17;\n  uint uVar18;\n  undefined4 *puVar19;\n  uint *puVar20;\n  uint uVar21;\n  uint *puVar22;\n  uint uVar23;\n  int iVar24;\n  uint uVar25;\n  uint uVar26;\n  uint uVar27;\n  uint uVar28;\n  int iVar29;\n  uint *puVar30;\n  uint *puVar31;\n  int *piVar32;\n  int iVar33;\n  int *piVar34;\n  uint uVar35;\n  uint *puVar36;\n  uint uVar37;\n  uint *puVar38;\n  int iVar39;\n  uint uVar40;\n  int iVar41;\n  uint uVar42;\n  undefined *puVar43;\n  code *pcVar44;\n  undefined1 *puVar45;\n  undefined1 *puVar46;\n  undefined1 *puVar47;\n  undefined1 *puVar48;\n  undefined1 *puVar49;\n  undefined1 *puVar50;\n  code *pcVar51;\n  code *pcVar52;\n  uint uVar53;\n  uint uVar54;\n  undefined1 auStack_48 [16];\n  int local_30;\n  int local_2c;\n  \n  puVar5 = PTR___stack_chk_guard_0009d540;\n  puVar45 = auStack_48;\n  uVar37 = param_2 - 5 | 1;\n  local_30 = 0;\n  local_2c = *(int *)PTR___stack_chk_guard_0009d540;\n  uVar18 = (uVar37 / 0x60 + 1) * 4;\n  if (uVar18 < 0x7f01) {\n    iVar6 = -(uVar18 + 7 & 0xfffffff8);\n    puVar45 = auStack_48 + iVar6;\n    puVar13 = &stack0xffffffc8 + iVar6;\n  }\n  else {\n    puVar13 = (undefined1 *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&local_30);\n  }\n  iVar6 = (*(code *)PTR___gmp_primesieve_0009d144)(puVar13,param_2);\n  uVar7 = iVar6 + 1;\n  puVar8 = (uint *)(PTR___gmp_limbroots_table_0009d3d4 + 0x1c);\n  uVar18 = 8;\n  do {\n    uVar23 = uVar18;\n    uVar11 = *puVar8;\n    puVar8 = puVar8 + -1;\n    uVar18 = uVar23 - 1;\n  } while (uVar11 < param_2);\n  if (uVar23 == 0) {\n    trap(7);\n  }\n  puVar8 = (uint *)(PTR___gmp_limbroots_table_0009d3d4 + 0x1c);\n  uVar18 = 8;\n  if ((uVar7 / uVar23 + 1) * 4 < 0x7f01) {\n    do {\n      uVar23 = uVar18;\n      uVar11 = *puVar8;\n      puVar8 = puVar8 + -1;\n      uVar18 = uVar23 - 1;\n    } while (uVar11 < param_2);\n    if (uVar23 == 0) {\n      trap(7);\n    }\n    iVar6 = -((uVar7 / uVar23) * 4 + 0xb & 0xfffffff8);\n    puVar46 = puVar45 + iVar6;\n    puVar8 = (uint *)(puVar45 + iVar6 + 0x10);\n  }\n  else {\n    for (puVar14 = PTR___gmp_limbroots_table_0009d3d4 + 0x18; *(uint *)(puVar14 + 4) < param_2;\n        puVar14 = puVar14 + -4) {\n      uVar18 = uVar18 - 1;\n    }\n    if (uVar18 == 0) {\n      trap(7);\n    }\n    puVar8 = (uint *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)\n                               (&local_30,(uVar7 / uVar18 + 1) * 4);\n    puVar46 = puVar45;\n  }\n  uVar18 = param_2 - param_3;\n  if (param_2 == 0) {\n    trap(7);\n  }\n  uVar53 = 0xffffffff / param_2;\n  uVar40 = param_2 >> 1;\n  uVar11 = uVar18 - (uVar18 >> 1 & 0x55555555);\n  uVar23 = param_2 - (uVar40 & 0x55555555);\n  uVar7 = param_3 - (param_3 >> 1 & 0x55555555);\n  uVar26 = (uVar11 >> 2 & 0x33333333) + (uVar11 & 0x33333333);\n  uVar23 = (uVar23 >> 2 & 0x33333333) + (uVar23 & 0x33333333);\n  uVar11 = (uVar7 >> 2 & 0x33333333) + (uVar7 & 0x33333333);\n  uVar7 = (uVar26 >> 4) + uVar26 & 0xf0f0f0f;\n  uVar23 = (uVar23 >> 4) + uVar23 & 0xf0f0f0f;\n  uVar7 = (uVar7 >> 8) + uVar7;\n  uVar11 = (uVar11 >> 4) + uVar11 & 0xf0f0f0f;\n  uVar23 = (uVar23 >> 8) + uVar23;\n  uVar11 = (uVar11 >> 8) + uVar11;\n  uVar7 = 1 << ((uVar11 >> 0x10) + uVar11 +\n                (((uVar7 >> 0x10) + uVar7 & 0xff) - ((uVar23 >> 0x10) + uVar23 & 0xff)) & 0x1f);\n  bVar3 = uVar53 < uVar7;\n  if (bVar3) {\n    *puVar8 = uVar7;\n    uVar7 = 1;\n  }\n  uVar11 = 0;\n  uVar23 = param_2;\n  uVar26 = param_3;\n  do {\n    bVar4 = uVar23 % 3 < uVar26 % 3 + uVar11;\n    if (bVar4) {\n      uVar7 = uVar7 * 3;\n    }\n    uVar11 = (uint)bVar4;\n    bVar4 = 8 < uVar23;\n    uVar23 = uVar23 / 3;\n    uVar26 = uVar26 / 3;\n  } while (bVar4);\n  uVar11 = param_2 - 1;\n  if (uVar11 < 0x10000) {\n    iVar6 = 0x18;\n    if (uVar11 < 0x100) {\n      iVar6 = 0x20;\n    }\n    iVar24 = 9;\n    if (uVar11 < 0x100) {\n      iVar24 = 1;\n    }\n  }\n  else {\n    iVar6 = 8;\n    if (uVar11 < 0x1000000) {\n      iVar6 = 0x10;\n    }\n    iVar24 = 0x19;\n    if (uVar11 < 0x1000000) {\n      iVar24 = 0x11;\n    }\n  }\n  iVar29 = 0;\n  uVar28 = 1;\n  uVar42 = (((1 << ((int)(0x1f - (iVar6 - (uint)(byte)PTR___gmpn_clz_tab_0009d18c[uVar11 >> iVar24])\n                         ) >> 1 & 0x1fU)) +\n            (1 << ((int)(0x1e - (iVar6 - (uint)(byte)PTR___gmpn_clz_tab_0009d18c[uVar11 >> iVar24]))\n                   >> 1 & 0x1fU))) - 5U | 1) / 3;\n  uVar26 = uVar42 + 1;\n  uVar11 = (uint)bVar3;\n  uVar23 = 0;\n  do {\n    uVar35 = uVar23 + 1;\n    uVar21 = uVar11;\n    if ((uVar28 & *(uint *)(puVar13 + iVar29 * 4)) == 0) {\n      uVar12 = (uVar35 & 1) + 1 + uVar35 * 3;\n      if (uVar53 < uVar7) {\n        uVar21 = uVar11 + 1;\n        puVar8[uVar11] = uVar7;\n        uVar7 = 1;\n      }\n      uVar27 = 0;\n      uVar11 = param_3;\n      uVar25 = param_2;\n      do {\n        if (uVar12 == 0) {\n          trap(7);\n        }\n        if (uVar12 == 0) {\n          trap(7);\n        }\n        uVar54 = uVar25 / uVar12;\n        bVar3 = uVar25 % uVar12 < uVar11 % uVar12 + uVar27;\n        if (bVar3) {\n          uVar7 = uVar7 * uVar12;\n        }\n        uVar27 = (uint)bVar3;\n        uVar11 = uVar11 / uVar12;\n        uVar25 = uVar54;\n      } while (uVar12 <= uVar54);\n    }\n    uVar28 = uVar28 * 2 - ((int)uVar28 >> 0x1f);\n    bVar3 = uVar23 != uVar42;\n    iVar29 = iVar29 + (uVar28 & 1);\n    uVar11 = uVar21;\n    uVar23 = uVar35;\n  } while (bVar3);\n  uVar23 = uVar26 >> 5;\n  uVar11 = 1 << (uVar26 & 0x1f);\n  uVar28 = (uVar40 - 5 | 1) / 3;\n  do {\n    while( true ) {\n      uVar26 = uVar26 + 1;\n      uVar42 = uVar21;\n      if ((uVar11 & *(uint *)(puVar13 + uVar23 * 4)) == 0) break;\nLAB_00021e80:\n      uVar11 = uVar11 * 2 - ((int)uVar11 >> 0x1f);\n      uVar23 = uVar23 + (uVar11 & 1);\n      uVar21 = uVar42;\n      if (uVar28 < uVar26) goto LAB_00021f04;\n    }\n    uVar12 = (uVar26 & 1) + 1 + uVar26 * 3;\n    if (uVar12 == 0) {\n      trap(7);\n    }\n    if (uVar12 == 0) {\n      trap(7);\n    }\n    if (param_3 % uVar12 <= param_2 % uVar12) goto LAB_00021e80;\n    if (uVar53 << 1 < uVar7) {\n      uVar42 = uVar21 + 1;\n      puVar8[uVar21] = uVar7;\n      uVar7 = uVar12;\n      goto LAB_00021e80;\n    }\n    uVar11 = uVar11 * 2 - ((int)uVar11 >> 0x1f);\n    uVar7 = uVar7 * uVar12;\n    uVar23 = uVar23 + (uVar11 & 1);\n  } while (uVar26 <= uVar28);\nLAB_00021f04:\n  uVar18 = (uVar18 - 5 | 1) / 3 + 1;\n  uVar23 = uVar18 >> 5;\n  uVar37 = uVar37 / 3;\n  uVar11 = 1 << (uVar18 & 0x1f);\n  do {\n    while( true ) {\n      uVar18 = uVar18 + 1;\n      uVar26 = uVar42;\n      if ((uVar11 & *(uint *)(puVar13 + uVar23 * 4)) == 0) break;\nLAB_00021f58:\n      uVar11 = uVar11 * 2 - ((int)uVar11 >> 0x1f);\n      uVar23 = uVar23 + (uVar11 & 1);\n      uVar42 = uVar26;\n      if (uVar37 < uVar18) goto LAB_00021fb8;\n    }\n    uVar28 = (uVar18 & 1) + 1 + uVar18 * 3;\n    if ((uVar53 & 0x7fffffff) < uVar7) {\n      uVar26 = uVar42 + 1;\n      puVar8[uVar42] = uVar7;\n      uVar7 = uVar28;\n      goto LAB_00021f58;\n    }\n    uVar11 = uVar11 * 2 - ((int)uVar11 >> 0x1f);\n    uVar7 = uVar7 * uVar28;\n    uVar23 = uVar23 + (uVar11 & 1);\n  } while (uVar18 <= uVar37);\nLAB_00021fb8:\n  if (uVar26 == 0) {\n    **(uint **)(param_1 + 8) = uVar7;\n    *(undefined4 *)(param_1 + 4) = 1;\n    uVar18 = 0;\n    iVar6 = local_30;\n  }\n  else {\n    uVar18 = uVar26 + 1;\n    puVar8[uVar26] = uVar7;\n    (*(code *)PTR___gmpz_prodlimbs_0009d284)(param_1);\n    iVar6 = local_30;\n  }\n  local_30 = iVar6;\n  if (iVar6 != 0) {\n    (*(code *)PTR___gmp_tmp_reentrant_free_0009d618)();\n  }\n  iVar24 = *(int *)puVar5;\n  if (local_2c == iVar24) {\n    return iVar24;\n  }\n  pcVar51 = FUN_0002209c;\n  puVar14 = PTR___stack_chk_fail_0009d4d0;\n  (*(code *)PTR___stack_chk_fail_0009d4d0)();\n  puVar43 = puVar14 + 0x82fa4;\n  puVar47 = puVar46 + -0x90;\n  puVar50 = puVar46 + -0x90;\n  puVar49 = puVar46 + -0x90;\n  *(int *)(puVar46 + -0x24) = param_1;\n  *(undefined1 **)(puVar46 + -8) = auStack_48;\n  puVar19 = *(undefined4 **)(puVar14 + 0x7b4a4);\n  *(code **)(puVar46 + -4) = pcVar51;\n  *(int *)(puVar46 + -0x6c) = iVar6;\n  *(uint *)(puVar46 + -0xc) = uVar40;\n  *(uint *)(puVar46 + -0x10) = param_3;\n  *(uint *)(puVar46 + -0x14) = uVar37;\n  uVar37 = (((uint)puVar8 >> 5) + 1) * 3;\n  *(uint *)(puVar46 + -0x18) = uVar35;\n  *(undefined1 **)(puVar46 + -0x1c) = puVar13;\n  *(uint *)(puVar46 + -0x20) = param_2;\n  *(undefined **)(puVar46 + -0x28) = puVar5;\n  *(undefined **)(puVar46 + -0x78) = puVar43;\n  *(undefined4 **)(puVar46 + -0x70) = puVar19;\n  *(undefined4 *)(puVar46 + -0x30) = 0;\n  *(undefined4 *)(puVar46 + -0x2c) = *puVar19;\n  if (uVar37 < 0x2a) {\n    uVar37 = 0x27;\n    if (uVar18 < 0x28) {\n      uVar37 = uVar18;\n    }\n    uVar37 = (uVar37 + 1) * 4;\n  }\n  else {\n    uVar37 = ((int)uVar37 >> 1) + 0x13;\n    if (uVar18 < uVar37) {\n      uVar37 = uVar18;\n    }\n    uVar37 = (uVar37 + 1) * 4;\n    pcVar51 = *(code **)(puVar14 + 0x7b254);\n    if (0x7f00 < uVar37) {\n      *(uint *)(puVar46 + 8) = uVar18;\n      puVar38 = (uint *)(*pcVar51)(puVar46 + -0x30);\n      puVar43 = *(undefined **)(puVar46 + -0x78);\n      uVar18 = *(uint *)(puVar46 + 8);\n      goto LAB_0002214c;\n    }\n  }\n  iVar6 = -(uVar37 + 7 & 0xfffffff8);\n  puVar47 = puVar46 + iVar6 + -0x90;\n  puVar38 = (uint *)(puVar46 + iVar6 + -0x78);\nLAB_0002214c:\n  iVar24 = *(int *)(puVar43 + -0x7c6c);\n  puVar36 = (uint *)(puVar47 + -0x40);\n  puVar31 = (uint *)(iVar24 + 0x1c);\n  iVar6 = 8;\n  do {\n    iVar29 = iVar6;\n    puVar9 = (uint *)*puVar31;\n    puVar31 = puVar31 + -1;\n    iVar6 = iVar29 + -1;\n  } while (puVar9 < puVar8);\n  *(int *)(puVar46 + -0x68) = iVar29;\n  puVar31 = (uint *)(iVar24 + 0x1c);\n  uVar37 = 8;\n  do {\n    uVar7 = uVar37;\n    uVar11 = *puVar31;\n    puVar31 = puVar31 + -1;\n    uVar37 = uVar7 - 1;\n  } while (uVar11 < uVar18);\n  uVar10 = *(undefined4 *)(puVar43 + -0x7d3c);\n  iVar6 = 0x11;\n  *(undefined4 *)(puVar46 + -0x48) = 0;\n  *(undefined4 *)(puVar46 + -100) = uVar10;\n  iVar24 = *(int *)(puVar43 + -0x7e20);\n  *(undefined4 *)(puVar46 + -0x5c) = 0x3fffffff;\n  iVar29 = (int)puVar8 + (1 - uVar18);\n  *(uint *)(puVar46 + -0x40) = (uint)*(byte *)(iVar24 + 7);\n  *(undefined4 *)(puVar46 + -0x3c) = *(undefined4 *)(puVar43 + -0x7eb4);\n  *(uint *)(puVar46 + -0x60) = uVar18 + 1;\n  iVar24 = *(int *)(puVar46 + -0x60);\n  *puVar38 = 1;\n  *(undefined4 *)(puVar46 + -0x44) = 1;\n  *(int *)(puVar46 + -0x34) = *(int *)(puVar43 + -0x7fe4) + -0x31a4;\n  *(int *)(puVar46 + -0x38) = *(int *)(puVar43 + -0x7fd4) + 0x3630;\n  *puVar36 = 0x260eeeeb;\n  if (iVar24 - 0x11U <= uVar7) {\n    uVar7 = iVar24 - 0x11U;\n  }\n  puVar8 = (uint *)0x1;\n  iVar39 = iVar6;\n  if (uVar7 == 0) goto LAB_00022534;\nLAB_00022234:\n  puVar31 = (uint *)0x1;\n  iVar41 = *(int *)(puVar46 + -0x40);\n  *(uint **)(puVar46 + -0x4c) = puVar8;\n  *(uint **)(puVar46 + -0x50) = puVar38;\n  do {\n    iVar39 = iVar6 + uVar7;\n    uVar18 = (**(code **)(*(int *)(puVar46 + -0x34) + (uVar7 - 1) * 4))(iVar6);\n    if ((uVar18 & 0xff) == 0) {\n      uVar37 = uVar18 >> 8;\n      iVar6 = 6;\n      if ((uVar37 & 0xff) == 0) {\n        uVar37 = uVar18 >> 0x10;\n        iVar6 = 0xe;\n        if ((uVar37 & 0xff) == 0) {\n          uVar37 = uVar18 >> 0x18;\n          iVar6 = 0x1e;\n          if (uVar37 != 0) {\n            iVar6 = 0x16;\n          }\n        }\n      }\n      uVar37 = (uint)*(byte *)(*(int *)(puVar46 + -0x3c) + (-uVar37 & uVar37)) + iVar6;\n    }\n    else {\n      uVar37 = *(byte *)(*(int *)(puVar46 + -0x3c) + (-uVar18 & uVar18)) - 2;\n    }\n    iVar41 = iVar41 + *(byte *)(*(int *)(puVar46 + -0x38) + (uVar7 - 1)) + uVar37;\n    uVar18 = (**(code **)(*(int *)(puVar46 + -0x78) + -0x7f9c))\n                       (puVar36,puVar36,puVar31,uVar18 >> (uVar37 & 0x1f));\n    puVar43 = *(undefined **)(puVar46 + -0x78);\n    if ((uint)(iVar24 - iVar39) <= uVar7) {\n      uVar7 = iVar24 - iVar39;\n    }\n    puVar8 = puVar36 + (int)puVar31;\n    puVar31 = (uint *)((int)puVar31 + (uint)(uVar18 != 0));\n    *puVar8 = uVar18;\n    if (uVar7 == 0) {\n      puVar38 = *(uint **)(puVar46 + -0x50);\n      puVar8 = *(uint **)(puVar46 + -0x4c);\n      *(int *)(puVar46 + -0x40) = iVar41;\n      *(uint **)(puVar46 + -0x4c) = puVar36 + (int)((int)puVar31 + *(int *)(puVar46 + -0x5c));\n      goto LAB_00022340;\n    }\n    iVar6 = iVar39;\n  } while (puVar31 != (uint *)0x14);\n  puVar8 = *(uint **)(puVar46 + -0x4c);\n  puVar38 = *(uint **)(puVar46 + -0x50);\n  *(int *)(puVar46 + -0x40) = iVar41;\n  *(uint **)(puVar46 + -0x4c) = puVar36 + 0x13;\nLAB_00022340:\n  do {\n    iVar41 = iVar39 - *(int *)(puVar46 + -0x44);\n    iVar24 = *(int *)(puVar46 + -0x5c);\n    iVar6 = iVar41;\n    if (iVar41 != 0) {\n      *(uint *)(puVar46 + -0x44) = uVar7;\n      *(uint **)(puVar46 + -0x50) = puVar31;\n      *(uint **)(puVar46 + -0x54) = puVar36;\n      *(int *)(puVar46 + -0x58) = iVar39;\n      iVar6 = *(int *)(puVar46 + -0x48);\n      iVar39 = *(int *)(puVar46 + -0x68);\n      iVar24 = iVar29;\n      do {\n        iVar33 = iVar41;\n        if (iVar39 <= iVar41) {\n          iVar33 = iVar39;\n        }\n        iVar29 = iVar24 + iVar33;\n        uVar18 = (**(code **)(*(int *)(puVar46 + -0x34) + (iVar33 + -1) * 4))(iVar24);\n        if ((uVar18 & 0xff) == 0) {\n          uVar37 = uVar18 >> 8;\n          iVar24 = 6;\n          if ((uVar37 & 0xff) == 0) {\n            uVar37 = uVar18 >> 0x10;\n            iVar24 = 0xe;\n            if ((uVar37 & 0xff) == 0) {\n              uVar37 = uVar18 >> 0x18;\n              iVar24 = 0x16;\n              if (uVar37 == 0) {\n                iVar24 = 0x1e;\n              }\n            }\n          }\n          uVar37 = (uint)*(byte *)(*(int *)(puVar46 + -0x3c) + (-uVar37 & uVar37)) + iVar24;\n        }\n        else {\n          uVar37 = *(byte *)(*(int *)(puVar46 + -0x3c) + (-uVar18 & uVar18)) - 2;\n        }\n        iVar41 = iVar41 - iVar33;\n        iVar6 = iVar6 + *(byte *)(*(int *)(puVar46 + -0x38) + iVar33 + -1) + uVar37;\n        uVar18 = (**(code **)(*(int *)(puVar46 + -0x78) + -0x7f9c))\n                           (puVar38,puVar38,puVar8,uVar18 >> (uVar37 & 0x1f));\n        puVar43 = *(undefined **)(puVar46 + -0x78);\n        puVar31 = puVar38 + (int)puVar8;\n        puVar8 = (uint *)((int)puVar8 + (uint)(uVar18 != 0));\n        *puVar31 = uVar18;\n        iVar24 = iVar29;\n      } while (iVar41 != 0);\n      uVar7 = *(uint *)(puVar46 + -0x44);\n      puVar31 = *(uint **)(puVar46 + -0x50);\n      puVar36 = *(uint **)(puVar46 + -0x54);\n      iVar39 = *(int *)(puVar46 + -0x58);\n      *(int *)(puVar46 + -0x48) = iVar6;\n      iVar24 = *(int *)(puVar46 + -0x5c);\n    }\n    uVar37 = *puVar36;\n    pcVar51 = *(code **)(puVar43 + -0x7bc0);\n    uVar18 = (uint)*(byte *)(*(int *)(puVar46 + -100) + ((uVar37 << 0x18) >> 0x19));\n    puVar8 = (uint *)((int)puVar8 +\n                     ((puVar38[(int)((int)puVar8 + iVar24)] < **(uint **)(puVar46 + -0x4c) ^ 1) -\n                     (int)puVar31));\n    iVar24 = uVar18 * 2 - uVar18 * uVar18 * uVar37;\n    if ((int)puVar8 < (int)puVar31) {\n      puVar31 = puVar8;\n    }\n    *(uint **)(puVar47 + -0x48) = puVar31;\n    *(uint *)(puVar47 + -0x44) = iVar24 * iVar24 * uVar37 + iVar24 * -2;\n    puVar9 = puVar38;\n    puVar22 = puVar8;\n    (*pcVar51)(puVar38,puVar38,puVar8,puVar36);\n    iVar24 = *(int *)(puVar46 + -0x78);\n    if (uVar7 == 0) {\n      if (*(int *)(puVar46 + -0x48) == *(int *)(puVar46 + -0x40)) {\n        puVar8 = (uint *)((int)puVar8 - (uint)(puVar38[(int)((int)puVar8 + -1)] == 0));\n        pcVar51 = *(code **)(iVar24 + -0x7a80);\n        if ((int)puVar8 <= **(int **)(puVar46 + -0x6c)) goto LAB_00022600;\nLAB_00022734:\n        puVar9 = puVar8;\n        puVar19 = (undefined4 *)(*pcVar51)(*(undefined4 *)(puVar46 + -0x6c));\n        iVar24 = *(int *)(puVar46 + -0x78);\n      }\n      else {\n        puVar9 = puVar38;\n        puVar22 = puVar8;\n        uVar18 = (**(code **)(iVar24 + -0x7ad4))(puVar38);\n        iVar24 = *(int *)(puVar46 + -0x78);\n        puVar38[(int)puVar8] = uVar18;\n        puVar8 = (uint *)((int)puVar8 +\n                         ((uint)(uVar18 != 0) -\n                         (uint)(puVar38[(int)((int)puVar8 + ((uVar18 != 0) - 1))] == 0)));\n        pcVar51 = *(code **)(iVar24 + -0x7a80);\n        if (**(int **)(puVar46 + -0x6c) < (int)puVar8) goto LAB_00022734;\nLAB_00022600:\n        puVar19 = *(undefined4 **)(*(int *)(puVar46 + -0x6c) + 8);\n      }\n      *(uint **)(*(int *)(puVar46 + -0x6c) + 4) = puVar8;\n      if (puVar8 != (uint *)0x0) {\n        puVar13 = (undefined1 *)((int)puVar8 + -1);\n        puVar9 = (uint *)*puVar38;\n        if (puVar13 != (undefined1 *)0x0) {\n          puVar15 = puVar19;\n          puVar16 = puVar38 + 1;\n          do {\n            *puVar15 = puVar9;\n            puVar38 = puVar16 + 1;\n            puVar13 = puVar13 + -1;\n            puVar9 = (uint *)*puVar16;\n            puVar15 = puVar15 + 1;\n            puVar16 = puVar38;\n          } while (puVar13 != (undefined1 *)0x0);\n          puVar8 = (uint *)((int)puVar8 * 4);\n          puVar19 = (undefined4 *)((int)puVar19 + (int)(puVar8 + -1));\n        }\n        *puVar19 = puVar9;\n      }\n      puVar16 = *(uint **)(puVar46 + -0x30);\n      if (puVar16 != (uint *)0x0) {\n        (**(code **)(iVar24 + -0x7a28))();\n        iVar24 = *(int *)(puVar46 + -0x78);\n      }\n      if (*(int *)(puVar46 + -0x2c) == **(int **)(puVar46 + -0x70)) {\n        return **(int **)(puVar46 + -0x70);\n      }\n      pcVar51 = *(code **)(iVar24 + -0x7b70);\n      pcVar52 = __gmpz_bin_uiui;\n      (*pcVar51)();\n      pcVar44 = pcVar51 + 0x8289c;\n      *(uint **)(puVar47 + -0x78) = puVar31;\n      piVar32 = *(int **)(pcVar51 + 0x7ad9c);\n      *(code **)(puVar47 + -0xf0) = pcVar44;\n      *(int *)(puVar47 + -0x74) = iVar39;\n      *(code **)(puVar47 + -0x5c) = pcVar52;\n      *(undefined1 **)(puVar47 + -0x60) = puVar46 + -0x90;\n      *(int *)(puVar47 + -100) = iVar6;\n      *(int *)(puVar47 + -0x68) = iVar29;\n      *(uint **)(puVar47 + -0x6c) = puVar38;\n      *(uint **)(puVar47 + -0x70) = puVar36;\n      *(uint **)(puVar47 + -0x7c) = puVar8;\n      *(undefined4 *)(puVar47 + -0x80) = 0;\n      *(int *)(puVar47 + -0x84) = *piVar32;\n      puVar31 = puVar16;\n      puVar20 = puVar9;\n      if (puVar9 < puVar22) {\n        puVar16[1] = 0;\n        puVar30 = (uint *)0x0;\n      }\n      else {\n        puVar30 = puVar22;\n        if ((uint *)((int)puVar9 - (int)puVar22) <= puVar22) {\n          puVar30 = (uint *)((int)puVar9 - (int)puVar22);\n        }\n        puVar22 = puVar30;\n        puVar36 = puVar9;\n        if (puVar30 < (uint *)0x2) {\n          if (puVar30 == (uint *)0x0) {\n            puVar36 = (uint *)0x1;\n          }\n          *(uint **)puVar16[2] = puVar36;\n          puVar16[1] = 1;\n          puVar49 = puVar46 + -0x90;\n        }\n        else if (puVar9 < (uint *)0x23) {\n          puVar13 = (undefined1 *)((int)puVar30 + -2);\n          iVar6 = *(int *)(pcVar51 + 0x7aa7c);\n          puVar20 = (uint *)puVar16[2];\n          uVar18 = (int)puVar9 - (int)puVar30;\n          puVar36 = (uint *)(iVar6 + ((uint)puVar9 >> 1));\n          puVar30 = (uint *)(iVar6 + ((uint)puVar30 >> 1));\n          bVar2 = *(byte *)((int)puVar30 + -1);\n          puVar31 = (uint *)(uint)*(byte *)(iVar6 + (uVar18 >> 1) + -1);\n          *puVar20 = *(int *)((int)puVar13 * 4 + *(int *)(pcVar51 + 0x7a8c8) + 0x35b4) *\n                     *(int *)(*(int *)(pcVar51 + 0x7ad64) + (int)puVar9 * 4) *\n                     *(int *)((uVar18 - 2) * 4 + *(int *)(pcVar51 + 0x7a8c8) + 0x35b4) <<\n                     (((uint)*(byte *)((int)puVar36 + -1) - (int)(uint)bVar2) - (int)puVar31 & 0x1f)\n          ;\n          puVar16[1] = 1;\n          puVar22 = (uint *)(uint)bVar2;\n          puVar49 = puVar46 + -0x90;\n        }\n        else if (puVar30 < &DAT_00000011) {\n          FUN_000216e8();\n          pcVar44 = *(code **)(puVar47 + -0xf0);\n          puVar49 = puVar46 + -0x90;\n        }\n        else if (puVar30 < &DAT_00000021) {\n          uVar18 = (uint)puVar30 >> 1;\n          uVar37 = (int)puVar9 - uVar18;\n          FUN_000216e8();\n          iVar6 = *(int *)(puVar47 + -0xf0);\n          uVar7 = (int)puVar30 - uVar18;\n          if (uVar37 < 0x23) {\n            puVar50 = (undefined1 *)puVar16[1];\n            if ((int)puVar50 < (int)*puVar16) {\n              puVar8 = (uint *)puVar16[2];\n            }\n            else {\n              puVar8 = (uint *)(**(code **)(iVar6 + -0x7a80))(puVar16,puVar50 + 1);\n              iVar6 = *(int *)(puVar47 + -0xf0);\n            }\n            iVar29 = *(int *)(iVar6 + -0x7e20);\n            iVar24 = *(int *)(iVar6 + -0x7fd4) + 0x35b4;\n            uVar37 = (**(code **)(iVar6 + -0x7f9c))\n                               (puVar8,puVar8,puVar50,\n                                *(int *)((((int)puVar9 - (int)puVar30) - 2U) * 4 + iVar24) *\n                                *(int *)(*(int *)(iVar6 + -0x7b38) + uVar37 * 4) *\n                                *(int *)((uVar7 - 2) * 4 + iVar24) <<\n                                (((uint)*(byte *)(iVar29 + (uVar37 >> 1) + -1) -\n                                 (uint)*(byte *)(iVar29 + (uVar7 >> 1) + -1)) -\n                                 (uint)*(byte *)(iVar29 + ((uint)((int)puVar9 - (int)puVar30) >> 1)\n                                                + -1) & 0x1f));\n            iVar6 = *(int *)(puVar47 + -0xf0);\n            puVar30 = (uint *)(puVar50 + (uVar37 != 0));\n            puVar8[(int)puVar50] = uVar37;\n          }\n          else {\n            *(undefined4 *)(puVar47 + -0xe4) = 0x15;\n            *(undefined1 **)(puVar47 + -0xdc) = puVar47 + -0xd8;\n            FUN_000216e8(puVar47 + -0xe4,uVar37,uVar7);\n            (**(code **)(*(int *)(puVar47 + -0xf0) + -0x7ba8))(puVar16,puVar16,puVar47 + -0xe4);\n            iVar6 = *(int *)(puVar47 + -0xf0);\n            puVar8 = (uint *)puVar16[2];\n            puVar30 = (uint *)puVar16[1];\n          }\n          pcVar51 = *(code **)(iVar6 + -0x7bb4);\n          puVar38 = (uint *)((uint)*(byte *)((uVar7 - 8) + *(int *)(iVar6 + -0x7fd4) + 0x3550) -\n                            (uint)(uVar18 != uVar7));\n          *(undefined4 *)(puVar47 + -0xf8) =\n               *(undefined4 *)((uVar7 - 8) * 4 + *(int *)(iVar6 + -0x7fd4) + 0x355c);\n          *(uint **)(puVar47 + -0xf4) = puVar38;\n          puVar31 = puVar8;\n          puVar20 = puVar8;\n          puVar22 = puVar30;\n          (*pcVar51)();\n          pcVar44 = *(code **)(puVar47 + -0xf0);\n          if (puVar8[(int)((int)puVar30 + -1)] == 0) {\n            puVar9 = puVar8 + (int)puVar30;\n            do {\n              puVar1 = puVar9 + -2;\n              puVar30 = (uint *)((int)puVar30 + -1);\n              puVar9 = puVar9 + -1;\n            } while (*puVar1 == 0);\n          }\n          puVar16[1] = (uint)puVar30;\n          puVar49 = puVar50;\n        }\n        else if ((puVar30 < (uint *)0x3e8) || (puVar30 <= (uint *)((uint)puVar9 >> 4))) {\n          FUN_0002209c();\n          pcVar44 = *(code **)(puVar47 + -0xf0);\n          puVar49 = puVar46 + -0x90;\n        }\n        else {\n          FUN_000219dc();\n          pcVar44 = *(code **)(puVar47 + -0xf0);\n          puVar49 = puVar46 + -0x90;\n        }\n      }\n      if (*(int *)(puVar47 + -0x84) == *piVar32) {\n        return *piVar32;\n      }\n      pcVar51 = *(code **)(pcVar44 + -0x7b70);\n      uVar10 = 0x22b64;\n      (*pcVar51)();\n      pcVar44 = pcVar51 + 0x824d0;\n      puVar48 = puVar47 + -0x160;\n      *(uint **)(puVar47 + -0x118) = puVar16;\n      *(uint **)(puVar47 + -0x124) = puVar30;\n      piVar34 = *(int **)(pcVar51 + 0x7a9d0);\n      uVar18 = puVar22[1];\n      *(undefined1 **)(puVar47 + -0x110) = puVar49;\n      *(uint **)(puVar47 + -0x114) = puVar36;\n      *(int **)(puVar47 + -0x11c) = piVar32;\n      *(uint **)(puVar47 + -0x120) = puVar8;\n      *(undefined4 *)(puVar47 + -0x10c) = uVar10;\n      *(code **)(puVar47 + -0x150) = pcVar44;\n      *(undefined4 *)(puVar47 + -0x13c) = 0;\n      puVar8 = (uint *)puVar20[1];\n      *(int *)(puVar47 + -300) = *piVar34;\n      if ((int)uVar18 < 0) {\n        uVar37 = uVar18 * -4;\n        *(uint *)(puVar47 + -0x138) = -uVar18;\n        if (0x7f00 < uVar37) {\n          pcVar51 = *(code **)(pcVar51 + 0x7a780);\n          goto LAB_00022c88;\n        }\nLAB_00022be4:\n        iVar6 = -(uVar37 + 7 & 0xfffffff8);\n        puVar48 = puVar47 + iVar6 + -0x160;\n        puVar13 = puVar47 + iVar6 + -0x150;\n      }\n      else {\n        uVar37 = uVar18 * 4;\n        *(uint *)(puVar47 + -0x138) = uVar18;\n        pcVar51 = *(code **)(pcVar51 + 0x7a780);\n        if (uVar37 < 0x7f01) goto LAB_00022be4;\nLAB_00022c88:\n        *(uint **)(puVar47 + -0x144) = puVar22;\n        puVar13 = (undefined1 *)(*pcVar51)(puVar47 + -0x13c,uVar37);\n        pcVar44 = *(code **)(puVar47 + -0x150);\n        puVar22 = *(uint **)(puVar47 + -0x144);\n      }\n      pcVar51 = *(code **)(pcVar44 + -0x7a68);\n      puVar36 = (uint *)(puVar47 + -0x138);\n      *(undefined1 **)(puVar47 + -0x130) = puVar13;\n      puVar9 = puVar20;\n      (*pcVar51)(puVar31,puVar36,puVar20,puVar22);\n      iVar6 = *(int *)(puVar47 + -0x150);\n      if (((int)((uint)puVar8 ^ uVar18) < 0) || (*(int *)(puVar47 + -0x134) == 0)) {\n        piVar32 = *(int **)(puVar47 + -0x13c);\n        pcVar51 = *(code **)(iVar6 + -0x7a28);\n        if (piVar32 != (int *)0x0) goto LAB_00022cc0;\n      }\n      else {\n        puVar9 = (uint *)0x1;\n        puVar36 = puVar31;\n        (**(code **)(iVar6 + -0x7c9c))(puVar31);\n        piVar32 = *(int **)(puVar47 + -0x13c);\n        iVar6 = *(int *)(puVar47 + -0x150);\n        if (piVar32 != (int *)0x0) {\n          pcVar51 = *(code **)(iVar6 + -0x7a28);\nLAB_00022cc0:\n          (*pcVar51)();\n          iVar6 = *(int *)(puVar47 + -0x150);\n        }\n      }\n      if (*(int *)(puVar47 + -300) == *piVar34) {\n        return *piVar34;\n      }\n      pcVar51 = *(code **)(iVar6 + -0x7b70);\n      uVar10 = 0x22cdc;\n      (*pcVar51)();\n      pcVar44 = pcVar51 + 0x82360;\n      *(code **)(puVar48 + -0x28) = pcVar44;\n      *(undefined4 *)(puVar48 + -4) = uVar10;\n      *(uint **)(puVar48 + -8) = puVar38;\n      *(uint **)(puVar48 + -0xc) = puVar20;\n      *(int **)(puVar48 + -0x10) = piVar34;\n      *(uint **)(puVar48 + -0x14) = puVar31;\n      *(uint **)(puVar48 + -0x18) = puVar8;\n      *(uint *)(puVar48 + -0x1c) = (uint)puVar8 ^ uVar18;\n      if (puVar9 == (uint *)0x0) {\n        pcVar51 = *(code **)(pcVar51 + 0x7a900);\n        (*pcVar51)();\nLAB_00022e2c:\n        piVar32 = (int *)(*pcVar51)(piVar34,puVar31);\n        pcVar44 = *(code **)(puVar48 + -0x28);\n      }\n      else {\n        puVar8 = (uint *)puVar36[1];\n        if (puVar8 == (uint *)0x0) {\n          piVar32[1] = 0;\n          return 0;\n        }\n        puVar31 = puVar8;\n        if ((int)puVar8 < 0) {\n          puVar31 = (uint *)-(int)puVar8;\n        }\n        pcVar51 = *(code **)(pcVar51 + 0x7a8e0);\n        piVar34 = piVar32;\n        puVar20 = puVar9;\n        puVar38 = puVar36;\n        if (*piVar32 < (int)puVar31) goto LAB_00022e2c;\n        piVar32 = (int *)piVar32[2];\n      }\n      pcVar51 = *(code **)(pcVar44 + -0x7d98);\n      uVar18 = puVar38[2];\n      *(uint **)(puVar48 + -0x30) = puVar20;\n      iVar6 = (*pcVar51)(piVar32,0,uVar18,puVar31);\n      piVar17 = piVar32 + (int)puVar31 + -1;\n      if (iVar6 == 0) {\n        uVar18 = (uint)(*piVar17 == 0);\n        if (-1 < (int)puVar8) {\n          iVar24 = (int)puVar31 - uVar18;\n          goto LAB_00022d9c;\n        }\n      }\n      else {\n        if (-1 < (int)puVar8) {\n          do {\n            iVar24 = *piVar32;\n            *piVar32 = iVar24 + 1;\n            piVar32 = piVar32 + 1;\n          } while (iVar24 + 1 == 0);\n          iVar6 = (int)puVar20 - iVar6;\n          iVar24 = (int)puVar31 - (uint)(*piVar17 == 0);\n          goto LAB_00022d9c;\n        }\n        uVar18 = (uint)(*piVar17 == 0);\n      }\n      iVar24 = uVar18 - (int)puVar31;\nLAB_00022d9c:\n      piVar34[1] = iVar24;\n      return iVar6;\n    }\n    *(int *)(puVar46 + -0x44) = iVar39;\n    iVar6 = iVar39 + uVar7;\n    uVar18 = (**(code **)(*(int *)(puVar46 + -0x34) + (uVar7 - 1) * 4))(iVar39);\n    puVar43 = *(undefined **)(puVar46 + -0x78);\n    if ((uVar18 & 0xff) == 0) {\n      uVar37 = uVar18 >> 8;\n      iVar24 = 6;\n      if ((uVar37 & 0xff) == 0) {\n        uVar37 = uVar18 >> 0x10;\n        iVar24 = 0xe;\n        if ((uVar37 & 0xff) == 0) {\n          uVar37 = uVar18 >> 0x18;\n          iVar24 = 0x1e;\n          if (uVar37 != 0) {\n            iVar24 = 0x16;\n          }\n        }\n      }\n      uVar37 = (uint)*(byte *)(*(int *)(puVar46 + -0x3c) + (-uVar37 & uVar37)) + iVar24;\n    }\n    else {\n      uVar37 = *(byte *)(*(int *)(puVar46 + -0x3c) + (-uVar18 & uVar18)) - 2;\n    }\n    iVar39 = *(int *)(puVar46 + -0x38);\n    *puVar36 = uVar18 >> (uVar37 & 0x1f);\n    iVar24 = *(int *)(puVar46 + -0x60);\n    *(uint *)(puVar46 + -0x40) =\n         *(int *)(puVar46 + -0x40) + *(byte *)(iVar39 + (uVar7 - 1)) + uVar37;\n    if ((uint)(iVar24 - iVar6) <= uVar7) {\n      uVar7 = iVar24 - iVar6;\n    }\n    iVar39 = iVar6;\n    if (uVar7 != 0) goto LAB_00022234;\nLAB_00022534:\n    puVar31 = (uint *)0x1;\n    *(uint **)(puVar46 + -0x4c) = puVar36;\n  } while( true );\n}" primitive_type (function_declarator "FUN_000219dc(int param_1,uint param_2,uint param_3)" identifier (parameter_list "(int param_1,uint param_2,uint param_3)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "uint param_2" type_identifier identifier) , (parameter_declaration "uint param_3" type_identifier identifier) ))) (compound_statement "{\n  uint *puVar1;\n  byte bVar2;\n  bool bVar3;\n  bool bVar4;\n  undefined *puVar5;\n  int iVar6;\n  uint uVar7;\n  uint *puVar8;\n  uint *puVar9;\n  undefined4 uVar10;\n  uint uVar11;\n  uint uVar12;\n  undefined1 *puVar13;\n  undefined *puVar14;\n  undefined4 *puVar15;\n  uint *puVar16;\n  int *piVar17;\n  uint uVar18;\n  undefined4 *puVar19;\n  uint *puVar20;\n  uint uVar21;\n  uint *puVar22;\n  uint uVar23;\n  int iVar24;\n  uint uVar25;\n  uint uVar26;\n  uint uVar27;\n  uint uVar28;\n  int iVar29;\n  uint *puVar30;\n  uint *puVar31;\n  int *piVar32;\n  int iVar33;\n  int *piVar34;\n  uint uVar35;\n  uint *puVar36;\n  uint uVar37;\n  uint *puVar38;\n  int iVar39;\n  uint uVar40;\n  int iVar41;\n  uint uVar42;\n  undefined *puVar43;\n  code *pcVar44;\n  undefined1 *puVar45;\n  undefined1 *puVar46;\n  undefined1 *puVar47;\n  undefined1 *puVar48;\n  undefined1 *puVar49;\n  undefined1 *puVar50;\n  code *pcVar51;\n  code *pcVar52;\n  uint uVar53;\n  uint uVar54;\n  undefined1 auStack_48 [16];\n  int local_30;\n  int local_2c;\n  \n  puVar5 = PTR___stack_chk_guard_0009d540;\n  puVar45 = auStack_48;\n  uVar37 = param_2 - 5 | 1;\n  local_30 = 0;\n  local_2c = *(int *)PTR___stack_chk_guard_0009d540;\n  uVar18 = (uVar37 / 0x60 + 1) * 4;\n  if (uVar18 < 0x7f01) {\n    iVar6 = -(uVar18 + 7 & 0xfffffff8);\n    puVar45 = auStack_48 + iVar6;\n    puVar13 = &stack0xffffffc8 + iVar6;\n  }\n  else {\n    puVar13 = (undefined1 *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&local_30);\n  }\n  iVar6 = (*(code *)PTR___gmp_primesieve_0009d144)(puVar13,param_2);\n  uVar7 = iVar6 + 1;\n  puVar8 = (uint *)(PTR___gmp_limbroots_table_0009d3d4 + 0x1c);\n  uVar18 = 8;\n  do {\n    uVar23 = uVar18;\n    uVar11 = *puVar8;\n    puVar8 = puVar8 + -1;\n    uVar18 = uVar23 - 1;\n  } while (uVar11 < param_2);\n  if (uVar23 == 0) {\n    trap(7);\n  }\n  puVar8 = (uint *)(PTR___gmp_limbroots_table_0009d3d4 + 0x1c);\n  uVar18 = 8;\n  if ((uVar7 / uVar23 + 1) * 4 < 0x7f01) {\n    do {\n      uVar23 = uVar18;\n      uVar11 = *puVar8;\n      puVar8 = puVar8 + -1;\n      uVar18 = uVar23 - 1;\n    } while (uVar11 < param_2);\n    if (uVar23 == 0) {\n      trap(7);\n    }\n    iVar6 = -((uVar7 / uVar23) * 4 + 0xb & 0xfffffff8);\n    puVar46 = puVar45 + iVar6;\n    puVar8 = (uint *)(puVar45 + iVar6 + 0x10);\n  }\n  else {\n    for (puVar14 = PTR___gmp_limbroots_table_0009d3d4 + 0x18; *(uint *)(puVar14 + 4) < param_2;\n        puVar14 = puVar14 + -4) {\n      uVar18 = uVar18 - 1;\n    }\n    if (uVar18 == 0) {\n      trap(7);\n    }\n    puVar8 = (uint *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)\n                               (&local_30,(uVar7 / uVar18 + 1) * 4);\n    puVar46 = puVar45;\n  }\n  uVar18 = param_2 - param_3;\n  if (param_2 == 0) {\n    trap(7);\n  }\n  uVar53 = 0xffffffff / param_2;\n  uVar40 = param_2 >> 1;\n  uVar11 = uVar18 - (uVar18 >> 1 & 0x55555555);\n  uVar23 = param_2 - (uVar40 & 0x55555555);\n  uVar7 = param_3 - (param_3 >> 1 & 0x55555555);\n  uVar26 = (uVar11 >> 2 & 0x33333333) + (uVar11 & 0x33333333);\n  uVar23 = (uVar23 >> 2 & 0x33333333) + (uVar23 & 0x33333333);\n  uVar11 = (uVar7 >> 2 & 0x33333333) + (uVar7 & 0x33333333);\n  uVar7 = (uVar26 >> 4) + uVar26 & 0xf0f0f0f;\n  uVar23 = (uVar23 >> 4) + uVar23 & 0xf0f0f0f;\n  uVar7 = (uVar7 >> 8) + uVar7;\n  uVar11 = (uVar11 >> 4) + uVar11 & 0xf0f0f0f;\n  uVar23 = (uVar23 >> 8) + uVar23;\n  uVar11 = (uVar11 >> 8) + uVar11;\n  uVar7 = 1 << ((uVar11 >> 0x10) + uVar11 +\n                (((uVar7 >> 0x10) + uVar7 & 0xff) - ((uVar23 >> 0x10) + uVar23 & 0xff)) & 0x1f);\n  bVar3 = uVar53 < uVar7;\n  if (bVar3) {\n    *puVar8 = uVar7;\n    uVar7 = 1;\n  }\n  uVar11 = 0;\n  uVar23 = param_2;\n  uVar26 = param_3;\n  do {\n    bVar4 = uVar23 % 3 < uVar26 % 3 + uVar11;\n    if (bVar4) {\n      uVar7 = uVar7 * 3;\n    }\n    uVar11 = (uint)bVar4;\n    bVar4 = 8 < uVar23;\n    uVar23 = uVar23 / 3;\n    uVar26 = uVar26 / 3;\n  } while (bVar4);\n  uVar11 = param_2 - 1;\n  if (uVar11 < 0x10000) {\n    iVar6 = 0x18;\n    if (uVar11 < 0x100) {\n      iVar6 = 0x20;\n    }\n    iVar24 = 9;\n    if (uVar11 < 0x100) {\n      iVar24 = 1;\n    }\n  }\n  else {\n    iVar6 = 8;\n    if (uVar11 < 0x1000000) {\n      iVar6 = 0x10;\n    }\n    iVar24 = 0x19;\n    if (uVar11 < 0x1000000) {\n      iVar24 = 0x11;\n    }\n  }\n  iVar29 = 0;\n  uVar28 = 1;\n  uVar42 = (((1 << ((int)(0x1f - (iVar6 - (uint)(byte)PTR___gmpn_clz_tab_0009d18c[uVar11 >> iVar24])\n                         ) >> 1 & 0x1fU)) +\n            (1 << ((int)(0x1e - (iVar6 - (uint)(byte)PTR___gmpn_clz_tab_0009d18c[uVar11 >> iVar24]))\n                   >> 1 & 0x1fU))) - 5U | 1) / 3;\n  uVar26 = uVar42 + 1;\n  uVar11 = (uint)bVar3;\n  uVar23 = 0;\n  do {\n    uVar35 = uVar23 + 1;\n    uVar21 = uVar11;\n    if ((uVar28 & *(uint *)(puVar13 + iVar29 * 4)) == 0) {\n      uVar12 = (uVar35 & 1) + 1 + uVar35 * 3;\n      if (uVar53 < uVar7) {\n        uVar21 = uVar11 + 1;\n        puVar8[uVar11] = uVar7;\n        uVar7 = 1;\n      }\n      uVar27 = 0;\n      uVar11 = param_3;\n      uVar25 = param_2;\n      do {\n        if (uVar12 == 0) {\n          trap(7);\n        }\n        if (uVar12 == 0) {\n          trap(7);\n        }\n        uVar54 = uVar25 / uVar12;\n        bVar3 = uVar25 % uVar12 < uVar11 % uVar12 + uVar27;\n        if (bVar3) {\n          uVar7 = uVar7 * uVar12;\n        }\n        uVar27 = (uint)bVar3;\n        uVar11 = uVar11 / uVar12;\n        uVar25 = uVar54;\n      } while (uVar12 <= uVar54);\n    }\n    uVar28 = uVar28 * 2 - ((int)uVar28 >> 0x1f);\n    bVar3 = uVar23 != uVar42;\n    iVar29 = iVar29 + (uVar28 & 1);\n    uVar11 = uVar21;\n    uVar23 = uVar35;\n  } while (bVar3);\n  uVar23 = uVar26 >> 5;\n  uVar11 = 1 << (uVar26 & 0x1f);\n  uVar28 = (uVar40 - 5 | 1) / 3;\n  do {\n    while( true ) {\n      uVar26 = uVar26 + 1;\n      uVar42 = uVar21;\n      if ((uVar11 & *(uint *)(puVar13 + uVar23 * 4)) == 0) break;\nLAB_00021e80:\n      uVar11 = uVar11 * 2 - ((int)uVar11 >> 0x1f);\n      uVar23 = uVar23 + (uVar11 & 1);\n      uVar21 = uVar42;\n      if (uVar28 < uVar26) goto LAB_00021f04;\n    }\n    uVar12 = (uVar26 & 1) + 1 + uVar26 * 3;\n    if (uVar12 == 0) {\n      trap(7);\n    }\n    if (uVar12 == 0) {\n      trap(7);\n    }\n    if (param_3 % uVar12 <= param_2 % uVar12) goto LAB_00021e80;\n    if (uVar53 << 1 < uVar7) {\n      uVar42 = uVar21 + 1;\n      puVar8[uVar21] = uVar7;\n      uVar7 = uVar12;\n      goto LAB_00021e80;\n    }\n    uVar11 = uVar11 * 2 - ((int)uVar11 >> 0x1f);\n    uVar7 = uVar7 * uVar12;\n    uVar23 = uVar23 + (uVar11 & 1);\n  } while (uVar26 <= uVar28);\nLAB_00021f04:\n  uVar18 = (uVar18 - 5 | 1) / 3 + 1;\n  uVar23 = uVar18 >> 5;\n  uVar37 = uVar37 / 3;\n  uVar11 = 1 << (uVar18 & 0x1f);\n  do {\n    while( true ) {\n      uVar18 = uVar18 + 1;\n      uVar26 = uVar42;\n      if ((uVar11 & *(uint *)(puVar13 + uVar23 * 4)) == 0) break;\nLAB_00021f58:\n      uVar11 = uVar11 * 2 - ((int)uVar11 >> 0x1f);\n      uVar23 = uVar23 + (uVar11 & 1);\n      uVar42 = uVar26;\n      if (uVar37 < uVar18) goto LAB_00021fb8;\n    }\n    uVar28 = (uVar18 & 1) + 1 + uVar18 * 3;\n    if ((uVar53 & 0x7fffffff) < uVar7) {\n      uVar26 = uVar42 + 1;\n      puVar8[uVar42] = uVar7;\n      uVar7 = uVar28;\n      goto LAB_00021f58;\n    }\n    uVar11 = uVar11 * 2 - ((int)uVar11 >> 0x1f);\n    uVar7 = uVar7 * uVar28;\n    uVar23 = uVar23 + (uVar11 & 1);\n  } while (uVar18 <= uVar37);\nLAB_00021fb8:\n  if (uVar26 == 0) {\n    **(uint **)(param_1 + 8) = uVar7;\n    *(undefined4 *)(param_1 + 4) = 1;\n    uVar18 = 0;\n    iVar6 = local_30;\n  }\n  else {\n    uVar18 = uVar26 + 1;\n    puVar8[uVar26] = uVar7;\n    (*(code *)PTR___gmpz_prodlimbs_0009d284)(param_1);\n    iVar6 = local_30;\n  }\n  local_30 = iVar6;\n  if (iVar6 != 0) {\n    (*(code *)PTR___gmp_tmp_reentrant_free_0009d618)();\n  }\n  iVar24 = *(int *)puVar5;\n  if (local_2c == iVar24) {\n    return iVar24;\n  }\n  pcVar51 = FUN_0002209c;\n  puVar14 = PTR___stack_chk_fail_0009d4d0;\n  (*(code *)PTR___stack_chk_fail_0009d4d0)();\n  puVar43 = puVar14 + 0x82fa4;\n  puVar47 = puVar46 + -0x90;\n  puVar50 = puVar46 + -0x90;\n  puVar49 = puVar46 + -0x90;\n  *(int *)(puVar46 + -0x24) = param_1;\n  *(undefined1 **)(puVar46 + -8) = auStack_48;\n  puVar19 = *(undefined4 **)(puVar14 + 0x7b4a4);\n  *(code **)(puVar46 + -4) = pcVar51;\n  *(int *)(puVar46 + -0x6c) = iVar6;\n  *(uint *)(puVar46 + -0xc) = uVar40;\n  *(uint *)(puVar46 + -0x10) = param_3;\n  *(uint *)(puVar46 + -0x14) = uVar37;\n  uVar37 = (((uint)puVar8 >> 5) + 1) * 3;\n  *(uint *)(puVar46 + -0x18) = uVar35;\n  *(undefined1 **)(puVar46 + -0x1c) = puVar13;\n  *(uint *)(puVar46 + -0x20) = param_2;\n  *(undefined **)(puVar46 + -0x28) = puVar5;\n  *(undefined **)(puVar46 + -0x78) = puVar43;\n  *(undefined4 **)(puVar46 + -0x70) = puVar19;\n  *(undefined4 *)(puVar46 + -0x30) = 0;\n  *(undefined4 *)(puVar46 + -0x2c) = *puVar19;\n  if (uVar37 < 0x2a) {\n    uVar37 = 0x27;\n    if (uVar18 < 0x28) {\n      uVar37 = uVar18;\n    }\n    uVar37 = (uVar37 + 1) * 4;\n  }\n  else {\n    uVar37 = ((int)uVar37 >> 1) + 0x13;\n    if (uVar18 < uVar37) {\n      uVar37 = uVar18;\n    }\n    uVar37 = (uVar37 + 1) * 4;\n    pcVar51 = *(code **)(puVar14 + 0x7b254);\n    if (0x7f00 < uVar37) {\n      *(uint *)(puVar46 + 8) = uVar18;\n      puVar38 = (uint *)(*pcVar51)(puVar46 + -0x30);\n      puVar43 = *(undefined **)(puVar46 + -0x78);\n      uVar18 = *(uint *)(puVar46 + 8);\n      goto LAB_0002214c;\n    }\n  }\n  iVar6 = -(uVar37 + 7 & 0xfffffff8);\n  puVar47 = puVar46 + iVar6 + -0x90;\n  puVar38 = (uint *)(puVar46 + iVar6 + -0x78);\nLAB_0002214c:\n  iVar24 = *(int *)(puVar43 + -0x7c6c);\n  puVar36 = (uint *)(puVar47 + -0x40);\n  puVar31 = (uint *)(iVar24 + 0x1c);\n  iVar6 = 8;\n  do {\n    iVar29 = iVar6;\n    puVar9 = (uint *)*puVar31;\n    puVar31 = puVar31 + -1;\n    iVar6 = iVar29 + -1;\n  } while (puVar9 < puVar8);\n  *(int *)(puVar46 + -0x68) = iVar29;\n  puVar31 = (uint *)(iVar24 + 0x1c);\n  uVar37 = 8;\n  do {\n    uVar7 = uVar37;\n    uVar11 = *puVar31;\n    puVar31 = puVar31 + -1;\n    uVar37 = uVar7 - 1;\n  } while (uVar11 < uVar18);\n  uVar10 = *(undefined4 *)(puVar43 + -0x7d3c);\n  iVar6 = 0x11;\n  *(undefined4 *)(puVar46 + -0x48) = 0;\n  *(undefined4 *)(puVar46 + -100) = uVar10;\n  iVar24 = *(int *)(puVar43 + -0x7e20);\n  *(undefined4 *)(puVar46 + -0x5c) = 0x3fffffff;\n  iVar29 = (int)puVar8 + (1 - uVar18);\n  *(uint *)(puVar46 + -0x40) = (uint)*(byte *)(iVar24 + 7);\n  *(undefined4 *)(puVar46 + -0x3c) = *(undefined4 *)(puVar43 + -0x7eb4);\n  *(uint *)(puVar46 + -0x60) = uVar18 + 1;\n  iVar24 = *(int *)(puVar46 + -0x60);\n  *puVar38 = 1;\n  *(undefined4 *)(puVar46 + -0x44) = 1;\n  *(int *)(puVar46 + -0x34) = *(int *)(puVar43 + -0x7fe4) + -0x31a4;\n  *(int *)(puVar46 + -0x38) = *(int *)(puVar43 + -0x7fd4) + 0x3630;\n  *puVar36 = 0x260eeeeb;\n  if (iVar24 - 0x11U <= uVar7) {\n    uVar7 = iVar24 - 0x11U;\n  }\n  puVar8 = (uint *)0x1;\n  iVar39 = iVar6;\n  if (uVar7 == 0) goto LAB_00022534;\nLAB_00022234:\n  puVar31 = (uint *)0x1;\n  iVar41 = *(int *)(puVar46 + -0x40);\n  *(uint **)(puVar46 + -0x4c) = puVar8;\n  *(uint **)(puVar46 + -0x50) = puVar38;\n  do {\n    iVar39 = iVar6 + uVar7;\n    uVar18 = (**(code **)(*(int *)(puVar46 + -0x34) + (uVar7 - 1) * 4))(iVar6);\n    if ((uVar18 & 0xff) == 0) {\n      uVar37 = uVar18 >> 8;\n      iVar6 = 6;\n      if ((uVar37 & 0xff) == 0) {\n        uVar37 = uVar18 >> 0x10;\n        iVar6 = 0xe;\n        if ((uVar37 & 0xff) == 0) {\n          uVar37 = uVar18 >> 0x18;\n          iVar6 = 0x1e;\n          if (uVar37 != 0) {\n            iVar6 = 0x16;\n          }\n        }\n      }\n      uVar37 = (uint)*(byte *)(*(int *)(puVar46 + -0x3c) + (-uVar37 & uVar37)) + iVar6;\n    }\n    else {\n      uVar37 = *(byte *)(*(int *)(puVar46 + -0x3c) + (-uVar18 & uVar18)) - 2;\n    }\n    iVar41 = iVar41 + *(byte *)(*(int *)(puVar46 + -0x38) + (uVar7 - 1)) + uVar37;\n    uVar18 = (**(code **)(*(int *)(puVar46 + -0x78) + -0x7f9c))\n                       (puVar36,puVar36,puVar31,uVar18 >> (uVar37 & 0x1f));\n    puVar43 = *(undefined **)(puVar46 + -0x78);\n    if ((uint)(iVar24 - iVar39) <= uVar7) {\n      uVar7 = iVar24 - iVar39;\n    }\n    puVar8 = puVar36 + (int)puVar31;\n    puVar31 = (uint *)((int)puVar31 + (uint)(uVar18 != 0));\n    *puVar8 = uVar18;\n    if (uVar7 == 0) {\n      puVar38 = *(uint **)(puVar46 + -0x50);\n      puVar8 = *(uint **)(puVar46 + -0x4c);\n      *(int *)(puVar46 + -0x40) = iVar41;\n      *(uint **)(puVar46 + -0x4c) = puVar36 + (int)((int)puVar31 + *(int *)(puVar46 + -0x5c));\n      goto LAB_00022340;\n    }\n    iVar6 = iVar39;\n  } while (puVar31 != (uint *)0x14);\n  puVar8 = *(uint **)(puVar46 + -0x4c);\n  puVar38 = *(uint **)(puVar46 + -0x50);\n  *(int *)(puVar46 + -0x40) = iVar41;\n  *(uint **)(puVar46 + -0x4c) = puVar36 + 0x13;\nLAB_00022340:\n  do {\n    iVar41 = iVar39 - *(int *)(puVar46 + -0x44);\n    iVar24 = *(int *)(puVar46 + -0x5c);\n    iVar6 = iVar41;\n    if (iVar41 != 0) {\n      *(uint *)(puVar46 + -0x44) = uVar7;\n      *(uint **)(puVar46 + -0x50) = puVar31;\n      *(uint **)(puVar46 + -0x54) = puVar36;\n      *(int *)(puVar46 + -0x58) = iVar39;\n      iVar6 = *(int *)(puVar46 + -0x48);\n      iVar39 = *(int *)(puVar46 + -0x68);\n      iVar24 = iVar29;\n      do {\n        iVar33 = iVar41;\n        if (iVar39 <= iVar41) {\n          iVar33 = iVar39;\n        }\n        iVar29 = iVar24 + iVar33;\n        uVar18 = (**(code **)(*(int *)(puVar46 + -0x34) + (iVar33 + -1) * 4))(iVar24);\n        if ((uVar18 & 0xff) == 0) {\n          uVar37 = uVar18 >> 8;\n          iVar24 = 6;\n          if ((uVar37 & 0xff) == 0) {\n            uVar37 = uVar18 >> 0x10;\n            iVar24 = 0xe;\n            if ((uVar37 & 0xff) == 0) {\n              uVar37 = uVar18 >> 0x18;\n              iVar24 = 0x16;\n              if (uVar37 == 0) {\n                iVar24 = 0x1e;\n              }\n            }\n          }\n          uVar37 = (uint)*(byte *)(*(int *)(puVar46 + -0x3c) + (-uVar37 & uVar37)) + iVar24;\n        }\n        else {\n          uVar37 = *(byte *)(*(int *)(puVar46 + -0x3c) + (-uVar18 & uVar18)) - 2;\n        }\n        iVar41 = iVar41 - iVar33;\n        iVar6 = iVar6 + *(byte *)(*(int *)(puVar46 + -0x38) + iVar33 + -1) + uVar37;\n        uVar18 = (**(code **)(*(int *)(puVar46 + -0x78) + -0x7f9c))\n                           (puVar38,puVar38,puVar8,uVar18 >> (uVar37 & 0x1f));\n        puVar43 = *(undefined **)(puVar46 + -0x78);\n        puVar31 = puVar38 + (int)puVar8;\n        puVar8 = (uint *)((int)puVar8 + (uint)(uVar18 != 0));\n        *puVar31 = uVar18;\n        iVar24 = iVar29;\n      } while (iVar41 != 0);\n      uVar7 = *(uint *)(puVar46 + -0x44);\n      puVar31 = *(uint **)(puVar46 + -0x50);\n      puVar36 = *(uint **)(puVar46 + -0x54);\n      iVar39 = *(int *)(puVar46 + -0x58);\n      *(int *)(puVar46 + -0x48) = iVar6;\n      iVar24 = *(int *)(puVar46 + -0x5c);\n    }\n    uVar37 = *puVar36;\n    pcVar51 = *(code **)(puVar43 + -0x7bc0);\n    uVar18 = (uint)*(byte *)(*(int *)(puVar46 + -100) + ((uVar37 << 0x18) >> 0x19));\n    puVar8 = (uint *)((int)puVar8 +\n                     ((puVar38[(int)((int)puVar8 + iVar24)] < **(uint **)(puVar46 + -0x4c) ^ 1) -\n                     (int)puVar31));\n    iVar24 = uVar18 * 2 - uVar18 * uVar18 * uVar37;\n    if ((int)puVar8 < (int)puVar31) {\n      puVar31 = puVar8;\n    }\n    *(uint **)(puVar47 + -0x48) = puVar31;\n    *(uint *)(puVar47 + -0x44) = iVar24 * iVar24 * uVar37 + iVar24 * -2;\n    puVar9 = puVar38;\n    puVar22 = puVar8;\n    (*pcVar51)(puVar38,puVar38,puVar8,puVar36);\n    iVar24 = *(int *)(puVar46 + -0x78);\n    if (uVar7 == 0) {\n      if (*(int *)(puVar46 + -0x48) == *(int *)(puVar46 + -0x40)) {\n        puVar8 = (uint *)((int)puVar8 - (uint)(puVar38[(int)((int)puVar8 + -1)] == 0));\n        pcVar51 = *(code **)(iVar24 + -0x7a80);\n        if ((int)puVar8 <= **(int **)(puVar46 + -0x6c)) goto LAB_00022600;\nLAB_00022734:\n        puVar9 = puVar8;\n        puVar19 = (undefined4 *)(*pcVar51)(*(undefined4 *)(puVar46 + -0x6c));\n        iVar24 = *(int *)(puVar46 + -0x78);\n      }\n      else {\n        puVar9 = puVar38;\n        puVar22 = puVar8;\n        uVar18 = (**(code **)(iVar24 + -0x7ad4))(puVar38);\n        iVar24 = *(int *)(puVar46 + -0x78);\n        puVar38[(int)puVar8] = uVar18;\n        puVar8 = (uint *)((int)puVar8 +\n                         ((uint)(uVar18 != 0) -\n                         (uint)(puVar38[(int)((int)puVar8 + ((uVar18 != 0) - 1))] == 0)));\n        pcVar51 = *(code **)(iVar24 + -0x7a80);\n        if (**(int **)(puVar46 + -0x6c) < (int)puVar8) goto LAB_00022734;\nLAB_00022600:\n        puVar19 = *(undefined4 **)(*(int *)(puVar46 + -0x6c) + 8);\n      }\n      *(uint **)(*(int *)(puVar46 + -0x6c) + 4) = puVar8;\n      if (puVar8 != (uint *)0x0) {\n        puVar13 = (undefined1 *)((int)puVar8 + -1);\n        puVar9 = (uint *)*puVar38;\n        if (puVar13 != (undefined1 *)0x0) {\n          puVar15 = puVar19;\n          puVar16 = puVar38 + 1;\n          do {\n            *puVar15 = puVar9;\n            puVar38 = puVar16 + 1;\n            puVar13 = puVar13 + -1;\n            puVar9 = (uint *)*puVar16;\n            puVar15 = puVar15 + 1;\n            puVar16 = puVar38;\n          } while (puVar13 != (undefined1 *)0x0);\n          puVar8 = (uint *)((int)puVar8 * 4);\n          puVar19 = (undefined4 *)((int)puVar19 + (int)(puVar8 + -1));\n        }\n        *puVar19 = puVar9;\n      }\n      puVar16 = *(uint **)(puVar46 + -0x30);\n      if (puVar16 != (uint *)0x0) {\n        (**(code **)(iVar24 + -0x7a28))();\n        iVar24 = *(int *)(puVar46 + -0x78);\n      }\n      if (*(int *)(puVar46 + -0x2c) == **(int **)(puVar46 + -0x70)) {\n        return **(int **)(puVar46 + -0x70);\n      }\n      pcVar51 = *(code **)(iVar24 + -0x7b70);\n      pcVar52 = __gmpz_bin_uiui;\n      (*pcVar51)();\n      pcVar44 = pcVar51 + 0x8289c;\n      *(uint **)(puVar47 + -0x78) = puVar31;\n      piVar32 = *(int **)(pcVar51 + 0x7ad9c);\n      *(code **)(puVar47 + -0xf0) = pcVar44;\n      *(int *)(puVar47 + -0x74) = iVar39;\n      *(code **)(puVar47 + -0x5c) = pcVar52;\n      *(undefined1 **)(puVar47 + -0x60) = puVar46 + -0x90;\n      *(int *)(puVar47 + -100) = iVar6;\n      *(int *)(puVar47 + -0x68) = iVar29;\n      *(uint **)(puVar47 + -0x6c) = puVar38;\n      *(uint **)(puVar47 + -0x70) = puVar36;\n      *(uint **)(puVar47 + -0x7c) = puVar8;\n      *(undefined4 *)(puVar47 + -0x80) = 0;\n      *(int *)(puVar47 + -0x84) = *piVar32;\n      puVar31 = puVar16;\n      puVar20 = puVar9;\n      if (puVar9 < puVar22) {\n        puVar16[1] = 0;\n        puVar30 = (uint *)0x0;\n      }\n      else {\n        puVar30 = puVar22;\n        if ((uint *)((int)puVar9 - (int)puVar22) <= puVar22) {\n          puVar30 = (uint *)((int)puVar9 - (int)puVar22);\n        }\n        puVar22 = puVar30;\n        puVar36 = puVar9;\n        if (puVar30 < (uint *)0x2) {\n          if (puVar30 == (uint *)0x0) {\n            puVar36 = (uint *)0x1;\n          }\n          *(uint **)puVar16[2] = puVar36;\n          puVar16[1] = 1;\n          puVar49 = puVar46 + -0x90;\n        }\n        else if (puVar9 < (uint *)0x23) {\n          puVar13 = (undefined1 *)((int)puVar30 + -2);\n          iVar6 = *(int *)(pcVar51 + 0x7aa7c);\n          puVar20 = (uint *)puVar16[2];\n          uVar18 = (int)puVar9 - (int)puVar30;\n          puVar36 = (uint *)(iVar6 + ((uint)puVar9 >> 1));\n          puVar30 = (uint *)(iVar6 + ((uint)puVar30 >> 1));\n          bVar2 = *(byte *)((int)puVar30 + -1);\n          puVar31 = (uint *)(uint)*(byte *)(iVar6 + (uVar18 >> 1) + -1);\n          *puVar20 = *(int *)((int)puVar13 * 4 + *(int *)(pcVar51 + 0x7a8c8) + 0x35b4) *\n                     *(int *)(*(int *)(pcVar51 + 0x7ad64) + (int)puVar9 * 4) *\n                     *(int *)((uVar18 - 2) * 4 + *(int *)(pcVar51 + 0x7a8c8) + 0x35b4) <<\n                     (((uint)*(byte *)((int)puVar36 + -1) - (int)(uint)bVar2) - (int)puVar31 & 0x1f)\n          ;\n          puVar16[1] = 1;\n          puVar22 = (uint *)(uint)bVar2;\n          puVar49 = puVar46 + -0x90;\n        }\n        else if (puVar30 < &DAT_00000011) {\n          FUN_000216e8();\n          pcVar44 = *(code **)(puVar47 + -0xf0);\n          puVar49 = puVar46 + -0x90;\n        }\n        else if (puVar30 < &DAT_00000021) {\n          uVar18 = (uint)puVar30 >> 1;\n          uVar37 = (int)puVar9 - uVar18;\n          FUN_000216e8();\n          iVar6 = *(int *)(puVar47 + -0xf0);\n          uVar7 = (int)puVar30 - uVar18;\n          if (uVar37 < 0x23) {\n            puVar50 = (undefined1 *)puVar16[1];\n            if ((int)puVar50 < (int)*puVar16) {\n              puVar8 = (uint *)puVar16[2];\n            }\n            else {\n              puVar8 = (uint *)(**(code **)(iVar6 + -0x7a80))(puVar16,puVar50 + 1);\n              iVar6 = *(int *)(puVar47 + -0xf0);\n            }\n            iVar29 = *(int *)(iVar6 + -0x7e20);\n            iVar24 = *(int *)(iVar6 + -0x7fd4) + 0x35b4;\n            uVar37 = (**(code **)(iVar6 + -0x7f9c))\n                               (puVar8,puVar8,puVar50,\n                                *(int *)((((int)puVar9 - (int)puVar30) - 2U) * 4 + iVar24) *\n                                *(int *)(*(int *)(iVar6 + -0x7b38) + uVar37 * 4) *\n                                *(int *)((uVar7 - 2) * 4 + iVar24) <<\n                                (((uint)*(byte *)(iVar29 + (uVar37 >> 1) + -1) -\n                                 (uint)*(byte *)(iVar29 + (uVar7 >> 1) + -1)) -\n                                 (uint)*(byte *)(iVar29 + ((uint)((int)puVar9 - (int)puVar30) >> 1)\n                                                + -1) & 0x1f));\n            iVar6 = *(int *)(puVar47 + -0xf0);\n            puVar30 = (uint *)(puVar50 + (uVar37 != 0));\n            puVar8[(int)puVar50] = uVar37;\n          }\n          else {\n            *(undefined4 *)(puVar47 + -0xe4) = 0x15;\n            *(undefined1 **)(puVar47 + -0xdc) = puVar47 + -0xd8;\n            FUN_000216e8(puVar47 + -0xe4,uVar37,uVar7);\n            (**(code **)(*(int *)(puVar47 + -0xf0) + -0x7ba8))(puVar16,puVar16,puVar47 + -0xe4);\n            iVar6 = *(int *)(puVar47 + -0xf0);\n            puVar8 = (uint *)puVar16[2];\n            puVar30 = (uint *)puVar16[1];\n          }\n          pcVar51 = *(code **)(iVar6 + -0x7bb4);\n          puVar38 = (uint *)((uint)*(byte *)((uVar7 - 8) + *(int *)(iVar6 + -0x7fd4) + 0x3550) -\n                            (uint)(uVar18 != uVar7));\n          *(undefined4 *)(puVar47 + -0xf8) =\n               *(undefined4 *)((uVar7 - 8) * 4 + *(int *)(iVar6 + -0x7fd4) + 0x355c);\n          *(uint **)(puVar47 + -0xf4) = puVar38;\n          puVar31 = puVar8;\n          puVar20 = puVar8;\n          puVar22 = puVar30;\n          (*pcVar51)();\n          pcVar44 = *(code **)(puVar47 + -0xf0);\n          if (puVar8[(int)((int)puVar30 + -1)] == 0) {\n            puVar9 = puVar8 + (int)puVar30;\n            do {\n              puVar1 = puVar9 + -2;\n              puVar30 = (uint *)((int)puVar30 + -1);\n              puVar9 = puVar9 + -1;\n            } while (*puVar1 == 0);\n          }\n          puVar16[1] = (uint)puVar30;\n          puVar49 = puVar50;\n        }\n        else if ((puVar30 < (uint *)0x3e8) || (puVar30 <= (uint *)((uint)puVar9 >> 4))) {\n          FUN_0002209c();\n          pcVar44 = *(code **)(puVar47 + -0xf0);\n          puVar49 = puVar46 + -0x90;\n        }\n        else {\n          FUN_000219dc();\n          pcVar44 = *(code **)(puVar47 + -0xf0);\n          puVar49 = puVar46 + -0x90;\n        }\n      }\n      if (*(int *)(puVar47 + -0x84) == *piVar32) {\n        return *piVar32;\n      }\n      pcVar51 = *(code **)(pcVar44 + -0x7b70);\n      uVar10 = 0x22b64;\n      (*pcVar51)();\n      pcVar44 = pcVar51 + 0x824d0;\n      puVar48 = puVar47 + -0x160;\n      *(uint **)(puVar47 + -0x118) = puVar16;\n      *(uint **)(puVar47 + -0x124) = puVar30;\n      piVar34 = *(int **)(pcVar51 + 0x7a9d0);\n      uVar18 = puVar22[1];\n      *(undefined1 **)(puVar47 + -0x110) = puVar49;\n      *(uint **)(puVar47 + -0x114) = puVar36;\n      *(int **)(puVar47 + -0x11c) = piVar32;\n      *(uint **)(puVar47 + -0x120) = puVar8;\n      *(undefined4 *)(puVar47 + -0x10c) = uVar10;\n      *(code **)(puVar47 + -0x150) = pcVar44;\n      *(undefined4 *)(puVar47 + -0x13c) = 0;\n      puVar8 = (uint *)puVar20[1];\n      *(int *)(puVar47 + -300) = *piVar34;\n      if ((int)uVar18 < 0) {\n        uVar37 = uVar18 * -4;\n        *(uint *)(puVar47 + -0x138) = -uVar18;\n        if (0x7f00 < uVar37) {\n          pcVar51 = *(code **)(pcVar51 + 0x7a780);\n          goto LAB_00022c88;\n        }\nLAB_00022be4:\n        iVar6 = -(uVar37 + 7 & 0xfffffff8);\n        puVar48 = puVar47 + iVar6 + -0x160;\n        puVar13 = puVar47 + iVar6 + -0x150;\n      }\n      else {\n        uVar37 = uVar18 * 4;\n        *(uint *)(puVar47 + -0x138) = uVar18;\n        pcVar51 = *(code **)(pcVar51 + 0x7a780);\n        if (uVar37 < 0x7f01) goto LAB_00022be4;\nLAB_00022c88:\n        *(uint **)(puVar47 + -0x144) = puVar22;\n        puVar13 = (undefined1 *)(*pcVar51)(puVar47 + -0x13c,uVar37);\n        pcVar44 = *(code **)(puVar47 + -0x150);\n        puVar22 = *(uint **)(puVar47 + -0x144);\n      }\n      pcVar51 = *(code **)(pcVar44 + -0x7a68);\n      puVar36 = (uint *)(puVar47 + -0x138);\n      *(undefined1 **)(puVar47 + -0x130) = puVar13;\n      puVar9 = puVar20;\n      (*pcVar51)(puVar31,puVar36,puVar20,puVar22);\n      iVar6 = *(int *)(puVar47 + -0x150);\n      if (((int)((uint)puVar8 ^ uVar18) < 0) || (*(int *)(puVar47 + -0x134) == 0)) {\n        piVar32 = *(int **)(puVar47 + -0x13c);\n        pcVar51 = *(code **)(iVar6 + -0x7a28);\n        if (piVar32 != (int *)0x0) goto LAB_00022cc0;\n      }\n      else {\n        puVar9 = (uint *)0x1;\n        puVar36 = puVar31;\n        (**(code **)(iVar6 + -0x7c9c))(puVar31);\n        piVar32 = *(int **)(puVar47 + -0x13c);\n        iVar6 = *(int *)(puVar47 + -0x150);\n        if (piVar32 != (int *)0x0) {\n          pcVar51 = *(code **)(iVar6 + -0x7a28);\nLAB_00022cc0:\n          (*pcVar51)();\n          iVar6 = *(int *)(puVar47 + -0x150);\n        }\n      }\n      if (*(int *)(puVar47 + -300) == *piVar34) {\n        return *piVar34;\n      }\n      pcVar51 = *(code **)(iVar6 + -0x7b70);\n      uVar10 = 0x22cdc;\n      (*pcVar51)();\n      pcVar44 = pcVar51 + 0x82360;\n      *(code **)(puVar48 + -0x28) = pcVar44;\n      *(undefined4 *)(puVar48 + -4) = uVar10;\n      *(uint **)(puVar48 + -8) = puVar38;\n      *(uint **)(puVar48 + -0xc) = puVar20;\n      *(int **)(puVar48 + -0x10) = piVar34;\n      *(uint **)(puVar48 + -0x14) = puVar31;\n      *(uint **)(puVar48 + -0x18) = puVar8;\n      *(uint *)(puVar48 + -0x1c) = (uint)puVar8 ^ uVar18;\n      if (puVar9 == (uint *)0x0) {\n        pcVar51 = *(code **)(pcVar51 + 0x7a900);\n        (*pcVar51)();\nLAB_00022e2c:\n        piVar32 = (int *)(*pcVar51)(piVar34,puVar31);\n        pcVar44 = *(code **)(puVar48 + -0x28);\n      }\n      else {\n        puVar8 = (uint *)puVar36[1];\n        if (puVar8 == (uint *)0x0) {\n          piVar32[1] = 0;\n          return 0;\n        }\n        puVar31 = puVar8;\n        if ((int)puVar8 < 0) {\n          puVar31 = (uint *)-(int)puVar8;\n        }\n        pcVar51 = *(code **)(pcVar51 + 0x7a8e0);\n        piVar34 = piVar32;\n        puVar20 = puVar9;\n        puVar38 = puVar36;\n        if (*piVar32 < (int)puVar31) goto LAB_00022e2c;\n        piVar32 = (int *)piVar32[2];\n      }\n      pcVar51 = *(code **)(pcVar44 + -0x7d98);\n      uVar18 = puVar38[2];\n      *(uint **)(puVar48 + -0x30) = puVar20;\n      iVar6 = (*pcVar51)(piVar32,0,uVar18,puVar31);\n      piVar17 = piVar32 + (int)puVar31 + -1;\n      if (iVar6 == 0) {\n        uVar18 = (uint)(*piVar17 == 0);\n        if (-1 < (int)puVar8) {\n          iVar24 = (int)puVar31 - uVar18;\n          goto LAB_00022d9c;\n        }\n      }\n      else {\n        if (-1 < (int)puVar8) {\n          do {\n            iVar24 = *piVar32;\n            *piVar32 = iVar24 + 1;\n            piVar32 = piVar32 + 1;\n          } while (iVar24 + 1 == 0);\n          iVar6 = (int)puVar20 - iVar6;\n          iVar24 = (int)puVar31 - (uint)(*piVar17 == 0);\n          goto LAB_00022d9c;\n        }\n        uVar18 = (uint)(*piVar17 == 0);\n      }\n      iVar24 = uVar18 - (int)puVar31;\nLAB_00022d9c:\n      piVar34[1] = iVar24;\n      return iVar6;\n    }\n    *(int *)(puVar46 + -0x44) = iVar39;\n    iVar6 = iVar39 + uVar7;\n    uVar18 = (**(code **)(*(int *)(puVar46 + -0x34) + (uVar7 - 1) * 4))(iVar39);\n    puVar43 = *(undefined **)(puVar46 + -0x78);\n    if ((uVar18 & 0xff) == 0) {\n      uVar37 = uVar18 >> 8;\n      iVar24 = 6;\n      if ((uVar37 & 0xff) == 0) {\n        uVar37 = uVar18 >> 0x10;\n        iVar24 = 0xe;\n        if ((uVar37 & 0xff) == 0) {\n          uVar37 = uVar18 >> 0x18;\n          iVar24 = 0x1e;\n          if (uVar37 != 0) {\n            iVar24 = 0x16;\n          }\n        }\n      }\n      uVar37 = (uint)*(byte *)(*(int *)(puVar46 + -0x3c) + (-uVar37 & uVar37)) + iVar24;\n    }\n    else {\n      uVar37 = *(byte *)(*(int *)(puVar46 + -0x3c) + (-uVar18 & uVar18)) - 2;\n    }\n    iVar39 = *(int *)(puVar46 + -0x38);\n    *puVar36 = uVar18 >> (uVar37 & 0x1f);\n    iVar24 = *(int *)(puVar46 + -0x60);\n    *(uint *)(puVar46 + -0x40) =\n         *(int *)(puVar46 + -0x40) + *(byte *)(iVar39 + (uVar7 - 1)) + uVar37;\n    if ((uint)(iVar24 - iVar6) <= uVar7) {\n      uVar7 = iVar24 - iVar6;\n    }\n    iVar39 = iVar6;\n    if (uVar7 != 0) goto LAB_00022234;\nLAB_00022534:\n    puVar31 = (uint *)0x1;\n    *(uint **)(puVar46 + -0x4c) = puVar36;\n  } while( true );\n}" { (declaration "uint *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "byte bVar2;" type_identifier identifier ;) (declaration "bool bVar3;" primitive_type identifier ;) (declaration "bool bVar4;" primitive_type identifier ;) (declaration "undefined *puVar5;" type_identifier (pointer_declarator "*puVar5" * identifier) ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "uint uVar7;" type_identifier identifier ;) (declaration "uint *puVar8;" type_identifier (pointer_declarator "*puVar8" * identifier) ;) (declaration "uint *puVar9;" type_identifier (pointer_declarator "*puVar9" * identifier) ;) (declaration "undefined4 uVar10;" type_identifier identifier ;) (declaration "uint uVar11;" type_identifier identifier ;) (declaration "uint uVar12;" type_identifier identifier ;) (declaration "undefined1 *puVar13;" type_identifier (pointer_declarator "*puVar13" * identifier) ;) (declaration "undefined *puVar14;" type_identifier (pointer_declarator "*puVar14" * identifier) ;) (declaration "undefined4 *puVar15;" type_identifier (pointer_declarator "*puVar15" * identifier) ;) (declaration "uint *puVar16;" type_identifier (pointer_declarator "*puVar16" * identifier) ;) (declaration "int *piVar17;" primitive_type (pointer_declarator "*piVar17" * identifier) ;) (declaration "uint uVar18;" type_identifier identifier ;) (declaration "undefined4 *puVar19;" type_identifier (pointer_declarator "*puVar19" * identifier) ;) (declaration "uint *puVar20;" type_identifier (pointer_declarator "*puVar20" * identifier) ;) (declaration "uint uVar21;" type_identifier identifier ;) (declaration "uint *puVar22;" type_identifier (pointer_declarator "*puVar22" * identifier) ;) (declaration "uint uVar23;" type_identifier identifier ;) (declaration "int iVar24;" primitive_type identifier ;) (declaration "uint uVar25;" type_identifier identifier ;) (declaration "uint uVar26;" type_identifier identifier ;) (declaration "uint uVar27;" type_identifier identifier ;) (declaration "uint uVar28;" type_identifier identifier ;) (declaration "int iVar29;" primitive_type identifier ;) (declaration "uint *puVar30;" type_identifier (pointer_declarator "*puVar30" * identifier) ;) (declaration "uint *puVar31;" type_identifier (pointer_declarator "*puVar31" * identifier) ;) (declaration "int *piVar32;" primitive_type (pointer_declarator "*piVar32" * identifier) ;) (declaration "int iVar33;" primitive_type identifier ;) (declaration "int *piVar34;" primitive_type (pointer_declarator "*piVar34" * identifier) ;) (declaration "uint uVar35;" type_identifier identifier ;) (declaration "uint *puVar36;" type_identifier (pointer_declarator "*puVar36" * identifier) ;) (declaration "uint uVar37;" type_identifier identifier ;) (declaration "uint *puVar38;" type_identifier (pointer_declarator "*puVar38" * identifier) ;) (declaration "int iVar39;" primitive_type identifier ;) (declaration "uint uVar40;" type_identifier identifier ;) (declaration "int iVar41;" primitive_type identifier ;) (declaration "uint uVar42;" type_identifier identifier ;) (declaration "undefined *puVar43;" type_identifier (pointer_declarator "*puVar43" * identifier) ;) (declaration "code *pcVar44;" type_identifier (pointer_declarator "*pcVar44" * identifier) ;) (declaration "undefined1 *puVar45;" type_identifier (pointer_declarator "*puVar45" * identifier) ;) (declaration "undefined1 *puVar46;" type_identifier (pointer_declarator "*puVar46" * identifier) ;) (declaration "undefined1 *puVar47;" type_identifier (pointer_declarator "*puVar47" * identifier) ;) (declaration "undefined1 *puVar48;" type_identifier (pointer_declarator "*puVar48" * identifier) ;) (declaration "undefined1 *puVar49;" type_identifier (pointer_declarator "*puVar49" * identifier) ;) (declaration "undefined1 *puVar50;" type_identifier (pointer_declarator "*puVar50" * identifier) ;) (declaration "code *pcVar51;" type_identifier (pointer_declarator "*pcVar51" * identifier) ;) (declaration "code *pcVar52;" type_identifier (pointer_declarator "*pcVar52" * identifier) ;) (declaration "uint uVar53;" type_identifier identifier ;) (declaration "uint uVar54;" type_identifier identifier ;) (declaration "undefined1 auStack_48 [16];" type_identifier (array_declarator "auStack_48 [16]" identifier [ number_literal ]) ;) (declaration "int local_30;" primitive_type identifier ;) (declaration "int local_2c;" primitive_type identifier ;) (expression_statement "puVar5 = PTR___stack_chk_guard_0009d540;" (assignment_expression "puVar5 = PTR___stack_chk_guard_0009d540" identifier = identifier) ;) (expression_statement "puVar45 = auStack_48;" (assignment_expression "puVar45 = auStack_48" identifier = identifier) ;) (expression_statement "uVar37 = param_2 - 5 | 1;" (assignment_expression "uVar37 = param_2 - 5 | 1" identifier = (binary_expression "param_2 - 5 | 1" (binary_expression "param_2 - 5" identifier - number_literal) | number_literal)) ;) (expression_statement "local_30 = 0;" (assignment_expression "local_30 = 0" identifier = number_literal) ;) (expression_statement "local_2c = *(int *)PTR___stack_chk_guard_0009d540;" (assignment_expression "local_2c = *(int *)PTR___stack_chk_guard_0009d540" identifier = (pointer_expression "*(int *)PTR___stack_chk_guard_0009d540" * (cast_expression "(int *)PTR___stack_chk_guard_0009d540" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "uVar18 = (uVar37 / 0x60 + 1) * 4;" (assignment_expression "uVar18 = (uVar37 / 0x60 + 1) * 4" identifier = (binary_expression "(uVar37 / 0x60 + 1) * 4" (parenthesized_expression "(uVar37 / 0x60 + 1)" ( (binary_expression "uVar37 / 0x60 + 1" (binary_expression "uVar37 / 0x60" identifier / number_literal) + number_literal) )) * number_literal)) ;) (if_statement "if (uVar18 < 0x7f01) {\n    iVar6 = -(uVar18 + 7 & 0xfffffff8);\n    puVar45 = auStack_48 + iVar6;\n    puVar13 = &stack0xffffffc8 + iVar6;\n  }\n  else {\n    puVar13 = (undefined1 *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&local_30);\n  }" if (parenthesized_expression "(uVar18 < 0x7f01)" ( (binary_expression "uVar18 < 0x7f01" identifier < number_literal) )) (compound_statement "{\n    iVar6 = -(uVar18 + 7 & 0xfffffff8);\n    puVar45 = auStack_48 + iVar6;\n    puVar13 = &stack0xffffffc8 + iVar6;\n  }" { (expression_statement "iVar6 = -(uVar18 + 7 & 0xfffffff8);" (assignment_expression "iVar6 = -(uVar18 + 7 & 0xfffffff8)" identifier = (unary_expression "-(uVar18 + 7 & 0xfffffff8)" - (parenthesized_expression "(uVar18 + 7 & 0xfffffff8)" ( (binary_expression "uVar18 + 7 & 0xfffffff8" (binary_expression "uVar18 + 7" identifier + number_literal) & number_literal) )))) ;) (expression_statement "puVar45 = auStack_48 + iVar6;" (assignment_expression "puVar45 = auStack_48 + iVar6" identifier = (binary_expression "auStack_48 + iVar6" identifier + identifier)) ;) (expression_statement "puVar13 = &stack0xffffffc8 + iVar6;" (assignment_expression "puVar13 = &stack0xffffffc8 + iVar6" identifier = (binary_expression "&stack0xffffffc8 + iVar6" (pointer_expression "&stack0xffffffc8" & identifier) + identifier)) ;) }) (else_clause "else {\n    puVar13 = (undefined1 *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&local_30);\n  }" else (compound_statement "{\n    puVar13 = (undefined1 *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&local_30);\n  }" { (expression_statement "puVar13 = (undefined1 *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&local_30);" (assignment_expression "puVar13 = (undefined1 *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&local_30)" identifier = (cast_expression "(undefined1 *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&local_30)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&local_30)" (parenthesized_expression "(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)" ( (pointer_expression "*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0" * (cast_expression "(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(&local_30)" ( (pointer_expression "&local_30" & identifier) ))))) ;) }))) (expression_statement "iVar6 = (*(code *)PTR___gmp_primesieve_0009d144)(puVar13,param_2);" (assignment_expression "iVar6 = (*(code *)PTR___gmp_primesieve_0009d144)(puVar13,param_2)" identifier = (call_expression "(*(code *)PTR___gmp_primesieve_0009d144)(puVar13,param_2)" (parenthesized_expression "(*(code *)PTR___gmp_primesieve_0009d144)" ( (pointer_expression "*(code *)PTR___gmp_primesieve_0009d144" * (cast_expression "(code *)PTR___gmp_primesieve_0009d144" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(puVar13,param_2)" ( identifier , identifier )))) ;) (expression_statement "uVar7 = iVar6 + 1;" (assignment_expression "uVar7 = iVar6 + 1" identifier = (binary_expression "iVar6 + 1" identifier + number_literal)) ;) (expression_statement "puVar8 = (uint *)(PTR___gmp_limbroots_table_0009d3d4 + 0x1c);" (assignment_expression "puVar8 = (uint *)(PTR___gmp_limbroots_table_0009d3d4 + 0x1c)" identifier = (cast_expression "(uint *)(PTR___gmp_limbroots_table_0009d3d4 + 0x1c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR___gmp_limbroots_table_0009d3d4 + 0x1c)" ( (binary_expression "PTR___gmp_limbroots_table_0009d3d4 + 0x1c" identifier + number_literal) )))) ;) (expression_statement "uVar18 = 8;" (assignment_expression "uVar18 = 8" identifier = number_literal) ;) (do_statement "do {\n    uVar23 = uVar18;\n    uVar11 = *puVar8;\n    puVar8 = puVar8 + -1;\n    uVar18 = uVar23 - 1;\n  } while (uVar11 < param_2);" do (compound_statement "{\n    uVar23 = uVar18;\n    uVar11 = *puVar8;\n    puVar8 = puVar8 + -1;\n    uVar18 = uVar23 - 1;\n  }" { (expression_statement "uVar23 = uVar18;" (assignment_expression "uVar23 = uVar18" identifier = identifier) ;) (expression_statement "uVar11 = *puVar8;" (assignment_expression "uVar11 = *puVar8" identifier = (pointer_expression "*puVar8" * identifier)) ;) (expression_statement "puVar8 = puVar8 + -1;" (assignment_expression "puVar8 = puVar8 + -1" identifier = (binary_expression "puVar8 + -1" identifier + number_literal)) ;) (expression_statement "uVar18 = uVar23 - 1;" (assignment_expression "uVar18 = uVar23 - 1" identifier = (binary_expression "uVar23 - 1" identifier - number_literal)) ;) }) while (parenthesized_expression "(uVar11 < param_2)" ( (binary_expression "uVar11 < param_2" identifier < identifier) )) ;) (if_statement "if (uVar23 == 0) {\n    trap(7);\n  }" if (parenthesized_expression "(uVar23 == 0)" ( (binary_expression "uVar23 == 0" identifier == number_literal) )) (compound_statement "{\n    trap(7);\n  }" { (expression_statement "trap(7);" (call_expression "trap(7)" identifier (argument_list "(7)" ( number_literal ))) ;) })) (expression_statement "puVar8 = (uint *)(PTR___gmp_limbroots_table_0009d3d4 + 0x1c);" (assignment_expression "puVar8 = (uint *)(PTR___gmp_limbroots_table_0009d3d4 + 0x1c)" identifier = (cast_expression "(uint *)(PTR___gmp_limbroots_table_0009d3d4 + 0x1c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR___gmp_limbroots_table_0009d3d4 + 0x1c)" ( (binary_expression "PTR___gmp_limbroots_table_0009d3d4 + 0x1c" identifier + number_literal) )))) ;) (expression_statement "uVar18 = 8;" (assignment_expression "uVar18 = 8" identifier = number_literal) ;) (if_statement "if ((uVar7 / uVar23 + 1) * 4 < 0x7f01) {\n    do {\n      uVar23 = uVar18;\n      uVar11 = *puVar8;\n      puVar8 = puVar8 + -1;\n      uVar18 = uVar23 - 1;\n    } while (uVar11 < param_2);\n    if (uVar23 == 0) {\n      trap(7);\n    }\n    iVar6 = -((uVar7 / uVar23) * 4 + 0xb & 0xfffffff8);\n    puVar46 = puVar45 + iVar6;\n    puVar8 = (uint *)(puVar45 + iVar6 + 0x10);\n  }\n  else {\n    for (puVar14 = PTR___gmp_limbroots_table_0009d3d4 + 0x18; *(uint *)(puVar14 + 4) < param_2;\n        puVar14 = puVar14 + -4) {\n      uVar18 = uVar18 - 1;\n    }\n    if (uVar18 == 0) {\n      trap(7);\n    }\n    puVar8 = (uint *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)\n                               (&local_30,(uVar7 / uVar18 + 1) * 4);\n    puVar46 = puVar45;\n  }" if (parenthesized_expression "((uVar7 / uVar23 + 1) * 4 < 0x7f01)" ( (binary_expression "(uVar7 / uVar23 + 1) * 4 < 0x7f01" (binary_expression "(uVar7 / uVar23 + 1) * 4" (parenthesized_expression "(uVar7 / uVar23 + 1)" ( (binary_expression "uVar7 / uVar23 + 1" (binary_expression "uVar7 / uVar23" identifier / identifier) + number_literal) )) * number_literal) < number_literal) )) (compound_statement "{\n    do {\n      uVar23 = uVar18;\n      uVar11 = *puVar8;\n      puVar8 = puVar8 + -1;\n      uVar18 = uVar23 - 1;\n    } while (uVar11 < param_2);\n    if (uVar23 == 0) {\n      trap(7);\n    }\n    iVar6 = -((uVar7 / uVar23) * 4 + 0xb & 0xfffffff8);\n    puVar46 = puVar45 + iVar6;\n    puVar8 = (uint *)(puVar45 + iVar6 + 0x10);\n  }" { (do_statement "do {\n      uVar23 = uVar18;\n      uVar11 = *puVar8;\n      puVar8 = puVar8 + -1;\n      uVar18 = uVar23 - 1;\n    } while (uVar11 < param_2);" do (compound_statement "{\n      uVar23 = uVar18;\n      uVar11 = *puVar8;\n      puVar8 = puVar8 + -1;\n      uVar18 = uVar23 - 1;\n    }" { (expression_statement "uVar23 = uVar18;" (assignment_expression "uVar23 = uVar18" identifier = identifier) ;) (expression_statement "uVar11 = *puVar8;" (assignment_expression "uVar11 = *puVar8" identifier = (pointer_expression "*puVar8" * identifier)) ;) (expression_statement "puVar8 = puVar8 + -1;" (assignment_expression "puVar8 = puVar8 + -1" identifier = (binary_expression "puVar8 + -1" identifier + number_literal)) ;) (expression_statement "uVar18 = uVar23 - 1;" (assignment_expression "uVar18 = uVar23 - 1" identifier = (binary_expression "uVar23 - 1" identifier - number_literal)) ;) }) while (parenthesized_expression "(uVar11 < param_2)" ( (binary_expression "uVar11 < param_2" identifier < identifier) )) ;) (if_statement "if (uVar23 == 0) {\n      trap(7);\n    }" if (parenthesized_expression "(uVar23 == 0)" ( (binary_expression "uVar23 == 0" identifier == number_literal) )) (compound_statement "{\n      trap(7);\n    }" { (expression_statement "trap(7);" (call_expression "trap(7)" identifier (argument_list "(7)" ( number_literal ))) ;) })) (expression_statement "iVar6 = -((uVar7 / uVar23) * 4 + 0xb & 0xfffffff8);" (assignment_expression "iVar6 = -((uVar7 / uVar23) * 4 + 0xb & 0xfffffff8)" identifier = (unary_expression "-((uVar7 / uVar23) * 4 + 0xb & 0xfffffff8)" - (parenthesized_expression "((uVar7 / uVar23) * 4 + 0xb & 0xfffffff8)" ( (binary_expression "(uVar7 / uVar23) * 4 + 0xb & 0xfffffff8" (binary_expression "(uVar7 / uVar23) * 4 + 0xb" (binary_expression "(uVar7 / uVar23) * 4" (parenthesized_expression "(uVar7 / uVar23)" ( (binary_expression "uVar7 / uVar23" identifier / identifier) )) * number_literal) + number_literal) & number_literal) )))) ;) (expression_statement "puVar46 = puVar45 + iVar6;" (assignment_expression "puVar46 = puVar45 + iVar6" identifier = (binary_expression "puVar45 + iVar6" identifier + identifier)) ;) (expression_statement "puVar8 = (uint *)(puVar45 + iVar6 + 0x10);" (assignment_expression "puVar8 = (uint *)(puVar45 + iVar6 + 0x10)" identifier = (cast_expression "(uint *)(puVar45 + iVar6 + 0x10)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar45 + iVar6 + 0x10)" ( (binary_expression "puVar45 + iVar6 + 0x10" (binary_expression "puVar45 + iVar6" identifier + identifier) + number_literal) )))) ;) }) (else_clause "else {\n    for (puVar14 = PTR___gmp_limbroots_table_0009d3d4 + 0x18; *(uint *)(puVar14 + 4) < param_2;\n        puVar14 = puVar14 + -4) {\n      uVar18 = uVar18 - 1;\n    }\n    if (uVar18 == 0) {\n      trap(7);\n    }\n    puVar8 = (uint *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)\n                               (&local_30,(uVar7 / uVar18 + 1) * 4);\n    puVar46 = puVar45;\n  }" else (compound_statement "{\n    for (puVar14 = PTR___gmp_limbroots_table_0009d3d4 + 0x18; *(uint *)(puVar14 + 4) < param_2;\n        puVar14 = puVar14 + -4) {\n      uVar18 = uVar18 - 1;\n    }\n    if (uVar18 == 0) {\n      trap(7);\n    }\n    puVar8 = (uint *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)\n                               (&local_30,(uVar7 / uVar18 + 1) * 4);\n    puVar46 = puVar45;\n  }" { (for_statement "for (puVar14 = PTR___gmp_limbroots_table_0009d3d4 + 0x18; *(uint *)(puVar14 + 4) < param_2;\n        puVar14 = puVar14 + -4) {\n      uVar18 = uVar18 - 1;\n    }" for ( (assignment_expression "puVar14 = PTR___gmp_limbroots_table_0009d3d4 + 0x18" identifier = (binary_expression "PTR___gmp_limbroots_table_0009d3d4 + 0x18" identifier + number_literal)) ; (binary_expression "*(uint *)(puVar14 + 4) < param_2" (pointer_expression "*(uint *)(puVar14 + 4)" * (cast_expression "(uint *)(puVar14 + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar14 + 4)" ( (binary_expression "puVar14 + 4" identifier + number_literal) )))) < identifier) ; (assignment_expression "puVar14 = puVar14 + -4" identifier = (binary_expression "puVar14 + -4" identifier + number_literal)) ) (compound_statement "{\n      uVar18 = uVar18 - 1;\n    }" { (expression_statement "uVar18 = uVar18 - 1;" (assignment_expression "uVar18 = uVar18 - 1" identifier = (binary_expression "uVar18 - 1" identifier - number_literal)) ;) })) (if_statement "if (uVar18 == 0) {\n      trap(7);\n    }" if (parenthesized_expression "(uVar18 == 0)" ( (binary_expression "uVar18 == 0" identifier == number_literal) )) (compound_statement "{\n      trap(7);\n    }" { (expression_statement "trap(7);" (call_expression "trap(7)" identifier (argument_list "(7)" ( number_literal ))) ;) })) (expression_statement "puVar8 = (uint *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)\n                               (&local_30,(uVar7 / uVar18 + 1) * 4);" (assignment_expression "puVar8 = (uint *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)\n                               (&local_30,(uVar7 / uVar18 + 1) * 4)" identifier = (cast_expression "(uint *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)\n                               (&local_30,(uVar7 / uVar18 + 1) * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)\n                               (&local_30,(uVar7 / uVar18 + 1) * 4)" (parenthesized_expression "(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)" ( (pointer_expression "*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0" * (cast_expression "(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(&local_30,(uVar7 / uVar18 + 1) * 4)" ( (pointer_expression "&local_30" & identifier) , (binary_expression "(uVar7 / uVar18 + 1) * 4" (parenthesized_expression "(uVar7 / uVar18 + 1)" ( (binary_expression "uVar7 / uVar18 + 1" (binary_expression "uVar7 / uVar18" identifier / identifier) + number_literal) )) * number_literal) ))))) ;) (expression_statement "puVar46 = puVar45;" (assignment_expression "puVar46 = puVar45" identifier = identifier) ;) }))) (expression_statement "uVar18 = param_2 - param_3;" (assignment_expression "uVar18 = param_2 - param_3" identifier = (binary_expression "param_2 - param_3" identifier - identifier)) ;) (if_statement "if (param_2 == 0) {\n    trap(7);\n  }" if (parenthesized_expression "(param_2 == 0)" ( (binary_expression "param_2 == 0" identifier == number_literal) )) (compound_statement "{\n    trap(7);\n  }" { (expression_statement "trap(7);" (call_expression "trap(7)" identifier (argument_list "(7)" ( number_literal ))) ;) })) (expression_statement "uVar53 = 0xffffffff / param_2;" (assignment_expression "uVar53 = 0xffffffff / param_2" identifier = (binary_expression "0xffffffff / param_2" number_literal / identifier)) ;) (expression_statement "uVar40 = param_2 >> 1;" (assignment_expression "uVar40 = param_2 >> 1" identifier = (binary_expression "param_2 >> 1" identifier >> number_literal)) ;) (expression_statement "uVar11 = uVar18 - (uVar18 >> 1 & 0x55555555);" (assignment_expression "uVar11 = uVar18 - (uVar18 >> 1 & 0x55555555)" identifier = (binary_expression "uVar18 - (uVar18 >> 1 & 0x55555555)" identifier - (parenthesized_expression "(uVar18 >> 1 & 0x55555555)" ( (binary_expression "uVar18 >> 1 & 0x55555555" (binary_expression "uVar18 >> 1" identifier >> number_literal) & number_literal) )))) ;) (expression_statement "uVar23 = param_2 - (uVar40 & 0x55555555);" (assignment_expression "uVar23 = param_2 - (uVar40 & 0x55555555)" identifier = (binary_expression "param_2 - (uVar40 & 0x55555555)" identifier - (parenthesized_expression "(uVar40 & 0x55555555)" ( (binary_expression "uVar40 & 0x55555555" identifier & number_literal) )))) ;) (expression_statement "uVar7 = param_3 - (param_3 >> 1 & 0x55555555);" (assignment_expression "uVar7 = param_3 - (param_3 >> 1 & 0x55555555)" identifier = (binary_expression "param_3 - (param_3 >> 1 & 0x55555555)" identifier - (parenthesized_expression "(param_3 >> 1 & 0x55555555)" ( (binary_expression "param_3 >> 1 & 0x55555555" (binary_expression "param_3 >> 1" identifier >> number_literal) & number_literal) )))) ;) (expression_statement "uVar26 = (uVar11 >> 2 & 0x33333333) + (uVar11 & 0x33333333);" (assignment_expression "uVar26 = (uVar11 >> 2 & 0x33333333) + (uVar11 & 0x33333333)" identifier = (binary_expression "(uVar11 >> 2 & 0x33333333) + (uVar11 & 0x33333333)" (parenthesized_expression "(uVar11 >> 2 & 0x33333333)" ( (binary_expression "uVar11 >> 2 & 0x33333333" (binary_expression "uVar11 >> 2" identifier >> number_literal) & number_literal) )) + (parenthesized_expression "(uVar11 & 0x33333333)" ( (binary_expression "uVar11 & 0x33333333" identifier & number_literal) )))) ;) (expression_statement "uVar23 = (uVar23 >> 2 & 0x33333333) + (uVar23 & 0x33333333);" (assignment_expression "uVar23 = (uVar23 >> 2 & 0x33333333) + (uVar23 & 0x33333333)" identifier = (binary_expression "(uVar23 >> 2 & 0x33333333) + (uVar23 & 0x33333333)" (parenthesized_expression "(uVar23 >> 2 & 0x33333333)" ( (binary_expression "uVar23 >> 2 & 0x33333333" (binary_expression "uVar23 >> 2" identifier >> number_literal) & number_literal) )) + (parenthesized_expression "(uVar23 & 0x33333333)" ( (binary_expression "uVar23 & 0x33333333" identifier & number_literal) )))) ;) (expression_statement "uVar11 = (uVar7 >> 2 & 0x33333333) + (uVar7 & 0x33333333);" (assignment_expression "uVar11 = (uVar7 >> 2 & 0x33333333) + (uVar7 & 0x33333333)" identifier = (binary_expression "(uVar7 >> 2 & 0x33333333) + (uVar7 & 0x33333333)" (parenthesized_expression "(uVar7 >> 2 & 0x33333333)" ( (binary_expression "uVar7 >> 2 & 0x33333333" (binary_expression "uVar7 >> 2" identifier >> number_literal) & number_literal) )) + (parenthesized_expression "(uVar7 & 0x33333333)" ( (binary_expression "uVar7 & 0x33333333" identifier & number_literal) )))) ;) (expression_statement "uVar7 = (uVar26 >> 4) + uVar26 & 0xf0f0f0f;" (assignment_expression "uVar7 = (uVar26 >> 4) + uVar26 & 0xf0f0f0f" identifier = (binary_expression "(uVar26 >> 4) + uVar26 & 0xf0f0f0f" (binary_expression "(uVar26 >> 4) + uVar26" (parenthesized_expression "(uVar26 >> 4)" ( (binary_expression "uVar26 >> 4" identifier >> number_literal) )) + identifier) & number_literal)) ;) (expression_statement "uVar23 = (uVar23 >> 4) + uVar23 & 0xf0f0f0f;" (assignment_expression "uVar23 = (uVar23 >> 4) + uVar23 & 0xf0f0f0f" identifier = (binary_expression "(uVar23 >> 4) + uVar23 & 0xf0f0f0f" (binary_expression "(uVar23 >> 4) + uVar23" (parenthesized_expression "(uVar23 >> 4)" ( (binary_expression "uVar23 >> 4" identifier >> number_literal) )) + identifier) & number_literal)) ;) (expression_statement "uVar7 = (uVar7 >> 8) + uVar7;" (assignment_expression "uVar7 = (uVar7 >> 8) + uVar7" identifier = (binary_expression "(uVar7 >> 8) + uVar7" (parenthesized_expression "(uVar7 >> 8)" ( (binary_expression "uVar7 >> 8" identifier >> number_literal) )) + identifier)) ;) (expression_statement "uVar11 = (uVar11 >> 4) + uVar11 & 0xf0f0f0f;" (assignment_expression "uVar11 = (uVar11 >> 4) + uVar11 & 0xf0f0f0f" identifier = (binary_expression "(uVar11 >> 4) + uVar11 & 0xf0f0f0f" (binary_expression "(uVar11 >> 4) + uVar11" (parenthesized_expression "(uVar11 >> 4)" ( (binary_expression "uVar11 >> 4" identifier >> number_literal) )) + identifier) & number_literal)) ;) (expression_statement "uVar23 = (uVar23 >> 8) + uVar23;" (assignment_expression "uVar23 = (uVar23 >> 8) + uVar23" identifier = (binary_expression "(uVar23 >> 8) + uVar23" (parenthesized_expression "(uVar23 >> 8)" ( (binary_expression "uVar23 >> 8" identifier >> number_literal) )) + identifier)) ;) (expression_statement "uVar11 = (uVar11 >> 8) + uVar11;" (assignment_expression "uVar11 = (uVar11 >> 8) + uVar11" identifier = (binary_expression "(uVar11 >> 8) + uVar11" (parenthesized_expression "(uVar11 >> 8)" ( (binary_expression "uVar11 >> 8" identifier >> number_literal) )) + identifier)) ;) (expression_statement "uVar7 = 1 << ((uVar11 >> 0x10) + uVar11 +\n                (((uVar7 >> 0x10) + uVar7 & 0xff) - ((uVar23 >> 0x10) + uVar23 & 0xff)) & 0x1f);" (assignment_expression "uVar7 = 1 << ((uVar11 >> 0x10) + uVar11 +\n                (((uVar7 >> 0x10) + uVar7 & 0xff) - ((uVar23 >> 0x10) + uVar23 & 0xff)) & 0x1f)" identifier = (binary_expression "1 << ((uVar11 >> 0x10) + uVar11 +\n                (((uVar7 >> 0x10) + uVar7 & 0xff) - ((uVar23 >> 0x10) + uVar23 & 0xff)) & 0x1f)" number_literal << (parenthesized_expression "((uVar11 >> 0x10) + uVar11 +\n                (((uVar7 >> 0x10) + uVar7 & 0xff) - ((uVar23 >> 0x10) + uVar23 & 0xff)) & 0x1f)" ( (binary_expression "(uVar11 >> 0x10) + uVar11 +\n                (((uVar7 >> 0x10) + uVar7 & 0xff) - ((uVar23 >> 0x10) + uVar23 & 0xff)) & 0x1f" (binary_expression "(uVar11 >> 0x10) + uVar11 +\n                (((uVar7 >> 0x10) + uVar7 & 0xff) - ((uVar23 >> 0x10) + uVar23 & 0xff))" (binary_expression "(uVar11 >> 0x10) + uVar11" (parenthesized_expression "(uVar11 >> 0x10)" ( (binary_expression "uVar11 >> 0x10" identifier >> number_literal) )) + identifier) + (parenthesized_expression "(((uVar7 >> 0x10) + uVar7 & 0xff) - ((uVar23 >> 0x10) + uVar23 & 0xff))" ( (binary_expression "((uVar7 >> 0x10) + uVar7 & 0xff) - ((uVar23 >> 0x10) + uVar23 & 0xff)" (parenthesized_expression "((uVar7 >> 0x10) + uVar7 & 0xff)" ( (binary_expression "(uVar7 >> 0x10) + uVar7 & 0xff" (binary_expression "(uVar7 >> 0x10) + uVar7" (parenthesized_expression "(uVar7 >> 0x10)" ( (binary_expression "uVar7 >> 0x10" identifier >> number_literal) )) + identifier) & number_literal) )) - (parenthesized_expression "((uVar23 >> 0x10) + uVar23 & 0xff)" ( (binary_expression "(uVar23 >> 0x10) + uVar23 & 0xff" (binary_expression "(uVar23 >> 0x10) + uVar23" (parenthesized_expression "(uVar23 >> 0x10)" ( (binary_expression "uVar23 >> 0x10" identifier >> number_literal) )) + identifier) & number_literal) ))) ))) & number_literal) )))) ;) (expression_statement "bVar3 = uVar53 < uVar7;" (assignment_expression "bVar3 = uVar53 < uVar7" identifier = (binary_expression "uVar53 < uVar7" identifier < identifier)) ;) (if_statement "if (bVar3) {\n    *puVar8 = uVar7;\n    uVar7 = 1;\n  }" if (parenthesized_expression "(bVar3)" ( identifier )) (compound_statement "{\n    *puVar8 = uVar7;\n    uVar7 = 1;\n  }" { (expression_statement "*puVar8 = uVar7;" (assignment_expression "*puVar8 = uVar7" (pointer_expression "*puVar8" * identifier) = identifier) ;) (expression_statement "uVar7 = 1;" (assignment_expression "uVar7 = 1" identifier = number_literal) ;) })) (expression_statement "uVar11 = 0;" (assignment_expression "uVar11 = 0" identifier = number_literal) ;) (expression_statement "uVar23 = param_2;" (assignment_expression "uVar23 = param_2" identifier = identifier) ;) (expression_statement "uVar26 = param_3;" (assignment_expression "uVar26 = param_3" identifier = identifier) ;) (do_statement "do {\n    bVar4 = uVar23 % 3 < uVar26 % 3 + uVar11;\n    if (bVar4) {\n      uVar7 = uVar7 * 3;\n    }\n    uVar11 = (uint)bVar4;\n    bVar4 = 8 < uVar23;\n    uVar23 = uVar23 / 3;\n    uVar26 = uVar26 / 3;\n  } while (bVar4);" do (compound_statement "{\n    bVar4 = uVar23 % 3 < uVar26 % 3 + uVar11;\n    if (bVar4) {\n      uVar7 = uVar7 * 3;\n    }\n    uVar11 = (uint)bVar4;\n    bVar4 = 8 < uVar23;\n    uVar23 = uVar23 / 3;\n    uVar26 = uVar26 / 3;\n  }" { (expression_statement "bVar4 = uVar23 % 3 < uVar26 % 3 + uVar11;" (assignment_expression "bVar4 = uVar23 % 3 < uVar26 % 3 + uVar11" identifier = (binary_expression "uVar23 % 3 < uVar26 % 3 + uVar11" (binary_expression "uVar23 % 3" identifier % number_literal) < (binary_expression "uVar26 % 3 + uVar11" (binary_expression "uVar26 % 3" identifier % number_literal) + identifier))) ;) (if_statement "if (bVar4) {\n      uVar7 = uVar7 * 3;\n    }" if (parenthesized_expression "(bVar4)" ( identifier )) (compound_statement "{\n      uVar7 = uVar7 * 3;\n    }" { (expression_statement "uVar7 = uVar7 * 3;" (assignment_expression "uVar7 = uVar7 * 3" identifier = (binary_expression "uVar7 * 3" identifier * number_literal)) ;) })) (expression_statement "uVar11 = (uint)bVar4;" (assignment_expression "uVar11 = (uint)bVar4" identifier = (cast_expression "(uint)bVar4" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "bVar4 = 8 < uVar23;" (assignment_expression "bVar4 = 8 < uVar23" identifier = (binary_expression "8 < uVar23" number_literal < identifier)) ;) (expression_statement "uVar23 = uVar23 / 3;" (assignment_expression "uVar23 = uVar23 / 3" identifier = (binary_expression "uVar23 / 3" identifier / number_literal)) ;) (expression_statement "uVar26 = uVar26 / 3;" (assignment_expression "uVar26 = uVar26 / 3" identifier = (binary_expression "uVar26 / 3" identifier / number_literal)) ;) }) while (parenthesized_expression "(bVar4)" ( identifier )) ;) (expression_statement "uVar11 = param_2 - 1;" (assignment_expression "uVar11 = param_2 - 1" identifier = (binary_expression "param_2 - 1" identifier - number_literal)) ;) (if_statement "if (uVar11 < 0x10000) {\n    iVar6 = 0x18;\n    if (uVar11 < 0x100) {\n      iVar6 = 0x20;\n    }\n    iVar24 = 9;\n    if (uVar11 < 0x100) {\n      iVar24 = 1;\n    }\n  }\n  else {\n    iVar6 = 8;\n    if (uVar11 < 0x1000000) {\n      iVar6 = 0x10;\n    }\n    iVar24 = 0x19;\n    if (uVar11 < 0x1000000) {\n      iVar24 = 0x11;\n    }\n  }" if (parenthesized_expression "(uVar11 < 0x10000)" ( (binary_expression "uVar11 < 0x10000" identifier < number_literal) )) (compound_statement "{\n    iVar6 = 0x18;\n    if (uVar11 < 0x100) {\n      iVar6 = 0x20;\n    }\n    iVar24 = 9;\n    if (uVar11 < 0x100) {\n      iVar24 = 1;\n    }\n  }" { (expression_statement "iVar6 = 0x18;" (assignment_expression "iVar6 = 0x18" identifier = number_literal) ;) (if_statement "if (uVar11 < 0x100) {\n      iVar6 = 0x20;\n    }" if (parenthesized_expression "(uVar11 < 0x100)" ( (binary_expression "uVar11 < 0x100" identifier < number_literal) )) (compound_statement "{\n      iVar6 = 0x20;\n    }" { (expression_statement "iVar6 = 0x20;" (assignment_expression "iVar6 = 0x20" identifier = number_literal) ;) })) (expression_statement "iVar24 = 9;" (assignment_expression "iVar24 = 9" identifier = number_literal) ;) (if_statement "if (uVar11 < 0x100) {\n      iVar24 = 1;\n    }" if (parenthesized_expression "(uVar11 < 0x100)" ( (binary_expression "uVar11 < 0x100" identifier < number_literal) )) (compound_statement "{\n      iVar24 = 1;\n    }" { (expression_statement "iVar24 = 1;" (assignment_expression "iVar24 = 1" identifier = number_literal) ;) })) }) (else_clause "else {\n    iVar6 = 8;\n    if (uVar11 < 0x1000000) {\n      iVar6 = 0x10;\n    }\n    iVar24 = 0x19;\n    if (uVar11 < 0x1000000) {\n      iVar24 = 0x11;\n    }\n  }" else (compound_statement "{\n    iVar6 = 8;\n    if (uVar11 < 0x1000000) {\n      iVar6 = 0x10;\n    }\n    iVar24 = 0x19;\n    if (uVar11 < 0x1000000) {\n      iVar24 = 0x11;\n    }\n  }" { (expression_statement "iVar6 = 8;" (assignment_expression "iVar6 = 8" identifier = number_literal) ;) (if_statement "if (uVar11 < 0x1000000) {\n      iVar6 = 0x10;\n    }" if (parenthesized_expression "(uVar11 < 0x1000000)" ( (binary_expression "uVar11 < 0x1000000" identifier < number_literal) )) (compound_statement "{\n      iVar6 = 0x10;\n    }" { (expression_statement "iVar6 = 0x10;" (assignment_expression "iVar6 = 0x10" identifier = number_literal) ;) })) (expression_statement "iVar24 = 0x19;" (assignment_expression "iVar24 = 0x19" identifier = number_literal) ;) (if_statement "if (uVar11 < 0x1000000) {\n      iVar24 = 0x11;\n    }" if (parenthesized_expression "(uVar11 < 0x1000000)" ( (binary_expression "uVar11 < 0x1000000" identifier < number_literal) )) (compound_statement "{\n      iVar24 = 0x11;\n    }" { (expression_statement "iVar24 = 0x11;" (assignment_expression "iVar24 = 0x11" identifier = number_literal) ;) })) }))) (expression_statement "iVar29 = 0;" (assignment_expression "iVar29 = 0" identifier = number_literal) ;) (expression_statement "uVar28 = 1;" (assignment_expression "uVar28 = 1" identifier = number_literal) ;) (expression_statement "uVar42 = (((1 << ((int)(0x1f - (iVar6 - (uint)(byte)PTR___gmpn_clz_tab_0009d18c[uVar11 >> iVar24])\n                         ) >> 1 & 0x1fU)) +\n            (1 << ((int)(0x1e - (iVar6 - (uint)(byte)PTR___gmpn_clz_tab_0009d18c[uVar11 >> iVar24]))\n                   >> 1 & 0x1fU))) - 5U | 1) / 3;" (assignment_expression "uVar42 = (((1 << ((int)(0x1f - (iVar6 - (uint)(byte)PTR___gmpn_clz_tab_0009d18c[uVar11 >> iVar24])\n                         ) >> 1 & 0x1fU)) +\n            (1 << ((int)(0x1e - (iVar6 - (uint)(byte)PTR___gmpn_clz_tab_0009d18c[uVar11 >> iVar24]))\n                   >> 1 & 0x1fU))) - 5U | 1) / 3" identifier = (binary_expression "(((1 << ((int)(0x1f - (iVar6 - (uint)(byte)PTR___gmpn_clz_tab_0009d18c[uVar11 >> iVar24])\n                         ) >> 1 & 0x1fU)) +\n            (1 << ((int)(0x1e - (iVar6 - (uint)(byte)PTR___gmpn_clz_tab_0009d18c[uVar11 >> iVar24]))\n                   >> 1 & 0x1fU))) - 5U | 1) / 3" (parenthesized_expression "(((1 << ((int)(0x1f - (iVar6 - (uint)(byte)PTR___gmpn_clz_tab_0009d18c[uVar11 >> iVar24])\n                         ) >> 1 & 0x1fU)) +\n            (1 << ((int)(0x1e - (iVar6 - (uint)(byte)PTR___gmpn_clz_tab_0009d18c[uVar11 >> iVar24]))\n                   >> 1 & 0x1fU))) - 5U | 1)" ( (binary_expression "((1 << ((int)(0x1f - (iVar6 - (uint)(byte)PTR___gmpn_clz_tab_0009d18c[uVar11 >> iVar24])\n                         ) >> 1 & 0x1fU)) +\n            (1 << ((int)(0x1e - (iVar6 - (uint)(byte)PTR___gmpn_clz_tab_0009d18c[uVar11 >> iVar24]))\n                   >> 1 & 0x1fU))) - 5U | 1" (binary_expression "((1 << ((int)(0x1f - (iVar6 - (uint)(byte)PTR___gmpn_clz_tab_0009d18c[uVar11 >> iVar24])\n                         ) >> 1 & 0x1fU)) +\n            (1 << ((int)(0x1e - (iVar6 - (uint)(byte)PTR___gmpn_clz_tab_0009d18c[uVar11 >> iVar24]))\n                   >> 1 & 0x1fU))) - 5U" (parenthesized_expression "((1 << ((int)(0x1f - (iVar6 - (uint)(byte)PTR___gmpn_clz_tab_0009d18c[uVar11 >> iVar24])\n                         ) >> 1 & 0x1fU)) +\n            (1 << ((int)(0x1e - (iVar6 - (uint)(byte)PTR___gmpn_clz_tab_0009d18c[uVar11 >> iVar24]))\n                   >> 1 & 0x1fU)))" ( (binary_expression "(1 << ((int)(0x1f - (iVar6 - (uint)(byte)PTR___gmpn_clz_tab_0009d18c[uVar11 >> iVar24])\n                         ) >> 1 & 0x1fU)) +\n            (1 << ((int)(0x1e - (iVar6 - (uint)(byte)PTR___gmpn_clz_tab_0009d18c[uVar11 >> iVar24]))\n                   >> 1 & 0x1fU))" (parenthesized_expression "(1 << ((int)(0x1f - (iVar6 - (uint)(byte)PTR___gmpn_clz_tab_0009d18c[uVar11 >> iVar24])\n                         ) >> 1 & 0x1fU))" ( (binary_expression "1 << ((int)(0x1f - (iVar6 - (uint)(byte)PTR___gmpn_clz_tab_0009d18c[uVar11 >> iVar24])\n                         ) >> 1 & 0x1fU)" number_literal << (parenthesized_expression "((int)(0x1f - (iVar6 - (uint)(byte)PTR___gmpn_clz_tab_0009d18c[uVar11 >> iVar24])\n                         ) >> 1 & 0x1fU)" ( (binary_expression "(int)(0x1f - (iVar6 - (uint)(byte)PTR___gmpn_clz_tab_0009d18c[uVar11 >> iVar24])\n                         ) >> 1 & 0x1fU" (binary_expression "(int)(0x1f - (iVar6 - (uint)(byte)PTR___gmpn_clz_tab_0009d18c[uVar11 >> iVar24])\n                         ) >> 1" (cast_expression "(int)(0x1f - (iVar6 - (uint)(byte)PTR___gmpn_clz_tab_0009d18c[uVar11 >> iVar24])\n                         )" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(0x1f - (iVar6 - (uint)(byte)PTR___gmpn_clz_tab_0009d18c[uVar11 >> iVar24])\n                         )" ( (binary_expression "0x1f - (iVar6 - (uint)(byte)PTR___gmpn_clz_tab_0009d18c[uVar11 >> iVar24])" number_literal - (parenthesized_expression "(iVar6 - (uint)(byte)PTR___gmpn_clz_tab_0009d18c[uVar11 >> iVar24])" ( (binary_expression "iVar6 - (uint)(byte)PTR___gmpn_clz_tab_0009d18c[uVar11 >> iVar24]" identifier - (cast_expression "(uint)(byte)PTR___gmpn_clz_tab_0009d18c[uVar11 >> iVar24]" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(byte)PTR___gmpn_clz_tab_0009d18c[uVar11 >> iVar24]" ( (type_descriptor "byte" type_identifier) ) (subscript_expression "PTR___gmpn_clz_tab_0009d18c[uVar11 >> iVar24]" identifier [ (binary_expression "uVar11 >> iVar24" identifier >> identifier) ])))) ))) ))) >> number_literal) & number_literal) ))) )) + (parenthesized_expression "(1 << ((int)(0x1e - (iVar6 - (uint)(byte)PTR___gmpn_clz_tab_0009d18c[uVar11 >> iVar24]))\n                   >> 1 & 0x1fU))" ( (binary_expression "1 << ((int)(0x1e - (iVar6 - (uint)(byte)PTR___gmpn_clz_tab_0009d18c[uVar11 >> iVar24]))\n                   >> 1 & 0x1fU)" number_literal << (parenthesized_expression "((int)(0x1e - (iVar6 - (uint)(byte)PTR___gmpn_clz_tab_0009d18c[uVar11 >> iVar24]))\n                   >> 1 & 0x1fU)" ( (binary_expression "(int)(0x1e - (iVar6 - (uint)(byte)PTR___gmpn_clz_tab_0009d18c[uVar11 >> iVar24]))\n                   >> 1 & 0x1fU" (binary_expression "(int)(0x1e - (iVar6 - (uint)(byte)PTR___gmpn_clz_tab_0009d18c[uVar11 >> iVar24]))\n                   >> 1" (cast_expression "(int)(0x1e - (iVar6 - (uint)(byte)PTR___gmpn_clz_tab_0009d18c[uVar11 >> iVar24]))" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(0x1e - (iVar6 - (uint)(byte)PTR___gmpn_clz_tab_0009d18c[uVar11 >> iVar24]))" ( (binary_expression "0x1e - (iVar6 - (uint)(byte)PTR___gmpn_clz_tab_0009d18c[uVar11 >> iVar24])" number_literal - (parenthesized_expression "(iVar6 - (uint)(byte)PTR___gmpn_clz_tab_0009d18c[uVar11 >> iVar24])" ( (binary_expression "iVar6 - (uint)(byte)PTR___gmpn_clz_tab_0009d18c[uVar11 >> iVar24]" identifier - (cast_expression "(uint)(byte)PTR___gmpn_clz_tab_0009d18c[uVar11 >> iVar24]" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(byte)PTR___gmpn_clz_tab_0009d18c[uVar11 >> iVar24]" ( (type_descriptor "byte" type_identifier) ) (subscript_expression "PTR___gmpn_clz_tab_0009d18c[uVar11 >> iVar24]" identifier [ (binary_expression "uVar11 >> iVar24" identifier >> identifier) ])))) ))) ))) >> number_literal) & number_literal) ))) ))) )) - number_literal) | number_literal) )) / number_literal)) ;) (expression_statement "uVar26 = uVar42 + 1;" (assignment_expression "uVar26 = uVar42 + 1" identifier = (binary_expression "uVar42 + 1" identifier + number_literal)) ;) (expression_statement "uVar11 = (uint)bVar3;" (assignment_expression "uVar11 = (uint)bVar3" identifier = (cast_expression "(uint)bVar3" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "uVar23 = 0;" (assignment_expression "uVar23 = 0" identifier = number_literal) ;) (do_statement "do {\n    uVar35 = uVar23 + 1;\n    uVar21 = uVar11;\n    if ((uVar28 & *(uint *)(puVar13 + iVar29 * 4)) == 0) {\n      uVar12 = (uVar35 & 1) + 1 + uVar35 * 3;\n      if (uVar53 < uVar7) {\n        uVar21 = uVar11 + 1;\n        puVar8[uVar11] = uVar7;\n        uVar7 = 1;\n      }\n      uVar27 = 0;\n      uVar11 = param_3;\n      uVar25 = param_2;\n      do {\n        if (uVar12 == 0) {\n          trap(7);\n        }\n        if (uVar12 == 0) {\n          trap(7);\n        }\n        uVar54 = uVar25 / uVar12;\n        bVar3 = uVar25 % uVar12 < uVar11 % uVar12 + uVar27;\n        if (bVar3) {\n          uVar7 = uVar7 * uVar12;\n        }\n        uVar27 = (uint)bVar3;\n        uVar11 = uVar11 / uVar12;\n        uVar25 = uVar54;\n      } while (uVar12 <= uVar54);\n    }\n    uVar28 = uVar28 * 2 - ((int)uVar28 >> 0x1f);\n    bVar3 = uVar23 != uVar42;\n    iVar29 = iVar29 + (uVar28 & 1);\n    uVar11 = uVar21;\n    uVar23 = uVar35;\n  } while (bVar3);" do (compound_statement "{\n    uVar35 = uVar23 + 1;\n    uVar21 = uVar11;\n    if ((uVar28 & *(uint *)(puVar13 + iVar29 * 4)) == 0) {\n      uVar12 = (uVar35 & 1) + 1 + uVar35 * 3;\n      if (uVar53 < uVar7) {\n        uVar21 = uVar11 + 1;\n        puVar8[uVar11] = uVar7;\n        uVar7 = 1;\n      }\n      uVar27 = 0;\n      uVar11 = param_3;\n      uVar25 = param_2;\n      do {\n        if (uVar12 == 0) {\n          trap(7);\n        }\n        if (uVar12 == 0) {\n          trap(7);\n        }\n        uVar54 = uVar25 / uVar12;\n        bVar3 = uVar25 % uVar12 < uVar11 % uVar12 + uVar27;\n        if (bVar3) {\n          uVar7 = uVar7 * uVar12;\n        }\n        uVar27 = (uint)bVar3;\n        uVar11 = uVar11 / uVar12;\n        uVar25 = uVar54;\n      } while (uVar12 <= uVar54);\n    }\n    uVar28 = uVar28 * 2 - ((int)uVar28 >> 0x1f);\n    bVar3 = uVar23 != uVar42;\n    iVar29 = iVar29 + (uVar28 & 1);\n    uVar11 = uVar21;\n    uVar23 = uVar35;\n  }" { (expression_statement "uVar35 = uVar23 + 1;" (assignment_expression "uVar35 = uVar23 + 1" identifier = (binary_expression "uVar23 + 1" identifier + number_literal)) ;) (expression_statement "uVar21 = uVar11;" (assignment_expression "uVar21 = uVar11" identifier = identifier) ;) (if_statement "if ((uVar28 & *(uint *)(puVar13 + iVar29 * 4)) == 0) {\n      uVar12 = (uVar35 & 1) + 1 + uVar35 * 3;\n      if (uVar53 < uVar7) {\n        uVar21 = uVar11 + 1;\n        puVar8[uVar11] = uVar7;\n        uVar7 = 1;\n      }\n      uVar27 = 0;\n      uVar11 = param_3;\n      uVar25 = param_2;\n      do {\n        if (uVar12 == 0) {\n          trap(7);\n        }\n        if (uVar12 == 0) {\n          trap(7);\n        }\n        uVar54 = uVar25 / uVar12;\n        bVar3 = uVar25 % uVar12 < uVar11 % uVar12 + uVar27;\n        if (bVar3) {\n          uVar7 = uVar7 * uVar12;\n        }\n        uVar27 = (uint)bVar3;\n        uVar11 = uVar11 / uVar12;\n        uVar25 = uVar54;\n      } while (uVar12 <= uVar54);\n    }" if (parenthesized_expression "((uVar28 & *(uint *)(puVar13 + iVar29 * 4)) == 0)" ( (binary_expression "(uVar28 & *(uint *)(puVar13 + iVar29 * 4)) == 0" (parenthesized_expression "(uVar28 & *(uint *)(puVar13 + iVar29 * 4))" ( (binary_expression "uVar28 & *(uint *)(puVar13 + iVar29 * 4)" identifier & (pointer_expression "*(uint *)(puVar13 + iVar29 * 4)" * (cast_expression "(uint *)(puVar13 + iVar29 * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar13 + iVar29 * 4)" ( (binary_expression "puVar13 + iVar29 * 4" identifier + (binary_expression "iVar29 * 4" identifier * number_literal)) ))))) )) == number_literal) )) (compound_statement "{\n      uVar12 = (uVar35 & 1) + 1 + uVar35 * 3;\n      if (uVar53 < uVar7) {\n        uVar21 = uVar11 + 1;\n        puVar8[uVar11] = uVar7;\n        uVar7 = 1;\n      }\n      uVar27 = 0;\n      uVar11 = param_3;\n      uVar25 = param_2;\n      do {\n        if (uVar12 == 0) {\n          trap(7);\n        }\n        if (uVar12 == 0) {\n          trap(7);\n        }\n        uVar54 = uVar25 / uVar12;\n        bVar3 = uVar25 % uVar12 < uVar11 % uVar12 + uVar27;\n        if (bVar3) {\n          uVar7 = uVar7 * uVar12;\n        }\n        uVar27 = (uint)bVar3;\n        uVar11 = uVar11 / uVar12;\n        uVar25 = uVar54;\n      } while (uVar12 <= uVar54);\n    }" { (expression_statement "uVar12 = (uVar35 & 1) + 1 + uVar35 * 3;" (assignment_expression "uVar12 = (uVar35 & 1) + 1 + uVar35 * 3" identifier = (binary_expression "(uVar35 & 1) + 1 + uVar35 * 3" (binary_expression "(uVar35 & 1) + 1" (parenthesized_expression "(uVar35 & 1)" ( (binary_expression "uVar35 & 1" identifier & number_literal) )) + number_literal) + (binary_expression "uVar35 * 3" identifier * number_literal))) ;) (if_statement "if (uVar53 < uVar7) {\n        uVar21 = uVar11 + 1;\n        puVar8[uVar11] = uVar7;\n        uVar7 = 1;\n      }" if (parenthesized_expression "(uVar53 < uVar7)" ( (binary_expression "uVar53 < uVar7" identifier < identifier) )) (compound_statement "{\n        uVar21 = uVar11 + 1;\n        puVar8[uVar11] = uVar7;\n        uVar7 = 1;\n      }" { (expression_statement "uVar21 = uVar11 + 1;" (assignment_expression "uVar21 = uVar11 + 1" identifier = (binary_expression "uVar11 + 1" identifier + number_literal)) ;) (expression_statement "puVar8[uVar11] = uVar7;" (assignment_expression "puVar8[uVar11] = uVar7" (subscript_expression "puVar8[uVar11]" identifier [ identifier ]) = identifier) ;) (expression_statement "uVar7 = 1;" (assignment_expression "uVar7 = 1" identifier = number_literal) ;) })) (expression_statement "uVar27 = 0;" (assignment_expression "uVar27 = 0" identifier = number_literal) ;) (expression_statement "uVar11 = param_3;" (assignment_expression "uVar11 = param_3" identifier = identifier) ;) (expression_statement "uVar25 = param_2;" (assignment_expression "uVar25 = param_2" identifier = identifier) ;) (do_statement "do {\n        if (uVar12 == 0) {\n          trap(7);\n        }\n        if (uVar12 == 0) {\n          trap(7);\n        }\n        uVar54 = uVar25 / uVar12;\n        bVar3 = uVar25 % uVar12 < uVar11 % uVar12 + uVar27;\n        if (bVar3) {\n          uVar7 = uVar7 * uVar12;\n        }\n        uVar27 = (uint)bVar3;\n        uVar11 = uVar11 / uVar12;\n        uVar25 = uVar54;\n      } while (uVar12 <= uVar54);" do (compound_statement "{\n        if (uVar12 == 0) {\n          trap(7);\n        }\n        if (uVar12 == 0) {\n          trap(7);\n        }\n        uVar54 = uVar25 / uVar12;\n        bVar3 = uVar25 % uVar12 < uVar11 % uVar12 + uVar27;\n        if (bVar3) {\n          uVar7 = uVar7 * uVar12;\n        }\n        uVar27 = (uint)bVar3;\n        uVar11 = uVar11 / uVar12;\n        uVar25 = uVar54;\n      }" { (if_statement "if (uVar12 == 0) {\n          trap(7);\n        }" if (parenthesized_expression "(uVar12 == 0)" ( (binary_expression "uVar12 == 0" identifier == number_literal) )) (compound_statement "{\n          trap(7);\n        }" { (expression_statement "trap(7);" (call_expression "trap(7)" identifier (argument_list "(7)" ( number_literal ))) ;) })) (if_statement "if (uVar12 == 0) {\n          trap(7);\n        }" if (parenthesized_expression "(uVar12 == 0)" ( (binary_expression "uVar12 == 0" identifier == number_literal) )) (compound_statement "{\n          trap(7);\n        }" { (expression_statement "trap(7);" (call_expression "trap(7)" identifier (argument_list "(7)" ( number_literal ))) ;) })) (expression_statement "uVar54 = uVar25 / uVar12;" (assignment_expression "uVar54 = uVar25 / uVar12" identifier = (binary_expression "uVar25 / uVar12" identifier / identifier)) ;) (expression_statement "bVar3 = uVar25 % uVar12 < uVar11 % uVar12 + uVar27;" (assignment_expression "bVar3 = uVar25 % uVar12 < uVar11 % uVar12 + uVar27" identifier = (binary_expression "uVar25 % uVar12 < uVar11 % uVar12 + uVar27" (binary_expression "uVar25 % uVar12" identifier % identifier) < (binary_expression "uVar11 % uVar12 + uVar27" (binary_expression "uVar11 % uVar12" identifier % identifier) + identifier))) ;) (if_statement "if (bVar3) {\n          uVar7 = uVar7 * uVar12;\n        }" if (parenthesized_expression "(bVar3)" ( identifier )) (compound_statement "{\n          uVar7 = uVar7 * uVar12;\n        }" { (expression_statement "uVar7 = uVar7 * uVar12;" (assignment_expression "uVar7 = uVar7 * uVar12" identifier = (binary_expression "uVar7 * uVar12" identifier * identifier)) ;) })) (expression_statement "uVar27 = (uint)bVar3;" (assignment_expression "uVar27 = (uint)bVar3" identifier = (cast_expression "(uint)bVar3" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "uVar11 = uVar11 / uVar12;" (assignment_expression "uVar11 = uVar11 / uVar12" identifier = (binary_expression "uVar11 / uVar12" identifier / identifier)) ;) (expression_statement "uVar25 = uVar54;" (assignment_expression "uVar25 = uVar54" identifier = identifier) ;) }) while (parenthesized_expression "(uVar12 <= uVar54)" ( (binary_expression "uVar12 <= uVar54" identifier <= identifier) )) ;) })) (expression_statement "uVar28 = uVar28 * 2 - ((int)uVar28 >> 0x1f);" (assignment_expression "uVar28 = uVar28 * 2 - ((int)uVar28 >> 0x1f)" identifier = (binary_expression "uVar28 * 2 - ((int)uVar28 >> 0x1f)" (binary_expression "uVar28 * 2" identifier * number_literal) - (parenthesized_expression "((int)uVar28 >> 0x1f)" ( (binary_expression "(int)uVar28 >> 0x1f" (cast_expression "(int)uVar28" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal) )))) ;) (expression_statement "bVar3 = uVar23 != uVar42;" (assignment_expression "bVar3 = uVar23 != uVar42" identifier = (binary_expression "uVar23 != uVar42" identifier != identifier)) ;) (expression_statement "iVar29 = iVar29 + (uVar28 & 1);" (assignment_expression "iVar29 = iVar29 + (uVar28 & 1)" identifier = (binary_expression "iVar29 + (uVar28 & 1)" identifier + (parenthesized_expression "(uVar28 & 1)" ( (binary_expression "uVar28 & 1" identifier & number_literal) )))) ;) (expression_statement "uVar11 = uVar21;" (assignment_expression "uVar11 = uVar21" identifier = identifier) ;) (expression_statement "uVar23 = uVar35;" (assignment_expression "uVar23 = uVar35" identifier = identifier) ;) }) while (parenthesized_expression "(bVar3)" ( identifier )) ;) (expression_statement "uVar23 = uVar26 >> 5;" (assignment_expression "uVar23 = uVar26 >> 5" identifier = (binary_expression "uVar26 >> 5" identifier >> number_literal)) ;) (expression_statement "uVar11 = 1 << (uVar26 & 0x1f);" (assignment_expression "uVar11 = 1 << (uVar26 & 0x1f)" identifier = (binary_expression "1 << (uVar26 & 0x1f)" number_literal << (parenthesized_expression "(uVar26 & 0x1f)" ( (binary_expression "uVar26 & 0x1f" identifier & number_literal) )))) ;) (expression_statement "uVar28 = (uVar40 - 5 | 1) / 3;" (assignment_expression "uVar28 = (uVar40 - 5 | 1) / 3" identifier = (binary_expression "(uVar40 - 5 | 1) / 3" (parenthesized_expression "(uVar40 - 5 | 1)" ( (binary_expression "uVar40 - 5 | 1" (binary_expression "uVar40 - 5" identifier - number_literal) | number_literal) )) / number_literal)) ;) (do_statement "do {\n    while( true ) {\n      uVar26 = uVar26 + 1;\n      uVar42 = uVar21;\n      if ((uVar11 & *(uint *)(puVar13 + uVar23 * 4)) == 0) break;\nLAB_00021e80:\n      uVar11 = uVar11 * 2 - ((int)uVar11 >> 0x1f);\n      uVar23 = uVar23 + (uVar11 & 1);\n      uVar21 = uVar42;\n      if (uVar28 < uVar26) goto LAB_00021f04;\n    }\n    uVar12 = (uVar26 & 1) + 1 + uVar26 * 3;\n    if (uVar12 == 0) {\n      trap(7);\n    }\n    if (uVar12 == 0) {\n      trap(7);\n    }\n    if (param_3 % uVar12 <= param_2 % uVar12) goto LAB_00021e80;\n    if (uVar53 << 1 < uVar7) {\n      uVar42 = uVar21 + 1;\n      puVar8[uVar21] = uVar7;\n      uVar7 = uVar12;\n      goto LAB_00021e80;\n    }\n    uVar11 = uVar11 * 2 - ((int)uVar11 >> 0x1f);\n    uVar7 = uVar7 * uVar12;\n    uVar23 = uVar23 + (uVar11 & 1);\n  } while (uVar26 <= uVar28);" do (compound_statement "{\n    while( true ) {\n      uVar26 = uVar26 + 1;\n      uVar42 = uVar21;\n      if ((uVar11 & *(uint *)(puVar13 + uVar23 * 4)) == 0) break;\nLAB_00021e80:\n      uVar11 = uVar11 * 2 - ((int)uVar11 >> 0x1f);\n      uVar23 = uVar23 + (uVar11 & 1);\n      uVar21 = uVar42;\n      if (uVar28 < uVar26) goto LAB_00021f04;\n    }\n    uVar12 = (uVar26 & 1) + 1 + uVar26 * 3;\n    if (uVar12 == 0) {\n      trap(7);\n    }\n    if (uVar12 == 0) {\n      trap(7);\n    }\n    if (param_3 % uVar12 <= param_2 % uVar12) goto LAB_00021e80;\n    if (uVar53 << 1 < uVar7) {\n      uVar42 = uVar21 + 1;\n      puVar8[uVar21] = uVar7;\n      uVar7 = uVar12;\n      goto LAB_00021e80;\n    }\n    uVar11 = uVar11 * 2 - ((int)uVar11 >> 0x1f);\n    uVar7 = uVar7 * uVar12;\n    uVar23 = uVar23 + (uVar11 & 1);\n  }" { (while_statement "while( true ) {\n      uVar26 = uVar26 + 1;\n      uVar42 = uVar21;\n      if ((uVar11 & *(uint *)(puVar13 + uVar23 * 4)) == 0) break;\nLAB_00021e80:\n      uVar11 = uVar11 * 2 - ((int)uVar11 >> 0x1f);\n      uVar23 = uVar23 + (uVar11 & 1);\n      uVar21 = uVar42;\n      if (uVar28 < uVar26) goto LAB_00021f04;\n    }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n      uVar26 = uVar26 + 1;\n      uVar42 = uVar21;\n      if ((uVar11 & *(uint *)(puVar13 + uVar23 * 4)) == 0) break;\nLAB_00021e80:\n      uVar11 = uVar11 * 2 - ((int)uVar11 >> 0x1f);\n      uVar23 = uVar23 + (uVar11 & 1);\n      uVar21 = uVar42;\n      if (uVar28 < uVar26) goto LAB_00021f04;\n    }" { (expression_statement "uVar26 = uVar26 + 1;" (assignment_expression "uVar26 = uVar26 + 1" identifier = (binary_expression "uVar26 + 1" identifier + number_literal)) ;) (expression_statement "uVar42 = uVar21;" (assignment_expression "uVar42 = uVar21" identifier = identifier) ;) (if_statement "if ((uVar11 & *(uint *)(puVar13 + uVar23 * 4)) == 0) break;" if (parenthesized_expression "((uVar11 & *(uint *)(puVar13 + uVar23 * 4)) == 0)" ( (binary_expression "(uVar11 & *(uint *)(puVar13 + uVar23 * 4)) == 0" (parenthesized_expression "(uVar11 & *(uint *)(puVar13 + uVar23 * 4))" ( (binary_expression "uVar11 & *(uint *)(puVar13 + uVar23 * 4)" identifier & (pointer_expression "*(uint *)(puVar13 + uVar23 * 4)" * (cast_expression "(uint *)(puVar13 + uVar23 * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar13 + uVar23 * 4)" ( (binary_expression "puVar13 + uVar23 * 4" identifier + (binary_expression "uVar23 * 4" identifier * number_literal)) ))))) )) == number_literal) )) (break_statement "break;" break ;)) (labeled_statement "LAB_00021e80:\n      uVar11 = uVar11 * 2 - ((int)uVar11 >> 0x1f);" statement_identifier : (expression_statement "uVar11 = uVar11 * 2 - ((int)uVar11 >> 0x1f);" (assignment_expression "uVar11 = uVar11 * 2 - ((int)uVar11 >> 0x1f)" identifier = (binary_expression "uVar11 * 2 - ((int)uVar11 >> 0x1f)" (binary_expression "uVar11 * 2" identifier * number_literal) - (parenthesized_expression "((int)uVar11 >> 0x1f)" ( (binary_expression "(int)uVar11 >> 0x1f" (cast_expression "(int)uVar11" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal) )))) ;)) (expression_statement "uVar23 = uVar23 + (uVar11 & 1);" (assignment_expression "uVar23 = uVar23 + (uVar11 & 1)" identifier = (binary_expression "uVar23 + (uVar11 & 1)" identifier + (parenthesized_expression "(uVar11 & 1)" ( (binary_expression "uVar11 & 1" identifier & number_literal) )))) ;) (expression_statement "uVar21 = uVar42;" (assignment_expression "uVar21 = uVar42" identifier = identifier) ;) (if_statement "if (uVar28 < uVar26) goto LAB_00021f04;" if (parenthesized_expression "(uVar28 < uVar26)" ( (binary_expression "uVar28 < uVar26" identifier < identifier) )) (goto_statement "goto LAB_00021f04;" goto statement_identifier ;)) })) (expression_statement "uVar12 = (uVar26 & 1) + 1 + uVar26 * 3;" (assignment_expression "uVar12 = (uVar26 & 1) + 1 + uVar26 * 3" identifier = (binary_expression "(uVar26 & 1) + 1 + uVar26 * 3" (binary_expression "(uVar26 & 1) + 1" (parenthesized_expression "(uVar26 & 1)" ( (binary_expression "uVar26 & 1" identifier & number_literal) )) + number_literal) + (binary_expression "uVar26 * 3" identifier * number_literal))) ;) (if_statement "if (uVar12 == 0) {\n      trap(7);\n    }" if (parenthesized_expression "(uVar12 == 0)" ( (binary_expression "uVar12 == 0" identifier == number_literal) )) (compound_statement "{\n      trap(7);\n    }" { (expression_statement "trap(7);" (call_expression "trap(7)" identifier (argument_list "(7)" ( number_literal ))) ;) })) (if_statement "if (uVar12 == 0) {\n      trap(7);\n    }" if (parenthesized_expression "(uVar12 == 0)" ( (binary_expression "uVar12 == 0" identifier == number_literal) )) (compound_statement "{\n      trap(7);\n    }" { (expression_statement "trap(7);" (call_expression "trap(7)" identifier (argument_list "(7)" ( number_literal ))) ;) })) (if_statement "if (param_3 % uVar12 <= param_2 % uVar12) goto LAB_00021e80;" if (parenthesized_expression "(param_3 % uVar12 <= param_2 % uVar12)" ( (binary_expression "param_3 % uVar12 <= param_2 % uVar12" (binary_expression "param_3 % uVar12" identifier % identifier) <= (binary_expression "param_2 % uVar12" identifier % identifier)) )) (goto_statement "goto LAB_00021e80;" goto statement_identifier ;)) (if_statement "if (uVar53 << 1 < uVar7) {\n      uVar42 = uVar21 + 1;\n      puVar8[uVar21] = uVar7;\n      uVar7 = uVar12;\n      goto LAB_00021e80;\n    }" if (parenthesized_expression "(uVar53 << 1 < uVar7)" ( (binary_expression "uVar53 << 1 < uVar7" (binary_expression "uVar53 << 1" identifier << number_literal) < identifier) )) (compound_statement "{\n      uVar42 = uVar21 + 1;\n      puVar8[uVar21] = uVar7;\n      uVar7 = uVar12;\n      goto LAB_00021e80;\n    }" { (expression_statement "uVar42 = uVar21 + 1;" (assignment_expression "uVar42 = uVar21 + 1" identifier = (binary_expression "uVar21 + 1" identifier + number_literal)) ;) (expression_statement "puVar8[uVar21] = uVar7;" (assignment_expression "puVar8[uVar21] = uVar7" (subscript_expression "puVar8[uVar21]" identifier [ identifier ]) = identifier) ;) (expression_statement "uVar7 = uVar12;" (assignment_expression "uVar7 = uVar12" identifier = identifier) ;) (goto_statement "goto LAB_00021e80;" goto statement_identifier ;) })) (expression_statement "uVar11 = uVar11 * 2 - ((int)uVar11 >> 0x1f);" (assignment_expression "uVar11 = uVar11 * 2 - ((int)uVar11 >> 0x1f)" identifier = (binary_expression "uVar11 * 2 - ((int)uVar11 >> 0x1f)" (binary_expression "uVar11 * 2" identifier * number_literal) - (parenthesized_expression "((int)uVar11 >> 0x1f)" ( (binary_expression "(int)uVar11 >> 0x1f" (cast_expression "(int)uVar11" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal) )))) ;) (expression_statement "uVar7 = uVar7 * uVar12;" (assignment_expression "uVar7 = uVar7 * uVar12" identifier = (binary_expression "uVar7 * uVar12" identifier * identifier)) ;) (expression_statement "uVar23 = uVar23 + (uVar11 & 1);" (assignment_expression "uVar23 = uVar23 + (uVar11 & 1)" identifier = (binary_expression "uVar23 + (uVar11 & 1)" identifier + (parenthesized_expression "(uVar11 & 1)" ( (binary_expression "uVar11 & 1" identifier & number_literal) )))) ;) }) while (parenthesized_expression "(uVar26 <= uVar28)" ( (binary_expression "uVar26 <= uVar28" identifier <= identifier) )) ;) (labeled_statement "LAB_00021f04:\n  uVar18 = (uVar18 - 5 | 1) / 3 + 1;" statement_identifier : (expression_statement "uVar18 = (uVar18 - 5 | 1) / 3 + 1;" (assignment_expression "uVar18 = (uVar18 - 5 | 1) / 3 + 1" identifier = (binary_expression "(uVar18 - 5 | 1) / 3 + 1" (binary_expression "(uVar18 - 5 | 1) / 3" (parenthesized_expression "(uVar18 - 5 | 1)" ( (binary_expression "uVar18 - 5 | 1" (binary_expression "uVar18 - 5" identifier - number_literal) | number_literal) )) / number_literal) + number_literal)) ;)) (expression_statement "uVar23 = uVar18 >> 5;" (assignment_expression "uVar23 = uVar18 >> 5" identifier = (binary_expression "uVar18 >> 5" identifier >> number_literal)) ;) (expression_statement "uVar37 = uVar37 / 3;" (assignment_expression "uVar37 = uVar37 / 3" identifier = (binary_expression "uVar37 / 3" identifier / number_literal)) ;) (expression_statement "uVar11 = 1 << (uVar18 & 0x1f);" (assignment_expression "uVar11 = 1 << (uVar18 & 0x1f)" identifier = (binary_expression "1 << (uVar18 & 0x1f)" number_literal << (parenthesized_expression "(uVar18 & 0x1f)" ( (binary_expression "uVar18 & 0x1f" identifier & number_literal) )))) ;) (do_statement "do {\n    while( true ) {\n      uVar18 = uVar18 + 1;\n      uVar26 = uVar42;\n      if ((uVar11 & *(uint *)(puVar13 + uVar23 * 4)) == 0) break;\nLAB_00021f58:\n      uVar11 = uVar11 * 2 - ((int)uVar11 >> 0x1f);\n      uVar23 = uVar23 + (uVar11 & 1);\n      uVar42 = uVar26;\n      if (uVar37 < uVar18) goto LAB_00021fb8;\n    }\n    uVar28 = (uVar18 & 1) + 1 + uVar18 * 3;\n    if ((uVar53 & 0x7fffffff) < uVar7) {\n      uVar26 = uVar42 + 1;\n      puVar8[uVar42] = uVar7;\n      uVar7 = uVar28;\n      goto LAB_00021f58;\n    }\n    uVar11 = uVar11 * 2 - ((int)uVar11 >> 0x1f);\n    uVar7 = uVar7 * uVar28;\n    uVar23 = uVar23 + (uVar11 & 1);\n  } while (uVar18 <= uVar37);" do (compound_statement "{\n    while( true ) {\n      uVar18 = uVar18 + 1;\n      uVar26 = uVar42;\n      if ((uVar11 & *(uint *)(puVar13 + uVar23 * 4)) == 0) break;\nLAB_00021f58:\n      uVar11 = uVar11 * 2 - ((int)uVar11 >> 0x1f);\n      uVar23 = uVar23 + (uVar11 & 1);\n      uVar42 = uVar26;\n      if (uVar37 < uVar18) goto LAB_00021fb8;\n    }\n    uVar28 = (uVar18 & 1) + 1 + uVar18 * 3;\n    if ((uVar53 & 0x7fffffff) < uVar7) {\n      uVar26 = uVar42 + 1;\n      puVar8[uVar42] = uVar7;\n      uVar7 = uVar28;\n      goto LAB_00021f58;\n    }\n    uVar11 = uVar11 * 2 - ((int)uVar11 >> 0x1f);\n    uVar7 = uVar7 * uVar28;\n    uVar23 = uVar23 + (uVar11 & 1);\n  }" { (while_statement "while( true ) {\n      uVar18 = uVar18 + 1;\n      uVar26 = uVar42;\n      if ((uVar11 & *(uint *)(puVar13 + uVar23 * 4)) == 0) break;\nLAB_00021f58:\n      uVar11 = uVar11 * 2 - ((int)uVar11 >> 0x1f);\n      uVar23 = uVar23 + (uVar11 & 1);\n      uVar42 = uVar26;\n      if (uVar37 < uVar18) goto LAB_00021fb8;\n    }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n      uVar18 = uVar18 + 1;\n      uVar26 = uVar42;\n      if ((uVar11 & *(uint *)(puVar13 + uVar23 * 4)) == 0) break;\nLAB_00021f58:\n      uVar11 = uVar11 * 2 - ((int)uVar11 >> 0x1f);\n      uVar23 = uVar23 + (uVar11 & 1);\n      uVar42 = uVar26;\n      if (uVar37 < uVar18) goto LAB_00021fb8;\n    }" { (expression_statement "uVar18 = uVar18 + 1;" (assignment_expression "uVar18 = uVar18 + 1" identifier = (binary_expression "uVar18 + 1" identifier + number_literal)) ;) (expression_statement "uVar26 = uVar42;" (assignment_expression "uVar26 = uVar42" identifier = identifier) ;) (if_statement "if ((uVar11 & *(uint *)(puVar13 + uVar23 * 4)) == 0) break;" if (parenthesized_expression "((uVar11 & *(uint *)(puVar13 + uVar23 * 4)) == 0)" ( (binary_expression "(uVar11 & *(uint *)(puVar13 + uVar23 * 4)) == 0" (parenthesized_expression "(uVar11 & *(uint *)(puVar13 + uVar23 * 4))" ( (binary_expression "uVar11 & *(uint *)(puVar13 + uVar23 * 4)" identifier & (pointer_expression "*(uint *)(puVar13 + uVar23 * 4)" * (cast_expression "(uint *)(puVar13 + uVar23 * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar13 + uVar23 * 4)" ( (binary_expression "puVar13 + uVar23 * 4" identifier + (binary_expression "uVar23 * 4" identifier * number_literal)) ))))) )) == number_literal) )) (break_statement "break;" break ;)) (labeled_statement "LAB_00021f58:\n      uVar11 = uVar11 * 2 - ((int)uVar11 >> 0x1f);" statement_identifier : (expression_statement "uVar11 = uVar11 * 2 - ((int)uVar11 >> 0x1f);" (assignment_expression "uVar11 = uVar11 * 2 - ((int)uVar11 >> 0x1f)" identifier = (binary_expression "uVar11 * 2 - ((int)uVar11 >> 0x1f)" (binary_expression "uVar11 * 2" identifier * number_literal) - (parenthesized_expression "((int)uVar11 >> 0x1f)" ( (binary_expression "(int)uVar11 >> 0x1f" (cast_expression "(int)uVar11" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal) )))) ;)) (expression_statement "uVar23 = uVar23 + (uVar11 & 1);" (assignment_expression "uVar23 = uVar23 + (uVar11 & 1)" identifier = (binary_expression "uVar23 + (uVar11 & 1)" identifier + (parenthesized_expression "(uVar11 & 1)" ( (binary_expression "uVar11 & 1" identifier & number_literal) )))) ;) (expression_statement "uVar42 = uVar26;" (assignment_expression "uVar42 = uVar26" identifier = identifier) ;) (if_statement "if (uVar37 < uVar18) goto LAB_00021fb8;" if (parenthesized_expression "(uVar37 < uVar18)" ( (binary_expression "uVar37 < uVar18" identifier < identifier) )) (goto_statement "goto LAB_00021fb8;" goto statement_identifier ;)) })) (expression_statement "uVar28 = (uVar18 & 1) + 1 + uVar18 * 3;" (assignment_expression "uVar28 = (uVar18 & 1) + 1 + uVar18 * 3" identifier = (binary_expression "(uVar18 & 1) + 1 + uVar18 * 3" (binary_expression "(uVar18 & 1) + 1" (parenthesized_expression "(uVar18 & 1)" ( (binary_expression "uVar18 & 1" identifier & number_literal) )) + number_literal) + (binary_expression "uVar18 * 3" identifier * number_literal))) ;) (if_statement "if ((uVar53 & 0x7fffffff) < uVar7) {\n      uVar26 = uVar42 + 1;\n      puVar8[uVar42] = uVar7;\n      uVar7 = uVar28;\n      goto LAB_00021f58;\n    }" if (parenthesized_expression "((uVar53 & 0x7fffffff) < uVar7)" ( (binary_expression "(uVar53 & 0x7fffffff) < uVar7" (parenthesized_expression "(uVar53 & 0x7fffffff)" ( (binary_expression "uVar53 & 0x7fffffff" identifier & number_literal) )) < identifier) )) (compound_statement "{\n      uVar26 = uVar42 + 1;\n      puVar8[uVar42] = uVar7;\n      uVar7 = uVar28;\n      goto LAB_00021f58;\n    }" { (expression_statement "uVar26 = uVar42 + 1;" (assignment_expression "uVar26 = uVar42 + 1" identifier = (binary_expression "uVar42 + 1" identifier + number_literal)) ;) (expression_statement "puVar8[uVar42] = uVar7;" (assignment_expression "puVar8[uVar42] = uVar7" (subscript_expression "puVar8[uVar42]" identifier [ identifier ]) = identifier) ;) (expression_statement "uVar7 = uVar28;" (assignment_expression "uVar7 = uVar28" identifier = identifier) ;) (goto_statement "goto LAB_00021f58;" goto statement_identifier ;) })) (expression_statement "uVar11 = uVar11 * 2 - ((int)uVar11 >> 0x1f);" (assignment_expression "uVar11 = uVar11 * 2 - ((int)uVar11 >> 0x1f)" identifier = (binary_expression "uVar11 * 2 - ((int)uVar11 >> 0x1f)" (binary_expression "uVar11 * 2" identifier * number_literal) - (parenthesized_expression "((int)uVar11 >> 0x1f)" ( (binary_expression "(int)uVar11 >> 0x1f" (cast_expression "(int)uVar11" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal) )))) ;) (expression_statement "uVar7 = uVar7 * uVar28;" (assignment_expression "uVar7 = uVar7 * uVar28" identifier = (binary_expression "uVar7 * uVar28" identifier * identifier)) ;) (expression_statement "uVar23 = uVar23 + (uVar11 & 1);" (assignment_expression "uVar23 = uVar23 + (uVar11 & 1)" identifier = (binary_expression "uVar23 + (uVar11 & 1)" identifier + (parenthesized_expression "(uVar11 & 1)" ( (binary_expression "uVar11 & 1" identifier & number_literal) )))) ;) }) while (parenthesized_expression "(uVar18 <= uVar37)" ( (binary_expression "uVar18 <= uVar37" identifier <= identifier) )) ;) (labeled_statement "LAB_00021fb8:\n  if (uVar26 == 0) {\n    **(uint **)(param_1 + 8) = uVar7;\n    *(undefined4 *)(param_1 + 4) = 1;\n    uVar18 = 0;\n    iVar6 = local_30;\n  }\n  else {\n    uVar18 = uVar26 + 1;\n    puVar8[uVar26] = uVar7;\n    (*(code *)PTR___gmpz_prodlimbs_0009d284)(param_1);\n    iVar6 = local_30;\n  }" statement_identifier : (if_statement "if (uVar26 == 0) {\n    **(uint **)(param_1 + 8) = uVar7;\n    *(undefined4 *)(param_1 + 4) = 1;\n    uVar18 = 0;\n    iVar6 = local_30;\n  }\n  else {\n    uVar18 = uVar26 + 1;\n    puVar8[uVar26] = uVar7;\n    (*(code *)PTR___gmpz_prodlimbs_0009d284)(param_1);\n    iVar6 = local_30;\n  }" if (parenthesized_expression "(uVar26 == 0)" ( (binary_expression "uVar26 == 0" identifier == number_literal) )) (compound_statement "{\n    **(uint **)(param_1 + 8) = uVar7;\n    *(undefined4 *)(param_1 + 4) = 1;\n    uVar18 = 0;\n    iVar6 = local_30;\n  }" { (expression_statement "**(uint **)(param_1 + 8) = uVar7;" (assignment_expression "**(uint **)(param_1 + 8) = uVar7" (pointer_expression "**(uint **)(param_1 + 8)" * (pointer_expression "*(uint **)(param_1 + 8)" * (cast_expression "(uint **)(param_1 + 8)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) ))))) = identifier) ;) (expression_statement "*(undefined4 *)(param_1 + 4) = 1;" (assignment_expression "*(undefined4 *)(param_1 + 4) = 1" (pointer_expression "*(undefined4 *)(param_1 + 4)" * (cast_expression "(undefined4 *)(param_1 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) )))) = number_literal) ;) (expression_statement "uVar18 = 0;" (assignment_expression "uVar18 = 0" identifier = number_literal) ;) (expression_statement "iVar6 = local_30;" (assignment_expression "iVar6 = local_30" identifier = identifier) ;) }) (else_clause "else {\n    uVar18 = uVar26 + 1;\n    puVar8[uVar26] = uVar7;\n    (*(code *)PTR___gmpz_prodlimbs_0009d284)(param_1);\n    iVar6 = local_30;\n  }" else (compound_statement "{\n    uVar18 = uVar26 + 1;\n    puVar8[uVar26] = uVar7;\n    (*(code *)PTR___gmpz_prodlimbs_0009d284)(param_1);\n    iVar6 = local_30;\n  }" { (expression_statement "uVar18 = uVar26 + 1;" (assignment_expression "uVar18 = uVar26 + 1" identifier = (binary_expression "uVar26 + 1" identifier + number_literal)) ;) (expression_statement "puVar8[uVar26] = uVar7;" (assignment_expression "puVar8[uVar26] = uVar7" (subscript_expression "puVar8[uVar26]" identifier [ identifier ]) = identifier) ;) (expression_statement "(*(code *)PTR___gmpz_prodlimbs_0009d284)(param_1);" (call_expression "(*(code *)PTR___gmpz_prodlimbs_0009d284)(param_1)" (parenthesized_expression "(*(code *)PTR___gmpz_prodlimbs_0009d284)" ( (pointer_expression "*(code *)PTR___gmpz_prodlimbs_0009d284" * (cast_expression "(code *)PTR___gmpz_prodlimbs_0009d284" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(param_1)" ( identifier ))) ;) (expression_statement "iVar6 = local_30;" (assignment_expression "iVar6 = local_30" identifier = identifier) ;) })))) (expression_statement "local_30 = iVar6;" (assignment_expression "local_30 = iVar6" identifier = identifier) ;) (if_statement "if (iVar6 != 0) {\n    (*(code *)PTR___gmp_tmp_reentrant_free_0009d618)();\n  }" if (parenthesized_expression "(iVar6 != 0)" ( (binary_expression "iVar6 != 0" identifier != number_literal) )) (compound_statement "{\n    (*(code *)PTR___gmp_tmp_reentrant_free_0009d618)();\n  }" { (expression_statement "(*(code *)PTR___gmp_tmp_reentrant_free_0009d618)();" (call_expression "(*(code *)PTR___gmp_tmp_reentrant_free_0009d618)()" (parenthesized_expression "(*(code *)PTR___gmp_tmp_reentrant_free_0009d618)" ( (pointer_expression "*(code *)PTR___gmp_tmp_reentrant_free_0009d618" * (cast_expression "(code *)PTR___gmp_tmp_reentrant_free_0009d618" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) })) (expression_statement "iVar24 = *(int *)puVar5;" (assignment_expression "iVar24 = *(int *)puVar5" identifier = (pointer_expression "*(int *)puVar5" * (cast_expression "(int *)puVar5" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;) (if_statement "if (local_2c == iVar24) {\n    return iVar24;\n  }" if (parenthesized_expression "(local_2c == iVar24)" ( (binary_expression "local_2c == iVar24" identifier == identifier) )) (compound_statement "{\n    return iVar24;\n  }" { (return_statement "return iVar24;" return identifier ;) })) (expression_statement "pcVar51 = FUN_0002209c;" (assignment_expression "pcVar51 = FUN_0002209c" identifier = identifier) ;) (expression_statement "puVar14 = PTR___stack_chk_fail_0009d4d0;" (assignment_expression "puVar14 = PTR___stack_chk_fail_0009d4d0" identifier = identifier) ;) (expression_statement "(*(code *)PTR___stack_chk_fail_0009d4d0)();" (call_expression "(*(code *)PTR___stack_chk_fail_0009d4d0)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_0009d4d0)" ( (pointer_expression "*(code *)PTR___stack_chk_fail_0009d4d0" * (cast_expression "(code *)PTR___stack_chk_fail_0009d4d0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (expression_statement "puVar43 = puVar14 + 0x82fa4;" (assignment_expression "puVar43 = puVar14 + 0x82fa4" identifier = (binary_expression "puVar14 + 0x82fa4" identifier + number_literal)) ;) (expression_statement "puVar47 = puVar46 + -0x90;" (assignment_expression "puVar47 = puVar46 + -0x90" identifier = (binary_expression "puVar46 + -0x90" identifier + number_literal)) ;) (expression_statement "puVar50 = puVar46 + -0x90;" (assignment_expression "puVar50 = puVar46 + -0x90" identifier = (binary_expression "puVar46 + -0x90" identifier + number_literal)) ;) (expression_statement "puVar49 = puVar46 + -0x90;" (assignment_expression "puVar49 = puVar46 + -0x90" identifier = (binary_expression "puVar46 + -0x90" identifier + number_literal)) ;) (expression_statement "*(int *)(puVar46 + -0x24) = param_1;" (assignment_expression "*(int *)(puVar46 + -0x24) = param_1" (pointer_expression "*(int *)(puVar46 + -0x24)" * (cast_expression "(int *)(puVar46 + -0x24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar46 + -0x24)" ( (binary_expression "puVar46 + -0x24" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined1 **)(puVar46 + -8) = auStack_48;" (assignment_expression "*(undefined1 **)(puVar46 + -8) = auStack_48" (pointer_expression "*(undefined1 **)(puVar46 + -8)" * (cast_expression "(undefined1 **)(puVar46 + -8)" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar46 + -8)" ( (binary_expression "puVar46 + -8" identifier + number_literal) )))) = identifier) ;) (expression_statement "puVar19 = *(undefined4 **)(puVar14 + 0x7b4a4);" (assignment_expression "puVar19 = *(undefined4 **)(puVar14 + 0x7b4a4)" identifier = (pointer_expression "*(undefined4 **)(puVar14 + 0x7b4a4)" * (cast_expression "(undefined4 **)(puVar14 + 0x7b4a4)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar14 + 0x7b4a4)" ( (binary_expression "puVar14 + 0x7b4a4" identifier + number_literal) ))))) ;) (expression_statement "*(code **)(puVar46 + -4) = pcVar51;" (assignment_expression "*(code **)(puVar46 + -4) = pcVar51" (pointer_expression "*(code **)(puVar46 + -4)" * (cast_expression "(code **)(puVar46 + -4)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar46 + -4)" ( (binary_expression "puVar46 + -4" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(puVar46 + -0x6c) = iVar6;" (assignment_expression "*(int *)(puVar46 + -0x6c) = iVar6" (pointer_expression "*(int *)(puVar46 + -0x6c)" * (cast_expression "(int *)(puVar46 + -0x6c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar46 + -0x6c)" ( (binary_expression "puVar46 + -0x6c" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(uint *)(puVar46 + -0xc) = uVar40;" (assignment_expression "*(uint *)(puVar46 + -0xc) = uVar40" (pointer_expression "*(uint *)(puVar46 + -0xc)" * (cast_expression "(uint *)(puVar46 + -0xc)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar46 + -0xc)" ( (binary_expression "puVar46 + -0xc" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(uint *)(puVar46 + -0x10) = param_3;" (assignment_expression "*(uint *)(puVar46 + -0x10) = param_3" (pointer_expression "*(uint *)(puVar46 + -0x10)" * (cast_expression "(uint *)(puVar46 + -0x10)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar46 + -0x10)" ( (binary_expression "puVar46 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(uint *)(puVar46 + -0x14) = uVar37;" (assignment_expression "*(uint *)(puVar46 + -0x14) = uVar37" (pointer_expression "*(uint *)(puVar46 + -0x14)" * (cast_expression "(uint *)(puVar46 + -0x14)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar46 + -0x14)" ( (binary_expression "puVar46 + -0x14" identifier + number_literal) )))) = identifier) ;) (expression_statement "uVar37 = (((uint)puVar8 >> 5) + 1) * 3;" (assignment_expression "uVar37 = (((uint)puVar8 >> 5) + 1) * 3" identifier = (binary_expression "(((uint)puVar8 >> 5) + 1) * 3" (parenthesized_expression "(((uint)puVar8 >> 5) + 1)" ( (binary_expression "((uint)puVar8 >> 5) + 1" (parenthesized_expression "((uint)puVar8 >> 5)" ( (binary_expression "(uint)puVar8 >> 5" (cast_expression "(uint)puVar8" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) )) + number_literal) )) * number_literal)) ;) (expression_statement "*(uint *)(puVar46 + -0x18) = uVar35;" (assignment_expression "*(uint *)(puVar46 + -0x18) = uVar35" (pointer_expression "*(uint *)(puVar46 + -0x18)" * (cast_expression "(uint *)(puVar46 + -0x18)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar46 + -0x18)" ( (binary_expression "puVar46 + -0x18" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined1 **)(puVar46 + -0x1c) = puVar13;" (assignment_expression "*(undefined1 **)(puVar46 + -0x1c) = puVar13" (pointer_expression "*(undefined1 **)(puVar46 + -0x1c)" * (cast_expression "(undefined1 **)(puVar46 + -0x1c)" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar46 + -0x1c)" ( (binary_expression "puVar46 + -0x1c" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(uint *)(puVar46 + -0x20) = param_2;" (assignment_expression "*(uint *)(puVar46 + -0x20) = param_2" (pointer_expression "*(uint *)(puVar46 + -0x20)" * (cast_expression "(uint *)(puVar46 + -0x20)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar46 + -0x20)" ( (binary_expression "puVar46 + -0x20" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined **)(puVar46 + -0x28) = puVar5;" (assignment_expression "*(undefined **)(puVar46 + -0x28) = puVar5" (pointer_expression "*(undefined **)(puVar46 + -0x28)" * (cast_expression "(undefined **)(puVar46 + -0x28)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar46 + -0x28)" ( (binary_expression "puVar46 + -0x28" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined **)(puVar46 + -0x78) = puVar43;" (assignment_expression "*(undefined **)(puVar46 + -0x78) = puVar43" (pointer_expression "*(undefined **)(puVar46 + -0x78)" * (cast_expression "(undefined **)(puVar46 + -0x78)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar46 + -0x78)" ( (binary_expression "puVar46 + -0x78" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 **)(puVar46 + -0x70) = puVar19;" (assignment_expression "*(undefined4 **)(puVar46 + -0x70) = puVar19" (pointer_expression "*(undefined4 **)(puVar46 + -0x70)" * (cast_expression "(undefined4 **)(puVar46 + -0x70)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar46 + -0x70)" ( (binary_expression "puVar46 + -0x70" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar46 + -0x30) = 0;" (assignment_expression "*(undefined4 *)(puVar46 + -0x30) = 0" (pointer_expression "*(undefined4 *)(puVar46 + -0x30)" * (cast_expression "(undefined4 *)(puVar46 + -0x30)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar46 + -0x30)" ( (binary_expression "puVar46 + -0x30" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(puVar46 + -0x2c) = *puVar19;" (assignment_expression "*(undefined4 *)(puVar46 + -0x2c) = *puVar19" (pointer_expression "*(undefined4 *)(puVar46 + -0x2c)" * (cast_expression "(undefined4 *)(puVar46 + -0x2c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar46 + -0x2c)" ( (binary_expression "puVar46 + -0x2c" identifier + number_literal) )))) = (pointer_expression "*puVar19" * identifier)) ;) (if_statement "if (uVar37 < 0x2a) {\n    uVar37 = 0x27;\n    if (uVar18 < 0x28) {\n      uVar37 = uVar18;\n    }\n    uVar37 = (uVar37 + 1) * 4;\n  }\n  else {\n    uVar37 = ((int)uVar37 >> 1) + 0x13;\n    if (uVar18 < uVar37) {\n      uVar37 = uVar18;\n    }\n    uVar37 = (uVar37 + 1) * 4;\n    pcVar51 = *(code **)(puVar14 + 0x7b254);\n    if (0x7f00 < uVar37) {\n      *(uint *)(puVar46 + 8) = uVar18;\n      puVar38 = (uint *)(*pcVar51)(puVar46 + -0x30);\n      puVar43 = *(undefined **)(puVar46 + -0x78);\n      uVar18 = *(uint *)(puVar46 + 8);\n      goto LAB_0002214c;\n    }\n  }" if (parenthesized_expression "(uVar37 < 0x2a)" ( (binary_expression "uVar37 < 0x2a" identifier < number_literal) )) (compound_statement "{\n    uVar37 = 0x27;\n    if (uVar18 < 0x28) {\n      uVar37 = uVar18;\n    }\n    uVar37 = (uVar37 + 1) * 4;\n  }" { (expression_statement "uVar37 = 0x27;" (assignment_expression "uVar37 = 0x27" identifier = number_literal) ;) (if_statement "if (uVar18 < 0x28) {\n      uVar37 = uVar18;\n    }" if (parenthesized_expression "(uVar18 < 0x28)" ( (binary_expression "uVar18 < 0x28" identifier < number_literal) )) (compound_statement "{\n      uVar37 = uVar18;\n    }" { (expression_statement "uVar37 = uVar18;" (assignment_expression "uVar37 = uVar18" identifier = identifier) ;) })) (expression_statement "uVar37 = (uVar37 + 1) * 4;" (assignment_expression "uVar37 = (uVar37 + 1) * 4" identifier = (binary_expression "(uVar37 + 1) * 4" (parenthesized_expression "(uVar37 + 1)" ( (binary_expression "uVar37 + 1" identifier + number_literal) )) * number_literal)) ;) }) (else_clause "else {\n    uVar37 = ((int)uVar37 >> 1) + 0x13;\n    if (uVar18 < uVar37) {\n      uVar37 = uVar18;\n    }\n    uVar37 = (uVar37 + 1) * 4;\n    pcVar51 = *(code **)(puVar14 + 0x7b254);\n    if (0x7f00 < uVar37) {\n      *(uint *)(puVar46 + 8) = uVar18;\n      puVar38 = (uint *)(*pcVar51)(puVar46 + -0x30);\n      puVar43 = *(undefined **)(puVar46 + -0x78);\n      uVar18 = *(uint *)(puVar46 + 8);\n      goto LAB_0002214c;\n    }\n  }" else (compound_statement "{\n    uVar37 = ((int)uVar37 >> 1) + 0x13;\n    if (uVar18 < uVar37) {\n      uVar37 = uVar18;\n    }\n    uVar37 = (uVar37 + 1) * 4;\n    pcVar51 = *(code **)(puVar14 + 0x7b254);\n    if (0x7f00 < uVar37) {\n      *(uint *)(puVar46 + 8) = uVar18;\n      puVar38 = (uint *)(*pcVar51)(puVar46 + -0x30);\n      puVar43 = *(undefined **)(puVar46 + -0x78);\n      uVar18 = *(uint *)(puVar46 + 8);\n      goto LAB_0002214c;\n    }\n  }" { (expression_statement "uVar37 = ((int)uVar37 >> 1) + 0x13;" (assignment_expression "uVar37 = ((int)uVar37 >> 1) + 0x13" identifier = (binary_expression "((int)uVar37 >> 1) + 0x13" (parenthesized_expression "((int)uVar37 >> 1)" ( (binary_expression "(int)uVar37 >> 1" (cast_expression "(int)uVar37" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal) )) + number_literal)) ;) (if_statement "if (uVar18 < uVar37) {\n      uVar37 = uVar18;\n    }" if (parenthesized_expression "(uVar18 < uVar37)" ( (binary_expression "uVar18 < uVar37" identifier < identifier) )) (compound_statement "{\n      uVar37 = uVar18;\n    }" { (expression_statement "uVar37 = uVar18;" (assignment_expression "uVar37 = uVar18" identifier = identifier) ;) })) (expression_statement "uVar37 = (uVar37 + 1) * 4;" (assignment_expression "uVar37 = (uVar37 + 1) * 4" identifier = (binary_expression "(uVar37 + 1) * 4" (parenthesized_expression "(uVar37 + 1)" ( (binary_expression "uVar37 + 1" identifier + number_literal) )) * number_literal)) ;) (expression_statement "pcVar51 = *(code **)(puVar14 + 0x7b254);" (assignment_expression "pcVar51 = *(code **)(puVar14 + 0x7b254)" identifier = (pointer_expression "*(code **)(puVar14 + 0x7b254)" * (cast_expression "(code **)(puVar14 + 0x7b254)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar14 + 0x7b254)" ( (binary_expression "puVar14 + 0x7b254" identifier + number_literal) ))))) ;) (if_statement "if (0x7f00 < uVar37) {\n      *(uint *)(puVar46 + 8) = uVar18;\n      puVar38 = (uint *)(*pcVar51)(puVar46 + -0x30);\n      puVar43 = *(undefined **)(puVar46 + -0x78);\n      uVar18 = *(uint *)(puVar46 + 8);\n      goto LAB_0002214c;\n    }" if (parenthesized_expression "(0x7f00 < uVar37)" ( (binary_expression "0x7f00 < uVar37" number_literal < identifier) )) (compound_statement "{\n      *(uint *)(puVar46 + 8) = uVar18;\n      puVar38 = (uint *)(*pcVar51)(puVar46 + -0x30);\n      puVar43 = *(undefined **)(puVar46 + -0x78);\n      uVar18 = *(uint *)(puVar46 + 8);\n      goto LAB_0002214c;\n    }" { (expression_statement "*(uint *)(puVar46 + 8) = uVar18;" (assignment_expression "*(uint *)(puVar46 + 8) = uVar18" (pointer_expression "*(uint *)(puVar46 + 8)" * (cast_expression "(uint *)(puVar46 + 8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar46 + 8)" ( (binary_expression "puVar46 + 8" identifier + number_literal) )))) = identifier) ;) (expression_statement "puVar38 = (uint *)(*pcVar51)(puVar46 + -0x30);" (assignment_expression "puVar38 = (uint *)(*pcVar51)(puVar46 + -0x30)" identifier = (cast_expression "(uint *)(*pcVar51)(puVar46 + -0x30)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(*pcVar51)(puVar46 + -0x30)" (parenthesized_expression "(*pcVar51)" ( (pointer_expression "*pcVar51" * identifier) )) (argument_list "(puVar46 + -0x30)" ( (binary_expression "puVar46 + -0x30" identifier + number_literal) ))))) ;) (expression_statement "puVar43 = *(undefined **)(puVar46 + -0x78);" (assignment_expression "puVar43 = *(undefined **)(puVar46 + -0x78)" identifier = (pointer_expression "*(undefined **)(puVar46 + -0x78)" * (cast_expression "(undefined **)(puVar46 + -0x78)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar46 + -0x78)" ( (binary_expression "puVar46 + -0x78" identifier + number_literal) ))))) ;) (expression_statement "uVar18 = *(uint *)(puVar46 + 8);" (assignment_expression "uVar18 = *(uint *)(puVar46 + 8)" identifier = (pointer_expression "*(uint *)(puVar46 + 8)" * (cast_expression "(uint *)(puVar46 + 8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar46 + 8)" ( (binary_expression "puVar46 + 8" identifier + number_literal) ))))) ;) (goto_statement "goto LAB_0002214c;" goto statement_identifier ;) })) }))) (expression_statement "iVar6 = -(uVar37 + 7 & 0xfffffff8);" (assignment_expression "iVar6 = -(uVar37 + 7 & 0xfffffff8)" identifier = (unary_expression "-(uVar37 + 7 & 0xfffffff8)" - (parenthesized_expression "(uVar37 + 7 & 0xfffffff8)" ( (binary_expression "uVar37 + 7 & 0xfffffff8" (binary_expression "uVar37 + 7" identifier + number_literal) & number_literal) )))) ;) (expression_statement "puVar47 = puVar46 + iVar6 + -0x90;" (assignment_expression "puVar47 = puVar46 + iVar6 + -0x90" identifier = (binary_expression "puVar46 + iVar6 + -0x90" (binary_expression "puVar46 + iVar6" identifier + identifier) + number_literal)) ;) (expression_statement "puVar38 = (uint *)(puVar46 + iVar6 + -0x78);" (assignment_expression "puVar38 = (uint *)(puVar46 + iVar6 + -0x78)" identifier = (cast_expression "(uint *)(puVar46 + iVar6 + -0x78)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar46 + iVar6 + -0x78)" ( (binary_expression "puVar46 + iVar6 + -0x78" (binary_expression "puVar46 + iVar6" identifier + identifier) + number_literal) )))) ;) (labeled_statement "LAB_0002214c:\n  iVar24 = *(int *)(puVar43 + -0x7c6c);" statement_identifier : (expression_statement "iVar24 = *(int *)(puVar43 + -0x7c6c);" (assignment_expression "iVar24 = *(int *)(puVar43 + -0x7c6c)" identifier = (pointer_expression "*(int *)(puVar43 + -0x7c6c)" * (cast_expression "(int *)(puVar43 + -0x7c6c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar43 + -0x7c6c)" ( (binary_expression "puVar43 + -0x7c6c" identifier + number_literal) ))))) ;)) (expression_statement "puVar36 = (uint *)(puVar47 + -0x40);" (assignment_expression "puVar36 = (uint *)(puVar47 + -0x40)" identifier = (cast_expression "(uint *)(puVar47 + -0x40)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar47 + -0x40)" ( (binary_expression "puVar47 + -0x40" identifier + number_literal) )))) ;) (expression_statement "puVar31 = (uint *)(iVar24 + 0x1c);" (assignment_expression "puVar31 = (uint *)(iVar24 + 0x1c)" identifier = (cast_expression "(uint *)(iVar24 + 0x1c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar24 + 0x1c)" ( (binary_expression "iVar24 + 0x1c" identifier + number_literal) )))) ;) (expression_statement "iVar6 = 8;" (assignment_expression "iVar6 = 8" identifier = number_literal) ;) (do_statement "do {\n    iVar29 = iVar6;\n    puVar9 = (uint *)*puVar31;\n    puVar31 = puVar31 + -1;\n    iVar6 = iVar29 + -1;\n  } while (puVar9 < puVar8);" do (compound_statement "{\n    iVar29 = iVar6;\n    puVar9 = (uint *)*puVar31;\n    puVar31 = puVar31 + -1;\n    iVar6 = iVar29 + -1;\n  }" { (expression_statement "iVar29 = iVar6;" (assignment_expression "iVar29 = iVar6" identifier = identifier) ;) (expression_statement "puVar9 = (uint *)*puVar31;" (assignment_expression "puVar9 = (uint *)*puVar31" identifier = (cast_expression "(uint *)*puVar31" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar31" * identifier))) ;) (expression_statement "puVar31 = puVar31 + -1;" (assignment_expression "puVar31 = puVar31 + -1" identifier = (binary_expression "puVar31 + -1" identifier + number_literal)) ;) (expression_statement "iVar6 = iVar29 + -1;" (assignment_expression "iVar6 = iVar29 + -1" identifier = (binary_expression "iVar29 + -1" identifier + number_literal)) ;) }) while (parenthesized_expression "(puVar9 < puVar8)" ( (binary_expression "puVar9 < puVar8" identifier < identifier) )) ;) (expression_statement "*(int *)(puVar46 + -0x68) = iVar29;" (assignment_expression "*(int *)(puVar46 + -0x68) = iVar29" (pointer_expression "*(int *)(puVar46 + -0x68)" * (cast_expression "(int *)(puVar46 + -0x68)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar46 + -0x68)" ( (binary_expression "puVar46 + -0x68" identifier + number_literal) )))) = identifier) ;) (expression_statement "puVar31 = (uint *)(iVar24 + 0x1c);" (assignment_expression "puVar31 = (uint *)(iVar24 + 0x1c)" identifier = (cast_expression "(uint *)(iVar24 + 0x1c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar24 + 0x1c)" ( (binary_expression "iVar24 + 0x1c" identifier + number_literal) )))) ;) (expression_statement "uVar37 = 8;" (assignment_expression "uVar37 = 8" identifier = number_literal) ;) (do_statement "do {\n    uVar7 = uVar37;\n    uVar11 = *puVar31;\n    puVar31 = puVar31 + -1;\n    uVar37 = uVar7 - 1;\n  } while (uVar11 < uVar18);" do (compound_statement "{\n    uVar7 = uVar37;\n    uVar11 = *puVar31;\n    puVar31 = puVar31 + -1;\n    uVar37 = uVar7 - 1;\n  }" { (expression_statement "uVar7 = uVar37;" (assignment_expression "uVar7 = uVar37" identifier = identifier) ;) (expression_statement "uVar11 = *puVar31;" (assignment_expression "uVar11 = *puVar31" identifier = (pointer_expression "*puVar31" * identifier)) ;) (expression_statement "puVar31 = puVar31 + -1;" (assignment_expression "puVar31 = puVar31 + -1" identifier = (binary_expression "puVar31 + -1" identifier + number_literal)) ;) (expression_statement "uVar37 = uVar7 - 1;" (assignment_expression "uVar37 = uVar7 - 1" identifier = (binary_expression "uVar7 - 1" identifier - number_literal)) ;) }) while (parenthesized_expression "(uVar11 < uVar18)" ( (binary_expression "uVar11 < uVar18" identifier < identifier) )) ;) (expression_statement "uVar10 = *(undefined4 *)(puVar43 + -0x7d3c);" (assignment_expression "uVar10 = *(undefined4 *)(puVar43 + -0x7d3c)" identifier = (pointer_expression "*(undefined4 *)(puVar43 + -0x7d3c)" * (cast_expression "(undefined4 *)(puVar43 + -0x7d3c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar43 + -0x7d3c)" ( (binary_expression "puVar43 + -0x7d3c" identifier + number_literal) ))))) ;) (expression_statement "iVar6 = 0x11;" (assignment_expression "iVar6 = 0x11" identifier = number_literal) ;) (expression_statement "*(undefined4 *)(puVar46 + -0x48) = 0;" (assignment_expression "*(undefined4 *)(puVar46 + -0x48) = 0" (pointer_expression "*(undefined4 *)(puVar46 + -0x48)" * (cast_expression "(undefined4 *)(puVar46 + -0x48)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar46 + -0x48)" ( (binary_expression "puVar46 + -0x48" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(puVar46 + -100) = uVar10;" (assignment_expression "*(undefined4 *)(puVar46 + -100) = uVar10" (pointer_expression "*(undefined4 *)(puVar46 + -100)" * (cast_expression "(undefined4 *)(puVar46 + -100)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar46 + -100)" ( (binary_expression "puVar46 + -100" identifier + number_literal) )))) = identifier) ;) (expression_statement "iVar24 = *(int *)(puVar43 + -0x7e20);" (assignment_expression "iVar24 = *(int *)(puVar43 + -0x7e20)" identifier = (pointer_expression "*(int *)(puVar43 + -0x7e20)" * (cast_expression "(int *)(puVar43 + -0x7e20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar43 + -0x7e20)" ( (binary_expression "puVar43 + -0x7e20" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar46 + -0x5c) = 0x3fffffff;" (assignment_expression "*(undefined4 *)(puVar46 + -0x5c) = 0x3fffffff" (pointer_expression "*(undefined4 *)(puVar46 + -0x5c)" * (cast_expression "(undefined4 *)(puVar46 + -0x5c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar46 + -0x5c)" ( (binary_expression "puVar46 + -0x5c" identifier + number_literal) )))) = number_literal) ;) (expression_statement "iVar29 = (int)puVar8 + (1 - uVar18);" (assignment_expression "iVar29 = (int)puVar8 + (1 - uVar18)" identifier = (binary_expression "(int)puVar8 + (1 - uVar18)" (cast_expression "(int)puVar8" ( (type_descriptor "int" primitive_type) ) identifier) + (parenthesized_expression "(1 - uVar18)" ( (binary_expression "1 - uVar18" number_literal - identifier) )))) ;) (expression_statement "*(uint *)(puVar46 + -0x40) = (uint)*(byte *)(iVar24 + 7);" (assignment_expression "*(uint *)(puVar46 + -0x40) = (uint)*(byte *)(iVar24 + 7)" (pointer_expression "*(uint *)(puVar46 + -0x40)" * (cast_expression "(uint *)(puVar46 + -0x40)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar46 + -0x40)" ( (binary_expression "puVar46 + -0x40" identifier + number_literal) )))) = (binary_expression "(uint)*(byte *)(iVar24 + 7)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)(iVar24 + 7)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar24 + 7)" ( (binary_expression "iVar24 + 7" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar46 + -0x3c) = *(undefined4 *)(puVar43 + -0x7eb4);" (assignment_expression "*(undefined4 *)(puVar46 + -0x3c) = *(undefined4 *)(puVar43 + -0x7eb4)" (pointer_expression "*(undefined4 *)(puVar46 + -0x3c)" * (cast_expression "(undefined4 *)(puVar46 + -0x3c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar46 + -0x3c)" ( (binary_expression "puVar46 + -0x3c" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(puVar43 + -0x7eb4)" * (cast_expression "(undefined4 *)(puVar43 + -0x7eb4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar43 + -0x7eb4)" ( (binary_expression "puVar43 + -0x7eb4" identifier + number_literal) ))))) ;) (expression_statement "*(uint *)(puVar46 + -0x60) = uVar18 + 1;" (assignment_expression "*(uint *)(puVar46 + -0x60) = uVar18 + 1" (pointer_expression "*(uint *)(puVar46 + -0x60)" * (cast_expression "(uint *)(puVar46 + -0x60)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar46 + -0x60)" ( (binary_expression "puVar46 + -0x60" identifier + number_literal) )))) = (binary_expression "uVar18 + 1" identifier + number_literal)) ;) (expression_statement "iVar24 = *(int *)(puVar46 + -0x60);" (assignment_expression "iVar24 = *(int *)(puVar46 + -0x60)" identifier = (pointer_expression "*(int *)(puVar46 + -0x60)" * (cast_expression "(int *)(puVar46 + -0x60)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar46 + -0x60)" ( (binary_expression "puVar46 + -0x60" identifier + number_literal) ))))) ;) (expression_statement "*puVar38 = 1;" (assignment_expression "*puVar38 = 1" (pointer_expression "*puVar38" * identifier) = number_literal) ;) (expression_statement "*(undefined4 *)(puVar46 + -0x44) = 1;" (assignment_expression "*(undefined4 *)(puVar46 + -0x44) = 1" (pointer_expression "*(undefined4 *)(puVar46 + -0x44)" * (cast_expression "(undefined4 *)(puVar46 + -0x44)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar46 + -0x44)" ( (binary_expression "puVar46 + -0x44" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(int *)(puVar46 + -0x34) = *(int *)(puVar43 + -0x7fe4) + -0x31a4;" (assignment_expression "*(int *)(puVar46 + -0x34) = *(int *)(puVar43 + -0x7fe4) + -0x31a4" (pointer_expression "*(int *)(puVar46 + -0x34)" * (cast_expression "(int *)(puVar46 + -0x34)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar46 + -0x34)" ( (binary_expression "puVar46 + -0x34" identifier + number_literal) )))) = (binary_expression "*(int *)(puVar43 + -0x7fe4) + -0x31a4" (pointer_expression "*(int *)(puVar43 + -0x7fe4)" * (cast_expression "(int *)(puVar43 + -0x7fe4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar43 + -0x7fe4)" ( (binary_expression "puVar43 + -0x7fe4" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "*(int *)(puVar46 + -0x38) = *(int *)(puVar43 + -0x7fd4) + 0x3630;" (assignment_expression "*(int *)(puVar46 + -0x38) = *(int *)(puVar43 + -0x7fd4) + 0x3630" (pointer_expression "*(int *)(puVar46 + -0x38)" * (cast_expression "(int *)(puVar46 + -0x38)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar46 + -0x38)" ( (binary_expression "puVar46 + -0x38" identifier + number_literal) )))) = (binary_expression "*(int *)(puVar43 + -0x7fd4) + 0x3630" (pointer_expression "*(int *)(puVar43 + -0x7fd4)" * (cast_expression "(int *)(puVar43 + -0x7fd4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar43 + -0x7fd4)" ( (binary_expression "puVar43 + -0x7fd4" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "*puVar36 = 0x260eeeeb;" (assignment_expression "*puVar36 = 0x260eeeeb" (pointer_expression "*puVar36" * identifier) = number_literal) ;) (if_statement "if (iVar24 - 0x11U <= uVar7) {\n    uVar7 = iVar24 - 0x11U;\n  }" if (parenthesized_expression "(iVar24 - 0x11U <= uVar7)" ( (binary_expression "iVar24 - 0x11U <= uVar7" (binary_expression "iVar24 - 0x11U" identifier - number_literal) <= identifier) )) (compound_statement "{\n    uVar7 = iVar24 - 0x11U;\n  }" { (expression_statement "uVar7 = iVar24 - 0x11U;" (assignment_expression "uVar7 = iVar24 - 0x11U" identifier = (binary_expression "iVar24 - 0x11U" identifier - number_literal)) ;) })) (expression_statement "puVar8 = (uint *)0x1;" (assignment_expression "puVar8 = (uint *)0x1" identifier = (cast_expression "(uint *)0x1" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "iVar39 = iVar6;" (assignment_expression "iVar39 = iVar6" identifier = identifier) ;) (if_statement "if (uVar7 == 0) goto LAB_00022534;" if (parenthesized_expression "(uVar7 == 0)" ( (binary_expression "uVar7 == 0" identifier == number_literal) )) (goto_statement "goto LAB_00022534;" goto statement_identifier ;)) (labeled_statement "LAB_00022234:\n  puVar31 = (uint *)0x1;" statement_identifier : (expression_statement "puVar31 = (uint *)0x1;" (assignment_expression "puVar31 = (uint *)0x1" identifier = (cast_expression "(uint *)0x1" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;)) (expression_statement "iVar41 = *(int *)(puVar46 + -0x40);" (assignment_expression "iVar41 = *(int *)(puVar46 + -0x40)" identifier = (pointer_expression "*(int *)(puVar46 + -0x40)" * (cast_expression "(int *)(puVar46 + -0x40)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar46 + -0x40)" ( (binary_expression "puVar46 + -0x40" identifier + number_literal) ))))) ;) (expression_statement "*(uint **)(puVar46 + -0x4c) = puVar8;" (assignment_expression "*(uint **)(puVar46 + -0x4c) = puVar8" (pointer_expression "*(uint **)(puVar46 + -0x4c)" * (cast_expression "(uint **)(puVar46 + -0x4c)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar46 + -0x4c)" ( (binary_expression "puVar46 + -0x4c" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(uint **)(puVar46 + -0x50) = puVar38;" (assignment_expression "*(uint **)(puVar46 + -0x50) = puVar38" (pointer_expression "*(uint **)(puVar46 + -0x50)" * (cast_expression "(uint **)(puVar46 + -0x50)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar46 + -0x50)" ( (binary_expression "puVar46 + -0x50" identifier + number_literal) )))) = identifier) ;) (do_statement "do {\n    iVar39 = iVar6 + uVar7;\n    uVar18 = (**(code **)(*(int *)(puVar46 + -0x34) + (uVar7 - 1) * 4))(iVar6);\n    if ((uVar18 & 0xff) == 0) {\n      uVar37 = uVar18 >> 8;\n      iVar6 = 6;\n      if ((uVar37 & 0xff) == 0) {\n        uVar37 = uVar18 >> 0x10;\n        iVar6 = 0xe;\n        if ((uVar37 & 0xff) == 0) {\n          uVar37 = uVar18 >> 0x18;\n          iVar6 = 0x1e;\n          if (uVar37 != 0) {\n            iVar6 = 0x16;\n          }\n        }\n      }\n      uVar37 = (uint)*(byte *)(*(int *)(puVar46 + -0x3c) + (-uVar37 & uVar37)) + iVar6;\n    }\n    else {\n      uVar37 = *(byte *)(*(int *)(puVar46 + -0x3c) + (-uVar18 & uVar18)) - 2;\n    }\n    iVar41 = iVar41 + *(byte *)(*(int *)(puVar46 + -0x38) + (uVar7 - 1)) + uVar37;\n    uVar18 = (**(code **)(*(int *)(puVar46 + -0x78) + -0x7f9c))\n                       (puVar36,puVar36,puVar31,uVar18 >> (uVar37 & 0x1f));\n    puVar43 = *(undefined **)(puVar46 + -0x78);\n    if ((uint)(iVar24 - iVar39) <= uVar7) {\n      uVar7 = iVar24 - iVar39;\n    }\n    puVar8 = puVar36 + (int)puVar31;\n    puVar31 = (uint *)((int)puVar31 + (uint)(uVar18 != 0));\n    *puVar8 = uVar18;\n    if (uVar7 == 0) {\n      puVar38 = *(uint **)(puVar46 + -0x50);\n      puVar8 = *(uint **)(puVar46 + -0x4c);\n      *(int *)(puVar46 + -0x40) = iVar41;\n      *(uint **)(puVar46 + -0x4c) = puVar36 + (int)((int)puVar31 + *(int *)(puVar46 + -0x5c));\n      goto LAB_00022340;\n    }\n    iVar6 = iVar39;\n  } while (puVar31 != (uint *)0x14);" do (compound_statement "{\n    iVar39 = iVar6 + uVar7;\n    uVar18 = (**(code **)(*(int *)(puVar46 + -0x34) + (uVar7 - 1) * 4))(iVar6);\n    if ((uVar18 & 0xff) == 0) {\n      uVar37 = uVar18 >> 8;\n      iVar6 = 6;\n      if ((uVar37 & 0xff) == 0) {\n        uVar37 = uVar18 >> 0x10;\n        iVar6 = 0xe;\n        if ((uVar37 & 0xff) == 0) {\n          uVar37 = uVar18 >> 0x18;\n          iVar6 = 0x1e;\n          if (uVar37 != 0) {\n            iVar6 = 0x16;\n          }\n        }\n      }\n      uVar37 = (uint)*(byte *)(*(int *)(puVar46 + -0x3c) + (-uVar37 & uVar37)) + iVar6;\n    }\n    else {\n      uVar37 = *(byte *)(*(int *)(puVar46 + -0x3c) + (-uVar18 & uVar18)) - 2;\n    }\n    iVar41 = iVar41 + *(byte *)(*(int *)(puVar46 + -0x38) + (uVar7 - 1)) + uVar37;\n    uVar18 = (**(code **)(*(int *)(puVar46 + -0x78) + -0x7f9c))\n                       (puVar36,puVar36,puVar31,uVar18 >> (uVar37 & 0x1f));\n    puVar43 = *(undefined **)(puVar46 + -0x78);\n    if ((uint)(iVar24 - iVar39) <= uVar7) {\n      uVar7 = iVar24 - iVar39;\n    }\n    puVar8 = puVar36 + (int)puVar31;\n    puVar31 = (uint *)((int)puVar31 + (uint)(uVar18 != 0));\n    *puVar8 = uVar18;\n    if (uVar7 == 0) {\n      puVar38 = *(uint **)(puVar46 + -0x50);\n      puVar8 = *(uint **)(puVar46 + -0x4c);\n      *(int *)(puVar46 + -0x40) = iVar41;\n      *(uint **)(puVar46 + -0x4c) = puVar36 + (int)((int)puVar31 + *(int *)(puVar46 + -0x5c));\n      goto LAB_00022340;\n    }\n    iVar6 = iVar39;\n  }" { (expression_statement "iVar39 = iVar6 + uVar7;" (assignment_expression "iVar39 = iVar6 + uVar7" identifier = (binary_expression "iVar6 + uVar7" identifier + identifier)) ;) (expression_statement "uVar18 = (**(code **)(*(int *)(puVar46 + -0x34) + (uVar7 - 1) * 4))(iVar6);" (assignment_expression "uVar18 = (**(code **)(*(int *)(puVar46 + -0x34) + (uVar7 - 1) * 4))(iVar6)" identifier = (call_expression "(**(code **)(*(int *)(puVar46 + -0x34) + (uVar7 - 1) * 4))(iVar6)" (parenthesized_expression "(**(code **)(*(int *)(puVar46 + -0x34) + (uVar7 - 1) * 4))" ( (pointer_expression "**(code **)(*(int *)(puVar46 + -0x34) + (uVar7 - 1) * 4)" * (pointer_expression "*(code **)(*(int *)(puVar46 + -0x34) + (uVar7 - 1) * 4)" * (cast_expression "(code **)(*(int *)(puVar46 + -0x34) + (uVar7 - 1) * 4)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)(puVar46 + -0x34) + (uVar7 - 1) * 4)" ( (binary_expression "*(int *)(puVar46 + -0x34) + (uVar7 - 1) * 4" (pointer_expression "*(int *)(puVar46 + -0x34)" * (cast_expression "(int *)(puVar46 + -0x34)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar46 + -0x34)" ( (binary_expression "puVar46 + -0x34" identifier + number_literal) )))) + (binary_expression "(uVar7 - 1) * 4" (parenthesized_expression "(uVar7 - 1)" ( (binary_expression "uVar7 - 1" identifier - number_literal) )) * number_literal)) ))))) )) (argument_list "(iVar6)" ( identifier )))) ;) (if_statement "if ((uVar18 & 0xff) == 0) {\n      uVar37 = uVar18 >> 8;\n      iVar6 = 6;\n      if ((uVar37 & 0xff) == 0) {\n        uVar37 = uVar18 >> 0x10;\n        iVar6 = 0xe;\n        if ((uVar37 & 0xff) == 0) {\n          uVar37 = uVar18 >> 0x18;\n          iVar6 = 0x1e;\n          if (uVar37 != 0) {\n            iVar6 = 0x16;\n          }\n        }\n      }\n      uVar37 = (uint)*(byte *)(*(int *)(puVar46 + -0x3c) + (-uVar37 & uVar37)) + iVar6;\n    }\n    else {\n      uVar37 = *(byte *)(*(int *)(puVar46 + -0x3c) + (-uVar18 & uVar18)) - 2;\n    }" if (parenthesized_expression "((uVar18 & 0xff) == 0)" ( (binary_expression "(uVar18 & 0xff) == 0" (parenthesized_expression "(uVar18 & 0xff)" ( (binary_expression "uVar18 & 0xff" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n      uVar37 = uVar18 >> 8;\n      iVar6 = 6;\n      if ((uVar37 & 0xff) == 0) {\n        uVar37 = uVar18 >> 0x10;\n        iVar6 = 0xe;\n        if ((uVar37 & 0xff) == 0) {\n          uVar37 = uVar18 >> 0x18;\n          iVar6 = 0x1e;\n          if (uVar37 != 0) {\n            iVar6 = 0x16;\n          }\n        }\n      }\n      uVar37 = (uint)*(byte *)(*(int *)(puVar46 + -0x3c) + (-uVar37 & uVar37)) + iVar6;\n    }" { (expression_statement "uVar37 = uVar18 >> 8;" (assignment_expression "uVar37 = uVar18 >> 8" identifier = (binary_expression "uVar18 >> 8" identifier >> number_literal)) ;) (expression_statement "iVar6 = 6;" (assignment_expression "iVar6 = 6" identifier = number_literal) ;) (if_statement "if ((uVar37 & 0xff) == 0) {\n        uVar37 = uVar18 >> 0x10;\n        iVar6 = 0xe;\n        if ((uVar37 & 0xff) == 0) {\n          uVar37 = uVar18 >> 0x18;\n          iVar6 = 0x1e;\n          if (uVar37 != 0) {\n            iVar6 = 0x16;\n          }\n        }\n      }" if (parenthesized_expression "((uVar37 & 0xff) == 0)" ( (binary_expression "(uVar37 & 0xff) == 0" (parenthesized_expression "(uVar37 & 0xff)" ( (binary_expression "uVar37 & 0xff" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n        uVar37 = uVar18 >> 0x10;\n        iVar6 = 0xe;\n        if ((uVar37 & 0xff) == 0) {\n          uVar37 = uVar18 >> 0x18;\n          iVar6 = 0x1e;\n          if (uVar37 != 0) {\n            iVar6 = 0x16;\n          }\n        }\n      }" { (expression_statement "uVar37 = uVar18 >> 0x10;" (assignment_expression "uVar37 = uVar18 >> 0x10" identifier = (binary_expression "uVar18 >> 0x10" identifier >> number_literal)) ;) (expression_statement "iVar6 = 0xe;" (assignment_expression "iVar6 = 0xe" identifier = number_literal) ;) (if_statement "if ((uVar37 & 0xff) == 0) {\n          uVar37 = uVar18 >> 0x18;\n          iVar6 = 0x1e;\n          if (uVar37 != 0) {\n            iVar6 = 0x16;\n          }\n        }" if (parenthesized_expression "((uVar37 & 0xff) == 0)" ( (binary_expression "(uVar37 & 0xff) == 0" (parenthesized_expression "(uVar37 & 0xff)" ( (binary_expression "uVar37 & 0xff" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n          uVar37 = uVar18 >> 0x18;\n          iVar6 = 0x1e;\n          if (uVar37 != 0) {\n            iVar6 = 0x16;\n          }\n        }" { (expression_statement "uVar37 = uVar18 >> 0x18;" (assignment_expression "uVar37 = uVar18 >> 0x18" identifier = (binary_expression "uVar18 >> 0x18" identifier >> number_literal)) ;) (expression_statement "iVar6 = 0x1e;" (assignment_expression "iVar6 = 0x1e" identifier = number_literal) ;) (if_statement "if (uVar37 != 0) {\n            iVar6 = 0x16;\n          }" if (parenthesized_expression "(uVar37 != 0)" ( (binary_expression "uVar37 != 0" identifier != number_literal) )) (compound_statement "{\n            iVar6 = 0x16;\n          }" { (expression_statement "iVar6 = 0x16;" (assignment_expression "iVar6 = 0x16" identifier = number_literal) ;) })) })) })) (expression_statement "uVar37 = (uint)*(byte *)(*(int *)(puVar46 + -0x3c) + (-uVar37 & uVar37)) + iVar6;" (assignment_expression "uVar37 = (uint)*(byte *)(*(int *)(puVar46 + -0x3c) + (-uVar37 & uVar37)) + iVar6" identifier = (binary_expression "(uint)*(byte *)(*(int *)(puVar46 + -0x3c) + (-uVar37 & uVar37)) + iVar6" (binary_expression "(uint)*(byte *)(*(int *)(puVar46 + -0x3c) + (-uVar37 & uVar37))" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)(*(int *)(puVar46 + -0x3c) + (-uVar37 & uVar37))" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(puVar46 + -0x3c) + (-uVar37 & uVar37))" ( (binary_expression "*(int *)(puVar46 + -0x3c) + (-uVar37 & uVar37)" (pointer_expression "*(int *)(puVar46 + -0x3c)" * (cast_expression "(int *)(puVar46 + -0x3c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar46 + -0x3c)" ( (binary_expression "puVar46 + -0x3c" identifier + number_literal) )))) + (parenthesized_expression "(-uVar37 & uVar37)" ( (binary_expression "-uVar37 & uVar37" (unary_expression "-uVar37" - identifier) & identifier) ))) )))) + identifier)) ;) }) (else_clause "else {\n      uVar37 = *(byte *)(*(int *)(puVar46 + -0x3c) + (-uVar18 & uVar18)) - 2;\n    }" else (compound_statement "{\n      uVar37 = *(byte *)(*(int *)(puVar46 + -0x3c) + (-uVar18 & uVar18)) - 2;\n    }" { (expression_statement "uVar37 = *(byte *)(*(int *)(puVar46 + -0x3c) + (-uVar18 & uVar18)) - 2;" (assignment_expression "uVar37 = *(byte *)(*(int *)(puVar46 + -0x3c) + (-uVar18 & uVar18)) - 2" identifier = (binary_expression "*(byte *)(*(int *)(puVar46 + -0x3c) + (-uVar18 & uVar18)) - 2" (pointer_expression "*(byte *)(*(int *)(puVar46 + -0x3c) + (-uVar18 & uVar18))" * (cast_expression "(byte *)(*(int *)(puVar46 + -0x3c) + (-uVar18 & uVar18))" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(puVar46 + -0x3c) + (-uVar18 & uVar18))" ( (binary_expression "*(int *)(puVar46 + -0x3c) + (-uVar18 & uVar18)" (pointer_expression "*(int *)(puVar46 + -0x3c)" * (cast_expression "(int *)(puVar46 + -0x3c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar46 + -0x3c)" ( (binary_expression "puVar46 + -0x3c" identifier + number_literal) )))) + (parenthesized_expression "(-uVar18 & uVar18)" ( (binary_expression "-uVar18 & uVar18" (unary_expression "-uVar18" - identifier) & identifier) ))) )))) - number_literal)) ;) }))) (expression_statement "iVar41 = iVar41 + *(byte *)(*(int *)(puVar46 + -0x38) + (uVar7 - 1)) + uVar37;" (assignment_expression "iVar41 = iVar41 + *(byte *)(*(int *)(puVar46 + -0x38) + (uVar7 - 1)) + uVar37" identifier = (binary_expression "iVar41 + *(byte *)(*(int *)(puVar46 + -0x38) + (uVar7 - 1)) + uVar37" (binary_expression "iVar41 + *(byte *)(*(int *)(puVar46 + -0x38) + (uVar7 - 1))" identifier + (pointer_expression "*(byte *)(*(int *)(puVar46 + -0x38) + (uVar7 - 1))" * (cast_expression "(byte *)(*(int *)(puVar46 + -0x38) + (uVar7 - 1))" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(puVar46 + -0x38) + (uVar7 - 1))" ( (binary_expression "*(int *)(puVar46 + -0x38) + (uVar7 - 1)" (pointer_expression "*(int *)(puVar46 + -0x38)" * (cast_expression "(int *)(puVar46 + -0x38)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar46 + -0x38)" ( (binary_expression "puVar46 + -0x38" identifier + number_literal) )))) + (parenthesized_expression "(uVar7 - 1)" ( (binary_expression "uVar7 - 1" identifier - number_literal) ))) ))))) + identifier)) ;) (expression_statement "uVar18 = (**(code **)(*(int *)(puVar46 + -0x78) + -0x7f9c))\n                       (puVar36,puVar36,puVar31,uVar18 >> (uVar37 & 0x1f));" (assignment_expression "uVar18 = (**(code **)(*(int *)(puVar46 + -0x78) + -0x7f9c))\n                       (puVar36,puVar36,puVar31,uVar18 >> (uVar37 & 0x1f))" identifier = (call_expression "(**(code **)(*(int *)(puVar46 + -0x78) + -0x7f9c))\n                       (puVar36,puVar36,puVar31,uVar18 >> (uVar37 & 0x1f))" (parenthesized_expression "(**(code **)(*(int *)(puVar46 + -0x78) + -0x7f9c))" ( (pointer_expression "**(code **)(*(int *)(puVar46 + -0x78) + -0x7f9c)" * (pointer_expression "*(code **)(*(int *)(puVar46 + -0x78) + -0x7f9c)" * (cast_expression "(code **)(*(int *)(puVar46 + -0x78) + -0x7f9c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)(puVar46 + -0x78) + -0x7f9c)" ( (binary_expression "*(int *)(puVar46 + -0x78) + -0x7f9c" (pointer_expression "*(int *)(puVar46 + -0x78)" * (cast_expression "(int *)(puVar46 + -0x78)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar46 + -0x78)" ( (binary_expression "puVar46 + -0x78" identifier + number_literal) )))) + number_literal) ))))) )) (argument_list "(puVar36,puVar36,puVar31,uVar18 >> (uVar37 & 0x1f))" ( identifier , identifier , identifier , (binary_expression "uVar18 >> (uVar37 & 0x1f)" identifier >> (parenthesized_expression "(uVar37 & 0x1f)" ( (binary_expression "uVar37 & 0x1f" identifier & number_literal) ))) )))) ;) (expression_statement "puVar43 = *(undefined **)(puVar46 + -0x78);" (assignment_expression "puVar43 = *(undefined **)(puVar46 + -0x78)" identifier = (pointer_expression "*(undefined **)(puVar46 + -0x78)" * (cast_expression "(undefined **)(puVar46 + -0x78)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar46 + -0x78)" ( (binary_expression "puVar46 + -0x78" identifier + number_literal) ))))) ;) (if_statement "if ((uint)(iVar24 - iVar39) <= uVar7) {\n      uVar7 = iVar24 - iVar39;\n    }" if (parenthesized_expression "((uint)(iVar24 - iVar39) <= uVar7)" ( (binary_expression "(uint)(iVar24 - iVar39) <= uVar7" (call_expression "(uint)(iVar24 - iVar39)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(iVar24 - iVar39)" ( (binary_expression "iVar24 - iVar39" identifier - identifier) ))) <= identifier) )) (compound_statement "{\n      uVar7 = iVar24 - iVar39;\n    }" { (expression_statement "uVar7 = iVar24 - iVar39;" (assignment_expression "uVar7 = iVar24 - iVar39" identifier = (binary_expression "iVar24 - iVar39" identifier - identifier)) ;) })) (expression_statement "puVar8 = puVar36 + (int)puVar31;" (assignment_expression "puVar8 = puVar36 + (int)puVar31" identifier = (binary_expression "puVar36 + (int)puVar31" identifier + (cast_expression "(int)puVar31" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "puVar31 = (uint *)((int)puVar31 + (uint)(uVar18 != 0));" (assignment_expression "puVar31 = (uint *)((int)puVar31 + (uint)(uVar18 != 0))" identifier = (cast_expression "(uint *)((int)puVar31 + (uint)(uVar18 != 0))" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar31 + (uint)(uVar18 != 0))" ( (binary_expression "(int)puVar31 + (uint)(uVar18 != 0)" (cast_expression "(int)puVar31" ( (type_descriptor "int" primitive_type) ) identifier) + (call_expression "(uint)(uVar18 != 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar18 != 0)" ( (binary_expression "uVar18 != 0" identifier != number_literal) )))) )))) ;) (expression_statement "*puVar8 = uVar18;" (assignment_expression "*puVar8 = uVar18" (pointer_expression "*puVar8" * identifier) = identifier) ;) (if_statement "if (uVar7 == 0) {\n      puVar38 = *(uint **)(puVar46 + -0x50);\n      puVar8 = *(uint **)(puVar46 + -0x4c);\n      *(int *)(puVar46 + -0x40) = iVar41;\n      *(uint **)(puVar46 + -0x4c) = puVar36 + (int)((int)puVar31 + *(int *)(puVar46 + -0x5c));\n      goto LAB_00022340;\n    }" if (parenthesized_expression "(uVar7 == 0)" ( (binary_expression "uVar7 == 0" identifier == number_literal) )) (compound_statement "{\n      puVar38 = *(uint **)(puVar46 + -0x50);\n      puVar8 = *(uint **)(puVar46 + -0x4c);\n      *(int *)(puVar46 + -0x40) = iVar41;\n      *(uint **)(puVar46 + -0x4c) = puVar36 + (int)((int)puVar31 + *(int *)(puVar46 + -0x5c));\n      goto LAB_00022340;\n    }" { (expression_statement "puVar38 = *(uint **)(puVar46 + -0x50);" (assignment_expression "puVar38 = *(uint **)(puVar46 + -0x50)" identifier = (pointer_expression "*(uint **)(puVar46 + -0x50)" * (cast_expression "(uint **)(puVar46 + -0x50)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar46 + -0x50)" ( (binary_expression "puVar46 + -0x50" identifier + number_literal) ))))) ;) (expression_statement "puVar8 = *(uint **)(puVar46 + -0x4c);" (assignment_expression "puVar8 = *(uint **)(puVar46 + -0x4c)" identifier = (pointer_expression "*(uint **)(puVar46 + -0x4c)" * (cast_expression "(uint **)(puVar46 + -0x4c)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar46 + -0x4c)" ( (binary_expression "puVar46 + -0x4c" identifier + number_literal) ))))) ;) (expression_statement "*(int *)(puVar46 + -0x40) = iVar41;" (assignment_expression "*(int *)(puVar46 + -0x40) = iVar41" (pointer_expression "*(int *)(puVar46 + -0x40)" * (cast_expression "(int *)(puVar46 + -0x40)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar46 + -0x40)" ( (binary_expression "puVar46 + -0x40" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(uint **)(puVar46 + -0x4c) = puVar36 + (int)((int)puVar31 + *(int *)(puVar46 + -0x5c));" (assignment_expression "*(uint **)(puVar46 + -0x4c) = puVar36 + (int)((int)puVar31 + *(int *)(puVar46 + -0x5c))" (pointer_expression "*(uint **)(puVar46 + -0x4c)" * (cast_expression "(uint **)(puVar46 + -0x4c)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar46 + -0x4c)" ( (binary_expression "puVar46 + -0x4c" identifier + number_literal) )))) = (binary_expression "puVar36 + (int)((int)puVar31 + *(int *)(puVar46 + -0x5c))" identifier + (cast_expression "(int)((int)puVar31 + *(int *)(puVar46 + -0x5c))" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((int)puVar31 + *(int *)(puVar46 + -0x5c))" ( (binary_expression "(int)puVar31 + *(int *)(puVar46 + -0x5c)" (cast_expression "(int)puVar31" ( (type_descriptor "int" primitive_type) ) identifier) + (pointer_expression "*(int *)(puVar46 + -0x5c)" * (cast_expression "(int *)(puVar46 + -0x5c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar46 + -0x5c)" ( (binary_expression "puVar46 + -0x5c" identifier + number_literal) ))))) ))))) ;) (goto_statement "goto LAB_00022340;" goto statement_identifier ;) })) (expression_statement "iVar6 = iVar39;" (assignment_expression "iVar6 = iVar39" identifier = identifier) ;) }) while (parenthesized_expression "(puVar31 != (uint *)0x14)" ( (binary_expression "puVar31 != (uint *)0x14" identifier != (cast_expression "(uint *)0x14" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) ;) (expression_statement "puVar8 = *(uint **)(puVar46 + -0x4c);" (assignment_expression "puVar8 = *(uint **)(puVar46 + -0x4c)" identifier = (pointer_expression "*(uint **)(puVar46 + -0x4c)" * (cast_expression "(uint **)(puVar46 + -0x4c)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar46 + -0x4c)" ( (binary_expression "puVar46 + -0x4c" identifier + number_literal) ))))) ;) (expression_statement "puVar38 = *(uint **)(puVar46 + -0x50);" (assignment_expression "puVar38 = *(uint **)(puVar46 + -0x50)" identifier = (pointer_expression "*(uint **)(puVar46 + -0x50)" * (cast_expression "(uint **)(puVar46 + -0x50)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar46 + -0x50)" ( (binary_expression "puVar46 + -0x50" identifier + number_literal) ))))) ;) (expression_statement "*(int *)(puVar46 + -0x40) = iVar41;" (assignment_expression "*(int *)(puVar46 + -0x40) = iVar41" (pointer_expression "*(int *)(puVar46 + -0x40)" * (cast_expression "(int *)(puVar46 + -0x40)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar46 + -0x40)" ( (binary_expression "puVar46 + -0x40" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(uint **)(puVar46 + -0x4c) = puVar36 + 0x13;" (assignment_expression "*(uint **)(puVar46 + -0x4c) = puVar36 + 0x13" (pointer_expression "*(uint **)(puVar46 + -0x4c)" * (cast_expression "(uint **)(puVar46 + -0x4c)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar46 + -0x4c)" ( (binary_expression "puVar46 + -0x4c" identifier + number_literal) )))) = (binary_expression "puVar36 + 0x13" identifier + number_literal)) ;) (labeled_statement "LAB_00022340:\n  do {\n    iVar41 = iVar39 - *(int *)(puVar46 + -0x44);\n    iVar24 = *(int *)(puVar46 + -0x5c);\n    iVar6 = iVar41;\n    if (iVar41 != 0) {\n      *(uint *)(puVar46 + -0x44) = uVar7;\n      *(uint **)(puVar46 + -0x50) = puVar31;\n      *(uint **)(puVar46 + -0x54) = puVar36;\n      *(int *)(puVar46 + -0x58) = iVar39;\n      iVar6 = *(int *)(puVar46 + -0x48);\n      iVar39 = *(int *)(puVar46 + -0x68);\n      iVar24 = iVar29;\n      do {\n        iVar33 = iVar41;\n        if (iVar39 <= iVar41) {\n          iVar33 = iVar39;\n        }\n        iVar29 = iVar24 + iVar33;\n        uVar18 = (**(code **)(*(int *)(puVar46 + -0x34) + (iVar33 + -1) * 4))(iVar24);\n        if ((uVar18 & 0xff) == 0) {\n          uVar37 = uVar18 >> 8;\n          iVar24 = 6;\n          if ((uVar37 & 0xff) == 0) {\n            uVar37 = uVar18 >> 0x10;\n            iVar24 = 0xe;\n            if ((uVar37 & 0xff) == 0) {\n              uVar37 = uVar18 >> 0x18;\n              iVar24 = 0x16;\n              if (uVar37 == 0) {\n                iVar24 = 0x1e;\n              }\n            }\n          }\n          uVar37 = (uint)*(byte *)(*(int *)(puVar46 + -0x3c) + (-uVar37 & uVar37)) + iVar24;\n        }\n        else {\n          uVar37 = *(byte *)(*(int *)(puVar46 + -0x3c) + (-uVar18 & uVar18)) - 2;\n        }\n        iVar41 = iVar41 - iVar33;\n        iVar6 = iVar6 + *(byte *)(*(int *)(puVar46 + -0x38) + iVar33 + -1) + uVar37;\n        uVar18 = (**(code **)(*(int *)(puVar46 + -0x78) + -0x7f9c))\n                           (puVar38,puVar38,puVar8,uVar18 >> (uVar37 & 0x1f));\n        puVar43 = *(undefined **)(puVar46 + -0x78);\n        puVar31 = puVar38 + (int)puVar8;\n        puVar8 = (uint *)((int)puVar8 + (uint)(uVar18 != 0));\n        *puVar31 = uVar18;\n        iVar24 = iVar29;\n      } while (iVar41 != 0);\n      uVar7 = *(uint *)(puVar46 + -0x44);\n      puVar31 = *(uint **)(puVar46 + -0x50);\n      puVar36 = *(uint **)(puVar46 + -0x54);\n      iVar39 = *(int *)(puVar46 + -0x58);\n      *(int *)(puVar46 + -0x48) = iVar6;\n      iVar24 = *(int *)(puVar46 + -0x5c);\n    }\n    uVar37 = *puVar36;\n    pcVar51 = *(code **)(puVar43 + -0x7bc0);\n    uVar18 = (uint)*(byte *)(*(int *)(puVar46 + -100) + ((uVar37 << 0x18) >> 0x19));\n    puVar8 = (uint *)((int)puVar8 +\n                     ((puVar38[(int)((int)puVar8 + iVar24)] < **(uint **)(puVar46 + -0x4c) ^ 1) -\n                     (int)puVar31));\n    iVar24 = uVar18 * 2 - uVar18 * uVar18 * uVar37;\n    if ((int)puVar8 < (int)puVar31) {\n      puVar31 = puVar8;\n    }\n    *(uint **)(puVar47 + -0x48) = puVar31;\n    *(uint *)(puVar47 + -0x44) = iVar24 * iVar24 * uVar37 + iVar24 * -2;\n    puVar9 = puVar38;\n    puVar22 = puVar8;\n    (*pcVar51)(puVar38,puVar38,puVar8,puVar36);\n    iVar24 = *(int *)(puVar46 + -0x78);\n    if (uVar7 == 0) {\n      if (*(int *)(puVar46 + -0x48) == *(int *)(puVar46 + -0x40)) {\n        puVar8 = (uint *)((int)puVar8 - (uint)(puVar38[(int)((int)puVar8 + -1)] == 0));\n        pcVar51 = *(code **)(iVar24 + -0x7a80);\n        if ((int)puVar8 <= **(int **)(puVar46 + -0x6c)) goto LAB_00022600;\nLAB_00022734:\n        puVar9 = puVar8;\n        puVar19 = (undefined4 *)(*pcVar51)(*(undefined4 *)(puVar46 + -0x6c));\n        iVar24 = *(int *)(puVar46 + -0x78);\n      }\n      else {\n        puVar9 = puVar38;\n        puVar22 = puVar8;\n        uVar18 = (**(code **)(iVar24 + -0x7ad4))(puVar38);\n        iVar24 = *(int *)(puVar46 + -0x78);\n        puVar38[(int)puVar8] = uVar18;\n        puVar8 = (uint *)((int)puVar8 +\n                         ((uint)(uVar18 != 0) -\n                         (uint)(puVar38[(int)((int)puVar8 + ((uVar18 != 0) - 1))] == 0)));\n        pcVar51 = *(code **)(iVar24 + -0x7a80);\n        if (**(int **)(puVar46 + -0x6c) < (int)puVar8) goto LAB_00022734;\nLAB_00022600:\n        puVar19 = *(undefined4 **)(*(int *)(puVar46 + -0x6c) + 8);\n      }\n      *(uint **)(*(int *)(puVar46 + -0x6c) + 4) = puVar8;\n      if (puVar8 != (uint *)0x0) {\n        puVar13 = (undefined1 *)((int)puVar8 + -1);\n        puVar9 = (uint *)*puVar38;\n        if (puVar13 != (undefined1 *)0x0) {\n          puVar15 = puVar19;\n          puVar16 = puVar38 + 1;\n          do {\n            *puVar15 = puVar9;\n            puVar38 = puVar16 + 1;\n            puVar13 = puVar13 + -1;\n            puVar9 = (uint *)*puVar16;\n            puVar15 = puVar15 + 1;\n            puVar16 = puVar38;\n          } while (puVar13 != (undefined1 *)0x0);\n          puVar8 = (uint *)((int)puVar8 * 4);\n          puVar19 = (undefined4 *)((int)puVar19 + (int)(puVar8 + -1));\n        }\n        *puVar19 = puVar9;\n      }\n      puVar16 = *(uint **)(puVar46 + -0x30);\n      if (puVar16 != (uint *)0x0) {\n        (**(code **)(iVar24 + -0x7a28))();\n        iVar24 = *(int *)(puVar46 + -0x78);\n      }\n      if (*(int *)(puVar46 + -0x2c) == **(int **)(puVar46 + -0x70)) {\n        return **(int **)(puVar46 + -0x70);\n      }\n      pcVar51 = *(code **)(iVar24 + -0x7b70);\n      pcVar52 = __gmpz_bin_uiui;\n      (*pcVar51)();\n      pcVar44 = pcVar51 + 0x8289c;\n      *(uint **)(puVar47 + -0x78) = puVar31;\n      piVar32 = *(int **)(pcVar51 + 0x7ad9c);\n      *(code **)(puVar47 + -0xf0) = pcVar44;\n      *(int *)(puVar47 + -0x74) = iVar39;\n      *(code **)(puVar47 + -0x5c) = pcVar52;\n      *(undefined1 **)(puVar47 + -0x60) = puVar46 + -0x90;\n      *(int *)(puVar47 + -100) = iVar6;\n      *(int *)(puVar47 + -0x68) = iVar29;\n      *(uint **)(puVar47 + -0x6c) = puVar38;\n      *(uint **)(puVar47 + -0x70) = puVar36;\n      *(uint **)(puVar47 + -0x7c) = puVar8;\n      *(undefined4 *)(puVar47 + -0x80) = 0;\n      *(int *)(puVar47 + -0x84) = *piVar32;\n      puVar31 = puVar16;\n      puVar20 = puVar9;\n      if (puVar9 < puVar22) {\n        puVar16[1] = 0;\n        puVar30 = (uint *)0x0;\n      }\n      else {\n        puVar30 = puVar22;\n        if ((uint *)((int)puVar9 - (int)puVar22) <= puVar22) {\n          puVar30 = (uint *)((int)puVar9 - (int)puVar22);\n        }\n        puVar22 = puVar30;\n        puVar36 = puVar9;\n        if (puVar30 < (uint *)0x2) {\n          if (puVar30 == (uint *)0x0) {\n            puVar36 = (uint *)0x1;\n          }\n          *(uint **)puVar16[2] = puVar36;\n          puVar16[1] = 1;\n          puVar49 = puVar46 + -0x90;\n        }\n        else if (puVar9 < (uint *)0x23) {\n          puVar13 = (undefined1 *)((int)puVar30 + -2);\n          iVar6 = *(int *)(pcVar51 + 0x7aa7c);\n          puVar20 = (uint *)puVar16[2];\n          uVar18 = (int)puVar9 - (int)puVar30;\n          puVar36 = (uint *)(iVar6 + ((uint)puVar9 >> 1));\n          puVar30 = (uint *)(iVar6 + ((uint)puVar30 >> 1));\n          bVar2 = *(byte *)((int)puVar30 + -1);\n          puVar31 = (uint *)(uint)*(byte *)(iVar6 + (uVar18 >> 1) + -1);\n          *puVar20 = *(int *)((int)puVar13 * 4 + *(int *)(pcVar51 + 0x7a8c8) + 0x35b4) *\n                     *(int *)(*(int *)(pcVar51 + 0x7ad64) + (int)puVar9 * 4) *\n                     *(int *)((uVar18 - 2) * 4 + *(int *)(pcVar51 + 0x7a8c8) + 0x35b4) <<\n                     (((uint)*(byte *)((int)puVar36 + -1) - (int)(uint)bVar2) - (int)puVar31 & 0x1f)\n          ;\n          puVar16[1] = 1;\n          puVar22 = (uint *)(uint)bVar2;\n          puVar49 = puVar46 + -0x90;\n        }\n        else if (puVar30 < &DAT_00000011) {\n          FUN_000216e8();\n          pcVar44 = *(code **)(puVar47 + -0xf0);\n          puVar49 = puVar46 + -0x90;\n        }\n        else if (puVar30 < &DAT_00000021) {\n          uVar18 = (uint)puVar30 >> 1;\n          uVar37 = (int)puVar9 - uVar18;\n          FUN_000216e8();\n          iVar6 = *(int *)(puVar47 + -0xf0);\n          uVar7 = (int)puVar30 - uVar18;\n          if (uVar37 < 0x23) {\n            puVar50 = (undefined1 *)puVar16[1];\n            if ((int)puVar50 < (int)*puVar16) {\n              puVar8 = (uint *)puVar16[2];\n            }\n            else {\n              puVar8 = (uint *)(**(code **)(iVar6 + -0x7a80))(puVar16,puVar50 + 1);\n              iVar6 = *(int *)(puVar47 + -0xf0);\n            }\n            iVar29 = *(int *)(iVar6 + -0x7e20);\n            iVar24 = *(int *)(iVar6 + -0x7fd4) + 0x35b4;\n            uVar37 = (**(code **)(iVar6 + -0x7f9c))\n                               (puVar8,puVar8,puVar50,\n                                *(int *)((((int)puVar9 - (int)puVar30) - 2U) * 4 + iVar24) *\n                                *(int *)(*(int *)(iVar6 + -0x7b38) + uVar37 * 4) *\n                                *(int *)((uVar7 - 2) * 4 + iVar24) <<\n                                (((uint)*(byte *)(iVar29 + (uVar37 >> 1) + -1) -\n                                 (uint)*(byte *)(iVar29 + (uVar7 >> 1) + -1)) -\n                                 (uint)*(byte *)(iVar29 + ((uint)((int)puVar9 - (int)puVar30) >> 1)\n                                                + -1) & 0x1f));\n            iVar6 = *(int *)(puVar47 + -0xf0);\n            puVar30 = (uint *)(puVar50 + (uVar37 != 0));\n            puVar8[(int)puVar50] = uVar37;\n          }\n          else {\n            *(undefined4 *)(puVar47 + -0xe4) = 0x15;\n            *(undefined1 **)(puVar47 + -0xdc) = puVar47 + -0xd8;\n            FUN_000216e8(puVar47 + -0xe4,uVar37,uVar7);\n            (**(code **)(*(int *)(puVar47 + -0xf0) + -0x7ba8))(puVar16,puVar16,puVar47 + -0xe4);\n            iVar6 = *(int *)(puVar47 + -0xf0);\n            puVar8 = (uint *)puVar16[2];\n            puVar30 = (uint *)puVar16[1];\n          }\n          pcVar51 = *(code **)(iVar6 + -0x7bb4);\n          puVar38 = (uint *)((uint)*(byte *)((uVar7 - 8) + *(int *)(iVar6 + -0x7fd4) + 0x3550) -\n                            (uint)(uVar18 != uVar7));\n          *(undefined4 *)(puVar47 + -0xf8) =\n               *(undefined4 *)((uVar7 - 8) * 4 + *(int *)(iVar6 + -0x7fd4) + 0x355c);\n          *(uint **)(puVar47 + -0xf4) = puVar38;\n          puVar31 = puVar8;\n          puVar20 = puVar8;\n          puVar22 = puVar30;\n          (*pcVar51)();\n          pcVar44 = *(code **)(puVar47 + -0xf0);\n          if (puVar8[(int)((int)puVar30 + -1)] == 0) {\n            puVar9 = puVar8 + (int)puVar30;\n            do {\n              puVar1 = puVar9 + -2;\n              puVar30 = (uint *)((int)puVar30 + -1);\n              puVar9 = puVar9 + -1;\n            } while (*puVar1 == 0);\n          }\n          puVar16[1] = (uint)puVar30;\n          puVar49 = puVar50;\n        }\n        else if ((puVar30 < (uint *)0x3e8) || (puVar30 <= (uint *)((uint)puVar9 >> 4))) {\n          FUN_0002209c();\n          pcVar44 = *(code **)(puVar47 + -0xf0);\n          puVar49 = puVar46 + -0x90;\n        }\n        else {\n          FUN_000219dc();\n          pcVar44 = *(code **)(puVar47 + -0xf0);\n          puVar49 = puVar46 + -0x90;\n        }\n      }\n      if (*(int *)(puVar47 + -0x84) == *piVar32) {\n        return *piVar32;\n      }\n      pcVar51 = *(code **)(pcVar44 + -0x7b70);\n      uVar10 = 0x22b64;\n      (*pcVar51)();\n      pcVar44 = pcVar51 + 0x824d0;\n      puVar48 = puVar47 + -0x160;\n      *(uint **)(puVar47 + -0x118) = puVar16;\n      *(uint **)(puVar47 + -0x124) = puVar30;\n      piVar34 = *(int **)(pcVar51 + 0x7a9d0);\n      uVar18 = puVar22[1];\n      *(undefined1 **)(puVar47 + -0x110) = puVar49;\n      *(uint **)(puVar47 + -0x114) = puVar36;\n      *(int **)(puVar47 + -0x11c) = piVar32;\n      *(uint **)(puVar47 + -0x120) = puVar8;\n      *(undefined4 *)(puVar47 + -0x10c) = uVar10;\n      *(code **)(puVar47 + -0x150) = pcVar44;\n      *(undefined4 *)(puVar47 + -0x13c) = 0;\n      puVar8 = (uint *)puVar20[1];\n      *(int *)(puVar47 + -300) = *piVar34;\n      if ((int)uVar18 < 0) {\n        uVar37 = uVar18 * -4;\n        *(uint *)(puVar47 + -0x138) = -uVar18;\n        if (0x7f00 < uVar37) {\n          pcVar51 = *(code **)(pcVar51 + 0x7a780);\n          goto LAB_00022c88;\n        }\nLAB_00022be4:\n        iVar6 = -(uVar37 + 7 & 0xfffffff8);\n        puVar48 = puVar47 + iVar6 + -0x160;\n        puVar13 = puVar47 + iVar6 + -0x150;\n      }\n      else {\n        uVar37 = uVar18 * 4;\n        *(uint *)(puVar47 + -0x138) = uVar18;\n        pcVar51 = *(code **)(pcVar51 + 0x7a780);\n        if (uVar37 < 0x7f01) goto LAB_00022be4;\nLAB_00022c88:\n        *(uint **)(puVar47 + -0x144) = puVar22;\n        puVar13 = (undefined1 *)(*pcVar51)(puVar47 + -0x13c,uVar37);\n        pcVar44 = *(code **)(puVar47 + -0x150);\n        puVar22 = *(uint **)(puVar47 + -0x144);\n      }\n      pcVar51 = *(code **)(pcVar44 + -0x7a68);\n      puVar36 = (uint *)(puVar47 + -0x138);\n      *(undefined1 **)(puVar47 + -0x130) = puVar13;\n      puVar9 = puVar20;\n      (*pcVar51)(puVar31,puVar36,puVar20,puVar22);\n      iVar6 = *(int *)(puVar47 + -0x150);\n      if (((int)((uint)puVar8 ^ uVar18) < 0) || (*(int *)(puVar47 + -0x134) == 0)) {\n        piVar32 = *(int **)(puVar47 + -0x13c);\n        pcVar51 = *(code **)(iVar6 + -0x7a28);\n        if (piVar32 != (int *)0x0) goto LAB_00022cc0;\n      }\n      else {\n        puVar9 = (uint *)0x1;\n        puVar36 = puVar31;\n        (**(code **)(iVar6 + -0x7c9c))(puVar31);\n        piVar32 = *(int **)(puVar47 + -0x13c);\n        iVar6 = *(int *)(puVar47 + -0x150);\n        if (piVar32 != (int *)0x0) {\n          pcVar51 = *(code **)(iVar6 + -0x7a28);\nLAB_00022cc0:\n          (*pcVar51)();\n          iVar6 = *(int *)(puVar47 + -0x150);\n        }\n      }\n      if (*(int *)(puVar47 + -300) == *piVar34) {\n        return *piVar34;\n      }\n      pcVar51 = *(code **)(iVar6 + -0x7b70);\n      uVar10 = 0x22cdc;\n      (*pcVar51)();\n      pcVar44 = pcVar51 + 0x82360;\n      *(code **)(puVar48 + -0x28) = pcVar44;\n      *(undefined4 *)(puVar48 + -4) = uVar10;\n      *(uint **)(puVar48 + -8) = puVar38;\n      *(uint **)(puVar48 + -0xc) = puVar20;\n      *(int **)(puVar48 + -0x10) = piVar34;\n      *(uint **)(puVar48 + -0x14) = puVar31;\n      *(uint **)(puVar48 + -0x18) = puVar8;\n      *(uint *)(puVar48 + -0x1c) = (uint)puVar8 ^ uVar18;\n      if (puVar9 == (uint *)0x0) {\n        pcVar51 = *(code **)(pcVar51 + 0x7a900);\n        (*pcVar51)();\nLAB_00022e2c:\n        piVar32 = (int *)(*pcVar51)(piVar34,puVar31);\n        pcVar44 = *(code **)(puVar48 + -0x28);\n      }\n      else {\n        puVar8 = (uint *)puVar36[1];\n        if (puVar8 == (uint *)0x0) {\n          piVar32[1] = 0;\n          return 0;\n        }\n        puVar31 = puVar8;\n        if ((int)puVar8 < 0) {\n          puVar31 = (uint *)-(int)puVar8;\n        }\n        pcVar51 = *(code **)(pcVar51 + 0x7a8e0);\n        piVar34 = piVar32;\n        puVar20 = puVar9;\n        puVar38 = puVar36;\n        if (*piVar32 < (int)puVar31) goto LAB_00022e2c;\n        piVar32 = (int *)piVar32[2];\n      }\n      pcVar51 = *(code **)(pcVar44 + -0x7d98);\n      uVar18 = puVar38[2];\n      *(uint **)(puVar48 + -0x30) = puVar20;\n      iVar6 = (*pcVar51)(piVar32,0,uVar18,puVar31);\n      piVar17 = piVar32 + (int)puVar31 + -1;\n      if (iVar6 == 0) {\n        uVar18 = (uint)(*piVar17 == 0);\n        if (-1 < (int)puVar8) {\n          iVar24 = (int)puVar31 - uVar18;\n          goto LAB_00022d9c;\n        }\n      }\n      else {\n        if (-1 < (int)puVar8) {\n          do {\n            iVar24 = *piVar32;\n            *piVar32 = iVar24 + 1;\n            piVar32 = piVar32 + 1;\n          } while (iVar24 + 1 == 0);\n          iVar6 = (int)puVar20 - iVar6;\n          iVar24 = (int)puVar31 - (uint)(*piVar17 == 0);\n          goto LAB_00022d9c;\n        }\n        uVar18 = (uint)(*piVar17 == 0);\n      }\n      iVar24 = uVar18 - (int)puVar31;\nLAB_00022d9c:\n      piVar34[1] = iVar24;\n      return iVar6;\n    }\n    *(int *)(puVar46 + -0x44) = iVar39;\n    iVar6 = iVar39 + uVar7;\n    uVar18 = (**(code **)(*(int *)(puVar46 + -0x34) + (uVar7 - 1) * 4))(iVar39);\n    puVar43 = *(undefined **)(puVar46 + -0x78);\n    if ((uVar18 & 0xff) == 0) {\n      uVar37 = uVar18 >> 8;\n      iVar24 = 6;\n      if ((uVar37 & 0xff) == 0) {\n        uVar37 = uVar18 >> 0x10;\n        iVar24 = 0xe;\n        if ((uVar37 & 0xff) == 0) {\n          uVar37 = uVar18 >> 0x18;\n          iVar24 = 0x1e;\n          if (uVar37 != 0) {\n            iVar24 = 0x16;\n          }\n        }\n      }\n      uVar37 = (uint)*(byte *)(*(int *)(puVar46 + -0x3c) + (-uVar37 & uVar37)) + iVar24;\n    }\n    else {\n      uVar37 = *(byte *)(*(int *)(puVar46 + -0x3c) + (-uVar18 & uVar18)) - 2;\n    }\n    iVar39 = *(int *)(puVar46 + -0x38);\n    *puVar36 = uVar18 >> (uVar37 & 0x1f);\n    iVar24 = *(int *)(puVar46 + -0x60);\n    *(uint *)(puVar46 + -0x40) =\n         *(int *)(puVar46 + -0x40) + *(byte *)(iVar39 + (uVar7 - 1)) + uVar37;\n    if ((uint)(iVar24 - iVar6) <= uVar7) {\n      uVar7 = iVar24 - iVar6;\n    }\n    iVar39 = iVar6;\n    if (uVar7 != 0) goto LAB_00022234;\nLAB_00022534:\n    puVar31 = (uint *)0x1;\n    *(uint **)(puVar46 + -0x4c) = puVar36;\n  } while( true );" statement_identifier : (do_statement "do {\n    iVar41 = iVar39 - *(int *)(puVar46 + -0x44);\n    iVar24 = *(int *)(puVar46 + -0x5c);\n    iVar6 = iVar41;\n    if (iVar41 != 0) {\n      *(uint *)(puVar46 + -0x44) = uVar7;\n      *(uint **)(puVar46 + -0x50) = puVar31;\n      *(uint **)(puVar46 + -0x54) = puVar36;\n      *(int *)(puVar46 + -0x58) = iVar39;\n      iVar6 = *(int *)(puVar46 + -0x48);\n      iVar39 = *(int *)(puVar46 + -0x68);\n      iVar24 = iVar29;\n      do {\n        iVar33 = iVar41;\n        if (iVar39 <= iVar41) {\n          iVar33 = iVar39;\n        }\n        iVar29 = iVar24 + iVar33;\n        uVar18 = (**(code **)(*(int *)(puVar46 + -0x34) + (iVar33 + -1) * 4))(iVar24);\n        if ((uVar18 & 0xff) == 0) {\n          uVar37 = uVar18 >> 8;\n          iVar24 = 6;\n          if ((uVar37 & 0xff) == 0) {\n            uVar37 = uVar18 >> 0x10;\n            iVar24 = 0xe;\n            if ((uVar37 & 0xff) == 0) {\n              uVar37 = uVar18 >> 0x18;\n              iVar24 = 0x16;\n              if (uVar37 == 0) {\n                iVar24 = 0x1e;\n              }\n            }\n          }\n          uVar37 = (uint)*(byte *)(*(int *)(puVar46 + -0x3c) + (-uVar37 & uVar37)) + iVar24;\n        }\n        else {\n          uVar37 = *(byte *)(*(int *)(puVar46 + -0x3c) + (-uVar18 & uVar18)) - 2;\n        }\n        iVar41 = iVar41 - iVar33;\n        iVar6 = iVar6 + *(byte *)(*(int *)(puVar46 + -0x38) + iVar33 + -1) + uVar37;\n        uVar18 = (**(code **)(*(int *)(puVar46 + -0x78) + -0x7f9c))\n                           (puVar38,puVar38,puVar8,uVar18 >> (uVar37 & 0x1f));\n        puVar43 = *(undefined **)(puVar46 + -0x78);\n        puVar31 = puVar38 + (int)puVar8;\n        puVar8 = (uint *)((int)puVar8 + (uint)(uVar18 != 0));\n        *puVar31 = uVar18;\n        iVar24 = iVar29;\n      } while (iVar41 != 0);\n      uVar7 = *(uint *)(puVar46 + -0x44);\n      puVar31 = *(uint **)(puVar46 + -0x50);\n      puVar36 = *(uint **)(puVar46 + -0x54);\n      iVar39 = *(int *)(puVar46 + -0x58);\n      *(int *)(puVar46 + -0x48) = iVar6;\n      iVar24 = *(int *)(puVar46 + -0x5c);\n    }\n    uVar37 = *puVar36;\n    pcVar51 = *(code **)(puVar43 + -0x7bc0);\n    uVar18 = (uint)*(byte *)(*(int *)(puVar46 + -100) + ((uVar37 << 0x18) >> 0x19));\n    puVar8 = (uint *)((int)puVar8 +\n                     ((puVar38[(int)((int)puVar8 + iVar24)] < **(uint **)(puVar46 + -0x4c) ^ 1) -\n                     (int)puVar31));\n    iVar24 = uVar18 * 2 - uVar18 * uVar18 * uVar37;\n    if ((int)puVar8 < (int)puVar31) {\n      puVar31 = puVar8;\n    }\n    *(uint **)(puVar47 + -0x48) = puVar31;\n    *(uint *)(puVar47 + -0x44) = iVar24 * iVar24 * uVar37 + iVar24 * -2;\n    puVar9 = puVar38;\n    puVar22 = puVar8;\n    (*pcVar51)(puVar38,puVar38,puVar8,puVar36);\n    iVar24 = *(int *)(puVar46 + -0x78);\n    if (uVar7 == 0) {\n      if (*(int *)(puVar46 + -0x48) == *(int *)(puVar46 + -0x40)) {\n        puVar8 = (uint *)((int)puVar8 - (uint)(puVar38[(int)((int)puVar8 + -1)] == 0));\n        pcVar51 = *(code **)(iVar24 + -0x7a80);\n        if ((int)puVar8 <= **(int **)(puVar46 + -0x6c)) goto LAB_00022600;\nLAB_00022734:\n        puVar9 = puVar8;\n        puVar19 = (undefined4 *)(*pcVar51)(*(undefined4 *)(puVar46 + -0x6c));\n        iVar24 = *(int *)(puVar46 + -0x78);\n      }\n      else {\n        puVar9 = puVar38;\n        puVar22 = puVar8;\n        uVar18 = (**(code **)(iVar24 + -0x7ad4))(puVar38);\n        iVar24 = *(int *)(puVar46 + -0x78);\n        puVar38[(int)puVar8] = uVar18;\n        puVar8 = (uint *)((int)puVar8 +\n                         ((uint)(uVar18 != 0) -\n                         (uint)(puVar38[(int)((int)puVar8 + ((uVar18 != 0) - 1))] == 0)));\n        pcVar51 = *(code **)(iVar24 + -0x7a80);\n        if (**(int **)(puVar46 + -0x6c) < (int)puVar8) goto LAB_00022734;\nLAB_00022600:\n        puVar19 = *(undefined4 **)(*(int *)(puVar46 + -0x6c) + 8);\n      }\n      *(uint **)(*(int *)(puVar46 + -0x6c) + 4) = puVar8;\n      if (puVar8 != (uint *)0x0) {\n        puVar13 = (undefined1 *)((int)puVar8 + -1);\n        puVar9 = (uint *)*puVar38;\n        if (puVar13 != (undefined1 *)0x0) {\n          puVar15 = puVar19;\n          puVar16 = puVar38 + 1;\n          do {\n            *puVar15 = puVar9;\n            puVar38 = puVar16 + 1;\n            puVar13 = puVar13 + -1;\n            puVar9 = (uint *)*puVar16;\n            puVar15 = puVar15 + 1;\n            puVar16 = puVar38;\n          } while (puVar13 != (undefined1 *)0x0);\n          puVar8 = (uint *)((int)puVar8 * 4);\n          puVar19 = (undefined4 *)((int)puVar19 + (int)(puVar8 + -1));\n        }\n        *puVar19 = puVar9;\n      }\n      puVar16 = *(uint **)(puVar46 + -0x30);\n      if (puVar16 != (uint *)0x0) {\n        (**(code **)(iVar24 + -0x7a28))();\n        iVar24 = *(int *)(puVar46 + -0x78);\n      }\n      if (*(int *)(puVar46 + -0x2c) == **(int **)(puVar46 + -0x70)) {\n        return **(int **)(puVar46 + -0x70);\n      }\n      pcVar51 = *(code **)(iVar24 + -0x7b70);\n      pcVar52 = __gmpz_bin_uiui;\n      (*pcVar51)();\n      pcVar44 = pcVar51 + 0x8289c;\n      *(uint **)(puVar47 + -0x78) = puVar31;\n      piVar32 = *(int **)(pcVar51 + 0x7ad9c);\n      *(code **)(puVar47 + -0xf0) = pcVar44;\n      *(int *)(puVar47 + -0x74) = iVar39;\n      *(code **)(puVar47 + -0x5c) = pcVar52;\n      *(undefined1 **)(puVar47 + -0x60) = puVar46 + -0x90;\n      *(int *)(puVar47 + -100) = iVar6;\n      *(int *)(puVar47 + -0x68) = iVar29;\n      *(uint **)(puVar47 + -0x6c) = puVar38;\n      *(uint **)(puVar47 + -0x70) = puVar36;\n      *(uint **)(puVar47 + -0x7c) = puVar8;\n      *(undefined4 *)(puVar47 + -0x80) = 0;\n      *(int *)(puVar47 + -0x84) = *piVar32;\n      puVar31 = puVar16;\n      puVar20 = puVar9;\n      if (puVar9 < puVar22) {\n        puVar16[1] = 0;\n        puVar30 = (uint *)0x0;\n      }\n      else {\n        puVar30 = puVar22;\n        if ((uint *)((int)puVar9 - (int)puVar22) <= puVar22) {\n          puVar30 = (uint *)((int)puVar9 - (int)puVar22);\n        }\n        puVar22 = puVar30;\n        puVar36 = puVar9;\n        if (puVar30 < (uint *)0x2) {\n          if (puVar30 == (uint *)0x0) {\n            puVar36 = (uint *)0x1;\n          }\n          *(uint **)puVar16[2] = puVar36;\n          puVar16[1] = 1;\n          puVar49 = puVar46 + -0x90;\n        }\n        else if (puVar9 < (uint *)0x23) {\n          puVar13 = (undefined1 *)((int)puVar30 + -2);\n          iVar6 = *(int *)(pcVar51 + 0x7aa7c);\n          puVar20 = (uint *)puVar16[2];\n          uVar18 = (int)puVar9 - (int)puVar30;\n          puVar36 = (uint *)(iVar6 + ((uint)puVar9 >> 1));\n          puVar30 = (uint *)(iVar6 + ((uint)puVar30 >> 1));\n          bVar2 = *(byte *)((int)puVar30 + -1);\n          puVar31 = (uint *)(uint)*(byte *)(iVar6 + (uVar18 >> 1) + -1);\n          *puVar20 = *(int *)((int)puVar13 * 4 + *(int *)(pcVar51 + 0x7a8c8) + 0x35b4) *\n                     *(int *)(*(int *)(pcVar51 + 0x7ad64) + (int)puVar9 * 4) *\n                     *(int *)((uVar18 - 2) * 4 + *(int *)(pcVar51 + 0x7a8c8) + 0x35b4) <<\n                     (((uint)*(byte *)((int)puVar36 + -1) - (int)(uint)bVar2) - (int)puVar31 & 0x1f)\n          ;\n          puVar16[1] = 1;\n          puVar22 = (uint *)(uint)bVar2;\n          puVar49 = puVar46 + -0x90;\n        }\n        else if (puVar30 < &DAT_00000011) {\n          FUN_000216e8();\n          pcVar44 = *(code **)(puVar47 + -0xf0);\n          puVar49 = puVar46 + -0x90;\n        }\n        else if (puVar30 < &DAT_00000021) {\n          uVar18 = (uint)puVar30 >> 1;\n          uVar37 = (int)puVar9 - uVar18;\n          FUN_000216e8();\n          iVar6 = *(int *)(puVar47 + -0xf0);\n          uVar7 = (int)puVar30 - uVar18;\n          if (uVar37 < 0x23) {\n            puVar50 = (undefined1 *)puVar16[1];\n            if ((int)puVar50 < (int)*puVar16) {\n              puVar8 = (uint *)puVar16[2];\n            }\n            else {\n              puVar8 = (uint *)(**(code **)(iVar6 + -0x7a80))(puVar16,puVar50 + 1);\n              iVar6 = *(int *)(puVar47 + -0xf0);\n            }\n            iVar29 = *(int *)(iVar6 + -0x7e20);\n            iVar24 = *(int *)(iVar6 + -0x7fd4) + 0x35b4;\n            uVar37 = (**(code **)(iVar6 + -0x7f9c))\n                               (puVar8,puVar8,puVar50,\n                                *(int *)((((int)puVar9 - (int)puVar30) - 2U) * 4 + iVar24) *\n                                *(int *)(*(int *)(iVar6 + -0x7b38) + uVar37 * 4) *\n                                *(int *)((uVar7 - 2) * 4 + iVar24) <<\n                                (((uint)*(byte *)(iVar29 + (uVar37 >> 1) + -1) -\n                                 (uint)*(byte *)(iVar29 + (uVar7 >> 1) + -1)) -\n                                 (uint)*(byte *)(iVar29 + ((uint)((int)puVar9 - (int)puVar30) >> 1)\n                                                + -1) & 0x1f));\n            iVar6 = *(int *)(puVar47 + -0xf0);\n            puVar30 = (uint *)(puVar50 + (uVar37 != 0));\n            puVar8[(int)puVar50] = uVar37;\n          }\n          else {\n            *(undefined4 *)(puVar47 + -0xe4) = 0x15;\n            *(undefined1 **)(puVar47 + -0xdc) = puVar47 + -0xd8;\n            FUN_000216e8(puVar47 + -0xe4,uVar37,uVar7);\n            (**(code **)(*(int *)(puVar47 + -0xf0) + -0x7ba8))(puVar16,puVar16,puVar47 + -0xe4);\n            iVar6 = *(int *)(puVar47 + -0xf0);\n            puVar8 = (uint *)puVar16[2];\n            puVar30 = (uint *)puVar16[1];\n          }\n          pcVar51 = *(code **)(iVar6 + -0x7bb4);\n          puVar38 = (uint *)((uint)*(byte *)((uVar7 - 8) + *(int *)(iVar6 + -0x7fd4) + 0x3550) -\n                            (uint)(uVar18 != uVar7));\n          *(undefined4 *)(puVar47 + -0xf8) =\n               *(undefined4 *)((uVar7 - 8) * 4 + *(int *)(iVar6 + -0x7fd4) + 0x355c);\n          *(uint **)(puVar47 + -0xf4) = puVar38;\n          puVar31 = puVar8;\n          puVar20 = puVar8;\n          puVar22 = puVar30;\n          (*pcVar51)();\n          pcVar44 = *(code **)(puVar47 + -0xf0);\n          if (puVar8[(int)((int)puVar30 + -1)] == 0) {\n            puVar9 = puVar8 + (int)puVar30;\n            do {\n              puVar1 = puVar9 + -2;\n              puVar30 = (uint *)((int)puVar30 + -1);\n              puVar9 = puVar9 + -1;\n            } while (*puVar1 == 0);\n          }\n          puVar16[1] = (uint)puVar30;\n          puVar49 = puVar50;\n        }\n        else if ((puVar30 < (uint *)0x3e8) || (puVar30 <= (uint *)((uint)puVar9 >> 4))) {\n          FUN_0002209c();\n          pcVar44 = *(code **)(puVar47 + -0xf0);\n          puVar49 = puVar46 + -0x90;\n        }\n        else {\n          FUN_000219dc();\n          pcVar44 = *(code **)(puVar47 + -0xf0);\n          puVar49 = puVar46 + -0x90;\n        }\n      }\n      if (*(int *)(puVar47 + -0x84) == *piVar32) {\n        return *piVar32;\n      }\n      pcVar51 = *(code **)(pcVar44 + -0x7b70);\n      uVar10 = 0x22b64;\n      (*pcVar51)();\n      pcVar44 = pcVar51 + 0x824d0;\n      puVar48 = puVar47 + -0x160;\n      *(uint **)(puVar47 + -0x118) = puVar16;\n      *(uint **)(puVar47 + -0x124) = puVar30;\n      piVar34 = *(int **)(pcVar51 + 0x7a9d0);\n      uVar18 = puVar22[1];\n      *(undefined1 **)(puVar47 + -0x110) = puVar49;\n      *(uint **)(puVar47 + -0x114) = puVar36;\n      *(int **)(puVar47 + -0x11c) = piVar32;\n      *(uint **)(puVar47 + -0x120) = puVar8;\n      *(undefined4 *)(puVar47 + -0x10c) = uVar10;\n      *(code **)(puVar47 + -0x150) = pcVar44;\n      *(undefined4 *)(puVar47 + -0x13c) = 0;\n      puVar8 = (uint *)puVar20[1];\n      *(int *)(puVar47 + -300) = *piVar34;\n      if ((int)uVar18 < 0) {\n        uVar37 = uVar18 * -4;\n        *(uint *)(puVar47 + -0x138) = -uVar18;\n        if (0x7f00 < uVar37) {\n          pcVar51 = *(code **)(pcVar51 + 0x7a780);\n          goto LAB_00022c88;\n        }\nLAB_00022be4:\n        iVar6 = -(uVar37 + 7 & 0xfffffff8);\n        puVar48 = puVar47 + iVar6 + -0x160;\n        puVar13 = puVar47 + iVar6 + -0x150;\n      }\n      else {\n        uVar37 = uVar18 * 4;\n        *(uint *)(puVar47 + -0x138) = uVar18;\n        pcVar51 = *(code **)(pcVar51 + 0x7a780);\n        if (uVar37 < 0x7f01) goto LAB_00022be4;\nLAB_00022c88:\n        *(uint **)(puVar47 + -0x144) = puVar22;\n        puVar13 = (undefined1 *)(*pcVar51)(puVar47 + -0x13c,uVar37);\n        pcVar44 = *(code **)(puVar47 + -0x150);\n        puVar22 = *(uint **)(puVar47 + -0x144);\n      }\n      pcVar51 = *(code **)(pcVar44 + -0x7a68);\n      puVar36 = (uint *)(puVar47 + -0x138);\n      *(undefined1 **)(puVar47 + -0x130) = puVar13;\n      puVar9 = puVar20;\n      (*pcVar51)(puVar31,puVar36,puVar20,puVar22);\n      iVar6 = *(int *)(puVar47 + -0x150);\n      if (((int)((uint)puVar8 ^ uVar18) < 0) || (*(int *)(puVar47 + -0x134) == 0)) {\n        piVar32 = *(int **)(puVar47 + -0x13c);\n        pcVar51 = *(code **)(iVar6 + -0x7a28);\n        if (piVar32 != (int *)0x0) goto LAB_00022cc0;\n      }\n      else {\n        puVar9 = (uint *)0x1;\n        puVar36 = puVar31;\n        (**(code **)(iVar6 + -0x7c9c))(puVar31);\n        piVar32 = *(int **)(puVar47 + -0x13c);\n        iVar6 = *(int *)(puVar47 + -0x150);\n        if (piVar32 != (int *)0x0) {\n          pcVar51 = *(code **)(iVar6 + -0x7a28);\nLAB_00022cc0:\n          (*pcVar51)();\n          iVar6 = *(int *)(puVar47 + -0x150);\n        }\n      }\n      if (*(int *)(puVar47 + -300) == *piVar34) {\n        return *piVar34;\n      }\n      pcVar51 = *(code **)(iVar6 + -0x7b70);\n      uVar10 = 0x22cdc;\n      (*pcVar51)();\n      pcVar44 = pcVar51 + 0x82360;\n      *(code **)(puVar48 + -0x28) = pcVar44;\n      *(undefined4 *)(puVar48 + -4) = uVar10;\n      *(uint **)(puVar48 + -8) = puVar38;\n      *(uint **)(puVar48 + -0xc) = puVar20;\n      *(int **)(puVar48 + -0x10) = piVar34;\n      *(uint **)(puVar48 + -0x14) = puVar31;\n      *(uint **)(puVar48 + -0x18) = puVar8;\n      *(uint *)(puVar48 + -0x1c) = (uint)puVar8 ^ uVar18;\n      if (puVar9 == (uint *)0x0) {\n        pcVar51 = *(code **)(pcVar51 + 0x7a900);\n        (*pcVar51)();\nLAB_00022e2c:\n        piVar32 = (int *)(*pcVar51)(piVar34,puVar31);\n        pcVar44 = *(code **)(puVar48 + -0x28);\n      }\n      else {\n        puVar8 = (uint *)puVar36[1];\n        if (puVar8 == (uint *)0x0) {\n          piVar32[1] = 0;\n          return 0;\n        }\n        puVar31 = puVar8;\n        if ((int)puVar8 < 0) {\n          puVar31 = (uint *)-(int)puVar8;\n        }\n        pcVar51 = *(code **)(pcVar51 + 0x7a8e0);\n        piVar34 = piVar32;\n        puVar20 = puVar9;\n        puVar38 = puVar36;\n        if (*piVar32 < (int)puVar31) goto LAB_00022e2c;\n        piVar32 = (int *)piVar32[2];\n      }\n      pcVar51 = *(code **)(pcVar44 + -0x7d98);\n      uVar18 = puVar38[2];\n      *(uint **)(puVar48 + -0x30) = puVar20;\n      iVar6 = (*pcVar51)(piVar32,0,uVar18,puVar31);\n      piVar17 = piVar32 + (int)puVar31 + -1;\n      if (iVar6 == 0) {\n        uVar18 = (uint)(*piVar17 == 0);\n        if (-1 < (int)puVar8) {\n          iVar24 = (int)puVar31 - uVar18;\n          goto LAB_00022d9c;\n        }\n      }\n      else {\n        if (-1 < (int)puVar8) {\n          do {\n            iVar24 = *piVar32;\n            *piVar32 = iVar24 + 1;\n            piVar32 = piVar32 + 1;\n          } while (iVar24 + 1 == 0);\n          iVar6 = (int)puVar20 - iVar6;\n          iVar24 = (int)puVar31 - (uint)(*piVar17 == 0);\n          goto LAB_00022d9c;\n        }\n        uVar18 = (uint)(*piVar17 == 0);\n      }\n      iVar24 = uVar18 - (int)puVar31;\nLAB_00022d9c:\n      piVar34[1] = iVar24;\n      return iVar6;\n    }\n    *(int *)(puVar46 + -0x44) = iVar39;\n    iVar6 = iVar39 + uVar7;\n    uVar18 = (**(code **)(*(int *)(puVar46 + -0x34) + (uVar7 - 1) * 4))(iVar39);\n    puVar43 = *(undefined **)(puVar46 + -0x78);\n    if ((uVar18 & 0xff) == 0) {\n      uVar37 = uVar18 >> 8;\n      iVar24 = 6;\n      if ((uVar37 & 0xff) == 0) {\n        uVar37 = uVar18 >> 0x10;\n        iVar24 = 0xe;\n        if ((uVar37 & 0xff) == 0) {\n          uVar37 = uVar18 >> 0x18;\n          iVar24 = 0x1e;\n          if (uVar37 != 0) {\n            iVar24 = 0x16;\n          }\n        }\n      }\n      uVar37 = (uint)*(byte *)(*(int *)(puVar46 + -0x3c) + (-uVar37 & uVar37)) + iVar24;\n    }\n    else {\n      uVar37 = *(byte *)(*(int *)(puVar46 + -0x3c) + (-uVar18 & uVar18)) - 2;\n    }\n    iVar39 = *(int *)(puVar46 + -0x38);\n    *puVar36 = uVar18 >> (uVar37 & 0x1f);\n    iVar24 = *(int *)(puVar46 + -0x60);\n    *(uint *)(puVar46 + -0x40) =\n         *(int *)(puVar46 + -0x40) + *(byte *)(iVar39 + (uVar7 - 1)) + uVar37;\n    if ((uint)(iVar24 - iVar6) <= uVar7) {\n      uVar7 = iVar24 - iVar6;\n    }\n    iVar39 = iVar6;\n    if (uVar7 != 0) goto LAB_00022234;\nLAB_00022534:\n    puVar31 = (uint *)0x1;\n    *(uint **)(puVar46 + -0x4c) = puVar36;\n  } while( true );" do (compound_statement "{\n    iVar41 = iVar39 - *(int *)(puVar46 + -0x44);\n    iVar24 = *(int *)(puVar46 + -0x5c);\n    iVar6 = iVar41;\n    if (iVar41 != 0) {\n      *(uint *)(puVar46 + -0x44) = uVar7;\n      *(uint **)(puVar46 + -0x50) = puVar31;\n      *(uint **)(puVar46 + -0x54) = puVar36;\n      *(int *)(puVar46 + -0x58) = iVar39;\n      iVar6 = *(int *)(puVar46 + -0x48);\n      iVar39 = *(int *)(puVar46 + -0x68);\n      iVar24 = iVar29;\n      do {\n        iVar33 = iVar41;\n        if (iVar39 <= iVar41) {\n          iVar33 = iVar39;\n        }\n        iVar29 = iVar24 + iVar33;\n        uVar18 = (**(code **)(*(int *)(puVar46 + -0x34) + (iVar33 + -1) * 4))(iVar24);\n        if ((uVar18 & 0xff) == 0) {\n          uVar37 = uVar18 >> 8;\n          iVar24 = 6;\n          if ((uVar37 & 0xff) == 0) {\n            uVar37 = uVar18 >> 0x10;\n            iVar24 = 0xe;\n            if ((uVar37 & 0xff) == 0) {\n              uVar37 = uVar18 >> 0x18;\n              iVar24 = 0x16;\n              if (uVar37 == 0) {\n                iVar24 = 0x1e;\n              }\n            }\n          }\n          uVar37 = (uint)*(byte *)(*(int *)(puVar46 + -0x3c) + (-uVar37 & uVar37)) + iVar24;\n        }\n        else {\n          uVar37 = *(byte *)(*(int *)(puVar46 + -0x3c) + (-uVar18 & uVar18)) - 2;\n        }\n        iVar41 = iVar41 - iVar33;\n        iVar6 = iVar6 + *(byte *)(*(int *)(puVar46 + -0x38) + iVar33 + -1) + uVar37;\n        uVar18 = (**(code **)(*(int *)(puVar46 + -0x78) + -0x7f9c))\n                           (puVar38,puVar38,puVar8,uVar18 >> (uVar37 & 0x1f));\n        puVar43 = *(undefined **)(puVar46 + -0x78);\n        puVar31 = puVar38 + (int)puVar8;\n        puVar8 = (uint *)((int)puVar8 + (uint)(uVar18 != 0));\n        *puVar31 = uVar18;\n        iVar24 = iVar29;\n      } while (iVar41 != 0);\n      uVar7 = *(uint *)(puVar46 + -0x44);\n      puVar31 = *(uint **)(puVar46 + -0x50);\n      puVar36 = *(uint **)(puVar46 + -0x54);\n      iVar39 = *(int *)(puVar46 + -0x58);\n      *(int *)(puVar46 + -0x48) = iVar6;\n      iVar24 = *(int *)(puVar46 + -0x5c);\n    }\n    uVar37 = *puVar36;\n    pcVar51 = *(code **)(puVar43 + -0x7bc0);\n    uVar18 = (uint)*(byte *)(*(int *)(puVar46 + -100) + ((uVar37 << 0x18) >> 0x19));\n    puVar8 = (uint *)((int)puVar8 +\n                     ((puVar38[(int)((int)puVar8 + iVar24)] < **(uint **)(puVar46 + -0x4c) ^ 1) -\n                     (int)puVar31));\n    iVar24 = uVar18 * 2 - uVar18 * uVar18 * uVar37;\n    if ((int)puVar8 < (int)puVar31) {\n      puVar31 = puVar8;\n    }\n    *(uint **)(puVar47 + -0x48) = puVar31;\n    *(uint *)(puVar47 + -0x44) = iVar24 * iVar24 * uVar37 + iVar24 * -2;\n    puVar9 = puVar38;\n    puVar22 = puVar8;\n    (*pcVar51)(puVar38,puVar38,puVar8,puVar36);\n    iVar24 = *(int *)(puVar46 + -0x78);\n    if (uVar7 == 0) {\n      if (*(int *)(puVar46 + -0x48) == *(int *)(puVar46 + -0x40)) {\n        puVar8 = (uint *)((int)puVar8 - (uint)(puVar38[(int)((int)puVar8 + -1)] == 0));\n        pcVar51 = *(code **)(iVar24 + -0x7a80);\n        if ((int)puVar8 <= **(int **)(puVar46 + -0x6c)) goto LAB_00022600;\nLAB_00022734:\n        puVar9 = puVar8;\n        puVar19 = (undefined4 *)(*pcVar51)(*(undefined4 *)(puVar46 + -0x6c));\n        iVar24 = *(int *)(puVar46 + -0x78);\n      }\n      else {\n        puVar9 = puVar38;\n        puVar22 = puVar8;\n        uVar18 = (**(code **)(iVar24 + -0x7ad4))(puVar38);\n        iVar24 = *(int *)(puVar46 + -0x78);\n        puVar38[(int)puVar8] = uVar18;\n        puVar8 = (uint *)((int)puVar8 +\n                         ((uint)(uVar18 != 0) -\n                         (uint)(puVar38[(int)((int)puVar8 + ((uVar18 != 0) - 1))] == 0)));\n        pcVar51 = *(code **)(iVar24 + -0x7a80);\n        if (**(int **)(puVar46 + -0x6c) < (int)puVar8) goto LAB_00022734;\nLAB_00022600:\n        puVar19 = *(undefined4 **)(*(int *)(puVar46 + -0x6c) + 8);\n      }\n      *(uint **)(*(int *)(puVar46 + -0x6c) + 4) = puVar8;\n      if (puVar8 != (uint *)0x0) {\n        puVar13 = (undefined1 *)((int)puVar8 + -1);\n        puVar9 = (uint *)*puVar38;\n        if (puVar13 != (undefined1 *)0x0) {\n          puVar15 = puVar19;\n          puVar16 = puVar38 + 1;\n          do {\n            *puVar15 = puVar9;\n            puVar38 = puVar16 + 1;\n            puVar13 = puVar13 + -1;\n            puVar9 = (uint *)*puVar16;\n            puVar15 = puVar15 + 1;\n            puVar16 = puVar38;\n          } while (puVar13 != (undefined1 *)0x0);\n          puVar8 = (uint *)((int)puVar8 * 4);\n          puVar19 = (undefined4 *)((int)puVar19 + (int)(puVar8 + -1));\n        }\n        *puVar19 = puVar9;\n      }\n      puVar16 = *(uint **)(puVar46 + -0x30);\n      if (puVar16 != (uint *)0x0) {\n        (**(code **)(iVar24 + -0x7a28))();\n        iVar24 = *(int *)(puVar46 + -0x78);\n      }\n      if (*(int *)(puVar46 + -0x2c) == **(int **)(puVar46 + -0x70)) {\n        return **(int **)(puVar46 + -0x70);\n      }\n      pcVar51 = *(code **)(iVar24 + -0x7b70);\n      pcVar52 = __gmpz_bin_uiui;\n      (*pcVar51)();\n      pcVar44 = pcVar51 + 0x8289c;\n      *(uint **)(puVar47 + -0x78) = puVar31;\n      piVar32 = *(int **)(pcVar51 + 0x7ad9c);\n      *(code **)(puVar47 + -0xf0) = pcVar44;\n      *(int *)(puVar47 + -0x74) = iVar39;\n      *(code **)(puVar47 + -0x5c) = pcVar52;\n      *(undefined1 **)(puVar47 + -0x60) = puVar46 + -0x90;\n      *(int *)(puVar47 + -100) = iVar6;\n      *(int *)(puVar47 + -0x68) = iVar29;\n      *(uint **)(puVar47 + -0x6c) = puVar38;\n      *(uint **)(puVar47 + -0x70) = puVar36;\n      *(uint **)(puVar47 + -0x7c) = puVar8;\n      *(undefined4 *)(puVar47 + -0x80) = 0;\n      *(int *)(puVar47 + -0x84) = *piVar32;\n      puVar31 = puVar16;\n      puVar20 = puVar9;\n      if (puVar9 < puVar22) {\n        puVar16[1] = 0;\n        puVar30 = (uint *)0x0;\n      }\n      else {\n        puVar30 = puVar22;\n        if ((uint *)((int)puVar9 - (int)puVar22) <= puVar22) {\n          puVar30 = (uint *)((int)puVar9 - (int)puVar22);\n        }\n        puVar22 = puVar30;\n        puVar36 = puVar9;\n        if (puVar30 < (uint *)0x2) {\n          if (puVar30 == (uint *)0x0) {\n            puVar36 = (uint *)0x1;\n          }\n          *(uint **)puVar16[2] = puVar36;\n          puVar16[1] = 1;\n          puVar49 = puVar46 + -0x90;\n        }\n        else if (puVar9 < (uint *)0x23) {\n          puVar13 = (undefined1 *)((int)puVar30 + -2);\n          iVar6 = *(int *)(pcVar51 + 0x7aa7c);\n          puVar20 = (uint *)puVar16[2];\n          uVar18 = (int)puVar9 - (int)puVar30;\n          puVar36 = (uint *)(iVar6 + ((uint)puVar9 >> 1));\n          puVar30 = (uint *)(iVar6 + ((uint)puVar30 >> 1));\n          bVar2 = *(byte *)((int)puVar30 + -1);\n          puVar31 = (uint *)(uint)*(byte *)(iVar6 + (uVar18 >> 1) + -1);\n          *puVar20 = *(int *)((int)puVar13 * 4 + *(int *)(pcVar51 + 0x7a8c8) + 0x35b4) *\n                     *(int *)(*(int *)(pcVar51 + 0x7ad64) + (int)puVar9 * 4) *\n                     *(int *)((uVar18 - 2) * 4 + *(int *)(pcVar51 + 0x7a8c8) + 0x35b4) <<\n                     (((uint)*(byte *)((int)puVar36 + -1) - (int)(uint)bVar2) - (int)puVar31 & 0x1f)\n          ;\n          puVar16[1] = 1;\n          puVar22 = (uint *)(uint)bVar2;\n          puVar49 = puVar46 + -0x90;\n        }\n        else if (puVar30 < &DAT_00000011) {\n          FUN_000216e8();\n          pcVar44 = *(code **)(puVar47 + -0xf0);\n          puVar49 = puVar46 + -0x90;\n        }\n        else if (puVar30 < &DAT_00000021) {\n          uVar18 = (uint)puVar30 >> 1;\n          uVar37 = (int)puVar9 - uVar18;\n          FUN_000216e8();\n          iVar6 = *(int *)(puVar47 + -0xf0);\n          uVar7 = (int)puVar30 - uVar18;\n          if (uVar37 < 0x23) {\n            puVar50 = (undefined1 *)puVar16[1];\n            if ((int)puVar50 < (int)*puVar16) {\n              puVar8 = (uint *)puVar16[2];\n            }\n            else {\n              puVar8 = (uint *)(**(code **)(iVar6 + -0x7a80))(puVar16,puVar50 + 1);\n              iVar6 = *(int *)(puVar47 + -0xf0);\n            }\n            iVar29 = *(int *)(iVar6 + -0x7e20);\n            iVar24 = *(int *)(iVar6 + -0x7fd4) + 0x35b4;\n            uVar37 = (**(code **)(iVar6 + -0x7f9c))\n                               (puVar8,puVar8,puVar50,\n                                *(int *)((((int)puVar9 - (int)puVar30) - 2U) * 4 + iVar24) *\n                                *(int *)(*(int *)(iVar6 + -0x7b38) + uVar37 * 4) *\n                                *(int *)((uVar7 - 2) * 4 + iVar24) <<\n                                (((uint)*(byte *)(iVar29 + (uVar37 >> 1) + -1) -\n                                 (uint)*(byte *)(iVar29 + (uVar7 >> 1) + -1)) -\n                                 (uint)*(byte *)(iVar29 + ((uint)((int)puVar9 - (int)puVar30) >> 1)\n                                                + -1) & 0x1f));\n            iVar6 = *(int *)(puVar47 + -0xf0);\n            puVar30 = (uint *)(puVar50 + (uVar37 != 0));\n            puVar8[(int)puVar50] = uVar37;\n          }\n          else {\n            *(undefined4 *)(puVar47 + -0xe4) = 0x15;\n            *(undefined1 **)(puVar47 + -0xdc) = puVar47 + -0xd8;\n            FUN_000216e8(puVar47 + -0xe4,uVar37,uVar7);\n            (**(code **)(*(int *)(puVar47 + -0xf0) + -0x7ba8))(puVar16,puVar16,puVar47 + -0xe4);\n            iVar6 = *(int *)(puVar47 + -0xf0);\n            puVar8 = (uint *)puVar16[2];\n            puVar30 = (uint *)puVar16[1];\n          }\n          pcVar51 = *(code **)(iVar6 + -0x7bb4);\n          puVar38 = (uint *)((uint)*(byte *)((uVar7 - 8) + *(int *)(iVar6 + -0x7fd4) + 0x3550) -\n                            (uint)(uVar18 != uVar7));\n          *(undefined4 *)(puVar47 + -0xf8) =\n               *(undefined4 *)((uVar7 - 8) * 4 + *(int *)(iVar6 + -0x7fd4) + 0x355c);\n          *(uint **)(puVar47 + -0xf4) = puVar38;\n          puVar31 = puVar8;\n          puVar20 = puVar8;\n          puVar22 = puVar30;\n          (*pcVar51)();\n          pcVar44 = *(code **)(puVar47 + -0xf0);\n          if (puVar8[(int)((int)puVar30 + -1)] == 0) {\n            puVar9 = puVar8 + (int)puVar30;\n            do {\n              puVar1 = puVar9 + -2;\n              puVar30 = (uint *)((int)puVar30 + -1);\n              puVar9 = puVar9 + -1;\n            } while (*puVar1 == 0);\n          }\n          puVar16[1] = (uint)puVar30;\n          puVar49 = puVar50;\n        }\n        else if ((puVar30 < (uint *)0x3e8) || (puVar30 <= (uint *)((uint)puVar9 >> 4))) {\n          FUN_0002209c();\n          pcVar44 = *(code **)(puVar47 + -0xf0);\n          puVar49 = puVar46 + -0x90;\n        }\n        else {\n          FUN_000219dc();\n          pcVar44 = *(code **)(puVar47 + -0xf0);\n          puVar49 = puVar46 + -0x90;\n        }\n      }\n      if (*(int *)(puVar47 + -0x84) == *piVar32) {\n        return *piVar32;\n      }\n      pcVar51 = *(code **)(pcVar44 + -0x7b70);\n      uVar10 = 0x22b64;\n      (*pcVar51)();\n      pcVar44 = pcVar51 + 0x824d0;\n      puVar48 = puVar47 + -0x160;\n      *(uint **)(puVar47 + -0x118) = puVar16;\n      *(uint **)(puVar47 + -0x124) = puVar30;\n      piVar34 = *(int **)(pcVar51 + 0x7a9d0);\n      uVar18 = puVar22[1];\n      *(undefined1 **)(puVar47 + -0x110) = puVar49;\n      *(uint **)(puVar47 + -0x114) = puVar36;\n      *(int **)(puVar47 + -0x11c) = piVar32;\n      *(uint **)(puVar47 + -0x120) = puVar8;\n      *(undefined4 *)(puVar47 + -0x10c) = uVar10;\n      *(code **)(puVar47 + -0x150) = pcVar44;\n      *(undefined4 *)(puVar47 + -0x13c) = 0;\n      puVar8 = (uint *)puVar20[1];\n      *(int *)(puVar47 + -300) = *piVar34;\n      if ((int)uVar18 < 0) {\n        uVar37 = uVar18 * -4;\n        *(uint *)(puVar47 + -0x138) = -uVar18;\n        if (0x7f00 < uVar37) {\n          pcVar51 = *(code **)(pcVar51 + 0x7a780);\n          goto LAB_00022c88;\n        }\nLAB_00022be4:\n        iVar6 = -(uVar37 + 7 & 0xfffffff8);\n        puVar48 = puVar47 + iVar6 + -0x160;\n        puVar13 = puVar47 + iVar6 + -0x150;\n      }\n      else {\n        uVar37 = uVar18 * 4;\n        *(uint *)(puVar47 + -0x138) = uVar18;\n        pcVar51 = *(code **)(pcVar51 + 0x7a780);\n        if (uVar37 < 0x7f01) goto LAB_00022be4;\nLAB_00022c88:\n        *(uint **)(puVar47 + -0x144) = puVar22;\n        puVar13 = (undefined1 *)(*pcVar51)(puVar47 + -0x13c,uVar37);\n        pcVar44 = *(code **)(puVar47 + -0x150);\n        puVar22 = *(uint **)(puVar47 + -0x144);\n      }\n      pcVar51 = *(code **)(pcVar44 + -0x7a68);\n      puVar36 = (uint *)(puVar47 + -0x138);\n      *(undefined1 **)(puVar47 + -0x130) = puVar13;\n      puVar9 = puVar20;\n      (*pcVar51)(puVar31,puVar36,puVar20,puVar22);\n      iVar6 = *(int *)(puVar47 + -0x150);\n      if (((int)((uint)puVar8 ^ uVar18) < 0) || (*(int *)(puVar47 + -0x134) == 0)) {\n        piVar32 = *(int **)(puVar47 + -0x13c);\n        pcVar51 = *(code **)(iVar6 + -0x7a28);\n        if (piVar32 != (int *)0x0) goto LAB_00022cc0;\n      }\n      else {\n        puVar9 = (uint *)0x1;\n        puVar36 = puVar31;\n        (**(code **)(iVar6 + -0x7c9c))(puVar31);\n        piVar32 = *(int **)(puVar47 + -0x13c);\n        iVar6 = *(int *)(puVar47 + -0x150);\n        if (piVar32 != (int *)0x0) {\n          pcVar51 = *(code **)(iVar6 + -0x7a28);\nLAB_00022cc0:\n          (*pcVar51)();\n          iVar6 = *(int *)(puVar47 + -0x150);\n        }\n      }\n      if (*(int *)(puVar47 + -300) == *piVar34) {\n        return *piVar34;\n      }\n      pcVar51 = *(code **)(iVar6 + -0x7b70);\n      uVar10 = 0x22cdc;\n      (*pcVar51)();\n      pcVar44 = pcVar51 + 0x82360;\n      *(code **)(puVar48 + -0x28) = pcVar44;\n      *(undefined4 *)(puVar48 + -4) = uVar10;\n      *(uint **)(puVar48 + -8) = puVar38;\n      *(uint **)(puVar48 + -0xc) = puVar20;\n      *(int **)(puVar48 + -0x10) = piVar34;\n      *(uint **)(puVar48 + -0x14) = puVar31;\n      *(uint **)(puVar48 + -0x18) = puVar8;\n      *(uint *)(puVar48 + -0x1c) = (uint)puVar8 ^ uVar18;\n      if (puVar9 == (uint *)0x0) {\n        pcVar51 = *(code **)(pcVar51 + 0x7a900);\n        (*pcVar51)();\nLAB_00022e2c:\n        piVar32 = (int *)(*pcVar51)(piVar34,puVar31);\n        pcVar44 = *(code **)(puVar48 + -0x28);\n      }\n      else {\n        puVar8 = (uint *)puVar36[1];\n        if (puVar8 == (uint *)0x0) {\n          piVar32[1] = 0;\n          return 0;\n        }\n        puVar31 = puVar8;\n        if ((int)puVar8 < 0) {\n          puVar31 = (uint *)-(int)puVar8;\n        }\n        pcVar51 = *(code **)(pcVar51 + 0x7a8e0);\n        piVar34 = piVar32;\n        puVar20 = puVar9;\n        puVar38 = puVar36;\n        if (*piVar32 < (int)puVar31) goto LAB_00022e2c;\n        piVar32 = (int *)piVar32[2];\n      }\n      pcVar51 = *(code **)(pcVar44 + -0x7d98);\n      uVar18 = puVar38[2];\n      *(uint **)(puVar48 + -0x30) = puVar20;\n      iVar6 = (*pcVar51)(piVar32,0,uVar18,puVar31);\n      piVar17 = piVar32 + (int)puVar31 + -1;\n      if (iVar6 == 0) {\n        uVar18 = (uint)(*piVar17 == 0);\n        if (-1 < (int)puVar8) {\n          iVar24 = (int)puVar31 - uVar18;\n          goto LAB_00022d9c;\n        }\n      }\n      else {\n        if (-1 < (int)puVar8) {\n          do {\n            iVar24 = *piVar32;\n            *piVar32 = iVar24 + 1;\n            piVar32 = piVar32 + 1;\n          } while (iVar24 + 1 == 0);\n          iVar6 = (int)puVar20 - iVar6;\n          iVar24 = (int)puVar31 - (uint)(*piVar17 == 0);\n          goto LAB_00022d9c;\n        }\n        uVar18 = (uint)(*piVar17 == 0);\n      }\n      iVar24 = uVar18 - (int)puVar31;\nLAB_00022d9c:\n      piVar34[1] = iVar24;\n      return iVar6;\n    }\n    *(int *)(puVar46 + -0x44) = iVar39;\n    iVar6 = iVar39 + uVar7;\n    uVar18 = (**(code **)(*(int *)(puVar46 + -0x34) + (uVar7 - 1) * 4))(iVar39);\n    puVar43 = *(undefined **)(puVar46 + -0x78);\n    if ((uVar18 & 0xff) == 0) {\n      uVar37 = uVar18 >> 8;\n      iVar24 = 6;\n      if ((uVar37 & 0xff) == 0) {\n        uVar37 = uVar18 >> 0x10;\n        iVar24 = 0xe;\n        if ((uVar37 & 0xff) == 0) {\n          uVar37 = uVar18 >> 0x18;\n          iVar24 = 0x1e;\n          if (uVar37 != 0) {\n            iVar24 = 0x16;\n          }\n        }\n      }\n      uVar37 = (uint)*(byte *)(*(int *)(puVar46 + -0x3c) + (-uVar37 & uVar37)) + iVar24;\n    }\n    else {\n      uVar37 = *(byte *)(*(int *)(puVar46 + -0x3c) + (-uVar18 & uVar18)) - 2;\n    }\n    iVar39 = *(int *)(puVar46 + -0x38);\n    *puVar36 = uVar18 >> (uVar37 & 0x1f);\n    iVar24 = *(int *)(puVar46 + -0x60);\n    *(uint *)(puVar46 + -0x40) =\n         *(int *)(puVar46 + -0x40) + *(byte *)(iVar39 + (uVar7 - 1)) + uVar37;\n    if ((uint)(iVar24 - iVar6) <= uVar7) {\n      uVar7 = iVar24 - iVar6;\n    }\n    iVar39 = iVar6;\n    if (uVar7 != 0) goto LAB_00022234;\nLAB_00022534:\n    puVar31 = (uint *)0x1;\n    *(uint **)(puVar46 + -0x4c) = puVar36;\n  }" { (expression_statement "iVar41 = iVar39 - *(int *)(puVar46 + -0x44);" (assignment_expression "iVar41 = iVar39 - *(int *)(puVar46 + -0x44)" identifier = (binary_expression "iVar39 - *(int *)(puVar46 + -0x44)" identifier - (pointer_expression "*(int *)(puVar46 + -0x44)" * (cast_expression "(int *)(puVar46 + -0x44)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar46 + -0x44)" ( (binary_expression "puVar46 + -0x44" identifier + number_literal) )))))) ;) (expression_statement "iVar24 = *(int *)(puVar46 + -0x5c);" (assignment_expression "iVar24 = *(int *)(puVar46 + -0x5c)" identifier = (pointer_expression "*(int *)(puVar46 + -0x5c)" * (cast_expression "(int *)(puVar46 + -0x5c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar46 + -0x5c)" ( (binary_expression "puVar46 + -0x5c" identifier + number_literal) ))))) ;) (expression_statement "iVar6 = iVar41;" (assignment_expression "iVar6 = iVar41" identifier = identifier) ;) (if_statement "if (iVar41 != 0) {\n      *(uint *)(puVar46 + -0x44) = uVar7;\n      *(uint **)(puVar46 + -0x50) = puVar31;\n      *(uint **)(puVar46 + -0x54) = puVar36;\n      *(int *)(puVar46 + -0x58) = iVar39;\n      iVar6 = *(int *)(puVar46 + -0x48);\n      iVar39 = *(int *)(puVar46 + -0x68);\n      iVar24 = iVar29;\n      do {\n        iVar33 = iVar41;\n        if (iVar39 <= iVar41) {\n          iVar33 = iVar39;\n        }\n        iVar29 = iVar24 + iVar33;\n        uVar18 = (**(code **)(*(int *)(puVar46 + -0x34) + (iVar33 + -1) * 4))(iVar24);\n        if ((uVar18 & 0xff) == 0) {\n          uVar37 = uVar18 >> 8;\n          iVar24 = 6;\n          if ((uVar37 & 0xff) == 0) {\n            uVar37 = uVar18 >> 0x10;\n            iVar24 = 0xe;\n            if ((uVar37 & 0xff) == 0) {\n              uVar37 = uVar18 >> 0x18;\n              iVar24 = 0x16;\n              if (uVar37 == 0) {\n                iVar24 = 0x1e;\n              }\n            }\n          }\n          uVar37 = (uint)*(byte *)(*(int *)(puVar46 + -0x3c) + (-uVar37 & uVar37)) + iVar24;\n        }\n        else {\n          uVar37 = *(byte *)(*(int *)(puVar46 + -0x3c) + (-uVar18 & uVar18)) - 2;\n        }\n        iVar41 = iVar41 - iVar33;\n        iVar6 = iVar6 + *(byte *)(*(int *)(puVar46 + -0x38) + iVar33 + -1) + uVar37;\n        uVar18 = (**(code **)(*(int *)(puVar46 + -0x78) + -0x7f9c))\n                           (puVar38,puVar38,puVar8,uVar18 >> (uVar37 & 0x1f));\n        puVar43 = *(undefined **)(puVar46 + -0x78);\n        puVar31 = puVar38 + (int)puVar8;\n        puVar8 = (uint *)((int)puVar8 + (uint)(uVar18 != 0));\n        *puVar31 = uVar18;\n        iVar24 = iVar29;\n      } while (iVar41 != 0);\n      uVar7 = *(uint *)(puVar46 + -0x44);\n      puVar31 = *(uint **)(puVar46 + -0x50);\n      puVar36 = *(uint **)(puVar46 + -0x54);\n      iVar39 = *(int *)(puVar46 + -0x58);\n      *(int *)(puVar46 + -0x48) = iVar6;\n      iVar24 = *(int *)(puVar46 + -0x5c);\n    }" if (parenthesized_expression "(iVar41 != 0)" ( (binary_expression "iVar41 != 0" identifier != number_literal) )) (compound_statement "{\n      *(uint *)(puVar46 + -0x44) = uVar7;\n      *(uint **)(puVar46 + -0x50) = puVar31;\n      *(uint **)(puVar46 + -0x54) = puVar36;\n      *(int *)(puVar46 + -0x58) = iVar39;\n      iVar6 = *(int *)(puVar46 + -0x48);\n      iVar39 = *(int *)(puVar46 + -0x68);\n      iVar24 = iVar29;\n      do {\n        iVar33 = iVar41;\n        if (iVar39 <= iVar41) {\n          iVar33 = iVar39;\n        }\n        iVar29 = iVar24 + iVar33;\n        uVar18 = (**(code **)(*(int *)(puVar46 + -0x34) + (iVar33 + -1) * 4))(iVar24);\n        if ((uVar18 & 0xff) == 0) {\n          uVar37 = uVar18 >> 8;\n          iVar24 = 6;\n          if ((uVar37 & 0xff) == 0) {\n            uVar37 = uVar18 >> 0x10;\n            iVar24 = 0xe;\n            if ((uVar37 & 0xff) == 0) {\n              uVar37 = uVar18 >> 0x18;\n              iVar24 = 0x16;\n              if (uVar37 == 0) {\n                iVar24 = 0x1e;\n              }\n            }\n          }\n          uVar37 = (uint)*(byte *)(*(int *)(puVar46 + -0x3c) + (-uVar37 & uVar37)) + iVar24;\n        }\n        else {\n          uVar37 = *(byte *)(*(int *)(puVar46 + -0x3c) + (-uVar18 & uVar18)) - 2;\n        }\n        iVar41 = iVar41 - iVar33;\n        iVar6 = iVar6 + *(byte *)(*(int *)(puVar46 + -0x38) + iVar33 + -1) + uVar37;\n        uVar18 = (**(code **)(*(int *)(puVar46 + -0x78) + -0x7f9c))\n                           (puVar38,puVar38,puVar8,uVar18 >> (uVar37 & 0x1f));\n        puVar43 = *(undefined **)(puVar46 + -0x78);\n        puVar31 = puVar38 + (int)puVar8;\n        puVar8 = (uint *)((int)puVar8 + (uint)(uVar18 != 0));\n        *puVar31 = uVar18;\n        iVar24 = iVar29;\n      } while (iVar41 != 0);\n      uVar7 = *(uint *)(puVar46 + -0x44);\n      puVar31 = *(uint **)(puVar46 + -0x50);\n      puVar36 = *(uint **)(puVar46 + -0x54);\n      iVar39 = *(int *)(puVar46 + -0x58);\n      *(int *)(puVar46 + -0x48) = iVar6;\n      iVar24 = *(int *)(puVar46 + -0x5c);\n    }" { (expression_statement "*(uint *)(puVar46 + -0x44) = uVar7;" (assignment_expression "*(uint *)(puVar46 + -0x44) = uVar7" (pointer_expression "*(uint *)(puVar46 + -0x44)" * (cast_expression "(uint *)(puVar46 + -0x44)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar46 + -0x44)" ( (binary_expression "puVar46 + -0x44" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(uint **)(puVar46 + -0x50) = puVar31;" (assignment_expression "*(uint **)(puVar46 + -0x50) = puVar31" (pointer_expression "*(uint **)(puVar46 + -0x50)" * (cast_expression "(uint **)(puVar46 + -0x50)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar46 + -0x50)" ( (binary_expression "puVar46 + -0x50" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(uint **)(puVar46 + -0x54) = puVar36;" (assignment_expression "*(uint **)(puVar46 + -0x54) = puVar36" (pointer_expression "*(uint **)(puVar46 + -0x54)" * (cast_expression "(uint **)(puVar46 + -0x54)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar46 + -0x54)" ( (binary_expression "puVar46 + -0x54" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(puVar46 + -0x58) = iVar39;" (assignment_expression "*(int *)(puVar46 + -0x58) = iVar39" (pointer_expression "*(int *)(puVar46 + -0x58)" * (cast_expression "(int *)(puVar46 + -0x58)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar46 + -0x58)" ( (binary_expression "puVar46 + -0x58" identifier + number_literal) )))) = identifier) ;) (expression_statement "iVar6 = *(int *)(puVar46 + -0x48);" (assignment_expression "iVar6 = *(int *)(puVar46 + -0x48)" identifier = (pointer_expression "*(int *)(puVar46 + -0x48)" * (cast_expression "(int *)(puVar46 + -0x48)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar46 + -0x48)" ( (binary_expression "puVar46 + -0x48" identifier + number_literal) ))))) ;) (expression_statement "iVar39 = *(int *)(puVar46 + -0x68);" (assignment_expression "iVar39 = *(int *)(puVar46 + -0x68)" identifier = (pointer_expression "*(int *)(puVar46 + -0x68)" * (cast_expression "(int *)(puVar46 + -0x68)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar46 + -0x68)" ( (binary_expression "puVar46 + -0x68" identifier + number_literal) ))))) ;) (expression_statement "iVar24 = iVar29;" (assignment_expression "iVar24 = iVar29" identifier = identifier) ;) (do_statement "do {\n        iVar33 = iVar41;\n        if (iVar39 <= iVar41) {\n          iVar33 = iVar39;\n        }\n        iVar29 = iVar24 + iVar33;\n        uVar18 = (**(code **)(*(int *)(puVar46 + -0x34) + (iVar33 + -1) * 4))(iVar24);\n        if ((uVar18 & 0xff) == 0) {\n          uVar37 = uVar18 >> 8;\n          iVar24 = 6;\n          if ((uVar37 & 0xff) == 0) {\n            uVar37 = uVar18 >> 0x10;\n            iVar24 = 0xe;\n            if ((uVar37 & 0xff) == 0) {\n              uVar37 = uVar18 >> 0x18;\n              iVar24 = 0x16;\n              if (uVar37 == 0) {\n                iVar24 = 0x1e;\n              }\n            }\n          }\n          uVar37 = (uint)*(byte *)(*(int *)(puVar46 + -0x3c) + (-uVar37 & uVar37)) + iVar24;\n        }\n        else {\n          uVar37 = *(byte *)(*(int *)(puVar46 + -0x3c) + (-uVar18 & uVar18)) - 2;\n        }\n        iVar41 = iVar41 - iVar33;\n        iVar6 = iVar6 + *(byte *)(*(int *)(puVar46 + -0x38) + iVar33 + -1) + uVar37;\n        uVar18 = (**(code **)(*(int *)(puVar46 + -0x78) + -0x7f9c))\n                           (puVar38,puVar38,puVar8,uVar18 >> (uVar37 & 0x1f));\n        puVar43 = *(undefined **)(puVar46 + -0x78);\n        puVar31 = puVar38 + (int)puVar8;\n        puVar8 = (uint *)((int)puVar8 + (uint)(uVar18 != 0));\n        *puVar31 = uVar18;\n        iVar24 = iVar29;\n      } while (iVar41 != 0);" do (compound_statement "{\n        iVar33 = iVar41;\n        if (iVar39 <= iVar41) {\n          iVar33 = iVar39;\n        }\n        iVar29 = iVar24 + iVar33;\n        uVar18 = (**(code **)(*(int *)(puVar46 + -0x34) + (iVar33 + -1) * 4))(iVar24);\n        if ((uVar18 & 0xff) == 0) {\n          uVar37 = uVar18 >> 8;\n          iVar24 = 6;\n          if ((uVar37 & 0xff) == 0) {\n            uVar37 = uVar18 >> 0x10;\n            iVar24 = 0xe;\n            if ((uVar37 & 0xff) == 0) {\n              uVar37 = uVar18 >> 0x18;\n              iVar24 = 0x16;\n              if (uVar37 == 0) {\n                iVar24 = 0x1e;\n              }\n            }\n          }\n          uVar37 = (uint)*(byte *)(*(int *)(puVar46 + -0x3c) + (-uVar37 & uVar37)) + iVar24;\n        }\n        else {\n          uVar37 = *(byte *)(*(int *)(puVar46 + -0x3c) + (-uVar18 & uVar18)) - 2;\n        }\n        iVar41 = iVar41 - iVar33;\n        iVar6 = iVar6 + *(byte *)(*(int *)(puVar46 + -0x38) + iVar33 + -1) + uVar37;\n        uVar18 = (**(code **)(*(int *)(puVar46 + -0x78) + -0x7f9c))\n                           (puVar38,puVar38,puVar8,uVar18 >> (uVar37 & 0x1f));\n        puVar43 = *(undefined **)(puVar46 + -0x78);\n        puVar31 = puVar38 + (int)puVar8;\n        puVar8 = (uint *)((int)puVar8 + (uint)(uVar18 != 0));\n        *puVar31 = uVar18;\n        iVar24 = iVar29;\n      }" { (expression_statement "iVar33 = iVar41;" (assignment_expression "iVar33 = iVar41" identifier = identifier) ;) (if_statement "if (iVar39 <= iVar41) {\n          iVar33 = iVar39;\n        }" if (parenthesized_expression "(iVar39 <= iVar41)" ( (binary_expression "iVar39 <= iVar41" identifier <= identifier) )) (compound_statement "{\n          iVar33 = iVar39;\n        }" { (expression_statement "iVar33 = iVar39;" (assignment_expression "iVar33 = iVar39" identifier = identifier) ;) })) (expression_statement "iVar29 = iVar24 + iVar33;" (assignment_expression "iVar29 = iVar24 + iVar33" identifier = (binary_expression "iVar24 + iVar33" identifier + identifier)) ;) (expression_statement "uVar18 = (**(code **)(*(int *)(puVar46 + -0x34) + (iVar33 + -1) * 4))(iVar24);" (assignment_expression "uVar18 = (**(code **)(*(int *)(puVar46 + -0x34) + (iVar33 + -1) * 4))(iVar24)" identifier = (call_expression "(**(code **)(*(int *)(puVar46 + -0x34) + (iVar33 + -1) * 4))(iVar24)" (parenthesized_expression "(**(code **)(*(int *)(puVar46 + -0x34) + (iVar33 + -1) * 4))" ( (pointer_expression "**(code **)(*(int *)(puVar46 + -0x34) + (iVar33 + -1) * 4)" * (pointer_expression "*(code **)(*(int *)(puVar46 + -0x34) + (iVar33 + -1) * 4)" * (cast_expression "(code **)(*(int *)(puVar46 + -0x34) + (iVar33 + -1) * 4)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)(puVar46 + -0x34) + (iVar33 + -1) * 4)" ( (binary_expression "*(int *)(puVar46 + -0x34) + (iVar33 + -1) * 4" (pointer_expression "*(int *)(puVar46 + -0x34)" * (cast_expression "(int *)(puVar46 + -0x34)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar46 + -0x34)" ( (binary_expression "puVar46 + -0x34" identifier + number_literal) )))) + (binary_expression "(iVar33 + -1) * 4" (parenthesized_expression "(iVar33 + -1)" ( (binary_expression "iVar33 + -1" identifier + number_literal) )) * number_literal)) ))))) )) (argument_list "(iVar24)" ( identifier )))) ;) (if_statement "if ((uVar18 & 0xff) == 0) {\n          uVar37 = uVar18 >> 8;\n          iVar24 = 6;\n          if ((uVar37 & 0xff) == 0) {\n            uVar37 = uVar18 >> 0x10;\n            iVar24 = 0xe;\n            if ((uVar37 & 0xff) == 0) {\n              uVar37 = uVar18 >> 0x18;\n              iVar24 = 0x16;\n              if (uVar37 == 0) {\n                iVar24 = 0x1e;\n              }\n            }\n          }\n          uVar37 = (uint)*(byte *)(*(int *)(puVar46 + -0x3c) + (-uVar37 & uVar37)) + iVar24;\n        }\n        else {\n          uVar37 = *(byte *)(*(int *)(puVar46 + -0x3c) + (-uVar18 & uVar18)) - 2;\n        }" if (parenthesized_expression "((uVar18 & 0xff) == 0)" ( (binary_expression "(uVar18 & 0xff) == 0" (parenthesized_expression "(uVar18 & 0xff)" ( (binary_expression "uVar18 & 0xff" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n          uVar37 = uVar18 >> 8;\n          iVar24 = 6;\n          if ((uVar37 & 0xff) == 0) {\n            uVar37 = uVar18 >> 0x10;\n            iVar24 = 0xe;\n            if ((uVar37 & 0xff) == 0) {\n              uVar37 = uVar18 >> 0x18;\n              iVar24 = 0x16;\n              if (uVar37 == 0) {\n                iVar24 = 0x1e;\n              }\n            }\n          }\n          uVar37 = (uint)*(byte *)(*(int *)(puVar46 + -0x3c) + (-uVar37 & uVar37)) + iVar24;\n        }" { (expression_statement "uVar37 = uVar18 >> 8;" (assignment_expression "uVar37 = uVar18 >> 8" identifier = (binary_expression "uVar18 >> 8" identifier >> number_literal)) ;) (expression_statement "iVar24 = 6;" (assignment_expression "iVar24 = 6" identifier = number_literal) ;) (if_statement "if ((uVar37 & 0xff) == 0) {\n            uVar37 = uVar18 >> 0x10;\n            iVar24 = 0xe;\n            if ((uVar37 & 0xff) == 0) {\n              uVar37 = uVar18 >> 0x18;\n              iVar24 = 0x16;\n              if (uVar37 == 0) {\n                iVar24 = 0x1e;\n              }\n            }\n          }" if (parenthesized_expression "((uVar37 & 0xff) == 0)" ( (binary_expression "(uVar37 & 0xff) == 0" (parenthesized_expression "(uVar37 & 0xff)" ( (binary_expression "uVar37 & 0xff" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n            uVar37 = uVar18 >> 0x10;\n            iVar24 = 0xe;\n            if ((uVar37 & 0xff) == 0) {\n              uVar37 = uVar18 >> 0x18;\n              iVar24 = 0x16;\n              if (uVar37 == 0) {\n                iVar24 = 0x1e;\n              }\n            }\n          }" { (expression_statement "uVar37 = uVar18 >> 0x10;" (assignment_expression "uVar37 = uVar18 >> 0x10" identifier = (binary_expression "uVar18 >> 0x10" identifier >> number_literal)) ;) (expression_statement "iVar24 = 0xe;" (assignment_expression "iVar24 = 0xe" identifier = number_literal) ;) (if_statement "if ((uVar37 & 0xff) == 0) {\n              uVar37 = uVar18 >> 0x18;\n              iVar24 = 0x16;\n              if (uVar37 == 0) {\n                iVar24 = 0x1e;\n              }\n            }" if (parenthesized_expression "((uVar37 & 0xff) == 0)" ( (binary_expression "(uVar37 & 0xff) == 0" (parenthesized_expression "(uVar37 & 0xff)" ( (binary_expression "uVar37 & 0xff" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n              uVar37 = uVar18 >> 0x18;\n              iVar24 = 0x16;\n              if (uVar37 == 0) {\n                iVar24 = 0x1e;\n              }\n            }" { (expression_statement "uVar37 = uVar18 >> 0x18;" (assignment_expression "uVar37 = uVar18 >> 0x18" identifier = (binary_expression "uVar18 >> 0x18" identifier >> number_literal)) ;) (expression_statement "iVar24 = 0x16;" (assignment_expression "iVar24 = 0x16" identifier = number_literal) ;) (if_statement "if (uVar37 == 0) {\n                iVar24 = 0x1e;\n              }" if (parenthesized_expression "(uVar37 == 0)" ( (binary_expression "uVar37 == 0" identifier == number_literal) )) (compound_statement "{\n                iVar24 = 0x1e;\n              }" { (expression_statement "iVar24 = 0x1e;" (assignment_expression "iVar24 = 0x1e" identifier = number_literal) ;) })) })) })) (expression_statement "uVar37 = (uint)*(byte *)(*(int *)(puVar46 + -0x3c) + (-uVar37 & uVar37)) + iVar24;" (assignment_expression "uVar37 = (uint)*(byte *)(*(int *)(puVar46 + -0x3c) + (-uVar37 & uVar37)) + iVar24" identifier = (binary_expression "(uint)*(byte *)(*(int *)(puVar46 + -0x3c) + (-uVar37 & uVar37)) + iVar24" (binary_expression "(uint)*(byte *)(*(int *)(puVar46 + -0x3c) + (-uVar37 & uVar37))" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)(*(int *)(puVar46 + -0x3c) + (-uVar37 & uVar37))" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(puVar46 + -0x3c) + (-uVar37 & uVar37))" ( (binary_expression "*(int *)(puVar46 + -0x3c) + (-uVar37 & uVar37)" (pointer_expression "*(int *)(puVar46 + -0x3c)" * (cast_expression "(int *)(puVar46 + -0x3c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar46 + -0x3c)" ( (binary_expression "puVar46 + -0x3c" identifier + number_literal) )))) + (parenthesized_expression "(-uVar37 & uVar37)" ( (binary_expression "-uVar37 & uVar37" (unary_expression "-uVar37" - identifier) & identifier) ))) )))) + identifier)) ;) }) (else_clause "else {\n          uVar37 = *(byte *)(*(int *)(puVar46 + -0x3c) + (-uVar18 & uVar18)) - 2;\n        }" else (compound_statement "{\n          uVar37 = *(byte *)(*(int *)(puVar46 + -0x3c) + (-uVar18 & uVar18)) - 2;\n        }" { (expression_statement "uVar37 = *(byte *)(*(int *)(puVar46 + -0x3c) + (-uVar18 & uVar18)) - 2;" (assignment_expression "uVar37 = *(byte *)(*(int *)(puVar46 + -0x3c) + (-uVar18 & uVar18)) - 2" identifier = (binary_expression "*(byte *)(*(int *)(puVar46 + -0x3c) + (-uVar18 & uVar18)) - 2" (pointer_expression "*(byte *)(*(int *)(puVar46 + -0x3c) + (-uVar18 & uVar18))" * (cast_expression "(byte *)(*(int *)(puVar46 + -0x3c) + (-uVar18 & uVar18))" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(puVar46 + -0x3c) + (-uVar18 & uVar18))" ( (binary_expression "*(int *)(puVar46 + -0x3c) + (-uVar18 & uVar18)" (pointer_expression "*(int *)(puVar46 + -0x3c)" * (cast_expression "(int *)(puVar46 + -0x3c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar46 + -0x3c)" ( (binary_expression "puVar46 + -0x3c" identifier + number_literal) )))) + (parenthesized_expression "(-uVar18 & uVar18)" ( (binary_expression "-uVar18 & uVar18" (unary_expression "-uVar18" - identifier) & identifier) ))) )))) - number_literal)) ;) }))) (expression_statement "iVar41 = iVar41 - iVar33;" (assignment_expression "iVar41 = iVar41 - iVar33" identifier = (binary_expression "iVar41 - iVar33" identifier - identifier)) ;) (expression_statement "iVar6 = iVar6 + *(byte *)(*(int *)(puVar46 + -0x38) + iVar33 + -1) + uVar37;" (assignment_expression "iVar6 = iVar6 + *(byte *)(*(int *)(puVar46 + -0x38) + iVar33 + -1) + uVar37" identifier = (binary_expression "iVar6 + *(byte *)(*(int *)(puVar46 + -0x38) + iVar33 + -1) + uVar37" (binary_expression "iVar6 + *(byte *)(*(int *)(puVar46 + -0x38) + iVar33 + -1)" identifier + (pointer_expression "*(byte *)(*(int *)(puVar46 + -0x38) + iVar33 + -1)" * (cast_expression "(byte *)(*(int *)(puVar46 + -0x38) + iVar33 + -1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(puVar46 + -0x38) + iVar33 + -1)" ( (binary_expression "*(int *)(puVar46 + -0x38) + iVar33 + -1" (binary_expression "*(int *)(puVar46 + -0x38) + iVar33" (pointer_expression "*(int *)(puVar46 + -0x38)" * (cast_expression "(int *)(puVar46 + -0x38)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar46 + -0x38)" ( (binary_expression "puVar46 + -0x38" identifier + number_literal) )))) + identifier) + number_literal) ))))) + identifier)) ;) (expression_statement "uVar18 = (**(code **)(*(int *)(puVar46 + -0x78) + -0x7f9c))\n                           (puVar38,puVar38,puVar8,uVar18 >> (uVar37 & 0x1f));" (assignment_expression "uVar18 = (**(code **)(*(int *)(puVar46 + -0x78) + -0x7f9c))\n                           (puVar38,puVar38,puVar8,uVar18 >> (uVar37 & 0x1f))" identifier = (call_expression "(**(code **)(*(int *)(puVar46 + -0x78) + -0x7f9c))\n                           (puVar38,puVar38,puVar8,uVar18 >> (uVar37 & 0x1f))" (parenthesized_expression "(**(code **)(*(int *)(puVar46 + -0x78) + -0x7f9c))" ( (pointer_expression "**(code **)(*(int *)(puVar46 + -0x78) + -0x7f9c)" * (pointer_expression "*(code **)(*(int *)(puVar46 + -0x78) + -0x7f9c)" * (cast_expression "(code **)(*(int *)(puVar46 + -0x78) + -0x7f9c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)(puVar46 + -0x78) + -0x7f9c)" ( (binary_expression "*(int *)(puVar46 + -0x78) + -0x7f9c" (pointer_expression "*(int *)(puVar46 + -0x78)" * (cast_expression "(int *)(puVar46 + -0x78)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar46 + -0x78)" ( (binary_expression "puVar46 + -0x78" identifier + number_literal) )))) + number_literal) ))))) )) (argument_list "(puVar38,puVar38,puVar8,uVar18 >> (uVar37 & 0x1f))" ( identifier , identifier , identifier , (binary_expression "uVar18 >> (uVar37 & 0x1f)" identifier >> (parenthesized_expression "(uVar37 & 0x1f)" ( (binary_expression "uVar37 & 0x1f" identifier & number_literal) ))) )))) ;) (expression_statement "puVar43 = *(undefined **)(puVar46 + -0x78);" (assignment_expression "puVar43 = *(undefined **)(puVar46 + -0x78)" identifier = (pointer_expression "*(undefined **)(puVar46 + -0x78)" * (cast_expression "(undefined **)(puVar46 + -0x78)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar46 + -0x78)" ( (binary_expression "puVar46 + -0x78" identifier + number_literal) ))))) ;) (expression_statement "puVar31 = puVar38 + (int)puVar8;" (assignment_expression "puVar31 = puVar38 + (int)puVar8" identifier = (binary_expression "puVar38 + (int)puVar8" identifier + (cast_expression "(int)puVar8" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "puVar8 = (uint *)((int)puVar8 + (uint)(uVar18 != 0));" (assignment_expression "puVar8 = (uint *)((int)puVar8 + (uint)(uVar18 != 0))" identifier = (cast_expression "(uint *)((int)puVar8 + (uint)(uVar18 != 0))" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar8 + (uint)(uVar18 != 0))" ( (binary_expression "(int)puVar8 + (uint)(uVar18 != 0)" (cast_expression "(int)puVar8" ( (type_descriptor "int" primitive_type) ) identifier) + (call_expression "(uint)(uVar18 != 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar18 != 0)" ( (binary_expression "uVar18 != 0" identifier != number_literal) )))) )))) ;) (expression_statement "*puVar31 = uVar18;" (assignment_expression "*puVar31 = uVar18" (pointer_expression "*puVar31" * identifier) = identifier) ;) (expression_statement "iVar24 = iVar29;" (assignment_expression "iVar24 = iVar29" identifier = identifier) ;) }) while (parenthesized_expression "(iVar41 != 0)" ( (binary_expression "iVar41 != 0" identifier != number_literal) )) ;) (expression_statement "uVar7 = *(uint *)(puVar46 + -0x44);" (assignment_expression "uVar7 = *(uint *)(puVar46 + -0x44)" identifier = (pointer_expression "*(uint *)(puVar46 + -0x44)" * (cast_expression "(uint *)(puVar46 + -0x44)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar46 + -0x44)" ( (binary_expression "puVar46 + -0x44" identifier + number_literal) ))))) ;) (expression_statement "puVar31 = *(uint **)(puVar46 + -0x50);" (assignment_expression "puVar31 = *(uint **)(puVar46 + -0x50)" identifier = (pointer_expression "*(uint **)(puVar46 + -0x50)" * (cast_expression "(uint **)(puVar46 + -0x50)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar46 + -0x50)" ( (binary_expression "puVar46 + -0x50" identifier + number_literal) ))))) ;) (expression_statement "puVar36 = *(uint **)(puVar46 + -0x54);" (assignment_expression "puVar36 = *(uint **)(puVar46 + -0x54)" identifier = (pointer_expression "*(uint **)(puVar46 + -0x54)" * (cast_expression "(uint **)(puVar46 + -0x54)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar46 + -0x54)" ( (binary_expression "puVar46 + -0x54" identifier + number_literal) ))))) ;) (expression_statement "iVar39 = *(int *)(puVar46 + -0x58);" (assignment_expression "iVar39 = *(int *)(puVar46 + -0x58)" identifier = (pointer_expression "*(int *)(puVar46 + -0x58)" * (cast_expression "(int *)(puVar46 + -0x58)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar46 + -0x58)" ( (binary_expression "puVar46 + -0x58" identifier + number_literal) ))))) ;) (expression_statement "*(int *)(puVar46 + -0x48) = iVar6;" (assignment_expression "*(int *)(puVar46 + -0x48) = iVar6" (pointer_expression "*(int *)(puVar46 + -0x48)" * (cast_expression "(int *)(puVar46 + -0x48)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar46 + -0x48)" ( (binary_expression "puVar46 + -0x48" identifier + number_literal) )))) = identifier) ;) (expression_statement "iVar24 = *(int *)(puVar46 + -0x5c);" (assignment_expression "iVar24 = *(int *)(puVar46 + -0x5c)" identifier = (pointer_expression "*(int *)(puVar46 + -0x5c)" * (cast_expression "(int *)(puVar46 + -0x5c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar46 + -0x5c)" ( (binary_expression "puVar46 + -0x5c" identifier + number_literal) ))))) ;) })) (expression_statement "uVar37 = *puVar36;" (assignment_expression "uVar37 = *puVar36" identifier = (pointer_expression "*puVar36" * identifier)) ;) (expression_statement "pcVar51 = *(code **)(puVar43 + -0x7bc0);" (assignment_expression "pcVar51 = *(code **)(puVar43 + -0x7bc0)" identifier = (pointer_expression "*(code **)(puVar43 + -0x7bc0)" * (cast_expression "(code **)(puVar43 + -0x7bc0)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar43 + -0x7bc0)" ( (binary_expression "puVar43 + -0x7bc0" identifier + number_literal) ))))) ;) (expression_statement "uVar18 = (uint)*(byte *)(*(int *)(puVar46 + -100) + ((uVar37 << 0x18) >> 0x19));" (assignment_expression "uVar18 = (uint)*(byte *)(*(int *)(puVar46 + -100) + ((uVar37 << 0x18) >> 0x19))" identifier = (binary_expression "(uint)*(byte *)(*(int *)(puVar46 + -100) + ((uVar37 << 0x18) >> 0x19))" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)(*(int *)(puVar46 + -100) + ((uVar37 << 0x18) >> 0x19))" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(puVar46 + -100) + ((uVar37 << 0x18) >> 0x19))" ( (binary_expression "*(int *)(puVar46 + -100) + ((uVar37 << 0x18) >> 0x19)" (pointer_expression "*(int *)(puVar46 + -100)" * (cast_expression "(int *)(puVar46 + -100)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar46 + -100)" ( (binary_expression "puVar46 + -100" identifier + number_literal) )))) + (parenthesized_expression "((uVar37 << 0x18) >> 0x19)" ( (binary_expression "(uVar37 << 0x18) >> 0x19" (parenthesized_expression "(uVar37 << 0x18)" ( (binary_expression "uVar37 << 0x18" identifier << number_literal) )) >> number_literal) ))) ))))) ;) (expression_statement "puVar8 = (uint *)((int)puVar8 +\n                     ((puVar38[(int)((int)puVar8 + iVar24)] < **(uint **)(puVar46 + -0x4c) ^ 1) -\n                     (int)puVar31));" (assignment_expression "puVar8 = (uint *)((int)puVar8 +\n                     ((puVar38[(int)((int)puVar8 + iVar24)] < **(uint **)(puVar46 + -0x4c) ^ 1) -\n                     (int)puVar31))" identifier = (cast_expression "(uint *)((int)puVar8 +\n                     ((puVar38[(int)((int)puVar8 + iVar24)] < **(uint **)(puVar46 + -0x4c) ^ 1) -\n                     (int)puVar31))" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar8 +\n                     ((puVar38[(int)((int)puVar8 + iVar24)] < **(uint **)(puVar46 + -0x4c) ^ 1) -\n                     (int)puVar31))" ( (binary_expression "(int)puVar8 +\n                     ((puVar38[(int)((int)puVar8 + iVar24)] < **(uint **)(puVar46 + -0x4c) ^ 1) -\n                     (int)puVar31)" (cast_expression "(int)puVar8" ( (type_descriptor "int" primitive_type) ) identifier) + (parenthesized_expression "((puVar38[(int)((int)puVar8 + iVar24)] < **(uint **)(puVar46 + -0x4c) ^ 1) -\n                     (int)puVar31)" ( (binary_expression "(puVar38[(int)((int)puVar8 + iVar24)] < **(uint **)(puVar46 + -0x4c) ^ 1) -\n                     (int)puVar31" (parenthesized_expression "(puVar38[(int)((int)puVar8 + iVar24)] < **(uint **)(puVar46 + -0x4c) ^ 1)" ( (binary_expression "puVar38[(int)((int)puVar8 + iVar24)] < **(uint **)(puVar46 + -0x4c) ^ 1" (binary_expression "puVar38[(int)((int)puVar8 + iVar24)] < **(uint **)(puVar46 + -0x4c)" (subscript_expression "puVar38[(int)((int)puVar8 + iVar24)]" identifier [ (cast_expression "(int)((int)puVar8 + iVar24)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((int)puVar8 + iVar24)" ( (binary_expression "(int)puVar8 + iVar24" (cast_expression "(int)puVar8" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) ))) ]) < (pointer_expression "**(uint **)(puVar46 + -0x4c)" * (pointer_expression "*(uint **)(puVar46 + -0x4c)" * (cast_expression "(uint **)(puVar46 + -0x4c)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar46 + -0x4c)" ( (binary_expression "puVar46 + -0x4c" identifier + number_literal) )))))) ^ number_literal) )) - (cast_expression "(int)puVar31" ( (type_descriptor "int" primitive_type) ) identifier)) ))) )))) ;) (expression_statement "iVar24 = uVar18 * 2 - uVar18 * uVar18 * uVar37;" (assignment_expression "iVar24 = uVar18 * 2 - uVar18 * uVar18 * uVar37" identifier = (binary_expression "uVar18 * 2 - uVar18 * uVar18 * uVar37" (binary_expression "uVar18 * 2" identifier * number_literal) - (binary_expression "uVar18 * uVar18 * uVar37" (binary_expression "uVar18 * uVar18" identifier * identifier) * identifier))) ;) (if_statement "if ((int)puVar8 < (int)puVar31) {\n      puVar31 = puVar8;\n    }" if (parenthesized_expression "((int)puVar8 < (int)puVar31)" ( (binary_expression "(int)puVar8 < (int)puVar31" (cast_expression "(int)puVar8" ( (type_descriptor "int" primitive_type) ) identifier) < (cast_expression "(int)puVar31" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n      puVar31 = puVar8;\n    }" { (expression_statement "puVar31 = puVar8;" (assignment_expression "puVar31 = puVar8" identifier = identifier) ;) })) (expression_statement "*(uint **)(puVar47 + -0x48) = puVar31;" (assignment_expression "*(uint **)(puVar47 + -0x48) = puVar31" (pointer_expression "*(uint **)(puVar47 + -0x48)" * (cast_expression "(uint **)(puVar47 + -0x48)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar47 + -0x48)" ( (binary_expression "puVar47 + -0x48" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(uint *)(puVar47 + -0x44) = iVar24 * iVar24 * uVar37 + iVar24 * -2;" (assignment_expression "*(uint *)(puVar47 + -0x44) = iVar24 * iVar24 * uVar37 + iVar24 * -2" (pointer_expression "*(uint *)(puVar47 + -0x44)" * (cast_expression "(uint *)(puVar47 + -0x44)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar47 + -0x44)" ( (binary_expression "puVar47 + -0x44" identifier + number_literal) )))) = (binary_expression "iVar24 * iVar24 * uVar37 + iVar24 * -2" (binary_expression "iVar24 * iVar24 * uVar37" (binary_expression "iVar24 * iVar24" identifier * identifier) * identifier) + (binary_expression "iVar24 * -2" identifier * number_literal))) ;) (expression_statement "puVar9 = puVar38;" (assignment_expression "puVar9 = puVar38" identifier = identifier) ;) (expression_statement "puVar22 = puVar8;" (assignment_expression "puVar22 = puVar8" identifier = identifier) ;) (expression_statement "(*pcVar51)(puVar38,puVar38,puVar8,puVar36);" (call_expression "(*pcVar51)(puVar38,puVar38,puVar8,puVar36)" (parenthesized_expression "(*pcVar51)" ( (pointer_expression "*pcVar51" * identifier) )) (argument_list "(puVar38,puVar38,puVar8,puVar36)" ( identifier , identifier , identifier , identifier ))) ;) (expression_statement "iVar24 = *(int *)(puVar46 + -0x78);" (assignment_expression "iVar24 = *(int *)(puVar46 + -0x78)" identifier = (pointer_expression "*(int *)(puVar46 + -0x78)" * (cast_expression "(int *)(puVar46 + -0x78)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar46 + -0x78)" ( (binary_expression "puVar46 + -0x78" identifier + number_literal) ))))) ;) (if_statement "if (uVar7 == 0) {\n      if (*(int *)(puVar46 + -0x48) == *(int *)(puVar46 + -0x40)) {\n        puVar8 = (uint *)((int)puVar8 - (uint)(puVar38[(int)((int)puVar8 + -1)] == 0));\n        pcVar51 = *(code **)(iVar24 + -0x7a80);\n        if ((int)puVar8 <= **(int **)(puVar46 + -0x6c)) goto LAB_00022600;\nLAB_00022734:\n        puVar9 = puVar8;\n        puVar19 = (undefined4 *)(*pcVar51)(*(undefined4 *)(puVar46 + -0x6c));\n        iVar24 = *(int *)(puVar46 + -0x78);\n      }\n      else {\n        puVar9 = puVar38;\n        puVar22 = puVar8;\n        uVar18 = (**(code **)(iVar24 + -0x7ad4))(puVar38);\n        iVar24 = *(int *)(puVar46 + -0x78);\n        puVar38[(int)puVar8] = uVar18;\n        puVar8 = (uint *)((int)puVar8 +\n                         ((uint)(uVar18 != 0) -\n                         (uint)(puVar38[(int)((int)puVar8 + ((uVar18 != 0) - 1))] == 0)));\n        pcVar51 = *(code **)(iVar24 + -0x7a80);\n        if (**(int **)(puVar46 + -0x6c) < (int)puVar8) goto LAB_00022734;\nLAB_00022600:\n        puVar19 = *(undefined4 **)(*(int *)(puVar46 + -0x6c) + 8);\n      }\n      *(uint **)(*(int *)(puVar46 + -0x6c) + 4) = puVar8;\n      if (puVar8 != (uint *)0x0) {\n        puVar13 = (undefined1 *)((int)puVar8 + -1);\n        puVar9 = (uint *)*puVar38;\n        if (puVar13 != (undefined1 *)0x0) {\n          puVar15 = puVar19;\n          puVar16 = puVar38 + 1;\n          do {\n            *puVar15 = puVar9;\n            puVar38 = puVar16 + 1;\n            puVar13 = puVar13 + -1;\n            puVar9 = (uint *)*puVar16;\n            puVar15 = puVar15 + 1;\n            puVar16 = puVar38;\n          } while (puVar13 != (undefined1 *)0x0);\n          puVar8 = (uint *)((int)puVar8 * 4);\n          puVar19 = (undefined4 *)((int)puVar19 + (int)(puVar8 + -1));\n        }\n        *puVar19 = puVar9;\n      }\n      puVar16 = *(uint **)(puVar46 + -0x30);\n      if (puVar16 != (uint *)0x0) {\n        (**(code **)(iVar24 + -0x7a28))();\n        iVar24 = *(int *)(puVar46 + -0x78);\n      }\n      if (*(int *)(puVar46 + -0x2c) == **(int **)(puVar46 + -0x70)) {\n        return **(int **)(puVar46 + -0x70);\n      }\n      pcVar51 = *(code **)(iVar24 + -0x7b70);\n      pcVar52 = __gmpz_bin_uiui;\n      (*pcVar51)();\n      pcVar44 = pcVar51 + 0x8289c;\n      *(uint **)(puVar47 + -0x78) = puVar31;\n      piVar32 = *(int **)(pcVar51 + 0x7ad9c);\n      *(code **)(puVar47 + -0xf0) = pcVar44;\n      *(int *)(puVar47 + -0x74) = iVar39;\n      *(code **)(puVar47 + -0x5c) = pcVar52;\n      *(undefined1 **)(puVar47 + -0x60) = puVar46 + -0x90;\n      *(int *)(puVar47 + -100) = iVar6;\n      *(int *)(puVar47 + -0x68) = iVar29;\n      *(uint **)(puVar47 + -0x6c) = puVar38;\n      *(uint **)(puVar47 + -0x70) = puVar36;\n      *(uint **)(puVar47 + -0x7c) = puVar8;\n      *(undefined4 *)(puVar47 + -0x80) = 0;\n      *(int *)(puVar47 + -0x84) = *piVar32;\n      puVar31 = puVar16;\n      puVar20 = puVar9;\n      if (puVar9 < puVar22) {\n        puVar16[1] = 0;\n        puVar30 = (uint *)0x0;\n      }\n      else {\n        puVar30 = puVar22;\n        if ((uint *)((int)puVar9 - (int)puVar22) <= puVar22) {\n          puVar30 = (uint *)((int)puVar9 - (int)puVar22);\n        }\n        puVar22 = puVar30;\n        puVar36 = puVar9;\n        if (puVar30 < (uint *)0x2) {\n          if (puVar30 == (uint *)0x0) {\n            puVar36 = (uint *)0x1;\n          }\n          *(uint **)puVar16[2] = puVar36;\n          puVar16[1] = 1;\n          puVar49 = puVar46 + -0x90;\n        }\n        else if (puVar9 < (uint *)0x23) {\n          puVar13 = (undefined1 *)((int)puVar30 + -2);\n          iVar6 = *(int *)(pcVar51 + 0x7aa7c);\n          puVar20 = (uint *)puVar16[2];\n          uVar18 = (int)puVar9 - (int)puVar30;\n          puVar36 = (uint *)(iVar6 + ((uint)puVar9 >> 1));\n          puVar30 = (uint *)(iVar6 + ((uint)puVar30 >> 1));\n          bVar2 = *(byte *)((int)puVar30 + -1);\n          puVar31 = (uint *)(uint)*(byte *)(iVar6 + (uVar18 >> 1) + -1);\n          *puVar20 = *(int *)((int)puVar13 * 4 + *(int *)(pcVar51 + 0x7a8c8) + 0x35b4) *\n                     *(int *)(*(int *)(pcVar51 + 0x7ad64) + (int)puVar9 * 4) *\n                     *(int *)((uVar18 - 2) * 4 + *(int *)(pcVar51 + 0x7a8c8) + 0x35b4) <<\n                     (((uint)*(byte *)((int)puVar36 + -1) - (int)(uint)bVar2) - (int)puVar31 & 0x1f)\n          ;\n          puVar16[1] = 1;\n          puVar22 = (uint *)(uint)bVar2;\n          puVar49 = puVar46 + -0x90;\n        }\n        else if (puVar30 < &DAT_00000011) {\n          FUN_000216e8();\n          pcVar44 = *(code **)(puVar47 + -0xf0);\n          puVar49 = puVar46 + -0x90;\n        }\n        else if (puVar30 < &DAT_00000021) {\n          uVar18 = (uint)puVar30 >> 1;\n          uVar37 = (int)puVar9 - uVar18;\n          FUN_000216e8();\n          iVar6 = *(int *)(puVar47 + -0xf0);\n          uVar7 = (int)puVar30 - uVar18;\n          if (uVar37 < 0x23) {\n            puVar50 = (undefined1 *)puVar16[1];\n            if ((int)puVar50 < (int)*puVar16) {\n              puVar8 = (uint *)puVar16[2];\n            }\n            else {\n              puVar8 = (uint *)(**(code **)(iVar6 + -0x7a80))(puVar16,puVar50 + 1);\n              iVar6 = *(int *)(puVar47 + -0xf0);\n            }\n            iVar29 = *(int *)(iVar6 + -0x7e20);\n            iVar24 = *(int *)(iVar6 + -0x7fd4) + 0x35b4;\n            uVar37 = (**(code **)(iVar6 + -0x7f9c))\n                               (puVar8,puVar8,puVar50,\n                                *(int *)((((int)puVar9 - (int)puVar30) - 2U) * 4 + iVar24) *\n                                *(int *)(*(int *)(iVar6 + -0x7b38) + uVar37 * 4) *\n                                *(int *)((uVar7 - 2) * 4 + iVar24) <<\n                                (((uint)*(byte *)(iVar29 + (uVar37 >> 1) + -1) -\n                                 (uint)*(byte *)(iVar29 + (uVar7 >> 1) + -1)) -\n                                 (uint)*(byte *)(iVar29 + ((uint)((int)puVar9 - (int)puVar30) >> 1)\n                                                + -1) & 0x1f));\n            iVar6 = *(int *)(puVar47 + -0xf0);\n            puVar30 = (uint *)(puVar50 + (uVar37 != 0));\n            puVar8[(int)puVar50] = uVar37;\n          }\n          else {\n            *(undefined4 *)(puVar47 + -0xe4) = 0x15;\n            *(undefined1 **)(puVar47 + -0xdc) = puVar47 + -0xd8;\n            FUN_000216e8(puVar47 + -0xe4,uVar37,uVar7);\n            (**(code **)(*(int *)(puVar47 + -0xf0) + -0x7ba8))(puVar16,puVar16,puVar47 + -0xe4);\n            iVar6 = *(int *)(puVar47 + -0xf0);\n            puVar8 = (uint *)puVar16[2];\n            puVar30 = (uint *)puVar16[1];\n          }\n          pcVar51 = *(code **)(iVar6 + -0x7bb4);\n          puVar38 = (uint *)((uint)*(byte *)((uVar7 - 8) + *(int *)(iVar6 + -0x7fd4) + 0x3550) -\n                            (uint)(uVar18 != uVar7));\n          *(undefined4 *)(puVar47 + -0xf8) =\n               *(undefined4 *)((uVar7 - 8) * 4 + *(int *)(iVar6 + -0x7fd4) + 0x355c);\n          *(uint **)(puVar47 + -0xf4) = puVar38;\n          puVar31 = puVar8;\n          puVar20 = puVar8;\n          puVar22 = puVar30;\n          (*pcVar51)();\n          pcVar44 = *(code **)(puVar47 + -0xf0);\n          if (puVar8[(int)((int)puVar30 + -1)] == 0) {\n            puVar9 = puVar8 + (int)puVar30;\n            do {\n              puVar1 = puVar9 + -2;\n              puVar30 = (uint *)((int)puVar30 + -1);\n              puVar9 = puVar9 + -1;\n            } while (*puVar1 == 0);\n          }\n          puVar16[1] = (uint)puVar30;\n          puVar49 = puVar50;\n        }\n        else if ((puVar30 < (uint *)0x3e8) || (puVar30 <= (uint *)((uint)puVar9 >> 4))) {\n          FUN_0002209c();\n          pcVar44 = *(code **)(puVar47 + -0xf0);\n          puVar49 = puVar46 + -0x90;\n        }\n        else {\n          FUN_000219dc();\n          pcVar44 = *(code **)(puVar47 + -0xf0);\n          puVar49 = puVar46 + -0x90;\n        }\n      }\n      if (*(int *)(puVar47 + -0x84) == *piVar32) {\n        return *piVar32;\n      }\n      pcVar51 = *(code **)(pcVar44 + -0x7b70);\n      uVar10 = 0x22b64;\n      (*pcVar51)();\n      pcVar44 = pcVar51 + 0x824d0;\n      puVar48 = puVar47 + -0x160;\n      *(uint **)(puVar47 + -0x118) = puVar16;\n      *(uint **)(puVar47 + -0x124) = puVar30;\n      piVar34 = *(int **)(pcVar51 + 0x7a9d0);\n      uVar18 = puVar22[1];\n      *(undefined1 **)(puVar47 + -0x110) = puVar49;\n      *(uint **)(puVar47 + -0x114) = puVar36;\n      *(int **)(puVar47 + -0x11c) = piVar32;\n      *(uint **)(puVar47 + -0x120) = puVar8;\n      *(undefined4 *)(puVar47 + -0x10c) = uVar10;\n      *(code **)(puVar47 + -0x150) = pcVar44;\n      *(undefined4 *)(puVar47 + -0x13c) = 0;\n      puVar8 = (uint *)puVar20[1];\n      *(int *)(puVar47 + -300) = *piVar34;\n      if ((int)uVar18 < 0) {\n        uVar37 = uVar18 * -4;\n        *(uint *)(puVar47 + -0x138) = -uVar18;\n        if (0x7f00 < uVar37) {\n          pcVar51 = *(code **)(pcVar51 + 0x7a780);\n          goto LAB_00022c88;\n        }\nLAB_00022be4:\n        iVar6 = -(uVar37 + 7 & 0xfffffff8);\n        puVar48 = puVar47 + iVar6 + -0x160;\n        puVar13 = puVar47 + iVar6 + -0x150;\n      }\n      else {\n        uVar37 = uVar18 * 4;\n        *(uint *)(puVar47 + -0x138) = uVar18;\n        pcVar51 = *(code **)(pcVar51 + 0x7a780);\n        if (uVar37 < 0x7f01) goto LAB_00022be4;\nLAB_00022c88:\n        *(uint **)(puVar47 + -0x144) = puVar22;\n        puVar13 = (undefined1 *)(*pcVar51)(puVar47 + -0x13c,uVar37);\n        pcVar44 = *(code **)(puVar47 + -0x150);\n        puVar22 = *(uint **)(puVar47 + -0x144);\n      }\n      pcVar51 = *(code **)(pcVar44 + -0x7a68);\n      puVar36 = (uint *)(puVar47 + -0x138);\n      *(undefined1 **)(puVar47 + -0x130) = puVar13;\n      puVar9 = puVar20;\n      (*pcVar51)(puVar31,puVar36,puVar20,puVar22);\n      iVar6 = *(int *)(puVar47 + -0x150);\n      if (((int)((uint)puVar8 ^ uVar18) < 0) || (*(int *)(puVar47 + -0x134) == 0)) {\n        piVar32 = *(int **)(puVar47 + -0x13c);\n        pcVar51 = *(code **)(iVar6 + -0x7a28);\n        if (piVar32 != (int *)0x0) goto LAB_00022cc0;\n      }\n      else {\n        puVar9 = (uint *)0x1;\n        puVar36 = puVar31;\n        (**(code **)(iVar6 + -0x7c9c))(puVar31);\n        piVar32 = *(int **)(puVar47 + -0x13c);\n        iVar6 = *(int *)(puVar47 + -0x150);\n        if (piVar32 != (int *)0x0) {\n          pcVar51 = *(code **)(iVar6 + -0x7a28);\nLAB_00022cc0:\n          (*pcVar51)();\n          iVar6 = *(int *)(puVar47 + -0x150);\n        }\n      }\n      if (*(int *)(puVar47 + -300) == *piVar34) {\n        return *piVar34;\n      }\n      pcVar51 = *(code **)(iVar6 + -0x7b70);\n      uVar10 = 0x22cdc;\n      (*pcVar51)();\n      pcVar44 = pcVar51 + 0x82360;\n      *(code **)(puVar48 + -0x28) = pcVar44;\n      *(undefined4 *)(puVar48 + -4) = uVar10;\n      *(uint **)(puVar48 + -8) = puVar38;\n      *(uint **)(puVar48 + -0xc) = puVar20;\n      *(int **)(puVar48 + -0x10) = piVar34;\n      *(uint **)(puVar48 + -0x14) = puVar31;\n      *(uint **)(puVar48 + -0x18) = puVar8;\n      *(uint *)(puVar48 + -0x1c) = (uint)puVar8 ^ uVar18;\n      if (puVar9 == (uint *)0x0) {\n        pcVar51 = *(code **)(pcVar51 + 0x7a900);\n        (*pcVar51)();\nLAB_00022e2c:\n        piVar32 = (int *)(*pcVar51)(piVar34,puVar31);\n        pcVar44 = *(code **)(puVar48 + -0x28);\n      }\n      else {\n        puVar8 = (uint *)puVar36[1];\n        if (puVar8 == (uint *)0x0) {\n          piVar32[1] = 0;\n          return 0;\n        }\n        puVar31 = puVar8;\n        if ((int)puVar8 < 0) {\n          puVar31 = (uint *)-(int)puVar8;\n        }\n        pcVar51 = *(code **)(pcVar51 + 0x7a8e0);\n        piVar34 = piVar32;\n        puVar20 = puVar9;\n        puVar38 = puVar36;\n        if (*piVar32 < (int)puVar31) goto LAB_00022e2c;\n        piVar32 = (int *)piVar32[2];\n      }\n      pcVar51 = *(code **)(pcVar44 + -0x7d98);\n      uVar18 = puVar38[2];\n      *(uint **)(puVar48 + -0x30) = puVar20;\n      iVar6 = (*pcVar51)(piVar32,0,uVar18,puVar31);\n      piVar17 = piVar32 + (int)puVar31 + -1;\n      if (iVar6 == 0) {\n        uVar18 = (uint)(*piVar17 == 0);\n        if (-1 < (int)puVar8) {\n          iVar24 = (int)puVar31 - uVar18;\n          goto LAB_00022d9c;\n        }\n      }\n      else {\n        if (-1 < (int)puVar8) {\n          do {\n            iVar24 = *piVar32;\n            *piVar32 = iVar24 + 1;\n            piVar32 = piVar32 + 1;\n          } while (iVar24 + 1 == 0);\n          iVar6 = (int)puVar20 - iVar6;\n          iVar24 = (int)puVar31 - (uint)(*piVar17 == 0);\n          goto LAB_00022d9c;\n        }\n        uVar18 = (uint)(*piVar17 == 0);\n      }\n      iVar24 = uVar18 - (int)puVar31;\nLAB_00022d9c:\n      piVar34[1] = iVar24;\n      return iVar6;\n    }" if (parenthesized_expression "(uVar7 == 0)" ( (binary_expression "uVar7 == 0" identifier == number_literal) )) (compound_statement "{\n      if (*(int *)(puVar46 + -0x48) == *(int *)(puVar46 + -0x40)) {\n        puVar8 = (uint *)((int)puVar8 - (uint)(puVar38[(int)((int)puVar8 + -1)] == 0));\n        pcVar51 = *(code **)(iVar24 + -0x7a80);\n        if ((int)puVar8 <= **(int **)(puVar46 + -0x6c)) goto LAB_00022600;\nLAB_00022734:\n        puVar9 = puVar8;\n        puVar19 = (undefined4 *)(*pcVar51)(*(undefined4 *)(puVar46 + -0x6c));\n        iVar24 = *(int *)(puVar46 + -0x78);\n      }\n      else {\n        puVar9 = puVar38;\n        puVar22 = puVar8;\n        uVar18 = (**(code **)(iVar24 + -0x7ad4))(puVar38);\n        iVar24 = *(int *)(puVar46 + -0x78);\n        puVar38[(int)puVar8] = uVar18;\n        puVar8 = (uint *)((int)puVar8 +\n                         ((uint)(uVar18 != 0) -\n                         (uint)(puVar38[(int)((int)puVar8 + ((uVar18 != 0) - 1))] == 0)));\n        pcVar51 = *(code **)(iVar24 + -0x7a80);\n        if (**(int **)(puVar46 + -0x6c) < (int)puVar8) goto LAB_00022734;\nLAB_00022600:\n        puVar19 = *(undefined4 **)(*(int *)(puVar46 + -0x6c) + 8);\n      }\n      *(uint **)(*(int *)(puVar46 + -0x6c) + 4) = puVar8;\n      if (puVar8 != (uint *)0x0) {\n        puVar13 = (undefined1 *)((int)puVar8 + -1);\n        puVar9 = (uint *)*puVar38;\n        if (puVar13 != (undefined1 *)0x0) {\n          puVar15 = puVar19;\n          puVar16 = puVar38 + 1;\n          do {\n            *puVar15 = puVar9;\n            puVar38 = puVar16 + 1;\n            puVar13 = puVar13 + -1;\n            puVar9 = (uint *)*puVar16;\n            puVar15 = puVar15 + 1;\n            puVar16 = puVar38;\n          } while (puVar13 != (undefined1 *)0x0);\n          puVar8 = (uint *)((int)puVar8 * 4);\n          puVar19 = (undefined4 *)((int)puVar19 + (int)(puVar8 + -1));\n        }\n        *puVar19 = puVar9;\n      }\n      puVar16 = *(uint **)(puVar46 + -0x30);\n      if (puVar16 != (uint *)0x0) {\n        (**(code **)(iVar24 + -0x7a28))();\n        iVar24 = *(int *)(puVar46 + -0x78);\n      }\n      if (*(int *)(puVar46 + -0x2c) == **(int **)(puVar46 + -0x70)) {\n        return **(int **)(puVar46 + -0x70);\n      }\n      pcVar51 = *(code **)(iVar24 + -0x7b70);\n      pcVar52 = __gmpz_bin_uiui;\n      (*pcVar51)();\n      pcVar44 = pcVar51 + 0x8289c;\n      *(uint **)(puVar47 + -0x78) = puVar31;\n      piVar32 = *(int **)(pcVar51 + 0x7ad9c);\n      *(code **)(puVar47 + -0xf0) = pcVar44;\n      *(int *)(puVar47 + -0x74) = iVar39;\n      *(code **)(puVar47 + -0x5c) = pcVar52;\n      *(undefined1 **)(puVar47 + -0x60) = puVar46 + -0x90;\n      *(int *)(puVar47 + -100) = iVar6;\n      *(int *)(puVar47 + -0x68) = iVar29;\n      *(uint **)(puVar47 + -0x6c) = puVar38;\n      *(uint **)(puVar47 + -0x70) = puVar36;\n      *(uint **)(puVar47 + -0x7c) = puVar8;\n      *(undefined4 *)(puVar47 + -0x80) = 0;\n      *(int *)(puVar47 + -0x84) = *piVar32;\n      puVar31 = puVar16;\n      puVar20 = puVar9;\n      if (puVar9 < puVar22) {\n        puVar16[1] = 0;\n        puVar30 = (uint *)0x0;\n      }\n      else {\n        puVar30 = puVar22;\n        if ((uint *)((int)puVar9 - (int)puVar22) <= puVar22) {\n          puVar30 = (uint *)((int)puVar9 - (int)puVar22);\n        }\n        puVar22 = puVar30;\n        puVar36 = puVar9;\n        if (puVar30 < (uint *)0x2) {\n          if (puVar30 == (uint *)0x0) {\n            puVar36 = (uint *)0x1;\n          }\n          *(uint **)puVar16[2] = puVar36;\n          puVar16[1] = 1;\n          puVar49 = puVar46 + -0x90;\n        }\n        else if (puVar9 < (uint *)0x23) {\n          puVar13 = (undefined1 *)((int)puVar30 + -2);\n          iVar6 = *(int *)(pcVar51 + 0x7aa7c);\n          puVar20 = (uint *)puVar16[2];\n          uVar18 = (int)puVar9 - (int)puVar30;\n          puVar36 = (uint *)(iVar6 + ((uint)puVar9 >> 1));\n          puVar30 = (uint *)(iVar6 + ((uint)puVar30 >> 1));\n          bVar2 = *(byte *)((int)puVar30 + -1);\n          puVar31 = (uint *)(uint)*(byte *)(iVar6 + (uVar18 >> 1) + -1);\n          *puVar20 = *(int *)((int)puVar13 * 4 + *(int *)(pcVar51 + 0x7a8c8) + 0x35b4) *\n                     *(int *)(*(int *)(pcVar51 + 0x7ad64) + (int)puVar9 * 4) *\n                     *(int *)((uVar18 - 2) * 4 + *(int *)(pcVar51 + 0x7a8c8) + 0x35b4) <<\n                     (((uint)*(byte *)((int)puVar36 + -1) - (int)(uint)bVar2) - (int)puVar31 & 0x1f)\n          ;\n          puVar16[1] = 1;\n          puVar22 = (uint *)(uint)bVar2;\n          puVar49 = puVar46 + -0x90;\n        }\n        else if (puVar30 < &DAT_00000011) {\n          FUN_000216e8();\n          pcVar44 = *(code **)(puVar47 + -0xf0);\n          puVar49 = puVar46 + -0x90;\n        }\n        else if (puVar30 < &DAT_00000021) {\n          uVar18 = (uint)puVar30 >> 1;\n          uVar37 = (int)puVar9 - uVar18;\n          FUN_000216e8();\n          iVar6 = *(int *)(puVar47 + -0xf0);\n          uVar7 = (int)puVar30 - uVar18;\n          if (uVar37 < 0x23) {\n            puVar50 = (undefined1 *)puVar16[1];\n            if ((int)puVar50 < (int)*puVar16) {\n              puVar8 = (uint *)puVar16[2];\n            }\n            else {\n              puVar8 = (uint *)(**(code **)(iVar6 + -0x7a80))(puVar16,puVar50 + 1);\n              iVar6 = *(int *)(puVar47 + -0xf0);\n            }\n            iVar29 = *(int *)(iVar6 + -0x7e20);\n            iVar24 = *(int *)(iVar6 + -0x7fd4) + 0x35b4;\n            uVar37 = (**(code **)(iVar6 + -0x7f9c))\n                               (puVar8,puVar8,puVar50,\n                                *(int *)((((int)puVar9 - (int)puVar30) - 2U) * 4 + iVar24) *\n                                *(int *)(*(int *)(iVar6 + -0x7b38) + uVar37 * 4) *\n                                *(int *)((uVar7 - 2) * 4 + iVar24) <<\n                                (((uint)*(byte *)(iVar29 + (uVar37 >> 1) + -1) -\n                                 (uint)*(byte *)(iVar29 + (uVar7 >> 1) + -1)) -\n                                 (uint)*(byte *)(iVar29 + ((uint)((int)puVar9 - (int)puVar30) >> 1)\n                                                + -1) & 0x1f));\n            iVar6 = *(int *)(puVar47 + -0xf0);\n            puVar30 = (uint *)(puVar50 + (uVar37 != 0));\n            puVar8[(int)puVar50] = uVar37;\n          }\n          else {\n            *(undefined4 *)(puVar47 + -0xe4) = 0x15;\n            *(undefined1 **)(puVar47 + -0xdc) = puVar47 + -0xd8;\n            FUN_000216e8(puVar47 + -0xe4,uVar37,uVar7);\n            (**(code **)(*(int *)(puVar47 + -0xf0) + -0x7ba8))(puVar16,puVar16,puVar47 + -0xe4);\n            iVar6 = *(int *)(puVar47 + -0xf0);\n            puVar8 = (uint *)puVar16[2];\n            puVar30 = (uint *)puVar16[1];\n          }\n          pcVar51 = *(code **)(iVar6 + -0x7bb4);\n          puVar38 = (uint *)((uint)*(byte *)((uVar7 - 8) + *(int *)(iVar6 + -0x7fd4) + 0x3550) -\n                            (uint)(uVar18 != uVar7));\n          *(undefined4 *)(puVar47 + -0xf8) =\n               *(undefined4 *)((uVar7 - 8) * 4 + *(int *)(iVar6 + -0x7fd4) + 0x355c);\n          *(uint **)(puVar47 + -0xf4) = puVar38;\n          puVar31 = puVar8;\n          puVar20 = puVar8;\n          puVar22 = puVar30;\n          (*pcVar51)();\n          pcVar44 = *(code **)(puVar47 + -0xf0);\n          if (puVar8[(int)((int)puVar30 + -1)] == 0) {\n            puVar9 = puVar8 + (int)puVar30;\n            do {\n              puVar1 = puVar9 + -2;\n              puVar30 = (uint *)((int)puVar30 + -1);\n              puVar9 = puVar9 + -1;\n            } while (*puVar1 == 0);\n          }\n          puVar16[1] = (uint)puVar30;\n          puVar49 = puVar50;\n        }\n        else if ((puVar30 < (uint *)0x3e8) || (puVar30 <= (uint *)((uint)puVar9 >> 4))) {\n          FUN_0002209c();\n          pcVar44 = *(code **)(puVar47 + -0xf0);\n          puVar49 = puVar46 + -0x90;\n        }\n        else {\n          FUN_000219dc();\n          pcVar44 = *(code **)(puVar47 + -0xf0);\n          puVar49 = puVar46 + -0x90;\n        }\n      }\n      if (*(int *)(puVar47 + -0x84) == *piVar32) {\n        return *piVar32;\n      }\n      pcVar51 = *(code **)(pcVar44 + -0x7b70);\n      uVar10 = 0x22b64;\n      (*pcVar51)();\n      pcVar44 = pcVar51 + 0x824d0;\n      puVar48 = puVar47 + -0x160;\n      *(uint **)(puVar47 + -0x118) = puVar16;\n      *(uint **)(puVar47 + -0x124) = puVar30;\n      piVar34 = *(int **)(pcVar51 + 0x7a9d0);\n      uVar18 = puVar22[1];\n      *(undefined1 **)(puVar47 + -0x110) = puVar49;\n      *(uint **)(puVar47 + -0x114) = puVar36;\n      *(int **)(puVar47 + -0x11c) = piVar32;\n      *(uint **)(puVar47 + -0x120) = puVar8;\n      *(undefined4 *)(puVar47 + -0x10c) = uVar10;\n      *(code **)(puVar47 + -0x150) = pcVar44;\n      *(undefined4 *)(puVar47 + -0x13c) = 0;\n      puVar8 = (uint *)puVar20[1];\n      *(int *)(puVar47 + -300) = *piVar34;\n      if ((int)uVar18 < 0) {\n        uVar37 = uVar18 * -4;\n        *(uint *)(puVar47 + -0x138) = -uVar18;\n        if (0x7f00 < uVar37) {\n          pcVar51 = *(code **)(pcVar51 + 0x7a780);\n          goto LAB_00022c88;\n        }\nLAB_00022be4:\n        iVar6 = -(uVar37 + 7 & 0xfffffff8);\n        puVar48 = puVar47 + iVar6 + -0x160;\n        puVar13 = puVar47 + iVar6 + -0x150;\n      }\n      else {\n        uVar37 = uVar18 * 4;\n        *(uint *)(puVar47 + -0x138) = uVar18;\n        pcVar51 = *(code **)(pcVar51 + 0x7a780);\n        if (uVar37 < 0x7f01) goto LAB_00022be4;\nLAB_00022c88:\n        *(uint **)(puVar47 + -0x144) = puVar22;\n        puVar13 = (undefined1 *)(*pcVar51)(puVar47 + -0x13c,uVar37);\n        pcVar44 = *(code **)(puVar47 + -0x150);\n        puVar22 = *(uint **)(puVar47 + -0x144);\n      }\n      pcVar51 = *(code **)(pcVar44 + -0x7a68);\n      puVar36 = (uint *)(puVar47 + -0x138);\n      *(undefined1 **)(puVar47 + -0x130) = puVar13;\n      puVar9 = puVar20;\n      (*pcVar51)(puVar31,puVar36,puVar20,puVar22);\n      iVar6 = *(int *)(puVar47 + -0x150);\n      if (((int)((uint)puVar8 ^ uVar18) < 0) || (*(int *)(puVar47 + -0x134) == 0)) {\n        piVar32 = *(int **)(puVar47 + -0x13c);\n        pcVar51 = *(code **)(iVar6 + -0x7a28);\n        if (piVar32 != (int *)0x0) goto LAB_00022cc0;\n      }\n      else {\n        puVar9 = (uint *)0x1;\n        puVar36 = puVar31;\n        (**(code **)(iVar6 + -0x7c9c))(puVar31);\n        piVar32 = *(int **)(puVar47 + -0x13c);\n        iVar6 = *(int *)(puVar47 + -0x150);\n        if (piVar32 != (int *)0x0) {\n          pcVar51 = *(code **)(iVar6 + -0x7a28);\nLAB_00022cc0:\n          (*pcVar51)();\n          iVar6 = *(int *)(puVar47 + -0x150);\n        }\n      }\n      if (*(int *)(puVar47 + -300) == *piVar34) {\n        return *piVar34;\n      }\n      pcVar51 = *(code **)(iVar6 + -0x7b70);\n      uVar10 = 0x22cdc;\n      (*pcVar51)();\n      pcVar44 = pcVar51 + 0x82360;\n      *(code **)(puVar48 + -0x28) = pcVar44;\n      *(undefined4 *)(puVar48 + -4) = uVar10;\n      *(uint **)(puVar48 + -8) = puVar38;\n      *(uint **)(puVar48 + -0xc) = puVar20;\n      *(int **)(puVar48 + -0x10) = piVar34;\n      *(uint **)(puVar48 + -0x14) = puVar31;\n      *(uint **)(puVar48 + -0x18) = puVar8;\n      *(uint *)(puVar48 + -0x1c) = (uint)puVar8 ^ uVar18;\n      if (puVar9 == (uint *)0x0) {\n        pcVar51 = *(code **)(pcVar51 + 0x7a900);\n        (*pcVar51)();\nLAB_00022e2c:\n        piVar32 = (int *)(*pcVar51)(piVar34,puVar31);\n        pcVar44 = *(code **)(puVar48 + -0x28);\n      }\n      else {\n        puVar8 = (uint *)puVar36[1];\n        if (puVar8 == (uint *)0x0) {\n          piVar32[1] = 0;\n          return 0;\n        }\n        puVar31 = puVar8;\n        if ((int)puVar8 < 0) {\n          puVar31 = (uint *)-(int)puVar8;\n        }\n        pcVar51 = *(code **)(pcVar51 + 0x7a8e0);\n        piVar34 = piVar32;\n        puVar20 = puVar9;\n        puVar38 = puVar36;\n        if (*piVar32 < (int)puVar31) goto LAB_00022e2c;\n        piVar32 = (int *)piVar32[2];\n      }\n      pcVar51 = *(code **)(pcVar44 + -0x7d98);\n      uVar18 = puVar38[2];\n      *(uint **)(puVar48 + -0x30) = puVar20;\n      iVar6 = (*pcVar51)(piVar32,0,uVar18,puVar31);\n      piVar17 = piVar32 + (int)puVar31 + -1;\n      if (iVar6 == 0) {\n        uVar18 = (uint)(*piVar17 == 0);\n        if (-1 < (int)puVar8) {\n          iVar24 = (int)puVar31 - uVar18;\n          goto LAB_00022d9c;\n        }\n      }\n      else {\n        if (-1 < (int)puVar8) {\n          do {\n            iVar24 = *piVar32;\n            *piVar32 = iVar24 + 1;\n            piVar32 = piVar32 + 1;\n          } while (iVar24 + 1 == 0);\n          iVar6 = (int)puVar20 - iVar6;\n          iVar24 = (int)puVar31 - (uint)(*piVar17 == 0);\n          goto LAB_00022d9c;\n        }\n        uVar18 = (uint)(*piVar17 == 0);\n      }\n      iVar24 = uVar18 - (int)puVar31;\nLAB_00022d9c:\n      piVar34[1] = iVar24;\n      return iVar6;\n    }" { (if_statement "if (*(int *)(puVar46 + -0x48) == *(int *)(puVar46 + -0x40)) {\n        puVar8 = (uint *)((int)puVar8 - (uint)(puVar38[(int)((int)puVar8 + -1)] == 0));\n        pcVar51 = *(code **)(iVar24 + -0x7a80);\n        if ((int)puVar8 <= **(int **)(puVar46 + -0x6c)) goto LAB_00022600;\nLAB_00022734:\n        puVar9 = puVar8;\n        puVar19 = (undefined4 *)(*pcVar51)(*(undefined4 *)(puVar46 + -0x6c));\n        iVar24 = *(int *)(puVar46 + -0x78);\n      }\n      else {\n        puVar9 = puVar38;\n        puVar22 = puVar8;\n        uVar18 = (**(code **)(iVar24 + -0x7ad4))(puVar38);\n        iVar24 = *(int *)(puVar46 + -0x78);\n        puVar38[(int)puVar8] = uVar18;\n        puVar8 = (uint *)((int)puVar8 +\n                         ((uint)(uVar18 != 0) -\n                         (uint)(puVar38[(int)((int)puVar8 + ((uVar18 != 0) - 1))] == 0)));\n        pcVar51 = *(code **)(iVar24 + -0x7a80);\n        if (**(int **)(puVar46 + -0x6c) < (int)puVar8) goto LAB_00022734;\nLAB_00022600:\n        puVar19 = *(undefined4 **)(*(int *)(puVar46 + -0x6c) + 8);\n      }" if (parenthesized_expression "(*(int *)(puVar46 + -0x48) == *(int *)(puVar46 + -0x40))" ( (binary_expression "*(int *)(puVar46 + -0x48) == *(int *)(puVar46 + -0x40)" (pointer_expression "*(int *)(puVar46 + -0x48)" * (cast_expression "(int *)(puVar46 + -0x48)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar46 + -0x48)" ( (binary_expression "puVar46 + -0x48" identifier + number_literal) )))) == (pointer_expression "*(int *)(puVar46 + -0x40)" * (cast_expression "(int *)(puVar46 + -0x40)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar46 + -0x40)" ( (binary_expression "puVar46 + -0x40" identifier + number_literal) ))))) )) (compound_statement "{\n        puVar8 = (uint *)((int)puVar8 - (uint)(puVar38[(int)((int)puVar8 + -1)] == 0));\n        pcVar51 = *(code **)(iVar24 + -0x7a80);\n        if ((int)puVar8 <= **(int **)(puVar46 + -0x6c)) goto LAB_00022600;\nLAB_00022734:\n        puVar9 = puVar8;\n        puVar19 = (undefined4 *)(*pcVar51)(*(undefined4 *)(puVar46 + -0x6c));\n        iVar24 = *(int *)(puVar46 + -0x78);\n      }" { (expression_statement "puVar8 = (uint *)((int)puVar8 - (uint)(puVar38[(int)((int)puVar8 + -1)] == 0));" (assignment_expression "puVar8 = (uint *)((int)puVar8 - (uint)(puVar38[(int)((int)puVar8 + -1)] == 0))" identifier = (cast_expression "(uint *)((int)puVar8 - (uint)(puVar38[(int)((int)puVar8 + -1)] == 0))" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar8 - (uint)(puVar38[(int)((int)puVar8 + -1)] == 0))" ( (binary_expression "(int)puVar8 - (uint)(puVar38[(int)((int)puVar8 + -1)] == 0)" (cast_expression "(int)puVar8" ( (type_descriptor "int" primitive_type) ) identifier) - (call_expression "(uint)(puVar38[(int)((int)puVar8 + -1)] == 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(puVar38[(int)((int)puVar8 + -1)] == 0)" ( (binary_expression "puVar38[(int)((int)puVar8 + -1)] == 0" (subscript_expression "puVar38[(int)((int)puVar8 + -1)]" identifier [ (cast_expression "(int)((int)puVar8 + -1)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((int)puVar8 + -1)" ( (binary_expression "(int)puVar8 + -1" (cast_expression "(int)puVar8" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))) ]) == number_literal) )))) )))) ;) (expression_statement "pcVar51 = *(code **)(iVar24 + -0x7a80);" (assignment_expression "pcVar51 = *(code **)(iVar24 + -0x7a80)" identifier = (pointer_expression "*(code **)(iVar24 + -0x7a80)" * (cast_expression "(code **)(iVar24 + -0x7a80)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar24 + -0x7a80)" ( (binary_expression "iVar24 + -0x7a80" identifier + number_literal) ))))) ;) (if_statement "if ((int)puVar8 <= **(int **)(puVar46 + -0x6c)) goto LAB_00022600;" if (parenthesized_expression "((int)puVar8 <= **(int **)(puVar46 + -0x6c))" ( (binary_expression "(int)puVar8 <= **(int **)(puVar46 + -0x6c)" (cast_expression "(int)puVar8" ( (type_descriptor "int" primitive_type) ) identifier) <= (pointer_expression "**(int **)(puVar46 + -0x6c)" * (pointer_expression "*(int **)(puVar46 + -0x6c)" * (cast_expression "(int **)(puVar46 + -0x6c)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar46 + -0x6c)" ( (binary_expression "puVar46 + -0x6c" identifier + number_literal) )))))) )) (goto_statement "goto LAB_00022600;" goto statement_identifier ;)) (labeled_statement "LAB_00022734:\n        puVar9 = puVar8;" statement_identifier : (expression_statement "puVar9 = puVar8;" (assignment_expression "puVar9 = puVar8" identifier = identifier) ;)) (expression_statement "puVar19 = (undefined4 *)(*pcVar51)(*(undefined4 *)(puVar46 + -0x6c));" (assignment_expression "puVar19 = (undefined4 *)(*pcVar51)(*(undefined4 *)(puVar46 + -0x6c))" identifier = (cast_expression "(undefined4 *)(*pcVar51)(*(undefined4 *)(puVar46 + -0x6c))" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(*pcVar51)(*(undefined4 *)(puVar46 + -0x6c))" (parenthesized_expression "(*pcVar51)" ( (pointer_expression "*pcVar51" * identifier) )) (argument_list "(*(undefined4 *)(puVar46 + -0x6c))" ( (pointer_expression "*(undefined4 *)(puVar46 + -0x6c)" * (cast_expression "(undefined4 *)(puVar46 + -0x6c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar46 + -0x6c)" ( (binary_expression "puVar46 + -0x6c" identifier + number_literal) )))) ))))) ;) (expression_statement "iVar24 = *(int *)(puVar46 + -0x78);" (assignment_expression "iVar24 = *(int *)(puVar46 + -0x78)" identifier = (pointer_expression "*(int *)(puVar46 + -0x78)" * (cast_expression "(int *)(puVar46 + -0x78)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar46 + -0x78)" ( (binary_expression "puVar46 + -0x78" identifier + number_literal) ))))) ;) }) (else_clause "else {\n        puVar9 = puVar38;\n        puVar22 = puVar8;\n        uVar18 = (**(code **)(iVar24 + -0x7ad4))(puVar38);\n        iVar24 = *(int *)(puVar46 + -0x78);\n        puVar38[(int)puVar8] = uVar18;\n        puVar8 = (uint *)((int)puVar8 +\n                         ((uint)(uVar18 != 0) -\n                         (uint)(puVar38[(int)((int)puVar8 + ((uVar18 != 0) - 1))] == 0)));\n        pcVar51 = *(code **)(iVar24 + -0x7a80);\n        if (**(int **)(puVar46 + -0x6c) < (int)puVar8) goto LAB_00022734;\nLAB_00022600:\n        puVar19 = *(undefined4 **)(*(int *)(puVar46 + -0x6c) + 8);\n      }" else (compound_statement "{\n        puVar9 = puVar38;\n        puVar22 = puVar8;\n        uVar18 = (**(code **)(iVar24 + -0x7ad4))(puVar38);\n        iVar24 = *(int *)(puVar46 + -0x78);\n        puVar38[(int)puVar8] = uVar18;\n        puVar8 = (uint *)((int)puVar8 +\n                         ((uint)(uVar18 != 0) -\n                         (uint)(puVar38[(int)((int)puVar8 + ((uVar18 != 0) - 1))] == 0)));\n        pcVar51 = *(code **)(iVar24 + -0x7a80);\n        if (**(int **)(puVar46 + -0x6c) < (int)puVar8) goto LAB_00022734;\nLAB_00022600:\n        puVar19 = *(undefined4 **)(*(int *)(puVar46 + -0x6c) + 8);\n      }" { (expression_statement "puVar9 = puVar38;" (assignment_expression "puVar9 = puVar38" identifier = identifier) ;) (expression_statement "puVar22 = puVar8;" (assignment_expression "puVar22 = puVar8" identifier = identifier) ;) (expression_statement "uVar18 = (**(code **)(iVar24 + -0x7ad4))(puVar38);" (assignment_expression "uVar18 = (**(code **)(iVar24 + -0x7ad4))(puVar38)" identifier = (call_expression "(**(code **)(iVar24 + -0x7ad4))(puVar38)" (parenthesized_expression "(**(code **)(iVar24 + -0x7ad4))" ( (pointer_expression "**(code **)(iVar24 + -0x7ad4)" * (pointer_expression "*(code **)(iVar24 + -0x7ad4)" * (cast_expression "(code **)(iVar24 + -0x7ad4)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar24 + -0x7ad4)" ( (binary_expression "iVar24 + -0x7ad4" identifier + number_literal) ))))) )) (argument_list "(puVar38)" ( identifier )))) ;) (expression_statement "iVar24 = *(int *)(puVar46 + -0x78);" (assignment_expression "iVar24 = *(int *)(puVar46 + -0x78)" identifier = (pointer_expression "*(int *)(puVar46 + -0x78)" * (cast_expression "(int *)(puVar46 + -0x78)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar46 + -0x78)" ( (binary_expression "puVar46 + -0x78" identifier + number_literal) ))))) ;) (expression_statement "puVar38[(int)puVar8] = uVar18;" (assignment_expression "puVar38[(int)puVar8] = uVar18" (subscript_expression "puVar38[(int)puVar8]" identifier [ (cast_expression "(int)puVar8" ( (type_descriptor "int" primitive_type) ) identifier) ]) = identifier) ;) (expression_statement "puVar8 = (uint *)((int)puVar8 +\n                         ((uint)(uVar18 != 0) -\n                         (uint)(puVar38[(int)((int)puVar8 + ((uVar18 != 0) - 1))] == 0)));" (assignment_expression "puVar8 = (uint *)((int)puVar8 +\n                         ((uint)(uVar18 != 0) -\n                         (uint)(puVar38[(int)((int)puVar8 + ((uVar18 != 0) - 1))] == 0)))" identifier = (cast_expression "(uint *)((int)puVar8 +\n                         ((uint)(uVar18 != 0) -\n                         (uint)(puVar38[(int)((int)puVar8 + ((uVar18 != 0) - 1))] == 0)))" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar8 +\n                         ((uint)(uVar18 != 0) -\n                         (uint)(puVar38[(int)((int)puVar8 + ((uVar18 != 0) - 1))] == 0)))" ( (binary_expression "(int)puVar8 +\n                         ((uint)(uVar18 != 0) -\n                         (uint)(puVar38[(int)((int)puVar8 + ((uVar18 != 0) - 1))] == 0))" (cast_expression "(int)puVar8" ( (type_descriptor "int" primitive_type) ) identifier) + (parenthesized_expression "((uint)(uVar18 != 0) -\n                         (uint)(puVar38[(int)((int)puVar8 + ((uVar18 != 0) - 1))] == 0))" ( (binary_expression "(uint)(uVar18 != 0) -\n                         (uint)(puVar38[(int)((int)puVar8 + ((uVar18 != 0) - 1))] == 0)" (call_expression "(uint)(uVar18 != 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar18 != 0)" ( (binary_expression "uVar18 != 0" identifier != number_literal) ))) - (call_expression "(uint)(puVar38[(int)((int)puVar8 + ((uVar18 != 0) - 1))] == 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(puVar38[(int)((int)puVar8 + ((uVar18 != 0) - 1))] == 0)" ( (binary_expression "puVar38[(int)((int)puVar8 + ((uVar18 != 0) - 1))] == 0" (subscript_expression "puVar38[(int)((int)puVar8 + ((uVar18 != 0) - 1))]" identifier [ (cast_expression "(int)((int)puVar8 + ((uVar18 != 0) - 1))" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((int)puVar8 + ((uVar18 != 0) - 1))" ( (binary_expression "(int)puVar8 + ((uVar18 != 0) - 1)" (cast_expression "(int)puVar8" ( (type_descriptor "int" primitive_type) ) identifier) + (parenthesized_expression "((uVar18 != 0) - 1)" ( (binary_expression "(uVar18 != 0) - 1" (parenthesized_expression "(uVar18 != 0)" ( (binary_expression "uVar18 != 0" identifier != number_literal) )) - number_literal) ))) ))) ]) == number_literal) )))) ))) )))) ;) (expression_statement "pcVar51 = *(code **)(iVar24 + -0x7a80);" (assignment_expression "pcVar51 = *(code **)(iVar24 + -0x7a80)" identifier = (pointer_expression "*(code **)(iVar24 + -0x7a80)" * (cast_expression "(code **)(iVar24 + -0x7a80)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar24 + -0x7a80)" ( (binary_expression "iVar24 + -0x7a80" identifier + number_literal) ))))) ;) (if_statement "if (**(int **)(puVar46 + -0x6c) < (int)puVar8) goto LAB_00022734;" if (parenthesized_expression "(**(int **)(puVar46 + -0x6c) < (int)puVar8)" ( (binary_expression "**(int **)(puVar46 + -0x6c) < (int)puVar8" (pointer_expression "**(int **)(puVar46 + -0x6c)" * (pointer_expression "*(int **)(puVar46 + -0x6c)" * (cast_expression "(int **)(puVar46 + -0x6c)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar46 + -0x6c)" ( (binary_expression "puVar46 + -0x6c" identifier + number_literal) ))))) < (cast_expression "(int)puVar8" ( (type_descriptor "int" primitive_type) ) identifier)) )) (goto_statement "goto LAB_00022734;" goto statement_identifier ;)) (labeled_statement "LAB_00022600:\n        puVar19 = *(undefined4 **)(*(int *)(puVar46 + -0x6c) + 8);" statement_identifier : (expression_statement "puVar19 = *(undefined4 **)(*(int *)(puVar46 + -0x6c) + 8);" (assignment_expression "puVar19 = *(undefined4 **)(*(int *)(puVar46 + -0x6c) + 8)" identifier = (pointer_expression "*(undefined4 **)(*(int *)(puVar46 + -0x6c) + 8)" * (cast_expression "(undefined4 **)(*(int *)(puVar46 + -0x6c) + 8)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)(puVar46 + -0x6c) + 8)" ( (binary_expression "*(int *)(puVar46 + -0x6c) + 8" (pointer_expression "*(int *)(puVar46 + -0x6c)" * (cast_expression "(int *)(puVar46 + -0x6c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar46 + -0x6c)" ( (binary_expression "puVar46 + -0x6c" identifier + number_literal) )))) + number_literal) ))))) ;)) }))) (expression_statement "*(uint **)(*(int *)(puVar46 + -0x6c) + 4) = puVar8;" (assignment_expression "*(uint **)(*(int *)(puVar46 + -0x6c) + 4) = puVar8" (pointer_expression "*(uint **)(*(int *)(puVar46 + -0x6c) + 4)" * (cast_expression "(uint **)(*(int *)(puVar46 + -0x6c) + 4)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)(puVar46 + -0x6c) + 4)" ( (binary_expression "*(int *)(puVar46 + -0x6c) + 4" (pointer_expression "*(int *)(puVar46 + -0x6c)" * (cast_expression "(int *)(puVar46 + -0x6c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar46 + -0x6c)" ( (binary_expression "puVar46 + -0x6c" identifier + number_literal) )))) + number_literal) )))) = identifier) ;) (if_statement "if (puVar8 != (uint *)0x0) {\n        puVar13 = (undefined1 *)((int)puVar8 + -1);\n        puVar9 = (uint *)*puVar38;\n        if (puVar13 != (undefined1 *)0x0) {\n          puVar15 = puVar19;\n          puVar16 = puVar38 + 1;\n          do {\n            *puVar15 = puVar9;\n            puVar38 = puVar16 + 1;\n            puVar13 = puVar13 + -1;\n            puVar9 = (uint *)*puVar16;\n            puVar15 = puVar15 + 1;\n            puVar16 = puVar38;\n          } while (puVar13 != (undefined1 *)0x0);\n          puVar8 = (uint *)((int)puVar8 * 4);\n          puVar19 = (undefined4 *)((int)puVar19 + (int)(puVar8 + -1));\n        }\n        *puVar19 = puVar9;\n      }" if (parenthesized_expression "(puVar8 != (uint *)0x0)" ( (binary_expression "puVar8 != (uint *)0x0" identifier != (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        puVar13 = (undefined1 *)((int)puVar8 + -1);\n        puVar9 = (uint *)*puVar38;\n        if (puVar13 != (undefined1 *)0x0) {\n          puVar15 = puVar19;\n          puVar16 = puVar38 + 1;\n          do {\n            *puVar15 = puVar9;\n            puVar38 = puVar16 + 1;\n            puVar13 = puVar13 + -1;\n            puVar9 = (uint *)*puVar16;\n            puVar15 = puVar15 + 1;\n            puVar16 = puVar38;\n          } while (puVar13 != (undefined1 *)0x0);\n          puVar8 = (uint *)((int)puVar8 * 4);\n          puVar19 = (undefined4 *)((int)puVar19 + (int)(puVar8 + -1));\n        }\n        *puVar19 = puVar9;\n      }" { (expression_statement "puVar13 = (undefined1 *)((int)puVar8 + -1);" (assignment_expression "puVar13 = (undefined1 *)((int)puVar8 + -1)" identifier = (cast_expression "(undefined1 *)((int)puVar8 + -1)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar8 + -1)" ( (binary_expression "(int)puVar8 + -1" (cast_expression "(int)puVar8" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "puVar9 = (uint *)*puVar38;" (assignment_expression "puVar9 = (uint *)*puVar38" identifier = (cast_expression "(uint *)*puVar38" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar38" * identifier))) ;) (if_statement "if (puVar13 != (undefined1 *)0x0) {\n          puVar15 = puVar19;\n          puVar16 = puVar38 + 1;\n          do {\n            *puVar15 = puVar9;\n            puVar38 = puVar16 + 1;\n            puVar13 = puVar13 + -1;\n            puVar9 = (uint *)*puVar16;\n            puVar15 = puVar15 + 1;\n            puVar16 = puVar38;\n          } while (puVar13 != (undefined1 *)0x0);\n          puVar8 = (uint *)((int)puVar8 * 4);\n          puVar19 = (undefined4 *)((int)puVar19 + (int)(puVar8 + -1));\n        }" if (parenthesized_expression "(puVar13 != (undefined1 *)0x0)" ( (binary_expression "puVar13 != (undefined1 *)0x0" identifier != (cast_expression "(undefined1 *)0x0" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          puVar15 = puVar19;\n          puVar16 = puVar38 + 1;\n          do {\n            *puVar15 = puVar9;\n            puVar38 = puVar16 + 1;\n            puVar13 = puVar13 + -1;\n            puVar9 = (uint *)*puVar16;\n            puVar15 = puVar15 + 1;\n            puVar16 = puVar38;\n          } while (puVar13 != (undefined1 *)0x0);\n          puVar8 = (uint *)((int)puVar8 * 4);\n          puVar19 = (undefined4 *)((int)puVar19 + (int)(puVar8 + -1));\n        }" { (expression_statement "puVar15 = puVar19;" (assignment_expression "puVar15 = puVar19" identifier = identifier) ;) (expression_statement "puVar16 = puVar38 + 1;" (assignment_expression "puVar16 = puVar38 + 1" identifier = (binary_expression "puVar38 + 1" identifier + number_literal)) ;) (do_statement "do {\n            *puVar15 = puVar9;\n            puVar38 = puVar16 + 1;\n            puVar13 = puVar13 + -1;\n            puVar9 = (uint *)*puVar16;\n            puVar15 = puVar15 + 1;\n            puVar16 = puVar38;\n          } while (puVar13 != (undefined1 *)0x0);" do (compound_statement "{\n            *puVar15 = puVar9;\n            puVar38 = puVar16 + 1;\n            puVar13 = puVar13 + -1;\n            puVar9 = (uint *)*puVar16;\n            puVar15 = puVar15 + 1;\n            puVar16 = puVar38;\n          }" { (expression_statement "*puVar15 = puVar9;" (assignment_expression "*puVar15 = puVar9" (pointer_expression "*puVar15" * identifier) = identifier) ;) (expression_statement "puVar38 = puVar16 + 1;" (assignment_expression "puVar38 = puVar16 + 1" identifier = (binary_expression "puVar16 + 1" identifier + number_literal)) ;) (expression_statement "puVar13 = puVar13 + -1;" (assignment_expression "puVar13 = puVar13 + -1" identifier = (binary_expression "puVar13 + -1" identifier + number_literal)) ;) (expression_statement "puVar9 = (uint *)*puVar16;" (assignment_expression "puVar9 = (uint *)*puVar16" identifier = (cast_expression "(uint *)*puVar16" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar16" * identifier))) ;) (expression_statement "puVar15 = puVar15 + 1;" (assignment_expression "puVar15 = puVar15 + 1" identifier = (binary_expression "puVar15 + 1" identifier + number_literal)) ;) (expression_statement "puVar16 = puVar38;" (assignment_expression "puVar16 = puVar38" identifier = identifier) ;) }) while (parenthesized_expression "(puVar13 != (undefined1 *)0x0)" ( (binary_expression "puVar13 != (undefined1 *)0x0" identifier != (cast_expression "(undefined1 *)0x0" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) ;) (expression_statement "puVar8 = (uint *)((int)puVar8 * 4);" (assignment_expression "puVar8 = (uint *)((int)puVar8 * 4)" identifier = (cast_expression "(uint *)((int)puVar8 * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar8 * 4)" ( (binary_expression "(int)puVar8 * 4" (cast_expression "(int)puVar8" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal) )))) ;) (expression_statement "puVar19 = (undefined4 *)((int)puVar19 + (int)(puVar8 + -1));" (assignment_expression "puVar19 = (undefined4 *)((int)puVar19 + (int)(puVar8 + -1))" identifier = (cast_expression "(undefined4 *)((int)puVar19 + (int)(puVar8 + -1))" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar19 + (int)(puVar8 + -1))" ( (binary_expression "(int)puVar19 + (int)(puVar8 + -1)" (cast_expression "(int)puVar19" ( (type_descriptor "int" primitive_type) ) identifier) + (cast_expression "(int)(puVar8 + -1)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(puVar8 + -1)" ( (binary_expression "puVar8 + -1" identifier + number_literal) )))) )))) ;) })) (expression_statement "*puVar19 = puVar9;" (assignment_expression "*puVar19 = puVar9" (pointer_expression "*puVar19" * identifier) = identifier) ;) })) (expression_statement "puVar16 = *(uint **)(puVar46 + -0x30);" (assignment_expression "puVar16 = *(uint **)(puVar46 + -0x30)" identifier = (pointer_expression "*(uint **)(puVar46 + -0x30)" * (cast_expression "(uint **)(puVar46 + -0x30)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar46 + -0x30)" ( (binary_expression "puVar46 + -0x30" identifier + number_literal) ))))) ;) (if_statement "if (puVar16 != (uint *)0x0) {\n        (**(code **)(iVar24 + -0x7a28))();\n        iVar24 = *(int *)(puVar46 + -0x78);\n      }" if (parenthesized_expression "(puVar16 != (uint *)0x0)" ( (binary_expression "puVar16 != (uint *)0x0" identifier != (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        (**(code **)(iVar24 + -0x7a28))();\n        iVar24 = *(int *)(puVar46 + -0x78);\n      }" { (expression_statement "(**(code **)(iVar24 + -0x7a28))();" (call_expression "(**(code **)(iVar24 + -0x7a28))()" (parenthesized_expression "(**(code **)(iVar24 + -0x7a28))" ( (pointer_expression "**(code **)(iVar24 + -0x7a28)" * (pointer_expression "*(code **)(iVar24 + -0x7a28)" * (cast_expression "(code **)(iVar24 + -0x7a28)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar24 + -0x7a28)" ( (binary_expression "iVar24 + -0x7a28" identifier + number_literal) ))))) )) (argument_list "()" ( ))) ;) (expression_statement "iVar24 = *(int *)(puVar46 + -0x78);" (assignment_expression "iVar24 = *(int *)(puVar46 + -0x78)" identifier = (pointer_expression "*(int *)(puVar46 + -0x78)" * (cast_expression "(int *)(puVar46 + -0x78)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar46 + -0x78)" ( (binary_expression "puVar46 + -0x78" identifier + number_literal) ))))) ;) })) (if_statement "if (*(int *)(puVar46 + -0x2c) == **(int **)(puVar46 + -0x70)) {\n        return **(int **)(puVar46 + -0x70);\n      }" if (parenthesized_expression "(*(int *)(puVar46 + -0x2c) == **(int **)(puVar46 + -0x70))" ( (binary_expression "*(int *)(puVar46 + -0x2c) == **(int **)(puVar46 + -0x70)" (pointer_expression "*(int *)(puVar46 + -0x2c)" * (cast_expression "(int *)(puVar46 + -0x2c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar46 + -0x2c)" ( (binary_expression "puVar46 + -0x2c" identifier + number_literal) )))) == (pointer_expression "**(int **)(puVar46 + -0x70)" * (pointer_expression "*(int **)(puVar46 + -0x70)" * (cast_expression "(int **)(puVar46 + -0x70)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar46 + -0x70)" ( (binary_expression "puVar46 + -0x70" identifier + number_literal) )))))) )) (compound_statement "{\n        return **(int **)(puVar46 + -0x70);\n      }" { (return_statement "return **(int **)(puVar46 + -0x70);" return (pointer_expression "**(int **)(puVar46 + -0x70)" * (pointer_expression "*(int **)(puVar46 + -0x70)" * (cast_expression "(int **)(puVar46 + -0x70)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar46 + -0x70)" ( (binary_expression "puVar46 + -0x70" identifier + number_literal) ))))) ;) })) (expression_statement "pcVar51 = *(code **)(iVar24 + -0x7b70);" (assignment_expression "pcVar51 = *(code **)(iVar24 + -0x7b70)" identifier = (pointer_expression "*(code **)(iVar24 + -0x7b70)" * (cast_expression "(code **)(iVar24 + -0x7b70)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar24 + -0x7b70)" ( (binary_expression "iVar24 + -0x7b70" identifier + number_literal) ))))) ;) (expression_statement "pcVar52 = __gmpz_bin_uiui;" (assignment_expression "pcVar52 = __gmpz_bin_uiui" identifier = identifier) ;) (expression_statement "(*pcVar51)();" (call_expression "(*pcVar51)()" (parenthesized_expression "(*pcVar51)" ( (pointer_expression "*pcVar51" * identifier) )) (argument_list "()" ( ))) ;) (expression_statement "pcVar44 = pcVar51 + 0x8289c;" (assignment_expression "pcVar44 = pcVar51 + 0x8289c" identifier = (binary_expression "pcVar51 + 0x8289c" identifier + number_literal)) ;) (expression_statement "*(uint **)(puVar47 + -0x78) = puVar31;" (assignment_expression "*(uint **)(puVar47 + -0x78) = puVar31" (pointer_expression "*(uint **)(puVar47 + -0x78)" * (cast_expression "(uint **)(puVar47 + -0x78)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar47 + -0x78)" ( (binary_expression "puVar47 + -0x78" identifier + number_literal) )))) = identifier) ;) (expression_statement "piVar32 = *(int **)(pcVar51 + 0x7ad9c);" (assignment_expression "piVar32 = *(int **)(pcVar51 + 0x7ad9c)" identifier = (pointer_expression "*(int **)(pcVar51 + 0x7ad9c)" * (cast_expression "(int **)(pcVar51 + 0x7ad9c)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar51 + 0x7ad9c)" ( (binary_expression "pcVar51 + 0x7ad9c" identifier + number_literal) ))))) ;) (expression_statement "*(code **)(puVar47 + -0xf0) = pcVar44;" (assignment_expression "*(code **)(puVar47 + -0xf0) = pcVar44" (pointer_expression "*(code **)(puVar47 + -0xf0)" * (cast_expression "(code **)(puVar47 + -0xf0)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar47 + -0xf0)" ( (binary_expression "puVar47 + -0xf0" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(puVar47 + -0x74) = iVar39;" (assignment_expression "*(int *)(puVar47 + -0x74) = iVar39" (pointer_expression "*(int *)(puVar47 + -0x74)" * (cast_expression "(int *)(puVar47 + -0x74)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar47 + -0x74)" ( (binary_expression "puVar47 + -0x74" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(code **)(puVar47 + -0x5c) = pcVar52;" (assignment_expression "*(code **)(puVar47 + -0x5c) = pcVar52" (pointer_expression "*(code **)(puVar47 + -0x5c)" * (cast_expression "(code **)(puVar47 + -0x5c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar47 + -0x5c)" ( (binary_expression "puVar47 + -0x5c" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined1 **)(puVar47 + -0x60) = puVar46 + -0x90;" (assignment_expression "*(undefined1 **)(puVar47 + -0x60) = puVar46 + -0x90" (pointer_expression "*(undefined1 **)(puVar47 + -0x60)" * (cast_expression "(undefined1 **)(puVar47 + -0x60)" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar47 + -0x60)" ( (binary_expression "puVar47 + -0x60" identifier + number_literal) )))) = (binary_expression "puVar46 + -0x90" identifier + number_literal)) ;) (expression_statement "*(int *)(puVar47 + -100) = iVar6;" (assignment_expression "*(int *)(puVar47 + -100) = iVar6" (pointer_expression "*(int *)(puVar47 + -100)" * (cast_expression "(int *)(puVar47 + -100)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar47 + -100)" ( (binary_expression "puVar47 + -100" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(puVar47 + -0x68) = iVar29;" (assignment_expression "*(int *)(puVar47 + -0x68) = iVar29" (pointer_expression "*(int *)(puVar47 + -0x68)" * (cast_expression "(int *)(puVar47 + -0x68)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar47 + -0x68)" ( (binary_expression "puVar47 + -0x68" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(uint **)(puVar47 + -0x6c) = puVar38;" (assignment_expression "*(uint **)(puVar47 + -0x6c) = puVar38" (pointer_expression "*(uint **)(puVar47 + -0x6c)" * (cast_expression "(uint **)(puVar47 + -0x6c)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar47 + -0x6c)" ( (binary_expression "puVar47 + -0x6c" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(uint **)(puVar47 + -0x70) = puVar36;" (assignment_expression "*(uint **)(puVar47 + -0x70) = puVar36" (pointer_expression "*(uint **)(puVar47 + -0x70)" * (cast_expression "(uint **)(puVar47 + -0x70)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar47 + -0x70)" ( (binary_expression "puVar47 + -0x70" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(uint **)(puVar47 + -0x7c) = puVar8;" (assignment_expression "*(uint **)(puVar47 + -0x7c) = puVar8" (pointer_expression "*(uint **)(puVar47 + -0x7c)" * (cast_expression "(uint **)(puVar47 + -0x7c)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar47 + -0x7c)" ( (binary_expression "puVar47 + -0x7c" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar47 + -0x80) = 0;" (assignment_expression "*(undefined4 *)(puVar47 + -0x80) = 0" (pointer_expression "*(undefined4 *)(puVar47 + -0x80)" * (cast_expression "(undefined4 *)(puVar47 + -0x80)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar47 + -0x80)" ( (binary_expression "puVar47 + -0x80" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(int *)(puVar47 + -0x84) = *piVar32;" (assignment_expression "*(int *)(puVar47 + -0x84) = *piVar32" (pointer_expression "*(int *)(puVar47 + -0x84)" * (cast_expression "(int *)(puVar47 + -0x84)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar47 + -0x84)" ( (binary_expression "puVar47 + -0x84" identifier + number_literal) )))) = (pointer_expression "*piVar32" * identifier)) ;) (expression_statement "puVar31 = puVar16;" (assignment_expression "puVar31 = puVar16" identifier = identifier) ;) (expression_statement "puVar20 = puVar9;" (assignment_expression "puVar20 = puVar9" identifier = identifier) ;) (if_statement "if (puVar9 < puVar22) {\n        puVar16[1] = 0;\n        puVar30 = (uint *)0x0;\n      }\n      else {\n        puVar30 = puVar22;\n        if ((uint *)((int)puVar9 - (int)puVar22) <= puVar22) {\n          puVar30 = (uint *)((int)puVar9 - (int)puVar22);\n        }\n        puVar22 = puVar30;\n        puVar36 = puVar9;\n        if (puVar30 < (uint *)0x2) {\n          if (puVar30 == (uint *)0x0) {\n            puVar36 = (uint *)0x1;\n          }\n          *(uint **)puVar16[2] = puVar36;\n          puVar16[1] = 1;\n          puVar49 = puVar46 + -0x90;\n        }\n        else if (puVar9 < (uint *)0x23) {\n          puVar13 = (undefined1 *)((int)puVar30 + -2);\n          iVar6 = *(int *)(pcVar51 + 0x7aa7c);\n          puVar20 = (uint *)puVar16[2];\n          uVar18 = (int)puVar9 - (int)puVar30;\n          puVar36 = (uint *)(iVar6 + ((uint)puVar9 >> 1));\n          puVar30 = (uint *)(iVar6 + ((uint)puVar30 >> 1));\n          bVar2 = *(byte *)((int)puVar30 + -1);\n          puVar31 = (uint *)(uint)*(byte *)(iVar6 + (uVar18 >> 1) + -1);\n          *puVar20 = *(int *)((int)puVar13 * 4 + *(int *)(pcVar51 + 0x7a8c8) + 0x35b4) *\n                     *(int *)(*(int *)(pcVar51 + 0x7ad64) + (int)puVar9 * 4) *\n                     *(int *)((uVar18 - 2) * 4 + *(int *)(pcVar51 + 0x7a8c8) + 0x35b4) <<\n                     (((uint)*(byte *)((int)puVar36 + -1) - (int)(uint)bVar2) - (int)puVar31 & 0x1f)\n          ;\n          puVar16[1] = 1;\n          puVar22 = (uint *)(uint)bVar2;\n          puVar49 = puVar46 + -0x90;\n        }\n        else if (puVar30 < &DAT_00000011) {\n          FUN_000216e8();\n          pcVar44 = *(code **)(puVar47 + -0xf0);\n          puVar49 = puVar46 + -0x90;\n        }\n        else if (puVar30 < &DAT_00000021) {\n          uVar18 = (uint)puVar30 >> 1;\n          uVar37 = (int)puVar9 - uVar18;\n          FUN_000216e8();\n          iVar6 = *(int *)(puVar47 + -0xf0);\n          uVar7 = (int)puVar30 - uVar18;\n          if (uVar37 < 0x23) {\n            puVar50 = (undefined1 *)puVar16[1];\n            if ((int)puVar50 < (int)*puVar16) {\n              puVar8 = (uint *)puVar16[2];\n            }\n            else {\n              puVar8 = (uint *)(**(code **)(iVar6 + -0x7a80))(puVar16,puVar50 + 1);\n              iVar6 = *(int *)(puVar47 + -0xf0);\n            }\n            iVar29 = *(int *)(iVar6 + -0x7e20);\n            iVar24 = *(int *)(iVar6 + -0x7fd4) + 0x35b4;\n            uVar37 = (**(code **)(iVar6 + -0x7f9c))\n                               (puVar8,puVar8,puVar50,\n                                *(int *)((((int)puVar9 - (int)puVar30) - 2U) * 4 + iVar24) *\n                                *(int *)(*(int *)(iVar6 + -0x7b38) + uVar37 * 4) *\n                                *(int *)((uVar7 - 2) * 4 + iVar24) <<\n                                (((uint)*(byte *)(iVar29 + (uVar37 >> 1) + -1) -\n                                 (uint)*(byte *)(iVar29 + (uVar7 >> 1) + -1)) -\n                                 (uint)*(byte *)(iVar29 + ((uint)((int)puVar9 - (int)puVar30) >> 1)\n                                                + -1) & 0x1f));\n            iVar6 = *(int *)(puVar47 + -0xf0);\n            puVar30 = (uint *)(puVar50 + (uVar37 != 0));\n            puVar8[(int)puVar50] = uVar37;\n          }\n          else {\n            *(undefined4 *)(puVar47 + -0xe4) = 0x15;\n            *(undefined1 **)(puVar47 + -0xdc) = puVar47 + -0xd8;\n            FUN_000216e8(puVar47 + -0xe4,uVar37,uVar7);\n            (**(code **)(*(int *)(puVar47 + -0xf0) + -0x7ba8))(puVar16,puVar16,puVar47 + -0xe4);\n            iVar6 = *(int *)(puVar47 + -0xf0);\n            puVar8 = (uint *)puVar16[2];\n            puVar30 = (uint *)puVar16[1];\n          }\n          pcVar51 = *(code **)(iVar6 + -0x7bb4);\n          puVar38 = (uint *)((uint)*(byte *)((uVar7 - 8) + *(int *)(iVar6 + -0x7fd4) + 0x3550) -\n                            (uint)(uVar18 != uVar7));\n          *(undefined4 *)(puVar47 + -0xf8) =\n               *(undefined4 *)((uVar7 - 8) * 4 + *(int *)(iVar6 + -0x7fd4) + 0x355c);\n          *(uint **)(puVar47 + -0xf4) = puVar38;\n          puVar31 = puVar8;\n          puVar20 = puVar8;\n          puVar22 = puVar30;\n          (*pcVar51)();\n          pcVar44 = *(code **)(puVar47 + -0xf0);\n          if (puVar8[(int)((int)puVar30 + -1)] == 0) {\n            puVar9 = puVar8 + (int)puVar30;\n            do {\n              puVar1 = puVar9 + -2;\n              puVar30 = (uint *)((int)puVar30 + -1);\n              puVar9 = puVar9 + -1;\n            } while (*puVar1 == 0);\n          }\n          puVar16[1] = (uint)puVar30;\n          puVar49 = puVar50;\n        }\n        else if ((puVar30 < (uint *)0x3e8) || (puVar30 <= (uint *)((uint)puVar9 >> 4))) {\n          FUN_0002209c();\n          pcVar44 = *(code **)(puVar47 + -0xf0);\n          puVar49 = puVar46 + -0x90;\n        }\n        else {\n          FUN_000219dc();\n          pcVar44 = *(code **)(puVar47 + -0xf0);\n          puVar49 = puVar46 + -0x90;\n        }\n      }" if (parenthesized_expression "(puVar9 < puVar22)" ( (binary_expression "puVar9 < puVar22" identifier < identifier) )) (compound_statement "{\n        puVar16[1] = 0;\n        puVar30 = (uint *)0x0;\n      }" { (expression_statement "puVar16[1] = 0;" (assignment_expression "puVar16[1] = 0" (subscript_expression "puVar16[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar30 = (uint *)0x0;" (assignment_expression "puVar30 = (uint *)0x0" identifier = (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) }) (else_clause "else {\n        puVar30 = puVar22;\n        if ((uint *)((int)puVar9 - (int)puVar22) <= puVar22) {\n          puVar30 = (uint *)((int)puVar9 - (int)puVar22);\n        }\n        puVar22 = puVar30;\n        puVar36 = puVar9;\n        if (puVar30 < (uint *)0x2) {\n          if (puVar30 == (uint *)0x0) {\n            puVar36 = (uint *)0x1;\n          }\n          *(uint **)puVar16[2] = puVar36;\n          puVar16[1] = 1;\n          puVar49 = puVar46 + -0x90;\n        }\n        else if (puVar9 < (uint *)0x23) {\n          puVar13 = (undefined1 *)((int)puVar30 + -2);\n          iVar6 = *(int *)(pcVar51 + 0x7aa7c);\n          puVar20 = (uint *)puVar16[2];\n          uVar18 = (int)puVar9 - (int)puVar30;\n          puVar36 = (uint *)(iVar6 + ((uint)puVar9 >> 1));\n          puVar30 = (uint *)(iVar6 + ((uint)puVar30 >> 1));\n          bVar2 = *(byte *)((int)puVar30 + -1);\n          puVar31 = (uint *)(uint)*(byte *)(iVar6 + (uVar18 >> 1) + -1);\n          *puVar20 = *(int *)((int)puVar13 * 4 + *(int *)(pcVar51 + 0x7a8c8) + 0x35b4) *\n                     *(int *)(*(int *)(pcVar51 + 0x7ad64) + (int)puVar9 * 4) *\n                     *(int *)((uVar18 - 2) * 4 + *(int *)(pcVar51 + 0x7a8c8) + 0x35b4) <<\n                     (((uint)*(byte *)((int)puVar36 + -1) - (int)(uint)bVar2) - (int)puVar31 & 0x1f)\n          ;\n          puVar16[1] = 1;\n          puVar22 = (uint *)(uint)bVar2;\n          puVar49 = puVar46 + -0x90;\n        }\n        else if (puVar30 < &DAT_00000011) {\n          FUN_000216e8();\n          pcVar44 = *(code **)(puVar47 + -0xf0);\n          puVar49 = puVar46 + -0x90;\n        }\n        else if (puVar30 < &DAT_00000021) {\n          uVar18 = (uint)puVar30 >> 1;\n          uVar37 = (int)puVar9 - uVar18;\n          FUN_000216e8();\n          iVar6 = *(int *)(puVar47 + -0xf0);\n          uVar7 = (int)puVar30 - uVar18;\n          if (uVar37 < 0x23) {\n            puVar50 = (undefined1 *)puVar16[1];\n            if ((int)puVar50 < (int)*puVar16) {\n              puVar8 = (uint *)puVar16[2];\n            }\n            else {\n              puVar8 = (uint *)(**(code **)(iVar6 + -0x7a80))(puVar16,puVar50 + 1);\n              iVar6 = *(int *)(puVar47 + -0xf0);\n            }\n            iVar29 = *(int *)(iVar6 + -0x7e20);\n            iVar24 = *(int *)(iVar6 + -0x7fd4) + 0x35b4;\n            uVar37 = (**(code **)(iVar6 + -0x7f9c))\n                               (puVar8,puVar8,puVar50,\n                                *(int *)((((int)puVar9 - (int)puVar30) - 2U) * 4 + iVar24) *\n                                *(int *)(*(int *)(iVar6 + -0x7b38) + uVar37 * 4) *\n                                *(int *)((uVar7 - 2) * 4 + iVar24) <<\n                                (((uint)*(byte *)(iVar29 + (uVar37 >> 1) + -1) -\n                                 (uint)*(byte *)(iVar29 + (uVar7 >> 1) + -1)) -\n                                 (uint)*(byte *)(iVar29 + ((uint)((int)puVar9 - (int)puVar30) >> 1)\n                                                + -1) & 0x1f));\n            iVar6 = *(int *)(puVar47 + -0xf0);\n            puVar30 = (uint *)(puVar50 + (uVar37 != 0));\n            puVar8[(int)puVar50] = uVar37;\n          }\n          else {\n            *(undefined4 *)(puVar47 + -0xe4) = 0x15;\n            *(undefined1 **)(puVar47 + -0xdc) = puVar47 + -0xd8;\n            FUN_000216e8(puVar47 + -0xe4,uVar37,uVar7);\n            (**(code **)(*(int *)(puVar47 + -0xf0) + -0x7ba8))(puVar16,puVar16,puVar47 + -0xe4);\n            iVar6 = *(int *)(puVar47 + -0xf0);\n            puVar8 = (uint *)puVar16[2];\n            puVar30 = (uint *)puVar16[1];\n          }\n          pcVar51 = *(code **)(iVar6 + -0x7bb4);\n          puVar38 = (uint *)((uint)*(byte *)((uVar7 - 8) + *(int *)(iVar6 + -0x7fd4) + 0x3550) -\n                            (uint)(uVar18 != uVar7));\n          *(undefined4 *)(puVar47 + -0xf8) =\n               *(undefined4 *)((uVar7 - 8) * 4 + *(int *)(iVar6 + -0x7fd4) + 0x355c);\n          *(uint **)(puVar47 + -0xf4) = puVar38;\n          puVar31 = puVar8;\n          puVar20 = puVar8;\n          puVar22 = puVar30;\n          (*pcVar51)();\n          pcVar44 = *(code **)(puVar47 + -0xf0);\n          if (puVar8[(int)((int)puVar30 + -1)] == 0) {\n            puVar9 = puVar8 + (int)puVar30;\n            do {\n              puVar1 = puVar9 + -2;\n              puVar30 = (uint *)((int)puVar30 + -1);\n              puVar9 = puVar9 + -1;\n            } while (*puVar1 == 0);\n          }\n          puVar16[1] = (uint)puVar30;\n          puVar49 = puVar50;\n        }\n        else if ((puVar30 < (uint *)0x3e8) || (puVar30 <= (uint *)((uint)puVar9 >> 4))) {\n          FUN_0002209c();\n          pcVar44 = *(code **)(puVar47 + -0xf0);\n          puVar49 = puVar46 + -0x90;\n        }\n        else {\n          FUN_000219dc();\n          pcVar44 = *(code **)(puVar47 + -0xf0);\n          puVar49 = puVar46 + -0x90;\n        }\n      }" else (compound_statement "{\n        puVar30 = puVar22;\n        if ((uint *)((int)puVar9 - (int)puVar22) <= puVar22) {\n          puVar30 = (uint *)((int)puVar9 - (int)puVar22);\n        }\n        puVar22 = puVar30;\n        puVar36 = puVar9;\n        if (puVar30 < (uint *)0x2) {\n          if (puVar30 == (uint *)0x0) {\n            puVar36 = (uint *)0x1;\n          }\n          *(uint **)puVar16[2] = puVar36;\n          puVar16[1] = 1;\n          puVar49 = puVar46 + -0x90;\n        }\n        else if (puVar9 < (uint *)0x23) {\n          puVar13 = (undefined1 *)((int)puVar30 + -2);\n          iVar6 = *(int *)(pcVar51 + 0x7aa7c);\n          puVar20 = (uint *)puVar16[2];\n          uVar18 = (int)puVar9 - (int)puVar30;\n          puVar36 = (uint *)(iVar6 + ((uint)puVar9 >> 1));\n          puVar30 = (uint *)(iVar6 + ((uint)puVar30 >> 1));\n          bVar2 = *(byte *)((int)puVar30 + -1);\n          puVar31 = (uint *)(uint)*(byte *)(iVar6 + (uVar18 >> 1) + -1);\n          *puVar20 = *(int *)((int)puVar13 * 4 + *(int *)(pcVar51 + 0x7a8c8) + 0x35b4) *\n                     *(int *)(*(int *)(pcVar51 + 0x7ad64) + (int)puVar9 * 4) *\n                     *(int *)((uVar18 - 2) * 4 + *(int *)(pcVar51 + 0x7a8c8) + 0x35b4) <<\n                     (((uint)*(byte *)((int)puVar36 + -1) - (int)(uint)bVar2) - (int)puVar31 & 0x1f)\n          ;\n          puVar16[1] = 1;\n          puVar22 = (uint *)(uint)bVar2;\n          puVar49 = puVar46 + -0x90;\n        }\n        else if (puVar30 < &DAT_00000011) {\n          FUN_000216e8();\n          pcVar44 = *(code **)(puVar47 + -0xf0);\n          puVar49 = puVar46 + -0x90;\n        }\n        else if (puVar30 < &DAT_00000021) {\n          uVar18 = (uint)puVar30 >> 1;\n          uVar37 = (int)puVar9 - uVar18;\n          FUN_000216e8();\n          iVar6 = *(int *)(puVar47 + -0xf0);\n          uVar7 = (int)puVar30 - uVar18;\n          if (uVar37 < 0x23) {\n            puVar50 = (undefined1 *)puVar16[1];\n            if ((int)puVar50 < (int)*puVar16) {\n              puVar8 = (uint *)puVar16[2];\n            }\n            else {\n              puVar8 = (uint *)(**(code **)(iVar6 + -0x7a80))(puVar16,puVar50 + 1);\n              iVar6 = *(int *)(puVar47 + -0xf0);\n            }\n            iVar29 = *(int *)(iVar6 + -0x7e20);\n            iVar24 = *(int *)(iVar6 + -0x7fd4) + 0x35b4;\n            uVar37 = (**(code **)(iVar6 + -0x7f9c))\n                               (puVar8,puVar8,puVar50,\n                                *(int *)((((int)puVar9 - (int)puVar30) - 2U) * 4 + iVar24) *\n                                *(int *)(*(int *)(iVar6 + -0x7b38) + uVar37 * 4) *\n                                *(int *)((uVar7 - 2) * 4 + iVar24) <<\n                                (((uint)*(byte *)(iVar29 + (uVar37 >> 1) + -1) -\n                                 (uint)*(byte *)(iVar29 + (uVar7 >> 1) + -1)) -\n                                 (uint)*(byte *)(iVar29 + ((uint)((int)puVar9 - (int)puVar30) >> 1)\n                                                + -1) & 0x1f));\n            iVar6 = *(int *)(puVar47 + -0xf0);\n            puVar30 = (uint *)(puVar50 + (uVar37 != 0));\n            puVar8[(int)puVar50] = uVar37;\n          }\n          else {\n            *(undefined4 *)(puVar47 + -0xe4) = 0x15;\n            *(undefined1 **)(puVar47 + -0xdc) = puVar47 + -0xd8;\n            FUN_000216e8(puVar47 + -0xe4,uVar37,uVar7);\n            (**(code **)(*(int *)(puVar47 + -0xf0) + -0x7ba8))(puVar16,puVar16,puVar47 + -0xe4);\n            iVar6 = *(int *)(puVar47 + -0xf0);\n            puVar8 = (uint *)puVar16[2];\n            puVar30 = (uint *)puVar16[1];\n          }\n          pcVar51 = *(code **)(iVar6 + -0x7bb4);\n          puVar38 = (uint *)((uint)*(byte *)((uVar7 - 8) + *(int *)(iVar6 + -0x7fd4) + 0x3550) -\n                            (uint)(uVar18 != uVar7));\n          *(undefined4 *)(puVar47 + -0xf8) =\n               *(undefined4 *)((uVar7 - 8) * 4 + *(int *)(iVar6 + -0x7fd4) + 0x355c);\n          *(uint **)(puVar47 + -0xf4) = puVar38;\n          puVar31 = puVar8;\n          puVar20 = puVar8;\n          puVar22 = puVar30;\n          (*pcVar51)();\n          pcVar44 = *(code **)(puVar47 + -0xf0);\n          if (puVar8[(int)((int)puVar30 + -1)] == 0) {\n            puVar9 = puVar8 + (int)puVar30;\n            do {\n              puVar1 = puVar9 + -2;\n              puVar30 = (uint *)((int)puVar30 + -1);\n              puVar9 = puVar9 + -1;\n            } while (*puVar1 == 0);\n          }\n          puVar16[1] = (uint)puVar30;\n          puVar49 = puVar50;\n        }\n        else if ((puVar30 < (uint *)0x3e8) || (puVar30 <= (uint *)((uint)puVar9 >> 4))) {\n          FUN_0002209c();\n          pcVar44 = *(code **)(puVar47 + -0xf0);\n          puVar49 = puVar46 + -0x90;\n        }\n        else {\n          FUN_000219dc();\n          pcVar44 = *(code **)(puVar47 + -0xf0);\n          puVar49 = puVar46 + -0x90;\n        }\n      }" { (expression_statement "puVar30 = puVar22;" (assignment_expression "puVar30 = puVar22" identifier = identifier) ;) (if_statement "if ((uint *)((int)puVar9 - (int)puVar22) <= puVar22) {\n          puVar30 = (uint *)((int)puVar9 - (int)puVar22);\n        }" if (parenthesized_expression "((uint *)((int)puVar9 - (int)puVar22) <= puVar22)" ( (binary_expression "(uint *)((int)puVar9 - (int)puVar22) <= puVar22" (cast_expression "(uint *)((int)puVar9 - (int)puVar22)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar9 - (int)puVar22)" ( (binary_expression "(int)puVar9 - (int)puVar22" (cast_expression "(int)puVar9" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)puVar22" ( (type_descriptor "int" primitive_type) ) identifier)) ))) <= identifier) )) (compound_statement "{\n          puVar30 = (uint *)((int)puVar9 - (int)puVar22);\n        }" { (expression_statement "puVar30 = (uint *)((int)puVar9 - (int)puVar22);" (assignment_expression "puVar30 = (uint *)((int)puVar9 - (int)puVar22)" identifier = (cast_expression "(uint *)((int)puVar9 - (int)puVar22)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar9 - (int)puVar22)" ( (binary_expression "(int)puVar9 - (int)puVar22" (cast_expression "(int)puVar9" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)puVar22" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) })) (expression_statement "puVar22 = puVar30;" (assignment_expression "puVar22 = puVar30" identifier = identifier) ;) (expression_statement "puVar36 = puVar9;" (assignment_expression "puVar36 = puVar9" identifier = identifier) ;) (if_statement "if (puVar30 < (uint *)0x2) {\n          if (puVar30 == (uint *)0x0) {\n            puVar36 = (uint *)0x1;\n          }\n          *(uint **)puVar16[2] = puVar36;\n          puVar16[1] = 1;\n          puVar49 = puVar46 + -0x90;\n        }\n        else if (puVar9 < (uint *)0x23) {\n          puVar13 = (undefined1 *)((int)puVar30 + -2);\n          iVar6 = *(int *)(pcVar51 + 0x7aa7c);\n          puVar20 = (uint *)puVar16[2];\n          uVar18 = (int)puVar9 - (int)puVar30;\n          puVar36 = (uint *)(iVar6 + ((uint)puVar9 >> 1));\n          puVar30 = (uint *)(iVar6 + ((uint)puVar30 >> 1));\n          bVar2 = *(byte *)((int)puVar30 + -1);\n          puVar31 = (uint *)(uint)*(byte *)(iVar6 + (uVar18 >> 1) + -1);\n          *puVar20 = *(int *)((int)puVar13 * 4 + *(int *)(pcVar51 + 0x7a8c8) + 0x35b4) *\n                     *(int *)(*(int *)(pcVar51 + 0x7ad64) + (int)puVar9 * 4) *\n                     *(int *)((uVar18 - 2) * 4 + *(int *)(pcVar51 + 0x7a8c8) + 0x35b4) <<\n                     (((uint)*(byte *)((int)puVar36 + -1) - (int)(uint)bVar2) - (int)puVar31 & 0x1f)\n          ;\n          puVar16[1] = 1;\n          puVar22 = (uint *)(uint)bVar2;\n          puVar49 = puVar46 + -0x90;\n        }\n        else if (puVar30 < &DAT_00000011) {\n          FUN_000216e8();\n          pcVar44 = *(code **)(puVar47 + -0xf0);\n          puVar49 = puVar46 + -0x90;\n        }\n        else if (puVar30 < &DAT_00000021) {\n          uVar18 = (uint)puVar30 >> 1;\n          uVar37 = (int)puVar9 - uVar18;\n          FUN_000216e8();\n          iVar6 = *(int *)(puVar47 + -0xf0);\n          uVar7 = (int)puVar30 - uVar18;\n          if (uVar37 < 0x23) {\n            puVar50 = (undefined1 *)puVar16[1];\n            if ((int)puVar50 < (int)*puVar16) {\n              puVar8 = (uint *)puVar16[2];\n            }\n            else {\n              puVar8 = (uint *)(**(code **)(iVar6 + -0x7a80))(puVar16,puVar50 + 1);\n              iVar6 = *(int *)(puVar47 + -0xf0);\n            }\n            iVar29 = *(int *)(iVar6 + -0x7e20);\n            iVar24 = *(int *)(iVar6 + -0x7fd4) + 0x35b4;\n            uVar37 = (**(code **)(iVar6 + -0x7f9c))\n                               (puVar8,puVar8,puVar50,\n                                *(int *)((((int)puVar9 - (int)puVar30) - 2U) * 4 + iVar24) *\n                                *(int *)(*(int *)(iVar6 + -0x7b38) + uVar37 * 4) *\n                                *(int *)((uVar7 - 2) * 4 + iVar24) <<\n                                (((uint)*(byte *)(iVar29 + (uVar37 >> 1) + -1) -\n                                 (uint)*(byte *)(iVar29 + (uVar7 >> 1) + -1)) -\n                                 (uint)*(byte *)(iVar29 + ((uint)((int)puVar9 - (int)puVar30) >> 1)\n                                                + -1) & 0x1f));\n            iVar6 = *(int *)(puVar47 + -0xf0);\n            puVar30 = (uint *)(puVar50 + (uVar37 != 0));\n            puVar8[(int)puVar50] = uVar37;\n          }\n          else {\n            *(undefined4 *)(puVar47 + -0xe4) = 0x15;\n            *(undefined1 **)(puVar47 + -0xdc) = puVar47 + -0xd8;\n            FUN_000216e8(puVar47 + -0xe4,uVar37,uVar7);\n            (**(code **)(*(int *)(puVar47 + -0xf0) + -0x7ba8))(puVar16,puVar16,puVar47 + -0xe4);\n            iVar6 = *(int *)(puVar47 + -0xf0);\n            puVar8 = (uint *)puVar16[2];\n            puVar30 = (uint *)puVar16[1];\n          }\n          pcVar51 = *(code **)(iVar6 + -0x7bb4);\n          puVar38 = (uint *)((uint)*(byte *)((uVar7 - 8) + *(int *)(iVar6 + -0x7fd4) + 0x3550) -\n                            (uint)(uVar18 != uVar7));\n          *(undefined4 *)(puVar47 + -0xf8) =\n               *(undefined4 *)((uVar7 - 8) * 4 + *(int *)(iVar6 + -0x7fd4) + 0x355c);\n          *(uint **)(puVar47 + -0xf4) = puVar38;\n          puVar31 = puVar8;\n          puVar20 = puVar8;\n          puVar22 = puVar30;\n          (*pcVar51)();\n          pcVar44 = *(code **)(puVar47 + -0xf0);\n          if (puVar8[(int)((int)puVar30 + -1)] == 0) {\n            puVar9 = puVar8 + (int)puVar30;\n            do {\n              puVar1 = puVar9 + -2;\n              puVar30 = (uint *)((int)puVar30 + -1);\n              puVar9 = puVar9 + -1;\n            } while (*puVar1 == 0);\n          }\n          puVar16[1] = (uint)puVar30;\n          puVar49 = puVar50;\n        }\n        else if ((puVar30 < (uint *)0x3e8) || (puVar30 <= (uint *)((uint)puVar9 >> 4))) {\n          FUN_0002209c();\n          pcVar44 = *(code **)(puVar47 + -0xf0);\n          puVar49 = puVar46 + -0x90;\n        }\n        else {\n          FUN_000219dc();\n          pcVar44 = *(code **)(puVar47 + -0xf0);\n          puVar49 = puVar46 + -0x90;\n        }" if (parenthesized_expression "(puVar30 < (uint *)0x2)" ( (binary_expression "puVar30 < (uint *)0x2" identifier < (cast_expression "(uint *)0x2" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          if (puVar30 == (uint *)0x0) {\n            puVar36 = (uint *)0x1;\n          }\n          *(uint **)puVar16[2] = puVar36;\n          puVar16[1] = 1;\n          puVar49 = puVar46 + -0x90;\n        }" { (if_statement "if (puVar30 == (uint *)0x0) {\n            puVar36 = (uint *)0x1;\n          }" if (parenthesized_expression "(puVar30 == (uint *)0x0)" ( (binary_expression "puVar30 == (uint *)0x0" identifier == (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n            puVar36 = (uint *)0x1;\n          }" { (expression_statement "puVar36 = (uint *)0x1;" (assignment_expression "puVar36 = (uint *)0x1" identifier = (cast_expression "(uint *)0x1" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) })) (expression_statement "*(uint **)puVar16[2] = puVar36;" (assignment_expression "*(uint **)puVar16[2] = puVar36" (pointer_expression "*(uint **)puVar16[2]" * (cast_expression "(uint **)puVar16[2]" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (subscript_expression "puVar16[2]" identifier [ number_literal ]))) = identifier) ;) (expression_statement "puVar16[1] = 1;" (assignment_expression "puVar16[1] = 1" (subscript_expression "puVar16[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar49 = puVar46 + -0x90;" (assignment_expression "puVar49 = puVar46 + -0x90" identifier = (binary_expression "puVar46 + -0x90" identifier + number_literal)) ;) }) (else_clause "else if (puVar9 < (uint *)0x23) {\n          puVar13 = (undefined1 *)((int)puVar30 + -2);\n          iVar6 = *(int *)(pcVar51 + 0x7aa7c);\n          puVar20 = (uint *)puVar16[2];\n          uVar18 = (int)puVar9 - (int)puVar30;\n          puVar36 = (uint *)(iVar6 + ((uint)puVar9 >> 1));\n          puVar30 = (uint *)(iVar6 + ((uint)puVar30 >> 1));\n          bVar2 = *(byte *)((int)puVar30 + -1);\n          puVar31 = (uint *)(uint)*(byte *)(iVar6 + (uVar18 >> 1) + -1);\n          *puVar20 = *(int *)((int)puVar13 * 4 + *(int *)(pcVar51 + 0x7a8c8) + 0x35b4) *\n                     *(int *)(*(int *)(pcVar51 + 0x7ad64) + (int)puVar9 * 4) *\n                     *(int *)((uVar18 - 2) * 4 + *(int *)(pcVar51 + 0x7a8c8) + 0x35b4) <<\n                     (((uint)*(byte *)((int)puVar36 + -1) - (int)(uint)bVar2) - (int)puVar31 & 0x1f)\n          ;\n          puVar16[1] = 1;\n          puVar22 = (uint *)(uint)bVar2;\n          puVar49 = puVar46 + -0x90;\n        }\n        else if (puVar30 < &DAT_00000011) {\n          FUN_000216e8();\n          pcVar44 = *(code **)(puVar47 + -0xf0);\n          puVar49 = puVar46 + -0x90;\n        }\n        else if (puVar30 < &DAT_00000021) {\n          uVar18 = (uint)puVar30 >> 1;\n          uVar37 = (int)puVar9 - uVar18;\n          FUN_000216e8();\n          iVar6 = *(int *)(puVar47 + -0xf0);\n          uVar7 = (int)puVar30 - uVar18;\n          if (uVar37 < 0x23) {\n            puVar50 = (undefined1 *)puVar16[1];\n            if ((int)puVar50 < (int)*puVar16) {\n              puVar8 = (uint *)puVar16[2];\n            }\n            else {\n              puVar8 = (uint *)(**(code **)(iVar6 + -0x7a80))(puVar16,puVar50 + 1);\n              iVar6 = *(int *)(puVar47 + -0xf0);\n            }\n            iVar29 = *(int *)(iVar6 + -0x7e20);\n            iVar24 = *(int *)(iVar6 + -0x7fd4) + 0x35b4;\n            uVar37 = (**(code **)(iVar6 + -0x7f9c))\n                               (puVar8,puVar8,puVar50,\n                                *(int *)((((int)puVar9 - (int)puVar30) - 2U) * 4 + iVar24) *\n                                *(int *)(*(int *)(iVar6 + -0x7b38) + uVar37 * 4) *\n                                *(int *)((uVar7 - 2) * 4 + iVar24) <<\n                                (((uint)*(byte *)(iVar29 + (uVar37 >> 1) + -1) -\n                                 (uint)*(byte *)(iVar29 + (uVar7 >> 1) + -1)) -\n                                 (uint)*(byte *)(iVar29 + ((uint)((int)puVar9 - (int)puVar30) >> 1)\n                                                + -1) & 0x1f));\n            iVar6 = *(int *)(puVar47 + -0xf0);\n            puVar30 = (uint *)(puVar50 + (uVar37 != 0));\n            puVar8[(int)puVar50] = uVar37;\n          }\n          else {\n            *(undefined4 *)(puVar47 + -0xe4) = 0x15;\n            *(undefined1 **)(puVar47 + -0xdc) = puVar47 + -0xd8;\n            FUN_000216e8(puVar47 + -0xe4,uVar37,uVar7);\n            (**(code **)(*(int *)(puVar47 + -0xf0) + -0x7ba8))(puVar16,puVar16,puVar47 + -0xe4);\n            iVar6 = *(int *)(puVar47 + -0xf0);\n            puVar8 = (uint *)puVar16[2];\n            puVar30 = (uint *)puVar16[1];\n          }\n          pcVar51 = *(code **)(iVar6 + -0x7bb4);\n          puVar38 = (uint *)((uint)*(byte *)((uVar7 - 8) + *(int *)(iVar6 + -0x7fd4) + 0x3550) -\n                            (uint)(uVar18 != uVar7));\n          *(undefined4 *)(puVar47 + -0xf8) =\n               *(undefined4 *)((uVar7 - 8) * 4 + *(int *)(iVar6 + -0x7fd4) + 0x355c);\n          *(uint **)(puVar47 + -0xf4) = puVar38;\n          puVar31 = puVar8;\n          puVar20 = puVar8;\n          puVar22 = puVar30;\n          (*pcVar51)();\n          pcVar44 = *(code **)(puVar47 + -0xf0);\n          if (puVar8[(int)((int)puVar30 + -1)] == 0) {\n            puVar9 = puVar8 + (int)puVar30;\n            do {\n              puVar1 = puVar9 + -2;\n              puVar30 = (uint *)((int)puVar30 + -1);\n              puVar9 = puVar9 + -1;\n            } while (*puVar1 == 0);\n          }\n          puVar16[1] = (uint)puVar30;\n          puVar49 = puVar50;\n        }\n        else if ((puVar30 < (uint *)0x3e8) || (puVar30 <= (uint *)((uint)puVar9 >> 4))) {\n          FUN_0002209c();\n          pcVar44 = *(code **)(puVar47 + -0xf0);\n          puVar49 = puVar46 + -0x90;\n        }\n        else {\n          FUN_000219dc();\n          pcVar44 = *(code **)(puVar47 + -0xf0);\n          puVar49 = puVar46 + -0x90;\n        }" else (if_statement "if (puVar9 < (uint *)0x23) {\n          puVar13 = (undefined1 *)((int)puVar30 + -2);\n          iVar6 = *(int *)(pcVar51 + 0x7aa7c);\n          puVar20 = (uint *)puVar16[2];\n          uVar18 = (int)puVar9 - (int)puVar30;\n          puVar36 = (uint *)(iVar6 + ((uint)puVar9 >> 1));\n          puVar30 = (uint *)(iVar6 + ((uint)puVar30 >> 1));\n          bVar2 = *(byte *)((int)puVar30 + -1);\n          puVar31 = (uint *)(uint)*(byte *)(iVar6 + (uVar18 >> 1) + -1);\n          *puVar20 = *(int *)((int)puVar13 * 4 + *(int *)(pcVar51 + 0x7a8c8) + 0x35b4) *\n                     *(int *)(*(int *)(pcVar51 + 0x7ad64) + (int)puVar9 * 4) *\n                     *(int *)((uVar18 - 2) * 4 + *(int *)(pcVar51 + 0x7a8c8) + 0x35b4) <<\n                     (((uint)*(byte *)((int)puVar36 + -1) - (int)(uint)bVar2) - (int)puVar31 & 0x1f)\n          ;\n          puVar16[1] = 1;\n          puVar22 = (uint *)(uint)bVar2;\n          puVar49 = puVar46 + -0x90;\n        }\n        else if (puVar30 < &DAT_00000011) {\n          FUN_000216e8();\n          pcVar44 = *(code **)(puVar47 + -0xf0);\n          puVar49 = puVar46 + -0x90;\n        }\n        else if (puVar30 < &DAT_00000021) {\n          uVar18 = (uint)puVar30 >> 1;\n          uVar37 = (int)puVar9 - uVar18;\n          FUN_000216e8();\n          iVar6 = *(int *)(puVar47 + -0xf0);\n          uVar7 = (int)puVar30 - uVar18;\n          if (uVar37 < 0x23) {\n            puVar50 = (undefined1 *)puVar16[1];\n            if ((int)puVar50 < (int)*puVar16) {\n              puVar8 = (uint *)puVar16[2];\n            }\n            else {\n              puVar8 = (uint *)(**(code **)(iVar6 + -0x7a80))(puVar16,puVar50 + 1);\n              iVar6 = *(int *)(puVar47 + -0xf0);\n            }\n            iVar29 = *(int *)(iVar6 + -0x7e20);\n            iVar24 = *(int *)(iVar6 + -0x7fd4) + 0x35b4;\n            uVar37 = (**(code **)(iVar6 + -0x7f9c))\n                               (puVar8,puVar8,puVar50,\n                                *(int *)((((int)puVar9 - (int)puVar30) - 2U) * 4 + iVar24) *\n                                *(int *)(*(int *)(iVar6 + -0x7b38) + uVar37 * 4) *\n                                *(int *)((uVar7 - 2) * 4 + iVar24) <<\n                                (((uint)*(byte *)(iVar29 + (uVar37 >> 1) + -1) -\n                                 (uint)*(byte *)(iVar29 + (uVar7 >> 1) + -1)) -\n                                 (uint)*(byte *)(iVar29 + ((uint)((int)puVar9 - (int)puVar30) >> 1)\n                                                + -1) & 0x1f));\n            iVar6 = *(int *)(puVar47 + -0xf0);\n            puVar30 = (uint *)(puVar50 + (uVar37 != 0));\n            puVar8[(int)puVar50] = uVar37;\n          }\n          else {\n            *(undefined4 *)(puVar47 + -0xe4) = 0x15;\n            *(undefined1 **)(puVar47 + -0xdc) = puVar47 + -0xd8;\n            FUN_000216e8(puVar47 + -0xe4,uVar37,uVar7);\n            (**(code **)(*(int *)(puVar47 + -0xf0) + -0x7ba8))(puVar16,puVar16,puVar47 + -0xe4);\n            iVar6 = *(int *)(puVar47 + -0xf0);\n            puVar8 = (uint *)puVar16[2];\n            puVar30 = (uint *)puVar16[1];\n          }\n          pcVar51 = *(code **)(iVar6 + -0x7bb4);\n          puVar38 = (uint *)((uint)*(byte *)((uVar7 - 8) + *(int *)(iVar6 + -0x7fd4) + 0x3550) -\n                            (uint)(uVar18 != uVar7));\n          *(undefined4 *)(puVar47 + -0xf8) =\n               *(undefined4 *)((uVar7 - 8) * 4 + *(int *)(iVar6 + -0x7fd4) + 0x355c);\n          *(uint **)(puVar47 + -0xf4) = puVar38;\n          puVar31 = puVar8;\n          puVar20 = puVar8;\n          puVar22 = puVar30;\n          (*pcVar51)();\n          pcVar44 = *(code **)(puVar47 + -0xf0);\n          if (puVar8[(int)((int)puVar30 + -1)] == 0) {\n            puVar9 = puVar8 + (int)puVar30;\n            do {\n              puVar1 = puVar9 + -2;\n              puVar30 = (uint *)((int)puVar30 + -1);\n              puVar9 = puVar9 + -1;\n            } while (*puVar1 == 0);\n          }\n          puVar16[1] = (uint)puVar30;\n          puVar49 = puVar50;\n        }\n        else if ((puVar30 < (uint *)0x3e8) || (puVar30 <= (uint *)((uint)puVar9 >> 4))) {\n          FUN_0002209c();\n          pcVar44 = *(code **)(puVar47 + -0xf0);\n          puVar49 = puVar46 + -0x90;\n        }\n        else {\n          FUN_000219dc();\n          pcVar44 = *(code **)(puVar47 + -0xf0);\n          puVar49 = puVar46 + -0x90;\n        }" if (parenthesized_expression "(puVar9 < (uint *)0x23)" ( (binary_expression "puVar9 < (uint *)0x23" identifier < (cast_expression "(uint *)0x23" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          puVar13 = (undefined1 *)((int)puVar30 + -2);\n          iVar6 = *(int *)(pcVar51 + 0x7aa7c);\n          puVar20 = (uint *)puVar16[2];\n          uVar18 = (int)puVar9 - (int)puVar30;\n          puVar36 = (uint *)(iVar6 + ((uint)puVar9 >> 1));\n          puVar30 = (uint *)(iVar6 + ((uint)puVar30 >> 1));\n          bVar2 = *(byte *)((int)puVar30 + -1);\n          puVar31 = (uint *)(uint)*(byte *)(iVar6 + (uVar18 >> 1) + -1);\n          *puVar20 = *(int *)((int)puVar13 * 4 + *(int *)(pcVar51 + 0x7a8c8) + 0x35b4) *\n                     *(int *)(*(int *)(pcVar51 + 0x7ad64) + (int)puVar9 * 4) *\n                     *(int *)((uVar18 - 2) * 4 + *(int *)(pcVar51 + 0x7a8c8) + 0x35b4) <<\n                     (((uint)*(byte *)((int)puVar36 + -1) - (int)(uint)bVar2) - (int)puVar31 & 0x1f)\n          ;\n          puVar16[1] = 1;\n          puVar22 = (uint *)(uint)bVar2;\n          puVar49 = puVar46 + -0x90;\n        }" { (expression_statement "puVar13 = (undefined1 *)((int)puVar30 + -2);" (assignment_expression "puVar13 = (undefined1 *)((int)puVar30 + -2)" identifier = (cast_expression "(undefined1 *)((int)puVar30 + -2)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar30 + -2)" ( (binary_expression "(int)puVar30 + -2" (cast_expression "(int)puVar30" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "iVar6 = *(int *)(pcVar51 + 0x7aa7c);" (assignment_expression "iVar6 = *(int *)(pcVar51 + 0x7aa7c)" identifier = (pointer_expression "*(int *)(pcVar51 + 0x7aa7c)" * (cast_expression "(int *)(pcVar51 + 0x7aa7c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar51 + 0x7aa7c)" ( (binary_expression "pcVar51 + 0x7aa7c" identifier + number_literal) ))))) ;) (expression_statement "puVar20 = (uint *)puVar16[2];" (assignment_expression "puVar20 = (uint *)puVar16[2]" identifier = (cast_expression "(uint *)puVar16[2]" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar16[2]" identifier [ number_literal ]))) ;) (expression_statement "uVar18 = (int)puVar9 - (int)puVar30;" (assignment_expression "uVar18 = (int)puVar9 - (int)puVar30" identifier = (binary_expression "(int)puVar9 - (int)puVar30" (cast_expression "(int)puVar9" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)puVar30" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "puVar36 = (uint *)(iVar6 + ((uint)puVar9 >> 1));" (assignment_expression "puVar36 = (uint *)(iVar6 + ((uint)puVar9 >> 1))" identifier = (cast_expression "(uint *)(iVar6 + ((uint)puVar9 >> 1))" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + ((uint)puVar9 >> 1))" ( (binary_expression "iVar6 + ((uint)puVar9 >> 1)" identifier + (parenthesized_expression "((uint)puVar9 >> 1)" ( (binary_expression "(uint)puVar9 >> 1" (cast_expression "(uint)puVar9" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) ))) )))) ;) (expression_statement "puVar30 = (uint *)(iVar6 + ((uint)puVar30 >> 1));" (assignment_expression "puVar30 = (uint *)(iVar6 + ((uint)puVar30 >> 1))" identifier = (cast_expression "(uint *)(iVar6 + ((uint)puVar30 >> 1))" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + ((uint)puVar30 >> 1))" ( (binary_expression "iVar6 + ((uint)puVar30 >> 1)" identifier + (parenthesized_expression "((uint)puVar30 >> 1)" ( (binary_expression "(uint)puVar30 >> 1" (cast_expression "(uint)puVar30" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) ))) )))) ;) (expression_statement "bVar2 = *(byte *)((int)puVar30 + -1);" (assignment_expression "bVar2 = *(byte *)((int)puVar30 + -1)" identifier = (pointer_expression "*(byte *)((int)puVar30 + -1)" * (cast_expression "(byte *)((int)puVar30 + -1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar30 + -1)" ( (binary_expression "(int)puVar30 + -1" (cast_expression "(int)puVar30" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (expression_statement "puVar31 = (uint *)(uint)*(byte *)(iVar6 + (uVar18 >> 1) + -1);" (assignment_expression "puVar31 = (uint *)(uint)*(byte *)(iVar6 + (uVar18 >> 1) + -1)" identifier = (binary_expression "(uint *)(uint)*(byte *)(iVar6 + (uVar18 >> 1) + -1)" (cast_expression "(uint *)(uint)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uint)" ( identifier ))) * (cast_expression "(byte *)(iVar6 + (uVar18 >> 1) + -1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + (uVar18 >> 1) + -1)" ( (binary_expression "iVar6 + (uVar18 >> 1) + -1" (binary_expression "iVar6 + (uVar18 >> 1)" identifier + (parenthesized_expression "(uVar18 >> 1)" ( (binary_expression "uVar18 >> 1" identifier >> number_literal) ))) + number_literal) ))))) ;) (expression_statement "*puVar20 = *(int *)((int)puVar13 * 4 + *(int *)(pcVar51 + 0x7a8c8) + 0x35b4) *\n                     *(int *)(*(int *)(pcVar51 + 0x7ad64) + (int)puVar9 * 4) *\n                     *(int *)((uVar18 - 2) * 4 + *(int *)(pcVar51 + 0x7a8c8) + 0x35b4) <<\n                     (((uint)*(byte *)((int)puVar36 + -1) - (int)(uint)bVar2) - (int)puVar31 & 0x1f)\n          ;" (assignment_expression "*puVar20 = *(int *)((int)puVar13 * 4 + *(int *)(pcVar51 + 0x7a8c8) + 0x35b4) *\n                     *(int *)(*(int *)(pcVar51 + 0x7ad64) + (int)puVar9 * 4) *\n                     *(int *)((uVar18 - 2) * 4 + *(int *)(pcVar51 + 0x7a8c8) + 0x35b4) <<\n                     (((uint)*(byte *)((int)puVar36 + -1) - (int)(uint)bVar2) - (int)puVar31 & 0x1f)" (pointer_expression "*puVar20" * identifier) = (binary_expression "*(int *)((int)puVar13 * 4 + *(int *)(pcVar51 + 0x7a8c8) + 0x35b4) *\n                     *(int *)(*(int *)(pcVar51 + 0x7ad64) + (int)puVar9 * 4) *\n                     *(int *)((uVar18 - 2) * 4 + *(int *)(pcVar51 + 0x7a8c8) + 0x35b4) <<\n                     (((uint)*(byte *)((int)puVar36 + -1) - (int)(uint)bVar2) - (int)puVar31 & 0x1f)" (binary_expression "*(int *)((int)puVar13 * 4 + *(int *)(pcVar51 + 0x7a8c8) + 0x35b4) *\n                     *(int *)(*(int *)(pcVar51 + 0x7ad64) + (int)puVar9 * 4) *\n                     *(int *)((uVar18 - 2) * 4 + *(int *)(pcVar51 + 0x7a8c8) + 0x35b4)" (binary_expression "*(int *)((int)puVar13 * 4 + *(int *)(pcVar51 + 0x7a8c8) + 0x35b4) *\n                     *(int *)(*(int *)(pcVar51 + 0x7ad64) + (int)puVar9 * 4)" (pointer_expression "*(int *)((int)puVar13 * 4 + *(int *)(pcVar51 + 0x7a8c8) + 0x35b4)" * (cast_expression "(int *)((int)puVar13 * 4 + *(int *)(pcVar51 + 0x7a8c8) + 0x35b4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar13 * 4 + *(int *)(pcVar51 + 0x7a8c8) + 0x35b4)" ( (binary_expression "(int)puVar13 * 4 + *(int *)(pcVar51 + 0x7a8c8) + 0x35b4" (binary_expression "(int)puVar13 * 4 + *(int *)(pcVar51 + 0x7a8c8)" (binary_expression "(int)puVar13 * 4" (cast_expression "(int)puVar13" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal) + (pointer_expression "*(int *)(pcVar51 + 0x7a8c8)" * (cast_expression "(int *)(pcVar51 + 0x7a8c8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar51 + 0x7a8c8)" ( (binary_expression "pcVar51 + 0x7a8c8" identifier + number_literal) ))))) + number_literal) )))) * (pointer_expression "*(int *)(*(int *)(pcVar51 + 0x7ad64) + (int)puVar9 * 4)" * (cast_expression "(int *)(*(int *)(pcVar51 + 0x7ad64) + (int)puVar9 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(pcVar51 + 0x7ad64) + (int)puVar9 * 4)" ( (binary_expression "*(int *)(pcVar51 + 0x7ad64) + (int)puVar9 * 4" (pointer_expression "*(int *)(pcVar51 + 0x7ad64)" * (cast_expression "(int *)(pcVar51 + 0x7ad64)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar51 + 0x7ad64)" ( (binary_expression "pcVar51 + 0x7ad64" identifier + number_literal) )))) + (binary_expression "(int)puVar9 * 4" (cast_expression "(int)puVar9" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal)) ))))) * (pointer_expression "*(int *)((uVar18 - 2) * 4 + *(int *)(pcVar51 + 0x7a8c8) + 0x35b4)" * (cast_expression "(int *)((uVar18 - 2) * 4 + *(int *)(pcVar51 + 0x7a8c8) + 0x35b4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((uVar18 - 2) * 4 + *(int *)(pcVar51 + 0x7a8c8) + 0x35b4)" ( (binary_expression "(uVar18 - 2) * 4 + *(int *)(pcVar51 + 0x7a8c8) + 0x35b4" (binary_expression "(uVar18 - 2) * 4 + *(int *)(pcVar51 + 0x7a8c8)" (binary_expression "(uVar18 - 2) * 4" (parenthesized_expression "(uVar18 - 2)" ( (binary_expression "uVar18 - 2" identifier - number_literal) )) * number_literal) + (pointer_expression "*(int *)(pcVar51 + 0x7a8c8)" * (cast_expression "(int *)(pcVar51 + 0x7a8c8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar51 + 0x7a8c8)" ( (binary_expression "pcVar51 + 0x7a8c8" identifier + number_literal) ))))) + number_literal) ))))) << (parenthesized_expression "(((uint)*(byte *)((int)puVar36 + -1) - (int)(uint)bVar2) - (int)puVar31 & 0x1f)" ( (binary_expression "((uint)*(byte *)((int)puVar36 + -1) - (int)(uint)bVar2) - (int)puVar31 & 0x1f" (binary_expression "((uint)*(byte *)((int)puVar36 + -1) - (int)(uint)bVar2) - (int)puVar31" (parenthesized_expression "((uint)*(byte *)((int)puVar36 + -1) - (int)(uint)bVar2)" ( (binary_expression "(uint)*(byte *)((int)puVar36 + -1) - (int)(uint)bVar2" (binary_expression "(uint)*(byte *)((int)puVar36 + -1)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)((int)puVar36 + -1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar36 + -1)" ( (binary_expression "(int)puVar36 + -1" (cast_expression "(int)puVar36" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) - (cast_expression "(int)(uint)bVar2" ( (type_descriptor "int" primitive_type) ) (cast_expression "(uint)bVar2" ( (type_descriptor "uint" type_identifier) ) identifier))) )) - (cast_expression "(int)puVar31" ( (type_descriptor "int" primitive_type) ) identifier)) & number_literal) )))) ;) (expression_statement "puVar16[1] = 1;" (assignment_expression "puVar16[1] = 1" (subscript_expression "puVar16[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar22 = (uint *)(uint)bVar2;" (assignment_expression "puVar22 = (uint *)(uint)bVar2" identifier = (cast_expression "(uint *)(uint)bVar2" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (cast_expression "(uint)bVar2" ( (type_descriptor "uint" type_identifier) ) identifier))) ;) (expression_statement "puVar49 = puVar46 + -0x90;" (assignment_expression "puVar49 = puVar46 + -0x90" identifier = (binary_expression "puVar46 + -0x90" identifier + number_literal)) ;) }) (else_clause "else if (puVar30 < &DAT_00000011) {\n          FUN_000216e8();\n          pcVar44 = *(code **)(puVar47 + -0xf0);\n          puVar49 = puVar46 + -0x90;\n        }\n        else if (puVar30 < &DAT_00000021) {\n          uVar18 = (uint)puVar30 >> 1;\n          uVar37 = (int)puVar9 - uVar18;\n          FUN_000216e8();\n          iVar6 = *(int *)(puVar47 + -0xf0);\n          uVar7 = (int)puVar30 - uVar18;\n          if (uVar37 < 0x23) {\n            puVar50 = (undefined1 *)puVar16[1];\n            if ((int)puVar50 < (int)*puVar16) {\n              puVar8 = (uint *)puVar16[2];\n            }\n            else {\n              puVar8 = (uint *)(**(code **)(iVar6 + -0x7a80))(puVar16,puVar50 + 1);\n              iVar6 = *(int *)(puVar47 + -0xf0);\n            }\n            iVar29 = *(int *)(iVar6 + -0x7e20);\n            iVar24 = *(int *)(iVar6 + -0x7fd4) + 0x35b4;\n            uVar37 = (**(code **)(iVar6 + -0x7f9c))\n                               (puVar8,puVar8,puVar50,\n                                *(int *)((((int)puVar9 - (int)puVar30) - 2U) * 4 + iVar24) *\n                                *(int *)(*(int *)(iVar6 + -0x7b38) + uVar37 * 4) *\n                                *(int *)((uVar7 - 2) * 4 + iVar24) <<\n                                (((uint)*(byte *)(iVar29 + (uVar37 >> 1) + -1) -\n                                 (uint)*(byte *)(iVar29 + (uVar7 >> 1) + -1)) -\n                                 (uint)*(byte *)(iVar29 + ((uint)((int)puVar9 - (int)puVar30) >> 1)\n                                                + -1) & 0x1f));\n            iVar6 = *(int *)(puVar47 + -0xf0);\n            puVar30 = (uint *)(puVar50 + (uVar37 != 0));\n            puVar8[(int)puVar50] = uVar37;\n          }\n          else {\n            *(undefined4 *)(puVar47 + -0xe4) = 0x15;\n            *(undefined1 **)(puVar47 + -0xdc) = puVar47 + -0xd8;\n            FUN_000216e8(puVar47 + -0xe4,uVar37,uVar7);\n            (**(code **)(*(int *)(puVar47 + -0xf0) + -0x7ba8))(puVar16,puVar16,puVar47 + -0xe4);\n            iVar6 = *(int *)(puVar47 + -0xf0);\n            puVar8 = (uint *)puVar16[2];\n            puVar30 = (uint *)puVar16[1];\n          }\n          pcVar51 = *(code **)(iVar6 + -0x7bb4);\n          puVar38 = (uint *)((uint)*(byte *)((uVar7 - 8) + *(int *)(iVar6 + -0x7fd4) + 0x3550) -\n                            (uint)(uVar18 != uVar7));\n          *(undefined4 *)(puVar47 + -0xf8) =\n               *(undefined4 *)((uVar7 - 8) * 4 + *(int *)(iVar6 + -0x7fd4) + 0x355c);\n          *(uint **)(puVar47 + -0xf4) = puVar38;\n          puVar31 = puVar8;\n          puVar20 = puVar8;\n          puVar22 = puVar30;\n          (*pcVar51)();\n          pcVar44 = *(code **)(puVar47 + -0xf0);\n          if (puVar8[(int)((int)puVar30 + -1)] == 0) {\n            puVar9 = puVar8 + (int)puVar30;\n            do {\n              puVar1 = puVar9 + -2;\n              puVar30 = (uint *)((int)puVar30 + -1);\n              puVar9 = puVar9 + -1;\n            } while (*puVar1 == 0);\n          }\n          puVar16[1] = (uint)puVar30;\n          puVar49 = puVar50;\n        }\n        else if ((puVar30 < (uint *)0x3e8) || (puVar30 <= (uint *)((uint)puVar9 >> 4))) {\n          FUN_0002209c();\n          pcVar44 = *(code **)(puVar47 + -0xf0);\n          puVar49 = puVar46 + -0x90;\n        }\n        else {\n          FUN_000219dc();\n          pcVar44 = *(code **)(puVar47 + -0xf0);\n          puVar49 = puVar46 + -0x90;\n        }" else (if_statement "if (puVar30 < &DAT_00000011) {\n          FUN_000216e8();\n          pcVar44 = *(code **)(puVar47 + -0xf0);\n          puVar49 = puVar46 + -0x90;\n        }\n        else if (puVar30 < &DAT_00000021) {\n          uVar18 = (uint)puVar30 >> 1;\n          uVar37 = (int)puVar9 - uVar18;\n          FUN_000216e8();\n          iVar6 = *(int *)(puVar47 + -0xf0);\n          uVar7 = (int)puVar30 - uVar18;\n          if (uVar37 < 0x23) {\n            puVar50 = (undefined1 *)puVar16[1];\n            if ((int)puVar50 < (int)*puVar16) {\n              puVar8 = (uint *)puVar16[2];\n            }\n            else {\n              puVar8 = (uint *)(**(code **)(iVar6 + -0x7a80))(puVar16,puVar50 + 1);\n              iVar6 = *(int *)(puVar47 + -0xf0);\n            }\n            iVar29 = *(int *)(iVar6 + -0x7e20);\n            iVar24 = *(int *)(iVar6 + -0x7fd4) + 0x35b4;\n            uVar37 = (**(code **)(iVar6 + -0x7f9c))\n                               (puVar8,puVar8,puVar50,\n                                *(int *)((((int)puVar9 - (int)puVar30) - 2U) * 4 + iVar24) *\n                                *(int *)(*(int *)(iVar6 + -0x7b38) + uVar37 * 4) *\n                                *(int *)((uVar7 - 2) * 4 + iVar24) <<\n                                (((uint)*(byte *)(iVar29 + (uVar37 >> 1) + -1) -\n                                 (uint)*(byte *)(iVar29 + (uVar7 >> 1) + -1)) -\n                                 (uint)*(byte *)(iVar29 + ((uint)((int)puVar9 - (int)puVar30) >> 1)\n                                                + -1) & 0x1f));\n            iVar6 = *(int *)(puVar47 + -0xf0);\n            puVar30 = (uint *)(puVar50 + (uVar37 != 0));\n            puVar8[(int)puVar50] = uVar37;\n          }\n          else {\n            *(undefined4 *)(puVar47 + -0xe4) = 0x15;\n            *(undefined1 **)(puVar47 + -0xdc) = puVar47 + -0xd8;\n            FUN_000216e8(puVar47 + -0xe4,uVar37,uVar7);\n            (**(code **)(*(int *)(puVar47 + -0xf0) + -0x7ba8))(puVar16,puVar16,puVar47 + -0xe4);\n            iVar6 = *(int *)(puVar47 + -0xf0);\n            puVar8 = (uint *)puVar16[2];\n            puVar30 = (uint *)puVar16[1];\n          }\n          pcVar51 = *(code **)(iVar6 + -0x7bb4);\n          puVar38 = (uint *)((uint)*(byte *)((uVar7 - 8) + *(int *)(iVar6 + -0x7fd4) + 0x3550) -\n                            (uint)(uVar18 != uVar7));\n          *(undefined4 *)(puVar47 + -0xf8) =\n               *(undefined4 *)((uVar7 - 8) * 4 + *(int *)(iVar6 + -0x7fd4) + 0x355c);\n          *(uint **)(puVar47 + -0xf4) = puVar38;\n          puVar31 = puVar8;\n          puVar20 = puVar8;\n          puVar22 = puVar30;\n          (*pcVar51)();\n          pcVar44 = *(code **)(puVar47 + -0xf0);\n          if (puVar8[(int)((int)puVar30 + -1)] == 0) {\n            puVar9 = puVar8 + (int)puVar30;\n            do {\n              puVar1 = puVar9 + -2;\n              puVar30 = (uint *)((int)puVar30 + -1);\n              puVar9 = puVar9 + -1;\n            } while (*puVar1 == 0);\n          }\n          puVar16[1] = (uint)puVar30;\n          puVar49 = puVar50;\n        }\n        else if ((puVar30 < (uint *)0x3e8) || (puVar30 <= (uint *)((uint)puVar9 >> 4))) {\n          FUN_0002209c();\n          pcVar44 = *(code **)(puVar47 + -0xf0);\n          puVar49 = puVar46 + -0x90;\n        }\n        else {\n          FUN_000219dc();\n          pcVar44 = *(code **)(puVar47 + -0xf0);\n          puVar49 = puVar46 + -0x90;\n        }" if (parenthesized_expression "(puVar30 < &DAT_00000011)" ( (binary_expression "puVar30 < &DAT_00000011" identifier < (pointer_expression "&DAT_00000011" & identifier)) )) (compound_statement "{\n          FUN_000216e8();\n          pcVar44 = *(code **)(puVar47 + -0xf0);\n          puVar49 = puVar46 + -0x90;\n        }" { (expression_statement "FUN_000216e8();" (call_expression "FUN_000216e8()" identifier (argument_list "()" ( ))) ;) (expression_statement "pcVar44 = *(code **)(puVar47 + -0xf0);" (assignment_expression "pcVar44 = *(code **)(puVar47 + -0xf0)" identifier = (pointer_expression "*(code **)(puVar47 + -0xf0)" * (cast_expression "(code **)(puVar47 + -0xf0)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar47 + -0xf0)" ( (binary_expression "puVar47 + -0xf0" identifier + number_literal) ))))) ;) (expression_statement "puVar49 = puVar46 + -0x90;" (assignment_expression "puVar49 = puVar46 + -0x90" identifier = (binary_expression "puVar46 + -0x90" identifier + number_literal)) ;) }) (else_clause "else if (puVar30 < &DAT_00000021) {\n          uVar18 = (uint)puVar30 >> 1;\n          uVar37 = (int)puVar9 - uVar18;\n          FUN_000216e8();\n          iVar6 = *(int *)(puVar47 + -0xf0);\n          uVar7 = (int)puVar30 - uVar18;\n          if (uVar37 < 0x23) {\n            puVar50 = (undefined1 *)puVar16[1];\n            if ((int)puVar50 < (int)*puVar16) {\n              puVar8 = (uint *)puVar16[2];\n            }\n            else {\n              puVar8 = (uint *)(**(code **)(iVar6 + -0x7a80))(puVar16,puVar50 + 1);\n              iVar6 = *(int *)(puVar47 + -0xf0);\n            }\n            iVar29 = *(int *)(iVar6 + -0x7e20);\n            iVar24 = *(int *)(iVar6 + -0x7fd4) + 0x35b4;\n            uVar37 = (**(code **)(iVar6 + -0x7f9c))\n                               (puVar8,puVar8,puVar50,\n                                *(int *)((((int)puVar9 - (int)puVar30) - 2U) * 4 + iVar24) *\n                                *(int *)(*(int *)(iVar6 + -0x7b38) + uVar37 * 4) *\n                                *(int *)((uVar7 - 2) * 4 + iVar24) <<\n                                (((uint)*(byte *)(iVar29 + (uVar37 >> 1) + -1) -\n                                 (uint)*(byte *)(iVar29 + (uVar7 >> 1) + -1)) -\n                                 (uint)*(byte *)(iVar29 + ((uint)((int)puVar9 - (int)puVar30) >> 1)\n                                                + -1) & 0x1f));\n            iVar6 = *(int *)(puVar47 + -0xf0);\n            puVar30 = (uint *)(puVar50 + (uVar37 != 0));\n            puVar8[(int)puVar50] = uVar37;\n          }\n          else {\n            *(undefined4 *)(puVar47 + -0xe4) = 0x15;\n            *(undefined1 **)(puVar47 + -0xdc) = puVar47 + -0xd8;\n            FUN_000216e8(puVar47 + -0xe4,uVar37,uVar7);\n            (**(code **)(*(int *)(puVar47 + -0xf0) + -0x7ba8))(puVar16,puVar16,puVar47 + -0xe4);\n            iVar6 = *(int *)(puVar47 + -0xf0);\n            puVar8 = (uint *)puVar16[2];\n            puVar30 = (uint *)puVar16[1];\n          }\n          pcVar51 = *(code **)(iVar6 + -0x7bb4);\n          puVar38 = (uint *)((uint)*(byte *)((uVar7 - 8) + *(int *)(iVar6 + -0x7fd4) + 0x3550) -\n                            (uint)(uVar18 != uVar7));\n          *(undefined4 *)(puVar47 + -0xf8) =\n               *(undefined4 *)((uVar7 - 8) * 4 + *(int *)(iVar6 + -0x7fd4) + 0x355c);\n          *(uint **)(puVar47 + -0xf4) = puVar38;\n          puVar31 = puVar8;\n          puVar20 = puVar8;\n          puVar22 = puVar30;\n          (*pcVar51)();\n          pcVar44 = *(code **)(puVar47 + -0xf0);\n          if (puVar8[(int)((int)puVar30 + -1)] == 0) {\n            puVar9 = puVar8 + (int)puVar30;\n            do {\n              puVar1 = puVar9 + -2;\n              puVar30 = (uint *)((int)puVar30 + -1);\n              puVar9 = puVar9 + -1;\n            } while (*puVar1 == 0);\n          }\n          puVar16[1] = (uint)puVar30;\n          puVar49 = puVar50;\n        }\n        else if ((puVar30 < (uint *)0x3e8) || (puVar30 <= (uint *)((uint)puVar9 >> 4))) {\n          FUN_0002209c();\n          pcVar44 = *(code **)(puVar47 + -0xf0);\n          puVar49 = puVar46 + -0x90;\n        }\n        else {\n          FUN_000219dc();\n          pcVar44 = *(code **)(puVar47 + -0xf0);\n          puVar49 = puVar46 + -0x90;\n        }" else (if_statement "if (puVar30 < &DAT_00000021) {\n          uVar18 = (uint)puVar30 >> 1;\n          uVar37 = (int)puVar9 - uVar18;\n          FUN_000216e8();\n          iVar6 = *(int *)(puVar47 + -0xf0);\n          uVar7 = (int)puVar30 - uVar18;\n          if (uVar37 < 0x23) {\n            puVar50 = (undefined1 *)puVar16[1];\n            if ((int)puVar50 < (int)*puVar16) {\n              puVar8 = (uint *)puVar16[2];\n            }\n            else {\n              puVar8 = (uint *)(**(code **)(iVar6 + -0x7a80))(puVar16,puVar50 + 1);\n              iVar6 = *(int *)(puVar47 + -0xf0);\n            }\n            iVar29 = *(int *)(iVar6 + -0x7e20);\n            iVar24 = *(int *)(iVar6 + -0x7fd4) + 0x35b4;\n            uVar37 = (**(code **)(iVar6 + -0x7f9c))\n                               (puVar8,puVar8,puVar50,\n                                *(int *)((((int)puVar9 - (int)puVar30) - 2U) * 4 + iVar24) *\n                                *(int *)(*(int *)(iVar6 + -0x7b38) + uVar37 * 4) *\n                                *(int *)((uVar7 - 2) * 4 + iVar24) <<\n                                (((uint)*(byte *)(iVar29 + (uVar37 >> 1) + -1) -\n                                 (uint)*(byte *)(iVar29 + (uVar7 >> 1) + -1)) -\n                                 (uint)*(byte *)(iVar29 + ((uint)((int)puVar9 - (int)puVar30) >> 1)\n                                                + -1) & 0x1f));\n            iVar6 = *(int *)(puVar47 + -0xf0);\n            puVar30 = (uint *)(puVar50 + (uVar37 != 0));\n            puVar8[(int)puVar50] = uVar37;\n          }\n          else {\n            *(undefined4 *)(puVar47 + -0xe4) = 0x15;\n            *(undefined1 **)(puVar47 + -0xdc) = puVar47 + -0xd8;\n            FUN_000216e8(puVar47 + -0xe4,uVar37,uVar7);\n            (**(code **)(*(int *)(puVar47 + -0xf0) + -0x7ba8))(puVar16,puVar16,puVar47 + -0xe4);\n            iVar6 = *(int *)(puVar47 + -0xf0);\n            puVar8 = (uint *)puVar16[2];\n            puVar30 = (uint *)puVar16[1];\n          }\n          pcVar51 = *(code **)(iVar6 + -0x7bb4);\n          puVar38 = (uint *)((uint)*(byte *)((uVar7 - 8) + *(int *)(iVar6 + -0x7fd4) + 0x3550) -\n                            (uint)(uVar18 != uVar7));\n          *(undefined4 *)(puVar47 + -0xf8) =\n               *(undefined4 *)((uVar7 - 8) * 4 + *(int *)(iVar6 + -0x7fd4) + 0x355c);\n          *(uint **)(puVar47 + -0xf4) = puVar38;\n          puVar31 = puVar8;\n          puVar20 = puVar8;\n          puVar22 = puVar30;\n          (*pcVar51)();\n          pcVar44 = *(code **)(puVar47 + -0xf0);\n          if (puVar8[(int)((int)puVar30 + -1)] == 0) {\n            puVar9 = puVar8 + (int)puVar30;\n            do {\n              puVar1 = puVar9 + -2;\n              puVar30 = (uint *)((int)puVar30 + -1);\n              puVar9 = puVar9 + -1;\n            } while (*puVar1 == 0);\n          }\n          puVar16[1] = (uint)puVar30;\n          puVar49 = puVar50;\n        }\n        else if ((puVar30 < (uint *)0x3e8) || (puVar30 <= (uint *)((uint)puVar9 >> 4))) {\n          FUN_0002209c();\n          pcVar44 = *(code **)(puVar47 + -0xf0);\n          puVar49 = puVar46 + -0x90;\n        }\n        else {\n          FUN_000219dc();\n          pcVar44 = *(code **)(puVar47 + -0xf0);\n          puVar49 = puVar46 + -0x90;\n        }" if (parenthesized_expression "(puVar30 < &DAT_00000021)" ( (binary_expression "puVar30 < &DAT_00000021" identifier < (pointer_expression "&DAT_00000021" & identifier)) )) (compound_statement "{\n          uVar18 = (uint)puVar30 >> 1;\n          uVar37 = (int)puVar9 - uVar18;\n          FUN_000216e8();\n          iVar6 = *(int *)(puVar47 + -0xf0);\n          uVar7 = (int)puVar30 - uVar18;\n          if (uVar37 < 0x23) {\n            puVar50 = (undefined1 *)puVar16[1];\n            if ((int)puVar50 < (int)*puVar16) {\n              puVar8 = (uint *)puVar16[2];\n            }\n            else {\n              puVar8 = (uint *)(**(code **)(iVar6 + -0x7a80))(puVar16,puVar50 + 1);\n              iVar6 = *(int *)(puVar47 + -0xf0);\n            }\n            iVar29 = *(int *)(iVar6 + -0x7e20);\n            iVar24 = *(int *)(iVar6 + -0x7fd4) + 0x35b4;\n            uVar37 = (**(code **)(iVar6 + -0x7f9c))\n                               (puVar8,puVar8,puVar50,\n                                *(int *)((((int)puVar9 - (int)puVar30) - 2U) * 4 + iVar24) *\n                                *(int *)(*(int *)(iVar6 + -0x7b38) + uVar37 * 4) *\n                                *(int *)((uVar7 - 2) * 4 + iVar24) <<\n                                (((uint)*(byte *)(iVar29 + (uVar37 >> 1) + -1) -\n                                 (uint)*(byte *)(iVar29 + (uVar7 >> 1) + -1)) -\n                                 (uint)*(byte *)(iVar29 + ((uint)((int)puVar9 - (int)puVar30) >> 1)\n                                                + -1) & 0x1f));\n            iVar6 = *(int *)(puVar47 + -0xf0);\n            puVar30 = (uint *)(puVar50 + (uVar37 != 0));\n            puVar8[(int)puVar50] = uVar37;\n          }\n          else {\n            *(undefined4 *)(puVar47 + -0xe4) = 0x15;\n            *(undefined1 **)(puVar47 + -0xdc) = puVar47 + -0xd8;\n            FUN_000216e8(puVar47 + -0xe4,uVar37,uVar7);\n            (**(code **)(*(int *)(puVar47 + -0xf0) + -0x7ba8))(puVar16,puVar16,puVar47 + -0xe4);\n            iVar6 = *(int *)(puVar47 + -0xf0);\n            puVar8 = (uint *)puVar16[2];\n            puVar30 = (uint *)puVar16[1];\n          }\n          pcVar51 = *(code **)(iVar6 + -0x7bb4);\n          puVar38 = (uint *)((uint)*(byte *)((uVar7 - 8) + *(int *)(iVar6 + -0x7fd4) + 0x3550) -\n                            (uint)(uVar18 != uVar7));\n          *(undefined4 *)(puVar47 + -0xf8) =\n               *(undefined4 *)((uVar7 - 8) * 4 + *(int *)(iVar6 + -0x7fd4) + 0x355c);\n          *(uint **)(puVar47 + -0xf4) = puVar38;\n          puVar31 = puVar8;\n          puVar20 = puVar8;\n          puVar22 = puVar30;\n          (*pcVar51)();\n          pcVar44 = *(code **)(puVar47 + -0xf0);\n          if (puVar8[(int)((int)puVar30 + -1)] == 0) {\n            puVar9 = puVar8 + (int)puVar30;\n            do {\n              puVar1 = puVar9 + -2;\n              puVar30 = (uint *)((int)puVar30 + -1);\n              puVar9 = puVar9 + -1;\n            } while (*puVar1 == 0);\n          }\n          puVar16[1] = (uint)puVar30;\n          puVar49 = puVar50;\n        }" { (expression_statement "uVar18 = (uint)puVar30 >> 1;" (assignment_expression "uVar18 = (uint)puVar30 >> 1" identifier = (binary_expression "(uint)puVar30 >> 1" (cast_expression "(uint)puVar30" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal)) ;) (expression_statement "uVar37 = (int)puVar9 - uVar18;" (assignment_expression "uVar37 = (int)puVar9 - uVar18" identifier = (binary_expression "(int)puVar9 - uVar18" (cast_expression "(int)puVar9" ( (type_descriptor "int" primitive_type) ) identifier) - identifier)) ;) (expression_statement "FUN_000216e8();" (call_expression "FUN_000216e8()" identifier (argument_list "()" ( ))) ;) (expression_statement "iVar6 = *(int *)(puVar47 + -0xf0);" (assignment_expression "iVar6 = *(int *)(puVar47 + -0xf0)" identifier = (pointer_expression "*(int *)(puVar47 + -0xf0)" * (cast_expression "(int *)(puVar47 + -0xf0)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar47 + -0xf0)" ( (binary_expression "puVar47 + -0xf0" identifier + number_literal) ))))) ;) (expression_statement "uVar7 = (int)puVar30 - uVar18;" (assignment_expression "uVar7 = (int)puVar30 - uVar18" identifier = (binary_expression "(int)puVar30 - uVar18" (cast_expression "(int)puVar30" ( (type_descriptor "int" primitive_type) ) identifier) - identifier)) ;) (if_statement "if (uVar37 < 0x23) {\n            puVar50 = (undefined1 *)puVar16[1];\n            if ((int)puVar50 < (int)*puVar16) {\n              puVar8 = (uint *)puVar16[2];\n            }\n            else {\n              puVar8 = (uint *)(**(code **)(iVar6 + -0x7a80))(puVar16,puVar50 + 1);\n              iVar6 = *(int *)(puVar47 + -0xf0);\n            }\n            iVar29 = *(int *)(iVar6 + -0x7e20);\n            iVar24 = *(int *)(iVar6 + -0x7fd4) + 0x35b4;\n            uVar37 = (**(code **)(iVar6 + -0x7f9c))\n                               (puVar8,puVar8,puVar50,\n                                *(int *)((((int)puVar9 - (int)puVar30) - 2U) * 4 + iVar24) *\n                                *(int *)(*(int *)(iVar6 + -0x7b38) + uVar37 * 4) *\n                                *(int *)((uVar7 - 2) * 4 + iVar24) <<\n                                (((uint)*(byte *)(iVar29 + (uVar37 >> 1) + -1) -\n                                 (uint)*(byte *)(iVar29 + (uVar7 >> 1) + -1)) -\n                                 (uint)*(byte *)(iVar29 + ((uint)((int)puVar9 - (int)puVar30) >> 1)\n                                                + -1) & 0x1f));\n            iVar6 = *(int *)(puVar47 + -0xf0);\n            puVar30 = (uint *)(puVar50 + (uVar37 != 0));\n            puVar8[(int)puVar50] = uVar37;\n          }\n          else {\n            *(undefined4 *)(puVar47 + -0xe4) = 0x15;\n            *(undefined1 **)(puVar47 + -0xdc) = puVar47 + -0xd8;\n            FUN_000216e8(puVar47 + -0xe4,uVar37,uVar7);\n            (**(code **)(*(int *)(puVar47 + -0xf0) + -0x7ba8))(puVar16,puVar16,puVar47 + -0xe4);\n            iVar6 = *(int *)(puVar47 + -0xf0);\n            puVar8 = (uint *)puVar16[2];\n            puVar30 = (uint *)puVar16[1];\n          }" if (parenthesized_expression "(uVar37 < 0x23)" ( (binary_expression "uVar37 < 0x23" identifier < number_literal) )) (compound_statement "{\n            puVar50 = (undefined1 *)puVar16[1];\n            if ((int)puVar50 < (int)*puVar16) {\n              puVar8 = (uint *)puVar16[2];\n            }\n            else {\n              puVar8 = (uint *)(**(code **)(iVar6 + -0x7a80))(puVar16,puVar50 + 1);\n              iVar6 = *(int *)(puVar47 + -0xf0);\n            }\n            iVar29 = *(int *)(iVar6 + -0x7e20);\n            iVar24 = *(int *)(iVar6 + -0x7fd4) + 0x35b4;\n            uVar37 = (**(code **)(iVar6 + -0x7f9c))\n                               (puVar8,puVar8,puVar50,\n                                *(int *)((((int)puVar9 - (int)puVar30) - 2U) * 4 + iVar24) *\n                                *(int *)(*(int *)(iVar6 + -0x7b38) + uVar37 * 4) *\n                                *(int *)((uVar7 - 2) * 4 + iVar24) <<\n                                (((uint)*(byte *)(iVar29 + (uVar37 >> 1) + -1) -\n                                 (uint)*(byte *)(iVar29 + (uVar7 >> 1) + -1)) -\n                                 (uint)*(byte *)(iVar29 + ((uint)((int)puVar9 - (int)puVar30) >> 1)\n                                                + -1) & 0x1f));\n            iVar6 = *(int *)(puVar47 + -0xf0);\n            puVar30 = (uint *)(puVar50 + (uVar37 != 0));\n            puVar8[(int)puVar50] = uVar37;\n          }" { (expression_statement "puVar50 = (undefined1 *)puVar16[1];" (assignment_expression "puVar50 = (undefined1 *)puVar16[1]" identifier = (cast_expression "(undefined1 *)puVar16[1]" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar16[1]" identifier [ number_literal ]))) ;) (if_statement "if ((int)puVar50 < (int)*puVar16) {\n              puVar8 = (uint *)puVar16[2];\n            }\n            else {\n              puVar8 = (uint *)(**(code **)(iVar6 + -0x7a80))(puVar16,puVar50 + 1);\n              iVar6 = *(int *)(puVar47 + -0xf0);\n            }" if (parenthesized_expression "((int)puVar50 < (int)*puVar16)" ( (binary_expression "(int)puVar50 < (int)*puVar16" (cast_expression "(int)puVar50" ( (type_descriptor "int" primitive_type) ) identifier) < (cast_expression "(int)*puVar16" ( (type_descriptor "int" primitive_type) ) (pointer_expression "*puVar16" * identifier))) )) (compound_statement "{\n              puVar8 = (uint *)puVar16[2];\n            }" { (expression_statement "puVar8 = (uint *)puVar16[2];" (assignment_expression "puVar8 = (uint *)puVar16[2]" identifier = (cast_expression "(uint *)puVar16[2]" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar16[2]" identifier [ number_literal ]))) ;) }) (else_clause "else {\n              puVar8 = (uint *)(**(code **)(iVar6 + -0x7a80))(puVar16,puVar50 + 1);\n              iVar6 = *(int *)(puVar47 + -0xf0);\n            }" else (compound_statement "{\n              puVar8 = (uint *)(**(code **)(iVar6 + -0x7a80))(puVar16,puVar50 + 1);\n              iVar6 = *(int *)(puVar47 + -0xf0);\n            }" { (expression_statement "puVar8 = (uint *)(**(code **)(iVar6 + -0x7a80))(puVar16,puVar50 + 1);" (assignment_expression "puVar8 = (uint *)(**(code **)(iVar6 + -0x7a80))(puVar16,puVar50 + 1)" identifier = (cast_expression "(uint *)(**(code **)(iVar6 + -0x7a80))(puVar16,puVar50 + 1)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(**(code **)(iVar6 + -0x7a80))(puVar16,puVar50 + 1)" (parenthesized_expression "(**(code **)(iVar6 + -0x7a80))" ( (pointer_expression "**(code **)(iVar6 + -0x7a80)" * (pointer_expression "*(code **)(iVar6 + -0x7a80)" * (cast_expression "(code **)(iVar6 + -0x7a80)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar6 + -0x7a80)" ( (binary_expression "iVar6 + -0x7a80" identifier + number_literal) ))))) )) (argument_list "(puVar16,puVar50 + 1)" ( identifier , (binary_expression "puVar50 + 1" identifier + number_literal) ))))) ;) (expression_statement "iVar6 = *(int *)(puVar47 + -0xf0);" (assignment_expression "iVar6 = *(int *)(puVar47 + -0xf0)" identifier = (pointer_expression "*(int *)(puVar47 + -0xf0)" * (cast_expression "(int *)(puVar47 + -0xf0)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar47 + -0xf0)" ( (binary_expression "puVar47 + -0xf0" identifier + number_literal) ))))) ;) }))) (expression_statement "iVar29 = *(int *)(iVar6 + -0x7e20);" (assignment_expression "iVar29 = *(int *)(iVar6 + -0x7e20)" identifier = (pointer_expression "*(int *)(iVar6 + -0x7e20)" * (cast_expression "(int *)(iVar6 + -0x7e20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + -0x7e20)" ( (binary_expression "iVar6 + -0x7e20" identifier + number_literal) ))))) ;) (expression_statement "iVar24 = *(int *)(iVar6 + -0x7fd4) + 0x35b4;" (assignment_expression "iVar24 = *(int *)(iVar6 + -0x7fd4) + 0x35b4" identifier = (binary_expression "*(int *)(iVar6 + -0x7fd4) + 0x35b4" (pointer_expression "*(int *)(iVar6 + -0x7fd4)" * (cast_expression "(int *)(iVar6 + -0x7fd4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + -0x7fd4)" ( (binary_expression "iVar6 + -0x7fd4" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "uVar37 = (**(code **)(iVar6 + -0x7f9c))\n                               (puVar8,puVar8,puVar50,\n                                *(int *)((((int)puVar9 - (int)puVar30) - 2U) * 4 + iVar24) *\n                                *(int *)(*(int *)(iVar6 + -0x7b38) + uVar37 * 4) *\n                                *(int *)((uVar7 - 2) * 4 + iVar24) <<\n                                (((uint)*(byte *)(iVar29 + (uVar37 >> 1) + -1) -\n                                 (uint)*(byte *)(iVar29 + (uVar7 >> 1) + -1)) -\n                                 (uint)*(byte *)(iVar29 + ((uint)((int)puVar9 - (int)puVar30) >> 1)\n                                                + -1) & 0x1f));" (assignment_expression "uVar37 = (**(code **)(iVar6 + -0x7f9c))\n                               (puVar8,puVar8,puVar50,\n                                *(int *)((((int)puVar9 - (int)puVar30) - 2U) * 4 + iVar24) *\n                                *(int *)(*(int *)(iVar6 + -0x7b38) + uVar37 * 4) *\n                                *(int *)((uVar7 - 2) * 4 + iVar24) <<\n                                (((uint)*(byte *)(iVar29 + (uVar37 >> 1) + -1) -\n                                 (uint)*(byte *)(iVar29 + (uVar7 >> 1) + -1)) -\n                                 (uint)*(byte *)(iVar29 + ((uint)((int)puVar9 - (int)puVar30) >> 1)\n                                                + -1) & 0x1f))" identifier = (call_expression "(**(code **)(iVar6 + -0x7f9c))\n                               (puVar8,puVar8,puVar50,\n                                *(int *)((((int)puVar9 - (int)puVar30) - 2U) * 4 + iVar24) *\n                                *(int *)(*(int *)(iVar6 + -0x7b38) + uVar37 * 4) *\n                                *(int *)((uVar7 - 2) * 4 + iVar24) <<\n                                (((uint)*(byte *)(iVar29 + (uVar37 >> 1) + -1) -\n                                 (uint)*(byte *)(iVar29 + (uVar7 >> 1) + -1)) -\n                                 (uint)*(byte *)(iVar29 + ((uint)((int)puVar9 - (int)puVar30) >> 1)\n                                                + -1) & 0x1f))" (parenthesized_expression "(**(code **)(iVar6 + -0x7f9c))" ( (pointer_expression "**(code **)(iVar6 + -0x7f9c)" * (pointer_expression "*(code **)(iVar6 + -0x7f9c)" * (cast_expression "(code **)(iVar6 + -0x7f9c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar6 + -0x7f9c)" ( (binary_expression "iVar6 + -0x7f9c" identifier + number_literal) ))))) )) (argument_list "(puVar8,puVar8,puVar50,\n                                *(int *)((((int)puVar9 - (int)puVar30) - 2U) * 4 + iVar24) *\n                                *(int *)(*(int *)(iVar6 + -0x7b38) + uVar37 * 4) *\n                                *(int *)((uVar7 - 2) * 4 + iVar24) <<\n                                (((uint)*(byte *)(iVar29 + (uVar37 >> 1) + -1) -\n                                 (uint)*(byte *)(iVar29 + (uVar7 >> 1) + -1)) -\n                                 (uint)*(byte *)(iVar29 + ((uint)((int)puVar9 - (int)puVar30) >> 1)\n                                                + -1) & 0x1f))" ( identifier , identifier , identifier , (binary_expression "*(int *)((((int)puVar9 - (int)puVar30) - 2U) * 4 + iVar24) *\n                                *(int *)(*(int *)(iVar6 + -0x7b38) + uVar37 * 4) *\n                                *(int *)((uVar7 - 2) * 4 + iVar24) <<\n                                (((uint)*(byte *)(iVar29 + (uVar37 >> 1) + -1) -\n                                 (uint)*(byte *)(iVar29 + (uVar7 >> 1) + -1)) -\n                                 (uint)*(byte *)(iVar29 + ((uint)((int)puVar9 - (int)puVar30) >> 1)\n                                                + -1) & 0x1f)" (binary_expression "*(int *)((((int)puVar9 - (int)puVar30) - 2U) * 4 + iVar24) *\n                                *(int *)(*(int *)(iVar6 + -0x7b38) + uVar37 * 4) *\n                                *(int *)((uVar7 - 2) * 4 + iVar24)" (binary_expression "*(int *)((((int)puVar9 - (int)puVar30) - 2U) * 4 + iVar24) *\n                                *(int *)(*(int *)(iVar6 + -0x7b38) + uVar37 * 4)" (pointer_expression "*(int *)((((int)puVar9 - (int)puVar30) - 2U) * 4 + iVar24)" * (cast_expression "(int *)((((int)puVar9 - (int)puVar30) - 2U) * 4 + iVar24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((((int)puVar9 - (int)puVar30) - 2U) * 4 + iVar24)" ( (binary_expression "(((int)puVar9 - (int)puVar30) - 2U) * 4 + iVar24" (binary_expression "(((int)puVar9 - (int)puVar30) - 2U) * 4" (parenthesized_expression "(((int)puVar9 - (int)puVar30) - 2U)" ( (binary_expression "((int)puVar9 - (int)puVar30) - 2U" (parenthesized_expression "((int)puVar9 - (int)puVar30)" ( (binary_expression "(int)puVar9 - (int)puVar30" (cast_expression "(int)puVar9" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)puVar30" ( (type_descriptor "int" primitive_type) ) identifier)) )) - number_literal) )) * number_literal) + identifier) )))) * (pointer_expression "*(int *)(*(int *)(iVar6 + -0x7b38) + uVar37 * 4)" * (cast_expression "(int *)(*(int *)(iVar6 + -0x7b38) + uVar37 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(iVar6 + -0x7b38) + uVar37 * 4)" ( (binary_expression "*(int *)(iVar6 + -0x7b38) + uVar37 * 4" (pointer_expression "*(int *)(iVar6 + -0x7b38)" * (cast_expression "(int *)(iVar6 + -0x7b38)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + -0x7b38)" ( (binary_expression "iVar6 + -0x7b38" identifier + number_literal) )))) + (binary_expression "uVar37 * 4" identifier * number_literal)) ))))) * (pointer_expression "*(int *)((uVar7 - 2) * 4 + iVar24)" * (cast_expression "(int *)((uVar7 - 2) * 4 + iVar24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((uVar7 - 2) * 4 + iVar24)" ( (binary_expression "(uVar7 - 2) * 4 + iVar24" (binary_expression "(uVar7 - 2) * 4" (parenthesized_expression "(uVar7 - 2)" ( (binary_expression "uVar7 - 2" identifier - number_literal) )) * number_literal) + identifier) ))))) << (parenthesized_expression "(((uint)*(byte *)(iVar29 + (uVar37 >> 1) + -1) -\n                                 (uint)*(byte *)(iVar29 + (uVar7 >> 1) + -1)) -\n                                 (uint)*(byte *)(iVar29 + ((uint)((int)puVar9 - (int)puVar30) >> 1)\n                                                + -1) & 0x1f)" ( (binary_expression "((uint)*(byte *)(iVar29 + (uVar37 >> 1) + -1) -\n                                 (uint)*(byte *)(iVar29 + (uVar7 >> 1) + -1)) -\n                                 (uint)*(byte *)(iVar29 + ((uint)((int)puVar9 - (int)puVar30) >> 1)\n                                                + -1) & 0x1f" (binary_expression "((uint)*(byte *)(iVar29 + (uVar37 >> 1) + -1) -\n                                 (uint)*(byte *)(iVar29 + (uVar7 >> 1) + -1)) -\n                                 (uint)*(byte *)(iVar29 + ((uint)((int)puVar9 - (int)puVar30) >> 1)\n                                                + -1)" (parenthesized_expression "((uint)*(byte *)(iVar29 + (uVar37 >> 1) + -1) -\n                                 (uint)*(byte *)(iVar29 + (uVar7 >> 1) + -1))" ( (binary_expression "(uint)*(byte *)(iVar29 + (uVar37 >> 1) + -1) -\n                                 (uint)*(byte *)(iVar29 + (uVar7 >> 1) + -1)" (binary_expression "(uint)*(byte *)(iVar29 + (uVar37 >> 1) + -1)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)(iVar29 + (uVar37 >> 1) + -1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar29 + (uVar37 >> 1) + -1)" ( (binary_expression "iVar29 + (uVar37 >> 1) + -1" (binary_expression "iVar29 + (uVar37 >> 1)" identifier + (parenthesized_expression "(uVar37 >> 1)" ( (binary_expression "uVar37 >> 1" identifier >> number_literal) ))) + number_literal) )))) - (binary_expression "(uint)*(byte *)(iVar29 + (uVar7 >> 1) + -1)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)(iVar29 + (uVar7 >> 1) + -1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar29 + (uVar7 >> 1) + -1)" ( (binary_expression "iVar29 + (uVar7 >> 1) + -1" (binary_expression "iVar29 + (uVar7 >> 1)" identifier + (parenthesized_expression "(uVar7 >> 1)" ( (binary_expression "uVar7 >> 1" identifier >> number_literal) ))) + number_literal) ))))) )) - (binary_expression "(uint)*(byte *)(iVar29 + ((uint)((int)puVar9 - (int)puVar30) >> 1)\n                                                + -1)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)(iVar29 + ((uint)((int)puVar9 - (int)puVar30) >> 1)\n                                                + -1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar29 + ((uint)((int)puVar9 - (int)puVar30) >> 1)\n                                                + -1)" ( (binary_expression "iVar29 + ((uint)((int)puVar9 - (int)puVar30) >> 1)\n                                                + -1" (binary_expression "iVar29 + ((uint)((int)puVar9 - (int)puVar30) >> 1)" identifier + (parenthesized_expression "((uint)((int)puVar9 - (int)puVar30) >> 1)" ( (binary_expression "(uint)((int)puVar9 - (int)puVar30) >> 1" (call_expression "(uint)((int)puVar9 - (int)puVar30)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((int)puVar9 - (int)puVar30)" ( (binary_expression "(int)puVar9 - (int)puVar30" (cast_expression "(int)puVar9" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)puVar30" ( (type_descriptor "int" primitive_type) ) identifier)) ))) >> number_literal) ))) + number_literal) ))))) & number_literal) ))) )))) ;) (expression_statement "iVar6 = *(int *)(puVar47 + -0xf0);" (assignment_expression "iVar6 = *(int *)(puVar47 + -0xf0)" identifier = (pointer_expression "*(int *)(puVar47 + -0xf0)" * (cast_expression "(int *)(puVar47 + -0xf0)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar47 + -0xf0)" ( (binary_expression "puVar47 + -0xf0" identifier + number_literal) ))))) ;) (expression_statement "puVar30 = (uint *)(puVar50 + (uVar37 != 0));" (assignment_expression "puVar30 = (uint *)(puVar50 + (uVar37 != 0))" identifier = (cast_expression "(uint *)(puVar50 + (uVar37 != 0))" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar50 + (uVar37 != 0))" ( (binary_expression "puVar50 + (uVar37 != 0)" identifier + (parenthesized_expression "(uVar37 != 0)" ( (binary_expression "uVar37 != 0" identifier != number_literal) ))) )))) ;) (expression_statement "puVar8[(int)puVar50] = uVar37;" (assignment_expression "puVar8[(int)puVar50] = uVar37" (subscript_expression "puVar8[(int)puVar50]" identifier [ (cast_expression "(int)puVar50" ( (type_descriptor "int" primitive_type) ) identifier) ]) = identifier) ;) }) (else_clause "else {\n            *(undefined4 *)(puVar47 + -0xe4) = 0x15;\n            *(undefined1 **)(puVar47 + -0xdc) = puVar47 + -0xd8;\n            FUN_000216e8(puVar47 + -0xe4,uVar37,uVar7);\n            (**(code **)(*(int *)(puVar47 + -0xf0) + -0x7ba8))(puVar16,puVar16,puVar47 + -0xe4);\n            iVar6 = *(int *)(puVar47 + -0xf0);\n            puVar8 = (uint *)puVar16[2];\n            puVar30 = (uint *)puVar16[1];\n          }" else (compound_statement "{\n            *(undefined4 *)(puVar47 + -0xe4) = 0x15;\n            *(undefined1 **)(puVar47 + -0xdc) = puVar47 + -0xd8;\n            FUN_000216e8(puVar47 + -0xe4,uVar37,uVar7);\n            (**(code **)(*(int *)(puVar47 + -0xf0) + -0x7ba8))(puVar16,puVar16,puVar47 + -0xe4);\n            iVar6 = *(int *)(puVar47 + -0xf0);\n            puVar8 = (uint *)puVar16[2];\n            puVar30 = (uint *)puVar16[1];\n          }" { (expression_statement "*(undefined4 *)(puVar47 + -0xe4) = 0x15;" (assignment_expression "*(undefined4 *)(puVar47 + -0xe4) = 0x15" (pointer_expression "*(undefined4 *)(puVar47 + -0xe4)" * (cast_expression "(undefined4 *)(puVar47 + -0xe4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar47 + -0xe4)" ( (binary_expression "puVar47 + -0xe4" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined1 **)(puVar47 + -0xdc) = puVar47 + -0xd8;" (assignment_expression "*(undefined1 **)(puVar47 + -0xdc) = puVar47 + -0xd8" (pointer_expression "*(undefined1 **)(puVar47 + -0xdc)" * (cast_expression "(undefined1 **)(puVar47 + -0xdc)" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar47 + -0xdc)" ( (binary_expression "puVar47 + -0xdc" identifier + number_literal) )))) = (binary_expression "puVar47 + -0xd8" identifier + number_literal)) ;) (expression_statement "FUN_000216e8(puVar47 + -0xe4,uVar37,uVar7);" (call_expression "FUN_000216e8(puVar47 + -0xe4,uVar37,uVar7)" identifier (argument_list "(puVar47 + -0xe4,uVar37,uVar7)" ( (binary_expression "puVar47 + -0xe4" identifier + number_literal) , identifier , identifier ))) ;) (expression_statement "(**(code **)(*(int *)(puVar47 + -0xf0) + -0x7ba8))(puVar16,puVar16,puVar47 + -0xe4);" (call_expression "(**(code **)(*(int *)(puVar47 + -0xf0) + -0x7ba8))(puVar16,puVar16,puVar47 + -0xe4)" (parenthesized_expression "(**(code **)(*(int *)(puVar47 + -0xf0) + -0x7ba8))" ( (pointer_expression "**(code **)(*(int *)(puVar47 + -0xf0) + -0x7ba8)" * (pointer_expression "*(code **)(*(int *)(puVar47 + -0xf0) + -0x7ba8)" * (cast_expression "(code **)(*(int *)(puVar47 + -0xf0) + -0x7ba8)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)(puVar47 + -0xf0) + -0x7ba8)" ( (binary_expression "*(int *)(puVar47 + -0xf0) + -0x7ba8" (pointer_expression "*(int *)(puVar47 + -0xf0)" * (cast_expression "(int *)(puVar47 + -0xf0)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar47 + -0xf0)" ( (binary_expression "puVar47 + -0xf0" identifier + number_literal) )))) + number_literal) ))))) )) (argument_list "(puVar16,puVar16,puVar47 + -0xe4)" ( identifier , identifier , (binary_expression "puVar47 + -0xe4" identifier + number_literal) ))) ;) (expression_statement "iVar6 = *(int *)(puVar47 + -0xf0);" (assignment_expression "iVar6 = *(int *)(puVar47 + -0xf0)" identifier = (pointer_expression "*(int *)(puVar47 + -0xf0)" * (cast_expression "(int *)(puVar47 + -0xf0)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar47 + -0xf0)" ( (binary_expression "puVar47 + -0xf0" identifier + number_literal) ))))) ;) (expression_statement "puVar8 = (uint *)puVar16[2];" (assignment_expression "puVar8 = (uint *)puVar16[2]" identifier = (cast_expression "(uint *)puVar16[2]" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar16[2]" identifier [ number_literal ]))) ;) (expression_statement "puVar30 = (uint *)puVar16[1];" (assignment_expression "puVar30 = (uint *)puVar16[1]" identifier = (cast_expression "(uint *)puVar16[1]" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar16[1]" identifier [ number_literal ]))) ;) }))) (expression_statement "pcVar51 = *(code **)(iVar6 + -0x7bb4);" (assignment_expression "pcVar51 = *(code **)(iVar6 + -0x7bb4)" identifier = (pointer_expression "*(code **)(iVar6 + -0x7bb4)" * (cast_expression "(code **)(iVar6 + -0x7bb4)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar6 + -0x7bb4)" ( (binary_expression "iVar6 + -0x7bb4" identifier + number_literal) ))))) ;) (expression_statement "puVar38 = (uint *)((uint)*(byte *)((uVar7 - 8) + *(int *)(iVar6 + -0x7fd4) + 0x3550) -\n                            (uint)(uVar18 != uVar7));" (assignment_expression "puVar38 = (uint *)((uint)*(byte *)((uVar7 - 8) + *(int *)(iVar6 + -0x7fd4) + 0x3550) -\n                            (uint)(uVar18 != uVar7))" identifier = (cast_expression "(uint *)((uint)*(byte *)((uVar7 - 8) + *(int *)(iVar6 + -0x7fd4) + 0x3550) -\n                            (uint)(uVar18 != uVar7))" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((uint)*(byte *)((uVar7 - 8) + *(int *)(iVar6 + -0x7fd4) + 0x3550) -\n                            (uint)(uVar18 != uVar7))" ( (binary_expression "(uint)*(byte *)((uVar7 - 8) + *(int *)(iVar6 + -0x7fd4) + 0x3550) -\n                            (uint)(uVar18 != uVar7)" (binary_expression "(uint)*(byte *)((uVar7 - 8) + *(int *)(iVar6 + -0x7fd4) + 0x3550)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)((uVar7 - 8) + *(int *)(iVar6 + -0x7fd4) + 0x3550)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((uVar7 - 8) + *(int *)(iVar6 + -0x7fd4) + 0x3550)" ( (binary_expression "(uVar7 - 8) + *(int *)(iVar6 + -0x7fd4) + 0x3550" (binary_expression "(uVar7 - 8) + *(int *)(iVar6 + -0x7fd4)" (parenthesized_expression "(uVar7 - 8)" ( (binary_expression "uVar7 - 8" identifier - number_literal) )) + (pointer_expression "*(int *)(iVar6 + -0x7fd4)" * (cast_expression "(int *)(iVar6 + -0x7fd4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + -0x7fd4)" ( (binary_expression "iVar6 + -0x7fd4" identifier + number_literal) ))))) + number_literal) )))) - (call_expression "(uint)(uVar18 != uVar7)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar18 != uVar7)" ( (binary_expression "uVar18 != uVar7" identifier != identifier) )))) )))) ;) (expression_statement "*(undefined4 *)(puVar47 + -0xf8) =\n               *(undefined4 *)((uVar7 - 8) * 4 + *(int *)(iVar6 + -0x7fd4) + 0x355c);" (assignment_expression "*(undefined4 *)(puVar47 + -0xf8) =\n               *(undefined4 *)((uVar7 - 8) * 4 + *(int *)(iVar6 + -0x7fd4) + 0x355c)" (pointer_expression "*(undefined4 *)(puVar47 + -0xf8)" * (cast_expression "(undefined4 *)(puVar47 + -0xf8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar47 + -0xf8)" ( (binary_expression "puVar47 + -0xf8" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)((uVar7 - 8) * 4 + *(int *)(iVar6 + -0x7fd4) + 0x355c)" * (cast_expression "(undefined4 *)((uVar7 - 8) * 4 + *(int *)(iVar6 + -0x7fd4) + 0x355c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((uVar7 - 8) * 4 + *(int *)(iVar6 + -0x7fd4) + 0x355c)" ( (binary_expression "(uVar7 - 8) * 4 + *(int *)(iVar6 + -0x7fd4) + 0x355c" (binary_expression "(uVar7 - 8) * 4 + *(int *)(iVar6 + -0x7fd4)" (binary_expression "(uVar7 - 8) * 4" (parenthesized_expression "(uVar7 - 8)" ( (binary_expression "uVar7 - 8" identifier - number_literal) )) * number_literal) + (pointer_expression "*(int *)(iVar6 + -0x7fd4)" * (cast_expression "(int *)(iVar6 + -0x7fd4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + -0x7fd4)" ( (binary_expression "iVar6 + -0x7fd4" identifier + number_literal) ))))) + number_literal) ))))) ;) (expression_statement "*(uint **)(puVar47 + -0xf4) = puVar38;" (assignment_expression "*(uint **)(puVar47 + -0xf4) = puVar38" (pointer_expression "*(uint **)(puVar47 + -0xf4)" * (cast_expression "(uint **)(puVar47 + -0xf4)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar47 + -0xf4)" ( (binary_expression "puVar47 + -0xf4" identifier + number_literal) )))) = identifier) ;) (expression_statement "puVar31 = puVar8;" (assignment_expression "puVar31 = puVar8" identifier = identifier) ;) (expression_statement "puVar20 = puVar8;" (assignment_expression "puVar20 = puVar8" identifier = identifier) ;) (expression_statement "puVar22 = puVar30;" (assignment_expression "puVar22 = puVar30" identifier = identifier) ;) (expression_statement "(*pcVar51)();" (call_expression "(*pcVar51)()" (parenthesized_expression "(*pcVar51)" ( (pointer_expression "*pcVar51" * identifier) )) (argument_list "()" ( ))) ;) (expression_statement "pcVar44 = *(code **)(puVar47 + -0xf0);" (assignment_expression "pcVar44 = *(code **)(puVar47 + -0xf0)" identifier = (pointer_expression "*(code **)(puVar47 + -0xf0)" * (cast_expression "(code **)(puVar47 + -0xf0)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar47 + -0xf0)" ( (binary_expression "puVar47 + -0xf0" identifier + number_literal) ))))) ;) (if_statement "if (puVar8[(int)((int)puVar30 + -1)] == 0) {\n            puVar9 = puVar8 + (int)puVar30;\n            do {\n              puVar1 = puVar9 + -2;\n              puVar30 = (uint *)((int)puVar30 + -1);\n              puVar9 = puVar9 + -1;\n            } while (*puVar1 == 0);\n          }" if (parenthesized_expression "(puVar8[(int)((int)puVar30 + -1)] == 0)" ( (binary_expression "puVar8[(int)((int)puVar30 + -1)] == 0" (subscript_expression "puVar8[(int)((int)puVar30 + -1)]" identifier [ (cast_expression "(int)((int)puVar30 + -1)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((int)puVar30 + -1)" ( (binary_expression "(int)puVar30 + -1" (cast_expression "(int)puVar30" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))) ]) == number_literal) )) (compound_statement "{\n            puVar9 = puVar8 + (int)puVar30;\n            do {\n              puVar1 = puVar9 + -2;\n              puVar30 = (uint *)((int)puVar30 + -1);\n              puVar9 = puVar9 + -1;\n            } while (*puVar1 == 0);\n          }" { (expression_statement "puVar9 = puVar8 + (int)puVar30;" (assignment_expression "puVar9 = puVar8 + (int)puVar30" identifier = (binary_expression "puVar8 + (int)puVar30" identifier + (cast_expression "(int)puVar30" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (do_statement "do {\n              puVar1 = puVar9 + -2;\n              puVar30 = (uint *)((int)puVar30 + -1);\n              puVar9 = puVar9 + -1;\n            } while (*puVar1 == 0);" do (compound_statement "{\n              puVar1 = puVar9 + -2;\n              puVar30 = (uint *)((int)puVar30 + -1);\n              puVar9 = puVar9 + -1;\n            }" { (expression_statement "puVar1 = puVar9 + -2;" (assignment_expression "puVar1 = puVar9 + -2" identifier = (binary_expression "puVar9 + -2" identifier + number_literal)) ;) (expression_statement "puVar30 = (uint *)((int)puVar30 + -1);" (assignment_expression "puVar30 = (uint *)((int)puVar30 + -1)" identifier = (cast_expression "(uint *)((int)puVar30 + -1)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar30 + -1)" ( (binary_expression "(int)puVar30 + -1" (cast_expression "(int)puVar30" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "puVar9 = puVar9 + -1;" (assignment_expression "puVar9 = puVar9 + -1" identifier = (binary_expression "puVar9 + -1" identifier + number_literal)) ;) }) while (parenthesized_expression "(*puVar1 == 0)" ( (binary_expression "*puVar1 == 0" (pointer_expression "*puVar1" * identifier) == number_literal) )) ;) })) (expression_statement "puVar16[1] = (uint)puVar30;" (assignment_expression "puVar16[1] = (uint)puVar30" (subscript_expression "puVar16[1]" identifier [ number_literal ]) = (cast_expression "(uint)puVar30" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "puVar49 = puVar50;" (assignment_expression "puVar49 = puVar50" identifier = identifier) ;) }) (else_clause "else if ((puVar30 < (uint *)0x3e8) || (puVar30 <= (uint *)((uint)puVar9 >> 4))) {\n          FUN_0002209c();\n          pcVar44 = *(code **)(puVar47 + -0xf0);\n          puVar49 = puVar46 + -0x90;\n        }\n        else {\n          FUN_000219dc();\n          pcVar44 = *(code **)(puVar47 + -0xf0);\n          puVar49 = puVar46 + -0x90;\n        }" else (if_statement "if ((puVar30 < (uint *)0x3e8) || (puVar30 <= (uint *)((uint)puVar9 >> 4))) {\n          FUN_0002209c();\n          pcVar44 = *(code **)(puVar47 + -0xf0);\n          puVar49 = puVar46 + -0x90;\n        }\n        else {\n          FUN_000219dc();\n          pcVar44 = *(code **)(puVar47 + -0xf0);\n          puVar49 = puVar46 + -0x90;\n        }" if (parenthesized_expression "((puVar30 < (uint *)0x3e8) || (puVar30 <= (uint *)((uint)puVar9 >> 4)))" ( (binary_expression "(puVar30 < (uint *)0x3e8) || (puVar30 <= (uint *)((uint)puVar9 >> 4))" (parenthesized_expression "(puVar30 < (uint *)0x3e8)" ( (binary_expression "puVar30 < (uint *)0x3e8" identifier < (cast_expression "(uint *)0x3e8" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) || (parenthesized_expression "(puVar30 <= (uint *)((uint)puVar9 >> 4))" ( (binary_expression "puVar30 <= (uint *)((uint)puVar9 >> 4)" identifier <= (cast_expression "(uint *)((uint)puVar9 >> 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((uint)puVar9 >> 4)" ( (binary_expression "(uint)puVar9 >> 4" (cast_expression "(uint)puVar9" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) )))) ))) )) (compound_statement "{\n          FUN_0002209c();\n          pcVar44 = *(code **)(puVar47 + -0xf0);\n          puVar49 = puVar46 + -0x90;\n        }" { (expression_statement "FUN_0002209c();" (call_expression "FUN_0002209c()" identifier (argument_list "()" ( ))) ;) (expression_statement "pcVar44 = *(code **)(puVar47 + -0xf0);" (assignment_expression "pcVar44 = *(code **)(puVar47 + -0xf0)" identifier = (pointer_expression "*(code **)(puVar47 + -0xf0)" * (cast_expression "(code **)(puVar47 + -0xf0)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar47 + -0xf0)" ( (binary_expression "puVar47 + -0xf0" identifier + number_literal) ))))) ;) (expression_statement "puVar49 = puVar46 + -0x90;" (assignment_expression "puVar49 = puVar46 + -0x90" identifier = (binary_expression "puVar46 + -0x90" identifier + number_literal)) ;) }) (else_clause "else {\n          FUN_000219dc();\n          pcVar44 = *(code **)(puVar47 + -0xf0);\n          puVar49 = puVar46 + -0x90;\n        }" else (compound_statement "{\n          FUN_000219dc();\n          pcVar44 = *(code **)(puVar47 + -0xf0);\n          puVar49 = puVar46 + -0x90;\n        }" { (expression_statement "FUN_000219dc();" (call_expression "FUN_000219dc()" identifier (argument_list "()" ( ))) ;) (expression_statement "pcVar44 = *(code **)(puVar47 + -0xf0);" (assignment_expression "pcVar44 = *(code **)(puVar47 + -0xf0)" identifier = (pointer_expression "*(code **)(puVar47 + -0xf0)" * (cast_expression "(code **)(puVar47 + -0xf0)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar47 + -0xf0)" ( (binary_expression "puVar47 + -0xf0" identifier + number_literal) ))))) ;) (expression_statement "puVar49 = puVar46 + -0x90;" (assignment_expression "puVar49 = puVar46 + -0x90" identifier = (binary_expression "puVar46 + -0x90" identifier + number_literal)) ;) }))))))))))) }))) (if_statement "if (*(int *)(puVar47 + -0x84) == *piVar32) {\n        return *piVar32;\n      }" if (parenthesized_expression "(*(int *)(puVar47 + -0x84) == *piVar32)" ( (binary_expression "*(int *)(puVar47 + -0x84) == *piVar32" (pointer_expression "*(int *)(puVar47 + -0x84)" * (cast_expression "(int *)(puVar47 + -0x84)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar47 + -0x84)" ( (binary_expression "puVar47 + -0x84" identifier + number_literal) )))) == (pointer_expression "*piVar32" * identifier)) )) (compound_statement "{\n        return *piVar32;\n      }" { (return_statement "return *piVar32;" return (pointer_expression "*piVar32" * identifier) ;) })) (expression_statement "pcVar51 = *(code **)(pcVar44 + -0x7b70);" (assignment_expression "pcVar51 = *(code **)(pcVar44 + -0x7b70)" identifier = (pointer_expression "*(code **)(pcVar44 + -0x7b70)" * (cast_expression "(code **)(pcVar44 + -0x7b70)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar44 + -0x7b70)" ( (binary_expression "pcVar44 + -0x7b70" identifier + number_literal) ))))) ;) (expression_statement "uVar10 = 0x22b64;" (assignment_expression "uVar10 = 0x22b64" identifier = number_literal) ;) (expression_statement "(*pcVar51)();" (call_expression "(*pcVar51)()" (parenthesized_expression "(*pcVar51)" ( (pointer_expression "*pcVar51" * identifier) )) (argument_list "()" ( ))) ;) (expression_statement "pcVar44 = pcVar51 + 0x824d0;" (assignment_expression "pcVar44 = pcVar51 + 0x824d0" identifier = (binary_expression "pcVar51 + 0x824d0" identifier + number_literal)) ;) (expression_statement "puVar48 = puVar47 + -0x160;" (assignment_expression "puVar48 = puVar47 + -0x160" identifier = (binary_expression "puVar47 + -0x160" identifier + number_literal)) ;) (expression_statement "*(uint **)(puVar47 + -0x118) = puVar16;" (assignment_expression "*(uint **)(puVar47 + -0x118) = puVar16" (pointer_expression "*(uint **)(puVar47 + -0x118)" * (cast_expression "(uint **)(puVar47 + -0x118)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar47 + -0x118)" ( (binary_expression "puVar47 + -0x118" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(uint **)(puVar47 + -0x124) = puVar30;" (assignment_expression "*(uint **)(puVar47 + -0x124) = puVar30" (pointer_expression "*(uint **)(puVar47 + -0x124)" * (cast_expression "(uint **)(puVar47 + -0x124)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar47 + -0x124)" ( (binary_expression "puVar47 + -0x124" identifier + number_literal) )))) = identifier) ;) (expression_statement "piVar34 = *(int **)(pcVar51 + 0x7a9d0);" (assignment_expression "piVar34 = *(int **)(pcVar51 + 0x7a9d0)" identifier = (pointer_expression "*(int **)(pcVar51 + 0x7a9d0)" * (cast_expression "(int **)(pcVar51 + 0x7a9d0)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar51 + 0x7a9d0)" ( (binary_expression "pcVar51 + 0x7a9d0" identifier + number_literal) ))))) ;) (expression_statement "uVar18 = puVar22[1];" (assignment_expression "uVar18 = puVar22[1]" identifier = (subscript_expression "puVar22[1]" identifier [ number_literal ])) ;) (expression_statement "*(undefined1 **)(puVar47 + -0x110) = puVar49;" (assignment_expression "*(undefined1 **)(puVar47 + -0x110) = puVar49" (pointer_expression "*(undefined1 **)(puVar47 + -0x110)" * (cast_expression "(undefined1 **)(puVar47 + -0x110)" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar47 + -0x110)" ( (binary_expression "puVar47 + -0x110" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(uint **)(puVar47 + -0x114) = puVar36;" (assignment_expression "*(uint **)(puVar47 + -0x114) = puVar36" (pointer_expression "*(uint **)(puVar47 + -0x114)" * (cast_expression "(uint **)(puVar47 + -0x114)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar47 + -0x114)" ( (binary_expression "puVar47 + -0x114" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int **)(puVar47 + -0x11c) = piVar32;" (assignment_expression "*(int **)(puVar47 + -0x11c) = piVar32" (pointer_expression "*(int **)(puVar47 + -0x11c)" * (cast_expression "(int **)(puVar47 + -0x11c)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar47 + -0x11c)" ( (binary_expression "puVar47 + -0x11c" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(uint **)(puVar47 + -0x120) = puVar8;" (assignment_expression "*(uint **)(puVar47 + -0x120) = puVar8" (pointer_expression "*(uint **)(puVar47 + -0x120)" * (cast_expression "(uint **)(puVar47 + -0x120)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar47 + -0x120)" ( (binary_expression "puVar47 + -0x120" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar47 + -0x10c) = uVar10;" (assignment_expression "*(undefined4 *)(puVar47 + -0x10c) = uVar10" (pointer_expression "*(undefined4 *)(puVar47 + -0x10c)" * (cast_expression "(undefined4 *)(puVar47 + -0x10c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar47 + -0x10c)" ( (binary_expression "puVar47 + -0x10c" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(code **)(puVar47 + -0x150) = pcVar44;" (assignment_expression "*(code **)(puVar47 + -0x150) = pcVar44" (pointer_expression "*(code **)(puVar47 + -0x150)" * (cast_expression "(code **)(puVar47 + -0x150)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar47 + -0x150)" ( (binary_expression "puVar47 + -0x150" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar47 + -0x13c) = 0;" (assignment_expression "*(undefined4 *)(puVar47 + -0x13c) = 0" (pointer_expression "*(undefined4 *)(puVar47 + -0x13c)" * (cast_expression "(undefined4 *)(puVar47 + -0x13c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar47 + -0x13c)" ( (binary_expression "puVar47 + -0x13c" identifier + number_literal) )))) = number_literal) ;) (expression_statement "puVar8 = (uint *)puVar20[1];" (assignment_expression "puVar8 = (uint *)puVar20[1]" identifier = (cast_expression "(uint *)puVar20[1]" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar20[1]" identifier [ number_literal ]))) ;) (expression_statement "*(int *)(puVar47 + -300) = *piVar34;" (assignment_expression "*(int *)(puVar47 + -300) = *piVar34" (pointer_expression "*(int *)(puVar47 + -300)" * (cast_expression "(int *)(puVar47 + -300)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar47 + -300)" ( (binary_expression "puVar47 + -300" identifier + number_literal) )))) = (pointer_expression "*piVar34" * identifier)) ;) (if_statement "if ((int)uVar18 < 0) {\n        uVar37 = uVar18 * -4;\n        *(uint *)(puVar47 + -0x138) = -uVar18;\n        if (0x7f00 < uVar37) {\n          pcVar51 = *(code **)(pcVar51 + 0x7a780);\n          goto LAB_00022c88;\n        }\nLAB_00022be4:\n        iVar6 = -(uVar37 + 7 & 0xfffffff8);\n        puVar48 = puVar47 + iVar6 + -0x160;\n        puVar13 = puVar47 + iVar6 + -0x150;\n      }\n      else {\n        uVar37 = uVar18 * 4;\n        *(uint *)(puVar47 + -0x138) = uVar18;\n        pcVar51 = *(code **)(pcVar51 + 0x7a780);\n        if (uVar37 < 0x7f01) goto LAB_00022be4;\nLAB_00022c88:\n        *(uint **)(puVar47 + -0x144) = puVar22;\n        puVar13 = (undefined1 *)(*pcVar51)(puVar47 + -0x13c,uVar37);\n        pcVar44 = *(code **)(puVar47 + -0x150);\n        puVar22 = *(uint **)(puVar47 + -0x144);\n      }" if (parenthesized_expression "((int)uVar18 < 0)" ( (binary_expression "(int)uVar18 < 0" (cast_expression "(int)uVar18" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n        uVar37 = uVar18 * -4;\n        *(uint *)(puVar47 + -0x138) = -uVar18;\n        if (0x7f00 < uVar37) {\n          pcVar51 = *(code **)(pcVar51 + 0x7a780);\n          goto LAB_00022c88;\n        }\nLAB_00022be4:\n        iVar6 = -(uVar37 + 7 & 0xfffffff8);\n        puVar48 = puVar47 + iVar6 + -0x160;\n        puVar13 = puVar47 + iVar6 + -0x150;\n      }" { (expression_statement "uVar37 = uVar18 * -4;" (assignment_expression "uVar37 = uVar18 * -4" identifier = (binary_expression "uVar18 * -4" identifier * number_literal)) ;) (expression_statement "*(uint *)(puVar47 + -0x138) = -uVar18;" (assignment_expression "*(uint *)(puVar47 + -0x138) = -uVar18" (pointer_expression "*(uint *)(puVar47 + -0x138)" * (cast_expression "(uint *)(puVar47 + -0x138)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar47 + -0x138)" ( (binary_expression "puVar47 + -0x138" identifier + number_literal) )))) = (unary_expression "-uVar18" - identifier)) ;) (if_statement "if (0x7f00 < uVar37) {\n          pcVar51 = *(code **)(pcVar51 + 0x7a780);\n          goto LAB_00022c88;\n        }" if (parenthesized_expression "(0x7f00 < uVar37)" ( (binary_expression "0x7f00 < uVar37" number_literal < identifier) )) (compound_statement "{\n          pcVar51 = *(code **)(pcVar51 + 0x7a780);\n          goto LAB_00022c88;\n        }" { (expression_statement "pcVar51 = *(code **)(pcVar51 + 0x7a780);" (assignment_expression "pcVar51 = *(code **)(pcVar51 + 0x7a780)" identifier = (pointer_expression "*(code **)(pcVar51 + 0x7a780)" * (cast_expression "(code **)(pcVar51 + 0x7a780)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar51 + 0x7a780)" ( (binary_expression "pcVar51 + 0x7a780" identifier + number_literal) ))))) ;) (goto_statement "goto LAB_00022c88;" goto statement_identifier ;) })) (labeled_statement "LAB_00022be4:\n        iVar6 = -(uVar37 + 7 & 0xfffffff8);" statement_identifier : (expression_statement "iVar6 = -(uVar37 + 7 & 0xfffffff8);" (assignment_expression "iVar6 = -(uVar37 + 7 & 0xfffffff8)" identifier = (unary_expression "-(uVar37 + 7 & 0xfffffff8)" - (parenthesized_expression "(uVar37 + 7 & 0xfffffff8)" ( (binary_expression "uVar37 + 7 & 0xfffffff8" (binary_expression "uVar37 + 7" identifier + number_literal) & number_literal) )))) ;)) (expression_statement "puVar48 = puVar47 + iVar6 + -0x160;" (assignment_expression "puVar48 = puVar47 + iVar6 + -0x160" identifier = (binary_expression "puVar47 + iVar6 + -0x160" (binary_expression "puVar47 + iVar6" identifier + identifier) + number_literal)) ;) (expression_statement "puVar13 = puVar47 + iVar6 + -0x150;" (assignment_expression "puVar13 = puVar47 + iVar6 + -0x150" identifier = (binary_expression "puVar47 + iVar6 + -0x150" (binary_expression "puVar47 + iVar6" identifier + identifier) + number_literal)) ;) }) (else_clause "else {\n        uVar37 = uVar18 * 4;\n        *(uint *)(puVar47 + -0x138) = uVar18;\n        pcVar51 = *(code **)(pcVar51 + 0x7a780);\n        if (uVar37 < 0x7f01) goto LAB_00022be4;\nLAB_00022c88:\n        *(uint **)(puVar47 + -0x144) = puVar22;\n        puVar13 = (undefined1 *)(*pcVar51)(puVar47 + -0x13c,uVar37);\n        pcVar44 = *(code **)(puVar47 + -0x150);\n        puVar22 = *(uint **)(puVar47 + -0x144);\n      }" else (compound_statement "{\n        uVar37 = uVar18 * 4;\n        *(uint *)(puVar47 + -0x138) = uVar18;\n        pcVar51 = *(code **)(pcVar51 + 0x7a780);\n        if (uVar37 < 0x7f01) goto LAB_00022be4;\nLAB_00022c88:\n        *(uint **)(puVar47 + -0x144) = puVar22;\n        puVar13 = (undefined1 *)(*pcVar51)(puVar47 + -0x13c,uVar37);\n        pcVar44 = *(code **)(puVar47 + -0x150);\n        puVar22 = *(uint **)(puVar47 + -0x144);\n      }" { (expression_statement "uVar37 = uVar18 * 4;" (assignment_expression "uVar37 = uVar18 * 4" identifier = (binary_expression "uVar18 * 4" identifier * number_literal)) ;) (expression_statement "*(uint *)(puVar47 + -0x138) = uVar18;" (assignment_expression "*(uint *)(puVar47 + -0x138) = uVar18" (pointer_expression "*(uint *)(puVar47 + -0x138)" * (cast_expression "(uint *)(puVar47 + -0x138)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar47 + -0x138)" ( (binary_expression "puVar47 + -0x138" identifier + number_literal) )))) = identifier) ;) (expression_statement "pcVar51 = *(code **)(pcVar51 + 0x7a780);" (assignment_expression "pcVar51 = *(code **)(pcVar51 + 0x7a780)" identifier = (pointer_expression "*(code **)(pcVar51 + 0x7a780)" * (cast_expression "(code **)(pcVar51 + 0x7a780)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar51 + 0x7a780)" ( (binary_expression "pcVar51 + 0x7a780" identifier + number_literal) ))))) ;) (if_statement "if (uVar37 < 0x7f01) goto LAB_00022be4;" if (parenthesized_expression "(uVar37 < 0x7f01)" ( (binary_expression "uVar37 < 0x7f01" identifier < number_literal) )) (goto_statement "goto LAB_00022be4;" goto statement_identifier ;)) (labeled_statement "LAB_00022c88:\n        *(uint **)(puVar47 + -0x144) = puVar22;" statement_identifier : (expression_statement "*(uint **)(puVar47 + -0x144) = puVar22;" (assignment_expression "*(uint **)(puVar47 + -0x144) = puVar22" (pointer_expression "*(uint **)(puVar47 + -0x144)" * (cast_expression "(uint **)(puVar47 + -0x144)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar47 + -0x144)" ( (binary_expression "puVar47 + -0x144" identifier + number_literal) )))) = identifier) ;)) (expression_statement "puVar13 = (undefined1 *)(*pcVar51)(puVar47 + -0x13c,uVar37);" (assignment_expression "puVar13 = (undefined1 *)(*pcVar51)(puVar47 + -0x13c,uVar37)" identifier = (cast_expression "(undefined1 *)(*pcVar51)(puVar47 + -0x13c,uVar37)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(*pcVar51)(puVar47 + -0x13c,uVar37)" (parenthesized_expression "(*pcVar51)" ( (pointer_expression "*pcVar51" * identifier) )) (argument_list "(puVar47 + -0x13c,uVar37)" ( (binary_expression "puVar47 + -0x13c" identifier + number_literal) , identifier ))))) ;) (expression_statement "pcVar44 = *(code **)(puVar47 + -0x150);" (assignment_expression "pcVar44 = *(code **)(puVar47 + -0x150)" identifier = (pointer_expression "*(code **)(puVar47 + -0x150)" * (cast_expression "(code **)(puVar47 + -0x150)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar47 + -0x150)" ( (binary_expression "puVar47 + -0x150" identifier + number_literal) ))))) ;) (expression_statement "puVar22 = *(uint **)(puVar47 + -0x144);" (assignment_expression "puVar22 = *(uint **)(puVar47 + -0x144)" identifier = (pointer_expression "*(uint **)(puVar47 + -0x144)" * (cast_expression "(uint **)(puVar47 + -0x144)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar47 + -0x144)" ( (binary_expression "puVar47 + -0x144" identifier + number_literal) ))))) ;) }))) (expression_statement "pcVar51 = *(code **)(pcVar44 + -0x7a68);" (assignment_expression "pcVar51 = *(code **)(pcVar44 + -0x7a68)" identifier = (pointer_expression "*(code **)(pcVar44 + -0x7a68)" * (cast_expression "(code **)(pcVar44 + -0x7a68)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar44 + -0x7a68)" ( (binary_expression "pcVar44 + -0x7a68" identifier + number_literal) ))))) ;) (expression_statement "puVar36 = (uint *)(puVar47 + -0x138);" (assignment_expression "puVar36 = (uint *)(puVar47 + -0x138)" identifier = (cast_expression "(uint *)(puVar47 + -0x138)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar47 + -0x138)" ( (binary_expression "puVar47 + -0x138" identifier + number_literal) )))) ;) (expression_statement "*(undefined1 **)(puVar47 + -0x130) = puVar13;" (assignment_expression "*(undefined1 **)(puVar47 + -0x130) = puVar13" (pointer_expression "*(undefined1 **)(puVar47 + -0x130)" * (cast_expression "(undefined1 **)(puVar47 + -0x130)" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar47 + -0x130)" ( (binary_expression "puVar47 + -0x130" identifier + number_literal) )))) = identifier) ;) (expression_statement "puVar9 = puVar20;" (assignment_expression "puVar9 = puVar20" identifier = identifier) ;) (expression_statement "(*pcVar51)(puVar31,puVar36,puVar20,puVar22);" (call_expression "(*pcVar51)(puVar31,puVar36,puVar20,puVar22)" (parenthesized_expression "(*pcVar51)" ( (pointer_expression "*pcVar51" * identifier) )) (argument_list "(puVar31,puVar36,puVar20,puVar22)" ( identifier , identifier , identifier , identifier ))) ;) (expression_statement "iVar6 = *(int *)(puVar47 + -0x150);" (assignment_expression "iVar6 = *(int *)(puVar47 + -0x150)" identifier = (pointer_expression "*(int *)(puVar47 + -0x150)" * (cast_expression "(int *)(puVar47 + -0x150)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar47 + -0x150)" ( (binary_expression "puVar47 + -0x150" identifier + number_literal) ))))) ;) (if_statement "if (((int)((uint)puVar8 ^ uVar18) < 0) || (*(int *)(puVar47 + -0x134) == 0)) {\n        piVar32 = *(int **)(puVar47 + -0x13c);\n        pcVar51 = *(code **)(iVar6 + -0x7a28);\n        if (piVar32 != (int *)0x0) goto LAB_00022cc0;\n      }\n      else {\n        puVar9 = (uint *)0x1;\n        puVar36 = puVar31;\n        (**(code **)(iVar6 + -0x7c9c))(puVar31);\n        piVar32 = *(int **)(puVar47 + -0x13c);\n        iVar6 = *(int *)(puVar47 + -0x150);\n        if (piVar32 != (int *)0x0) {\n          pcVar51 = *(code **)(iVar6 + -0x7a28);\nLAB_00022cc0:\n          (*pcVar51)();\n          iVar6 = *(int *)(puVar47 + -0x150);\n        }\n      }" if (parenthesized_expression "(((int)((uint)puVar8 ^ uVar18) < 0) || (*(int *)(puVar47 + -0x134) == 0))" ( (binary_expression "((int)((uint)puVar8 ^ uVar18) < 0) || (*(int *)(puVar47 + -0x134) == 0)" (parenthesized_expression "((int)((uint)puVar8 ^ uVar18) < 0)" ( (binary_expression "(int)((uint)puVar8 ^ uVar18) < 0" (cast_expression "(int)((uint)puVar8 ^ uVar18)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((uint)puVar8 ^ uVar18)" ( (binary_expression "(uint)puVar8 ^ uVar18" (cast_expression "(uint)puVar8" ( (type_descriptor "uint" type_identifier) ) identifier) ^ identifier) ))) < number_literal) )) || (parenthesized_expression "(*(int *)(puVar47 + -0x134) == 0)" ( (binary_expression "*(int *)(puVar47 + -0x134) == 0" (pointer_expression "*(int *)(puVar47 + -0x134)" * (cast_expression "(int *)(puVar47 + -0x134)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar47 + -0x134)" ( (binary_expression "puVar47 + -0x134" identifier + number_literal) )))) == number_literal) ))) )) (compound_statement "{\n        piVar32 = *(int **)(puVar47 + -0x13c);\n        pcVar51 = *(code **)(iVar6 + -0x7a28);\n        if (piVar32 != (int *)0x0) goto LAB_00022cc0;\n      }" { (expression_statement "piVar32 = *(int **)(puVar47 + -0x13c);" (assignment_expression "piVar32 = *(int **)(puVar47 + -0x13c)" identifier = (pointer_expression "*(int **)(puVar47 + -0x13c)" * (cast_expression "(int **)(puVar47 + -0x13c)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar47 + -0x13c)" ( (binary_expression "puVar47 + -0x13c" identifier + number_literal) ))))) ;) (expression_statement "pcVar51 = *(code **)(iVar6 + -0x7a28);" (assignment_expression "pcVar51 = *(code **)(iVar6 + -0x7a28)" identifier = (pointer_expression "*(code **)(iVar6 + -0x7a28)" * (cast_expression "(code **)(iVar6 + -0x7a28)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar6 + -0x7a28)" ( (binary_expression "iVar6 + -0x7a28" identifier + number_literal) ))))) ;) (if_statement "if (piVar32 != (int *)0x0) goto LAB_00022cc0;" if (parenthesized_expression "(piVar32 != (int *)0x0)" ( (binary_expression "piVar32 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_00022cc0;" goto statement_identifier ;)) }) (else_clause "else {\n        puVar9 = (uint *)0x1;\n        puVar36 = puVar31;\n        (**(code **)(iVar6 + -0x7c9c))(puVar31);\n        piVar32 = *(int **)(puVar47 + -0x13c);\n        iVar6 = *(int *)(puVar47 + -0x150);\n        if (piVar32 != (int *)0x0) {\n          pcVar51 = *(code **)(iVar6 + -0x7a28);\nLAB_00022cc0:\n          (*pcVar51)();\n          iVar6 = *(int *)(puVar47 + -0x150);\n        }\n      }" else (compound_statement "{\n        puVar9 = (uint *)0x1;\n        puVar36 = puVar31;\n        (**(code **)(iVar6 + -0x7c9c))(puVar31);\n        piVar32 = *(int **)(puVar47 + -0x13c);\n        iVar6 = *(int *)(puVar47 + -0x150);\n        if (piVar32 != (int *)0x0) {\n          pcVar51 = *(code **)(iVar6 + -0x7a28);\nLAB_00022cc0:\n          (*pcVar51)();\n          iVar6 = *(int *)(puVar47 + -0x150);\n        }\n      }" { (expression_statement "puVar9 = (uint *)0x1;" (assignment_expression "puVar9 = (uint *)0x1" identifier = (cast_expression "(uint *)0x1" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "puVar36 = puVar31;" (assignment_expression "puVar36 = puVar31" identifier = identifier) ;) (expression_statement "(**(code **)(iVar6 + -0x7c9c))(puVar31);" (call_expression "(**(code **)(iVar6 + -0x7c9c))(puVar31)" (parenthesized_expression "(**(code **)(iVar6 + -0x7c9c))" ( (pointer_expression "**(code **)(iVar6 + -0x7c9c)" * (pointer_expression "*(code **)(iVar6 + -0x7c9c)" * (cast_expression "(code **)(iVar6 + -0x7c9c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar6 + -0x7c9c)" ( (binary_expression "iVar6 + -0x7c9c" identifier + number_literal) ))))) )) (argument_list "(puVar31)" ( identifier ))) ;) (expression_statement "piVar32 = *(int **)(puVar47 + -0x13c);" (assignment_expression "piVar32 = *(int **)(puVar47 + -0x13c)" identifier = (pointer_expression "*(int **)(puVar47 + -0x13c)" * (cast_expression "(int **)(puVar47 + -0x13c)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar47 + -0x13c)" ( (binary_expression "puVar47 + -0x13c" identifier + number_literal) ))))) ;) (expression_statement "iVar6 = *(int *)(puVar47 + -0x150);" (assignment_expression "iVar6 = *(int *)(puVar47 + -0x150)" identifier = (pointer_expression "*(int *)(puVar47 + -0x150)" * (cast_expression "(int *)(puVar47 + -0x150)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar47 + -0x150)" ( (binary_expression "puVar47 + -0x150" identifier + number_literal) ))))) ;) (if_statement "if (piVar32 != (int *)0x0) {\n          pcVar51 = *(code **)(iVar6 + -0x7a28);\nLAB_00022cc0:\n          (*pcVar51)();\n          iVar6 = *(int *)(puVar47 + -0x150);\n        }" if (parenthesized_expression "(piVar32 != (int *)0x0)" ( (binary_expression "piVar32 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          pcVar51 = *(code **)(iVar6 + -0x7a28);\nLAB_00022cc0:\n          (*pcVar51)();\n          iVar6 = *(int *)(puVar47 + -0x150);\n        }" { (expression_statement "pcVar51 = *(code **)(iVar6 + -0x7a28);" (assignment_expression "pcVar51 = *(code **)(iVar6 + -0x7a28)" identifier = (pointer_expression "*(code **)(iVar6 + -0x7a28)" * (cast_expression "(code **)(iVar6 + -0x7a28)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar6 + -0x7a28)" ( (binary_expression "iVar6 + -0x7a28" identifier + number_literal) ))))) ;) (labeled_statement "LAB_00022cc0:\n          (*pcVar51)();" statement_identifier : (expression_statement "(*pcVar51)();" (call_expression "(*pcVar51)()" (parenthesized_expression "(*pcVar51)" ( (pointer_expression "*pcVar51" * identifier) )) (argument_list "()" ( ))) ;)) (expression_statement "iVar6 = *(int *)(puVar47 + -0x150);" (assignment_expression "iVar6 = *(int *)(puVar47 + -0x150)" identifier = (pointer_expression "*(int *)(puVar47 + -0x150)" * (cast_expression "(int *)(puVar47 + -0x150)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar47 + -0x150)" ( (binary_expression "puVar47 + -0x150" identifier + number_literal) ))))) ;) })) }))) (if_statement "if (*(int *)(puVar47 + -300) == *piVar34) {\n        return *piVar34;\n      }" if (parenthesized_expression "(*(int *)(puVar47 + -300) == *piVar34)" ( (binary_expression "*(int *)(puVar47 + -300) == *piVar34" (pointer_expression "*(int *)(puVar47 + -300)" * (cast_expression "(int *)(puVar47 + -300)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar47 + -300)" ( (binary_expression "puVar47 + -300" identifier + number_literal) )))) == (pointer_expression "*piVar34" * identifier)) )) (compound_statement "{\n        return *piVar34;\n      }" { (return_statement "return *piVar34;" return (pointer_expression "*piVar34" * identifier) ;) })) (expression_statement "pcVar51 = *(code **)(iVar6 + -0x7b70);" (assignment_expression "pcVar51 = *(code **)(iVar6 + -0x7b70)" identifier = (pointer_expression "*(code **)(iVar6 + -0x7b70)" * (cast_expression "(code **)(iVar6 + -0x7b70)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar6 + -0x7b70)" ( (binary_expression "iVar6 + -0x7b70" identifier + number_literal) ))))) ;) (expression_statement "uVar10 = 0x22cdc;" (assignment_expression "uVar10 = 0x22cdc" identifier = number_literal) ;) (expression_statement "(*pcVar51)();" (call_expression "(*pcVar51)()" (parenthesized_expression "(*pcVar51)" ( (pointer_expression "*pcVar51" * identifier) )) (argument_list "()" ( ))) ;) (expression_statement "pcVar44 = pcVar51 + 0x82360;" (assignment_expression "pcVar44 = pcVar51 + 0x82360" identifier = (binary_expression "pcVar51 + 0x82360" identifier + number_literal)) ;) (expression_statement "*(code **)(puVar48 + -0x28) = pcVar44;" (assignment_expression "*(code **)(puVar48 + -0x28) = pcVar44" (pointer_expression "*(code **)(puVar48 + -0x28)" * (cast_expression "(code **)(puVar48 + -0x28)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar48 + -0x28)" ( (binary_expression "puVar48 + -0x28" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar48 + -4) = uVar10;" (assignment_expression "*(undefined4 *)(puVar48 + -4) = uVar10" (pointer_expression "*(undefined4 *)(puVar48 + -4)" * (cast_expression "(undefined4 *)(puVar48 + -4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar48 + -4)" ( (binary_expression "puVar48 + -4" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(uint **)(puVar48 + -8) = puVar38;" (assignment_expression "*(uint **)(puVar48 + -8) = puVar38" (pointer_expression "*(uint **)(puVar48 + -8)" * (cast_expression "(uint **)(puVar48 + -8)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar48 + -8)" ( (binary_expression "puVar48 + -8" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(uint **)(puVar48 + -0xc) = puVar20;" (assignment_expression "*(uint **)(puVar48 + -0xc) = puVar20" (pointer_expression "*(uint **)(puVar48 + -0xc)" * (cast_expression "(uint **)(puVar48 + -0xc)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar48 + -0xc)" ( (binary_expression "puVar48 + -0xc" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int **)(puVar48 + -0x10) = piVar34;" (assignment_expression "*(int **)(puVar48 + -0x10) = piVar34" (pointer_expression "*(int **)(puVar48 + -0x10)" * (cast_expression "(int **)(puVar48 + -0x10)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar48 + -0x10)" ( (binary_expression "puVar48 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(uint **)(puVar48 + -0x14) = puVar31;" (assignment_expression "*(uint **)(puVar48 + -0x14) = puVar31" (pointer_expression "*(uint **)(puVar48 + -0x14)" * (cast_expression "(uint **)(puVar48 + -0x14)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar48 + -0x14)" ( (binary_expression "puVar48 + -0x14" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(uint **)(puVar48 + -0x18) = puVar8;" (assignment_expression "*(uint **)(puVar48 + -0x18) = puVar8" (pointer_expression "*(uint **)(puVar48 + -0x18)" * (cast_expression "(uint **)(puVar48 + -0x18)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar48 + -0x18)" ( (binary_expression "puVar48 + -0x18" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(uint *)(puVar48 + -0x1c) = (uint)puVar8 ^ uVar18;" (assignment_expression "*(uint *)(puVar48 + -0x1c) = (uint)puVar8 ^ uVar18" (pointer_expression "*(uint *)(puVar48 + -0x1c)" * (cast_expression "(uint *)(puVar48 + -0x1c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar48 + -0x1c)" ( (binary_expression "puVar48 + -0x1c" identifier + number_literal) )))) = (binary_expression "(uint)puVar8 ^ uVar18" (cast_expression "(uint)puVar8" ( (type_descriptor "uint" type_identifier) ) identifier) ^ identifier)) ;) (if_statement "if (puVar9 == (uint *)0x0) {\n        pcVar51 = *(code **)(pcVar51 + 0x7a900);\n        (*pcVar51)();\nLAB_00022e2c:\n        piVar32 = (int *)(*pcVar51)(piVar34,puVar31);\n        pcVar44 = *(code **)(puVar48 + -0x28);\n      }\n      else {\n        puVar8 = (uint *)puVar36[1];\n        if (puVar8 == (uint *)0x0) {\n          piVar32[1] = 0;\n          return 0;\n        }\n        puVar31 = puVar8;\n        if ((int)puVar8 < 0) {\n          puVar31 = (uint *)-(int)puVar8;\n        }\n        pcVar51 = *(code **)(pcVar51 + 0x7a8e0);\n        piVar34 = piVar32;\n        puVar20 = puVar9;\n        puVar38 = puVar36;\n        if (*piVar32 < (int)puVar31) goto LAB_00022e2c;\n        piVar32 = (int *)piVar32[2];\n      }" if (parenthesized_expression "(puVar9 == (uint *)0x0)" ( (binary_expression "puVar9 == (uint *)0x0" identifier == (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        pcVar51 = *(code **)(pcVar51 + 0x7a900);\n        (*pcVar51)();\nLAB_00022e2c:\n        piVar32 = (int *)(*pcVar51)(piVar34,puVar31);\n        pcVar44 = *(code **)(puVar48 + -0x28);\n      }" { (expression_statement "pcVar51 = *(code **)(pcVar51 + 0x7a900);" (assignment_expression "pcVar51 = *(code **)(pcVar51 + 0x7a900)" identifier = (pointer_expression "*(code **)(pcVar51 + 0x7a900)" * (cast_expression "(code **)(pcVar51 + 0x7a900)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar51 + 0x7a900)" ( (binary_expression "pcVar51 + 0x7a900" identifier + number_literal) ))))) ;) (expression_statement "(*pcVar51)();" (call_expression "(*pcVar51)()" (parenthesized_expression "(*pcVar51)" ( (pointer_expression "*pcVar51" * identifier) )) (argument_list "()" ( ))) ;) (labeled_statement "LAB_00022e2c:\n        piVar32 = (int *)(*pcVar51)(piVar34,puVar31);" statement_identifier : (expression_statement "piVar32 = (int *)(*pcVar51)(piVar34,puVar31);" (assignment_expression "piVar32 = (int *)(*pcVar51)(piVar34,puVar31)" identifier = (cast_expression "(int *)(*pcVar51)(piVar34,puVar31)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "(*pcVar51)(piVar34,puVar31)" (parenthesized_expression "(*pcVar51)" ( (pointer_expression "*pcVar51" * identifier) )) (argument_list "(piVar34,puVar31)" ( identifier , identifier ))))) ;)) (expression_statement "pcVar44 = *(code **)(puVar48 + -0x28);" (assignment_expression "pcVar44 = *(code **)(puVar48 + -0x28)" identifier = (pointer_expression "*(code **)(puVar48 + -0x28)" * (cast_expression "(code **)(puVar48 + -0x28)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar48 + -0x28)" ( (binary_expression "puVar48 + -0x28" identifier + number_literal) ))))) ;) }) (else_clause "else {\n        puVar8 = (uint *)puVar36[1];\n        if (puVar8 == (uint *)0x0) {\n          piVar32[1] = 0;\n          return 0;\n        }\n        puVar31 = puVar8;\n        if ((int)puVar8 < 0) {\n          puVar31 = (uint *)-(int)puVar8;\n        }\n        pcVar51 = *(code **)(pcVar51 + 0x7a8e0);\n        piVar34 = piVar32;\n        puVar20 = puVar9;\n        puVar38 = puVar36;\n        if (*piVar32 < (int)puVar31) goto LAB_00022e2c;\n        piVar32 = (int *)piVar32[2];\n      }" else (compound_statement "{\n        puVar8 = (uint *)puVar36[1];\n        if (puVar8 == (uint *)0x0) {\n          piVar32[1] = 0;\n          return 0;\n        }\n        puVar31 = puVar8;\n        if ((int)puVar8 < 0) {\n          puVar31 = (uint *)-(int)puVar8;\n        }\n        pcVar51 = *(code **)(pcVar51 + 0x7a8e0);\n        piVar34 = piVar32;\n        puVar20 = puVar9;\n        puVar38 = puVar36;\n        if (*piVar32 < (int)puVar31) goto LAB_00022e2c;\n        piVar32 = (int *)piVar32[2];\n      }" { (expression_statement "puVar8 = (uint *)puVar36[1];" (assignment_expression "puVar8 = (uint *)puVar36[1]" identifier = (cast_expression "(uint *)puVar36[1]" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar36[1]" identifier [ number_literal ]))) ;) (if_statement "if (puVar8 == (uint *)0x0) {\n          piVar32[1] = 0;\n          return 0;\n        }" if (parenthesized_expression "(puVar8 == (uint *)0x0)" ( (binary_expression "puVar8 == (uint *)0x0" identifier == (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          piVar32[1] = 0;\n          return 0;\n        }" { (expression_statement "piVar32[1] = 0;" (assignment_expression "piVar32[1] = 0" (subscript_expression "piVar32[1]" identifier [ number_literal ]) = number_literal) ;) (return_statement "return 0;" return number_literal ;) })) (expression_statement "puVar31 = puVar8;" (assignment_expression "puVar31 = puVar8" identifier = identifier) ;) (if_statement "if ((int)puVar8 < 0) {\n          puVar31 = (uint *)-(int)puVar8;\n        }" if (parenthesized_expression "((int)puVar8 < 0)" ( (binary_expression "(int)puVar8 < 0" (cast_expression "(int)puVar8" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n          puVar31 = (uint *)-(int)puVar8;\n        }" { (expression_statement "puVar31 = (uint *)-(int)puVar8;" (assignment_expression "puVar31 = (uint *)-(int)puVar8" identifier = (cast_expression "(uint *)-(int)puVar8" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (unary_expression "-(int)puVar8" - (cast_expression "(int)puVar8" ( (type_descriptor "int" primitive_type) ) identifier)))) ;) })) (expression_statement "pcVar51 = *(code **)(pcVar51 + 0x7a8e0);" (assignment_expression "pcVar51 = *(code **)(pcVar51 + 0x7a8e0)" identifier = (pointer_expression "*(code **)(pcVar51 + 0x7a8e0)" * (cast_expression "(code **)(pcVar51 + 0x7a8e0)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar51 + 0x7a8e0)" ( (binary_expression "pcVar51 + 0x7a8e0" identifier + number_literal) ))))) ;) (expression_statement "piVar34 = piVar32;" (assignment_expression "piVar34 = piVar32" identifier = identifier) ;) (expression_statement "puVar20 = puVar9;" (assignment_expression "puVar20 = puVar9" identifier = identifier) ;) (expression_statement "puVar38 = puVar36;" (assignment_expression "puVar38 = puVar36" identifier = identifier) ;) (if_statement "if (*piVar32 < (int)puVar31) goto LAB_00022e2c;" if (parenthesized_expression "(*piVar32 < (int)puVar31)" ( (binary_expression "*piVar32 < (int)puVar31" (pointer_expression "*piVar32" * identifier) < (cast_expression "(int)puVar31" ( (type_descriptor "int" primitive_type) ) identifier)) )) (goto_statement "goto LAB_00022e2c;" goto statement_identifier ;)) (expression_statement "piVar32 = (int *)piVar32[2];" (assignment_expression "piVar32 = (int *)piVar32[2]" identifier = (cast_expression "(int *)piVar32[2]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar32[2]" identifier [ number_literal ]))) ;) }))) (expression_statement "pcVar51 = *(code **)(pcVar44 + -0x7d98);" (assignment_expression "pcVar51 = *(code **)(pcVar44 + -0x7d98)" identifier = (pointer_expression "*(code **)(pcVar44 + -0x7d98)" * (cast_expression "(code **)(pcVar44 + -0x7d98)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar44 + -0x7d98)" ( (binary_expression "pcVar44 + -0x7d98" identifier + number_literal) ))))) ;) (expression_statement "uVar18 = puVar38[2];" (assignment_expression "uVar18 = puVar38[2]" identifier = (subscript_expression "puVar38[2]" identifier [ number_literal ])) ;) (expression_statement "*(uint **)(puVar48 + -0x30) = puVar20;" (assignment_expression "*(uint **)(puVar48 + -0x30) = puVar20" (pointer_expression "*(uint **)(puVar48 + -0x30)" * (cast_expression "(uint **)(puVar48 + -0x30)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar48 + -0x30)" ( (binary_expression "puVar48 + -0x30" identifier + number_literal) )))) = identifier) ;) (expression_statement "iVar6 = (*pcVar51)(piVar32,0,uVar18,puVar31);" (assignment_expression "iVar6 = (*pcVar51)(piVar32,0,uVar18,puVar31)" identifier = (call_expression "(*pcVar51)(piVar32,0,uVar18,puVar31)" (parenthesized_expression "(*pcVar51)" ( (pointer_expression "*pcVar51" * identifier) )) (argument_list "(piVar32,0,uVar18,puVar31)" ( identifier , number_literal , identifier , identifier )))) ;) (expression_statement "piVar17 = piVar32 + (int)puVar31 + -1;" (assignment_expression "piVar17 = piVar32 + (int)puVar31 + -1" identifier = (binary_expression "piVar32 + (int)puVar31 + -1" (binary_expression "piVar32 + (int)puVar31" identifier + (cast_expression "(int)puVar31" ( (type_descriptor "int" primitive_type) ) identifier)) + number_literal)) ;) (if_statement "if (iVar6 == 0) {\n        uVar18 = (uint)(*piVar17 == 0);\n        if (-1 < (int)puVar8) {\n          iVar24 = (int)puVar31 - uVar18;\n          goto LAB_00022d9c;\n        }\n      }\n      else {\n        if (-1 < (int)puVar8) {\n          do {\n            iVar24 = *piVar32;\n            *piVar32 = iVar24 + 1;\n            piVar32 = piVar32 + 1;\n          } while (iVar24 + 1 == 0);\n          iVar6 = (int)puVar20 - iVar6;\n          iVar24 = (int)puVar31 - (uint)(*piVar17 == 0);\n          goto LAB_00022d9c;\n        }\n        uVar18 = (uint)(*piVar17 == 0);\n      }" if (parenthesized_expression "(iVar6 == 0)" ( (binary_expression "iVar6 == 0" identifier == number_literal) )) (compound_statement "{\n        uVar18 = (uint)(*piVar17 == 0);\n        if (-1 < (int)puVar8) {\n          iVar24 = (int)puVar31 - uVar18;\n          goto LAB_00022d9c;\n        }\n      }" { (expression_statement "uVar18 = (uint)(*piVar17 == 0);" (assignment_expression "uVar18 = (uint)(*piVar17 == 0)" identifier = (call_expression "(uint)(*piVar17 == 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(*piVar17 == 0)" ( (binary_expression "*piVar17 == 0" (pointer_expression "*piVar17" * identifier) == number_literal) )))) ;) (if_statement "if (-1 < (int)puVar8) {\n          iVar24 = (int)puVar31 - uVar18;\n          goto LAB_00022d9c;\n        }" if (parenthesized_expression "(-1 < (int)puVar8)" ( (binary_expression "-1 < (int)puVar8" number_literal < (cast_expression "(int)puVar8" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n          iVar24 = (int)puVar31 - uVar18;\n          goto LAB_00022d9c;\n        }" { (expression_statement "iVar24 = (int)puVar31 - uVar18;" (assignment_expression "iVar24 = (int)puVar31 - uVar18" identifier = (binary_expression "(int)puVar31 - uVar18" (cast_expression "(int)puVar31" ( (type_descriptor "int" primitive_type) ) identifier) - identifier)) ;) (goto_statement "goto LAB_00022d9c;" goto statement_identifier ;) })) }) (else_clause "else {\n        if (-1 < (int)puVar8) {\n          do {\n            iVar24 = *piVar32;\n            *piVar32 = iVar24 + 1;\n            piVar32 = piVar32 + 1;\n          } while (iVar24 + 1 == 0);\n          iVar6 = (int)puVar20 - iVar6;\n          iVar24 = (int)puVar31 - (uint)(*piVar17 == 0);\n          goto LAB_00022d9c;\n        }\n        uVar18 = (uint)(*piVar17 == 0);\n      }" else (compound_statement "{\n        if (-1 < (int)puVar8) {\n          do {\n            iVar24 = *piVar32;\n            *piVar32 = iVar24 + 1;\n            piVar32 = piVar32 + 1;\n          } while (iVar24 + 1 == 0);\n          iVar6 = (int)puVar20 - iVar6;\n          iVar24 = (int)puVar31 - (uint)(*piVar17 == 0);\n          goto LAB_00022d9c;\n        }\n        uVar18 = (uint)(*piVar17 == 0);\n      }" { (if_statement "if (-1 < (int)puVar8) {\n          do {\n            iVar24 = *piVar32;\n            *piVar32 = iVar24 + 1;\n            piVar32 = piVar32 + 1;\n          } while (iVar24 + 1 == 0);\n          iVar6 = (int)puVar20 - iVar6;\n          iVar24 = (int)puVar31 - (uint)(*piVar17 == 0);\n          goto LAB_00022d9c;\n        }" if (parenthesized_expression "(-1 < (int)puVar8)" ( (binary_expression "-1 < (int)puVar8" number_literal < (cast_expression "(int)puVar8" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n          do {\n            iVar24 = *piVar32;\n            *piVar32 = iVar24 + 1;\n            piVar32 = piVar32 + 1;\n          } while (iVar24 + 1 == 0);\n          iVar6 = (int)puVar20 - iVar6;\n          iVar24 = (int)puVar31 - (uint)(*piVar17 == 0);\n          goto LAB_00022d9c;\n        }" { (do_statement "do {\n            iVar24 = *piVar32;\n            *piVar32 = iVar24 + 1;\n            piVar32 = piVar32 + 1;\n          } while (iVar24 + 1 == 0);" do (compound_statement "{\n            iVar24 = *piVar32;\n            *piVar32 = iVar24 + 1;\n            piVar32 = piVar32 + 1;\n          }" { (expression_statement "iVar24 = *piVar32;" (assignment_expression "iVar24 = *piVar32" identifier = (pointer_expression "*piVar32" * identifier)) ;) (expression_statement "*piVar32 = iVar24 + 1;" (assignment_expression "*piVar32 = iVar24 + 1" (pointer_expression "*piVar32" * identifier) = (binary_expression "iVar24 + 1" identifier + number_literal)) ;) (expression_statement "piVar32 = piVar32 + 1;" (assignment_expression "piVar32 = piVar32 + 1" identifier = (binary_expression "piVar32 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar24 + 1 == 0)" ( (binary_expression "iVar24 + 1 == 0" (binary_expression "iVar24 + 1" identifier + number_literal) == number_literal) )) ;) (expression_statement "iVar6 = (int)puVar20 - iVar6;" (assignment_expression "iVar6 = (int)puVar20 - iVar6" identifier = (binary_expression "(int)puVar20 - iVar6" (cast_expression "(int)puVar20" ( (type_descriptor "int" primitive_type) ) identifier) - identifier)) ;) (expression_statement "iVar24 = (int)puVar31 - (uint)(*piVar17 == 0);" (assignment_expression "iVar24 = (int)puVar31 - (uint)(*piVar17 == 0)" identifier = (binary_expression "(int)puVar31 - (uint)(*piVar17 == 0)" (cast_expression "(int)puVar31" ( (type_descriptor "int" primitive_type) ) identifier) - (call_expression "(uint)(*piVar17 == 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(*piVar17 == 0)" ( (binary_expression "*piVar17 == 0" (pointer_expression "*piVar17" * identifier) == number_literal) ))))) ;) (goto_statement "goto LAB_00022d9c;" goto statement_identifier ;) })) (expression_statement "uVar18 = (uint)(*piVar17 == 0);" (assignment_expression "uVar18 = (uint)(*piVar17 == 0)" identifier = (call_expression "(uint)(*piVar17 == 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(*piVar17 == 0)" ( (binary_expression "*piVar17 == 0" (pointer_expression "*piVar17" * identifier) == number_literal) )))) ;) }))) (expression_statement "iVar24 = uVar18 - (int)puVar31;" (assignment_expression "iVar24 = uVar18 - (int)puVar31" identifier = (binary_expression "uVar18 - (int)puVar31" identifier - (cast_expression "(int)puVar31" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (labeled_statement "LAB_00022d9c:\n      piVar34[1] = iVar24;" statement_identifier : (expression_statement "piVar34[1] = iVar24;" (assignment_expression "piVar34[1] = iVar24" (subscript_expression "piVar34[1]" identifier [ number_literal ]) = identifier) ;)) (return_statement "return iVar6;" return identifier ;) })) (expression_statement "*(int *)(puVar46 + -0x44) = iVar39;" (assignment_expression "*(int *)(puVar46 + -0x44) = iVar39" (pointer_expression "*(int *)(puVar46 + -0x44)" * (cast_expression "(int *)(puVar46 + -0x44)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar46 + -0x44)" ( (binary_expression "puVar46 + -0x44" identifier + number_literal) )))) = identifier) ;) (expression_statement "iVar6 = iVar39 + uVar7;" (assignment_expression "iVar6 = iVar39 + uVar7" identifier = (binary_expression "iVar39 + uVar7" identifier + identifier)) ;) (expression_statement "uVar18 = (**(code **)(*(int *)(puVar46 + -0x34) + (uVar7 - 1) * 4))(iVar39);" (assignment_expression "uVar18 = (**(code **)(*(int *)(puVar46 + -0x34) + (uVar7 - 1) * 4))(iVar39)" identifier = (call_expression "(**(code **)(*(int *)(puVar46 + -0x34) + (uVar7 - 1) * 4))(iVar39)" (parenthesized_expression "(**(code **)(*(int *)(puVar46 + -0x34) + (uVar7 - 1) * 4))" ( (pointer_expression "**(code **)(*(int *)(puVar46 + -0x34) + (uVar7 - 1) * 4)" * (pointer_expression "*(code **)(*(int *)(puVar46 + -0x34) + (uVar7 - 1) * 4)" * (cast_expression "(code **)(*(int *)(puVar46 + -0x34) + (uVar7 - 1) * 4)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)(puVar46 + -0x34) + (uVar7 - 1) * 4)" ( (binary_expression "*(int *)(puVar46 + -0x34) + (uVar7 - 1) * 4" (pointer_expression "*(int *)(puVar46 + -0x34)" * (cast_expression "(int *)(puVar46 + -0x34)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar46 + -0x34)" ( (binary_expression "puVar46 + -0x34" identifier + number_literal) )))) + (binary_expression "(uVar7 - 1) * 4" (parenthesized_expression "(uVar7 - 1)" ( (binary_expression "uVar7 - 1" identifier - number_literal) )) * number_literal)) ))))) )) (argument_list "(iVar39)" ( identifier )))) ;) (expression_statement "puVar43 = *(undefined **)(puVar46 + -0x78);" (assignment_expression "puVar43 = *(undefined **)(puVar46 + -0x78)" identifier = (pointer_expression "*(undefined **)(puVar46 + -0x78)" * (cast_expression "(undefined **)(puVar46 + -0x78)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar46 + -0x78)" ( (binary_expression "puVar46 + -0x78" identifier + number_literal) ))))) ;) (if_statement "if ((uVar18 & 0xff) == 0) {\n      uVar37 = uVar18 >> 8;\n      iVar24 = 6;\n      if ((uVar37 & 0xff) == 0) {\n        uVar37 = uVar18 >> 0x10;\n        iVar24 = 0xe;\n        if ((uVar37 & 0xff) == 0) {\n          uVar37 = uVar18 >> 0x18;\n          iVar24 = 0x1e;\n          if (uVar37 != 0) {\n            iVar24 = 0x16;\n          }\n        }\n      }\n      uVar37 = (uint)*(byte *)(*(int *)(puVar46 + -0x3c) + (-uVar37 & uVar37)) + iVar24;\n    }\n    else {\n      uVar37 = *(byte *)(*(int *)(puVar46 + -0x3c) + (-uVar18 & uVar18)) - 2;\n    }" if (parenthesized_expression "((uVar18 & 0xff) == 0)" ( (binary_expression "(uVar18 & 0xff) == 0" (parenthesized_expression "(uVar18 & 0xff)" ( (binary_expression "uVar18 & 0xff" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n      uVar37 = uVar18 >> 8;\n      iVar24 = 6;\n      if ((uVar37 & 0xff) == 0) {\n        uVar37 = uVar18 >> 0x10;\n        iVar24 = 0xe;\n        if ((uVar37 & 0xff) == 0) {\n          uVar37 = uVar18 >> 0x18;\n          iVar24 = 0x1e;\n          if (uVar37 != 0) {\n            iVar24 = 0x16;\n          }\n        }\n      }\n      uVar37 = (uint)*(byte *)(*(int *)(puVar46 + -0x3c) + (-uVar37 & uVar37)) + iVar24;\n    }" { (expression_statement "uVar37 = uVar18 >> 8;" (assignment_expression "uVar37 = uVar18 >> 8" identifier = (binary_expression "uVar18 >> 8" identifier >> number_literal)) ;) (expression_statement "iVar24 = 6;" (assignment_expression "iVar24 = 6" identifier = number_literal) ;) (if_statement "if ((uVar37 & 0xff) == 0) {\n        uVar37 = uVar18 >> 0x10;\n        iVar24 = 0xe;\n        if ((uVar37 & 0xff) == 0) {\n          uVar37 = uVar18 >> 0x18;\n          iVar24 = 0x1e;\n          if (uVar37 != 0) {\n            iVar24 = 0x16;\n          }\n        }\n      }" if (parenthesized_expression "((uVar37 & 0xff) == 0)" ( (binary_expression "(uVar37 & 0xff) == 0" (parenthesized_expression "(uVar37 & 0xff)" ( (binary_expression "uVar37 & 0xff" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n        uVar37 = uVar18 >> 0x10;\n        iVar24 = 0xe;\n        if ((uVar37 & 0xff) == 0) {\n          uVar37 = uVar18 >> 0x18;\n          iVar24 = 0x1e;\n          if (uVar37 != 0) {\n            iVar24 = 0x16;\n          }\n        }\n      }" { (expression_statement "uVar37 = uVar18 >> 0x10;" (assignment_expression "uVar37 = uVar18 >> 0x10" identifier = (binary_expression "uVar18 >> 0x10" identifier >> number_literal)) ;) (expression_statement "iVar24 = 0xe;" (assignment_expression "iVar24 = 0xe" identifier = number_literal) ;) (if_statement "if ((uVar37 & 0xff) == 0) {\n          uVar37 = uVar18 >> 0x18;\n          iVar24 = 0x1e;\n          if (uVar37 != 0) {\n            iVar24 = 0x16;\n          }\n        }" if (parenthesized_expression "((uVar37 & 0xff) == 0)" ( (binary_expression "(uVar37 & 0xff) == 0" (parenthesized_expression "(uVar37 & 0xff)" ( (binary_expression "uVar37 & 0xff" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n          uVar37 = uVar18 >> 0x18;\n          iVar24 = 0x1e;\n          if (uVar37 != 0) {\n            iVar24 = 0x16;\n          }\n        }" { (expression_statement "uVar37 = uVar18 >> 0x18;" (assignment_expression "uVar37 = uVar18 >> 0x18" identifier = (binary_expression "uVar18 >> 0x18" identifier >> number_literal)) ;) (expression_statement "iVar24 = 0x1e;" (assignment_expression "iVar24 = 0x1e" identifier = number_literal) ;) (if_statement "if (uVar37 != 0) {\n            iVar24 = 0x16;\n          }" if (parenthesized_expression "(uVar37 != 0)" ( (binary_expression "uVar37 != 0" identifier != number_literal) )) (compound_statement "{\n            iVar24 = 0x16;\n          }" { (expression_statement "iVar24 = 0x16;" (assignment_expression "iVar24 = 0x16" identifier = number_literal) ;) })) })) })) (expression_statement "uVar37 = (uint)*(byte *)(*(int *)(puVar46 + -0x3c) + (-uVar37 & uVar37)) + iVar24;" (assignment_expression "uVar37 = (uint)*(byte *)(*(int *)(puVar46 + -0x3c) + (-uVar37 & uVar37)) + iVar24" identifier = (binary_expression "(uint)*(byte *)(*(int *)(puVar46 + -0x3c) + (-uVar37 & uVar37)) + iVar24" (binary_expression "(uint)*(byte *)(*(int *)(puVar46 + -0x3c) + (-uVar37 & uVar37))" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)(*(int *)(puVar46 + -0x3c) + (-uVar37 & uVar37))" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(puVar46 + -0x3c) + (-uVar37 & uVar37))" ( (binary_expression "*(int *)(puVar46 + -0x3c) + (-uVar37 & uVar37)" (pointer_expression "*(int *)(puVar46 + -0x3c)" * (cast_expression "(int *)(puVar46 + -0x3c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar46 + -0x3c)" ( (binary_expression "puVar46 + -0x3c" identifier + number_literal) )))) + (parenthesized_expression "(-uVar37 & uVar37)" ( (binary_expression "-uVar37 & uVar37" (unary_expression "-uVar37" - identifier) & identifier) ))) )))) + identifier)) ;) }) (else_clause "else {\n      uVar37 = *(byte *)(*(int *)(puVar46 + -0x3c) + (-uVar18 & uVar18)) - 2;\n    }" else (compound_statement "{\n      uVar37 = *(byte *)(*(int *)(puVar46 + -0x3c) + (-uVar18 & uVar18)) - 2;\n    }" { (expression_statement "uVar37 = *(byte *)(*(int *)(puVar46 + -0x3c) + (-uVar18 & uVar18)) - 2;" (assignment_expression "uVar37 = *(byte *)(*(int *)(puVar46 + -0x3c) + (-uVar18 & uVar18)) - 2" identifier = (binary_expression "*(byte *)(*(int *)(puVar46 + -0x3c) + (-uVar18 & uVar18)) - 2" (pointer_expression "*(byte *)(*(int *)(puVar46 + -0x3c) + (-uVar18 & uVar18))" * (cast_expression "(byte *)(*(int *)(puVar46 + -0x3c) + (-uVar18 & uVar18))" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(puVar46 + -0x3c) + (-uVar18 & uVar18))" ( (binary_expression "*(int *)(puVar46 + -0x3c) + (-uVar18 & uVar18)" (pointer_expression "*(int *)(puVar46 + -0x3c)" * (cast_expression "(int *)(puVar46 + -0x3c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar46 + -0x3c)" ( (binary_expression "puVar46 + -0x3c" identifier + number_literal) )))) + (parenthesized_expression "(-uVar18 & uVar18)" ( (binary_expression "-uVar18 & uVar18" (unary_expression "-uVar18" - identifier) & identifier) ))) )))) - number_literal)) ;) }))) (expression_statement "iVar39 = *(int *)(puVar46 + -0x38);" (assignment_expression "iVar39 = *(int *)(puVar46 + -0x38)" identifier = (pointer_expression "*(int *)(puVar46 + -0x38)" * (cast_expression "(int *)(puVar46 + -0x38)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar46 + -0x38)" ( (binary_expression "puVar46 + -0x38" identifier + number_literal) ))))) ;) (expression_statement "*puVar36 = uVar18 >> (uVar37 & 0x1f);" (assignment_expression "*puVar36 = uVar18 >> (uVar37 & 0x1f)" (pointer_expression "*puVar36" * identifier) = (binary_expression "uVar18 >> (uVar37 & 0x1f)" identifier >> (parenthesized_expression "(uVar37 & 0x1f)" ( (binary_expression "uVar37 & 0x1f" identifier & number_literal) )))) ;) (expression_statement "iVar24 = *(int *)(puVar46 + -0x60);" (assignment_expression "iVar24 = *(int *)(puVar46 + -0x60)" identifier = (pointer_expression "*(int *)(puVar46 + -0x60)" * (cast_expression "(int *)(puVar46 + -0x60)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar46 + -0x60)" ( (binary_expression "puVar46 + -0x60" identifier + number_literal) ))))) ;) (expression_statement "*(uint *)(puVar46 + -0x40) =\n         *(int *)(puVar46 + -0x40) + *(byte *)(iVar39 + (uVar7 - 1)) + uVar37;" (assignment_expression "*(uint *)(puVar46 + -0x40) =\n         *(int *)(puVar46 + -0x40) + *(byte *)(iVar39 + (uVar7 - 1)) + uVar37" (pointer_expression "*(uint *)(puVar46 + -0x40)" * (cast_expression "(uint *)(puVar46 + -0x40)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar46 + -0x40)" ( (binary_expression "puVar46 + -0x40" identifier + number_literal) )))) = (binary_expression "*(int *)(puVar46 + -0x40) + *(byte *)(iVar39 + (uVar7 - 1)) + uVar37" (binary_expression "*(int *)(puVar46 + -0x40) + *(byte *)(iVar39 + (uVar7 - 1))" (pointer_expression "*(int *)(puVar46 + -0x40)" * (cast_expression "(int *)(puVar46 + -0x40)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar46 + -0x40)" ( (binary_expression "puVar46 + -0x40" identifier + number_literal) )))) + (pointer_expression "*(byte *)(iVar39 + (uVar7 - 1))" * (cast_expression "(byte *)(iVar39 + (uVar7 - 1))" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar39 + (uVar7 - 1))" ( (binary_expression "iVar39 + (uVar7 - 1)" identifier + (parenthesized_expression "(uVar7 - 1)" ( (binary_expression "uVar7 - 1" identifier - number_literal) ))) ))))) + identifier)) ;) (if_statement "if ((uint)(iVar24 - iVar6) <= uVar7) {\n      uVar7 = iVar24 - iVar6;\n    }" if (parenthesized_expression "((uint)(iVar24 - iVar6) <= uVar7)" ( (binary_expression "(uint)(iVar24 - iVar6) <= uVar7" (call_expression "(uint)(iVar24 - iVar6)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(iVar24 - iVar6)" ( (binary_expression "iVar24 - iVar6" identifier - identifier) ))) <= identifier) )) (compound_statement "{\n      uVar7 = iVar24 - iVar6;\n    }" { (expression_statement "uVar7 = iVar24 - iVar6;" (assignment_expression "uVar7 = iVar24 - iVar6" identifier = (binary_expression "iVar24 - iVar6" identifier - identifier)) ;) })) (expression_statement "iVar39 = iVar6;" (assignment_expression "iVar39 = iVar6" identifier = identifier) ;) (if_statement "if (uVar7 != 0) goto LAB_00022234;" if (parenthesized_expression "(uVar7 != 0)" ( (binary_expression "uVar7 != 0" identifier != number_literal) )) (goto_statement "goto LAB_00022234;" goto statement_identifier ;)) (labeled_statement "LAB_00022534:\n    puVar31 = (uint *)0x1;" statement_identifier : (expression_statement "puVar31 = (uint *)0x1;" (assignment_expression "puVar31 = (uint *)0x1" identifier = (cast_expression "(uint *)0x1" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;)) (expression_statement "*(uint **)(puVar46 + -0x4c) = puVar36;" (assignment_expression "*(uint **)(puVar46 + -0x4c) = puVar36" (pointer_expression "*(uint **)(puVar46 + -0x4c)" * (cast_expression "(uint **)(puVar46 + -0x4c)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar46 + -0x4c)" ( (binary_expression "puVar46 + -0x4c" identifier + number_literal) )))) = identifier) ;) }) while (parenthesized_expression "( true )" ( true )) ;)) })))
(translation_unit "void mpz_goetgheluck_bin_uiui(mpz_ptr r,ulong n,ulong k)\n\n{\n  bool bVar1;\n  bool bVar2;\n  mpz_ptr p_Var3;\n  undefined *puVar4;\n  int iVar5;\n  uint uVar6;\n  uint *puVar7;\n  uint *puVar8;\n  undefined4 uVar9;\n  uint uVar10;\n  uint uVar11;\n  uint *puVar12;\n  undefined1 *puVar13;\n  undefined *puVar14;\n  ulong uVar15;\n  mp_limb_t mVar16;\n  tmp_reentrant_t *ptVar17;\n  undefined4 *puVar18;\n  mpz_ptr r_00;\n  int *piVar19;\n  uint uVar20;\n  undefined4 *puVar21;\n  mpz_ptr p_Var22;\n  mpz_ptr p_Var23;\n  uint uVar24;\n  mpz_ptr p_Var25;\n  mp_limb_t *pmVar26;\n  uint uVar27;\n  int iVar28;\n  ulong uVar29;\n  uint uVar30;\n  uint uVar31;\n  int iVar32;\n  mpz_ptr k_00;\n  mpz_ptr p_Var33;\n  mpz_ptr p_Var34;\n  int *piVar35;\n  int iVar36;\n  int *piVar37;\n  uint uVar38;\n  mpz_ptr p_Var39;\n  uint uVar40;\n  mpz_ptr p_Var41;\n  int iVar42;\n  mp_limb_t **ppmVar43;\n  uint uVar44;\n  int iVar45;\n  uint uVar46;\n  undefined *puVar47;\n  code *pcVar48;\n  undefined1 *puVar49;\n  undefined1 *puVar50;\n  undefined1 *puVar51;\n  undefined1 *puVar52;\n  undefined1 *puVar53;\n  undefined1 *puVar54;\n  code *pcVar55;\n  code *pcVar56;\n  uint uVar57;\n  uint uVar58;\n  undefined1 auStack_48 [16];\n  tmp_reentrant_t *__tmp_marker;\n  int local_2c;\n  \n  puVar4 = PTR___stack_chk_guard_0009d540;\n  puVar49 = auStack_48;\n  uVar40 = n - 5 | 1;\n  __tmp_marker = (tmp_reentrant_t *)0x0;\n  local_2c = *(int *)PTR___stack_chk_guard_0009d540;\n  uVar20 = (uVar40 / 0x60 + 1) * 4;\n  if (uVar20 < 0x7f01) {\n    iVar5 = -(uVar20 + 7 & 0xfffffff8);\n    puVar49 = auStack_48 + iVar5;\n    puVar13 = &stack0xffffffc8 + iVar5;\n  }\n  else {\n    puVar13 = (undefined1 *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&__tmp_marker);\n  }\n  iVar5 = (*(code *)PTR___gmp_primesieve_0009d144)(puVar13,n);\n  uVar6 = iVar5 + 1;\n  puVar7 = (uint *)(PTR___gmp_limbroots_table_0009d3d4 + 0x1c);\n  uVar20 = 8;\n  do {\n    uVar27 = uVar20;\n    uVar10 = *puVar7;\n    puVar7 = puVar7 + -1;\n    uVar20 = uVar27 - 1;\n  } while (uVar10 < n);\n  if (uVar27 == 0) {\n    trap(7);\n  }\n  puVar7 = (uint *)(PTR___gmp_limbroots_table_0009d3d4 + 0x1c);\n  uVar20 = 8;\n  if ((uVar6 / uVar27 + 1) * 4 < 0x7f01) {\n    do {\n      uVar27 = uVar20;\n      uVar10 = *puVar7;\n      puVar7 = puVar7 + -1;\n      uVar20 = uVar27 - 1;\n    } while (uVar10 < n);\n    if (uVar27 == 0) {\n      trap(7);\n    }\n    iVar5 = -((uVar6 / uVar27) * 4 + 0xb & 0xfffffff8);\n    puVar50 = puVar49 + iVar5;\n    puVar7 = (uint *)(puVar49 + iVar5 + 0x10);\n  }\n  else {\n    for (puVar14 = PTR___gmp_limbroots_table_0009d3d4 + 0x18; *(uint *)(puVar14 + 4) < n;\n        puVar14 = puVar14 + -4) {\n      uVar20 = uVar20 - 1;\n    }\n    if (uVar20 == 0) {\n      trap(7);\n    }\n    puVar7 = (uint *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)\n                               (&__tmp_marker,(uVar6 / uVar20 + 1) * 4);\n    puVar50 = puVar49;\n  }\n  uVar20 = n - k;\n  if (n == 0) {\n    trap(7);\n  }\n  uVar57 = 0xffffffff / n;\n  uVar44 = n >> 1;\n  uVar10 = uVar20 - (uVar20 >> 1 & 0x55555555);\n  uVar27 = n - (uVar44 & 0x55555555);\n  uVar6 = k - (k >> 1 & 0x55555555);\n  uVar30 = (uVar10 >> 2 & 0x33333333) + (uVar10 & 0x33333333);\n  uVar27 = (uVar27 >> 2 & 0x33333333) + (uVar27 & 0x33333333);\n  uVar10 = (uVar6 >> 2 & 0x33333333) + (uVar6 & 0x33333333);\n  uVar6 = (uVar30 >> 4) + uVar30 & 0xf0f0f0f;\n  uVar27 = (uVar27 >> 4) + uVar27 & 0xf0f0f0f;\n  uVar6 = (uVar6 >> 8) + uVar6;\n  uVar10 = (uVar10 >> 4) + uVar10 & 0xf0f0f0f;\n  uVar27 = (uVar27 >> 8) + uVar27;\n  uVar10 = (uVar10 >> 8) + uVar10;\n  uVar6 = 1 << ((uVar10 >> 0x10) + uVar10 +\n                (((uVar6 >> 0x10) + uVar6 & 0xff) - ((uVar27 >> 0x10) + uVar27 & 0xff)) & 0x1f);\n  bVar1 = uVar57 < uVar6;\n  if (bVar1) {\n    *puVar7 = uVar6;\n    uVar6 = 1;\n  }\n  uVar10 = 0;\n  uVar15 = n;\n  uVar29 = k;\n  do {\n    bVar2 = uVar15 % 3 < uVar29 % 3 + uVar10;\n    if (bVar2) {\n      uVar6 = uVar6 * 3;\n    }\n    uVar10 = (uint)bVar2;\n    bVar2 = 8 < uVar15;\n    uVar15 = uVar15 / 3;\n    uVar29 = uVar29 / 3;\n  } while (bVar2);\n  uVar10 = n - 1;\n  if (uVar10 < 0x10000) {\n    iVar5 = 0x18;\n    if (uVar10 < 0x100) {\n      iVar5 = 0x20;\n    }\n    iVar28 = 9;\n    if (uVar10 < 0x100) {\n      iVar28 = 1;\n    }\n  }\n  else {\n    iVar5 = 8;\n    if (uVar10 < 0x1000000) {\n      iVar5 = 0x10;\n    }\n    iVar28 = 0x19;\n    if (uVar10 < 0x1000000) {\n      iVar28 = 0x11;\n    }\n  }\n  iVar32 = 0;\n  uVar31 = 1;\n  uVar46 = (((1 << ((int)(0x1f - (iVar5 - (uint)(byte)PTR___gmpn_clz_tab_0009d18c[uVar10 >> iVar28])\n                         ) >> 1 & 0x1fU)) +\n            (1 << ((int)(0x1e - (iVar5 - (uint)(byte)PTR___gmpn_clz_tab_0009d18c[uVar10 >> iVar28]))\n                   >> 1 & 0x1fU))) - 5U | 1) / 3;\n  uVar30 = uVar46 + 1;\n  uVar10 = (uint)bVar1;\n  uVar27 = 0;\n  do {\n    uVar38 = uVar27 + 1;\n    uVar24 = uVar10;\n    if ((uVar31 & *(uint *)(puVar13 + iVar32 * 4)) == 0) {\n      uVar11 = (uVar38 & 1) + 1 + uVar38 * 3;\n      if (uVar57 < uVar6) {\n        uVar24 = uVar10 + 1;\n        puVar7[uVar10] = uVar6;\n        uVar6 = 1;\n      }\n      uVar10 = 0;\n      uVar15 = k;\n      uVar29 = n;\n      do {\n        if (uVar11 == 0) {\n          trap(7);\n        }\n        if (uVar11 == 0) {\n          trap(7);\n        }\n        uVar58 = uVar29 / uVar11;\n        bVar1 = uVar29 % uVar11 < uVar15 % uVar11 + uVar10;\n        if (bVar1) {\n          uVar6 = uVar6 * uVar11;\n        }\n        uVar10 = (uint)bVar1;\n        uVar15 = uVar15 / uVar11;\n        uVar29 = uVar58;\n      } while (uVar11 <= uVar58);\n    }\n    uVar31 = uVar31 * 2 - ((int)uVar31 >> 0x1f);\n    bVar1 = uVar27 != uVar46;\n    iVar32 = iVar32 + (uVar31 & 1);\n    uVar10 = uVar24;\n    uVar27 = uVar38;\n  } while (bVar1);\n  uVar27 = uVar30 >> 5;\n  uVar10 = 1 << (uVar30 & 0x1f);\n  uVar31 = (uVar44 - 5 | 1) / 3;\n  do {\n    while( true ) {\n      uVar30 = uVar30 + 1;\n      uVar46 = uVar24;\n      if ((uVar10 & *(uint *)(puVar13 + uVar27 * 4)) == 0) break;\nLAB_00021e80:\n      uVar10 = uVar10 * 2 - ((int)uVar10 >> 0x1f);\n      uVar27 = uVar27 + (uVar10 & 1);\n      uVar24 = uVar46;\n      if (uVar31 < uVar30) goto LAB_00021f04;\n    }\n    uVar11 = (uVar30 & 1) + 1 + uVar30 * 3;\n    if (uVar11 == 0) {\n      trap(7);\n    }\n    if (uVar11 == 0) {\n      trap(7);\n    }\n    if (k % uVar11 <= n % uVar11) goto LAB_00021e80;\n    if (uVar57 << 1 < uVar6) {\n      uVar46 = uVar24 + 1;\n      puVar7[uVar24] = uVar6;\n      uVar6 = uVar11;\n      goto LAB_00021e80;\n    }\n    uVar10 = uVar10 * 2 - ((int)uVar10 >> 0x1f);\n    uVar6 = uVar6 * uVar11;\n    uVar27 = uVar27 + (uVar10 & 1);\n  } while (uVar30 <= uVar31);\nLAB_00021f04:\n  uVar20 = (uVar20 - 5 | 1) / 3 + 1;\n  uVar27 = uVar20 >> 5;\n  uVar40 = uVar40 / 3;\n  uVar10 = 1 << (uVar20 & 0x1f);\n  do {\n    while( true ) {\n      uVar20 = uVar20 + 1;\n      uVar30 = uVar46;\n      if ((uVar10 & *(uint *)(puVar13 + uVar27 * 4)) == 0) break;\nLAB_00021f58:\n      uVar10 = uVar10 * 2 - ((int)uVar10 >> 0x1f);\n      uVar27 = uVar27 + (uVar10 & 1);\n      uVar46 = uVar30;\n      if (uVar40 < uVar20) goto LAB_00021fb8;\n    }\n    mVar16 = (uVar20 & 1) + 1 + uVar20 * 3;\n    if ((uVar57 & 0x7fffffff) < uVar6) {\n      uVar30 = uVar46 + 1;\n      puVar7[uVar46] = uVar6;\n      uVar6 = mVar16;\n      goto LAB_00021f58;\n    }\n    uVar10 = uVar10 * 2 - ((int)uVar10 >> 0x1f);\n    uVar6 = uVar6 * mVar16;\n    uVar27 = uVar27 + (uVar10 & 1);\n  } while (uVar20 <= uVar40);\nLAB_00021fb8:\n  if (uVar30 == 0) {\n    *r->_mp_d = uVar6;\n    r->_mp_size = 1;\n    uVar20 = 0;\n    ptVar17 = __tmp_marker;\n  }\n  else {\n    uVar20 = uVar30 + 1;\n    puVar7[uVar30] = uVar6;\n    (*(code *)PTR___gmpz_prodlimbs_0009d284)(r);\n    ptVar17 = __tmp_marker;\n  }\n  __tmp_marker = ptVar17;\n  if (ptVar17 != (tmp_reentrant_t *)0x0) {\n    (*(code *)PTR___gmp_tmp_reentrant_free_0009d618)();\n  }\n  if (local_2c == *(int *)puVar4) {\n    return;\n  }\n  pcVar55 = mpz_bdiv_bin_uiui;\n  puVar14 = PTR___stack_chk_fail_0009d4d0;\n  (*(code *)PTR___stack_chk_fail_0009d4d0)();\n  puVar47 = puVar14 + 0x82fa4;\n  puVar51 = puVar50 + -0x90;\n  puVar54 = puVar50 + -0x90;\n  puVar53 = puVar50 + -0x90;\n  *(mpz_ptr *)(puVar50 + -0x24) = r;\n  *(undefined1 **)(puVar50 + -8) = auStack_48;\n  puVar21 = *(undefined4 **)(puVar14 + 0x7b4a4);\n  *(code **)(puVar50 + -4) = pcVar55;\n  *(tmp_reentrant_t **)(puVar50 + -0x6c) = ptVar17;\n  *(uint *)(puVar50 + -0xc) = uVar44;\n  *(ulong *)(puVar50 + -0x10) = k;\n  *(uint *)(puVar50 + -0x14) = uVar40;\n  uVar40 = (((uint)puVar7 >> 5) + 1) * 3;\n  *(uint *)(puVar50 + -0x18) = uVar38;\n  *(undefined1 **)(puVar50 + -0x1c) = puVar13;\n  *(ulong *)(puVar50 + -0x20) = n;\n  *(undefined **)(puVar50 + -0x28) = puVar4;\n  *(undefined **)(puVar50 + -0x78) = puVar47;\n  *(undefined4 **)(puVar50 + -0x70) = puVar21;\n  *(undefined4 *)(puVar50 + -0x30) = 0;\n  *(undefined4 *)(puVar50 + -0x2c) = *puVar21;\n  if (uVar40 < 0x2a) {\n    uVar40 = 0x27;\n    if (uVar20 < 0x28) {\n      uVar40 = uVar20;\n    }\n    uVar40 = (uVar40 + 1) * 4;\n  }\n  else {\n    uVar40 = ((int)uVar40 >> 1) + 0x13;\n    if (uVar20 < uVar40) {\n      uVar40 = uVar20;\n    }\n    uVar40 = (uVar40 + 1) * 4;\n    pcVar55 = *(code **)(puVar14 + 0x7b254);\n    if (0x7f00 < uVar40) {\n      *(uint *)(puVar50 + 8) = uVar20;\n      p_Var41 = (mpz_ptr)(*pcVar55)(puVar50 + -0x30);\n      puVar47 = *(undefined **)(puVar50 + -0x78);\n      uVar20 = *(uint *)(puVar50 + 8);\n      goto LAB_0002214c;\n    }\n  }\n  iVar5 = -(uVar40 + 7 & 0xfffffff8);\n  puVar51 = puVar50 + iVar5 + -0x90;\n  p_Var41 = (mpz_ptr)(puVar50 + iVar5 + -0x78);\nLAB_0002214c:\n  iVar28 = *(int *)(puVar47 + -0x7c6c);\n  p_Var39 = (mpz_ptr)(puVar51 + -0x40);\n  puVar12 = (uint *)(iVar28 + 0x1c);\n  iVar5 = 8;\n  do {\n    iVar32 = iVar5;\n    puVar8 = (uint *)*puVar12;\n    puVar12 = puVar12 + -1;\n    iVar5 = iVar32 + -1;\n  } while (puVar8 < puVar7);\n  *(int *)(puVar50 + -0x68) = iVar32;\n  puVar12 = (uint *)(iVar28 + 0x1c);\n  uVar40 = 8;\n  do {\n    uVar6 = uVar40;\n    uVar10 = *puVar12;\n    puVar12 = puVar12 + -1;\n    uVar40 = uVar6 - 1;\n  } while (uVar10 < uVar20);\n  uVar9 = *(undefined4 *)(puVar47 + -0x7d3c);\n  iVar5 = 0x11;\n  *(undefined4 *)(puVar50 + -0x48) = 0;\n  *(undefined4 *)(puVar50 + -100) = uVar9;\n  iVar28 = *(int *)(puVar47 + -0x7e20);\n  *(undefined4 *)(puVar50 + -0x5c) = 0x3fffffff;\n  iVar32 = (int)puVar7 + (1 - uVar20);\n  *(uint *)(puVar50 + -0x40) = (uint)*(byte *)(iVar28 + 7);\n  *(undefined4 *)(puVar50 + -0x3c) = *(undefined4 *)(puVar47 + -0x7eb4);\n  *(uint *)(puVar50 + -0x60) = uVar20 + 1;\n  iVar28 = *(int *)(puVar50 + -0x60);\n  p_Var41->_mp_alloc = 1;\n  *(undefined4 *)(puVar50 + -0x44) = 1;\n  *(int *)(puVar50 + -0x34) = *(int *)(puVar47 + -0x7fe4) + -0x31a4;\n  *(int *)(puVar50 + -0x38) = *(int *)(puVar47 + -0x7fd4) + 0x3630;\n  p_Var39->_mp_alloc = 0x260eeeeb;\n  if (iVar28 - 0x11U <= uVar6) {\n    uVar6 = iVar28 - 0x11U;\n  }\n  p_Var33 = (mpz_ptr)&DAT_00000001;\n  iVar42 = iVar5;\n  if (uVar6 == 0) goto LAB_00022534;\nLAB_00022234:\n  p_Var34 = (mpz_ptr)&DAT_00000001;\n  iVar45 = *(int *)(puVar50 + -0x40);\n  *(mpz_ptr *)(puVar50 + -0x4c) = p_Var33;\n  *(mpz_ptr *)(puVar50 + -0x50) = p_Var41;\n  do {\n    iVar42 = iVar5 + uVar6;\n    uVar20 = (**(code **)(*(int *)(puVar50 + -0x34) + (uVar6 - 1) * 4))(iVar5);\n    if ((uVar20 & 0xff) == 0) {\n      uVar40 = uVar20 >> 8;\n      iVar5 = 6;\n      if ((uVar40 & 0xff) == 0) {\n        uVar40 = uVar20 >> 0x10;\n        iVar5 = 0xe;\n        if ((uVar40 & 0xff) == 0) {\n          uVar40 = uVar20 >> 0x18;\n          iVar5 = 0x1e;\n          if (uVar40 != 0) {\n            iVar5 = 0x16;\n          }\n        }\n      }\n      uVar40 = (uint)*(byte *)(*(int *)(puVar50 + -0x3c) + (-uVar40 & uVar40)) + iVar5;\n    }\n    else {\n      uVar40 = *(byte *)(*(int *)(puVar50 + -0x3c) + (-uVar20 & uVar20)) - 2;\n    }\n    iVar45 = iVar45 + *(byte *)(*(int *)(puVar50 + -0x38) + (uVar6 - 1)) + uVar40;\n    iVar5 = (**(code **)(*(int *)(puVar50 + -0x78) + -0x7f9c))\n                      (p_Var39,p_Var39,p_Var34,uVar20 >> (uVar40 & 0x1f));\n    puVar47 = *(undefined **)(puVar50 + -0x78);\n    if ((uint)(iVar28 - iVar42) <= uVar6) {\n      uVar6 = iVar28 - iVar42;\n    }\n    piVar35 = &p_Var39->_mp_alloc + (int)p_Var34;\n    p_Var34 = (mpz_ptr)((int)&p_Var34->_mp_alloc + (uint)(iVar5 != 0));\n    *piVar35 = iVar5;\n    if (uVar6 == 0) {\n      p_Var41 = *(mpz_ptr *)(puVar50 + -0x50);\n      p_Var33 = *(mpz_ptr *)(puVar50 + -0x4c);\n      *(int *)(puVar50 + -0x40) = iVar45;\n      *(int **)(puVar50 + -0x4c) =\n           &p_Var39->_mp_alloc + (int)((int)&p_Var34->_mp_alloc + *(int *)(puVar50 + -0x5c));\n      goto LAB_00022340;\n    }\n    iVar5 = iVar42;\n  } while (p_Var34 != (mpz_ptr)0x14);\n  p_Var33 = *(mpz_ptr *)(puVar50 + -0x4c);\n  p_Var41 = *(mpz_ptr *)(puVar50 + -0x50);\n  *(int *)(puVar50 + -0x40) = iVar45;\n  *(int **)(puVar50 + -0x4c) = &p_Var39[6]._mp_size;\nLAB_00022340:\n  do {\n    iVar45 = iVar42 - *(int *)(puVar50 + -0x44);\n    iVar28 = *(int *)(puVar50 + -0x5c);\n    iVar5 = iVar45;\n    if (iVar45 != 0) {\n      *(uint *)(puVar50 + -0x44) = uVar6;\n      *(mpz_ptr *)(puVar50 + -0x50) = p_Var34;\n      *(mpz_ptr *)(puVar50 + -0x54) = p_Var39;\n      *(int *)(puVar50 + -0x58) = iVar42;\n      iVar5 = *(int *)(puVar50 + -0x48);\n      iVar42 = *(int *)(puVar50 + -0x68);\n      iVar28 = iVar32;\n      do {\n        iVar36 = iVar45;\n        if (iVar42 <= iVar45) {\n          iVar36 = iVar42;\n        }\n        iVar32 = iVar28 + iVar36;\n        uVar20 = (**(code **)(*(int *)(puVar50 + -0x34) + (iVar36 + -1) * 4))(iVar28);\n        if ((uVar20 & 0xff) == 0) {\n          uVar40 = uVar20 >> 8;\n          iVar28 = 6;\n          if ((uVar40 & 0xff) == 0) {\n            uVar40 = uVar20 >> 0x10;\n            iVar28 = 0xe;\n            if ((uVar40 & 0xff) == 0) {\n              uVar40 = uVar20 >> 0x18;\n              iVar28 = 0x16;\n              if (uVar40 == 0) {\n                iVar28 = 0x1e;\n              }\n            }\n          }\n          uVar40 = (uint)*(byte *)(*(int *)(puVar50 + -0x3c) + (-uVar40 & uVar40)) + iVar28;\n        }\n        else {\n          uVar40 = *(byte *)(*(int *)(puVar50 + -0x3c) + (-uVar20 & uVar20)) - 2;\n        }\n        iVar45 = iVar45 - iVar36;\n        iVar5 = iVar5 + *(byte *)(*(int *)(puVar50 + -0x38) + iVar36 + -1) + uVar40;\n        iVar28 = (**(code **)(*(int *)(puVar50 + -0x78) + -0x7f9c))\n                           (p_Var41,p_Var41,p_Var33,uVar20 >> (uVar40 & 0x1f));\n        puVar47 = *(undefined **)(puVar50 + -0x78);\n        piVar35 = &p_Var41->_mp_alloc + (int)p_Var33;\n        p_Var33 = (mpz_ptr)((int)&p_Var33->_mp_alloc + (uint)(iVar28 != 0));\n        *piVar35 = iVar28;\n        iVar28 = iVar32;\n      } while (iVar45 != 0);\n      uVar6 = *(uint *)(puVar50 + -0x44);\n      p_Var34 = *(mpz_ptr *)(puVar50 + -0x50);\n      p_Var39 = *(mpz_ptr *)(puVar50 + -0x54);\n      iVar42 = *(int *)(puVar50 + -0x58);\n      *(int *)(puVar50 + -0x48) = iVar5;\n      iVar28 = *(int *)(puVar50 + -0x5c);\n    }\n    iVar45 = p_Var39->_mp_alloc;\n    pcVar55 = *(code **)(puVar47 + -0x7bc0);\n    uVar20 = (uint)*(byte *)(*(int *)(puVar50 + -100) + ((uint)(iVar45 << 0x18) >> 0x19));\n    p_Var33 = (mpz_ptr)((int)p_Var33 +\n                       (((uint)(&p_Var41->_mp_alloc)[(int)((int)&p_Var33->_mp_alloc + iVar28)] <\n                         **(uint **)(puVar50 + -0x4c) ^ 1) - (int)p_Var34));\n    iVar28 = uVar20 * 2 - uVar20 * uVar20 * iVar45;\n    if ((int)p_Var33 < (int)p_Var34) {\n      p_Var34 = p_Var33;\n    }\n    *(mpz_ptr *)(puVar51 + -0x48) = p_Var34;\n    *(int *)(puVar51 + -0x44) = iVar28 * iVar28 * iVar45 + iVar28 * -2;\n    p_Var22 = p_Var41;\n    p_Var25 = p_Var33;\n    (*pcVar55)(p_Var41,p_Var41,p_Var33,p_Var39);\n    iVar28 = *(int *)(puVar50 + -0x78);\n    if (uVar6 == 0) {\n      if (*(int *)(puVar50 + -0x48) == *(int *)(puVar50 + -0x40)) {\n        p_Var33 = (mpz_ptr)((int)p_Var33 -\n                           (uint)(*(int *)((int)p_Var41 + (int)p_Var33 * 4 + -4) == 0));\n        pcVar55 = *(code **)(iVar28 + -0x7a80);\n        if ((int)p_Var33 <= **(int **)(puVar50 + -0x6c)) goto LAB_00022600;\nLAB_00022734:\n        p_Var22 = p_Var33;\n        puVar21 = (undefined4 *)(*pcVar55)(*(undefined4 *)(puVar50 + -0x6c));\n        iVar28 = *(int *)(puVar50 + -0x78);\n      }\n      else {\n        p_Var22 = p_Var41;\n        p_Var25 = p_Var33;\n        iVar45 = (**(code **)(iVar28 + -0x7ad4))(p_Var41);\n        iVar28 = *(int *)(puVar50 + -0x78);\n        puVar13 = (undefined1 *)((int)&p_Var33->_mp_alloc + (uint)(iVar45 != 0));\n        *(int *)((int)p_Var41 + (int)p_Var33 * 4) = iVar45;\n        p_Var33 = (mpz_ptr)(puVar13 + -(uint)(*(int *)((int)p_Var41 + (int)puVar13 * 4 + -4) == 0));\n        pcVar55 = *(code **)(iVar28 + -0x7a80);\n        if (**(int **)(puVar50 + -0x6c) < (int)p_Var33) goto LAB_00022734;\nLAB_00022600:\n        puVar21 = *(undefined4 **)(*(int *)(puVar50 + -0x6c) + 8);\n      }\n      *(mpz_ptr *)(*(int *)(puVar50 + -0x6c) + 4) = p_Var33;\n      if (p_Var33 != (mpz_ptr)0x0) {\n        puVar13 = (undefined1 *)((int)&p_Var33[-1]._mp_d + 3);\n        p_Var22 = (mpz_ptr)p_Var41->_mp_alloc;\n        if (puVar13 != (undefined1 *)0x0) {\n          puVar18 = puVar21;\n          ppmVar43 = (mp_limb_t **)&p_Var41->_mp_size;\n          do {\n            *puVar18 = p_Var22;\n            p_Var41 = (mpz_ptr)(ppmVar43 + 1);\n            puVar13 = puVar13 + -1;\n            p_Var22 = (mpz_ptr)*ppmVar43;\n            puVar18 = puVar18 + 1;\n            ppmVar43 = (mp_limb_t **)p_Var41;\n          } while (puVar13 != (undefined1 *)0x0);\n          p_Var33 = (mpz_ptr)((int)p_Var33 * 4);\n          puVar21 = (undefined4 *)((int)puVar21 + (int)&p_Var33[-1]._mp_d);\n        }\n        *puVar21 = p_Var22;\n      }\n      r_00 = *(mpz_ptr *)(puVar50 + -0x30);\n      if (r_00 != (mpz_ptr)0x0) {\n        (**(code **)(iVar28 + -0x7a28))();\n        iVar28 = *(int *)(puVar50 + -0x78);\n      }\n      if (*(int *)(puVar50 + -0x2c) == **(int **)(puVar50 + -0x70)) {\n        return;\n      }\n      pcVar55 = *(code **)(iVar28 + -0x7b70);\n      pcVar56 = __gmpz_bin_uiui;\n      (*pcVar55)();\n      pcVar48 = pcVar55 + 0x8289c;\n      *(mpz_ptr *)(puVar51 + -0x78) = p_Var34;\n      piVar35 = *(int **)(pcVar55 + 0x7ad9c);\n      *(code **)(puVar51 + -0xf0) = pcVar48;\n      *(int *)(puVar51 + -0x74) = iVar42;\n      *(code **)(puVar51 + -0x5c) = pcVar56;\n      *(undefined1 **)(puVar51 + -0x60) = puVar50 + -0x90;\n      *(int *)(puVar51 + -100) = iVar5;\n      *(int *)(puVar51 + -0x68) = iVar32;\n      *(mpz_ptr *)(puVar51 + -0x6c) = p_Var41;\n      *(mpz_ptr *)(puVar51 + -0x70) = p_Var39;\n      *(mpz_ptr *)(puVar51 + -0x7c) = p_Var33;\n      *(undefined4 *)(puVar51 + -0x80) = 0;\n      *(int *)(puVar51 + -0x84) = *piVar35;\n      p_Var34 = r_00;\n      p_Var23 = p_Var22;\n      if (p_Var22 < p_Var25) {\n        r_00->_mp_size = 0;\n        k_00 = (mpz_ptr)0x0;\n      }\n      else {\n        k_00 = p_Var25;\n        if ((mpz_ptr)((int)p_Var22 - (int)p_Var25) <= p_Var25) {\n          k_00 = (mpz_ptr)((int)p_Var22 - (int)p_Var25);\n        }\n        p_Var25 = k_00;\n        p_Var39 = p_Var22;\n        if (k_00 < (mpz_ptr)0x2) {\n          if (k_00 == (mpz_ptr)0x0) {\n            p_Var39 = (mpz_ptr)&DAT_00000001;\n          }\n          *r_00->_mp_d = (mp_limb_t)p_Var39;\n          r_00->_mp_size = 1;\n          puVar53 = puVar50 + -0x90;\n        }\n        else if (p_Var22 < (mpz_ptr)0x23) {\n          p_Var3 = k_00 + -1;\n          iVar5 = *(int *)(pcVar55 + 0x7aa7c);\n          p_Var23 = (mpz_ptr)r_00->_mp_d;\n          uVar20 = (int)p_Var22 - (int)k_00;\n          p_Var39 = (mpz_ptr)(iVar5 + ((uint)p_Var22 >> 1));\n          k_00 = (mpz_ptr)(iVar5 + ((uint)k_00 >> 1));\n          p_Var25 = (mpz_ptr)(uint)*(byte *)((int)&k_00[-1]._mp_d + 3);\n          p_Var34 = (mpz_ptr)(uint)*(byte *)(iVar5 + (uVar20 >> 1) + -1);\n          p_Var23->_mp_alloc =\n               *(int *)((int)((int)&p_Var3->_mp_d + 2) * 4 + *(int *)(pcVar55 + 0x7a8c8) + 0x35b4) *\n               *(int *)(*(int *)(pcVar55 + 0x7ad64) + (int)p_Var22 * 4) *\n               *(int *)((uVar20 - 2) * 4 + *(int *)(pcVar55 + 0x7a8c8) + 0x35b4) <<\n               (((uint)*(byte *)((int)&p_Var39[-1]._mp_d + 3) - (int)p_Var25) - (int)p_Var34 & 0x1f)\n          ;\n          r_00->_mp_size = 1;\n          puVar53 = puVar50 + -0x90;\n        }\n        else if (k_00 < (mpz_ptr)&DAT_00000011) {\n          mpz_smallk_bin_uiui(r_00,(ulong)p_Var22,(ulong)k_00);\n          pcVar48 = *(code **)(puVar51 + -0xf0);\n          puVar53 = puVar50 + -0x90;\n        }\n        else if (k_00 < (mpz_ptr)&DAT_00000021) {\n          uVar20 = (uint)k_00 >> 1;\n          uVar40 = (int)p_Var22 - uVar20;\n          mpz_smallk_bin_uiui(r_00,(ulong)p_Var22,uVar20);\n          iVar5 = *(int *)(puVar51 + -0xf0);\n          uVar6 = (int)k_00 - uVar20;\n          if (uVar40 < 0x23) {\n            puVar54 = (undefined1 *)r_00->_mp_size;\n            if ((int)puVar54 < r_00->_mp_alloc) {\n              p_Var33 = (mpz_ptr)r_00->_mp_d;\n            }\n            else {\n              p_Var33 = (mpz_ptr)(**(code **)(iVar5 + -0x7a80))(r_00,puVar54 + 1);\n              iVar5 = *(int *)(puVar51 + -0xf0);\n            }\n            iVar32 = *(int *)(iVar5 + -0x7e20);\n            iVar28 = *(int *)(iVar5 + -0x7fd4) + 0x35b4;\n            iVar28 = (**(code **)(iVar5 + -0x7f9c))\n                               (p_Var33,p_Var33,puVar54,\n                                *(int *)((((int)p_Var22 - (int)k_00) - 2U) * 4 + iVar28) *\n                                *(int *)(*(int *)(iVar5 + -0x7b38) + uVar40 * 4) *\n                                *(int *)((uVar6 - 2) * 4 + iVar28) <<\n                                (((uint)*(byte *)(iVar32 + (uVar40 >> 1) + -1) -\n                                 (uint)*(byte *)(iVar32 + (uVar6 >> 1) + -1)) -\n                                 (uint)*(byte *)(iVar32 + ((uint)((int)p_Var22 - (int)k_00) >> 1) +\n                                                -1) & 0x1f));\n            iVar5 = *(int *)(puVar51 + -0xf0);\n            k_00 = (mpz_ptr)(puVar54 + (iVar28 != 0));\n            (&p_Var33->_mp_alloc)[(int)puVar54] = iVar28;\n          }\n          else {\n            *(undefined4 *)(puVar51 + -0xe4) = 0x15;\n            *(undefined1 **)(puVar51 + -0xdc) = puVar51 + -0xd8;\n            mpz_smallk_bin_uiui((mpz_ptr)(puVar51 + -0xe4),uVar40,uVar6);\n            (**(code **)(*(int *)(puVar51 + -0xf0) + -0x7ba8))(r_00,r_00,(mpz_ptr)(puVar51 + -0xe4))\n            ;\n            iVar5 = *(int *)(puVar51 + -0xf0);\n            p_Var33 = (mpz_ptr)r_00->_mp_d;\n            k_00 = (mpz_ptr)r_00->_mp_size;\n          }\n          pcVar55 = *(code **)(iVar5 + -0x7bb4);\n          p_Var41 = (mpz_ptr)((uint)*(byte *)((uVar6 - 8) + *(int *)(iVar5 + -0x7fd4) + 0x3550) -\n                             (uint)(uVar20 != uVar6));\n          *(undefined4 *)(puVar51 + -0xf8) =\n               *(undefined4 *)((uVar6 - 8) * 4 + *(int *)(iVar5 + -0x7fd4) + 0x355c);\n          *(mpz_ptr *)(puVar51 + -0xf4) = p_Var41;\n          p_Var34 = p_Var33;\n          p_Var23 = p_Var33;\n          p_Var25 = k_00;\n          (*pcVar55)();\n          pcVar48 = *(code **)(puVar51 + -0xf0);\n          if (*(int *)((int)p_Var33 + (int)k_00 * 4 + -4) == 0) {\n            piVar37 = &p_Var33->_mp_alloc + (int)k_00;\n            do {\n              piVar19 = piVar37 + -2;\n              k_00 = (mpz_ptr)((int)&k_00[-1]._mp_d + 3);\n              piVar37 = piVar37 + -1;\n            } while (*piVar19 == 0);\n          }\n          r_00->_mp_size = (int)k_00;\n          puVar53 = puVar54;\n        }\n        else if ((k_00 < (mpz_ptr)0x3e8) || (k_00 <= (mpz_ptr)((uint)p_Var22 >> 4))) {\n          mpz_bdiv_bin_uiui(r_00,(ulong)p_Var22,(ulong)k_00);\n          pcVar48 = *(code **)(puVar51 + -0xf0);\n          puVar53 = puVar50 + -0x90;\n        }\n        else {\n          mpz_goetgheluck_bin_uiui(r_00,(ulong)p_Var22,(ulong)k_00);\n          pcVar48 = *(code **)(puVar51 + -0xf0);\n          puVar53 = puVar50 + -0x90;\n        }\n      }\n      if (*(int *)(puVar51 + -0x84) == *piVar35) {\n        return;\n      }\n      pcVar55 = *(code **)(pcVar48 + -0x7b70);\n      uVar9 = 0x22b64;\n      (*pcVar55)();\n      pcVar48 = pcVar55 + 0x824d0;\n      puVar52 = puVar51 + -0x160;\n      *(mpz_ptr *)(puVar51 + -0x118) = r_00;\n      *(mpz_ptr *)(puVar51 + -0x124) = k_00;\n      piVar37 = *(int **)(pcVar55 + 0x7a9d0);\n      uVar20 = p_Var25->_mp_size;\n      *(undefined1 **)(puVar51 + -0x110) = puVar53;\n      *(mpz_ptr *)(puVar51 + -0x114) = p_Var39;\n      *(int **)(puVar51 + -0x11c) = piVar35;\n      *(mpz_ptr *)(puVar51 + -0x120) = p_Var33;\n      *(undefined4 *)(puVar51 + -0x10c) = uVar9;\n      *(code **)(puVar51 + -0x150) = pcVar48;\n      *(undefined4 *)(puVar51 + -0x13c) = 0;\n      p_Var39 = (mpz_ptr)p_Var23->_mp_size;\n      *(int *)(puVar51 + -300) = *piVar37;\n      if ((int)uVar20 < 0) {\n        uVar40 = uVar20 * -4;\n        *(uint *)(puVar51 + -0x138) = -uVar20;\n        if (0x7f00 < uVar40) {\n          pcVar55 = *(code **)(pcVar55 + 0x7a780);\n          goto LAB_00022c88;\n        }\nLAB_00022be4:\n        iVar5 = -(uVar40 + 7 & 0xfffffff8);\n        puVar52 = puVar51 + iVar5 + -0x160;\n        puVar13 = puVar51 + iVar5 + -0x150;\n      }\n      else {\n        uVar40 = uVar20 * 4;\n        *(uint *)(puVar51 + -0x138) = uVar20;\n        pcVar55 = *(code **)(pcVar55 + 0x7a780);\n        if (uVar40 < 0x7f01) goto LAB_00022be4;\nLAB_00022c88:\n        *(mpz_ptr *)(puVar51 + -0x144) = p_Var25;\n        puVar13 = (undefined1 *)(*pcVar55)(puVar51 + -0x13c,uVar40);\n        pcVar48 = *(code **)(puVar51 + -0x150);\n        p_Var25 = *(mpz_ptr *)(puVar51 + -0x144);\n      }\n      pcVar55 = *(code **)(pcVar48 + -0x7a68);\n      p_Var33 = (mpz_ptr)(puVar51 + -0x138);\n      *(undefined1 **)(puVar51 + -0x130) = puVar13;\n      p_Var22 = p_Var23;\n      (*pcVar55)(p_Var34,p_Var33,p_Var23,p_Var25);\n      iVar5 = *(int *)(puVar51 + -0x150);\n      if (((int)((uint)p_Var39 ^ uVar20) < 0) || (*(int *)(puVar51 + -0x134) == 0)) {\n        piVar35 = *(int **)(puVar51 + -0x13c);\n        pcVar55 = *(code **)(iVar5 + -0x7a28);\n        if (piVar35 != (int *)0x0) goto LAB_00022cc0;\n      }\n      else {\n        p_Var22 = (mpz_ptr)&DAT_00000001;\n        p_Var33 = p_Var34;\n        (**(code **)(iVar5 + -0x7c9c))(p_Var34);\n        piVar35 = *(int **)(puVar51 + -0x13c);\n        iVar5 = *(int *)(puVar51 + -0x150);\n        if (piVar35 != (int *)0x0) {\n          pcVar55 = *(code **)(iVar5 + -0x7a28);\nLAB_00022cc0:\n          (*pcVar55)();\n          iVar5 = *(int *)(puVar51 + -0x150);\n        }\n      }\n      if (*(int *)(puVar51 + -300) == *piVar37) {\n        return;\n      }\n      pcVar55 = *(code **)(iVar5 + -0x7b70);\n      uVar9 = 0x22cdc;\n      (*pcVar55)();\n      pcVar48 = pcVar55 + 0x82360;\n      *(code **)(puVar52 + -0x28) = pcVar48;\n      *(undefined4 *)(puVar52 + -4) = uVar9;\n      *(mpz_ptr *)(puVar52 + -8) = p_Var41;\n      *(mpz_ptr *)(puVar52 + -0xc) = p_Var23;\n      *(int **)(puVar52 + -0x10) = piVar37;\n      *(mpz_ptr *)(puVar52 + -0x14) = p_Var34;\n      *(mpz_ptr *)(puVar52 + -0x18) = p_Var39;\n      *(uint *)(puVar52 + -0x1c) = (uint)p_Var39 ^ uVar20;\n      if (p_Var22 == (mpz_ptr)0x0) {\n        pcVar55 = *(code **)(pcVar55 + 0x7a900);\n        (*pcVar55)();\nLAB_00022e2c:\n        piVar35 = (int *)(*pcVar55)(piVar37,p_Var34);\n        pcVar48 = *(code **)(puVar52 + -0x28);\n      }\n      else {\n        p_Var39 = (mpz_ptr)p_Var33->_mp_size;\n        if (p_Var39 == (mpz_ptr)0x0) {\n          piVar35[1] = 0;\n          return;\n        }\n        p_Var34 = p_Var39;\n        if ((int)p_Var39 < 0) {\n          p_Var34 = (mpz_ptr)-(int)p_Var39;\n        }\n        pcVar55 = *(code **)(pcVar55 + 0x7a8e0);\n        piVar37 = piVar35;\n        p_Var23 = p_Var22;\n        p_Var41 = p_Var33;\n        if (*piVar35 < (int)p_Var34) goto LAB_00022e2c;\n        piVar35 = (int *)piVar35[2];\n      }\n      pcVar55 = *(code **)(pcVar48 + -0x7d98);\n      pmVar26 = p_Var41->_mp_d;\n      *(mpz_ptr *)(puVar52 + -0x30) = p_Var23;\n      iVar5 = (*pcVar55)(piVar35,0,pmVar26,p_Var34);\n      piVar19 = piVar35 + (int)((int)&p_Var34[-1]._mp_d + 3);\n      if (iVar5 == 0) {\n        uVar20 = (uint)(*piVar19 == 0);\n        if (-1 < (int)p_Var39) {\n          iVar5 = (int)p_Var34 - uVar20;\n          goto LAB_00022d9c;\n        }\n      }\n      else {\n        if (-1 < (int)p_Var39) {\n          do {\n            iVar5 = *piVar35;\n            *piVar35 = iVar5 + 1;\n            piVar35 = piVar35 + 1;\n          } while (iVar5 + 1 == 0);\n          iVar5 = (int)p_Var34 - (uint)(*piVar19 == 0);\n          goto LAB_00022d9c;\n        }\n        uVar20 = (uint)(*piVar19 == 0);\n      }\n      iVar5 = uVar20 - (int)p_Var34;\nLAB_00022d9c:\n      piVar37[1] = iVar5;\n      return;\n    }\n    *(int *)(puVar50 + -0x44) = iVar42;\n    iVar5 = iVar42 + uVar6;\n    uVar20 = (**(code **)(*(int *)(puVar50 + -0x34) + (uVar6 - 1) * 4))(iVar42);\n    puVar47 = *(undefined **)(puVar50 + -0x78);\n    if ((uVar20 & 0xff) == 0) {\n      uVar40 = uVar20 >> 8;\n      iVar28 = 6;\n      if ((uVar40 & 0xff) == 0) {\n        uVar40 = uVar20 >> 0x10;\n        iVar28 = 0xe;\n        if ((uVar40 & 0xff) == 0) {\n          uVar40 = uVar20 >> 0x18;\n          iVar28 = 0x1e;\n          if (uVar40 != 0) {\n            iVar28 = 0x16;\n          }\n        }\n      }\n      uVar40 = (uint)*(byte *)(*(int *)(puVar50 + -0x3c) + (-uVar40 & uVar40)) + iVar28;\n    }\n    else {\n      uVar40 = *(byte *)(*(int *)(puVar50 + -0x3c) + (-uVar20 & uVar20)) - 2;\n    }\n    iVar42 = *(int *)(puVar50 + -0x38);\n    p_Var39->_mp_alloc = uVar20 >> (uVar40 & 0x1f);\n    iVar28 = *(int *)(puVar50 + -0x60);\n    *(uint *)(puVar50 + -0x40) =\n         *(int *)(puVar50 + -0x40) + *(byte *)(iVar42 + (uVar6 - 1)) + uVar40;\n    if ((uint)(iVar28 - iVar5) <= uVar6) {\n      uVar6 = iVar28 - iVar5;\n    }\n    iVar42 = iVar5;\n    if (uVar6 != 0) goto LAB_00022234;\nLAB_00022534:\n    p_Var34 = (mpz_ptr)&DAT_00000001;\n    *(mpz_ptr *)(puVar50 + -0x4c) = p_Var39;\n  } while( true );\n}\n\n" (function_definition "void mpz_goetgheluck_bin_uiui(mpz_ptr r,ulong n,ulong k)\n\n{\n  bool bVar1;\n  bool bVar2;\n  mpz_ptr p_Var3;\n  undefined *puVar4;\n  int iVar5;\n  uint uVar6;\n  uint *puVar7;\n  uint *puVar8;\n  undefined4 uVar9;\n  uint uVar10;\n  uint uVar11;\n  uint *puVar12;\n  undefined1 *puVar13;\n  undefined *puVar14;\n  ulong uVar15;\n  mp_limb_t mVar16;\n  tmp_reentrant_t *ptVar17;\n  undefined4 *puVar18;\n  mpz_ptr r_00;\n  int *piVar19;\n  uint uVar20;\n  undefined4 *puVar21;\n  mpz_ptr p_Var22;\n  mpz_ptr p_Var23;\n  uint uVar24;\n  mpz_ptr p_Var25;\n  mp_limb_t *pmVar26;\n  uint uVar27;\n  int iVar28;\n  ulong uVar29;\n  uint uVar30;\n  uint uVar31;\n  int iVar32;\n  mpz_ptr k_00;\n  mpz_ptr p_Var33;\n  mpz_ptr p_Var34;\n  int *piVar35;\n  int iVar36;\n  int *piVar37;\n  uint uVar38;\n  mpz_ptr p_Var39;\n  uint uVar40;\n  mpz_ptr p_Var41;\n  int iVar42;\n  mp_limb_t **ppmVar43;\n  uint uVar44;\n  int iVar45;\n  uint uVar46;\n  undefined *puVar47;\n  code *pcVar48;\n  undefined1 *puVar49;\n  undefined1 *puVar50;\n  undefined1 *puVar51;\n  undefined1 *puVar52;\n  undefined1 *puVar53;\n  undefined1 *puVar54;\n  code *pcVar55;\n  code *pcVar56;\n  uint uVar57;\n  uint uVar58;\n  undefined1 auStack_48 [16];\n  tmp_reentrant_t *__tmp_marker;\n  int local_2c;\n  \n  puVar4 = PTR___stack_chk_guard_0009d540;\n  puVar49 = auStack_48;\n  uVar40 = n - 5 | 1;\n  __tmp_marker = (tmp_reentrant_t *)0x0;\n  local_2c = *(int *)PTR___stack_chk_guard_0009d540;\n  uVar20 = (uVar40 / 0x60 + 1) * 4;\n  if (uVar20 < 0x7f01) {\n    iVar5 = -(uVar20 + 7 & 0xfffffff8);\n    puVar49 = auStack_48 + iVar5;\n    puVar13 = &stack0xffffffc8 + iVar5;\n  }\n  else {\n    puVar13 = (undefined1 *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&__tmp_marker);\n  }\n  iVar5 = (*(code *)PTR___gmp_primesieve_0009d144)(puVar13,n);\n  uVar6 = iVar5 + 1;\n  puVar7 = (uint *)(PTR___gmp_limbroots_table_0009d3d4 + 0x1c);\n  uVar20 = 8;\n  do {\n    uVar27 = uVar20;\n    uVar10 = *puVar7;\n    puVar7 = puVar7 + -1;\n    uVar20 = uVar27 - 1;\n  } while (uVar10 < n);\n  if (uVar27 == 0) {\n    trap(7);\n  }\n  puVar7 = (uint *)(PTR___gmp_limbroots_table_0009d3d4 + 0x1c);\n  uVar20 = 8;\n  if ((uVar6 / uVar27 + 1) * 4 < 0x7f01) {\n    do {\n      uVar27 = uVar20;\n      uVar10 = *puVar7;\n      puVar7 = puVar7 + -1;\n      uVar20 = uVar27 - 1;\n    } while (uVar10 < n);\n    if (uVar27 == 0) {\n      trap(7);\n    }\n    iVar5 = -((uVar6 / uVar27) * 4 + 0xb & 0xfffffff8);\n    puVar50 = puVar49 + iVar5;\n    puVar7 = (uint *)(puVar49 + iVar5 + 0x10);\n  }\n  else {\n    for (puVar14 = PTR___gmp_limbroots_table_0009d3d4 + 0x18; *(uint *)(puVar14 + 4) < n;\n        puVar14 = puVar14 + -4) {\n      uVar20 = uVar20 - 1;\n    }\n    if (uVar20 == 0) {\n      trap(7);\n    }\n    puVar7 = (uint *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)\n                               (&__tmp_marker,(uVar6 / uVar20 + 1) * 4);\n    puVar50 = puVar49;\n  }\n  uVar20 = n - k;\n  if (n == 0) {\n    trap(7);\n  }\n  uVar57 = 0xffffffff / n;\n  uVar44 = n >> 1;\n  uVar10 = uVar20 - (uVar20 >> 1 & 0x55555555);\n  uVar27 = n - (uVar44 & 0x55555555);\n  uVar6 = k - (k >> 1 & 0x55555555);\n  uVar30 = (uVar10 >> 2 & 0x33333333) + (uVar10 & 0x33333333);\n  uVar27 = (uVar27 >> 2 & 0x33333333) + (uVar27 & 0x33333333);\n  uVar10 = (uVar6 >> 2 & 0x33333333) + (uVar6 & 0x33333333);\n  uVar6 = (uVar30 >> 4) + uVar30 & 0xf0f0f0f;\n  uVar27 = (uVar27 >> 4) + uVar27 & 0xf0f0f0f;\n  uVar6 = (uVar6 >> 8) + uVar6;\n  uVar10 = (uVar10 >> 4) + uVar10 & 0xf0f0f0f;\n  uVar27 = (uVar27 >> 8) + uVar27;\n  uVar10 = (uVar10 >> 8) + uVar10;\n  uVar6 = 1 << ((uVar10 >> 0x10) + uVar10 +\n                (((uVar6 >> 0x10) + uVar6 & 0xff) - ((uVar27 >> 0x10) + uVar27 & 0xff)) & 0x1f);\n  bVar1 = uVar57 < uVar6;\n  if (bVar1) {\n    *puVar7 = uVar6;\n    uVar6 = 1;\n  }\n  uVar10 = 0;\n  uVar15 = n;\n  uVar29 = k;\n  do {\n    bVar2 = uVar15 % 3 < uVar29 % 3 + uVar10;\n    if (bVar2) {\n      uVar6 = uVar6 * 3;\n    }\n    uVar10 = (uint)bVar2;\n    bVar2 = 8 < uVar15;\n    uVar15 = uVar15 / 3;\n    uVar29 = uVar29 / 3;\n  } while (bVar2);\n  uVar10 = n - 1;\n  if (uVar10 < 0x10000) {\n    iVar5 = 0x18;\n    if (uVar10 < 0x100) {\n      iVar5 = 0x20;\n    }\n    iVar28 = 9;\n    if (uVar10 < 0x100) {\n      iVar28 = 1;\n    }\n  }\n  else {\n    iVar5 = 8;\n    if (uVar10 < 0x1000000) {\n      iVar5 = 0x10;\n    }\n    iVar28 = 0x19;\n    if (uVar10 < 0x1000000) {\n      iVar28 = 0x11;\n    }\n  }\n  iVar32 = 0;\n  uVar31 = 1;\n  uVar46 = (((1 << ((int)(0x1f - (iVar5 - (uint)(byte)PTR___gmpn_clz_tab_0009d18c[uVar10 >> iVar28])\n                         ) >> 1 & 0x1fU)) +\n            (1 << ((int)(0x1e - (iVar5 - (uint)(byte)PTR___gmpn_clz_tab_0009d18c[uVar10 >> iVar28]))\n                   >> 1 & 0x1fU))) - 5U | 1) / 3;\n  uVar30 = uVar46 + 1;\n  uVar10 = (uint)bVar1;\n  uVar27 = 0;\n  do {\n    uVar38 = uVar27 + 1;\n    uVar24 = uVar10;\n    if ((uVar31 & *(uint *)(puVar13 + iVar32 * 4)) == 0) {\n      uVar11 = (uVar38 & 1) + 1 + uVar38 * 3;\n      if (uVar57 < uVar6) {\n        uVar24 = uVar10 + 1;\n        puVar7[uVar10] = uVar6;\n        uVar6 = 1;\n      }\n      uVar10 = 0;\n      uVar15 = k;\n      uVar29 = n;\n      do {\n        if (uVar11 == 0) {\n          trap(7);\n        }\n        if (uVar11 == 0) {\n          trap(7);\n        }\n        uVar58 = uVar29 / uVar11;\n        bVar1 = uVar29 % uVar11 < uVar15 % uVar11 + uVar10;\n        if (bVar1) {\n          uVar6 = uVar6 * uVar11;\n        }\n        uVar10 = (uint)bVar1;\n        uVar15 = uVar15 / uVar11;\n        uVar29 = uVar58;\n      } while (uVar11 <= uVar58);\n    }\n    uVar31 = uVar31 * 2 - ((int)uVar31 >> 0x1f);\n    bVar1 = uVar27 != uVar46;\n    iVar32 = iVar32 + (uVar31 & 1);\n    uVar10 = uVar24;\n    uVar27 = uVar38;\n  } while (bVar1);\n  uVar27 = uVar30 >> 5;\n  uVar10 = 1 << (uVar30 & 0x1f);\n  uVar31 = (uVar44 - 5 | 1) / 3;\n  do {\n    while( true ) {\n      uVar30 = uVar30 + 1;\n      uVar46 = uVar24;\n      if ((uVar10 & *(uint *)(puVar13 + uVar27 * 4)) == 0) break;\nLAB_00021e80:\n      uVar10 = uVar10 * 2 - ((int)uVar10 >> 0x1f);\n      uVar27 = uVar27 + (uVar10 & 1);\n      uVar24 = uVar46;\n      if (uVar31 < uVar30) goto LAB_00021f04;\n    }\n    uVar11 = (uVar30 & 1) + 1 + uVar30 * 3;\n    if (uVar11 == 0) {\n      trap(7);\n    }\n    if (uVar11 == 0) {\n      trap(7);\n    }\n    if (k % uVar11 <= n % uVar11) goto LAB_00021e80;\n    if (uVar57 << 1 < uVar6) {\n      uVar46 = uVar24 + 1;\n      puVar7[uVar24] = uVar6;\n      uVar6 = uVar11;\n      goto LAB_00021e80;\n    }\n    uVar10 = uVar10 * 2 - ((int)uVar10 >> 0x1f);\n    uVar6 = uVar6 * uVar11;\n    uVar27 = uVar27 + (uVar10 & 1);\n  } while (uVar30 <= uVar31);\nLAB_00021f04:\n  uVar20 = (uVar20 - 5 | 1) / 3 + 1;\n  uVar27 = uVar20 >> 5;\n  uVar40 = uVar40 / 3;\n  uVar10 = 1 << (uVar20 & 0x1f);\n  do {\n    while( true ) {\n      uVar20 = uVar20 + 1;\n      uVar30 = uVar46;\n      if ((uVar10 & *(uint *)(puVar13 + uVar27 * 4)) == 0) break;\nLAB_00021f58:\n      uVar10 = uVar10 * 2 - ((int)uVar10 >> 0x1f);\n      uVar27 = uVar27 + (uVar10 & 1);\n      uVar46 = uVar30;\n      if (uVar40 < uVar20) goto LAB_00021fb8;\n    }\n    mVar16 = (uVar20 & 1) + 1 + uVar20 * 3;\n    if ((uVar57 & 0x7fffffff) < uVar6) {\n      uVar30 = uVar46 + 1;\n      puVar7[uVar46] = uVar6;\n      uVar6 = mVar16;\n      goto LAB_00021f58;\n    }\n    uVar10 = uVar10 * 2 - ((int)uVar10 >> 0x1f);\n    uVar6 = uVar6 * mVar16;\n    uVar27 = uVar27 + (uVar10 & 1);\n  } while (uVar20 <= uVar40);\nLAB_00021fb8:\n  if (uVar30 == 0) {\n    *r->_mp_d = uVar6;\n    r->_mp_size = 1;\n    uVar20 = 0;\n    ptVar17 = __tmp_marker;\n  }\n  else {\n    uVar20 = uVar30 + 1;\n    puVar7[uVar30] = uVar6;\n    (*(code *)PTR___gmpz_prodlimbs_0009d284)(r);\n    ptVar17 = __tmp_marker;\n  }\n  __tmp_marker = ptVar17;\n  if (ptVar17 != (tmp_reentrant_t *)0x0) {\n    (*(code *)PTR___gmp_tmp_reentrant_free_0009d618)();\n  }\n  if (local_2c == *(int *)puVar4) {\n    return;\n  }\n  pcVar55 = mpz_bdiv_bin_uiui;\n  puVar14 = PTR___stack_chk_fail_0009d4d0;\n  (*(code *)PTR___stack_chk_fail_0009d4d0)();\n  puVar47 = puVar14 + 0x82fa4;\n  puVar51 = puVar50 + -0x90;\n  puVar54 = puVar50 + -0x90;\n  puVar53 = puVar50 + -0x90;\n  *(mpz_ptr *)(puVar50 + -0x24) = r;\n  *(undefined1 **)(puVar50 + -8) = auStack_48;\n  puVar21 = *(undefined4 **)(puVar14 + 0x7b4a4);\n  *(code **)(puVar50 + -4) = pcVar55;\n  *(tmp_reentrant_t **)(puVar50 + -0x6c) = ptVar17;\n  *(uint *)(puVar50 + -0xc) = uVar44;\n  *(ulong *)(puVar50 + -0x10) = k;\n  *(uint *)(puVar50 + -0x14) = uVar40;\n  uVar40 = (((uint)puVar7 >> 5) + 1) * 3;\n  *(uint *)(puVar50 + -0x18) = uVar38;\n  *(undefined1 **)(puVar50 + -0x1c) = puVar13;\n  *(ulong *)(puVar50 + -0x20) = n;\n  *(undefined **)(puVar50 + -0x28) = puVar4;\n  *(undefined **)(puVar50 + -0x78) = puVar47;\n  *(undefined4 **)(puVar50 + -0x70) = puVar21;\n  *(undefined4 *)(puVar50 + -0x30) = 0;\n  *(undefined4 *)(puVar50 + -0x2c) = *puVar21;\n  if (uVar40 < 0x2a) {\n    uVar40 = 0x27;\n    if (uVar20 < 0x28) {\n      uVar40 = uVar20;\n    }\n    uVar40 = (uVar40 + 1) * 4;\n  }\n  else {\n    uVar40 = ((int)uVar40 >> 1) + 0x13;\n    if (uVar20 < uVar40) {\n      uVar40 = uVar20;\n    }\n    uVar40 = (uVar40 + 1) * 4;\n    pcVar55 = *(code **)(puVar14 + 0x7b254);\n    if (0x7f00 < uVar40) {\n      *(uint *)(puVar50 + 8) = uVar20;\n      p_Var41 = (mpz_ptr)(*pcVar55)(puVar50 + -0x30);\n      puVar47 = *(undefined **)(puVar50 + -0x78);\n      uVar20 = *(uint *)(puVar50 + 8);\n      goto LAB_0002214c;\n    }\n  }\n  iVar5 = -(uVar40 + 7 & 0xfffffff8);\n  puVar51 = puVar50 + iVar5 + -0x90;\n  p_Var41 = (mpz_ptr)(puVar50 + iVar5 + -0x78);\nLAB_0002214c:\n  iVar28 = *(int *)(puVar47 + -0x7c6c);\n  p_Var39 = (mpz_ptr)(puVar51 + -0x40);\n  puVar12 = (uint *)(iVar28 + 0x1c);\n  iVar5 = 8;\n  do {\n    iVar32 = iVar5;\n    puVar8 = (uint *)*puVar12;\n    puVar12 = puVar12 + -1;\n    iVar5 = iVar32 + -1;\n  } while (puVar8 < puVar7);\n  *(int *)(puVar50 + -0x68) = iVar32;\n  puVar12 = (uint *)(iVar28 + 0x1c);\n  uVar40 = 8;\n  do {\n    uVar6 = uVar40;\n    uVar10 = *puVar12;\n    puVar12 = puVar12 + -1;\n    uVar40 = uVar6 - 1;\n  } while (uVar10 < uVar20);\n  uVar9 = *(undefined4 *)(puVar47 + -0x7d3c);\n  iVar5 = 0x11;\n  *(undefined4 *)(puVar50 + -0x48) = 0;\n  *(undefined4 *)(puVar50 + -100) = uVar9;\n  iVar28 = *(int *)(puVar47 + -0x7e20);\n  *(undefined4 *)(puVar50 + -0x5c) = 0x3fffffff;\n  iVar32 = (int)puVar7 + (1 - uVar20);\n  *(uint *)(puVar50 + -0x40) = (uint)*(byte *)(iVar28 + 7);\n  *(undefined4 *)(puVar50 + -0x3c) = *(undefined4 *)(puVar47 + -0x7eb4);\n  *(uint *)(puVar50 + -0x60) = uVar20 + 1;\n  iVar28 = *(int *)(puVar50 + -0x60);\n  p_Var41->_mp_alloc = 1;\n  *(undefined4 *)(puVar50 + -0x44) = 1;\n  *(int *)(puVar50 + -0x34) = *(int *)(puVar47 + -0x7fe4) + -0x31a4;\n  *(int *)(puVar50 + -0x38) = *(int *)(puVar47 + -0x7fd4) + 0x3630;\n  p_Var39->_mp_alloc = 0x260eeeeb;\n  if (iVar28 - 0x11U <= uVar6) {\n    uVar6 = iVar28 - 0x11U;\n  }\n  p_Var33 = (mpz_ptr)&DAT_00000001;\n  iVar42 = iVar5;\n  if (uVar6 == 0) goto LAB_00022534;\nLAB_00022234:\n  p_Var34 = (mpz_ptr)&DAT_00000001;\n  iVar45 = *(int *)(puVar50 + -0x40);\n  *(mpz_ptr *)(puVar50 + -0x4c) = p_Var33;\n  *(mpz_ptr *)(puVar50 + -0x50) = p_Var41;\n  do {\n    iVar42 = iVar5 + uVar6;\n    uVar20 = (**(code **)(*(int *)(puVar50 + -0x34) + (uVar6 - 1) * 4))(iVar5);\n    if ((uVar20 & 0xff) == 0) {\n      uVar40 = uVar20 >> 8;\n      iVar5 = 6;\n      if ((uVar40 & 0xff) == 0) {\n        uVar40 = uVar20 >> 0x10;\n        iVar5 = 0xe;\n        if ((uVar40 & 0xff) == 0) {\n          uVar40 = uVar20 >> 0x18;\n          iVar5 = 0x1e;\n          if (uVar40 != 0) {\n            iVar5 = 0x16;\n          }\n        }\n      }\n      uVar40 = (uint)*(byte *)(*(int *)(puVar50 + -0x3c) + (-uVar40 & uVar40)) + iVar5;\n    }\n    else {\n      uVar40 = *(byte *)(*(int *)(puVar50 + -0x3c) + (-uVar20 & uVar20)) - 2;\n    }\n    iVar45 = iVar45 + *(byte *)(*(int *)(puVar50 + -0x38) + (uVar6 - 1)) + uVar40;\n    iVar5 = (**(code **)(*(int *)(puVar50 + -0x78) + -0x7f9c))\n                      (p_Var39,p_Var39,p_Var34,uVar20 >> (uVar40 & 0x1f));\n    puVar47 = *(undefined **)(puVar50 + -0x78);\n    if ((uint)(iVar28 - iVar42) <= uVar6) {\n      uVar6 = iVar28 - iVar42;\n    }\n    piVar35 = &p_Var39->_mp_alloc + (int)p_Var34;\n    p_Var34 = (mpz_ptr)((int)&p_Var34->_mp_alloc + (uint)(iVar5 != 0));\n    *piVar35 = iVar5;\n    if (uVar6 == 0) {\n      p_Var41 = *(mpz_ptr *)(puVar50 + -0x50);\n      p_Var33 = *(mpz_ptr *)(puVar50 + -0x4c);\n      *(int *)(puVar50 + -0x40) = iVar45;\n      *(int **)(puVar50 + -0x4c) =\n           &p_Var39->_mp_alloc + (int)((int)&p_Var34->_mp_alloc + *(int *)(puVar50 + -0x5c));\n      goto LAB_00022340;\n    }\n    iVar5 = iVar42;\n  } while (p_Var34 != (mpz_ptr)0x14);\n  p_Var33 = *(mpz_ptr *)(puVar50 + -0x4c);\n  p_Var41 = *(mpz_ptr *)(puVar50 + -0x50);\n  *(int *)(puVar50 + -0x40) = iVar45;\n  *(int **)(puVar50 + -0x4c) = &p_Var39[6]._mp_size;\nLAB_00022340:\n  do {\n    iVar45 = iVar42 - *(int *)(puVar50 + -0x44);\n    iVar28 = *(int *)(puVar50 + -0x5c);\n    iVar5 = iVar45;\n    if (iVar45 != 0) {\n      *(uint *)(puVar50 + -0x44) = uVar6;\n      *(mpz_ptr *)(puVar50 + -0x50) = p_Var34;\n      *(mpz_ptr *)(puVar50 + -0x54) = p_Var39;\n      *(int *)(puVar50 + -0x58) = iVar42;\n      iVar5 = *(int *)(puVar50 + -0x48);\n      iVar42 = *(int *)(puVar50 + -0x68);\n      iVar28 = iVar32;\n      do {\n        iVar36 = iVar45;\n        if (iVar42 <= iVar45) {\n          iVar36 = iVar42;\n        }\n        iVar32 = iVar28 + iVar36;\n        uVar20 = (**(code **)(*(int *)(puVar50 + -0x34) + (iVar36 + -1) * 4))(iVar28);\n        if ((uVar20 & 0xff) == 0) {\n          uVar40 = uVar20 >> 8;\n          iVar28 = 6;\n          if ((uVar40 & 0xff) == 0) {\n            uVar40 = uVar20 >> 0x10;\n            iVar28 = 0xe;\n            if ((uVar40 & 0xff) == 0) {\n              uVar40 = uVar20 >> 0x18;\n              iVar28 = 0x16;\n              if (uVar40 == 0) {\n                iVar28 = 0x1e;\n              }\n            }\n          }\n          uVar40 = (uint)*(byte *)(*(int *)(puVar50 + -0x3c) + (-uVar40 & uVar40)) + iVar28;\n        }\n        else {\n          uVar40 = *(byte *)(*(int *)(puVar50 + -0x3c) + (-uVar20 & uVar20)) - 2;\n        }\n        iVar45 = iVar45 - iVar36;\n        iVar5 = iVar5 + *(byte *)(*(int *)(puVar50 + -0x38) + iVar36 + -1) + uVar40;\n        iVar28 = (**(code **)(*(int *)(puVar50 + -0x78) + -0x7f9c))\n                           (p_Var41,p_Var41,p_Var33,uVar20 >> (uVar40 & 0x1f));\n        puVar47 = *(undefined **)(puVar50 + -0x78);\n        piVar35 = &p_Var41->_mp_alloc + (int)p_Var33;\n        p_Var33 = (mpz_ptr)((int)&p_Var33->_mp_alloc + (uint)(iVar28 != 0));\n        *piVar35 = iVar28;\n        iVar28 = iVar32;\n      } while (iVar45 != 0);\n      uVar6 = *(uint *)(puVar50 + -0x44);\n      p_Var34 = *(mpz_ptr *)(puVar50 + -0x50);\n      p_Var39 = *(mpz_ptr *)(puVar50 + -0x54);\n      iVar42 = *(int *)(puVar50 + -0x58);\n      *(int *)(puVar50 + -0x48) = iVar5;\n      iVar28 = *(int *)(puVar50 + -0x5c);\n    }\n    iVar45 = p_Var39->_mp_alloc;\n    pcVar55 = *(code **)(puVar47 + -0x7bc0);\n    uVar20 = (uint)*(byte *)(*(int *)(puVar50 + -100) + ((uint)(iVar45 << 0x18) >> 0x19));\n    p_Var33 = (mpz_ptr)((int)p_Var33 +\n                       (((uint)(&p_Var41->_mp_alloc)[(int)((int)&p_Var33->_mp_alloc + iVar28)] <\n                         **(uint **)(puVar50 + -0x4c) ^ 1) - (int)p_Var34));\n    iVar28 = uVar20 * 2 - uVar20 * uVar20 * iVar45;\n    if ((int)p_Var33 < (int)p_Var34) {\n      p_Var34 = p_Var33;\n    }\n    *(mpz_ptr *)(puVar51 + -0x48) = p_Var34;\n    *(int *)(puVar51 + -0x44) = iVar28 * iVar28 * iVar45 + iVar28 * -2;\n    p_Var22 = p_Var41;\n    p_Var25 = p_Var33;\n    (*pcVar55)(p_Var41,p_Var41,p_Var33,p_Var39);\n    iVar28 = *(int *)(puVar50 + -0x78);\n    if (uVar6 == 0) {\n      if (*(int *)(puVar50 + -0x48) == *(int *)(puVar50 + -0x40)) {\n        p_Var33 = (mpz_ptr)((int)p_Var33 -\n                           (uint)(*(int *)((int)p_Var41 + (int)p_Var33 * 4 + -4) == 0));\n        pcVar55 = *(code **)(iVar28 + -0x7a80);\n        if ((int)p_Var33 <= **(int **)(puVar50 + -0x6c)) goto LAB_00022600;\nLAB_00022734:\n        p_Var22 = p_Var33;\n        puVar21 = (undefined4 *)(*pcVar55)(*(undefined4 *)(puVar50 + -0x6c));\n        iVar28 = *(int *)(puVar50 + -0x78);\n      }\n      else {\n        p_Var22 = p_Var41;\n        p_Var25 = p_Var33;\n        iVar45 = (**(code **)(iVar28 + -0x7ad4))(p_Var41);\n        iVar28 = *(int *)(puVar50 + -0x78);\n        puVar13 = (undefined1 *)((int)&p_Var33->_mp_alloc + (uint)(iVar45 != 0));\n        *(int *)((int)p_Var41 + (int)p_Var33 * 4) = iVar45;\n        p_Var33 = (mpz_ptr)(puVar13 + -(uint)(*(int *)((int)p_Var41 + (int)puVar13 * 4 + -4) == 0));\n        pcVar55 = *(code **)(iVar28 + -0x7a80);\n        if (**(int **)(puVar50 + -0x6c) < (int)p_Var33) goto LAB_00022734;\nLAB_00022600:\n        puVar21 = *(undefined4 **)(*(int *)(puVar50 + -0x6c) + 8);\n      }\n      *(mpz_ptr *)(*(int *)(puVar50 + -0x6c) + 4) = p_Var33;\n      if (p_Var33 != (mpz_ptr)0x0) {\n        puVar13 = (undefined1 *)((int)&p_Var33[-1]._mp_d + 3);\n        p_Var22 = (mpz_ptr)p_Var41->_mp_alloc;\n        if (puVar13 != (undefined1 *)0x0) {\n          puVar18 = puVar21;\n          ppmVar43 = (mp_limb_t **)&p_Var41->_mp_size;\n          do {\n            *puVar18 = p_Var22;\n            p_Var41 = (mpz_ptr)(ppmVar43 + 1);\n            puVar13 = puVar13 + -1;\n            p_Var22 = (mpz_ptr)*ppmVar43;\n            puVar18 = puVar18 + 1;\n            ppmVar43 = (mp_limb_t **)p_Var41;\n          } while (puVar13 != (undefined1 *)0x0);\n          p_Var33 = (mpz_ptr)((int)p_Var33 * 4);\n          puVar21 = (undefined4 *)((int)puVar21 + (int)&p_Var33[-1]._mp_d);\n        }\n        *puVar21 = p_Var22;\n      }\n      r_00 = *(mpz_ptr *)(puVar50 + -0x30);\n      if (r_00 != (mpz_ptr)0x0) {\n        (**(code **)(iVar28 + -0x7a28))();\n        iVar28 = *(int *)(puVar50 + -0x78);\n      }\n      if (*(int *)(puVar50 + -0x2c) == **(int **)(puVar50 + -0x70)) {\n        return;\n      }\n      pcVar55 = *(code **)(iVar28 + -0x7b70);\n      pcVar56 = __gmpz_bin_uiui;\n      (*pcVar55)();\n      pcVar48 = pcVar55 + 0x8289c;\n      *(mpz_ptr *)(puVar51 + -0x78) = p_Var34;\n      piVar35 = *(int **)(pcVar55 + 0x7ad9c);\n      *(code **)(puVar51 + -0xf0) = pcVar48;\n      *(int *)(puVar51 + -0x74) = iVar42;\n      *(code **)(puVar51 + -0x5c) = pcVar56;\n      *(undefined1 **)(puVar51 + -0x60) = puVar50 + -0x90;\n      *(int *)(puVar51 + -100) = iVar5;\n      *(int *)(puVar51 + -0x68) = iVar32;\n      *(mpz_ptr *)(puVar51 + -0x6c) = p_Var41;\n      *(mpz_ptr *)(puVar51 + -0x70) = p_Var39;\n      *(mpz_ptr *)(puVar51 + -0x7c) = p_Var33;\n      *(undefined4 *)(puVar51 + -0x80) = 0;\n      *(int *)(puVar51 + -0x84) = *piVar35;\n      p_Var34 = r_00;\n      p_Var23 = p_Var22;\n      if (p_Var22 < p_Var25) {\n        r_00->_mp_size = 0;\n        k_00 = (mpz_ptr)0x0;\n      }\n      else {\n        k_00 = p_Var25;\n        if ((mpz_ptr)((int)p_Var22 - (int)p_Var25) <= p_Var25) {\n          k_00 = (mpz_ptr)((int)p_Var22 - (int)p_Var25);\n        }\n        p_Var25 = k_00;\n        p_Var39 = p_Var22;\n        if (k_00 < (mpz_ptr)0x2) {\n          if (k_00 == (mpz_ptr)0x0) {\n            p_Var39 = (mpz_ptr)&DAT_00000001;\n          }\n          *r_00->_mp_d = (mp_limb_t)p_Var39;\n          r_00->_mp_size = 1;\n          puVar53 = puVar50 + -0x90;\n        }\n        else if (p_Var22 < (mpz_ptr)0x23) {\n          p_Var3 = k_00 + -1;\n          iVar5 = *(int *)(pcVar55 + 0x7aa7c);\n          p_Var23 = (mpz_ptr)r_00->_mp_d;\n          uVar20 = (int)p_Var22 - (int)k_00;\n          p_Var39 = (mpz_ptr)(iVar5 + ((uint)p_Var22 >> 1));\n          k_00 = (mpz_ptr)(iVar5 + ((uint)k_00 >> 1));\n          p_Var25 = (mpz_ptr)(uint)*(byte *)((int)&k_00[-1]._mp_d + 3);\n          p_Var34 = (mpz_ptr)(uint)*(byte *)(iVar5 + (uVar20 >> 1) + -1);\n          p_Var23->_mp_alloc =\n               *(int *)((int)((int)&p_Var3->_mp_d + 2) * 4 + *(int *)(pcVar55 + 0x7a8c8) + 0x35b4) *\n               *(int *)(*(int *)(pcVar55 + 0x7ad64) + (int)p_Var22 * 4) *\n               *(int *)((uVar20 - 2) * 4 + *(int *)(pcVar55 + 0x7a8c8) + 0x35b4) <<\n               (((uint)*(byte *)((int)&p_Var39[-1]._mp_d + 3) - (int)p_Var25) - (int)p_Var34 & 0x1f)\n          ;\n          r_00->_mp_size = 1;\n          puVar53 = puVar50 + -0x90;\n        }\n        else if (k_00 < (mpz_ptr)&DAT_00000011) {\n          mpz_smallk_bin_uiui(r_00,(ulong)p_Var22,(ulong)k_00);\n          pcVar48 = *(code **)(puVar51 + -0xf0);\n          puVar53 = puVar50 + -0x90;\n        }\n        else if (k_00 < (mpz_ptr)&DAT_00000021) {\n          uVar20 = (uint)k_00 >> 1;\n          uVar40 = (int)p_Var22 - uVar20;\n          mpz_smallk_bin_uiui(r_00,(ulong)p_Var22,uVar20);\n          iVar5 = *(int *)(puVar51 + -0xf0);\n          uVar6 = (int)k_00 - uVar20;\n          if (uVar40 < 0x23) {\n            puVar54 = (undefined1 *)r_00->_mp_size;\n            if ((int)puVar54 < r_00->_mp_alloc) {\n              p_Var33 = (mpz_ptr)r_00->_mp_d;\n            }\n            else {\n              p_Var33 = (mpz_ptr)(**(code **)(iVar5 + -0x7a80))(r_00,puVar54 + 1);\n              iVar5 = *(int *)(puVar51 + -0xf0);\n            }\n            iVar32 = *(int *)(iVar5 + -0x7e20);\n            iVar28 = *(int *)(iVar5 + -0x7fd4) + 0x35b4;\n            iVar28 = (**(code **)(iVar5 + -0x7f9c))\n                               (p_Var33,p_Var33,puVar54,\n                                *(int *)((((int)p_Var22 - (int)k_00) - 2U) * 4 + iVar28) *\n                                *(int *)(*(int *)(iVar5 + -0x7b38) + uVar40 * 4) *\n                                *(int *)((uVar6 - 2) * 4 + iVar28) <<\n                                (((uint)*(byte *)(iVar32 + (uVar40 >> 1) + -1) -\n                                 (uint)*(byte *)(iVar32 + (uVar6 >> 1) + -1)) -\n                                 (uint)*(byte *)(iVar32 + ((uint)((int)p_Var22 - (int)k_00) >> 1) +\n                                                -1) & 0x1f));\n            iVar5 = *(int *)(puVar51 + -0xf0);\n            k_00 = (mpz_ptr)(puVar54 + (iVar28 != 0));\n            (&p_Var33->_mp_alloc)[(int)puVar54] = iVar28;\n          }\n          else {\n            *(undefined4 *)(puVar51 + -0xe4) = 0x15;\n            *(undefined1 **)(puVar51 + -0xdc) = puVar51 + -0xd8;\n            mpz_smallk_bin_uiui((mpz_ptr)(puVar51 + -0xe4),uVar40,uVar6);\n            (**(code **)(*(int *)(puVar51 + -0xf0) + -0x7ba8))(r_00,r_00,(mpz_ptr)(puVar51 + -0xe4))\n            ;\n            iVar5 = *(int *)(puVar51 + -0xf0);\n            p_Var33 = (mpz_ptr)r_00->_mp_d;\n            k_00 = (mpz_ptr)r_00->_mp_size;\n          }\n          pcVar55 = *(code **)(iVar5 + -0x7bb4);\n          p_Var41 = (mpz_ptr)((uint)*(byte *)((uVar6 - 8) + *(int *)(iVar5 + -0x7fd4) + 0x3550) -\n                             (uint)(uVar20 != uVar6));\n          *(undefined4 *)(puVar51 + -0xf8) =\n               *(undefined4 *)((uVar6 - 8) * 4 + *(int *)(iVar5 + -0x7fd4) + 0x355c);\n          *(mpz_ptr *)(puVar51 + -0xf4) = p_Var41;\n          p_Var34 = p_Var33;\n          p_Var23 = p_Var33;\n          p_Var25 = k_00;\n          (*pcVar55)();\n          pcVar48 = *(code **)(puVar51 + -0xf0);\n          if (*(int *)((int)p_Var33 + (int)k_00 * 4 + -4) == 0) {\n            piVar37 = &p_Var33->_mp_alloc + (int)k_00;\n            do {\n              piVar19 = piVar37 + -2;\n              k_00 = (mpz_ptr)((int)&k_00[-1]._mp_d + 3);\n              piVar37 = piVar37 + -1;\n            } while (*piVar19 == 0);\n          }\n          r_00->_mp_size = (int)k_00;\n          puVar53 = puVar54;\n        }\n        else if ((k_00 < (mpz_ptr)0x3e8) || (k_00 <= (mpz_ptr)((uint)p_Var22 >> 4))) {\n          mpz_bdiv_bin_uiui(r_00,(ulong)p_Var22,(ulong)k_00);\n          pcVar48 = *(code **)(puVar51 + -0xf0);\n          puVar53 = puVar50 + -0x90;\n        }\n        else {\n          mpz_goetgheluck_bin_uiui(r_00,(ulong)p_Var22,(ulong)k_00);\n          pcVar48 = *(code **)(puVar51 + -0xf0);\n          puVar53 = puVar50 + -0x90;\n        }\n      }\n      if (*(int *)(puVar51 + -0x84) == *piVar35) {\n        return;\n      }\n      pcVar55 = *(code **)(pcVar48 + -0x7b70);\n      uVar9 = 0x22b64;\n      (*pcVar55)();\n      pcVar48 = pcVar55 + 0x824d0;\n      puVar52 = puVar51 + -0x160;\n      *(mpz_ptr *)(puVar51 + -0x118) = r_00;\n      *(mpz_ptr *)(puVar51 + -0x124) = k_00;\n      piVar37 = *(int **)(pcVar55 + 0x7a9d0);\n      uVar20 = p_Var25->_mp_size;\n      *(undefined1 **)(puVar51 + -0x110) = puVar53;\n      *(mpz_ptr *)(puVar51 + -0x114) = p_Var39;\n      *(int **)(puVar51 + -0x11c) = piVar35;\n      *(mpz_ptr *)(puVar51 + -0x120) = p_Var33;\n      *(undefined4 *)(puVar51 + -0x10c) = uVar9;\n      *(code **)(puVar51 + -0x150) = pcVar48;\n      *(undefined4 *)(puVar51 + -0x13c) = 0;\n      p_Var39 = (mpz_ptr)p_Var23->_mp_size;\n      *(int *)(puVar51 + -300) = *piVar37;\n      if ((int)uVar20 < 0) {\n        uVar40 = uVar20 * -4;\n        *(uint *)(puVar51 + -0x138) = -uVar20;\n        if (0x7f00 < uVar40) {\n          pcVar55 = *(code **)(pcVar55 + 0x7a780);\n          goto LAB_00022c88;\n        }\nLAB_00022be4:\n        iVar5 = -(uVar40 + 7 & 0xfffffff8);\n        puVar52 = puVar51 + iVar5 + -0x160;\n        puVar13 = puVar51 + iVar5 + -0x150;\n      }\n      else {\n        uVar40 = uVar20 * 4;\n        *(uint *)(puVar51 + -0x138) = uVar20;\n        pcVar55 = *(code **)(pcVar55 + 0x7a780);\n        if (uVar40 < 0x7f01) goto LAB_00022be4;\nLAB_00022c88:\n        *(mpz_ptr *)(puVar51 + -0x144) = p_Var25;\n        puVar13 = (undefined1 *)(*pcVar55)(puVar51 + -0x13c,uVar40);\n        pcVar48 = *(code **)(puVar51 + -0x150);\n        p_Var25 = *(mpz_ptr *)(puVar51 + -0x144);\n      }\n      pcVar55 = *(code **)(pcVar48 + -0x7a68);\n      p_Var33 = (mpz_ptr)(puVar51 + -0x138);\n      *(undefined1 **)(puVar51 + -0x130) = puVar13;\n      p_Var22 = p_Var23;\n      (*pcVar55)(p_Var34,p_Var33,p_Var23,p_Var25);\n      iVar5 = *(int *)(puVar51 + -0x150);\n      if (((int)((uint)p_Var39 ^ uVar20) < 0) || (*(int *)(puVar51 + -0x134) == 0)) {\n        piVar35 = *(int **)(puVar51 + -0x13c);\n        pcVar55 = *(code **)(iVar5 + -0x7a28);\n        if (piVar35 != (int *)0x0) goto LAB_00022cc0;\n      }\n      else {\n        p_Var22 = (mpz_ptr)&DAT_00000001;\n        p_Var33 = p_Var34;\n        (**(code **)(iVar5 + -0x7c9c))(p_Var34);\n        piVar35 = *(int **)(puVar51 + -0x13c);\n        iVar5 = *(int *)(puVar51 + -0x150);\n        if (piVar35 != (int *)0x0) {\n          pcVar55 = *(code **)(iVar5 + -0x7a28);\nLAB_00022cc0:\n          (*pcVar55)();\n          iVar5 = *(int *)(puVar51 + -0x150);\n        }\n      }\n      if (*(int *)(puVar51 + -300) == *piVar37) {\n        return;\n      }\n      pcVar55 = *(code **)(iVar5 + -0x7b70);\n      uVar9 = 0x22cdc;\n      (*pcVar55)();\n      pcVar48 = pcVar55 + 0x82360;\n      *(code **)(puVar52 + -0x28) = pcVar48;\n      *(undefined4 *)(puVar52 + -4) = uVar9;\n      *(mpz_ptr *)(puVar52 + -8) = p_Var41;\n      *(mpz_ptr *)(puVar52 + -0xc) = p_Var23;\n      *(int **)(puVar52 + -0x10) = piVar37;\n      *(mpz_ptr *)(puVar52 + -0x14) = p_Var34;\n      *(mpz_ptr *)(puVar52 + -0x18) = p_Var39;\n      *(uint *)(puVar52 + -0x1c) = (uint)p_Var39 ^ uVar20;\n      if (p_Var22 == (mpz_ptr)0x0) {\n        pcVar55 = *(code **)(pcVar55 + 0x7a900);\n        (*pcVar55)();\nLAB_00022e2c:\n        piVar35 = (int *)(*pcVar55)(piVar37,p_Var34);\n        pcVar48 = *(code **)(puVar52 + -0x28);\n      }\n      else {\n        p_Var39 = (mpz_ptr)p_Var33->_mp_size;\n        if (p_Var39 == (mpz_ptr)0x0) {\n          piVar35[1] = 0;\n          return;\n        }\n        p_Var34 = p_Var39;\n        if ((int)p_Var39 < 0) {\n          p_Var34 = (mpz_ptr)-(int)p_Var39;\n        }\n        pcVar55 = *(code **)(pcVar55 + 0x7a8e0);\n        piVar37 = piVar35;\n        p_Var23 = p_Var22;\n        p_Var41 = p_Var33;\n        if (*piVar35 < (int)p_Var34) goto LAB_00022e2c;\n        piVar35 = (int *)piVar35[2];\n      }\n      pcVar55 = *(code **)(pcVar48 + -0x7d98);\n      pmVar26 = p_Var41->_mp_d;\n      *(mpz_ptr *)(puVar52 + -0x30) = p_Var23;\n      iVar5 = (*pcVar55)(piVar35,0,pmVar26,p_Var34);\n      piVar19 = piVar35 + (int)((int)&p_Var34[-1]._mp_d + 3);\n      if (iVar5 == 0) {\n        uVar20 = (uint)(*piVar19 == 0);\n        if (-1 < (int)p_Var39) {\n          iVar5 = (int)p_Var34 - uVar20;\n          goto LAB_00022d9c;\n        }\n      }\n      else {\n        if (-1 < (int)p_Var39) {\n          do {\n            iVar5 = *piVar35;\n            *piVar35 = iVar5 + 1;\n            piVar35 = piVar35 + 1;\n          } while (iVar5 + 1 == 0);\n          iVar5 = (int)p_Var34 - (uint)(*piVar19 == 0);\n          goto LAB_00022d9c;\n        }\n        uVar20 = (uint)(*piVar19 == 0);\n      }\n      iVar5 = uVar20 - (int)p_Var34;\nLAB_00022d9c:\n      piVar37[1] = iVar5;\n      return;\n    }\n    *(int *)(puVar50 + -0x44) = iVar42;\n    iVar5 = iVar42 + uVar6;\n    uVar20 = (**(code **)(*(int *)(puVar50 + -0x34) + (uVar6 - 1) * 4))(iVar42);\n    puVar47 = *(undefined **)(puVar50 + -0x78);\n    if ((uVar20 & 0xff) == 0) {\n      uVar40 = uVar20 >> 8;\n      iVar28 = 6;\n      if ((uVar40 & 0xff) == 0) {\n        uVar40 = uVar20 >> 0x10;\n        iVar28 = 0xe;\n        if ((uVar40 & 0xff) == 0) {\n          uVar40 = uVar20 >> 0x18;\n          iVar28 = 0x1e;\n          if (uVar40 != 0) {\n            iVar28 = 0x16;\n          }\n        }\n      }\n      uVar40 = (uint)*(byte *)(*(int *)(puVar50 + -0x3c) + (-uVar40 & uVar40)) + iVar28;\n    }\n    else {\n      uVar40 = *(byte *)(*(int *)(puVar50 + -0x3c) + (-uVar20 & uVar20)) - 2;\n    }\n    iVar42 = *(int *)(puVar50 + -0x38);\n    p_Var39->_mp_alloc = uVar20 >> (uVar40 & 0x1f);\n    iVar28 = *(int *)(puVar50 + -0x60);\n    *(uint *)(puVar50 + -0x40) =\n         *(int *)(puVar50 + -0x40) + *(byte *)(iVar42 + (uVar6 - 1)) + uVar40;\n    if ((uint)(iVar28 - iVar5) <= uVar6) {\n      uVar6 = iVar28 - iVar5;\n    }\n    iVar42 = iVar5;\n    if (uVar6 != 0) goto LAB_00022234;\nLAB_00022534:\n    p_Var34 = (mpz_ptr)&DAT_00000001;\n    *(mpz_ptr *)(puVar50 + -0x4c) = p_Var39;\n  } while( true );\n}" primitive_type (function_declarator "mpz_goetgheluck_bin_uiui(mpz_ptr r,ulong n,ulong k)" identifier (parameter_list "(mpz_ptr r,ulong n,ulong k)" ( (parameter_declaration "mpz_ptr r" type_identifier identifier) , (parameter_declaration "ulong n" type_identifier identifier) , (parameter_declaration "ulong k" type_identifier identifier) ))) (compound_statement "{\n  bool bVar1;\n  bool bVar2;\n  mpz_ptr p_Var3;\n  undefined *puVar4;\n  int iVar5;\n  uint uVar6;\n  uint *puVar7;\n  uint *puVar8;\n  undefined4 uVar9;\n  uint uVar10;\n  uint uVar11;\n  uint *puVar12;\n  undefined1 *puVar13;\n  undefined *puVar14;\n  ulong uVar15;\n  mp_limb_t mVar16;\n  tmp_reentrant_t *ptVar17;\n  undefined4 *puVar18;\n  mpz_ptr r_00;\n  int *piVar19;\n  uint uVar20;\n  undefined4 *puVar21;\n  mpz_ptr p_Var22;\n  mpz_ptr p_Var23;\n  uint uVar24;\n  mpz_ptr p_Var25;\n  mp_limb_t *pmVar26;\n  uint uVar27;\n  int iVar28;\n  ulong uVar29;\n  uint uVar30;\n  uint uVar31;\n  int iVar32;\n  mpz_ptr k_00;\n  mpz_ptr p_Var33;\n  mpz_ptr p_Var34;\n  int *piVar35;\n  int iVar36;\n  int *piVar37;\n  uint uVar38;\n  mpz_ptr p_Var39;\n  uint uVar40;\n  mpz_ptr p_Var41;\n  int iVar42;\n  mp_limb_t **ppmVar43;\n  uint uVar44;\n  int iVar45;\n  uint uVar46;\n  undefined *puVar47;\n  code *pcVar48;\n  undefined1 *puVar49;\n  undefined1 *puVar50;\n  undefined1 *puVar51;\n  undefined1 *puVar52;\n  undefined1 *puVar53;\n  undefined1 *puVar54;\n  code *pcVar55;\n  code *pcVar56;\n  uint uVar57;\n  uint uVar58;\n  undefined1 auStack_48 [16];\n  tmp_reentrant_t *__tmp_marker;\n  int local_2c;\n  \n  puVar4 = PTR___stack_chk_guard_0009d540;\n  puVar49 = auStack_48;\n  uVar40 = n - 5 | 1;\n  __tmp_marker = (tmp_reentrant_t *)0x0;\n  local_2c = *(int *)PTR___stack_chk_guard_0009d540;\n  uVar20 = (uVar40 / 0x60 + 1) * 4;\n  if (uVar20 < 0x7f01) {\n    iVar5 = -(uVar20 + 7 & 0xfffffff8);\n    puVar49 = auStack_48 + iVar5;\n    puVar13 = &stack0xffffffc8 + iVar5;\n  }\n  else {\n    puVar13 = (undefined1 *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&__tmp_marker);\n  }\n  iVar5 = (*(code *)PTR___gmp_primesieve_0009d144)(puVar13,n);\n  uVar6 = iVar5 + 1;\n  puVar7 = (uint *)(PTR___gmp_limbroots_table_0009d3d4 + 0x1c);\n  uVar20 = 8;\n  do {\n    uVar27 = uVar20;\n    uVar10 = *puVar7;\n    puVar7 = puVar7 + -1;\n    uVar20 = uVar27 - 1;\n  } while (uVar10 < n);\n  if (uVar27 == 0) {\n    trap(7);\n  }\n  puVar7 = (uint *)(PTR___gmp_limbroots_table_0009d3d4 + 0x1c);\n  uVar20 = 8;\n  if ((uVar6 / uVar27 + 1) * 4 < 0x7f01) {\n    do {\n      uVar27 = uVar20;\n      uVar10 = *puVar7;\n      puVar7 = puVar7 + -1;\n      uVar20 = uVar27 - 1;\n    } while (uVar10 < n);\n    if (uVar27 == 0) {\n      trap(7);\n    }\n    iVar5 = -((uVar6 / uVar27) * 4 + 0xb & 0xfffffff8);\n    puVar50 = puVar49 + iVar5;\n    puVar7 = (uint *)(puVar49 + iVar5 + 0x10);\n  }\n  else {\n    for (puVar14 = PTR___gmp_limbroots_table_0009d3d4 + 0x18; *(uint *)(puVar14 + 4) < n;\n        puVar14 = puVar14 + -4) {\n      uVar20 = uVar20 - 1;\n    }\n    if (uVar20 == 0) {\n      trap(7);\n    }\n    puVar7 = (uint *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)\n                               (&__tmp_marker,(uVar6 / uVar20 + 1) * 4);\n    puVar50 = puVar49;\n  }\n  uVar20 = n - k;\n  if (n == 0) {\n    trap(7);\n  }\n  uVar57 = 0xffffffff / n;\n  uVar44 = n >> 1;\n  uVar10 = uVar20 - (uVar20 >> 1 & 0x55555555);\n  uVar27 = n - (uVar44 & 0x55555555);\n  uVar6 = k - (k >> 1 & 0x55555555);\n  uVar30 = (uVar10 >> 2 & 0x33333333) + (uVar10 & 0x33333333);\n  uVar27 = (uVar27 >> 2 & 0x33333333) + (uVar27 & 0x33333333);\n  uVar10 = (uVar6 >> 2 & 0x33333333) + (uVar6 & 0x33333333);\n  uVar6 = (uVar30 >> 4) + uVar30 & 0xf0f0f0f;\n  uVar27 = (uVar27 >> 4) + uVar27 & 0xf0f0f0f;\n  uVar6 = (uVar6 >> 8) + uVar6;\n  uVar10 = (uVar10 >> 4) + uVar10 & 0xf0f0f0f;\n  uVar27 = (uVar27 >> 8) + uVar27;\n  uVar10 = (uVar10 >> 8) + uVar10;\n  uVar6 = 1 << ((uVar10 >> 0x10) + uVar10 +\n                (((uVar6 >> 0x10) + uVar6 & 0xff) - ((uVar27 >> 0x10) + uVar27 & 0xff)) & 0x1f);\n  bVar1 = uVar57 < uVar6;\n  if (bVar1) {\n    *puVar7 = uVar6;\n    uVar6 = 1;\n  }\n  uVar10 = 0;\n  uVar15 = n;\n  uVar29 = k;\n  do {\n    bVar2 = uVar15 % 3 < uVar29 % 3 + uVar10;\n    if (bVar2) {\n      uVar6 = uVar6 * 3;\n    }\n    uVar10 = (uint)bVar2;\n    bVar2 = 8 < uVar15;\n    uVar15 = uVar15 / 3;\n    uVar29 = uVar29 / 3;\n  } while (bVar2);\n  uVar10 = n - 1;\n  if (uVar10 < 0x10000) {\n    iVar5 = 0x18;\n    if (uVar10 < 0x100) {\n      iVar5 = 0x20;\n    }\n    iVar28 = 9;\n    if (uVar10 < 0x100) {\n      iVar28 = 1;\n    }\n  }\n  else {\n    iVar5 = 8;\n    if (uVar10 < 0x1000000) {\n      iVar5 = 0x10;\n    }\n    iVar28 = 0x19;\n    if (uVar10 < 0x1000000) {\n      iVar28 = 0x11;\n    }\n  }\n  iVar32 = 0;\n  uVar31 = 1;\n  uVar46 = (((1 << ((int)(0x1f - (iVar5 - (uint)(byte)PTR___gmpn_clz_tab_0009d18c[uVar10 >> iVar28])\n                         ) >> 1 & 0x1fU)) +\n            (1 << ((int)(0x1e - (iVar5 - (uint)(byte)PTR___gmpn_clz_tab_0009d18c[uVar10 >> iVar28]))\n                   >> 1 & 0x1fU))) - 5U | 1) / 3;\n  uVar30 = uVar46 + 1;\n  uVar10 = (uint)bVar1;\n  uVar27 = 0;\n  do {\n    uVar38 = uVar27 + 1;\n    uVar24 = uVar10;\n    if ((uVar31 & *(uint *)(puVar13 + iVar32 * 4)) == 0) {\n      uVar11 = (uVar38 & 1) + 1 + uVar38 * 3;\n      if (uVar57 < uVar6) {\n        uVar24 = uVar10 + 1;\n        puVar7[uVar10] = uVar6;\n        uVar6 = 1;\n      }\n      uVar10 = 0;\n      uVar15 = k;\n      uVar29 = n;\n      do {\n        if (uVar11 == 0) {\n          trap(7);\n        }\n        if (uVar11 == 0) {\n          trap(7);\n        }\n        uVar58 = uVar29 / uVar11;\n        bVar1 = uVar29 % uVar11 < uVar15 % uVar11 + uVar10;\n        if (bVar1) {\n          uVar6 = uVar6 * uVar11;\n        }\n        uVar10 = (uint)bVar1;\n        uVar15 = uVar15 / uVar11;\n        uVar29 = uVar58;\n      } while (uVar11 <= uVar58);\n    }\n    uVar31 = uVar31 * 2 - ((int)uVar31 >> 0x1f);\n    bVar1 = uVar27 != uVar46;\n    iVar32 = iVar32 + (uVar31 & 1);\n    uVar10 = uVar24;\n    uVar27 = uVar38;\n  } while (bVar1);\n  uVar27 = uVar30 >> 5;\n  uVar10 = 1 << (uVar30 & 0x1f);\n  uVar31 = (uVar44 - 5 | 1) / 3;\n  do {\n    while( true ) {\n      uVar30 = uVar30 + 1;\n      uVar46 = uVar24;\n      if ((uVar10 & *(uint *)(puVar13 + uVar27 * 4)) == 0) break;\nLAB_00021e80:\n      uVar10 = uVar10 * 2 - ((int)uVar10 >> 0x1f);\n      uVar27 = uVar27 + (uVar10 & 1);\n      uVar24 = uVar46;\n      if (uVar31 < uVar30) goto LAB_00021f04;\n    }\n    uVar11 = (uVar30 & 1) + 1 + uVar30 * 3;\n    if (uVar11 == 0) {\n      trap(7);\n    }\n    if (uVar11 == 0) {\n      trap(7);\n    }\n    if (k % uVar11 <= n % uVar11) goto LAB_00021e80;\n    if (uVar57 << 1 < uVar6) {\n      uVar46 = uVar24 + 1;\n      puVar7[uVar24] = uVar6;\n      uVar6 = uVar11;\n      goto LAB_00021e80;\n    }\n    uVar10 = uVar10 * 2 - ((int)uVar10 >> 0x1f);\n    uVar6 = uVar6 * uVar11;\n    uVar27 = uVar27 + (uVar10 & 1);\n  } while (uVar30 <= uVar31);\nLAB_00021f04:\n  uVar20 = (uVar20 - 5 | 1) / 3 + 1;\n  uVar27 = uVar20 >> 5;\n  uVar40 = uVar40 / 3;\n  uVar10 = 1 << (uVar20 & 0x1f);\n  do {\n    while( true ) {\n      uVar20 = uVar20 + 1;\n      uVar30 = uVar46;\n      if ((uVar10 & *(uint *)(puVar13 + uVar27 * 4)) == 0) break;\nLAB_00021f58:\n      uVar10 = uVar10 * 2 - ((int)uVar10 >> 0x1f);\n      uVar27 = uVar27 + (uVar10 & 1);\n      uVar46 = uVar30;\n      if (uVar40 < uVar20) goto LAB_00021fb8;\n    }\n    mVar16 = (uVar20 & 1) + 1 + uVar20 * 3;\n    if ((uVar57 & 0x7fffffff) < uVar6) {\n      uVar30 = uVar46 + 1;\n      puVar7[uVar46] = uVar6;\n      uVar6 = mVar16;\n      goto LAB_00021f58;\n    }\n    uVar10 = uVar10 * 2 - ((int)uVar10 >> 0x1f);\n    uVar6 = uVar6 * mVar16;\n    uVar27 = uVar27 + (uVar10 & 1);\n  } while (uVar20 <= uVar40);\nLAB_00021fb8:\n  if (uVar30 == 0) {\n    *r->_mp_d = uVar6;\n    r->_mp_size = 1;\n    uVar20 = 0;\n    ptVar17 = __tmp_marker;\n  }\n  else {\n    uVar20 = uVar30 + 1;\n    puVar7[uVar30] = uVar6;\n    (*(code *)PTR___gmpz_prodlimbs_0009d284)(r);\n    ptVar17 = __tmp_marker;\n  }\n  __tmp_marker = ptVar17;\n  if (ptVar17 != (tmp_reentrant_t *)0x0) {\n    (*(code *)PTR___gmp_tmp_reentrant_free_0009d618)();\n  }\n  if (local_2c == *(int *)puVar4) {\n    return;\n  }\n  pcVar55 = mpz_bdiv_bin_uiui;\n  puVar14 = PTR___stack_chk_fail_0009d4d0;\n  (*(code *)PTR___stack_chk_fail_0009d4d0)();\n  puVar47 = puVar14 + 0x82fa4;\n  puVar51 = puVar50 + -0x90;\n  puVar54 = puVar50 + -0x90;\n  puVar53 = puVar50 + -0x90;\n  *(mpz_ptr *)(puVar50 + -0x24) = r;\n  *(undefined1 **)(puVar50 + -8) = auStack_48;\n  puVar21 = *(undefined4 **)(puVar14 + 0x7b4a4);\n  *(code **)(puVar50 + -4) = pcVar55;\n  *(tmp_reentrant_t **)(puVar50 + -0x6c) = ptVar17;\n  *(uint *)(puVar50 + -0xc) = uVar44;\n  *(ulong *)(puVar50 + -0x10) = k;\n  *(uint *)(puVar50 + -0x14) = uVar40;\n  uVar40 = (((uint)puVar7 >> 5) + 1) * 3;\n  *(uint *)(puVar50 + -0x18) = uVar38;\n  *(undefined1 **)(puVar50 + -0x1c) = puVar13;\n  *(ulong *)(puVar50 + -0x20) = n;\n  *(undefined **)(puVar50 + -0x28) = puVar4;\n  *(undefined **)(puVar50 + -0x78) = puVar47;\n  *(undefined4 **)(puVar50 + -0x70) = puVar21;\n  *(undefined4 *)(puVar50 + -0x30) = 0;\n  *(undefined4 *)(puVar50 + -0x2c) = *puVar21;\n  if (uVar40 < 0x2a) {\n    uVar40 = 0x27;\n    if (uVar20 < 0x28) {\n      uVar40 = uVar20;\n    }\n    uVar40 = (uVar40 + 1) * 4;\n  }\n  else {\n    uVar40 = ((int)uVar40 >> 1) + 0x13;\n    if (uVar20 < uVar40) {\n      uVar40 = uVar20;\n    }\n    uVar40 = (uVar40 + 1) * 4;\n    pcVar55 = *(code **)(puVar14 + 0x7b254);\n    if (0x7f00 < uVar40) {\n      *(uint *)(puVar50 + 8) = uVar20;\n      p_Var41 = (mpz_ptr)(*pcVar55)(puVar50 + -0x30);\n      puVar47 = *(undefined **)(puVar50 + -0x78);\n      uVar20 = *(uint *)(puVar50 + 8);\n      goto LAB_0002214c;\n    }\n  }\n  iVar5 = -(uVar40 + 7 & 0xfffffff8);\n  puVar51 = puVar50 + iVar5 + -0x90;\n  p_Var41 = (mpz_ptr)(puVar50 + iVar5 + -0x78);\nLAB_0002214c:\n  iVar28 = *(int *)(puVar47 + -0x7c6c);\n  p_Var39 = (mpz_ptr)(puVar51 + -0x40);\n  puVar12 = (uint *)(iVar28 + 0x1c);\n  iVar5 = 8;\n  do {\n    iVar32 = iVar5;\n    puVar8 = (uint *)*puVar12;\n    puVar12 = puVar12 + -1;\n    iVar5 = iVar32 + -1;\n  } while (puVar8 < puVar7);\n  *(int *)(puVar50 + -0x68) = iVar32;\n  puVar12 = (uint *)(iVar28 + 0x1c);\n  uVar40 = 8;\n  do {\n    uVar6 = uVar40;\n    uVar10 = *puVar12;\n    puVar12 = puVar12 + -1;\n    uVar40 = uVar6 - 1;\n  } while (uVar10 < uVar20);\n  uVar9 = *(undefined4 *)(puVar47 + -0x7d3c);\n  iVar5 = 0x11;\n  *(undefined4 *)(puVar50 + -0x48) = 0;\n  *(undefined4 *)(puVar50 + -100) = uVar9;\n  iVar28 = *(int *)(puVar47 + -0x7e20);\n  *(undefined4 *)(puVar50 + -0x5c) = 0x3fffffff;\n  iVar32 = (int)puVar7 + (1 - uVar20);\n  *(uint *)(puVar50 + -0x40) = (uint)*(byte *)(iVar28 + 7);\n  *(undefined4 *)(puVar50 + -0x3c) = *(undefined4 *)(puVar47 + -0x7eb4);\n  *(uint *)(puVar50 + -0x60) = uVar20 + 1;\n  iVar28 = *(int *)(puVar50 + -0x60);\n  p_Var41->_mp_alloc = 1;\n  *(undefined4 *)(puVar50 + -0x44) = 1;\n  *(int *)(puVar50 + -0x34) = *(int *)(puVar47 + -0x7fe4) + -0x31a4;\n  *(int *)(puVar50 + -0x38) = *(int *)(puVar47 + -0x7fd4) + 0x3630;\n  p_Var39->_mp_alloc = 0x260eeeeb;\n  if (iVar28 - 0x11U <= uVar6) {\n    uVar6 = iVar28 - 0x11U;\n  }\n  p_Var33 = (mpz_ptr)&DAT_00000001;\n  iVar42 = iVar5;\n  if (uVar6 == 0) goto LAB_00022534;\nLAB_00022234:\n  p_Var34 = (mpz_ptr)&DAT_00000001;\n  iVar45 = *(int *)(puVar50 + -0x40);\n  *(mpz_ptr *)(puVar50 + -0x4c) = p_Var33;\n  *(mpz_ptr *)(puVar50 + -0x50) = p_Var41;\n  do {\n    iVar42 = iVar5 + uVar6;\n    uVar20 = (**(code **)(*(int *)(puVar50 + -0x34) + (uVar6 - 1) * 4))(iVar5);\n    if ((uVar20 & 0xff) == 0) {\n      uVar40 = uVar20 >> 8;\n      iVar5 = 6;\n      if ((uVar40 & 0xff) == 0) {\n        uVar40 = uVar20 >> 0x10;\n        iVar5 = 0xe;\n        if ((uVar40 & 0xff) == 0) {\n          uVar40 = uVar20 >> 0x18;\n          iVar5 = 0x1e;\n          if (uVar40 != 0) {\n            iVar5 = 0x16;\n          }\n        }\n      }\n      uVar40 = (uint)*(byte *)(*(int *)(puVar50 + -0x3c) + (-uVar40 & uVar40)) + iVar5;\n    }\n    else {\n      uVar40 = *(byte *)(*(int *)(puVar50 + -0x3c) + (-uVar20 & uVar20)) - 2;\n    }\n    iVar45 = iVar45 + *(byte *)(*(int *)(puVar50 + -0x38) + (uVar6 - 1)) + uVar40;\n    iVar5 = (**(code **)(*(int *)(puVar50 + -0x78) + -0x7f9c))\n                      (p_Var39,p_Var39,p_Var34,uVar20 >> (uVar40 & 0x1f));\n    puVar47 = *(undefined **)(puVar50 + -0x78);\n    if ((uint)(iVar28 - iVar42) <= uVar6) {\n      uVar6 = iVar28 - iVar42;\n    }\n    piVar35 = &p_Var39->_mp_alloc + (int)p_Var34;\n    p_Var34 = (mpz_ptr)((int)&p_Var34->_mp_alloc + (uint)(iVar5 != 0));\n    *piVar35 = iVar5;\n    if (uVar6 == 0) {\n      p_Var41 = *(mpz_ptr *)(puVar50 + -0x50);\n      p_Var33 = *(mpz_ptr *)(puVar50 + -0x4c);\n      *(int *)(puVar50 + -0x40) = iVar45;\n      *(int **)(puVar50 + -0x4c) =\n           &p_Var39->_mp_alloc + (int)((int)&p_Var34->_mp_alloc + *(int *)(puVar50 + -0x5c));\n      goto LAB_00022340;\n    }\n    iVar5 = iVar42;\n  } while (p_Var34 != (mpz_ptr)0x14);\n  p_Var33 = *(mpz_ptr *)(puVar50 + -0x4c);\n  p_Var41 = *(mpz_ptr *)(puVar50 + -0x50);\n  *(int *)(puVar50 + -0x40) = iVar45;\n  *(int **)(puVar50 + -0x4c) = &p_Var39[6]._mp_size;\nLAB_00022340:\n  do {\n    iVar45 = iVar42 - *(int *)(puVar50 + -0x44);\n    iVar28 = *(int *)(puVar50 + -0x5c);\n    iVar5 = iVar45;\n    if (iVar45 != 0) {\n      *(uint *)(puVar50 + -0x44) = uVar6;\n      *(mpz_ptr *)(puVar50 + -0x50) = p_Var34;\n      *(mpz_ptr *)(puVar50 + -0x54) = p_Var39;\n      *(int *)(puVar50 + -0x58) = iVar42;\n      iVar5 = *(int *)(puVar50 + -0x48);\n      iVar42 = *(int *)(puVar50 + -0x68);\n      iVar28 = iVar32;\n      do {\n        iVar36 = iVar45;\n        if (iVar42 <= iVar45) {\n          iVar36 = iVar42;\n        }\n        iVar32 = iVar28 + iVar36;\n        uVar20 = (**(code **)(*(int *)(puVar50 + -0x34) + (iVar36 + -1) * 4))(iVar28);\n        if ((uVar20 & 0xff) == 0) {\n          uVar40 = uVar20 >> 8;\n          iVar28 = 6;\n          if ((uVar40 & 0xff) == 0) {\n            uVar40 = uVar20 >> 0x10;\n            iVar28 = 0xe;\n            if ((uVar40 & 0xff) == 0) {\n              uVar40 = uVar20 >> 0x18;\n              iVar28 = 0x16;\n              if (uVar40 == 0) {\n                iVar28 = 0x1e;\n              }\n            }\n          }\n          uVar40 = (uint)*(byte *)(*(int *)(puVar50 + -0x3c) + (-uVar40 & uVar40)) + iVar28;\n        }\n        else {\n          uVar40 = *(byte *)(*(int *)(puVar50 + -0x3c) + (-uVar20 & uVar20)) - 2;\n        }\n        iVar45 = iVar45 - iVar36;\n        iVar5 = iVar5 + *(byte *)(*(int *)(puVar50 + -0x38) + iVar36 + -1) + uVar40;\n        iVar28 = (**(code **)(*(int *)(puVar50 + -0x78) + -0x7f9c))\n                           (p_Var41,p_Var41,p_Var33,uVar20 >> (uVar40 & 0x1f));\n        puVar47 = *(undefined **)(puVar50 + -0x78);\n        piVar35 = &p_Var41->_mp_alloc + (int)p_Var33;\n        p_Var33 = (mpz_ptr)((int)&p_Var33->_mp_alloc + (uint)(iVar28 != 0));\n        *piVar35 = iVar28;\n        iVar28 = iVar32;\n      } while (iVar45 != 0);\n      uVar6 = *(uint *)(puVar50 + -0x44);\n      p_Var34 = *(mpz_ptr *)(puVar50 + -0x50);\n      p_Var39 = *(mpz_ptr *)(puVar50 + -0x54);\n      iVar42 = *(int *)(puVar50 + -0x58);\n      *(int *)(puVar50 + -0x48) = iVar5;\n      iVar28 = *(int *)(puVar50 + -0x5c);\n    }\n    iVar45 = p_Var39->_mp_alloc;\n    pcVar55 = *(code **)(puVar47 + -0x7bc0);\n    uVar20 = (uint)*(byte *)(*(int *)(puVar50 + -100) + ((uint)(iVar45 << 0x18) >> 0x19));\n    p_Var33 = (mpz_ptr)((int)p_Var33 +\n                       (((uint)(&p_Var41->_mp_alloc)[(int)((int)&p_Var33->_mp_alloc + iVar28)] <\n                         **(uint **)(puVar50 + -0x4c) ^ 1) - (int)p_Var34));\n    iVar28 = uVar20 * 2 - uVar20 * uVar20 * iVar45;\n    if ((int)p_Var33 < (int)p_Var34) {\n      p_Var34 = p_Var33;\n    }\n    *(mpz_ptr *)(puVar51 + -0x48) = p_Var34;\n    *(int *)(puVar51 + -0x44) = iVar28 * iVar28 * iVar45 + iVar28 * -2;\n    p_Var22 = p_Var41;\n    p_Var25 = p_Var33;\n    (*pcVar55)(p_Var41,p_Var41,p_Var33,p_Var39);\n    iVar28 = *(int *)(puVar50 + -0x78);\n    if (uVar6 == 0) {\n      if (*(int *)(puVar50 + -0x48) == *(int *)(puVar50 + -0x40)) {\n        p_Var33 = (mpz_ptr)((int)p_Var33 -\n                           (uint)(*(int *)((int)p_Var41 + (int)p_Var33 * 4 + -4) == 0));\n        pcVar55 = *(code **)(iVar28 + -0x7a80);\n        if ((int)p_Var33 <= **(int **)(puVar50 + -0x6c)) goto LAB_00022600;\nLAB_00022734:\n        p_Var22 = p_Var33;\n        puVar21 = (undefined4 *)(*pcVar55)(*(undefined4 *)(puVar50 + -0x6c));\n        iVar28 = *(int *)(puVar50 + -0x78);\n      }\n      else {\n        p_Var22 = p_Var41;\n        p_Var25 = p_Var33;\n        iVar45 = (**(code **)(iVar28 + -0x7ad4))(p_Var41);\n        iVar28 = *(int *)(puVar50 + -0x78);\n        puVar13 = (undefined1 *)((int)&p_Var33->_mp_alloc + (uint)(iVar45 != 0));\n        *(int *)((int)p_Var41 + (int)p_Var33 * 4) = iVar45;\n        p_Var33 = (mpz_ptr)(puVar13 + -(uint)(*(int *)((int)p_Var41 + (int)puVar13 * 4 + -4) == 0));\n        pcVar55 = *(code **)(iVar28 + -0x7a80);\n        if (**(int **)(puVar50 + -0x6c) < (int)p_Var33) goto LAB_00022734;\nLAB_00022600:\n        puVar21 = *(undefined4 **)(*(int *)(puVar50 + -0x6c) + 8);\n      }\n      *(mpz_ptr *)(*(int *)(puVar50 + -0x6c) + 4) = p_Var33;\n      if (p_Var33 != (mpz_ptr)0x0) {\n        puVar13 = (undefined1 *)((int)&p_Var33[-1]._mp_d + 3);\n        p_Var22 = (mpz_ptr)p_Var41->_mp_alloc;\n        if (puVar13 != (undefined1 *)0x0) {\n          puVar18 = puVar21;\n          ppmVar43 = (mp_limb_t **)&p_Var41->_mp_size;\n          do {\n            *puVar18 = p_Var22;\n            p_Var41 = (mpz_ptr)(ppmVar43 + 1);\n            puVar13 = puVar13 + -1;\n            p_Var22 = (mpz_ptr)*ppmVar43;\n            puVar18 = puVar18 + 1;\n            ppmVar43 = (mp_limb_t **)p_Var41;\n          } while (puVar13 != (undefined1 *)0x0);\n          p_Var33 = (mpz_ptr)((int)p_Var33 * 4);\n          puVar21 = (undefined4 *)((int)puVar21 + (int)&p_Var33[-1]._mp_d);\n        }\n        *puVar21 = p_Var22;\n      }\n      r_00 = *(mpz_ptr *)(puVar50 + -0x30);\n      if (r_00 != (mpz_ptr)0x0) {\n        (**(code **)(iVar28 + -0x7a28))();\n        iVar28 = *(int *)(puVar50 + -0x78);\n      }\n      if (*(int *)(puVar50 + -0x2c) == **(int **)(puVar50 + -0x70)) {\n        return;\n      }\n      pcVar55 = *(code **)(iVar28 + -0x7b70);\n      pcVar56 = __gmpz_bin_uiui;\n      (*pcVar55)();\n      pcVar48 = pcVar55 + 0x8289c;\n      *(mpz_ptr *)(puVar51 + -0x78) = p_Var34;\n      piVar35 = *(int **)(pcVar55 + 0x7ad9c);\n      *(code **)(puVar51 + -0xf0) = pcVar48;\n      *(int *)(puVar51 + -0x74) = iVar42;\n      *(code **)(puVar51 + -0x5c) = pcVar56;\n      *(undefined1 **)(puVar51 + -0x60) = puVar50 + -0x90;\n      *(int *)(puVar51 + -100) = iVar5;\n      *(int *)(puVar51 + -0x68) = iVar32;\n      *(mpz_ptr *)(puVar51 + -0x6c) = p_Var41;\n      *(mpz_ptr *)(puVar51 + -0x70) = p_Var39;\n      *(mpz_ptr *)(puVar51 + -0x7c) = p_Var33;\n      *(undefined4 *)(puVar51 + -0x80) = 0;\n      *(int *)(puVar51 + -0x84) = *piVar35;\n      p_Var34 = r_00;\n      p_Var23 = p_Var22;\n      if (p_Var22 < p_Var25) {\n        r_00->_mp_size = 0;\n        k_00 = (mpz_ptr)0x0;\n      }\n      else {\n        k_00 = p_Var25;\n        if ((mpz_ptr)((int)p_Var22 - (int)p_Var25) <= p_Var25) {\n          k_00 = (mpz_ptr)((int)p_Var22 - (int)p_Var25);\n        }\n        p_Var25 = k_00;\n        p_Var39 = p_Var22;\n        if (k_00 < (mpz_ptr)0x2) {\n          if (k_00 == (mpz_ptr)0x0) {\n            p_Var39 = (mpz_ptr)&DAT_00000001;\n          }\n          *r_00->_mp_d = (mp_limb_t)p_Var39;\n          r_00->_mp_size = 1;\n          puVar53 = puVar50 + -0x90;\n        }\n        else if (p_Var22 < (mpz_ptr)0x23) {\n          p_Var3 = k_00 + -1;\n          iVar5 = *(int *)(pcVar55 + 0x7aa7c);\n          p_Var23 = (mpz_ptr)r_00->_mp_d;\n          uVar20 = (int)p_Var22 - (int)k_00;\n          p_Var39 = (mpz_ptr)(iVar5 + ((uint)p_Var22 >> 1));\n          k_00 = (mpz_ptr)(iVar5 + ((uint)k_00 >> 1));\n          p_Var25 = (mpz_ptr)(uint)*(byte *)((int)&k_00[-1]._mp_d + 3);\n          p_Var34 = (mpz_ptr)(uint)*(byte *)(iVar5 + (uVar20 >> 1) + -1);\n          p_Var23->_mp_alloc =\n               *(int *)((int)((int)&p_Var3->_mp_d + 2) * 4 + *(int *)(pcVar55 + 0x7a8c8) + 0x35b4) *\n               *(int *)(*(int *)(pcVar55 + 0x7ad64) + (int)p_Var22 * 4) *\n               *(int *)((uVar20 - 2) * 4 + *(int *)(pcVar55 + 0x7a8c8) + 0x35b4) <<\n               (((uint)*(byte *)((int)&p_Var39[-1]._mp_d + 3) - (int)p_Var25) - (int)p_Var34 & 0x1f)\n          ;\n          r_00->_mp_size = 1;\n          puVar53 = puVar50 + -0x90;\n        }\n        else if (k_00 < (mpz_ptr)&DAT_00000011) {\n          mpz_smallk_bin_uiui(r_00,(ulong)p_Var22,(ulong)k_00);\n          pcVar48 = *(code **)(puVar51 + -0xf0);\n          puVar53 = puVar50 + -0x90;\n        }\n        else if (k_00 < (mpz_ptr)&DAT_00000021) {\n          uVar20 = (uint)k_00 >> 1;\n          uVar40 = (int)p_Var22 - uVar20;\n          mpz_smallk_bin_uiui(r_00,(ulong)p_Var22,uVar20);\n          iVar5 = *(int *)(puVar51 + -0xf0);\n          uVar6 = (int)k_00 - uVar20;\n          if (uVar40 < 0x23) {\n            puVar54 = (undefined1 *)r_00->_mp_size;\n            if ((int)puVar54 < r_00->_mp_alloc) {\n              p_Var33 = (mpz_ptr)r_00->_mp_d;\n            }\n            else {\n              p_Var33 = (mpz_ptr)(**(code **)(iVar5 + -0x7a80))(r_00,puVar54 + 1);\n              iVar5 = *(int *)(puVar51 + -0xf0);\n            }\n            iVar32 = *(int *)(iVar5 + -0x7e20);\n            iVar28 = *(int *)(iVar5 + -0x7fd4) + 0x35b4;\n            iVar28 = (**(code **)(iVar5 + -0x7f9c))\n                               (p_Var33,p_Var33,puVar54,\n                                *(int *)((((int)p_Var22 - (int)k_00) - 2U) * 4 + iVar28) *\n                                *(int *)(*(int *)(iVar5 + -0x7b38) + uVar40 * 4) *\n                                *(int *)((uVar6 - 2) * 4 + iVar28) <<\n                                (((uint)*(byte *)(iVar32 + (uVar40 >> 1) + -1) -\n                                 (uint)*(byte *)(iVar32 + (uVar6 >> 1) + -1)) -\n                                 (uint)*(byte *)(iVar32 + ((uint)((int)p_Var22 - (int)k_00) >> 1) +\n                                                -1) & 0x1f));\n            iVar5 = *(int *)(puVar51 + -0xf0);\n            k_00 = (mpz_ptr)(puVar54 + (iVar28 != 0));\n            (&p_Var33->_mp_alloc)[(int)puVar54] = iVar28;\n          }\n          else {\n            *(undefined4 *)(puVar51 + -0xe4) = 0x15;\n            *(undefined1 **)(puVar51 + -0xdc) = puVar51 + -0xd8;\n            mpz_smallk_bin_uiui((mpz_ptr)(puVar51 + -0xe4),uVar40,uVar6);\n            (**(code **)(*(int *)(puVar51 + -0xf0) + -0x7ba8))(r_00,r_00,(mpz_ptr)(puVar51 + -0xe4))\n            ;\n            iVar5 = *(int *)(puVar51 + -0xf0);\n            p_Var33 = (mpz_ptr)r_00->_mp_d;\n            k_00 = (mpz_ptr)r_00->_mp_size;\n          }\n          pcVar55 = *(code **)(iVar5 + -0x7bb4);\n          p_Var41 = (mpz_ptr)((uint)*(byte *)((uVar6 - 8) + *(int *)(iVar5 + -0x7fd4) + 0x3550) -\n                             (uint)(uVar20 != uVar6));\n          *(undefined4 *)(puVar51 + -0xf8) =\n               *(undefined4 *)((uVar6 - 8) * 4 + *(int *)(iVar5 + -0x7fd4) + 0x355c);\n          *(mpz_ptr *)(puVar51 + -0xf4) = p_Var41;\n          p_Var34 = p_Var33;\n          p_Var23 = p_Var33;\n          p_Var25 = k_00;\n          (*pcVar55)();\n          pcVar48 = *(code **)(puVar51 + -0xf0);\n          if (*(int *)((int)p_Var33 + (int)k_00 * 4 + -4) == 0) {\n            piVar37 = &p_Var33->_mp_alloc + (int)k_00;\n            do {\n              piVar19 = piVar37 + -2;\n              k_00 = (mpz_ptr)((int)&k_00[-1]._mp_d + 3);\n              piVar37 = piVar37 + -1;\n            } while (*piVar19 == 0);\n          }\n          r_00->_mp_size = (int)k_00;\n          puVar53 = puVar54;\n        }\n        else if ((k_00 < (mpz_ptr)0x3e8) || (k_00 <= (mpz_ptr)((uint)p_Var22 >> 4))) {\n          mpz_bdiv_bin_uiui(r_00,(ulong)p_Var22,(ulong)k_00);\n          pcVar48 = *(code **)(puVar51 + -0xf0);\n          puVar53 = puVar50 + -0x90;\n        }\n        else {\n          mpz_goetgheluck_bin_uiui(r_00,(ulong)p_Var22,(ulong)k_00);\n          pcVar48 = *(code **)(puVar51 + -0xf0);\n          puVar53 = puVar50 + -0x90;\n        }\n      }\n      if (*(int *)(puVar51 + -0x84) == *piVar35) {\n        return;\n      }\n      pcVar55 = *(code **)(pcVar48 + -0x7b70);\n      uVar9 = 0x22b64;\n      (*pcVar55)();\n      pcVar48 = pcVar55 + 0x824d0;\n      puVar52 = puVar51 + -0x160;\n      *(mpz_ptr *)(puVar51 + -0x118) = r_00;\n      *(mpz_ptr *)(puVar51 + -0x124) = k_00;\n      piVar37 = *(int **)(pcVar55 + 0x7a9d0);\n      uVar20 = p_Var25->_mp_size;\n      *(undefined1 **)(puVar51 + -0x110) = puVar53;\n      *(mpz_ptr *)(puVar51 + -0x114) = p_Var39;\n      *(int **)(puVar51 + -0x11c) = piVar35;\n      *(mpz_ptr *)(puVar51 + -0x120) = p_Var33;\n      *(undefined4 *)(puVar51 + -0x10c) = uVar9;\n      *(code **)(puVar51 + -0x150) = pcVar48;\n      *(undefined4 *)(puVar51 + -0x13c) = 0;\n      p_Var39 = (mpz_ptr)p_Var23->_mp_size;\n      *(int *)(puVar51 + -300) = *piVar37;\n      if ((int)uVar20 < 0) {\n        uVar40 = uVar20 * -4;\n        *(uint *)(puVar51 + -0x138) = -uVar20;\n        if (0x7f00 < uVar40) {\n          pcVar55 = *(code **)(pcVar55 + 0x7a780);\n          goto LAB_00022c88;\n        }\nLAB_00022be4:\n        iVar5 = -(uVar40 + 7 & 0xfffffff8);\n        puVar52 = puVar51 + iVar5 + -0x160;\n        puVar13 = puVar51 + iVar5 + -0x150;\n      }\n      else {\n        uVar40 = uVar20 * 4;\n        *(uint *)(puVar51 + -0x138) = uVar20;\n        pcVar55 = *(code **)(pcVar55 + 0x7a780);\n        if (uVar40 < 0x7f01) goto LAB_00022be4;\nLAB_00022c88:\n        *(mpz_ptr *)(puVar51 + -0x144) = p_Var25;\n        puVar13 = (undefined1 *)(*pcVar55)(puVar51 + -0x13c,uVar40);\n        pcVar48 = *(code **)(puVar51 + -0x150);\n        p_Var25 = *(mpz_ptr *)(puVar51 + -0x144);\n      }\n      pcVar55 = *(code **)(pcVar48 + -0x7a68);\n      p_Var33 = (mpz_ptr)(puVar51 + -0x138);\n      *(undefined1 **)(puVar51 + -0x130) = puVar13;\n      p_Var22 = p_Var23;\n      (*pcVar55)(p_Var34,p_Var33,p_Var23,p_Var25);\n      iVar5 = *(int *)(puVar51 + -0x150);\n      if (((int)((uint)p_Var39 ^ uVar20) < 0) || (*(int *)(puVar51 + -0x134) == 0)) {\n        piVar35 = *(int **)(puVar51 + -0x13c);\n        pcVar55 = *(code **)(iVar5 + -0x7a28);\n        if (piVar35 != (int *)0x0) goto LAB_00022cc0;\n      }\n      else {\n        p_Var22 = (mpz_ptr)&DAT_00000001;\n        p_Var33 = p_Var34;\n        (**(code **)(iVar5 + -0x7c9c))(p_Var34);\n        piVar35 = *(int **)(puVar51 + -0x13c);\n        iVar5 = *(int *)(puVar51 + -0x150);\n        if (piVar35 != (int *)0x0) {\n          pcVar55 = *(code **)(iVar5 + -0x7a28);\nLAB_00022cc0:\n          (*pcVar55)();\n          iVar5 = *(int *)(puVar51 + -0x150);\n        }\n      }\n      if (*(int *)(puVar51 + -300) == *piVar37) {\n        return;\n      }\n      pcVar55 = *(code **)(iVar5 + -0x7b70);\n      uVar9 = 0x22cdc;\n      (*pcVar55)();\n      pcVar48 = pcVar55 + 0x82360;\n      *(code **)(puVar52 + -0x28) = pcVar48;\n      *(undefined4 *)(puVar52 + -4) = uVar9;\n      *(mpz_ptr *)(puVar52 + -8) = p_Var41;\n      *(mpz_ptr *)(puVar52 + -0xc) = p_Var23;\n      *(int **)(puVar52 + -0x10) = piVar37;\n      *(mpz_ptr *)(puVar52 + -0x14) = p_Var34;\n      *(mpz_ptr *)(puVar52 + -0x18) = p_Var39;\n      *(uint *)(puVar52 + -0x1c) = (uint)p_Var39 ^ uVar20;\n      if (p_Var22 == (mpz_ptr)0x0) {\n        pcVar55 = *(code **)(pcVar55 + 0x7a900);\n        (*pcVar55)();\nLAB_00022e2c:\n        piVar35 = (int *)(*pcVar55)(piVar37,p_Var34);\n        pcVar48 = *(code **)(puVar52 + -0x28);\n      }\n      else {\n        p_Var39 = (mpz_ptr)p_Var33->_mp_size;\n        if (p_Var39 == (mpz_ptr)0x0) {\n          piVar35[1] = 0;\n          return;\n        }\n        p_Var34 = p_Var39;\n        if ((int)p_Var39 < 0) {\n          p_Var34 = (mpz_ptr)-(int)p_Var39;\n        }\n        pcVar55 = *(code **)(pcVar55 + 0x7a8e0);\n        piVar37 = piVar35;\n        p_Var23 = p_Var22;\n        p_Var41 = p_Var33;\n        if (*piVar35 < (int)p_Var34) goto LAB_00022e2c;\n        piVar35 = (int *)piVar35[2];\n      }\n      pcVar55 = *(code **)(pcVar48 + -0x7d98);\n      pmVar26 = p_Var41->_mp_d;\n      *(mpz_ptr *)(puVar52 + -0x30) = p_Var23;\n      iVar5 = (*pcVar55)(piVar35,0,pmVar26,p_Var34);\n      piVar19 = piVar35 + (int)((int)&p_Var34[-1]._mp_d + 3);\n      if (iVar5 == 0) {\n        uVar20 = (uint)(*piVar19 == 0);\n        if (-1 < (int)p_Var39) {\n          iVar5 = (int)p_Var34 - uVar20;\n          goto LAB_00022d9c;\n        }\n      }\n      else {\n        if (-1 < (int)p_Var39) {\n          do {\n            iVar5 = *piVar35;\n            *piVar35 = iVar5 + 1;\n            piVar35 = piVar35 + 1;\n          } while (iVar5 + 1 == 0);\n          iVar5 = (int)p_Var34 - (uint)(*piVar19 == 0);\n          goto LAB_00022d9c;\n        }\n        uVar20 = (uint)(*piVar19 == 0);\n      }\n      iVar5 = uVar20 - (int)p_Var34;\nLAB_00022d9c:\n      piVar37[1] = iVar5;\n      return;\n    }\n    *(int *)(puVar50 + -0x44) = iVar42;\n    iVar5 = iVar42 + uVar6;\n    uVar20 = (**(code **)(*(int *)(puVar50 + -0x34) + (uVar6 - 1) * 4))(iVar42);\n    puVar47 = *(undefined **)(puVar50 + -0x78);\n    if ((uVar20 & 0xff) == 0) {\n      uVar40 = uVar20 >> 8;\n      iVar28 = 6;\n      if ((uVar40 & 0xff) == 0) {\n        uVar40 = uVar20 >> 0x10;\n        iVar28 = 0xe;\n        if ((uVar40 & 0xff) == 0) {\n          uVar40 = uVar20 >> 0x18;\n          iVar28 = 0x1e;\n          if (uVar40 != 0) {\n            iVar28 = 0x16;\n          }\n        }\n      }\n      uVar40 = (uint)*(byte *)(*(int *)(puVar50 + -0x3c) + (-uVar40 & uVar40)) + iVar28;\n    }\n    else {\n      uVar40 = *(byte *)(*(int *)(puVar50 + -0x3c) + (-uVar20 & uVar20)) - 2;\n    }\n    iVar42 = *(int *)(puVar50 + -0x38);\n    p_Var39->_mp_alloc = uVar20 >> (uVar40 & 0x1f);\n    iVar28 = *(int *)(puVar50 + -0x60);\n    *(uint *)(puVar50 + -0x40) =\n         *(int *)(puVar50 + -0x40) + *(byte *)(iVar42 + (uVar6 - 1)) + uVar40;\n    if ((uint)(iVar28 - iVar5) <= uVar6) {\n      uVar6 = iVar28 - iVar5;\n    }\n    iVar42 = iVar5;\n    if (uVar6 != 0) goto LAB_00022234;\nLAB_00022534:\n    p_Var34 = (mpz_ptr)&DAT_00000001;\n    *(mpz_ptr *)(puVar50 + -0x4c) = p_Var39;\n  } while( true );\n}" { (declaration "bool bVar1;" primitive_type identifier ;) (declaration "bool bVar2;" primitive_type identifier ;) (declaration "mpz_ptr p_Var3;" type_identifier identifier ;) (declaration "undefined *puVar4;" type_identifier (pointer_declarator "*puVar4" * identifier) ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "uint uVar6;" type_identifier identifier ;) (declaration "uint *puVar7;" type_identifier (pointer_declarator "*puVar7" * identifier) ;) (declaration "uint *puVar8;" type_identifier (pointer_declarator "*puVar8" * identifier) ;) (declaration "undefined4 uVar9;" type_identifier identifier ;) (declaration "uint uVar10;" type_identifier identifier ;) (declaration "uint uVar11;" type_identifier identifier ;) (declaration "uint *puVar12;" type_identifier (pointer_declarator "*puVar12" * identifier) ;) (declaration "undefined1 *puVar13;" type_identifier (pointer_declarator "*puVar13" * identifier) ;) (declaration "undefined *puVar14;" type_identifier (pointer_declarator "*puVar14" * identifier) ;) (declaration "ulong uVar15;" type_identifier identifier ;) (declaration "mp_limb_t mVar16;" type_identifier identifier ;) (declaration "tmp_reentrant_t *ptVar17;" type_identifier (pointer_declarator "*ptVar17" * identifier) ;) (declaration "undefined4 *puVar18;" type_identifier (pointer_declarator "*puVar18" * identifier) ;) (declaration "mpz_ptr r_00;" type_identifier identifier ;) (declaration "int *piVar19;" primitive_type (pointer_declarator "*piVar19" * identifier) ;) (declaration "uint uVar20;" type_identifier identifier ;) (declaration "undefined4 *puVar21;" type_identifier (pointer_declarator "*puVar21" * identifier) ;) (declaration "mpz_ptr p_Var22;" type_identifier identifier ;) (declaration "mpz_ptr p_Var23;" type_identifier identifier ;) (declaration "uint uVar24;" type_identifier identifier ;) (declaration "mpz_ptr p_Var25;" type_identifier identifier ;) (declaration "mp_limb_t *pmVar26;" type_identifier (pointer_declarator "*pmVar26" * identifier) ;) (declaration "uint uVar27;" type_identifier identifier ;) (declaration "int iVar28;" primitive_type identifier ;) (declaration "ulong uVar29;" type_identifier identifier ;) (declaration "uint uVar30;" type_identifier identifier ;) (declaration "uint uVar31;" type_identifier identifier ;) (declaration "int iVar32;" primitive_type identifier ;) (declaration "mpz_ptr k_00;" type_identifier identifier ;) (declaration "mpz_ptr p_Var33;" type_identifier identifier ;) (declaration "mpz_ptr p_Var34;" type_identifier identifier ;) (declaration "int *piVar35;" primitive_type (pointer_declarator "*piVar35" * identifier) ;) (declaration "int iVar36;" primitive_type identifier ;) (declaration "int *piVar37;" primitive_type (pointer_declarator "*piVar37" * identifier) ;) (declaration "uint uVar38;" type_identifier identifier ;) (declaration "mpz_ptr p_Var39;" type_identifier identifier ;) (declaration "uint uVar40;" type_identifier identifier ;) (declaration "mpz_ptr p_Var41;" type_identifier identifier ;) (declaration "int iVar42;" primitive_type identifier ;) (declaration "mp_limb_t **ppmVar43;" type_identifier (pointer_declarator "**ppmVar43" * (pointer_declarator "*ppmVar43" * identifier)) ;) (declaration "uint uVar44;" type_identifier identifier ;) (declaration "int iVar45;" primitive_type identifier ;) (declaration "uint uVar46;" type_identifier identifier ;) (declaration "undefined *puVar47;" type_identifier (pointer_declarator "*puVar47" * identifier) ;) (declaration "code *pcVar48;" type_identifier (pointer_declarator "*pcVar48" * identifier) ;) (declaration "undefined1 *puVar49;" type_identifier (pointer_declarator "*puVar49" * identifier) ;) (declaration "undefined1 *puVar50;" type_identifier (pointer_declarator "*puVar50" * identifier) ;) (declaration "undefined1 *puVar51;" type_identifier (pointer_declarator "*puVar51" * identifier) ;) (declaration "undefined1 *puVar52;" type_identifier (pointer_declarator "*puVar52" * identifier) ;) (declaration "undefined1 *puVar53;" type_identifier (pointer_declarator "*puVar53" * identifier) ;) (declaration "undefined1 *puVar54;" type_identifier (pointer_declarator "*puVar54" * identifier) ;) (declaration "code *pcVar55;" type_identifier (pointer_declarator "*pcVar55" * identifier) ;) (declaration "code *pcVar56;" type_identifier (pointer_declarator "*pcVar56" * identifier) ;) (declaration "uint uVar57;" type_identifier identifier ;) (declaration "uint uVar58;" type_identifier identifier ;) (declaration "undefined1 auStack_48 [16];" type_identifier (array_declarator "auStack_48 [16]" identifier [ number_literal ]) ;) (declaration "tmp_reentrant_t *__tmp_marker;" type_identifier (pointer_declarator "*__tmp_marker" * identifier) ;) (declaration "int local_2c;" primitive_type identifier ;) (expression_statement "puVar4 = PTR___stack_chk_guard_0009d540;" (assignment_expression "puVar4 = PTR___stack_chk_guard_0009d540" identifier = identifier) ;) (expression_statement "puVar49 = auStack_48;" (assignment_expression "puVar49 = auStack_48" identifier = identifier) ;) (expression_statement "uVar40 = n - 5 | 1;" (assignment_expression "uVar40 = n - 5 | 1" identifier = (binary_expression "n - 5 | 1" (binary_expression "n - 5" identifier - number_literal) | number_literal)) ;) (expression_statement "__tmp_marker = (tmp_reentrant_t *)0x0;" (assignment_expression "__tmp_marker = (tmp_reentrant_t *)0x0" identifier = (cast_expression "(tmp_reentrant_t *)0x0" ( (type_descriptor "tmp_reentrant_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "local_2c = *(int *)PTR___stack_chk_guard_0009d540;" (assignment_expression "local_2c = *(int *)PTR___stack_chk_guard_0009d540" identifier = (pointer_expression "*(int *)PTR___stack_chk_guard_0009d540" * (cast_expression "(int *)PTR___stack_chk_guard_0009d540" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "uVar20 = (uVar40 / 0x60 + 1) * 4;" (assignment_expression "uVar20 = (uVar40 / 0x60 + 1) * 4" identifier = (binary_expression "(uVar40 / 0x60 + 1) * 4" (parenthesized_expression "(uVar40 / 0x60 + 1)" ( (binary_expression "uVar40 / 0x60 + 1" (binary_expression "uVar40 / 0x60" identifier / number_literal) + number_literal) )) * number_literal)) ;) (if_statement "if (uVar20 < 0x7f01) {\n    iVar5 = -(uVar20 + 7 & 0xfffffff8);\n    puVar49 = auStack_48 + iVar5;\n    puVar13 = &stack0xffffffc8 + iVar5;\n  }\n  else {\n    puVar13 = (undefined1 *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&__tmp_marker);\n  }" if (parenthesized_expression "(uVar20 < 0x7f01)" ( (binary_expression "uVar20 < 0x7f01" identifier < number_literal) )) (compound_statement "{\n    iVar5 = -(uVar20 + 7 & 0xfffffff8);\n    puVar49 = auStack_48 + iVar5;\n    puVar13 = &stack0xffffffc8 + iVar5;\n  }" { (expression_statement "iVar5 = -(uVar20 + 7 & 0xfffffff8);" (assignment_expression "iVar5 = -(uVar20 + 7 & 0xfffffff8)" identifier = (unary_expression "-(uVar20 + 7 & 0xfffffff8)" - (parenthesized_expression "(uVar20 + 7 & 0xfffffff8)" ( (binary_expression "uVar20 + 7 & 0xfffffff8" (binary_expression "uVar20 + 7" identifier + number_literal) & number_literal) )))) ;) (expression_statement "puVar49 = auStack_48 + iVar5;" (assignment_expression "puVar49 = auStack_48 + iVar5" identifier = (binary_expression "auStack_48 + iVar5" identifier + identifier)) ;) (expression_statement "puVar13 = &stack0xffffffc8 + iVar5;" (assignment_expression "puVar13 = &stack0xffffffc8 + iVar5" identifier = (binary_expression "&stack0xffffffc8 + iVar5" (pointer_expression "&stack0xffffffc8" & identifier) + identifier)) ;) }) (else_clause "else {\n    puVar13 = (undefined1 *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&__tmp_marker);\n  }" else (compound_statement "{\n    puVar13 = (undefined1 *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&__tmp_marker);\n  }" { (expression_statement "puVar13 = (undefined1 *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&__tmp_marker);" (assignment_expression "puVar13 = (undefined1 *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&__tmp_marker)" identifier = (cast_expression "(undefined1 *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&__tmp_marker)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&__tmp_marker)" (parenthesized_expression "(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)" ( (pointer_expression "*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0" * (cast_expression "(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(&__tmp_marker)" ( (pointer_expression "&__tmp_marker" & identifier) ))))) ;) }))) (expression_statement "iVar5 = (*(code *)PTR___gmp_primesieve_0009d144)(puVar13,n);" (assignment_expression "iVar5 = (*(code *)PTR___gmp_primesieve_0009d144)(puVar13,n)" identifier = (call_expression "(*(code *)PTR___gmp_primesieve_0009d144)(puVar13,n)" (parenthesized_expression "(*(code *)PTR___gmp_primesieve_0009d144)" ( (pointer_expression "*(code *)PTR___gmp_primesieve_0009d144" * (cast_expression "(code *)PTR___gmp_primesieve_0009d144" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(puVar13,n)" ( identifier , identifier )))) ;) (expression_statement "uVar6 = iVar5 + 1;" (assignment_expression "uVar6 = iVar5 + 1" identifier = (binary_expression "iVar5 + 1" identifier + number_literal)) ;) (expression_statement "puVar7 = (uint *)(PTR___gmp_limbroots_table_0009d3d4 + 0x1c);" (assignment_expression "puVar7 = (uint *)(PTR___gmp_limbroots_table_0009d3d4 + 0x1c)" identifier = (cast_expression "(uint *)(PTR___gmp_limbroots_table_0009d3d4 + 0x1c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR___gmp_limbroots_table_0009d3d4 + 0x1c)" ( (binary_expression "PTR___gmp_limbroots_table_0009d3d4 + 0x1c" identifier + number_literal) )))) ;) (expression_statement "uVar20 = 8;" (assignment_expression "uVar20 = 8" identifier = number_literal) ;) (do_statement "do {\n    uVar27 = uVar20;\n    uVar10 = *puVar7;\n    puVar7 = puVar7 + -1;\n    uVar20 = uVar27 - 1;\n  } while (uVar10 < n);" do (compound_statement "{\n    uVar27 = uVar20;\n    uVar10 = *puVar7;\n    puVar7 = puVar7 + -1;\n    uVar20 = uVar27 - 1;\n  }" { (expression_statement "uVar27 = uVar20;" (assignment_expression "uVar27 = uVar20" identifier = identifier) ;) (expression_statement "uVar10 = *puVar7;" (assignment_expression "uVar10 = *puVar7" identifier = (pointer_expression "*puVar7" * identifier)) ;) (expression_statement "puVar7 = puVar7 + -1;" (assignment_expression "puVar7 = puVar7 + -1" identifier = (binary_expression "puVar7 + -1" identifier + number_literal)) ;) (expression_statement "uVar20 = uVar27 - 1;" (assignment_expression "uVar20 = uVar27 - 1" identifier = (binary_expression "uVar27 - 1" identifier - number_literal)) ;) }) while (parenthesized_expression "(uVar10 < n)" ( (binary_expression "uVar10 < n" identifier < identifier) )) ;) (if_statement "if (uVar27 == 0) {\n    trap(7);\n  }" if (parenthesized_expression "(uVar27 == 0)" ( (binary_expression "uVar27 == 0" identifier == number_literal) )) (compound_statement "{\n    trap(7);\n  }" { (expression_statement "trap(7);" (call_expression "trap(7)" identifier (argument_list "(7)" ( number_literal ))) ;) })) (expression_statement "puVar7 = (uint *)(PTR___gmp_limbroots_table_0009d3d4 + 0x1c);" (assignment_expression "puVar7 = (uint *)(PTR___gmp_limbroots_table_0009d3d4 + 0x1c)" identifier = (cast_expression "(uint *)(PTR___gmp_limbroots_table_0009d3d4 + 0x1c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR___gmp_limbroots_table_0009d3d4 + 0x1c)" ( (binary_expression "PTR___gmp_limbroots_table_0009d3d4 + 0x1c" identifier + number_literal) )))) ;) (expression_statement "uVar20 = 8;" (assignment_expression "uVar20 = 8" identifier = number_literal) ;) (if_statement "if ((uVar6 / uVar27 + 1) * 4 < 0x7f01) {\n    do {\n      uVar27 = uVar20;\n      uVar10 = *puVar7;\n      puVar7 = puVar7 + -1;\n      uVar20 = uVar27 - 1;\n    } while (uVar10 < n);\n    if (uVar27 == 0) {\n      trap(7);\n    }\n    iVar5 = -((uVar6 / uVar27) * 4 + 0xb & 0xfffffff8);\n    puVar50 = puVar49 + iVar5;\n    puVar7 = (uint *)(puVar49 + iVar5 + 0x10);\n  }\n  else {\n    for (puVar14 = PTR___gmp_limbroots_table_0009d3d4 + 0x18; *(uint *)(puVar14 + 4) < n;\n        puVar14 = puVar14 + -4) {\n      uVar20 = uVar20 - 1;\n    }\n    if (uVar20 == 0) {\n      trap(7);\n    }\n    puVar7 = (uint *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)\n                               (&__tmp_marker,(uVar6 / uVar20 + 1) * 4);\n    puVar50 = puVar49;\n  }" if (parenthesized_expression "((uVar6 / uVar27 + 1) * 4 < 0x7f01)" ( (binary_expression "(uVar6 / uVar27 + 1) * 4 < 0x7f01" (binary_expression "(uVar6 / uVar27 + 1) * 4" (parenthesized_expression "(uVar6 / uVar27 + 1)" ( (binary_expression "uVar6 / uVar27 + 1" (binary_expression "uVar6 / uVar27" identifier / identifier) + number_literal) )) * number_literal) < number_literal) )) (compound_statement "{\n    do {\n      uVar27 = uVar20;\n      uVar10 = *puVar7;\n      puVar7 = puVar7 + -1;\n      uVar20 = uVar27 - 1;\n    } while (uVar10 < n);\n    if (uVar27 == 0) {\n      trap(7);\n    }\n    iVar5 = -((uVar6 / uVar27) * 4 + 0xb & 0xfffffff8);\n    puVar50 = puVar49 + iVar5;\n    puVar7 = (uint *)(puVar49 + iVar5 + 0x10);\n  }" { (do_statement "do {\n      uVar27 = uVar20;\n      uVar10 = *puVar7;\n      puVar7 = puVar7 + -1;\n      uVar20 = uVar27 - 1;\n    } while (uVar10 < n);" do (compound_statement "{\n      uVar27 = uVar20;\n      uVar10 = *puVar7;\n      puVar7 = puVar7 + -1;\n      uVar20 = uVar27 - 1;\n    }" { (expression_statement "uVar27 = uVar20;" (assignment_expression "uVar27 = uVar20" identifier = identifier) ;) (expression_statement "uVar10 = *puVar7;" (assignment_expression "uVar10 = *puVar7" identifier = (pointer_expression "*puVar7" * identifier)) ;) (expression_statement "puVar7 = puVar7 + -1;" (assignment_expression "puVar7 = puVar7 + -1" identifier = (binary_expression "puVar7 + -1" identifier + number_literal)) ;) (expression_statement "uVar20 = uVar27 - 1;" (assignment_expression "uVar20 = uVar27 - 1" identifier = (binary_expression "uVar27 - 1" identifier - number_literal)) ;) }) while (parenthesized_expression "(uVar10 < n)" ( (binary_expression "uVar10 < n" identifier < identifier) )) ;) (if_statement "if (uVar27 == 0) {\n      trap(7);\n    }" if (parenthesized_expression "(uVar27 == 0)" ( (binary_expression "uVar27 == 0" identifier == number_literal) )) (compound_statement "{\n      trap(7);\n    }" { (expression_statement "trap(7);" (call_expression "trap(7)" identifier (argument_list "(7)" ( number_literal ))) ;) })) (expression_statement "iVar5 = -((uVar6 / uVar27) * 4 + 0xb & 0xfffffff8);" (assignment_expression "iVar5 = -((uVar6 / uVar27) * 4 + 0xb & 0xfffffff8)" identifier = (unary_expression "-((uVar6 / uVar27) * 4 + 0xb & 0xfffffff8)" - (parenthesized_expression "((uVar6 / uVar27) * 4 + 0xb & 0xfffffff8)" ( (binary_expression "(uVar6 / uVar27) * 4 + 0xb & 0xfffffff8" (binary_expression "(uVar6 / uVar27) * 4 + 0xb" (binary_expression "(uVar6 / uVar27) * 4" (parenthesized_expression "(uVar6 / uVar27)" ( (binary_expression "uVar6 / uVar27" identifier / identifier) )) * number_literal) + number_literal) & number_literal) )))) ;) (expression_statement "puVar50 = puVar49 + iVar5;" (assignment_expression "puVar50 = puVar49 + iVar5" identifier = (binary_expression "puVar49 + iVar5" identifier + identifier)) ;) (expression_statement "puVar7 = (uint *)(puVar49 + iVar5 + 0x10);" (assignment_expression "puVar7 = (uint *)(puVar49 + iVar5 + 0x10)" identifier = (cast_expression "(uint *)(puVar49 + iVar5 + 0x10)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar49 + iVar5 + 0x10)" ( (binary_expression "puVar49 + iVar5 + 0x10" (binary_expression "puVar49 + iVar5" identifier + identifier) + number_literal) )))) ;) }) (else_clause "else {\n    for (puVar14 = PTR___gmp_limbroots_table_0009d3d4 + 0x18; *(uint *)(puVar14 + 4) < n;\n        puVar14 = puVar14 + -4) {\n      uVar20 = uVar20 - 1;\n    }\n    if (uVar20 == 0) {\n      trap(7);\n    }\n    puVar7 = (uint *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)\n                               (&__tmp_marker,(uVar6 / uVar20 + 1) * 4);\n    puVar50 = puVar49;\n  }" else (compound_statement "{\n    for (puVar14 = PTR___gmp_limbroots_table_0009d3d4 + 0x18; *(uint *)(puVar14 + 4) < n;\n        puVar14 = puVar14 + -4) {\n      uVar20 = uVar20 - 1;\n    }\n    if (uVar20 == 0) {\n      trap(7);\n    }\n    puVar7 = (uint *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)\n                               (&__tmp_marker,(uVar6 / uVar20 + 1) * 4);\n    puVar50 = puVar49;\n  }" { (for_statement "for (puVar14 = PTR___gmp_limbroots_table_0009d3d4 + 0x18; *(uint *)(puVar14 + 4) < n;\n        puVar14 = puVar14 + -4) {\n      uVar20 = uVar20 - 1;\n    }" for ( (assignment_expression "puVar14 = PTR___gmp_limbroots_table_0009d3d4 + 0x18" identifier = (binary_expression "PTR___gmp_limbroots_table_0009d3d4 + 0x18" identifier + number_literal)) ; (binary_expression "*(uint *)(puVar14 + 4) < n" (pointer_expression "*(uint *)(puVar14 + 4)" * (cast_expression "(uint *)(puVar14 + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar14 + 4)" ( (binary_expression "puVar14 + 4" identifier + number_literal) )))) < identifier) ; (assignment_expression "puVar14 = puVar14 + -4" identifier = (binary_expression "puVar14 + -4" identifier + number_literal)) ) (compound_statement "{\n      uVar20 = uVar20 - 1;\n    }" { (expression_statement "uVar20 = uVar20 - 1;" (assignment_expression "uVar20 = uVar20 - 1" identifier = (binary_expression "uVar20 - 1" identifier - number_literal)) ;) })) (if_statement "if (uVar20 == 0) {\n      trap(7);\n    }" if (parenthesized_expression "(uVar20 == 0)" ( (binary_expression "uVar20 == 0" identifier == number_literal) )) (compound_statement "{\n      trap(7);\n    }" { (expression_statement "trap(7);" (call_expression "trap(7)" identifier (argument_list "(7)" ( number_literal ))) ;) })) (expression_statement "puVar7 = (uint *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)\n                               (&__tmp_marker,(uVar6 / uVar20 + 1) * 4);" (assignment_expression "puVar7 = (uint *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)\n                               (&__tmp_marker,(uVar6 / uVar20 + 1) * 4)" identifier = (cast_expression "(uint *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)\n                               (&__tmp_marker,(uVar6 / uVar20 + 1) * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)\n                               (&__tmp_marker,(uVar6 / uVar20 + 1) * 4)" (parenthesized_expression "(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)" ( (pointer_expression "*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0" * (cast_expression "(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(&__tmp_marker,(uVar6 / uVar20 + 1) * 4)" ( (pointer_expression "&__tmp_marker" & identifier) , (binary_expression "(uVar6 / uVar20 + 1) * 4" (parenthesized_expression "(uVar6 / uVar20 + 1)" ( (binary_expression "uVar6 / uVar20 + 1" (binary_expression "uVar6 / uVar20" identifier / identifier) + number_literal) )) * number_literal) ))))) ;) (expression_statement "puVar50 = puVar49;" (assignment_expression "puVar50 = puVar49" identifier = identifier) ;) }))) (expression_statement "uVar20 = n - k;" (assignment_expression "uVar20 = n - k" identifier = (binary_expression "n - k" identifier - identifier)) ;) (if_statement "if (n == 0) {\n    trap(7);\n  }" if (parenthesized_expression "(n == 0)" ( (binary_expression "n == 0" identifier == number_literal) )) (compound_statement "{\n    trap(7);\n  }" { (expression_statement "trap(7);" (call_expression "trap(7)" identifier (argument_list "(7)" ( number_literal ))) ;) })) (expression_statement "uVar57 = 0xffffffff / n;" (assignment_expression "uVar57 = 0xffffffff / n" identifier = (binary_expression "0xffffffff / n" number_literal / identifier)) ;) (expression_statement "uVar44 = n >> 1;" (assignment_expression "uVar44 = n >> 1" identifier = (binary_expression "n >> 1" identifier >> number_literal)) ;) (expression_statement "uVar10 = uVar20 - (uVar20 >> 1 & 0x55555555);" (assignment_expression "uVar10 = uVar20 - (uVar20 >> 1 & 0x55555555)" identifier = (binary_expression "uVar20 - (uVar20 >> 1 & 0x55555555)" identifier - (parenthesized_expression "(uVar20 >> 1 & 0x55555555)" ( (binary_expression "uVar20 >> 1 & 0x55555555" (binary_expression "uVar20 >> 1" identifier >> number_literal) & number_literal) )))) ;) (expression_statement "uVar27 = n - (uVar44 & 0x55555555);" (assignment_expression "uVar27 = n - (uVar44 & 0x55555555)" identifier = (binary_expression "n - (uVar44 & 0x55555555)" identifier - (parenthesized_expression "(uVar44 & 0x55555555)" ( (binary_expression "uVar44 & 0x55555555" identifier & number_literal) )))) ;) (expression_statement "uVar6 = k - (k >> 1 & 0x55555555);" (assignment_expression "uVar6 = k - (k >> 1 & 0x55555555)" identifier = (binary_expression "k - (k >> 1 & 0x55555555)" identifier - (parenthesized_expression "(k >> 1 & 0x55555555)" ( (binary_expression "k >> 1 & 0x55555555" (binary_expression "k >> 1" identifier >> number_literal) & number_literal) )))) ;) (expression_statement "uVar30 = (uVar10 >> 2 & 0x33333333) + (uVar10 & 0x33333333);" (assignment_expression "uVar30 = (uVar10 >> 2 & 0x33333333) + (uVar10 & 0x33333333)" identifier = (binary_expression "(uVar10 >> 2 & 0x33333333) + (uVar10 & 0x33333333)" (parenthesized_expression "(uVar10 >> 2 & 0x33333333)" ( (binary_expression "uVar10 >> 2 & 0x33333333" (binary_expression "uVar10 >> 2" identifier >> number_literal) & number_literal) )) + (parenthesized_expression "(uVar10 & 0x33333333)" ( (binary_expression "uVar10 & 0x33333333" identifier & number_literal) )))) ;) (expression_statement "uVar27 = (uVar27 >> 2 & 0x33333333) + (uVar27 & 0x33333333);" (assignment_expression "uVar27 = (uVar27 >> 2 & 0x33333333) + (uVar27 & 0x33333333)" identifier = (binary_expression "(uVar27 >> 2 & 0x33333333) + (uVar27 & 0x33333333)" (parenthesized_expression "(uVar27 >> 2 & 0x33333333)" ( (binary_expression "uVar27 >> 2 & 0x33333333" (binary_expression "uVar27 >> 2" identifier >> number_literal) & number_literal) )) + (parenthesized_expression "(uVar27 & 0x33333333)" ( (binary_expression "uVar27 & 0x33333333" identifier & number_literal) )))) ;) (expression_statement "uVar10 = (uVar6 >> 2 & 0x33333333) + (uVar6 & 0x33333333);" (assignment_expression "uVar10 = (uVar6 >> 2 & 0x33333333) + (uVar6 & 0x33333333)" identifier = (binary_expression "(uVar6 >> 2 & 0x33333333) + (uVar6 & 0x33333333)" (parenthesized_expression "(uVar6 >> 2 & 0x33333333)" ( (binary_expression "uVar6 >> 2 & 0x33333333" (binary_expression "uVar6 >> 2" identifier >> number_literal) & number_literal) )) + (parenthesized_expression "(uVar6 & 0x33333333)" ( (binary_expression "uVar6 & 0x33333333" identifier & number_literal) )))) ;) (expression_statement "uVar6 = (uVar30 >> 4) + uVar30 & 0xf0f0f0f;" (assignment_expression "uVar6 = (uVar30 >> 4) + uVar30 & 0xf0f0f0f" identifier = (binary_expression "(uVar30 >> 4) + uVar30 & 0xf0f0f0f" (binary_expression "(uVar30 >> 4) + uVar30" (parenthesized_expression "(uVar30 >> 4)" ( (binary_expression "uVar30 >> 4" identifier >> number_literal) )) + identifier) & number_literal)) ;) (expression_statement "uVar27 = (uVar27 >> 4) + uVar27 & 0xf0f0f0f;" (assignment_expression "uVar27 = (uVar27 >> 4) + uVar27 & 0xf0f0f0f" identifier = (binary_expression "(uVar27 >> 4) + uVar27 & 0xf0f0f0f" (binary_expression "(uVar27 >> 4) + uVar27" (parenthesized_expression "(uVar27 >> 4)" ( (binary_expression "uVar27 >> 4" identifier >> number_literal) )) + identifier) & number_literal)) ;) (expression_statement "uVar6 = (uVar6 >> 8) + uVar6;" (assignment_expression "uVar6 = (uVar6 >> 8) + uVar6" identifier = (binary_expression "(uVar6 >> 8) + uVar6" (parenthesized_expression "(uVar6 >> 8)" ( (binary_expression "uVar6 >> 8" identifier >> number_literal) )) + identifier)) ;) (expression_statement "uVar10 = (uVar10 >> 4) + uVar10 & 0xf0f0f0f;" (assignment_expression "uVar10 = (uVar10 >> 4) + uVar10 & 0xf0f0f0f" identifier = (binary_expression "(uVar10 >> 4) + uVar10 & 0xf0f0f0f" (binary_expression "(uVar10 >> 4) + uVar10" (parenthesized_expression "(uVar10 >> 4)" ( (binary_expression "uVar10 >> 4" identifier >> number_literal) )) + identifier) & number_literal)) ;) (expression_statement "uVar27 = (uVar27 >> 8) + uVar27;" (assignment_expression "uVar27 = (uVar27 >> 8) + uVar27" identifier = (binary_expression "(uVar27 >> 8) + uVar27" (parenthesized_expression "(uVar27 >> 8)" ( (binary_expression "uVar27 >> 8" identifier >> number_literal) )) + identifier)) ;) (expression_statement "uVar10 = (uVar10 >> 8) + uVar10;" (assignment_expression "uVar10 = (uVar10 >> 8) + uVar10" identifier = (binary_expression "(uVar10 >> 8) + uVar10" (parenthesized_expression "(uVar10 >> 8)" ( (binary_expression "uVar10 >> 8" identifier >> number_literal) )) + identifier)) ;) (expression_statement "uVar6 = 1 << ((uVar10 >> 0x10) + uVar10 +\n                (((uVar6 >> 0x10) + uVar6 & 0xff) - ((uVar27 >> 0x10) + uVar27 & 0xff)) & 0x1f);" (assignment_expression "uVar6 = 1 << ((uVar10 >> 0x10) + uVar10 +\n                (((uVar6 >> 0x10) + uVar6 & 0xff) - ((uVar27 >> 0x10) + uVar27 & 0xff)) & 0x1f)" identifier = (binary_expression "1 << ((uVar10 >> 0x10) + uVar10 +\n                (((uVar6 >> 0x10) + uVar6 & 0xff) - ((uVar27 >> 0x10) + uVar27 & 0xff)) & 0x1f)" number_literal << (parenthesized_expression "((uVar10 >> 0x10) + uVar10 +\n                (((uVar6 >> 0x10) + uVar6 & 0xff) - ((uVar27 >> 0x10) + uVar27 & 0xff)) & 0x1f)" ( (binary_expression "(uVar10 >> 0x10) + uVar10 +\n                (((uVar6 >> 0x10) + uVar6 & 0xff) - ((uVar27 >> 0x10) + uVar27 & 0xff)) & 0x1f" (binary_expression "(uVar10 >> 0x10) + uVar10 +\n                (((uVar6 >> 0x10) + uVar6 & 0xff) - ((uVar27 >> 0x10) + uVar27 & 0xff))" (binary_expression "(uVar10 >> 0x10) + uVar10" (parenthesized_expression "(uVar10 >> 0x10)" ( (binary_expression "uVar10 >> 0x10" identifier >> number_literal) )) + identifier) + (parenthesized_expression "(((uVar6 >> 0x10) + uVar6 & 0xff) - ((uVar27 >> 0x10) + uVar27 & 0xff))" ( (binary_expression "((uVar6 >> 0x10) + uVar6 & 0xff) - ((uVar27 >> 0x10) + uVar27 & 0xff)" (parenthesized_expression "((uVar6 >> 0x10) + uVar6 & 0xff)" ( (binary_expression "(uVar6 >> 0x10) + uVar6 & 0xff" (binary_expression "(uVar6 >> 0x10) + uVar6" (parenthesized_expression "(uVar6 >> 0x10)" ( (binary_expression "uVar6 >> 0x10" identifier >> number_literal) )) + identifier) & number_literal) )) - (parenthesized_expression "((uVar27 >> 0x10) + uVar27 & 0xff)" ( (binary_expression "(uVar27 >> 0x10) + uVar27 & 0xff" (binary_expression "(uVar27 >> 0x10) + uVar27" (parenthesized_expression "(uVar27 >> 0x10)" ( (binary_expression "uVar27 >> 0x10" identifier >> number_literal) )) + identifier) & number_literal) ))) ))) & number_literal) )))) ;) (expression_statement "bVar1 = uVar57 < uVar6;" (assignment_expression "bVar1 = uVar57 < uVar6" identifier = (binary_expression "uVar57 < uVar6" identifier < identifier)) ;) (if_statement "if (bVar1) {\n    *puVar7 = uVar6;\n    uVar6 = 1;\n  }" if (parenthesized_expression "(bVar1)" ( identifier )) (compound_statement "{\n    *puVar7 = uVar6;\n    uVar6 = 1;\n  }" { (expression_statement "*puVar7 = uVar6;" (assignment_expression "*puVar7 = uVar6" (pointer_expression "*puVar7" * identifier) = identifier) ;) (expression_statement "uVar6 = 1;" (assignment_expression "uVar6 = 1" identifier = number_literal) ;) })) (expression_statement "uVar10 = 0;" (assignment_expression "uVar10 = 0" identifier = number_literal) ;) (expression_statement "uVar15 = n;" (assignment_expression "uVar15 = n" identifier = identifier) ;) (expression_statement "uVar29 = k;" (assignment_expression "uVar29 = k" identifier = identifier) ;) (do_statement "do {\n    bVar2 = uVar15 % 3 < uVar29 % 3 + uVar10;\n    if (bVar2) {\n      uVar6 = uVar6 * 3;\n    }\n    uVar10 = (uint)bVar2;\n    bVar2 = 8 < uVar15;\n    uVar15 = uVar15 / 3;\n    uVar29 = uVar29 / 3;\n  } while (bVar2);" do (compound_statement "{\n    bVar2 = uVar15 % 3 < uVar29 % 3 + uVar10;\n    if (bVar2) {\n      uVar6 = uVar6 * 3;\n    }\n    uVar10 = (uint)bVar2;\n    bVar2 = 8 < uVar15;\n    uVar15 = uVar15 / 3;\n    uVar29 = uVar29 / 3;\n  }" { (expression_statement "bVar2 = uVar15 % 3 < uVar29 % 3 + uVar10;" (assignment_expression "bVar2 = uVar15 % 3 < uVar29 % 3 + uVar10" identifier = (binary_expression "uVar15 % 3 < uVar29 % 3 + uVar10" (binary_expression "uVar15 % 3" identifier % number_literal) < (binary_expression "uVar29 % 3 + uVar10" (binary_expression "uVar29 % 3" identifier % number_literal) + identifier))) ;) (if_statement "if (bVar2) {\n      uVar6 = uVar6 * 3;\n    }" if (parenthesized_expression "(bVar2)" ( identifier )) (compound_statement "{\n      uVar6 = uVar6 * 3;\n    }" { (expression_statement "uVar6 = uVar6 * 3;" (assignment_expression "uVar6 = uVar6 * 3" identifier = (binary_expression "uVar6 * 3" identifier * number_literal)) ;) })) (expression_statement "uVar10 = (uint)bVar2;" (assignment_expression "uVar10 = (uint)bVar2" identifier = (cast_expression "(uint)bVar2" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "bVar2 = 8 < uVar15;" (assignment_expression "bVar2 = 8 < uVar15" identifier = (binary_expression "8 < uVar15" number_literal < identifier)) ;) (expression_statement "uVar15 = uVar15 / 3;" (assignment_expression "uVar15 = uVar15 / 3" identifier = (binary_expression "uVar15 / 3" identifier / number_literal)) ;) (expression_statement "uVar29 = uVar29 / 3;" (assignment_expression "uVar29 = uVar29 / 3" identifier = (binary_expression "uVar29 / 3" identifier / number_literal)) ;) }) while (parenthesized_expression "(bVar2)" ( identifier )) ;) (expression_statement "uVar10 = n - 1;" (assignment_expression "uVar10 = n - 1" identifier = (binary_expression "n - 1" identifier - number_literal)) ;) (if_statement "if (uVar10 < 0x10000) {\n    iVar5 = 0x18;\n    if (uVar10 < 0x100) {\n      iVar5 = 0x20;\n    }\n    iVar28 = 9;\n    if (uVar10 < 0x100) {\n      iVar28 = 1;\n    }\n  }\n  else {\n    iVar5 = 8;\n    if (uVar10 < 0x1000000) {\n      iVar5 = 0x10;\n    }\n    iVar28 = 0x19;\n    if (uVar10 < 0x1000000) {\n      iVar28 = 0x11;\n    }\n  }" if (parenthesized_expression "(uVar10 < 0x10000)" ( (binary_expression "uVar10 < 0x10000" identifier < number_literal) )) (compound_statement "{\n    iVar5 = 0x18;\n    if (uVar10 < 0x100) {\n      iVar5 = 0x20;\n    }\n    iVar28 = 9;\n    if (uVar10 < 0x100) {\n      iVar28 = 1;\n    }\n  }" { (expression_statement "iVar5 = 0x18;" (assignment_expression "iVar5 = 0x18" identifier = number_literal) ;) (if_statement "if (uVar10 < 0x100) {\n      iVar5 = 0x20;\n    }" if (parenthesized_expression "(uVar10 < 0x100)" ( (binary_expression "uVar10 < 0x100" identifier < number_literal) )) (compound_statement "{\n      iVar5 = 0x20;\n    }" { (expression_statement "iVar5 = 0x20;" (assignment_expression "iVar5 = 0x20" identifier = number_literal) ;) })) (expression_statement "iVar28 = 9;" (assignment_expression "iVar28 = 9" identifier = number_literal) ;) (if_statement "if (uVar10 < 0x100) {\n      iVar28 = 1;\n    }" if (parenthesized_expression "(uVar10 < 0x100)" ( (binary_expression "uVar10 < 0x100" identifier < number_literal) )) (compound_statement "{\n      iVar28 = 1;\n    }" { (expression_statement "iVar28 = 1;" (assignment_expression "iVar28 = 1" identifier = number_literal) ;) })) }) (else_clause "else {\n    iVar5 = 8;\n    if (uVar10 < 0x1000000) {\n      iVar5 = 0x10;\n    }\n    iVar28 = 0x19;\n    if (uVar10 < 0x1000000) {\n      iVar28 = 0x11;\n    }\n  }" else (compound_statement "{\n    iVar5 = 8;\n    if (uVar10 < 0x1000000) {\n      iVar5 = 0x10;\n    }\n    iVar28 = 0x19;\n    if (uVar10 < 0x1000000) {\n      iVar28 = 0x11;\n    }\n  }" { (expression_statement "iVar5 = 8;" (assignment_expression "iVar5 = 8" identifier = number_literal) ;) (if_statement "if (uVar10 < 0x1000000) {\n      iVar5 = 0x10;\n    }" if (parenthesized_expression "(uVar10 < 0x1000000)" ( (binary_expression "uVar10 < 0x1000000" identifier < number_literal) )) (compound_statement "{\n      iVar5 = 0x10;\n    }" { (expression_statement "iVar5 = 0x10;" (assignment_expression "iVar5 = 0x10" identifier = number_literal) ;) })) (expression_statement "iVar28 = 0x19;" (assignment_expression "iVar28 = 0x19" identifier = number_literal) ;) (if_statement "if (uVar10 < 0x1000000) {\n      iVar28 = 0x11;\n    }" if (parenthesized_expression "(uVar10 < 0x1000000)" ( (binary_expression "uVar10 < 0x1000000" identifier < number_literal) )) (compound_statement "{\n      iVar28 = 0x11;\n    }" { (expression_statement "iVar28 = 0x11;" (assignment_expression "iVar28 = 0x11" identifier = number_literal) ;) })) }))) (expression_statement "iVar32 = 0;" (assignment_expression "iVar32 = 0" identifier = number_literal) ;) (expression_statement "uVar31 = 1;" (assignment_expression "uVar31 = 1" identifier = number_literal) ;) (expression_statement "uVar46 = (((1 << ((int)(0x1f - (iVar5 - (uint)(byte)PTR___gmpn_clz_tab_0009d18c[uVar10 >> iVar28])\n                         ) >> 1 & 0x1fU)) +\n            (1 << ((int)(0x1e - (iVar5 - (uint)(byte)PTR___gmpn_clz_tab_0009d18c[uVar10 >> iVar28]))\n                   >> 1 & 0x1fU))) - 5U | 1) / 3;" (assignment_expression "uVar46 = (((1 << ((int)(0x1f - (iVar5 - (uint)(byte)PTR___gmpn_clz_tab_0009d18c[uVar10 >> iVar28])\n                         ) >> 1 & 0x1fU)) +\n            (1 << ((int)(0x1e - (iVar5 - (uint)(byte)PTR___gmpn_clz_tab_0009d18c[uVar10 >> iVar28]))\n                   >> 1 & 0x1fU))) - 5U | 1) / 3" identifier = (binary_expression "(((1 << ((int)(0x1f - (iVar5 - (uint)(byte)PTR___gmpn_clz_tab_0009d18c[uVar10 >> iVar28])\n                         ) >> 1 & 0x1fU)) +\n            (1 << ((int)(0x1e - (iVar5 - (uint)(byte)PTR___gmpn_clz_tab_0009d18c[uVar10 >> iVar28]))\n                   >> 1 & 0x1fU))) - 5U | 1) / 3" (parenthesized_expression "(((1 << ((int)(0x1f - (iVar5 - (uint)(byte)PTR___gmpn_clz_tab_0009d18c[uVar10 >> iVar28])\n                         ) >> 1 & 0x1fU)) +\n            (1 << ((int)(0x1e - (iVar5 - (uint)(byte)PTR___gmpn_clz_tab_0009d18c[uVar10 >> iVar28]))\n                   >> 1 & 0x1fU))) - 5U | 1)" ( (binary_expression "((1 << ((int)(0x1f - (iVar5 - (uint)(byte)PTR___gmpn_clz_tab_0009d18c[uVar10 >> iVar28])\n                         ) >> 1 & 0x1fU)) +\n            (1 << ((int)(0x1e - (iVar5 - (uint)(byte)PTR___gmpn_clz_tab_0009d18c[uVar10 >> iVar28]))\n                   >> 1 & 0x1fU))) - 5U | 1" (binary_expression "((1 << ((int)(0x1f - (iVar5 - (uint)(byte)PTR___gmpn_clz_tab_0009d18c[uVar10 >> iVar28])\n                         ) >> 1 & 0x1fU)) +\n            (1 << ((int)(0x1e - (iVar5 - (uint)(byte)PTR___gmpn_clz_tab_0009d18c[uVar10 >> iVar28]))\n                   >> 1 & 0x1fU))) - 5U" (parenthesized_expression "((1 << ((int)(0x1f - (iVar5 - (uint)(byte)PTR___gmpn_clz_tab_0009d18c[uVar10 >> iVar28])\n                         ) >> 1 & 0x1fU)) +\n            (1 << ((int)(0x1e - (iVar5 - (uint)(byte)PTR___gmpn_clz_tab_0009d18c[uVar10 >> iVar28]))\n                   >> 1 & 0x1fU)))" ( (binary_expression "(1 << ((int)(0x1f - (iVar5 - (uint)(byte)PTR___gmpn_clz_tab_0009d18c[uVar10 >> iVar28])\n                         ) >> 1 & 0x1fU)) +\n            (1 << ((int)(0x1e - (iVar5 - (uint)(byte)PTR___gmpn_clz_tab_0009d18c[uVar10 >> iVar28]))\n                   >> 1 & 0x1fU))" (parenthesized_expression "(1 << ((int)(0x1f - (iVar5 - (uint)(byte)PTR___gmpn_clz_tab_0009d18c[uVar10 >> iVar28])\n                         ) >> 1 & 0x1fU))" ( (binary_expression "1 << ((int)(0x1f - (iVar5 - (uint)(byte)PTR___gmpn_clz_tab_0009d18c[uVar10 >> iVar28])\n                         ) >> 1 & 0x1fU)" number_literal << (parenthesized_expression "((int)(0x1f - (iVar5 - (uint)(byte)PTR___gmpn_clz_tab_0009d18c[uVar10 >> iVar28])\n                         ) >> 1 & 0x1fU)" ( (binary_expression "(int)(0x1f - (iVar5 - (uint)(byte)PTR___gmpn_clz_tab_0009d18c[uVar10 >> iVar28])\n                         ) >> 1 & 0x1fU" (binary_expression "(int)(0x1f - (iVar5 - (uint)(byte)PTR___gmpn_clz_tab_0009d18c[uVar10 >> iVar28])\n                         ) >> 1" (cast_expression "(int)(0x1f - (iVar5 - (uint)(byte)PTR___gmpn_clz_tab_0009d18c[uVar10 >> iVar28])\n                         )" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(0x1f - (iVar5 - (uint)(byte)PTR___gmpn_clz_tab_0009d18c[uVar10 >> iVar28])\n                         )" ( (binary_expression "0x1f - (iVar5 - (uint)(byte)PTR___gmpn_clz_tab_0009d18c[uVar10 >> iVar28])" number_literal - (parenthesized_expression "(iVar5 - (uint)(byte)PTR___gmpn_clz_tab_0009d18c[uVar10 >> iVar28])" ( (binary_expression "iVar5 - (uint)(byte)PTR___gmpn_clz_tab_0009d18c[uVar10 >> iVar28]" identifier - (cast_expression "(uint)(byte)PTR___gmpn_clz_tab_0009d18c[uVar10 >> iVar28]" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(byte)PTR___gmpn_clz_tab_0009d18c[uVar10 >> iVar28]" ( (type_descriptor "byte" type_identifier) ) (subscript_expression "PTR___gmpn_clz_tab_0009d18c[uVar10 >> iVar28]" identifier [ (binary_expression "uVar10 >> iVar28" identifier >> identifier) ])))) ))) ))) >> number_literal) & number_literal) ))) )) + (parenthesized_expression "(1 << ((int)(0x1e - (iVar5 - (uint)(byte)PTR___gmpn_clz_tab_0009d18c[uVar10 >> iVar28]))\n                   >> 1 & 0x1fU))" ( (binary_expression "1 << ((int)(0x1e - (iVar5 - (uint)(byte)PTR___gmpn_clz_tab_0009d18c[uVar10 >> iVar28]))\n                   >> 1 & 0x1fU)" number_literal << (parenthesized_expression "((int)(0x1e - (iVar5 - (uint)(byte)PTR___gmpn_clz_tab_0009d18c[uVar10 >> iVar28]))\n                   >> 1 & 0x1fU)" ( (binary_expression "(int)(0x1e - (iVar5 - (uint)(byte)PTR___gmpn_clz_tab_0009d18c[uVar10 >> iVar28]))\n                   >> 1 & 0x1fU" (binary_expression "(int)(0x1e - (iVar5 - (uint)(byte)PTR___gmpn_clz_tab_0009d18c[uVar10 >> iVar28]))\n                   >> 1" (cast_expression "(int)(0x1e - (iVar5 - (uint)(byte)PTR___gmpn_clz_tab_0009d18c[uVar10 >> iVar28]))" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(0x1e - (iVar5 - (uint)(byte)PTR___gmpn_clz_tab_0009d18c[uVar10 >> iVar28]))" ( (binary_expression "0x1e - (iVar5 - (uint)(byte)PTR___gmpn_clz_tab_0009d18c[uVar10 >> iVar28])" number_literal - (parenthesized_expression "(iVar5 - (uint)(byte)PTR___gmpn_clz_tab_0009d18c[uVar10 >> iVar28])" ( (binary_expression "iVar5 - (uint)(byte)PTR___gmpn_clz_tab_0009d18c[uVar10 >> iVar28]" identifier - (cast_expression "(uint)(byte)PTR___gmpn_clz_tab_0009d18c[uVar10 >> iVar28]" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(byte)PTR___gmpn_clz_tab_0009d18c[uVar10 >> iVar28]" ( (type_descriptor "byte" type_identifier) ) (subscript_expression "PTR___gmpn_clz_tab_0009d18c[uVar10 >> iVar28]" identifier [ (binary_expression "uVar10 >> iVar28" identifier >> identifier) ])))) ))) ))) >> number_literal) & number_literal) ))) ))) )) - number_literal) | number_literal) )) / number_literal)) ;) (expression_statement "uVar30 = uVar46 + 1;" (assignment_expression "uVar30 = uVar46 + 1" identifier = (binary_expression "uVar46 + 1" identifier + number_literal)) ;) (expression_statement "uVar10 = (uint)bVar1;" (assignment_expression "uVar10 = (uint)bVar1" identifier = (cast_expression "(uint)bVar1" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "uVar27 = 0;" (assignment_expression "uVar27 = 0" identifier = number_literal) ;) (do_statement "do {\n    uVar38 = uVar27 + 1;\n    uVar24 = uVar10;\n    if ((uVar31 & *(uint *)(puVar13 + iVar32 * 4)) == 0) {\n      uVar11 = (uVar38 & 1) + 1 + uVar38 * 3;\n      if (uVar57 < uVar6) {\n        uVar24 = uVar10 + 1;\n        puVar7[uVar10] = uVar6;\n        uVar6 = 1;\n      }\n      uVar10 = 0;\n      uVar15 = k;\n      uVar29 = n;\n      do {\n        if (uVar11 == 0) {\n          trap(7);\n        }\n        if (uVar11 == 0) {\n          trap(7);\n        }\n        uVar58 = uVar29 / uVar11;\n        bVar1 = uVar29 % uVar11 < uVar15 % uVar11 + uVar10;\n        if (bVar1) {\n          uVar6 = uVar6 * uVar11;\n        }\n        uVar10 = (uint)bVar1;\n        uVar15 = uVar15 / uVar11;\n        uVar29 = uVar58;\n      } while (uVar11 <= uVar58);\n    }\n    uVar31 = uVar31 * 2 - ((int)uVar31 >> 0x1f);\n    bVar1 = uVar27 != uVar46;\n    iVar32 = iVar32 + (uVar31 & 1);\n    uVar10 = uVar24;\n    uVar27 = uVar38;\n  } while (bVar1);" do (compound_statement "{\n    uVar38 = uVar27 + 1;\n    uVar24 = uVar10;\n    if ((uVar31 & *(uint *)(puVar13 + iVar32 * 4)) == 0) {\n      uVar11 = (uVar38 & 1) + 1 + uVar38 * 3;\n      if (uVar57 < uVar6) {\n        uVar24 = uVar10 + 1;\n        puVar7[uVar10] = uVar6;\n        uVar6 = 1;\n      }\n      uVar10 = 0;\n      uVar15 = k;\n      uVar29 = n;\n      do {\n        if (uVar11 == 0) {\n          trap(7);\n        }\n        if (uVar11 == 0) {\n          trap(7);\n        }\n        uVar58 = uVar29 / uVar11;\n        bVar1 = uVar29 % uVar11 < uVar15 % uVar11 + uVar10;\n        if (bVar1) {\n          uVar6 = uVar6 * uVar11;\n        }\n        uVar10 = (uint)bVar1;\n        uVar15 = uVar15 / uVar11;\n        uVar29 = uVar58;\n      } while (uVar11 <= uVar58);\n    }\n    uVar31 = uVar31 * 2 - ((int)uVar31 >> 0x1f);\n    bVar1 = uVar27 != uVar46;\n    iVar32 = iVar32 + (uVar31 & 1);\n    uVar10 = uVar24;\n    uVar27 = uVar38;\n  }" { (expression_statement "uVar38 = uVar27 + 1;" (assignment_expression "uVar38 = uVar27 + 1" identifier = (binary_expression "uVar27 + 1" identifier + number_literal)) ;) (expression_statement "uVar24 = uVar10;" (assignment_expression "uVar24 = uVar10" identifier = identifier) ;) (if_statement "if ((uVar31 & *(uint *)(puVar13 + iVar32 * 4)) == 0) {\n      uVar11 = (uVar38 & 1) + 1 + uVar38 * 3;\n      if (uVar57 < uVar6) {\n        uVar24 = uVar10 + 1;\n        puVar7[uVar10] = uVar6;\n        uVar6 = 1;\n      }\n      uVar10 = 0;\n      uVar15 = k;\n      uVar29 = n;\n      do {\n        if (uVar11 == 0) {\n          trap(7);\n        }\n        if (uVar11 == 0) {\n          trap(7);\n        }\n        uVar58 = uVar29 / uVar11;\n        bVar1 = uVar29 % uVar11 < uVar15 % uVar11 + uVar10;\n        if (bVar1) {\n          uVar6 = uVar6 * uVar11;\n        }\n        uVar10 = (uint)bVar1;\n        uVar15 = uVar15 / uVar11;\n        uVar29 = uVar58;\n      } while (uVar11 <= uVar58);\n    }" if (parenthesized_expression "((uVar31 & *(uint *)(puVar13 + iVar32 * 4)) == 0)" ( (binary_expression "(uVar31 & *(uint *)(puVar13 + iVar32 * 4)) == 0" (parenthesized_expression "(uVar31 & *(uint *)(puVar13 + iVar32 * 4))" ( (binary_expression "uVar31 & *(uint *)(puVar13 + iVar32 * 4)" identifier & (pointer_expression "*(uint *)(puVar13 + iVar32 * 4)" * (cast_expression "(uint *)(puVar13 + iVar32 * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar13 + iVar32 * 4)" ( (binary_expression "puVar13 + iVar32 * 4" identifier + (binary_expression "iVar32 * 4" identifier * number_literal)) ))))) )) == number_literal) )) (compound_statement "{\n      uVar11 = (uVar38 & 1) + 1 + uVar38 * 3;\n      if (uVar57 < uVar6) {\n        uVar24 = uVar10 + 1;\n        puVar7[uVar10] = uVar6;\n        uVar6 = 1;\n      }\n      uVar10 = 0;\n      uVar15 = k;\n      uVar29 = n;\n      do {\n        if (uVar11 == 0) {\n          trap(7);\n        }\n        if (uVar11 == 0) {\n          trap(7);\n        }\n        uVar58 = uVar29 / uVar11;\n        bVar1 = uVar29 % uVar11 < uVar15 % uVar11 + uVar10;\n        if (bVar1) {\n          uVar6 = uVar6 * uVar11;\n        }\n        uVar10 = (uint)bVar1;\n        uVar15 = uVar15 / uVar11;\n        uVar29 = uVar58;\n      } while (uVar11 <= uVar58);\n    }" { (expression_statement "uVar11 = (uVar38 & 1) + 1 + uVar38 * 3;" (assignment_expression "uVar11 = (uVar38 & 1) + 1 + uVar38 * 3" identifier = (binary_expression "(uVar38 & 1) + 1 + uVar38 * 3" (binary_expression "(uVar38 & 1) + 1" (parenthesized_expression "(uVar38 & 1)" ( (binary_expression "uVar38 & 1" identifier & number_literal) )) + number_literal) + (binary_expression "uVar38 * 3" identifier * number_literal))) ;) (if_statement "if (uVar57 < uVar6) {\n        uVar24 = uVar10 + 1;\n        puVar7[uVar10] = uVar6;\n        uVar6 = 1;\n      }" if (parenthesized_expression "(uVar57 < uVar6)" ( (binary_expression "uVar57 < uVar6" identifier < identifier) )) (compound_statement "{\n        uVar24 = uVar10 + 1;\n        puVar7[uVar10] = uVar6;\n        uVar6 = 1;\n      }" { (expression_statement "uVar24 = uVar10 + 1;" (assignment_expression "uVar24 = uVar10 + 1" identifier = (binary_expression "uVar10 + 1" identifier + number_literal)) ;) (expression_statement "puVar7[uVar10] = uVar6;" (assignment_expression "puVar7[uVar10] = uVar6" (subscript_expression "puVar7[uVar10]" identifier [ identifier ]) = identifier) ;) (expression_statement "uVar6 = 1;" (assignment_expression "uVar6 = 1" identifier = number_literal) ;) })) (expression_statement "uVar10 = 0;" (assignment_expression "uVar10 = 0" identifier = number_literal) ;) (expression_statement "uVar15 = k;" (assignment_expression "uVar15 = k" identifier = identifier) ;) (expression_statement "uVar29 = n;" (assignment_expression "uVar29 = n" identifier = identifier) ;) (do_statement "do {\n        if (uVar11 == 0) {\n          trap(7);\n        }\n        if (uVar11 == 0) {\n          trap(7);\n        }\n        uVar58 = uVar29 / uVar11;\n        bVar1 = uVar29 % uVar11 < uVar15 % uVar11 + uVar10;\n        if (bVar1) {\n          uVar6 = uVar6 * uVar11;\n        }\n        uVar10 = (uint)bVar1;\n        uVar15 = uVar15 / uVar11;\n        uVar29 = uVar58;\n      } while (uVar11 <= uVar58);" do (compound_statement "{\n        if (uVar11 == 0) {\n          trap(7);\n        }\n        if (uVar11 == 0) {\n          trap(7);\n        }\n        uVar58 = uVar29 / uVar11;\n        bVar1 = uVar29 % uVar11 < uVar15 % uVar11 + uVar10;\n        if (bVar1) {\n          uVar6 = uVar6 * uVar11;\n        }\n        uVar10 = (uint)bVar1;\n        uVar15 = uVar15 / uVar11;\n        uVar29 = uVar58;\n      }" { (if_statement "if (uVar11 == 0) {\n          trap(7);\n        }" if (parenthesized_expression "(uVar11 == 0)" ( (binary_expression "uVar11 == 0" identifier == number_literal) )) (compound_statement "{\n          trap(7);\n        }" { (expression_statement "trap(7);" (call_expression "trap(7)" identifier (argument_list "(7)" ( number_literal ))) ;) })) (if_statement "if (uVar11 == 0) {\n          trap(7);\n        }" if (parenthesized_expression "(uVar11 == 0)" ( (binary_expression "uVar11 == 0" identifier == number_literal) )) (compound_statement "{\n          trap(7);\n        }" { (expression_statement "trap(7);" (call_expression "trap(7)" identifier (argument_list "(7)" ( number_literal ))) ;) })) (expression_statement "uVar58 = uVar29 / uVar11;" (assignment_expression "uVar58 = uVar29 / uVar11" identifier = (binary_expression "uVar29 / uVar11" identifier / identifier)) ;) (expression_statement "bVar1 = uVar29 % uVar11 < uVar15 % uVar11 + uVar10;" (assignment_expression "bVar1 = uVar29 % uVar11 < uVar15 % uVar11 + uVar10" identifier = (binary_expression "uVar29 % uVar11 < uVar15 % uVar11 + uVar10" (binary_expression "uVar29 % uVar11" identifier % identifier) < (binary_expression "uVar15 % uVar11 + uVar10" (binary_expression "uVar15 % uVar11" identifier % identifier) + identifier))) ;) (if_statement "if (bVar1) {\n          uVar6 = uVar6 * uVar11;\n        }" if (parenthesized_expression "(bVar1)" ( identifier )) (compound_statement "{\n          uVar6 = uVar6 * uVar11;\n        }" { (expression_statement "uVar6 = uVar6 * uVar11;" (assignment_expression "uVar6 = uVar6 * uVar11" identifier = (binary_expression "uVar6 * uVar11" identifier * identifier)) ;) })) (expression_statement "uVar10 = (uint)bVar1;" (assignment_expression "uVar10 = (uint)bVar1" identifier = (cast_expression "(uint)bVar1" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "uVar15 = uVar15 / uVar11;" (assignment_expression "uVar15 = uVar15 / uVar11" identifier = (binary_expression "uVar15 / uVar11" identifier / identifier)) ;) (expression_statement "uVar29 = uVar58;" (assignment_expression "uVar29 = uVar58" identifier = identifier) ;) }) while (parenthesized_expression "(uVar11 <= uVar58)" ( (binary_expression "uVar11 <= uVar58" identifier <= identifier) )) ;) })) (expression_statement "uVar31 = uVar31 * 2 - ((int)uVar31 >> 0x1f);" (assignment_expression "uVar31 = uVar31 * 2 - ((int)uVar31 >> 0x1f)" identifier = (binary_expression "uVar31 * 2 - ((int)uVar31 >> 0x1f)" (binary_expression "uVar31 * 2" identifier * number_literal) - (parenthesized_expression "((int)uVar31 >> 0x1f)" ( (binary_expression "(int)uVar31 >> 0x1f" (cast_expression "(int)uVar31" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal) )))) ;) (expression_statement "bVar1 = uVar27 != uVar46;" (assignment_expression "bVar1 = uVar27 != uVar46" identifier = (binary_expression "uVar27 != uVar46" identifier != identifier)) ;) (expression_statement "iVar32 = iVar32 + (uVar31 & 1);" (assignment_expression "iVar32 = iVar32 + (uVar31 & 1)" identifier = (binary_expression "iVar32 + (uVar31 & 1)" identifier + (parenthesized_expression "(uVar31 & 1)" ( (binary_expression "uVar31 & 1" identifier & number_literal) )))) ;) (expression_statement "uVar10 = uVar24;" (assignment_expression "uVar10 = uVar24" identifier = identifier) ;) (expression_statement "uVar27 = uVar38;" (assignment_expression "uVar27 = uVar38" identifier = identifier) ;) }) while (parenthesized_expression "(bVar1)" ( identifier )) ;) (expression_statement "uVar27 = uVar30 >> 5;" (assignment_expression "uVar27 = uVar30 >> 5" identifier = (binary_expression "uVar30 >> 5" identifier >> number_literal)) ;) (expression_statement "uVar10 = 1 << (uVar30 & 0x1f);" (assignment_expression "uVar10 = 1 << (uVar30 & 0x1f)" identifier = (binary_expression "1 << (uVar30 & 0x1f)" number_literal << (parenthesized_expression "(uVar30 & 0x1f)" ( (binary_expression "uVar30 & 0x1f" identifier & number_literal) )))) ;) (expression_statement "uVar31 = (uVar44 - 5 | 1) / 3;" (assignment_expression "uVar31 = (uVar44 - 5 | 1) / 3" identifier = (binary_expression "(uVar44 - 5 | 1) / 3" (parenthesized_expression "(uVar44 - 5 | 1)" ( (binary_expression "uVar44 - 5 | 1" (binary_expression "uVar44 - 5" identifier - number_literal) | number_literal) )) / number_literal)) ;) (do_statement "do {\n    while( true ) {\n      uVar30 = uVar30 + 1;\n      uVar46 = uVar24;\n      if ((uVar10 & *(uint *)(puVar13 + uVar27 * 4)) == 0) break;\nLAB_00021e80:\n      uVar10 = uVar10 * 2 - ((int)uVar10 >> 0x1f);\n      uVar27 = uVar27 + (uVar10 & 1);\n      uVar24 = uVar46;\n      if (uVar31 < uVar30) goto LAB_00021f04;\n    }\n    uVar11 = (uVar30 & 1) + 1 + uVar30 * 3;\n    if (uVar11 == 0) {\n      trap(7);\n    }\n    if (uVar11 == 0) {\n      trap(7);\n    }\n    if (k % uVar11 <= n % uVar11) goto LAB_00021e80;\n    if (uVar57 << 1 < uVar6) {\n      uVar46 = uVar24 + 1;\n      puVar7[uVar24] = uVar6;\n      uVar6 = uVar11;\n      goto LAB_00021e80;\n    }\n    uVar10 = uVar10 * 2 - ((int)uVar10 >> 0x1f);\n    uVar6 = uVar6 * uVar11;\n    uVar27 = uVar27 + (uVar10 & 1);\n  } while (uVar30 <= uVar31);" do (compound_statement "{\n    while( true ) {\n      uVar30 = uVar30 + 1;\n      uVar46 = uVar24;\n      if ((uVar10 & *(uint *)(puVar13 + uVar27 * 4)) == 0) break;\nLAB_00021e80:\n      uVar10 = uVar10 * 2 - ((int)uVar10 >> 0x1f);\n      uVar27 = uVar27 + (uVar10 & 1);\n      uVar24 = uVar46;\n      if (uVar31 < uVar30) goto LAB_00021f04;\n    }\n    uVar11 = (uVar30 & 1) + 1 + uVar30 * 3;\n    if (uVar11 == 0) {\n      trap(7);\n    }\n    if (uVar11 == 0) {\n      trap(7);\n    }\n    if (k % uVar11 <= n % uVar11) goto LAB_00021e80;\n    if (uVar57 << 1 < uVar6) {\n      uVar46 = uVar24 + 1;\n      puVar7[uVar24] = uVar6;\n      uVar6 = uVar11;\n      goto LAB_00021e80;\n    }\n    uVar10 = uVar10 * 2 - ((int)uVar10 >> 0x1f);\n    uVar6 = uVar6 * uVar11;\n    uVar27 = uVar27 + (uVar10 & 1);\n  }" { (while_statement "while( true ) {\n      uVar30 = uVar30 + 1;\n      uVar46 = uVar24;\n      if ((uVar10 & *(uint *)(puVar13 + uVar27 * 4)) == 0) break;\nLAB_00021e80:\n      uVar10 = uVar10 * 2 - ((int)uVar10 >> 0x1f);\n      uVar27 = uVar27 + (uVar10 & 1);\n      uVar24 = uVar46;\n      if (uVar31 < uVar30) goto LAB_00021f04;\n    }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n      uVar30 = uVar30 + 1;\n      uVar46 = uVar24;\n      if ((uVar10 & *(uint *)(puVar13 + uVar27 * 4)) == 0) break;\nLAB_00021e80:\n      uVar10 = uVar10 * 2 - ((int)uVar10 >> 0x1f);\n      uVar27 = uVar27 + (uVar10 & 1);\n      uVar24 = uVar46;\n      if (uVar31 < uVar30) goto LAB_00021f04;\n    }" { (expression_statement "uVar30 = uVar30 + 1;" (assignment_expression "uVar30 = uVar30 + 1" identifier = (binary_expression "uVar30 + 1" identifier + number_literal)) ;) (expression_statement "uVar46 = uVar24;" (assignment_expression "uVar46 = uVar24" identifier = identifier) ;) (if_statement "if ((uVar10 & *(uint *)(puVar13 + uVar27 * 4)) == 0) break;" if (parenthesized_expression "((uVar10 & *(uint *)(puVar13 + uVar27 * 4)) == 0)" ( (binary_expression "(uVar10 & *(uint *)(puVar13 + uVar27 * 4)) == 0" (parenthesized_expression "(uVar10 & *(uint *)(puVar13 + uVar27 * 4))" ( (binary_expression "uVar10 & *(uint *)(puVar13 + uVar27 * 4)" identifier & (pointer_expression "*(uint *)(puVar13 + uVar27 * 4)" * (cast_expression "(uint *)(puVar13 + uVar27 * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar13 + uVar27 * 4)" ( (binary_expression "puVar13 + uVar27 * 4" identifier + (binary_expression "uVar27 * 4" identifier * number_literal)) ))))) )) == number_literal) )) (break_statement "break;" break ;)) (labeled_statement "LAB_00021e80:\n      uVar10 = uVar10 * 2 - ((int)uVar10 >> 0x1f);" statement_identifier : (expression_statement "uVar10 = uVar10 * 2 - ((int)uVar10 >> 0x1f);" (assignment_expression "uVar10 = uVar10 * 2 - ((int)uVar10 >> 0x1f)" identifier = (binary_expression "uVar10 * 2 - ((int)uVar10 >> 0x1f)" (binary_expression "uVar10 * 2" identifier * number_literal) - (parenthesized_expression "((int)uVar10 >> 0x1f)" ( (binary_expression "(int)uVar10 >> 0x1f" (cast_expression "(int)uVar10" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal) )))) ;)) (expression_statement "uVar27 = uVar27 + (uVar10 & 1);" (assignment_expression "uVar27 = uVar27 + (uVar10 & 1)" identifier = (binary_expression "uVar27 + (uVar10 & 1)" identifier + (parenthesized_expression "(uVar10 & 1)" ( (binary_expression "uVar10 & 1" identifier & number_literal) )))) ;) (expression_statement "uVar24 = uVar46;" (assignment_expression "uVar24 = uVar46" identifier = identifier) ;) (if_statement "if (uVar31 < uVar30) goto LAB_00021f04;" if (parenthesized_expression "(uVar31 < uVar30)" ( (binary_expression "uVar31 < uVar30" identifier < identifier) )) (goto_statement "goto LAB_00021f04;" goto statement_identifier ;)) })) (expression_statement "uVar11 = (uVar30 & 1) + 1 + uVar30 * 3;" (assignment_expression "uVar11 = (uVar30 & 1) + 1 + uVar30 * 3" identifier = (binary_expression "(uVar30 & 1) + 1 + uVar30 * 3" (binary_expression "(uVar30 & 1) + 1" (parenthesized_expression "(uVar30 & 1)" ( (binary_expression "uVar30 & 1" identifier & number_literal) )) + number_literal) + (binary_expression "uVar30 * 3" identifier * number_literal))) ;) (if_statement "if (uVar11 == 0) {\n      trap(7);\n    }" if (parenthesized_expression "(uVar11 == 0)" ( (binary_expression "uVar11 == 0" identifier == number_literal) )) (compound_statement "{\n      trap(7);\n    }" { (expression_statement "trap(7);" (call_expression "trap(7)" identifier (argument_list "(7)" ( number_literal ))) ;) })) (if_statement "if (uVar11 == 0) {\n      trap(7);\n    }" if (parenthesized_expression "(uVar11 == 0)" ( (binary_expression "uVar11 == 0" identifier == number_literal) )) (compound_statement "{\n      trap(7);\n    }" { (expression_statement "trap(7);" (call_expression "trap(7)" identifier (argument_list "(7)" ( number_literal ))) ;) })) (if_statement "if (k % uVar11 <= n % uVar11) goto LAB_00021e80;" if (parenthesized_expression "(k % uVar11 <= n % uVar11)" ( (binary_expression "k % uVar11 <= n % uVar11" (binary_expression "k % uVar11" identifier % identifier) <= (binary_expression "n % uVar11" identifier % identifier)) )) (goto_statement "goto LAB_00021e80;" goto statement_identifier ;)) (if_statement "if (uVar57 << 1 < uVar6) {\n      uVar46 = uVar24 + 1;\n      puVar7[uVar24] = uVar6;\n      uVar6 = uVar11;\n      goto LAB_00021e80;\n    }" if (parenthesized_expression "(uVar57 << 1 < uVar6)" ( (binary_expression "uVar57 << 1 < uVar6" (binary_expression "uVar57 << 1" identifier << number_literal) < identifier) )) (compound_statement "{\n      uVar46 = uVar24 + 1;\n      puVar7[uVar24] = uVar6;\n      uVar6 = uVar11;\n      goto LAB_00021e80;\n    }" { (expression_statement "uVar46 = uVar24 + 1;" (assignment_expression "uVar46 = uVar24 + 1" identifier = (binary_expression "uVar24 + 1" identifier + number_literal)) ;) (expression_statement "puVar7[uVar24] = uVar6;" (assignment_expression "puVar7[uVar24] = uVar6" (subscript_expression "puVar7[uVar24]" identifier [ identifier ]) = identifier) ;) (expression_statement "uVar6 = uVar11;" (assignment_expression "uVar6 = uVar11" identifier = identifier) ;) (goto_statement "goto LAB_00021e80;" goto statement_identifier ;) })) (expression_statement "uVar10 = uVar10 * 2 - ((int)uVar10 >> 0x1f);" (assignment_expression "uVar10 = uVar10 * 2 - ((int)uVar10 >> 0x1f)" identifier = (binary_expression "uVar10 * 2 - ((int)uVar10 >> 0x1f)" (binary_expression "uVar10 * 2" identifier * number_literal) - (parenthesized_expression "((int)uVar10 >> 0x1f)" ( (binary_expression "(int)uVar10 >> 0x1f" (cast_expression "(int)uVar10" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal) )))) ;) (expression_statement "uVar6 = uVar6 * uVar11;" (assignment_expression "uVar6 = uVar6 * uVar11" identifier = (binary_expression "uVar6 * uVar11" identifier * identifier)) ;) (expression_statement "uVar27 = uVar27 + (uVar10 & 1);" (assignment_expression "uVar27 = uVar27 + (uVar10 & 1)" identifier = (binary_expression "uVar27 + (uVar10 & 1)" identifier + (parenthesized_expression "(uVar10 & 1)" ( (binary_expression "uVar10 & 1" identifier & number_literal) )))) ;) }) while (parenthesized_expression "(uVar30 <= uVar31)" ( (binary_expression "uVar30 <= uVar31" identifier <= identifier) )) ;) (labeled_statement "LAB_00021f04:\n  uVar20 = (uVar20 - 5 | 1) / 3 + 1;" statement_identifier : (expression_statement "uVar20 = (uVar20 - 5 | 1) / 3 + 1;" (assignment_expression "uVar20 = (uVar20 - 5 | 1) / 3 + 1" identifier = (binary_expression "(uVar20 - 5 | 1) / 3 + 1" (binary_expression "(uVar20 - 5 | 1) / 3" (parenthesized_expression "(uVar20 - 5 | 1)" ( (binary_expression "uVar20 - 5 | 1" (binary_expression "uVar20 - 5" identifier - number_literal) | number_literal) )) / number_literal) + number_literal)) ;)) (expression_statement "uVar27 = uVar20 >> 5;" (assignment_expression "uVar27 = uVar20 >> 5" identifier = (binary_expression "uVar20 >> 5" identifier >> number_literal)) ;) (expression_statement "uVar40 = uVar40 / 3;" (assignment_expression "uVar40 = uVar40 / 3" identifier = (binary_expression "uVar40 / 3" identifier / number_literal)) ;) (expression_statement "uVar10 = 1 << (uVar20 & 0x1f);" (assignment_expression "uVar10 = 1 << (uVar20 & 0x1f)" identifier = (binary_expression "1 << (uVar20 & 0x1f)" number_literal << (parenthesized_expression "(uVar20 & 0x1f)" ( (binary_expression "uVar20 & 0x1f" identifier & number_literal) )))) ;) (do_statement "do {\n    while( true ) {\n      uVar20 = uVar20 + 1;\n      uVar30 = uVar46;\n      if ((uVar10 & *(uint *)(puVar13 + uVar27 * 4)) == 0) break;\nLAB_00021f58:\n      uVar10 = uVar10 * 2 - ((int)uVar10 >> 0x1f);\n      uVar27 = uVar27 + (uVar10 & 1);\n      uVar46 = uVar30;\n      if (uVar40 < uVar20) goto LAB_00021fb8;\n    }\n    mVar16 = (uVar20 & 1) + 1 + uVar20 * 3;\n    if ((uVar57 & 0x7fffffff) < uVar6) {\n      uVar30 = uVar46 + 1;\n      puVar7[uVar46] = uVar6;\n      uVar6 = mVar16;\n      goto LAB_00021f58;\n    }\n    uVar10 = uVar10 * 2 - ((int)uVar10 >> 0x1f);\n    uVar6 = uVar6 * mVar16;\n    uVar27 = uVar27 + (uVar10 & 1);\n  } while (uVar20 <= uVar40);" do (compound_statement "{\n    while( true ) {\n      uVar20 = uVar20 + 1;\n      uVar30 = uVar46;\n      if ((uVar10 & *(uint *)(puVar13 + uVar27 * 4)) == 0) break;\nLAB_00021f58:\n      uVar10 = uVar10 * 2 - ((int)uVar10 >> 0x1f);\n      uVar27 = uVar27 + (uVar10 & 1);\n      uVar46 = uVar30;\n      if (uVar40 < uVar20) goto LAB_00021fb8;\n    }\n    mVar16 = (uVar20 & 1) + 1 + uVar20 * 3;\n    if ((uVar57 & 0x7fffffff) < uVar6) {\n      uVar30 = uVar46 + 1;\n      puVar7[uVar46] = uVar6;\n      uVar6 = mVar16;\n      goto LAB_00021f58;\n    }\n    uVar10 = uVar10 * 2 - ((int)uVar10 >> 0x1f);\n    uVar6 = uVar6 * mVar16;\n    uVar27 = uVar27 + (uVar10 & 1);\n  }" { (while_statement "while( true ) {\n      uVar20 = uVar20 + 1;\n      uVar30 = uVar46;\n      if ((uVar10 & *(uint *)(puVar13 + uVar27 * 4)) == 0) break;\nLAB_00021f58:\n      uVar10 = uVar10 * 2 - ((int)uVar10 >> 0x1f);\n      uVar27 = uVar27 + (uVar10 & 1);\n      uVar46 = uVar30;\n      if (uVar40 < uVar20) goto LAB_00021fb8;\n    }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n      uVar20 = uVar20 + 1;\n      uVar30 = uVar46;\n      if ((uVar10 & *(uint *)(puVar13 + uVar27 * 4)) == 0) break;\nLAB_00021f58:\n      uVar10 = uVar10 * 2 - ((int)uVar10 >> 0x1f);\n      uVar27 = uVar27 + (uVar10 & 1);\n      uVar46 = uVar30;\n      if (uVar40 < uVar20) goto LAB_00021fb8;\n    }" { (expression_statement "uVar20 = uVar20 + 1;" (assignment_expression "uVar20 = uVar20 + 1" identifier = (binary_expression "uVar20 + 1" identifier + number_literal)) ;) (expression_statement "uVar30 = uVar46;" (assignment_expression "uVar30 = uVar46" identifier = identifier) ;) (if_statement "if ((uVar10 & *(uint *)(puVar13 + uVar27 * 4)) == 0) break;" if (parenthesized_expression "((uVar10 & *(uint *)(puVar13 + uVar27 * 4)) == 0)" ( (binary_expression "(uVar10 & *(uint *)(puVar13 + uVar27 * 4)) == 0" (parenthesized_expression "(uVar10 & *(uint *)(puVar13 + uVar27 * 4))" ( (binary_expression "uVar10 & *(uint *)(puVar13 + uVar27 * 4)" identifier & (pointer_expression "*(uint *)(puVar13 + uVar27 * 4)" * (cast_expression "(uint *)(puVar13 + uVar27 * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar13 + uVar27 * 4)" ( (binary_expression "puVar13 + uVar27 * 4" identifier + (binary_expression "uVar27 * 4" identifier * number_literal)) ))))) )) == number_literal) )) (break_statement "break;" break ;)) (labeled_statement "LAB_00021f58:\n      uVar10 = uVar10 * 2 - ((int)uVar10 >> 0x1f);" statement_identifier : (expression_statement "uVar10 = uVar10 * 2 - ((int)uVar10 >> 0x1f);" (assignment_expression "uVar10 = uVar10 * 2 - ((int)uVar10 >> 0x1f)" identifier = (binary_expression "uVar10 * 2 - ((int)uVar10 >> 0x1f)" (binary_expression "uVar10 * 2" identifier * number_literal) - (parenthesized_expression "((int)uVar10 >> 0x1f)" ( (binary_expression "(int)uVar10 >> 0x1f" (cast_expression "(int)uVar10" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal) )))) ;)) (expression_statement "uVar27 = uVar27 + (uVar10 & 1);" (assignment_expression "uVar27 = uVar27 + (uVar10 & 1)" identifier = (binary_expression "uVar27 + (uVar10 & 1)" identifier + (parenthesized_expression "(uVar10 & 1)" ( (binary_expression "uVar10 & 1" identifier & number_literal) )))) ;) (expression_statement "uVar46 = uVar30;" (assignment_expression "uVar46 = uVar30" identifier = identifier) ;) (if_statement "if (uVar40 < uVar20) goto LAB_00021fb8;" if (parenthesized_expression "(uVar40 < uVar20)" ( (binary_expression "uVar40 < uVar20" identifier < identifier) )) (goto_statement "goto LAB_00021fb8;" goto statement_identifier ;)) })) (expression_statement "mVar16 = (uVar20 & 1) + 1 + uVar20 * 3;" (assignment_expression "mVar16 = (uVar20 & 1) + 1 + uVar20 * 3" identifier = (binary_expression "(uVar20 & 1) + 1 + uVar20 * 3" (binary_expression "(uVar20 & 1) + 1" (parenthesized_expression "(uVar20 & 1)" ( (binary_expression "uVar20 & 1" identifier & number_literal) )) + number_literal) + (binary_expression "uVar20 * 3" identifier * number_literal))) ;) (if_statement "if ((uVar57 & 0x7fffffff) < uVar6) {\n      uVar30 = uVar46 + 1;\n      puVar7[uVar46] = uVar6;\n      uVar6 = mVar16;\n      goto LAB_00021f58;\n    }" if (parenthesized_expression "((uVar57 & 0x7fffffff) < uVar6)" ( (binary_expression "(uVar57 & 0x7fffffff) < uVar6" (parenthesized_expression "(uVar57 & 0x7fffffff)" ( (binary_expression "uVar57 & 0x7fffffff" identifier & number_literal) )) < identifier) )) (compound_statement "{\n      uVar30 = uVar46 + 1;\n      puVar7[uVar46] = uVar6;\n      uVar6 = mVar16;\n      goto LAB_00021f58;\n    }" { (expression_statement "uVar30 = uVar46 + 1;" (assignment_expression "uVar30 = uVar46 + 1" identifier = (binary_expression "uVar46 + 1" identifier + number_literal)) ;) (expression_statement "puVar7[uVar46] = uVar6;" (assignment_expression "puVar7[uVar46] = uVar6" (subscript_expression "puVar7[uVar46]" identifier [ identifier ]) = identifier) ;) (expression_statement "uVar6 = mVar16;" (assignment_expression "uVar6 = mVar16" identifier = identifier) ;) (goto_statement "goto LAB_00021f58;" goto statement_identifier ;) })) (expression_statement "uVar10 = uVar10 * 2 - ((int)uVar10 >> 0x1f);" (assignment_expression "uVar10 = uVar10 * 2 - ((int)uVar10 >> 0x1f)" identifier = (binary_expression "uVar10 * 2 - ((int)uVar10 >> 0x1f)" (binary_expression "uVar10 * 2" identifier * number_literal) - (parenthesized_expression "((int)uVar10 >> 0x1f)" ( (binary_expression "(int)uVar10 >> 0x1f" (cast_expression "(int)uVar10" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal) )))) ;) (expression_statement "uVar6 = uVar6 * mVar16;" (assignment_expression "uVar6 = uVar6 * mVar16" identifier = (binary_expression "uVar6 * mVar16" identifier * identifier)) ;) (expression_statement "uVar27 = uVar27 + (uVar10 & 1);" (assignment_expression "uVar27 = uVar27 + (uVar10 & 1)" identifier = (binary_expression "uVar27 + (uVar10 & 1)" identifier + (parenthesized_expression "(uVar10 & 1)" ( (binary_expression "uVar10 & 1" identifier & number_literal) )))) ;) }) while (parenthesized_expression "(uVar20 <= uVar40)" ( (binary_expression "uVar20 <= uVar40" identifier <= identifier) )) ;) (labeled_statement "LAB_00021fb8:\n  if (uVar30 == 0) {\n    *r->_mp_d = uVar6;\n    r->_mp_size = 1;\n    uVar20 = 0;\n    ptVar17 = __tmp_marker;\n  }\n  else {\n    uVar20 = uVar30 + 1;\n    puVar7[uVar30] = uVar6;\n    (*(code *)PTR___gmpz_prodlimbs_0009d284)(r);\n    ptVar17 = __tmp_marker;\n  }" statement_identifier : (if_statement "if (uVar30 == 0) {\n    *r->_mp_d = uVar6;\n    r->_mp_size = 1;\n    uVar20 = 0;\n    ptVar17 = __tmp_marker;\n  }\n  else {\n    uVar20 = uVar30 + 1;\n    puVar7[uVar30] = uVar6;\n    (*(code *)PTR___gmpz_prodlimbs_0009d284)(r);\n    ptVar17 = __tmp_marker;\n  }" if (parenthesized_expression "(uVar30 == 0)" ( (binary_expression "uVar30 == 0" identifier == number_literal) )) (compound_statement "{\n    *r->_mp_d = uVar6;\n    r->_mp_size = 1;\n    uVar20 = 0;\n    ptVar17 = __tmp_marker;\n  }" { (expression_statement "*r->_mp_d = uVar6;" (assignment_expression "*r->_mp_d = uVar6" (pointer_expression "*r->_mp_d" * (field_expression "r->_mp_d" identifier -> field_identifier)) = identifier) ;) (expression_statement "r->_mp_size = 1;" (assignment_expression "r->_mp_size = 1" (field_expression "r->_mp_size" identifier -> field_identifier) = number_literal) ;) (expression_statement "uVar20 = 0;" (assignment_expression "uVar20 = 0" identifier = number_literal) ;) (expression_statement "ptVar17 = __tmp_marker;" (assignment_expression "ptVar17 = __tmp_marker" identifier = identifier) ;) }) (else_clause "else {\n    uVar20 = uVar30 + 1;\n    puVar7[uVar30] = uVar6;\n    (*(code *)PTR___gmpz_prodlimbs_0009d284)(r);\n    ptVar17 = __tmp_marker;\n  }" else (compound_statement "{\n    uVar20 = uVar30 + 1;\n    puVar7[uVar30] = uVar6;\n    (*(code *)PTR___gmpz_prodlimbs_0009d284)(r);\n    ptVar17 = __tmp_marker;\n  }" { (expression_statement "uVar20 = uVar30 + 1;" (assignment_expression "uVar20 = uVar30 + 1" identifier = (binary_expression "uVar30 + 1" identifier + number_literal)) ;) (expression_statement "puVar7[uVar30] = uVar6;" (assignment_expression "puVar7[uVar30] = uVar6" (subscript_expression "puVar7[uVar30]" identifier [ identifier ]) = identifier) ;) (expression_statement "(*(code *)PTR___gmpz_prodlimbs_0009d284)(r);" (call_expression "(*(code *)PTR___gmpz_prodlimbs_0009d284)(r)" (parenthesized_expression "(*(code *)PTR___gmpz_prodlimbs_0009d284)" ( (pointer_expression "*(code *)PTR___gmpz_prodlimbs_0009d284" * (cast_expression "(code *)PTR___gmpz_prodlimbs_0009d284" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(r)" ( identifier ))) ;) (expression_statement "ptVar17 = __tmp_marker;" (assignment_expression "ptVar17 = __tmp_marker" identifier = identifier) ;) })))) (expression_statement "__tmp_marker = ptVar17;" (assignment_expression "__tmp_marker = ptVar17" identifier = identifier) ;) (if_statement "if (ptVar17 != (tmp_reentrant_t *)0x0) {\n    (*(code *)PTR___gmp_tmp_reentrant_free_0009d618)();\n  }" if (parenthesized_expression "(ptVar17 != (tmp_reentrant_t *)0x0)" ( (binary_expression "ptVar17 != (tmp_reentrant_t *)0x0" identifier != (cast_expression "(tmp_reentrant_t *)0x0" ( (type_descriptor "tmp_reentrant_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    (*(code *)PTR___gmp_tmp_reentrant_free_0009d618)();\n  }" { (expression_statement "(*(code *)PTR___gmp_tmp_reentrant_free_0009d618)();" (call_expression "(*(code *)PTR___gmp_tmp_reentrant_free_0009d618)()" (parenthesized_expression "(*(code *)PTR___gmp_tmp_reentrant_free_0009d618)" ( (pointer_expression "*(code *)PTR___gmp_tmp_reentrant_free_0009d618" * (cast_expression "(code *)PTR___gmp_tmp_reentrant_free_0009d618" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) })) (if_statement "if (local_2c == *(int *)puVar4) {\n    return;\n  }" if (parenthesized_expression "(local_2c == *(int *)puVar4)" ( (binary_expression "local_2c == *(int *)puVar4" identifier == (pointer_expression "*(int *)puVar4" * (cast_expression "(int *)puVar4" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) )) (compound_statement "{\n    return;\n  }" { (return_statement "return;" return ;) })) (expression_statement "pcVar55 = mpz_bdiv_bin_uiui;" (assignment_expression "pcVar55 = mpz_bdiv_bin_uiui" identifier = identifier) ;) (expression_statement "puVar14 = PTR___stack_chk_fail_0009d4d0;" (assignment_expression "puVar14 = PTR___stack_chk_fail_0009d4d0" identifier = identifier) ;) (expression_statement "(*(code *)PTR___stack_chk_fail_0009d4d0)();" (call_expression "(*(code *)PTR___stack_chk_fail_0009d4d0)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_0009d4d0)" ( (pointer_expression "*(code *)PTR___stack_chk_fail_0009d4d0" * (cast_expression "(code *)PTR___stack_chk_fail_0009d4d0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (expression_statement "puVar47 = puVar14 + 0x82fa4;" (assignment_expression "puVar47 = puVar14 + 0x82fa4" identifier = (binary_expression "puVar14 + 0x82fa4" identifier + number_literal)) ;) (expression_statement "puVar51 = puVar50 + -0x90;" (assignment_expression "puVar51 = puVar50 + -0x90" identifier = (binary_expression "puVar50 + -0x90" identifier + number_literal)) ;) (expression_statement "puVar54 = puVar50 + -0x90;" (assignment_expression "puVar54 = puVar50 + -0x90" identifier = (binary_expression "puVar50 + -0x90" identifier + number_literal)) ;) (expression_statement "puVar53 = puVar50 + -0x90;" (assignment_expression "puVar53 = puVar50 + -0x90" identifier = (binary_expression "puVar50 + -0x90" identifier + number_literal)) ;) (expression_statement "*(mpz_ptr *)(puVar50 + -0x24) = r;" (assignment_expression "*(mpz_ptr *)(puVar50 + -0x24) = r" (pointer_expression "*(mpz_ptr *)(puVar50 + -0x24)" * (cast_expression "(mpz_ptr *)(puVar50 + -0x24)" ( (type_descriptor "mpz_ptr *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar50 + -0x24)" ( (binary_expression "puVar50 + -0x24" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined1 **)(puVar50 + -8) = auStack_48;" (assignment_expression "*(undefined1 **)(puVar50 + -8) = auStack_48" (pointer_expression "*(undefined1 **)(puVar50 + -8)" * (cast_expression "(undefined1 **)(puVar50 + -8)" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar50 + -8)" ( (binary_expression "puVar50 + -8" identifier + number_literal) )))) = identifier) ;) (expression_statement "puVar21 = *(undefined4 **)(puVar14 + 0x7b4a4);" (assignment_expression "puVar21 = *(undefined4 **)(puVar14 + 0x7b4a4)" identifier = (pointer_expression "*(undefined4 **)(puVar14 + 0x7b4a4)" * (cast_expression "(undefined4 **)(puVar14 + 0x7b4a4)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar14 + 0x7b4a4)" ( (binary_expression "puVar14 + 0x7b4a4" identifier + number_literal) ))))) ;) (expression_statement "*(code **)(puVar50 + -4) = pcVar55;" (assignment_expression "*(code **)(puVar50 + -4) = pcVar55" (pointer_expression "*(code **)(puVar50 + -4)" * (cast_expression "(code **)(puVar50 + -4)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar50 + -4)" ( (binary_expression "puVar50 + -4" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(tmp_reentrant_t **)(puVar50 + -0x6c) = ptVar17;" (assignment_expression "*(tmp_reentrant_t **)(puVar50 + -0x6c) = ptVar17" (pointer_expression "*(tmp_reentrant_t **)(puVar50 + -0x6c)" * (cast_expression "(tmp_reentrant_t **)(puVar50 + -0x6c)" ( (type_descriptor "tmp_reentrant_t **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar50 + -0x6c)" ( (binary_expression "puVar50 + -0x6c" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(uint *)(puVar50 + -0xc) = uVar44;" (assignment_expression "*(uint *)(puVar50 + -0xc) = uVar44" (pointer_expression "*(uint *)(puVar50 + -0xc)" * (cast_expression "(uint *)(puVar50 + -0xc)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar50 + -0xc)" ( (binary_expression "puVar50 + -0xc" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(ulong *)(puVar50 + -0x10) = k;" (assignment_expression "*(ulong *)(puVar50 + -0x10) = k" (pointer_expression "*(ulong *)(puVar50 + -0x10)" * (cast_expression "(ulong *)(puVar50 + -0x10)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar50 + -0x10)" ( (binary_expression "puVar50 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(uint *)(puVar50 + -0x14) = uVar40;" (assignment_expression "*(uint *)(puVar50 + -0x14) = uVar40" (pointer_expression "*(uint *)(puVar50 + -0x14)" * (cast_expression "(uint *)(puVar50 + -0x14)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar50 + -0x14)" ( (binary_expression "puVar50 + -0x14" identifier + number_literal) )))) = identifier) ;) (expression_statement "uVar40 = (((uint)puVar7 >> 5) + 1) * 3;" (assignment_expression "uVar40 = (((uint)puVar7 >> 5) + 1) * 3" identifier = (binary_expression "(((uint)puVar7 >> 5) + 1) * 3" (parenthesized_expression "(((uint)puVar7 >> 5) + 1)" ( (binary_expression "((uint)puVar7 >> 5) + 1" (parenthesized_expression "((uint)puVar7 >> 5)" ( (binary_expression "(uint)puVar7 >> 5" (cast_expression "(uint)puVar7" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) )) + number_literal) )) * number_literal)) ;) (expression_statement "*(uint *)(puVar50 + -0x18) = uVar38;" (assignment_expression "*(uint *)(puVar50 + -0x18) = uVar38" (pointer_expression "*(uint *)(puVar50 + -0x18)" * (cast_expression "(uint *)(puVar50 + -0x18)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar50 + -0x18)" ( (binary_expression "puVar50 + -0x18" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined1 **)(puVar50 + -0x1c) = puVar13;" (assignment_expression "*(undefined1 **)(puVar50 + -0x1c) = puVar13" (pointer_expression "*(undefined1 **)(puVar50 + -0x1c)" * (cast_expression "(undefined1 **)(puVar50 + -0x1c)" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar50 + -0x1c)" ( (binary_expression "puVar50 + -0x1c" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(ulong *)(puVar50 + -0x20) = n;" (assignment_expression "*(ulong *)(puVar50 + -0x20) = n" (pointer_expression "*(ulong *)(puVar50 + -0x20)" * (cast_expression "(ulong *)(puVar50 + -0x20)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar50 + -0x20)" ( (binary_expression "puVar50 + -0x20" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined **)(puVar50 + -0x28) = puVar4;" (assignment_expression "*(undefined **)(puVar50 + -0x28) = puVar4" (pointer_expression "*(undefined **)(puVar50 + -0x28)" * (cast_expression "(undefined **)(puVar50 + -0x28)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar50 + -0x28)" ( (binary_expression "puVar50 + -0x28" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined **)(puVar50 + -0x78) = puVar47;" (assignment_expression "*(undefined **)(puVar50 + -0x78) = puVar47" (pointer_expression "*(undefined **)(puVar50 + -0x78)" * (cast_expression "(undefined **)(puVar50 + -0x78)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar50 + -0x78)" ( (binary_expression "puVar50 + -0x78" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 **)(puVar50 + -0x70) = puVar21;" (assignment_expression "*(undefined4 **)(puVar50 + -0x70) = puVar21" (pointer_expression "*(undefined4 **)(puVar50 + -0x70)" * (cast_expression "(undefined4 **)(puVar50 + -0x70)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar50 + -0x70)" ( (binary_expression "puVar50 + -0x70" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar50 + -0x30) = 0;" (assignment_expression "*(undefined4 *)(puVar50 + -0x30) = 0" (pointer_expression "*(undefined4 *)(puVar50 + -0x30)" * (cast_expression "(undefined4 *)(puVar50 + -0x30)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar50 + -0x30)" ( (binary_expression "puVar50 + -0x30" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(puVar50 + -0x2c) = *puVar21;" (assignment_expression "*(undefined4 *)(puVar50 + -0x2c) = *puVar21" (pointer_expression "*(undefined4 *)(puVar50 + -0x2c)" * (cast_expression "(undefined4 *)(puVar50 + -0x2c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar50 + -0x2c)" ( (binary_expression "puVar50 + -0x2c" identifier + number_literal) )))) = (pointer_expression "*puVar21" * identifier)) ;) (if_statement "if (uVar40 < 0x2a) {\n    uVar40 = 0x27;\n    if (uVar20 < 0x28) {\n      uVar40 = uVar20;\n    }\n    uVar40 = (uVar40 + 1) * 4;\n  }\n  else {\n    uVar40 = ((int)uVar40 >> 1) + 0x13;\n    if (uVar20 < uVar40) {\n      uVar40 = uVar20;\n    }\n    uVar40 = (uVar40 + 1) * 4;\n    pcVar55 = *(code **)(puVar14 + 0x7b254);\n    if (0x7f00 < uVar40) {\n      *(uint *)(puVar50 + 8) = uVar20;\n      p_Var41 = (mpz_ptr)(*pcVar55)(puVar50 + -0x30);\n      puVar47 = *(undefined **)(puVar50 + -0x78);\n      uVar20 = *(uint *)(puVar50 + 8);\n      goto LAB_0002214c;\n    }\n  }" if (parenthesized_expression "(uVar40 < 0x2a)" ( (binary_expression "uVar40 < 0x2a" identifier < number_literal) )) (compound_statement "{\n    uVar40 = 0x27;\n    if (uVar20 < 0x28) {\n      uVar40 = uVar20;\n    }\n    uVar40 = (uVar40 + 1) * 4;\n  }" { (expression_statement "uVar40 = 0x27;" (assignment_expression "uVar40 = 0x27" identifier = number_literal) ;) (if_statement "if (uVar20 < 0x28) {\n      uVar40 = uVar20;\n    }" if (parenthesized_expression "(uVar20 < 0x28)" ( (binary_expression "uVar20 < 0x28" identifier < number_literal) )) (compound_statement "{\n      uVar40 = uVar20;\n    }" { (expression_statement "uVar40 = uVar20;" (assignment_expression "uVar40 = uVar20" identifier = identifier) ;) })) (expression_statement "uVar40 = (uVar40 + 1) * 4;" (assignment_expression "uVar40 = (uVar40 + 1) * 4" identifier = (binary_expression "(uVar40 + 1) * 4" (parenthesized_expression "(uVar40 + 1)" ( (binary_expression "uVar40 + 1" identifier + number_literal) )) * number_literal)) ;) }) (else_clause "else {\n    uVar40 = ((int)uVar40 >> 1) + 0x13;\n    if (uVar20 < uVar40) {\n      uVar40 = uVar20;\n    }\n    uVar40 = (uVar40 + 1) * 4;\n    pcVar55 = *(code **)(puVar14 + 0x7b254);\n    if (0x7f00 < uVar40) {\n      *(uint *)(puVar50 + 8) = uVar20;\n      p_Var41 = (mpz_ptr)(*pcVar55)(puVar50 + -0x30);\n      puVar47 = *(undefined **)(puVar50 + -0x78);\n      uVar20 = *(uint *)(puVar50 + 8);\n      goto LAB_0002214c;\n    }\n  }" else (compound_statement "{\n    uVar40 = ((int)uVar40 >> 1) + 0x13;\n    if (uVar20 < uVar40) {\n      uVar40 = uVar20;\n    }\n    uVar40 = (uVar40 + 1) * 4;\n    pcVar55 = *(code **)(puVar14 + 0x7b254);\n    if (0x7f00 < uVar40) {\n      *(uint *)(puVar50 + 8) = uVar20;\n      p_Var41 = (mpz_ptr)(*pcVar55)(puVar50 + -0x30);\n      puVar47 = *(undefined **)(puVar50 + -0x78);\n      uVar20 = *(uint *)(puVar50 + 8);\n      goto LAB_0002214c;\n    }\n  }" { (expression_statement "uVar40 = ((int)uVar40 >> 1) + 0x13;" (assignment_expression "uVar40 = ((int)uVar40 >> 1) + 0x13" identifier = (binary_expression "((int)uVar40 >> 1) + 0x13" (parenthesized_expression "((int)uVar40 >> 1)" ( (binary_expression "(int)uVar40 >> 1" (cast_expression "(int)uVar40" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal) )) + number_literal)) ;) (if_statement "if (uVar20 < uVar40) {\n      uVar40 = uVar20;\n    }" if (parenthesized_expression "(uVar20 < uVar40)" ( (binary_expression "uVar20 < uVar40" identifier < identifier) )) (compound_statement "{\n      uVar40 = uVar20;\n    }" { (expression_statement "uVar40 = uVar20;" (assignment_expression "uVar40 = uVar20" identifier = identifier) ;) })) (expression_statement "uVar40 = (uVar40 + 1) * 4;" (assignment_expression "uVar40 = (uVar40 + 1) * 4" identifier = (binary_expression "(uVar40 + 1) * 4" (parenthesized_expression "(uVar40 + 1)" ( (binary_expression "uVar40 + 1" identifier + number_literal) )) * number_literal)) ;) (expression_statement "pcVar55 = *(code **)(puVar14 + 0x7b254);" (assignment_expression "pcVar55 = *(code **)(puVar14 + 0x7b254)" identifier = (pointer_expression "*(code **)(puVar14 + 0x7b254)" * (cast_expression "(code **)(puVar14 + 0x7b254)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar14 + 0x7b254)" ( (binary_expression "puVar14 + 0x7b254" identifier + number_literal) ))))) ;) (if_statement "if (0x7f00 < uVar40) {\n      *(uint *)(puVar50 + 8) = uVar20;\n      p_Var41 = (mpz_ptr)(*pcVar55)(puVar50 + -0x30);\n      puVar47 = *(undefined **)(puVar50 + -0x78);\n      uVar20 = *(uint *)(puVar50 + 8);\n      goto LAB_0002214c;\n    }" if (parenthesized_expression "(0x7f00 < uVar40)" ( (binary_expression "0x7f00 < uVar40" number_literal < identifier) )) (compound_statement "{\n      *(uint *)(puVar50 + 8) = uVar20;\n      p_Var41 = (mpz_ptr)(*pcVar55)(puVar50 + -0x30);\n      puVar47 = *(undefined **)(puVar50 + -0x78);\n      uVar20 = *(uint *)(puVar50 + 8);\n      goto LAB_0002214c;\n    }" { (expression_statement "*(uint *)(puVar50 + 8) = uVar20;" (assignment_expression "*(uint *)(puVar50 + 8) = uVar20" (pointer_expression "*(uint *)(puVar50 + 8)" * (cast_expression "(uint *)(puVar50 + 8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar50 + 8)" ( (binary_expression "puVar50 + 8" identifier + number_literal) )))) = identifier) ;) (expression_statement "p_Var41 = (mpz_ptr)(*pcVar55)(puVar50 + -0x30);" (assignment_expression "p_Var41 = (mpz_ptr)(*pcVar55)(puVar50 + -0x30)" identifier = (call_expression "(mpz_ptr)(*pcVar55)(puVar50 + -0x30)" (call_expression "(mpz_ptr)(*pcVar55)" (parenthesized_expression "(mpz_ptr)" ( identifier )) (argument_list "(*pcVar55)" ( (pointer_expression "*pcVar55" * identifier) ))) (argument_list "(puVar50 + -0x30)" ( (binary_expression "puVar50 + -0x30" identifier + number_literal) )))) ;) (expression_statement "puVar47 = *(undefined **)(puVar50 + -0x78);" (assignment_expression "puVar47 = *(undefined **)(puVar50 + -0x78)" identifier = (pointer_expression "*(undefined **)(puVar50 + -0x78)" * (cast_expression "(undefined **)(puVar50 + -0x78)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar50 + -0x78)" ( (binary_expression "puVar50 + -0x78" identifier + number_literal) ))))) ;) (expression_statement "uVar20 = *(uint *)(puVar50 + 8);" (assignment_expression "uVar20 = *(uint *)(puVar50 + 8)" identifier = (pointer_expression "*(uint *)(puVar50 + 8)" * (cast_expression "(uint *)(puVar50 + 8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar50 + 8)" ( (binary_expression "puVar50 + 8" identifier + number_literal) ))))) ;) (goto_statement "goto LAB_0002214c;" goto statement_identifier ;) })) }))) (expression_statement "iVar5 = -(uVar40 + 7 & 0xfffffff8);" (assignment_expression "iVar5 = -(uVar40 + 7 & 0xfffffff8)" identifier = (unary_expression "-(uVar40 + 7 & 0xfffffff8)" - (parenthesized_expression "(uVar40 + 7 & 0xfffffff8)" ( (binary_expression "uVar40 + 7 & 0xfffffff8" (binary_expression "uVar40 + 7" identifier + number_literal) & number_literal) )))) ;) (expression_statement "puVar51 = puVar50 + iVar5 + -0x90;" (assignment_expression "puVar51 = puVar50 + iVar5 + -0x90" identifier = (binary_expression "puVar50 + iVar5 + -0x90" (binary_expression "puVar50 + iVar5" identifier + identifier) + number_literal)) ;) (expression_statement "p_Var41 = (mpz_ptr)(puVar50 + iVar5 + -0x78);" (assignment_expression "p_Var41 = (mpz_ptr)(puVar50 + iVar5 + -0x78)" identifier = (call_expression "(mpz_ptr)(puVar50 + iVar5 + -0x78)" (parenthesized_expression "(mpz_ptr)" ( identifier )) (argument_list "(puVar50 + iVar5 + -0x78)" ( (binary_expression "puVar50 + iVar5 + -0x78" (binary_expression "puVar50 + iVar5" identifier + identifier) + number_literal) )))) ;) (labeled_statement "LAB_0002214c:\n  iVar28 = *(int *)(puVar47 + -0x7c6c);" statement_identifier : (expression_statement "iVar28 = *(int *)(puVar47 + -0x7c6c);" (assignment_expression "iVar28 = *(int *)(puVar47 + -0x7c6c)" identifier = (pointer_expression "*(int *)(puVar47 + -0x7c6c)" * (cast_expression "(int *)(puVar47 + -0x7c6c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar47 + -0x7c6c)" ( (binary_expression "puVar47 + -0x7c6c" identifier + number_literal) ))))) ;)) (expression_statement "p_Var39 = (mpz_ptr)(puVar51 + -0x40);" (assignment_expression "p_Var39 = (mpz_ptr)(puVar51 + -0x40)" identifier = (call_expression "(mpz_ptr)(puVar51 + -0x40)" (parenthesized_expression "(mpz_ptr)" ( identifier )) (argument_list "(puVar51 + -0x40)" ( (binary_expression "puVar51 + -0x40" identifier + number_literal) )))) ;) (expression_statement "puVar12 = (uint *)(iVar28 + 0x1c);" (assignment_expression "puVar12 = (uint *)(iVar28 + 0x1c)" identifier = (cast_expression "(uint *)(iVar28 + 0x1c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar28 + 0x1c)" ( (binary_expression "iVar28 + 0x1c" identifier + number_literal) )))) ;) (expression_statement "iVar5 = 8;" (assignment_expression "iVar5 = 8" identifier = number_literal) ;) (do_statement "do {\n    iVar32 = iVar5;\n    puVar8 = (uint *)*puVar12;\n    puVar12 = puVar12 + -1;\n    iVar5 = iVar32 + -1;\n  } while (puVar8 < puVar7);" do (compound_statement "{\n    iVar32 = iVar5;\n    puVar8 = (uint *)*puVar12;\n    puVar12 = puVar12 + -1;\n    iVar5 = iVar32 + -1;\n  }" { (expression_statement "iVar32 = iVar5;" (assignment_expression "iVar32 = iVar5" identifier = identifier) ;) (expression_statement "puVar8 = (uint *)*puVar12;" (assignment_expression "puVar8 = (uint *)*puVar12" identifier = (cast_expression "(uint *)*puVar12" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar12" * identifier))) ;) (expression_statement "puVar12 = puVar12 + -1;" (assignment_expression "puVar12 = puVar12 + -1" identifier = (binary_expression "puVar12 + -1" identifier + number_literal)) ;) (expression_statement "iVar5 = iVar32 + -1;" (assignment_expression "iVar5 = iVar32 + -1" identifier = (binary_expression "iVar32 + -1" identifier + number_literal)) ;) }) while (parenthesized_expression "(puVar8 < puVar7)" ( (binary_expression "puVar8 < puVar7" identifier < identifier) )) ;) (expression_statement "*(int *)(puVar50 + -0x68) = iVar32;" (assignment_expression "*(int *)(puVar50 + -0x68) = iVar32" (pointer_expression "*(int *)(puVar50 + -0x68)" * (cast_expression "(int *)(puVar50 + -0x68)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar50 + -0x68)" ( (binary_expression "puVar50 + -0x68" identifier + number_literal) )))) = identifier) ;) (expression_statement "puVar12 = (uint *)(iVar28 + 0x1c);" (assignment_expression "puVar12 = (uint *)(iVar28 + 0x1c)" identifier = (cast_expression "(uint *)(iVar28 + 0x1c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar28 + 0x1c)" ( (binary_expression "iVar28 + 0x1c" identifier + number_literal) )))) ;) (expression_statement "uVar40 = 8;" (assignment_expression "uVar40 = 8" identifier = number_literal) ;) (do_statement "do {\n    uVar6 = uVar40;\n    uVar10 = *puVar12;\n    puVar12 = puVar12 + -1;\n    uVar40 = uVar6 - 1;\n  } while (uVar10 < uVar20);" do (compound_statement "{\n    uVar6 = uVar40;\n    uVar10 = *puVar12;\n    puVar12 = puVar12 + -1;\n    uVar40 = uVar6 - 1;\n  }" { (expression_statement "uVar6 = uVar40;" (assignment_expression "uVar6 = uVar40" identifier = identifier) ;) (expression_statement "uVar10 = *puVar12;" (assignment_expression "uVar10 = *puVar12" identifier = (pointer_expression "*puVar12" * identifier)) ;) (expression_statement "puVar12 = puVar12 + -1;" (assignment_expression "puVar12 = puVar12 + -1" identifier = (binary_expression "puVar12 + -1" identifier + number_literal)) ;) (expression_statement "uVar40 = uVar6 - 1;" (assignment_expression "uVar40 = uVar6 - 1" identifier = (binary_expression "uVar6 - 1" identifier - number_literal)) ;) }) while (parenthesized_expression "(uVar10 < uVar20)" ( (binary_expression "uVar10 < uVar20" identifier < identifier) )) ;) (expression_statement "uVar9 = *(undefined4 *)(puVar47 + -0x7d3c);" (assignment_expression "uVar9 = *(undefined4 *)(puVar47 + -0x7d3c)" identifier = (pointer_expression "*(undefined4 *)(puVar47 + -0x7d3c)" * (cast_expression "(undefined4 *)(puVar47 + -0x7d3c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar47 + -0x7d3c)" ( (binary_expression "puVar47 + -0x7d3c" identifier + number_literal) ))))) ;) (expression_statement "iVar5 = 0x11;" (assignment_expression "iVar5 = 0x11" identifier = number_literal) ;) (expression_statement "*(undefined4 *)(puVar50 + -0x48) = 0;" (assignment_expression "*(undefined4 *)(puVar50 + -0x48) = 0" (pointer_expression "*(undefined4 *)(puVar50 + -0x48)" * (cast_expression "(undefined4 *)(puVar50 + -0x48)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar50 + -0x48)" ( (binary_expression "puVar50 + -0x48" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(puVar50 + -100) = uVar9;" (assignment_expression "*(undefined4 *)(puVar50 + -100) = uVar9" (pointer_expression "*(undefined4 *)(puVar50 + -100)" * (cast_expression "(undefined4 *)(puVar50 + -100)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar50 + -100)" ( (binary_expression "puVar50 + -100" identifier + number_literal) )))) = identifier) ;) (expression_statement "iVar28 = *(int *)(puVar47 + -0x7e20);" (assignment_expression "iVar28 = *(int *)(puVar47 + -0x7e20)" identifier = (pointer_expression "*(int *)(puVar47 + -0x7e20)" * (cast_expression "(int *)(puVar47 + -0x7e20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar47 + -0x7e20)" ( (binary_expression "puVar47 + -0x7e20" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar50 + -0x5c) = 0x3fffffff;" (assignment_expression "*(undefined4 *)(puVar50 + -0x5c) = 0x3fffffff" (pointer_expression "*(undefined4 *)(puVar50 + -0x5c)" * (cast_expression "(undefined4 *)(puVar50 + -0x5c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar50 + -0x5c)" ( (binary_expression "puVar50 + -0x5c" identifier + number_literal) )))) = number_literal) ;) (expression_statement "iVar32 = (int)puVar7 + (1 - uVar20);" (assignment_expression "iVar32 = (int)puVar7 + (1 - uVar20)" identifier = (binary_expression "(int)puVar7 + (1 - uVar20)" (cast_expression "(int)puVar7" ( (type_descriptor "int" primitive_type) ) identifier) + (parenthesized_expression "(1 - uVar20)" ( (binary_expression "1 - uVar20" number_literal - identifier) )))) ;) (expression_statement "*(uint *)(puVar50 + -0x40) = (uint)*(byte *)(iVar28 + 7);" (assignment_expression "*(uint *)(puVar50 + -0x40) = (uint)*(byte *)(iVar28 + 7)" (pointer_expression "*(uint *)(puVar50 + -0x40)" * (cast_expression "(uint *)(puVar50 + -0x40)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar50 + -0x40)" ( (binary_expression "puVar50 + -0x40" identifier + number_literal) )))) = (binary_expression "(uint)*(byte *)(iVar28 + 7)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)(iVar28 + 7)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar28 + 7)" ( (binary_expression "iVar28 + 7" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar50 + -0x3c) = *(undefined4 *)(puVar47 + -0x7eb4);" (assignment_expression "*(undefined4 *)(puVar50 + -0x3c) = *(undefined4 *)(puVar47 + -0x7eb4)" (pointer_expression "*(undefined4 *)(puVar50 + -0x3c)" * (cast_expression "(undefined4 *)(puVar50 + -0x3c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar50 + -0x3c)" ( (binary_expression "puVar50 + -0x3c" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(puVar47 + -0x7eb4)" * (cast_expression "(undefined4 *)(puVar47 + -0x7eb4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar47 + -0x7eb4)" ( (binary_expression "puVar47 + -0x7eb4" identifier + number_literal) ))))) ;) (expression_statement "*(uint *)(puVar50 + -0x60) = uVar20 + 1;" (assignment_expression "*(uint *)(puVar50 + -0x60) = uVar20 + 1" (pointer_expression "*(uint *)(puVar50 + -0x60)" * (cast_expression "(uint *)(puVar50 + -0x60)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar50 + -0x60)" ( (binary_expression "puVar50 + -0x60" identifier + number_literal) )))) = (binary_expression "uVar20 + 1" identifier + number_literal)) ;) (expression_statement "iVar28 = *(int *)(puVar50 + -0x60);" (assignment_expression "iVar28 = *(int *)(puVar50 + -0x60)" identifier = (pointer_expression "*(int *)(puVar50 + -0x60)" * (cast_expression "(int *)(puVar50 + -0x60)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar50 + -0x60)" ( (binary_expression "puVar50 + -0x60" identifier + number_literal) ))))) ;) (expression_statement "p_Var41->_mp_alloc = 1;" (assignment_expression "p_Var41->_mp_alloc = 1" (field_expression "p_Var41->_mp_alloc" identifier -> field_identifier) = number_literal) ;) (expression_statement "*(undefined4 *)(puVar50 + -0x44) = 1;" (assignment_expression "*(undefined4 *)(puVar50 + -0x44) = 1" (pointer_expression "*(undefined4 *)(puVar50 + -0x44)" * (cast_expression "(undefined4 *)(puVar50 + -0x44)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar50 + -0x44)" ( (binary_expression "puVar50 + -0x44" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(int *)(puVar50 + -0x34) = *(int *)(puVar47 + -0x7fe4) + -0x31a4;" (assignment_expression "*(int *)(puVar50 + -0x34) = *(int *)(puVar47 + -0x7fe4) + -0x31a4" (pointer_expression "*(int *)(puVar50 + -0x34)" * (cast_expression "(int *)(puVar50 + -0x34)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar50 + -0x34)" ( (binary_expression "puVar50 + -0x34" identifier + number_literal) )))) = (binary_expression "*(int *)(puVar47 + -0x7fe4) + -0x31a4" (pointer_expression "*(int *)(puVar47 + -0x7fe4)" * (cast_expression "(int *)(puVar47 + -0x7fe4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar47 + -0x7fe4)" ( (binary_expression "puVar47 + -0x7fe4" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "*(int *)(puVar50 + -0x38) = *(int *)(puVar47 + -0x7fd4) + 0x3630;" (assignment_expression "*(int *)(puVar50 + -0x38) = *(int *)(puVar47 + -0x7fd4) + 0x3630" (pointer_expression "*(int *)(puVar50 + -0x38)" * (cast_expression "(int *)(puVar50 + -0x38)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar50 + -0x38)" ( (binary_expression "puVar50 + -0x38" identifier + number_literal) )))) = (binary_expression "*(int *)(puVar47 + -0x7fd4) + 0x3630" (pointer_expression "*(int *)(puVar47 + -0x7fd4)" * (cast_expression "(int *)(puVar47 + -0x7fd4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar47 + -0x7fd4)" ( (binary_expression "puVar47 + -0x7fd4" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "p_Var39->_mp_alloc = 0x260eeeeb;" (assignment_expression "p_Var39->_mp_alloc = 0x260eeeeb" (field_expression "p_Var39->_mp_alloc" identifier -> field_identifier) = number_literal) ;) (if_statement "if (iVar28 - 0x11U <= uVar6) {\n    uVar6 = iVar28 - 0x11U;\n  }" if (parenthesized_expression "(iVar28 - 0x11U <= uVar6)" ( (binary_expression "iVar28 - 0x11U <= uVar6" (binary_expression "iVar28 - 0x11U" identifier - number_literal) <= identifier) )) (compound_statement "{\n    uVar6 = iVar28 - 0x11U;\n  }" { (expression_statement "uVar6 = iVar28 - 0x11U;" (assignment_expression "uVar6 = iVar28 - 0x11U" identifier = (binary_expression "iVar28 - 0x11U" identifier - number_literal)) ;) })) (expression_statement "p_Var33 = (mpz_ptr)&DAT_00000001;" (assignment_expression "p_Var33 = (mpz_ptr)&DAT_00000001" identifier = (binary_expression "(mpz_ptr)&DAT_00000001" (parenthesized_expression "(mpz_ptr)" ( identifier )) & identifier)) ;) (expression_statement "iVar42 = iVar5;" (assignment_expression "iVar42 = iVar5" identifier = identifier) ;) (if_statement "if (uVar6 == 0) goto LAB_00022534;" if (parenthesized_expression "(uVar6 == 0)" ( (binary_expression "uVar6 == 0" identifier == number_literal) )) (goto_statement "goto LAB_00022534;" goto statement_identifier ;)) (labeled_statement "LAB_00022234:\n  p_Var34 = (mpz_ptr)&DAT_00000001;" statement_identifier : (expression_statement "p_Var34 = (mpz_ptr)&DAT_00000001;" (assignment_expression "p_Var34 = (mpz_ptr)&DAT_00000001" identifier = (binary_expression "(mpz_ptr)&DAT_00000001" (parenthesized_expression "(mpz_ptr)" ( identifier )) & identifier)) ;)) (expression_statement "iVar45 = *(int *)(puVar50 + -0x40);" (assignment_expression "iVar45 = *(int *)(puVar50 + -0x40)" identifier = (pointer_expression "*(int *)(puVar50 + -0x40)" * (cast_expression "(int *)(puVar50 + -0x40)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar50 + -0x40)" ( (binary_expression "puVar50 + -0x40" identifier + number_literal) ))))) ;) (expression_statement "*(mpz_ptr *)(puVar50 + -0x4c) = p_Var33;" (assignment_expression "*(mpz_ptr *)(puVar50 + -0x4c) = p_Var33" (pointer_expression "*(mpz_ptr *)(puVar50 + -0x4c)" * (cast_expression "(mpz_ptr *)(puVar50 + -0x4c)" ( (type_descriptor "mpz_ptr *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar50 + -0x4c)" ( (binary_expression "puVar50 + -0x4c" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(mpz_ptr *)(puVar50 + -0x50) = p_Var41;" (assignment_expression "*(mpz_ptr *)(puVar50 + -0x50) = p_Var41" (pointer_expression "*(mpz_ptr *)(puVar50 + -0x50)" * (cast_expression "(mpz_ptr *)(puVar50 + -0x50)" ( (type_descriptor "mpz_ptr *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar50 + -0x50)" ( (binary_expression "puVar50 + -0x50" identifier + number_literal) )))) = identifier) ;) (do_statement "do {\n    iVar42 = iVar5 + uVar6;\n    uVar20 = (**(code **)(*(int *)(puVar50 + -0x34) + (uVar6 - 1) * 4))(iVar5);\n    if ((uVar20 & 0xff) == 0) {\n      uVar40 = uVar20 >> 8;\n      iVar5 = 6;\n      if ((uVar40 & 0xff) == 0) {\n        uVar40 = uVar20 >> 0x10;\n        iVar5 = 0xe;\n        if ((uVar40 & 0xff) == 0) {\n          uVar40 = uVar20 >> 0x18;\n          iVar5 = 0x1e;\n          if (uVar40 != 0) {\n            iVar5 = 0x16;\n          }\n        }\n      }\n      uVar40 = (uint)*(byte *)(*(int *)(puVar50 + -0x3c) + (-uVar40 & uVar40)) + iVar5;\n    }\n    else {\n      uVar40 = *(byte *)(*(int *)(puVar50 + -0x3c) + (-uVar20 & uVar20)) - 2;\n    }\n    iVar45 = iVar45 + *(byte *)(*(int *)(puVar50 + -0x38) + (uVar6 - 1)) + uVar40;\n    iVar5 = (**(code **)(*(int *)(puVar50 + -0x78) + -0x7f9c))\n                      (p_Var39,p_Var39,p_Var34,uVar20 >> (uVar40 & 0x1f));\n    puVar47 = *(undefined **)(puVar50 + -0x78);\n    if ((uint)(iVar28 - iVar42) <= uVar6) {\n      uVar6 = iVar28 - iVar42;\n    }\n    piVar35 = &p_Var39->_mp_alloc + (int)p_Var34;\n    p_Var34 = (mpz_ptr)((int)&p_Var34->_mp_alloc + (uint)(iVar5 != 0));\n    *piVar35 = iVar5;\n    if (uVar6 == 0) {\n      p_Var41 = *(mpz_ptr *)(puVar50 + -0x50);\n      p_Var33 = *(mpz_ptr *)(puVar50 + -0x4c);\n      *(int *)(puVar50 + -0x40) = iVar45;\n      *(int **)(puVar50 + -0x4c) =\n           &p_Var39->_mp_alloc + (int)((int)&p_Var34->_mp_alloc + *(int *)(puVar50 + -0x5c));\n      goto LAB_00022340;\n    }\n    iVar5 = iVar42;\n  } while (p_Var34 != (mpz_ptr)0x14);" do (compound_statement "{\n    iVar42 = iVar5 + uVar6;\n    uVar20 = (**(code **)(*(int *)(puVar50 + -0x34) + (uVar6 - 1) * 4))(iVar5);\n    if ((uVar20 & 0xff) == 0) {\n      uVar40 = uVar20 >> 8;\n      iVar5 = 6;\n      if ((uVar40 & 0xff) == 0) {\n        uVar40 = uVar20 >> 0x10;\n        iVar5 = 0xe;\n        if ((uVar40 & 0xff) == 0) {\n          uVar40 = uVar20 >> 0x18;\n          iVar5 = 0x1e;\n          if (uVar40 != 0) {\n            iVar5 = 0x16;\n          }\n        }\n      }\n      uVar40 = (uint)*(byte *)(*(int *)(puVar50 + -0x3c) + (-uVar40 & uVar40)) + iVar5;\n    }\n    else {\n      uVar40 = *(byte *)(*(int *)(puVar50 + -0x3c) + (-uVar20 & uVar20)) - 2;\n    }\n    iVar45 = iVar45 + *(byte *)(*(int *)(puVar50 + -0x38) + (uVar6 - 1)) + uVar40;\n    iVar5 = (**(code **)(*(int *)(puVar50 + -0x78) + -0x7f9c))\n                      (p_Var39,p_Var39,p_Var34,uVar20 >> (uVar40 & 0x1f));\n    puVar47 = *(undefined **)(puVar50 + -0x78);\n    if ((uint)(iVar28 - iVar42) <= uVar6) {\n      uVar6 = iVar28 - iVar42;\n    }\n    piVar35 = &p_Var39->_mp_alloc + (int)p_Var34;\n    p_Var34 = (mpz_ptr)((int)&p_Var34->_mp_alloc + (uint)(iVar5 != 0));\n    *piVar35 = iVar5;\n    if (uVar6 == 0) {\n      p_Var41 = *(mpz_ptr *)(puVar50 + -0x50);\n      p_Var33 = *(mpz_ptr *)(puVar50 + -0x4c);\n      *(int *)(puVar50 + -0x40) = iVar45;\n      *(int **)(puVar50 + -0x4c) =\n           &p_Var39->_mp_alloc + (int)((int)&p_Var34->_mp_alloc + *(int *)(puVar50 + -0x5c));\n      goto LAB_00022340;\n    }\n    iVar5 = iVar42;\n  }" { (expression_statement "iVar42 = iVar5 + uVar6;" (assignment_expression "iVar42 = iVar5 + uVar6" identifier = (binary_expression "iVar5 + uVar6" identifier + identifier)) ;) (expression_statement "uVar20 = (**(code **)(*(int *)(puVar50 + -0x34) + (uVar6 - 1) * 4))(iVar5);" (assignment_expression "uVar20 = (**(code **)(*(int *)(puVar50 + -0x34) + (uVar6 - 1) * 4))(iVar5)" identifier = (call_expression "(**(code **)(*(int *)(puVar50 + -0x34) + (uVar6 - 1) * 4))(iVar5)" (parenthesized_expression "(**(code **)(*(int *)(puVar50 + -0x34) + (uVar6 - 1) * 4))" ( (pointer_expression "**(code **)(*(int *)(puVar50 + -0x34) + (uVar6 - 1) * 4)" * (pointer_expression "*(code **)(*(int *)(puVar50 + -0x34) + (uVar6 - 1) * 4)" * (cast_expression "(code **)(*(int *)(puVar50 + -0x34) + (uVar6 - 1) * 4)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)(puVar50 + -0x34) + (uVar6 - 1) * 4)" ( (binary_expression "*(int *)(puVar50 + -0x34) + (uVar6 - 1) * 4" (pointer_expression "*(int *)(puVar50 + -0x34)" * (cast_expression "(int *)(puVar50 + -0x34)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar50 + -0x34)" ( (binary_expression "puVar50 + -0x34" identifier + number_literal) )))) + (binary_expression "(uVar6 - 1) * 4" (parenthesized_expression "(uVar6 - 1)" ( (binary_expression "uVar6 - 1" identifier - number_literal) )) * number_literal)) ))))) )) (argument_list "(iVar5)" ( identifier )))) ;) (if_statement "if ((uVar20 & 0xff) == 0) {\n      uVar40 = uVar20 >> 8;\n      iVar5 = 6;\n      if ((uVar40 & 0xff) == 0) {\n        uVar40 = uVar20 >> 0x10;\n        iVar5 = 0xe;\n        if ((uVar40 & 0xff) == 0) {\n          uVar40 = uVar20 >> 0x18;\n          iVar5 = 0x1e;\n          if (uVar40 != 0) {\n            iVar5 = 0x16;\n          }\n        }\n      }\n      uVar40 = (uint)*(byte *)(*(int *)(puVar50 + -0x3c) + (-uVar40 & uVar40)) + iVar5;\n    }\n    else {\n      uVar40 = *(byte *)(*(int *)(puVar50 + -0x3c) + (-uVar20 & uVar20)) - 2;\n    }" if (parenthesized_expression "((uVar20 & 0xff) == 0)" ( (binary_expression "(uVar20 & 0xff) == 0" (parenthesized_expression "(uVar20 & 0xff)" ( (binary_expression "uVar20 & 0xff" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n      uVar40 = uVar20 >> 8;\n      iVar5 = 6;\n      if ((uVar40 & 0xff) == 0) {\n        uVar40 = uVar20 >> 0x10;\n        iVar5 = 0xe;\n        if ((uVar40 & 0xff) == 0) {\n          uVar40 = uVar20 >> 0x18;\n          iVar5 = 0x1e;\n          if (uVar40 != 0) {\n            iVar5 = 0x16;\n          }\n        }\n      }\n      uVar40 = (uint)*(byte *)(*(int *)(puVar50 + -0x3c) + (-uVar40 & uVar40)) + iVar5;\n    }" { (expression_statement "uVar40 = uVar20 >> 8;" (assignment_expression "uVar40 = uVar20 >> 8" identifier = (binary_expression "uVar20 >> 8" identifier >> number_literal)) ;) (expression_statement "iVar5 = 6;" (assignment_expression "iVar5 = 6" identifier = number_literal) ;) (if_statement "if ((uVar40 & 0xff) == 0) {\n        uVar40 = uVar20 >> 0x10;\n        iVar5 = 0xe;\n        if ((uVar40 & 0xff) == 0) {\n          uVar40 = uVar20 >> 0x18;\n          iVar5 = 0x1e;\n          if (uVar40 != 0) {\n            iVar5 = 0x16;\n          }\n        }\n      }" if (parenthesized_expression "((uVar40 & 0xff) == 0)" ( (binary_expression "(uVar40 & 0xff) == 0" (parenthesized_expression "(uVar40 & 0xff)" ( (binary_expression "uVar40 & 0xff" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n        uVar40 = uVar20 >> 0x10;\n        iVar5 = 0xe;\n        if ((uVar40 & 0xff) == 0) {\n          uVar40 = uVar20 >> 0x18;\n          iVar5 = 0x1e;\n          if (uVar40 != 0) {\n            iVar5 = 0x16;\n          }\n        }\n      }" { (expression_statement "uVar40 = uVar20 >> 0x10;" (assignment_expression "uVar40 = uVar20 >> 0x10" identifier = (binary_expression "uVar20 >> 0x10" identifier >> number_literal)) ;) (expression_statement "iVar5 = 0xe;" (assignment_expression "iVar5 = 0xe" identifier = number_literal) ;) (if_statement "if ((uVar40 & 0xff) == 0) {\n          uVar40 = uVar20 >> 0x18;\n          iVar5 = 0x1e;\n          if (uVar40 != 0) {\n            iVar5 = 0x16;\n          }\n        }" if (parenthesized_expression "((uVar40 & 0xff) == 0)" ( (binary_expression "(uVar40 & 0xff) == 0" (parenthesized_expression "(uVar40 & 0xff)" ( (binary_expression "uVar40 & 0xff" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n          uVar40 = uVar20 >> 0x18;\n          iVar5 = 0x1e;\n          if (uVar40 != 0) {\n            iVar5 = 0x16;\n          }\n        }" { (expression_statement "uVar40 = uVar20 >> 0x18;" (assignment_expression "uVar40 = uVar20 >> 0x18" identifier = (binary_expression "uVar20 >> 0x18" identifier >> number_literal)) ;) (expression_statement "iVar5 = 0x1e;" (assignment_expression "iVar5 = 0x1e" identifier = number_literal) ;) (if_statement "if (uVar40 != 0) {\n            iVar5 = 0x16;\n          }" if (parenthesized_expression "(uVar40 != 0)" ( (binary_expression "uVar40 != 0" identifier != number_literal) )) (compound_statement "{\n            iVar5 = 0x16;\n          }" { (expression_statement "iVar5 = 0x16;" (assignment_expression "iVar5 = 0x16" identifier = number_literal) ;) })) })) })) (expression_statement "uVar40 = (uint)*(byte *)(*(int *)(puVar50 + -0x3c) + (-uVar40 & uVar40)) + iVar5;" (assignment_expression "uVar40 = (uint)*(byte *)(*(int *)(puVar50 + -0x3c) + (-uVar40 & uVar40)) + iVar5" identifier = (binary_expression "(uint)*(byte *)(*(int *)(puVar50 + -0x3c) + (-uVar40 & uVar40)) + iVar5" (binary_expression "(uint)*(byte *)(*(int *)(puVar50 + -0x3c) + (-uVar40 & uVar40))" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)(*(int *)(puVar50 + -0x3c) + (-uVar40 & uVar40))" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(puVar50 + -0x3c) + (-uVar40 & uVar40))" ( (binary_expression "*(int *)(puVar50 + -0x3c) + (-uVar40 & uVar40)" (pointer_expression "*(int *)(puVar50 + -0x3c)" * (cast_expression "(int *)(puVar50 + -0x3c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar50 + -0x3c)" ( (binary_expression "puVar50 + -0x3c" identifier + number_literal) )))) + (parenthesized_expression "(-uVar40 & uVar40)" ( (binary_expression "-uVar40 & uVar40" (unary_expression "-uVar40" - identifier) & identifier) ))) )))) + identifier)) ;) }) (else_clause "else {\n      uVar40 = *(byte *)(*(int *)(puVar50 + -0x3c) + (-uVar20 & uVar20)) - 2;\n    }" else (compound_statement "{\n      uVar40 = *(byte *)(*(int *)(puVar50 + -0x3c) + (-uVar20 & uVar20)) - 2;\n    }" { (expression_statement "uVar40 = *(byte *)(*(int *)(puVar50 + -0x3c) + (-uVar20 & uVar20)) - 2;" (assignment_expression "uVar40 = *(byte *)(*(int *)(puVar50 + -0x3c) + (-uVar20 & uVar20)) - 2" identifier = (binary_expression "*(byte *)(*(int *)(puVar50 + -0x3c) + (-uVar20 & uVar20)) - 2" (pointer_expression "*(byte *)(*(int *)(puVar50 + -0x3c) + (-uVar20 & uVar20))" * (cast_expression "(byte *)(*(int *)(puVar50 + -0x3c) + (-uVar20 & uVar20))" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(puVar50 + -0x3c) + (-uVar20 & uVar20))" ( (binary_expression "*(int *)(puVar50 + -0x3c) + (-uVar20 & uVar20)" (pointer_expression "*(int *)(puVar50 + -0x3c)" * (cast_expression "(int *)(puVar50 + -0x3c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar50 + -0x3c)" ( (binary_expression "puVar50 + -0x3c" identifier + number_literal) )))) + (parenthesized_expression "(-uVar20 & uVar20)" ( (binary_expression "-uVar20 & uVar20" (unary_expression "-uVar20" - identifier) & identifier) ))) )))) - number_literal)) ;) }))) (expression_statement "iVar45 = iVar45 + *(byte *)(*(int *)(puVar50 + -0x38) + (uVar6 - 1)) + uVar40;" (assignment_expression "iVar45 = iVar45 + *(byte *)(*(int *)(puVar50 + -0x38) + (uVar6 - 1)) + uVar40" identifier = (binary_expression "iVar45 + *(byte *)(*(int *)(puVar50 + -0x38) + (uVar6 - 1)) + uVar40" (binary_expression "iVar45 + *(byte *)(*(int *)(puVar50 + -0x38) + (uVar6 - 1))" identifier + (pointer_expression "*(byte *)(*(int *)(puVar50 + -0x38) + (uVar6 - 1))" * (cast_expression "(byte *)(*(int *)(puVar50 + -0x38) + (uVar6 - 1))" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(puVar50 + -0x38) + (uVar6 - 1))" ( (binary_expression "*(int *)(puVar50 + -0x38) + (uVar6 - 1)" (pointer_expression "*(int *)(puVar50 + -0x38)" * (cast_expression "(int *)(puVar50 + -0x38)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar50 + -0x38)" ( (binary_expression "puVar50 + -0x38" identifier + number_literal) )))) + (parenthesized_expression "(uVar6 - 1)" ( (binary_expression "uVar6 - 1" identifier - number_literal) ))) ))))) + identifier)) ;) (expression_statement "iVar5 = (**(code **)(*(int *)(puVar50 + -0x78) + -0x7f9c))\n                      (p_Var39,p_Var39,p_Var34,uVar20 >> (uVar40 & 0x1f));" (assignment_expression "iVar5 = (**(code **)(*(int *)(puVar50 + -0x78) + -0x7f9c))\n                      (p_Var39,p_Var39,p_Var34,uVar20 >> (uVar40 & 0x1f))" identifier = (call_expression "(**(code **)(*(int *)(puVar50 + -0x78) + -0x7f9c))\n                      (p_Var39,p_Var39,p_Var34,uVar20 >> (uVar40 & 0x1f))" (parenthesized_expression "(**(code **)(*(int *)(puVar50 + -0x78) + -0x7f9c))" ( (pointer_expression "**(code **)(*(int *)(puVar50 + -0x78) + -0x7f9c)" * (pointer_expression "*(code **)(*(int *)(puVar50 + -0x78) + -0x7f9c)" * (cast_expression "(code **)(*(int *)(puVar50 + -0x78) + -0x7f9c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)(puVar50 + -0x78) + -0x7f9c)" ( (binary_expression "*(int *)(puVar50 + -0x78) + -0x7f9c" (pointer_expression "*(int *)(puVar50 + -0x78)" * (cast_expression "(int *)(puVar50 + -0x78)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar50 + -0x78)" ( (binary_expression "puVar50 + -0x78" identifier + number_literal) )))) + number_literal) ))))) )) (argument_list "(p_Var39,p_Var39,p_Var34,uVar20 >> (uVar40 & 0x1f))" ( identifier , identifier , identifier , (binary_expression "uVar20 >> (uVar40 & 0x1f)" identifier >> (parenthesized_expression "(uVar40 & 0x1f)" ( (binary_expression "uVar40 & 0x1f" identifier & number_literal) ))) )))) ;) (expression_statement "puVar47 = *(undefined **)(puVar50 + -0x78);" (assignment_expression "puVar47 = *(undefined **)(puVar50 + -0x78)" identifier = (pointer_expression "*(undefined **)(puVar50 + -0x78)" * (cast_expression "(undefined **)(puVar50 + -0x78)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar50 + -0x78)" ( (binary_expression "puVar50 + -0x78" identifier + number_literal) ))))) ;) (if_statement "if ((uint)(iVar28 - iVar42) <= uVar6) {\n      uVar6 = iVar28 - iVar42;\n    }" if (parenthesized_expression "((uint)(iVar28 - iVar42) <= uVar6)" ( (binary_expression "(uint)(iVar28 - iVar42) <= uVar6" (call_expression "(uint)(iVar28 - iVar42)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(iVar28 - iVar42)" ( (binary_expression "iVar28 - iVar42" identifier - identifier) ))) <= identifier) )) (compound_statement "{\n      uVar6 = iVar28 - iVar42;\n    }" { (expression_statement "uVar6 = iVar28 - iVar42;" (assignment_expression "uVar6 = iVar28 - iVar42" identifier = (binary_expression "iVar28 - iVar42" identifier - identifier)) ;) })) (expression_statement "piVar35 = &p_Var39->_mp_alloc + (int)p_Var34;" (assignment_expression "piVar35 = &p_Var39->_mp_alloc + (int)p_Var34" identifier = (binary_expression "&p_Var39->_mp_alloc + (int)p_Var34" (pointer_expression "&p_Var39->_mp_alloc" & (field_expression "p_Var39->_mp_alloc" identifier -> field_identifier)) + (cast_expression "(int)p_Var34" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "p_Var34 = (mpz_ptr)((int)&p_Var34->_mp_alloc + (uint)(iVar5 != 0));" (assignment_expression "p_Var34 = (mpz_ptr)((int)&p_Var34->_mp_alloc + (uint)(iVar5 != 0))" identifier = (call_expression "(mpz_ptr)((int)&p_Var34->_mp_alloc + (uint)(iVar5 != 0))" (parenthesized_expression "(mpz_ptr)" ( identifier )) (argument_list "((int)&p_Var34->_mp_alloc + (uint)(iVar5 != 0))" ( (binary_expression "(int)&p_Var34->_mp_alloc + (uint)(iVar5 != 0)" (cast_expression "(int)&p_Var34->_mp_alloc" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&p_Var34->_mp_alloc" & (field_expression "p_Var34->_mp_alloc" identifier -> field_identifier))) + (call_expression "(uint)(iVar5 != 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(iVar5 != 0)" ( (binary_expression "iVar5 != 0" identifier != number_literal) )))) )))) ;) (expression_statement "*piVar35 = iVar5;" (assignment_expression "*piVar35 = iVar5" (pointer_expression "*piVar35" * identifier) = identifier) ;) (if_statement "if (uVar6 == 0) {\n      p_Var41 = *(mpz_ptr *)(puVar50 + -0x50);\n      p_Var33 = *(mpz_ptr *)(puVar50 + -0x4c);\n      *(int *)(puVar50 + -0x40) = iVar45;\n      *(int **)(puVar50 + -0x4c) =\n           &p_Var39->_mp_alloc + (int)((int)&p_Var34->_mp_alloc + *(int *)(puVar50 + -0x5c));\n      goto LAB_00022340;\n    }" if (parenthesized_expression "(uVar6 == 0)" ( (binary_expression "uVar6 == 0" identifier == number_literal) )) (compound_statement "{\n      p_Var41 = *(mpz_ptr *)(puVar50 + -0x50);\n      p_Var33 = *(mpz_ptr *)(puVar50 + -0x4c);\n      *(int *)(puVar50 + -0x40) = iVar45;\n      *(int **)(puVar50 + -0x4c) =\n           &p_Var39->_mp_alloc + (int)((int)&p_Var34->_mp_alloc + *(int *)(puVar50 + -0x5c));\n      goto LAB_00022340;\n    }" { (expression_statement "p_Var41 = *(mpz_ptr *)(puVar50 + -0x50);" (assignment_expression "p_Var41 = *(mpz_ptr *)(puVar50 + -0x50)" identifier = (pointer_expression "*(mpz_ptr *)(puVar50 + -0x50)" * (cast_expression "(mpz_ptr *)(puVar50 + -0x50)" ( (type_descriptor "mpz_ptr *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar50 + -0x50)" ( (binary_expression "puVar50 + -0x50" identifier + number_literal) ))))) ;) (expression_statement "p_Var33 = *(mpz_ptr *)(puVar50 + -0x4c);" (assignment_expression "p_Var33 = *(mpz_ptr *)(puVar50 + -0x4c)" identifier = (pointer_expression "*(mpz_ptr *)(puVar50 + -0x4c)" * (cast_expression "(mpz_ptr *)(puVar50 + -0x4c)" ( (type_descriptor "mpz_ptr *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar50 + -0x4c)" ( (binary_expression "puVar50 + -0x4c" identifier + number_literal) ))))) ;) (expression_statement "*(int *)(puVar50 + -0x40) = iVar45;" (assignment_expression "*(int *)(puVar50 + -0x40) = iVar45" (pointer_expression "*(int *)(puVar50 + -0x40)" * (cast_expression "(int *)(puVar50 + -0x40)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar50 + -0x40)" ( (binary_expression "puVar50 + -0x40" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int **)(puVar50 + -0x4c) =\n           &p_Var39->_mp_alloc + (int)((int)&p_Var34->_mp_alloc + *(int *)(puVar50 + -0x5c));" (assignment_expression "*(int **)(puVar50 + -0x4c) =\n           &p_Var39->_mp_alloc + (int)((int)&p_Var34->_mp_alloc + *(int *)(puVar50 + -0x5c))" (pointer_expression "*(int **)(puVar50 + -0x4c)" * (cast_expression "(int **)(puVar50 + -0x4c)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar50 + -0x4c)" ( (binary_expression "puVar50 + -0x4c" identifier + number_literal) )))) = (binary_expression "&p_Var39->_mp_alloc + (int)((int)&p_Var34->_mp_alloc + *(int *)(puVar50 + -0x5c))" (pointer_expression "&p_Var39->_mp_alloc" & (field_expression "p_Var39->_mp_alloc" identifier -> field_identifier)) + (cast_expression "(int)((int)&p_Var34->_mp_alloc + *(int *)(puVar50 + -0x5c))" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((int)&p_Var34->_mp_alloc + *(int *)(puVar50 + -0x5c))" ( (binary_expression "(int)&p_Var34->_mp_alloc + *(int *)(puVar50 + -0x5c)" (cast_expression "(int)&p_Var34->_mp_alloc" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&p_Var34->_mp_alloc" & (field_expression "p_Var34->_mp_alloc" identifier -> field_identifier))) + (pointer_expression "*(int *)(puVar50 + -0x5c)" * (cast_expression "(int *)(puVar50 + -0x5c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar50 + -0x5c)" ( (binary_expression "puVar50 + -0x5c" identifier + number_literal) ))))) ))))) ;) (goto_statement "goto LAB_00022340;" goto statement_identifier ;) })) (expression_statement "iVar5 = iVar42;" (assignment_expression "iVar5 = iVar42" identifier = identifier) ;) }) while (parenthesized_expression "(p_Var34 != (mpz_ptr)0x14)" ( (binary_expression "p_Var34 != (mpz_ptr)0x14" identifier != (cast_expression "(mpz_ptr)0x14" ( (type_descriptor "mpz_ptr" type_identifier) ) number_literal)) )) ;) (expression_statement "p_Var33 = *(mpz_ptr *)(puVar50 + -0x4c);" (assignment_expression "p_Var33 = *(mpz_ptr *)(puVar50 + -0x4c)" identifier = (pointer_expression "*(mpz_ptr *)(puVar50 + -0x4c)" * (cast_expression "(mpz_ptr *)(puVar50 + -0x4c)" ( (type_descriptor "mpz_ptr *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar50 + -0x4c)" ( (binary_expression "puVar50 + -0x4c" identifier + number_literal) ))))) ;) (expression_statement "p_Var41 = *(mpz_ptr *)(puVar50 + -0x50);" (assignment_expression "p_Var41 = *(mpz_ptr *)(puVar50 + -0x50)" identifier = (pointer_expression "*(mpz_ptr *)(puVar50 + -0x50)" * (cast_expression "(mpz_ptr *)(puVar50 + -0x50)" ( (type_descriptor "mpz_ptr *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar50 + -0x50)" ( (binary_expression "puVar50 + -0x50" identifier + number_literal) ))))) ;) (expression_statement "*(int *)(puVar50 + -0x40) = iVar45;" (assignment_expression "*(int *)(puVar50 + -0x40) = iVar45" (pointer_expression "*(int *)(puVar50 + -0x40)" * (cast_expression "(int *)(puVar50 + -0x40)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar50 + -0x40)" ( (binary_expression "puVar50 + -0x40" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int **)(puVar50 + -0x4c) = &p_Var39[6]._mp_size;" (assignment_expression "*(int **)(puVar50 + -0x4c) = &p_Var39[6]._mp_size" (pointer_expression "*(int **)(puVar50 + -0x4c)" * (cast_expression "(int **)(puVar50 + -0x4c)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar50 + -0x4c)" ( (binary_expression "puVar50 + -0x4c" identifier + number_literal) )))) = (pointer_expression "&p_Var39[6]._mp_size" & (field_expression "p_Var39[6]._mp_size" (subscript_expression "p_Var39[6]" identifier [ number_literal ]) . field_identifier))) ;) (labeled_statement "LAB_00022340:\n  do {\n    iVar45 = iVar42 - *(int *)(puVar50 + -0x44);\n    iVar28 = *(int *)(puVar50 + -0x5c);\n    iVar5 = iVar45;\n    if (iVar45 != 0) {\n      *(uint *)(puVar50 + -0x44) = uVar6;\n      *(mpz_ptr *)(puVar50 + -0x50) = p_Var34;\n      *(mpz_ptr *)(puVar50 + -0x54) = p_Var39;\n      *(int *)(puVar50 + -0x58) = iVar42;\n      iVar5 = *(int *)(puVar50 + -0x48);\n      iVar42 = *(int *)(puVar50 + -0x68);\n      iVar28 = iVar32;\n      do {\n        iVar36 = iVar45;\n        if (iVar42 <= iVar45) {\n          iVar36 = iVar42;\n        }\n        iVar32 = iVar28 + iVar36;\n        uVar20 = (**(code **)(*(int *)(puVar50 + -0x34) + (iVar36 + -1) * 4))(iVar28);\n        if ((uVar20 & 0xff) == 0) {\n          uVar40 = uVar20 >> 8;\n          iVar28 = 6;\n          if ((uVar40 & 0xff) == 0) {\n            uVar40 = uVar20 >> 0x10;\n            iVar28 = 0xe;\n            if ((uVar40 & 0xff) == 0) {\n              uVar40 = uVar20 >> 0x18;\n              iVar28 = 0x16;\n              if (uVar40 == 0) {\n                iVar28 = 0x1e;\n              }\n            }\n          }\n          uVar40 = (uint)*(byte *)(*(int *)(puVar50 + -0x3c) + (-uVar40 & uVar40)) + iVar28;\n        }\n        else {\n          uVar40 = *(byte *)(*(int *)(puVar50 + -0x3c) + (-uVar20 & uVar20)) - 2;\n        }\n        iVar45 = iVar45 - iVar36;\n        iVar5 = iVar5 + *(byte *)(*(int *)(puVar50 + -0x38) + iVar36 + -1) + uVar40;\n        iVar28 = (**(code **)(*(int *)(puVar50 + -0x78) + -0x7f9c))\n                           (p_Var41,p_Var41,p_Var33,uVar20 >> (uVar40 & 0x1f));\n        puVar47 = *(undefined **)(puVar50 + -0x78);\n        piVar35 = &p_Var41->_mp_alloc + (int)p_Var33;\n        p_Var33 = (mpz_ptr)((int)&p_Var33->_mp_alloc + (uint)(iVar28 != 0));\n        *piVar35 = iVar28;\n        iVar28 = iVar32;\n      } while (iVar45 != 0);\n      uVar6 = *(uint *)(puVar50 + -0x44);\n      p_Var34 = *(mpz_ptr *)(puVar50 + -0x50);\n      p_Var39 = *(mpz_ptr *)(puVar50 + -0x54);\n      iVar42 = *(int *)(puVar50 + -0x58);\n      *(int *)(puVar50 + -0x48) = iVar5;\n      iVar28 = *(int *)(puVar50 + -0x5c);\n    }\n    iVar45 = p_Var39->_mp_alloc;\n    pcVar55 = *(code **)(puVar47 + -0x7bc0);\n    uVar20 = (uint)*(byte *)(*(int *)(puVar50 + -100) + ((uint)(iVar45 << 0x18) >> 0x19));\n    p_Var33 = (mpz_ptr)((int)p_Var33 +\n                       (((uint)(&p_Var41->_mp_alloc)[(int)((int)&p_Var33->_mp_alloc + iVar28)] <\n                         **(uint **)(puVar50 + -0x4c) ^ 1) - (int)p_Var34));\n    iVar28 = uVar20 * 2 - uVar20 * uVar20 * iVar45;\n    if ((int)p_Var33 < (int)p_Var34) {\n      p_Var34 = p_Var33;\n    }\n    *(mpz_ptr *)(puVar51 + -0x48) = p_Var34;\n    *(int *)(puVar51 + -0x44) = iVar28 * iVar28 * iVar45 + iVar28 * -2;\n    p_Var22 = p_Var41;\n    p_Var25 = p_Var33;\n    (*pcVar55)(p_Var41,p_Var41,p_Var33,p_Var39);\n    iVar28 = *(int *)(puVar50 + -0x78);\n    if (uVar6 == 0) {\n      if (*(int *)(puVar50 + -0x48) == *(int *)(puVar50 + -0x40)) {\n        p_Var33 = (mpz_ptr)((int)p_Var33 -\n                           (uint)(*(int *)((int)p_Var41 + (int)p_Var33 * 4 + -4) == 0));\n        pcVar55 = *(code **)(iVar28 + -0x7a80);\n        if ((int)p_Var33 <= **(int **)(puVar50 + -0x6c)) goto LAB_00022600;\nLAB_00022734:\n        p_Var22 = p_Var33;\n        puVar21 = (undefined4 *)(*pcVar55)(*(undefined4 *)(puVar50 + -0x6c));\n        iVar28 = *(int *)(puVar50 + -0x78);\n      }\n      else {\n        p_Var22 = p_Var41;\n        p_Var25 = p_Var33;\n        iVar45 = (**(code **)(iVar28 + -0x7ad4))(p_Var41);\n        iVar28 = *(int *)(puVar50 + -0x78);\n        puVar13 = (undefined1 *)((int)&p_Var33->_mp_alloc + (uint)(iVar45 != 0));\n        *(int *)((int)p_Var41 + (int)p_Var33 * 4) = iVar45;\n        p_Var33 = (mpz_ptr)(puVar13 + -(uint)(*(int *)((int)p_Var41 + (int)puVar13 * 4 + -4) == 0));\n        pcVar55 = *(code **)(iVar28 + -0x7a80);\n        if (**(int **)(puVar50 + -0x6c) < (int)p_Var33) goto LAB_00022734;\nLAB_00022600:\n        puVar21 = *(undefined4 **)(*(int *)(puVar50 + -0x6c) + 8);\n      }\n      *(mpz_ptr *)(*(int *)(puVar50 + -0x6c) + 4) = p_Var33;\n      if (p_Var33 != (mpz_ptr)0x0) {\n        puVar13 = (undefined1 *)((int)&p_Var33[-1]._mp_d + 3);\n        p_Var22 = (mpz_ptr)p_Var41->_mp_alloc;\n        if (puVar13 != (undefined1 *)0x0) {\n          puVar18 = puVar21;\n          ppmVar43 = (mp_limb_t **)&p_Var41->_mp_size;\n          do {\n            *puVar18 = p_Var22;\n            p_Var41 = (mpz_ptr)(ppmVar43 + 1);\n            puVar13 = puVar13 + -1;\n            p_Var22 = (mpz_ptr)*ppmVar43;\n            puVar18 = puVar18 + 1;\n            ppmVar43 = (mp_limb_t **)p_Var41;\n          } while (puVar13 != (undefined1 *)0x0);\n          p_Var33 = (mpz_ptr)((int)p_Var33 * 4);\n          puVar21 = (undefined4 *)((int)puVar21 + (int)&p_Var33[-1]._mp_d);\n        }\n        *puVar21 = p_Var22;\n      }\n      r_00 = *(mpz_ptr *)(puVar50 + -0x30);\n      if (r_00 != (mpz_ptr)0x0) {\n        (**(code **)(iVar28 + -0x7a28))();\n        iVar28 = *(int *)(puVar50 + -0x78);\n      }\n      if (*(int *)(puVar50 + -0x2c) == **(int **)(puVar50 + -0x70)) {\n        return;\n      }\n      pcVar55 = *(code **)(iVar28 + -0x7b70);\n      pcVar56 = __gmpz_bin_uiui;\n      (*pcVar55)();\n      pcVar48 = pcVar55 + 0x8289c;\n      *(mpz_ptr *)(puVar51 + -0x78) = p_Var34;\n      piVar35 = *(int **)(pcVar55 + 0x7ad9c);\n      *(code **)(puVar51 + -0xf0) = pcVar48;\n      *(int *)(puVar51 + -0x74) = iVar42;\n      *(code **)(puVar51 + -0x5c) = pcVar56;\n      *(undefined1 **)(puVar51 + -0x60) = puVar50 + -0x90;\n      *(int *)(puVar51 + -100) = iVar5;\n      *(int *)(puVar51 + -0x68) = iVar32;\n      *(mpz_ptr *)(puVar51 + -0x6c) = p_Var41;\n      *(mpz_ptr *)(puVar51 + -0x70) = p_Var39;\n      *(mpz_ptr *)(puVar51 + -0x7c) = p_Var33;\n      *(undefined4 *)(puVar51 + -0x80) = 0;\n      *(int *)(puVar51 + -0x84) = *piVar35;\n      p_Var34 = r_00;\n      p_Var23 = p_Var22;\n      if (p_Var22 < p_Var25) {\n        r_00->_mp_size = 0;\n        k_00 = (mpz_ptr)0x0;\n      }\n      else {\n        k_00 = p_Var25;\n        if ((mpz_ptr)((int)p_Var22 - (int)p_Var25) <= p_Var25) {\n          k_00 = (mpz_ptr)((int)p_Var22 - (int)p_Var25);\n        }\n        p_Var25 = k_00;\n        p_Var39 = p_Var22;\n        if (k_00 < (mpz_ptr)0x2) {\n          if (k_00 == (mpz_ptr)0x0) {\n            p_Var39 = (mpz_ptr)&DAT_00000001;\n          }\n          *r_00->_mp_d = (mp_limb_t)p_Var39;\n          r_00->_mp_size = 1;\n          puVar53 = puVar50 + -0x90;\n        }\n        else if (p_Var22 < (mpz_ptr)0x23) {\n          p_Var3 = k_00 + -1;\n          iVar5 = *(int *)(pcVar55 + 0x7aa7c);\n          p_Var23 = (mpz_ptr)r_00->_mp_d;\n          uVar20 = (int)p_Var22 - (int)k_00;\n          p_Var39 = (mpz_ptr)(iVar5 + ((uint)p_Var22 >> 1));\n          k_00 = (mpz_ptr)(iVar5 + ((uint)k_00 >> 1));\n          p_Var25 = (mpz_ptr)(uint)*(byte *)((int)&k_00[-1]._mp_d + 3);\n          p_Var34 = (mpz_ptr)(uint)*(byte *)(iVar5 + (uVar20 >> 1) + -1);\n          p_Var23->_mp_alloc =\n               *(int *)((int)((int)&p_Var3->_mp_d + 2) * 4 + *(int *)(pcVar55 + 0x7a8c8) + 0x35b4) *\n               *(int *)(*(int *)(pcVar55 + 0x7ad64) + (int)p_Var22 * 4) *\n               *(int *)((uVar20 - 2) * 4 + *(int *)(pcVar55 + 0x7a8c8) + 0x35b4) <<\n               (((uint)*(byte *)((int)&p_Var39[-1]._mp_d + 3) - (int)p_Var25) - (int)p_Var34 & 0x1f)\n          ;\n          r_00->_mp_size = 1;\n          puVar53 = puVar50 + -0x90;\n        }\n        else if (k_00 < (mpz_ptr)&DAT_00000011) {\n          mpz_smallk_bin_uiui(r_00,(ulong)p_Var22,(ulong)k_00);\n          pcVar48 = *(code **)(puVar51 + -0xf0);\n          puVar53 = puVar50 + -0x90;\n        }\n        else if (k_00 < (mpz_ptr)&DAT_00000021) {\n          uVar20 = (uint)k_00 >> 1;\n          uVar40 = (int)p_Var22 - uVar20;\n          mpz_smallk_bin_uiui(r_00,(ulong)p_Var22,uVar20);\n          iVar5 = *(int *)(puVar51 + -0xf0);\n          uVar6 = (int)k_00 - uVar20;\n          if (uVar40 < 0x23) {\n            puVar54 = (undefined1 *)r_00->_mp_size;\n            if ((int)puVar54 < r_00->_mp_alloc) {\n              p_Var33 = (mpz_ptr)r_00->_mp_d;\n            }\n            else {\n              p_Var33 = (mpz_ptr)(**(code **)(iVar5 + -0x7a80))(r_00,puVar54 + 1);\n              iVar5 = *(int *)(puVar51 + -0xf0);\n            }\n            iVar32 = *(int *)(iVar5 + -0x7e20);\n            iVar28 = *(int *)(iVar5 + -0x7fd4) + 0x35b4;\n            iVar28 = (**(code **)(iVar5 + -0x7f9c))\n                               (p_Var33,p_Var33,puVar54,\n                                *(int *)((((int)p_Var22 - (int)k_00) - 2U) * 4 + iVar28) *\n                                *(int *)(*(int *)(iVar5 + -0x7b38) + uVar40 * 4) *\n                                *(int *)((uVar6 - 2) * 4 + iVar28) <<\n                                (((uint)*(byte *)(iVar32 + (uVar40 >> 1) + -1) -\n                                 (uint)*(byte *)(iVar32 + (uVar6 >> 1) + -1)) -\n                                 (uint)*(byte *)(iVar32 + ((uint)((int)p_Var22 - (int)k_00) >> 1) +\n                                                -1) & 0x1f));\n            iVar5 = *(int *)(puVar51 + -0xf0);\n            k_00 = (mpz_ptr)(puVar54 + (iVar28 != 0));\n            (&p_Var33->_mp_alloc)[(int)puVar54] = iVar28;\n          }\n          else {\n            *(undefined4 *)(puVar51 + -0xe4) = 0x15;\n            *(undefined1 **)(puVar51 + -0xdc) = puVar51 + -0xd8;\n            mpz_smallk_bin_uiui((mpz_ptr)(puVar51 + -0xe4),uVar40,uVar6);\n            (**(code **)(*(int *)(puVar51 + -0xf0) + -0x7ba8))(r_00,r_00,(mpz_ptr)(puVar51 + -0xe4))\n            ;\n            iVar5 = *(int *)(puVar51 + -0xf0);\n            p_Var33 = (mpz_ptr)r_00->_mp_d;\n            k_00 = (mpz_ptr)r_00->_mp_size;\n          }\n          pcVar55 = *(code **)(iVar5 + -0x7bb4);\n          p_Var41 = (mpz_ptr)((uint)*(byte *)((uVar6 - 8) + *(int *)(iVar5 + -0x7fd4) + 0x3550) -\n                             (uint)(uVar20 != uVar6));\n          *(undefined4 *)(puVar51 + -0xf8) =\n               *(undefined4 *)((uVar6 - 8) * 4 + *(int *)(iVar5 + -0x7fd4) + 0x355c);\n          *(mpz_ptr *)(puVar51 + -0xf4) = p_Var41;\n          p_Var34 = p_Var33;\n          p_Var23 = p_Var33;\n          p_Var25 = k_00;\n          (*pcVar55)();\n          pcVar48 = *(code **)(puVar51 + -0xf0);\n          if (*(int *)((int)p_Var33 + (int)k_00 * 4 + -4) == 0) {\n            piVar37 = &p_Var33->_mp_alloc + (int)k_00;\n            do {\n              piVar19 = piVar37 + -2;\n              k_00 = (mpz_ptr)((int)&k_00[-1]._mp_d + 3);\n              piVar37 = piVar37 + -1;\n            } while (*piVar19 == 0);\n          }\n          r_00->_mp_size = (int)k_00;\n          puVar53 = puVar54;\n        }\n        else if ((k_00 < (mpz_ptr)0x3e8) || (k_00 <= (mpz_ptr)((uint)p_Var22 >> 4))) {\n          mpz_bdiv_bin_uiui(r_00,(ulong)p_Var22,(ulong)k_00);\n          pcVar48 = *(code **)(puVar51 + -0xf0);\n          puVar53 = puVar50 + -0x90;\n        }\n        else {\n          mpz_goetgheluck_bin_uiui(r_00,(ulong)p_Var22,(ulong)k_00);\n          pcVar48 = *(code **)(puVar51 + -0xf0);\n          puVar53 = puVar50 + -0x90;\n        }\n      }\n      if (*(int *)(puVar51 + -0x84) == *piVar35) {\n        return;\n      }\n      pcVar55 = *(code **)(pcVar48 + -0x7b70);\n      uVar9 = 0x22b64;\n      (*pcVar55)();\n      pcVar48 = pcVar55 + 0x824d0;\n      puVar52 = puVar51 + -0x160;\n      *(mpz_ptr *)(puVar51 + -0x118) = r_00;\n      *(mpz_ptr *)(puVar51 + -0x124) = k_00;\n      piVar37 = *(int **)(pcVar55 + 0x7a9d0);\n      uVar20 = p_Var25->_mp_size;\n      *(undefined1 **)(puVar51 + -0x110) = puVar53;\n      *(mpz_ptr *)(puVar51 + -0x114) = p_Var39;\n      *(int **)(puVar51 + -0x11c) = piVar35;\n      *(mpz_ptr *)(puVar51 + -0x120) = p_Var33;\n      *(undefined4 *)(puVar51 + -0x10c) = uVar9;\n      *(code **)(puVar51 + -0x150) = pcVar48;\n      *(undefined4 *)(puVar51 + -0x13c) = 0;\n      p_Var39 = (mpz_ptr)p_Var23->_mp_size;\n      *(int *)(puVar51 + -300) = *piVar37;\n      if ((int)uVar20 < 0) {\n        uVar40 = uVar20 * -4;\n        *(uint *)(puVar51 + -0x138) = -uVar20;\n        if (0x7f00 < uVar40) {\n          pcVar55 = *(code **)(pcVar55 + 0x7a780);\n          goto LAB_00022c88;\n        }\nLAB_00022be4:\n        iVar5 = -(uVar40 + 7 & 0xfffffff8);\n        puVar52 = puVar51 + iVar5 + -0x160;\n        puVar13 = puVar51 + iVar5 + -0x150;\n      }\n      else {\n        uVar40 = uVar20 * 4;\n        *(uint *)(puVar51 + -0x138) = uVar20;\n        pcVar55 = *(code **)(pcVar55 + 0x7a780);\n        if (uVar40 < 0x7f01) goto LAB_00022be4;\nLAB_00022c88:\n        *(mpz_ptr *)(puVar51 + -0x144) = p_Var25;\n        puVar13 = (undefined1 *)(*pcVar55)(puVar51 + -0x13c,uVar40);\n        pcVar48 = *(code **)(puVar51 + -0x150);\n        p_Var25 = *(mpz_ptr *)(puVar51 + -0x144);\n      }\n      pcVar55 = *(code **)(pcVar48 + -0x7a68);\n      p_Var33 = (mpz_ptr)(puVar51 + -0x138);\n      *(undefined1 **)(puVar51 + -0x130) = puVar13;\n      p_Var22 = p_Var23;\n      (*pcVar55)(p_Var34,p_Var33,p_Var23,p_Var25);\n      iVar5 = *(int *)(puVar51 + -0x150);\n      if (((int)((uint)p_Var39 ^ uVar20) < 0) || (*(int *)(puVar51 + -0x134) == 0)) {\n        piVar35 = *(int **)(puVar51 + -0x13c);\n        pcVar55 = *(code **)(iVar5 + -0x7a28);\n        if (piVar35 != (int *)0x0) goto LAB_00022cc0;\n      }\n      else {\n        p_Var22 = (mpz_ptr)&DAT_00000001;\n        p_Var33 = p_Var34;\n        (**(code **)(iVar5 + -0x7c9c))(p_Var34);\n        piVar35 = *(int **)(puVar51 + -0x13c);\n        iVar5 = *(int *)(puVar51 + -0x150);\n        if (piVar35 != (int *)0x0) {\n          pcVar55 = *(code **)(iVar5 + -0x7a28);\nLAB_00022cc0:\n          (*pcVar55)();\n          iVar5 = *(int *)(puVar51 + -0x150);\n        }\n      }\n      if (*(int *)(puVar51 + -300) == *piVar37) {\n        return;\n      }\n      pcVar55 = *(code **)(iVar5 + -0x7b70);\n      uVar9 = 0x22cdc;\n      (*pcVar55)();\n      pcVar48 = pcVar55 + 0x82360;\n      *(code **)(puVar52 + -0x28) = pcVar48;\n      *(undefined4 *)(puVar52 + -4) = uVar9;\n      *(mpz_ptr *)(puVar52 + -8) = p_Var41;\n      *(mpz_ptr *)(puVar52 + -0xc) = p_Var23;\n      *(int **)(puVar52 + -0x10) = piVar37;\n      *(mpz_ptr *)(puVar52 + -0x14) = p_Var34;\n      *(mpz_ptr *)(puVar52 + -0x18) = p_Var39;\n      *(uint *)(puVar52 + -0x1c) = (uint)p_Var39 ^ uVar20;\n      if (p_Var22 == (mpz_ptr)0x0) {\n        pcVar55 = *(code **)(pcVar55 + 0x7a900);\n        (*pcVar55)();\nLAB_00022e2c:\n        piVar35 = (int *)(*pcVar55)(piVar37,p_Var34);\n        pcVar48 = *(code **)(puVar52 + -0x28);\n      }\n      else {\n        p_Var39 = (mpz_ptr)p_Var33->_mp_size;\n        if (p_Var39 == (mpz_ptr)0x0) {\n          piVar35[1] = 0;\n          return;\n        }\n        p_Var34 = p_Var39;\n        if ((int)p_Var39 < 0) {\n          p_Var34 = (mpz_ptr)-(int)p_Var39;\n        }\n        pcVar55 = *(code **)(pcVar55 + 0x7a8e0);\n        piVar37 = piVar35;\n        p_Var23 = p_Var22;\n        p_Var41 = p_Var33;\n        if (*piVar35 < (int)p_Var34) goto LAB_00022e2c;\n        piVar35 = (int *)piVar35[2];\n      }\n      pcVar55 = *(code **)(pcVar48 + -0x7d98);\n      pmVar26 = p_Var41->_mp_d;\n      *(mpz_ptr *)(puVar52 + -0x30) = p_Var23;\n      iVar5 = (*pcVar55)(piVar35,0,pmVar26,p_Var34);\n      piVar19 = piVar35 + (int)((int)&p_Var34[-1]._mp_d + 3);\n      if (iVar5 == 0) {\n        uVar20 = (uint)(*piVar19 == 0);\n        if (-1 < (int)p_Var39) {\n          iVar5 = (int)p_Var34 - uVar20;\n          goto LAB_00022d9c;\n        }\n      }\n      else {\n        if (-1 < (int)p_Var39) {\n          do {\n            iVar5 = *piVar35;\n            *piVar35 = iVar5 + 1;\n            piVar35 = piVar35 + 1;\n          } while (iVar5 + 1 == 0);\n          iVar5 = (int)p_Var34 - (uint)(*piVar19 == 0);\n          goto LAB_00022d9c;\n        }\n        uVar20 = (uint)(*piVar19 == 0);\n      }\n      iVar5 = uVar20 - (int)p_Var34;\nLAB_00022d9c:\n      piVar37[1] = iVar5;\n      return;\n    }\n    *(int *)(puVar50 + -0x44) = iVar42;\n    iVar5 = iVar42 + uVar6;\n    uVar20 = (**(code **)(*(int *)(puVar50 + -0x34) + (uVar6 - 1) * 4))(iVar42);\n    puVar47 = *(undefined **)(puVar50 + -0x78);\n    if ((uVar20 & 0xff) == 0) {\n      uVar40 = uVar20 >> 8;\n      iVar28 = 6;\n      if ((uVar40 & 0xff) == 0) {\n        uVar40 = uVar20 >> 0x10;\n        iVar28 = 0xe;\n        if ((uVar40 & 0xff) == 0) {\n          uVar40 = uVar20 >> 0x18;\n          iVar28 = 0x1e;\n          if (uVar40 != 0) {\n            iVar28 = 0x16;\n          }\n        }\n      }\n      uVar40 = (uint)*(byte *)(*(int *)(puVar50 + -0x3c) + (-uVar40 & uVar40)) + iVar28;\n    }\n    else {\n      uVar40 = *(byte *)(*(int *)(puVar50 + -0x3c) + (-uVar20 & uVar20)) - 2;\n    }\n    iVar42 = *(int *)(puVar50 + -0x38);\n    p_Var39->_mp_alloc = uVar20 >> (uVar40 & 0x1f);\n    iVar28 = *(int *)(puVar50 + -0x60);\n    *(uint *)(puVar50 + -0x40) =\n         *(int *)(puVar50 + -0x40) + *(byte *)(iVar42 + (uVar6 - 1)) + uVar40;\n    if ((uint)(iVar28 - iVar5) <= uVar6) {\n      uVar6 = iVar28 - iVar5;\n    }\n    iVar42 = iVar5;\n    if (uVar6 != 0) goto LAB_00022234;\nLAB_00022534:\n    p_Var34 = (mpz_ptr)&DAT_00000001;\n    *(mpz_ptr *)(puVar50 + -0x4c) = p_Var39;\n  } while( true );" statement_identifier : (do_statement "do {\n    iVar45 = iVar42 - *(int *)(puVar50 + -0x44);\n    iVar28 = *(int *)(puVar50 + -0x5c);\n    iVar5 = iVar45;\n    if (iVar45 != 0) {\n      *(uint *)(puVar50 + -0x44) = uVar6;\n      *(mpz_ptr *)(puVar50 + -0x50) = p_Var34;\n      *(mpz_ptr *)(puVar50 + -0x54) = p_Var39;\n      *(int *)(puVar50 + -0x58) = iVar42;\n      iVar5 = *(int *)(puVar50 + -0x48);\n      iVar42 = *(int *)(puVar50 + -0x68);\n      iVar28 = iVar32;\n      do {\n        iVar36 = iVar45;\n        if (iVar42 <= iVar45) {\n          iVar36 = iVar42;\n        }\n        iVar32 = iVar28 + iVar36;\n        uVar20 = (**(code **)(*(int *)(puVar50 + -0x34) + (iVar36 + -1) * 4))(iVar28);\n        if ((uVar20 & 0xff) == 0) {\n          uVar40 = uVar20 >> 8;\n          iVar28 = 6;\n          if ((uVar40 & 0xff) == 0) {\n            uVar40 = uVar20 >> 0x10;\n            iVar28 = 0xe;\n            if ((uVar40 & 0xff) == 0) {\n              uVar40 = uVar20 >> 0x18;\n              iVar28 = 0x16;\n              if (uVar40 == 0) {\n                iVar28 = 0x1e;\n              }\n            }\n          }\n          uVar40 = (uint)*(byte *)(*(int *)(puVar50 + -0x3c) + (-uVar40 & uVar40)) + iVar28;\n        }\n        else {\n          uVar40 = *(byte *)(*(int *)(puVar50 + -0x3c) + (-uVar20 & uVar20)) - 2;\n        }\n        iVar45 = iVar45 - iVar36;\n        iVar5 = iVar5 + *(byte *)(*(int *)(puVar50 + -0x38) + iVar36 + -1) + uVar40;\n        iVar28 = (**(code **)(*(int *)(puVar50 + -0x78) + -0x7f9c))\n                           (p_Var41,p_Var41,p_Var33,uVar20 >> (uVar40 & 0x1f));\n        puVar47 = *(undefined **)(puVar50 + -0x78);\n        piVar35 = &p_Var41->_mp_alloc + (int)p_Var33;\n        p_Var33 = (mpz_ptr)((int)&p_Var33->_mp_alloc + (uint)(iVar28 != 0));\n        *piVar35 = iVar28;\n        iVar28 = iVar32;\n      } while (iVar45 != 0);\n      uVar6 = *(uint *)(puVar50 + -0x44);\n      p_Var34 = *(mpz_ptr *)(puVar50 + -0x50);\n      p_Var39 = *(mpz_ptr *)(puVar50 + -0x54);\n      iVar42 = *(int *)(puVar50 + -0x58);\n      *(int *)(puVar50 + -0x48) = iVar5;\n      iVar28 = *(int *)(puVar50 + -0x5c);\n    }\n    iVar45 = p_Var39->_mp_alloc;\n    pcVar55 = *(code **)(puVar47 + -0x7bc0);\n    uVar20 = (uint)*(byte *)(*(int *)(puVar50 + -100) + ((uint)(iVar45 << 0x18) >> 0x19));\n    p_Var33 = (mpz_ptr)((int)p_Var33 +\n                       (((uint)(&p_Var41->_mp_alloc)[(int)((int)&p_Var33->_mp_alloc + iVar28)] <\n                         **(uint **)(puVar50 + -0x4c) ^ 1) - (int)p_Var34));\n    iVar28 = uVar20 * 2 - uVar20 * uVar20 * iVar45;\n    if ((int)p_Var33 < (int)p_Var34) {\n      p_Var34 = p_Var33;\n    }\n    *(mpz_ptr *)(puVar51 + -0x48) = p_Var34;\n    *(int *)(puVar51 + -0x44) = iVar28 * iVar28 * iVar45 + iVar28 * -2;\n    p_Var22 = p_Var41;\n    p_Var25 = p_Var33;\n    (*pcVar55)(p_Var41,p_Var41,p_Var33,p_Var39);\n    iVar28 = *(int *)(puVar50 + -0x78);\n    if (uVar6 == 0) {\n      if (*(int *)(puVar50 + -0x48) == *(int *)(puVar50 + -0x40)) {\n        p_Var33 = (mpz_ptr)((int)p_Var33 -\n                           (uint)(*(int *)((int)p_Var41 + (int)p_Var33 * 4 + -4) == 0));\n        pcVar55 = *(code **)(iVar28 + -0x7a80);\n        if ((int)p_Var33 <= **(int **)(puVar50 + -0x6c)) goto LAB_00022600;\nLAB_00022734:\n        p_Var22 = p_Var33;\n        puVar21 = (undefined4 *)(*pcVar55)(*(undefined4 *)(puVar50 + -0x6c));\n        iVar28 = *(int *)(puVar50 + -0x78);\n      }\n      else {\n        p_Var22 = p_Var41;\n        p_Var25 = p_Var33;\n        iVar45 = (**(code **)(iVar28 + -0x7ad4))(p_Var41);\n        iVar28 = *(int *)(puVar50 + -0x78);\n        puVar13 = (undefined1 *)((int)&p_Var33->_mp_alloc + (uint)(iVar45 != 0));\n        *(int *)((int)p_Var41 + (int)p_Var33 * 4) = iVar45;\n        p_Var33 = (mpz_ptr)(puVar13 + -(uint)(*(int *)((int)p_Var41 + (int)puVar13 * 4 + -4) == 0));\n        pcVar55 = *(code **)(iVar28 + -0x7a80);\n        if (**(int **)(puVar50 + -0x6c) < (int)p_Var33) goto LAB_00022734;\nLAB_00022600:\n        puVar21 = *(undefined4 **)(*(int *)(puVar50 + -0x6c) + 8);\n      }\n      *(mpz_ptr *)(*(int *)(puVar50 + -0x6c) + 4) = p_Var33;\n      if (p_Var33 != (mpz_ptr)0x0) {\n        puVar13 = (undefined1 *)((int)&p_Var33[-1]._mp_d + 3);\n        p_Var22 = (mpz_ptr)p_Var41->_mp_alloc;\n        if (puVar13 != (undefined1 *)0x0) {\n          puVar18 = puVar21;\n          ppmVar43 = (mp_limb_t **)&p_Var41->_mp_size;\n          do {\n            *puVar18 = p_Var22;\n            p_Var41 = (mpz_ptr)(ppmVar43 + 1);\n            puVar13 = puVar13 + -1;\n            p_Var22 = (mpz_ptr)*ppmVar43;\n            puVar18 = puVar18 + 1;\n            ppmVar43 = (mp_limb_t **)p_Var41;\n          } while (puVar13 != (undefined1 *)0x0);\n          p_Var33 = (mpz_ptr)((int)p_Var33 * 4);\n          puVar21 = (undefined4 *)((int)puVar21 + (int)&p_Var33[-1]._mp_d);\n        }\n        *puVar21 = p_Var22;\n      }\n      r_00 = *(mpz_ptr *)(puVar50 + -0x30);\n      if (r_00 != (mpz_ptr)0x0) {\n        (**(code **)(iVar28 + -0x7a28))();\n        iVar28 = *(int *)(puVar50 + -0x78);\n      }\n      if (*(int *)(puVar50 + -0x2c) == **(int **)(puVar50 + -0x70)) {\n        return;\n      }\n      pcVar55 = *(code **)(iVar28 + -0x7b70);\n      pcVar56 = __gmpz_bin_uiui;\n      (*pcVar55)();\n      pcVar48 = pcVar55 + 0x8289c;\n      *(mpz_ptr *)(puVar51 + -0x78) = p_Var34;\n      piVar35 = *(int **)(pcVar55 + 0x7ad9c);\n      *(code **)(puVar51 + -0xf0) = pcVar48;\n      *(int *)(puVar51 + -0x74) = iVar42;\n      *(code **)(puVar51 + -0x5c) = pcVar56;\n      *(undefined1 **)(puVar51 + -0x60) = puVar50 + -0x90;\n      *(int *)(puVar51 + -100) = iVar5;\n      *(int *)(puVar51 + -0x68) = iVar32;\n      *(mpz_ptr *)(puVar51 + -0x6c) = p_Var41;\n      *(mpz_ptr *)(puVar51 + -0x70) = p_Var39;\n      *(mpz_ptr *)(puVar51 + -0x7c) = p_Var33;\n      *(undefined4 *)(puVar51 + -0x80) = 0;\n      *(int *)(puVar51 + -0x84) = *piVar35;\n      p_Var34 = r_00;\n      p_Var23 = p_Var22;\n      if (p_Var22 < p_Var25) {\n        r_00->_mp_size = 0;\n        k_00 = (mpz_ptr)0x0;\n      }\n      else {\n        k_00 = p_Var25;\n        if ((mpz_ptr)((int)p_Var22 - (int)p_Var25) <= p_Var25) {\n          k_00 = (mpz_ptr)((int)p_Var22 - (int)p_Var25);\n        }\n        p_Var25 = k_00;\n        p_Var39 = p_Var22;\n        if (k_00 < (mpz_ptr)0x2) {\n          if (k_00 == (mpz_ptr)0x0) {\n            p_Var39 = (mpz_ptr)&DAT_00000001;\n          }\n          *r_00->_mp_d = (mp_limb_t)p_Var39;\n          r_00->_mp_size = 1;\n          puVar53 = puVar50 + -0x90;\n        }\n        else if (p_Var22 < (mpz_ptr)0x23) {\n          p_Var3 = k_00 + -1;\n          iVar5 = *(int *)(pcVar55 + 0x7aa7c);\n          p_Var23 = (mpz_ptr)r_00->_mp_d;\n          uVar20 = (int)p_Var22 - (int)k_00;\n          p_Var39 = (mpz_ptr)(iVar5 + ((uint)p_Var22 >> 1));\n          k_00 = (mpz_ptr)(iVar5 + ((uint)k_00 >> 1));\n          p_Var25 = (mpz_ptr)(uint)*(byte *)((int)&k_00[-1]._mp_d + 3);\n          p_Var34 = (mpz_ptr)(uint)*(byte *)(iVar5 + (uVar20 >> 1) + -1);\n          p_Var23->_mp_alloc =\n               *(int *)((int)((int)&p_Var3->_mp_d + 2) * 4 + *(int *)(pcVar55 + 0x7a8c8) + 0x35b4) *\n               *(int *)(*(int *)(pcVar55 + 0x7ad64) + (int)p_Var22 * 4) *\n               *(int *)((uVar20 - 2) * 4 + *(int *)(pcVar55 + 0x7a8c8) + 0x35b4) <<\n               (((uint)*(byte *)((int)&p_Var39[-1]._mp_d + 3) - (int)p_Var25) - (int)p_Var34 & 0x1f)\n          ;\n          r_00->_mp_size = 1;\n          puVar53 = puVar50 + -0x90;\n        }\n        else if (k_00 < (mpz_ptr)&DAT_00000011) {\n          mpz_smallk_bin_uiui(r_00,(ulong)p_Var22,(ulong)k_00);\n          pcVar48 = *(code **)(puVar51 + -0xf0);\n          puVar53 = puVar50 + -0x90;\n        }\n        else if (k_00 < (mpz_ptr)&DAT_00000021) {\n          uVar20 = (uint)k_00 >> 1;\n          uVar40 = (int)p_Var22 - uVar20;\n          mpz_smallk_bin_uiui(r_00,(ulong)p_Var22,uVar20);\n          iVar5 = *(int *)(puVar51 + -0xf0);\n          uVar6 = (int)k_00 - uVar20;\n          if (uVar40 < 0x23) {\n            puVar54 = (undefined1 *)r_00->_mp_size;\n            if ((int)puVar54 < r_00->_mp_alloc) {\n              p_Var33 = (mpz_ptr)r_00->_mp_d;\n            }\n            else {\n              p_Var33 = (mpz_ptr)(**(code **)(iVar5 + -0x7a80))(r_00,puVar54 + 1);\n              iVar5 = *(int *)(puVar51 + -0xf0);\n            }\n            iVar32 = *(int *)(iVar5 + -0x7e20);\n            iVar28 = *(int *)(iVar5 + -0x7fd4) + 0x35b4;\n            iVar28 = (**(code **)(iVar5 + -0x7f9c))\n                               (p_Var33,p_Var33,puVar54,\n                                *(int *)((((int)p_Var22 - (int)k_00) - 2U) * 4 + iVar28) *\n                                *(int *)(*(int *)(iVar5 + -0x7b38) + uVar40 * 4) *\n                                *(int *)((uVar6 - 2) * 4 + iVar28) <<\n                                (((uint)*(byte *)(iVar32 + (uVar40 >> 1) + -1) -\n                                 (uint)*(byte *)(iVar32 + (uVar6 >> 1) + -1)) -\n                                 (uint)*(byte *)(iVar32 + ((uint)((int)p_Var22 - (int)k_00) >> 1) +\n                                                -1) & 0x1f));\n            iVar5 = *(int *)(puVar51 + -0xf0);\n            k_00 = (mpz_ptr)(puVar54 + (iVar28 != 0));\n            (&p_Var33->_mp_alloc)[(int)puVar54] = iVar28;\n          }\n          else {\n            *(undefined4 *)(puVar51 + -0xe4) = 0x15;\n            *(undefined1 **)(puVar51 + -0xdc) = puVar51 + -0xd8;\n            mpz_smallk_bin_uiui((mpz_ptr)(puVar51 + -0xe4),uVar40,uVar6);\n            (**(code **)(*(int *)(puVar51 + -0xf0) + -0x7ba8))(r_00,r_00,(mpz_ptr)(puVar51 + -0xe4))\n            ;\n            iVar5 = *(int *)(puVar51 + -0xf0);\n            p_Var33 = (mpz_ptr)r_00->_mp_d;\n            k_00 = (mpz_ptr)r_00->_mp_size;\n          }\n          pcVar55 = *(code **)(iVar5 + -0x7bb4);\n          p_Var41 = (mpz_ptr)((uint)*(byte *)((uVar6 - 8) + *(int *)(iVar5 + -0x7fd4) + 0x3550) -\n                             (uint)(uVar20 != uVar6));\n          *(undefined4 *)(puVar51 + -0xf8) =\n               *(undefined4 *)((uVar6 - 8) * 4 + *(int *)(iVar5 + -0x7fd4) + 0x355c);\n          *(mpz_ptr *)(puVar51 + -0xf4) = p_Var41;\n          p_Var34 = p_Var33;\n          p_Var23 = p_Var33;\n          p_Var25 = k_00;\n          (*pcVar55)();\n          pcVar48 = *(code **)(puVar51 + -0xf0);\n          if (*(int *)((int)p_Var33 + (int)k_00 * 4 + -4) == 0) {\n            piVar37 = &p_Var33->_mp_alloc + (int)k_00;\n            do {\n              piVar19 = piVar37 + -2;\n              k_00 = (mpz_ptr)((int)&k_00[-1]._mp_d + 3);\n              piVar37 = piVar37 + -1;\n            } while (*piVar19 == 0);\n          }\n          r_00->_mp_size = (int)k_00;\n          puVar53 = puVar54;\n        }\n        else if ((k_00 < (mpz_ptr)0x3e8) || (k_00 <= (mpz_ptr)((uint)p_Var22 >> 4))) {\n          mpz_bdiv_bin_uiui(r_00,(ulong)p_Var22,(ulong)k_00);\n          pcVar48 = *(code **)(puVar51 + -0xf0);\n          puVar53 = puVar50 + -0x90;\n        }\n        else {\n          mpz_goetgheluck_bin_uiui(r_00,(ulong)p_Var22,(ulong)k_00);\n          pcVar48 = *(code **)(puVar51 + -0xf0);\n          puVar53 = puVar50 + -0x90;\n        }\n      }\n      if (*(int *)(puVar51 + -0x84) == *piVar35) {\n        return;\n      }\n      pcVar55 = *(code **)(pcVar48 + -0x7b70);\n      uVar9 = 0x22b64;\n      (*pcVar55)();\n      pcVar48 = pcVar55 + 0x824d0;\n      puVar52 = puVar51 + -0x160;\n      *(mpz_ptr *)(puVar51 + -0x118) = r_00;\n      *(mpz_ptr *)(puVar51 + -0x124) = k_00;\n      piVar37 = *(int **)(pcVar55 + 0x7a9d0);\n      uVar20 = p_Var25->_mp_size;\n      *(undefined1 **)(puVar51 + -0x110) = puVar53;\n      *(mpz_ptr *)(puVar51 + -0x114) = p_Var39;\n      *(int **)(puVar51 + -0x11c) = piVar35;\n      *(mpz_ptr *)(puVar51 + -0x120) = p_Var33;\n      *(undefined4 *)(puVar51 + -0x10c) = uVar9;\n      *(code **)(puVar51 + -0x150) = pcVar48;\n      *(undefined4 *)(puVar51 + -0x13c) = 0;\n      p_Var39 = (mpz_ptr)p_Var23->_mp_size;\n      *(int *)(puVar51 + -300) = *piVar37;\n      if ((int)uVar20 < 0) {\n        uVar40 = uVar20 * -4;\n        *(uint *)(puVar51 + -0x138) = -uVar20;\n        if (0x7f00 < uVar40) {\n          pcVar55 = *(code **)(pcVar55 + 0x7a780);\n          goto LAB_00022c88;\n        }\nLAB_00022be4:\n        iVar5 = -(uVar40 + 7 & 0xfffffff8);\n        puVar52 = puVar51 + iVar5 + -0x160;\n        puVar13 = puVar51 + iVar5 + -0x150;\n      }\n      else {\n        uVar40 = uVar20 * 4;\n        *(uint *)(puVar51 + -0x138) = uVar20;\n        pcVar55 = *(code **)(pcVar55 + 0x7a780);\n        if (uVar40 < 0x7f01) goto LAB_00022be4;\nLAB_00022c88:\n        *(mpz_ptr *)(puVar51 + -0x144) = p_Var25;\n        puVar13 = (undefined1 *)(*pcVar55)(puVar51 + -0x13c,uVar40);\n        pcVar48 = *(code **)(puVar51 + -0x150);\n        p_Var25 = *(mpz_ptr *)(puVar51 + -0x144);\n      }\n      pcVar55 = *(code **)(pcVar48 + -0x7a68);\n      p_Var33 = (mpz_ptr)(puVar51 + -0x138);\n      *(undefined1 **)(puVar51 + -0x130) = puVar13;\n      p_Var22 = p_Var23;\n      (*pcVar55)(p_Var34,p_Var33,p_Var23,p_Var25);\n      iVar5 = *(int *)(puVar51 + -0x150);\n      if (((int)((uint)p_Var39 ^ uVar20) < 0) || (*(int *)(puVar51 + -0x134) == 0)) {\n        piVar35 = *(int **)(puVar51 + -0x13c);\n        pcVar55 = *(code **)(iVar5 + -0x7a28);\n        if (piVar35 != (int *)0x0) goto LAB_00022cc0;\n      }\n      else {\n        p_Var22 = (mpz_ptr)&DAT_00000001;\n        p_Var33 = p_Var34;\n        (**(code **)(iVar5 + -0x7c9c))(p_Var34);\n        piVar35 = *(int **)(puVar51 + -0x13c);\n        iVar5 = *(int *)(puVar51 + -0x150);\n        if (piVar35 != (int *)0x0) {\n          pcVar55 = *(code **)(iVar5 + -0x7a28);\nLAB_00022cc0:\n          (*pcVar55)();\n          iVar5 = *(int *)(puVar51 + -0x150);\n        }\n      }\n      if (*(int *)(puVar51 + -300) == *piVar37) {\n        return;\n      }\n      pcVar55 = *(code **)(iVar5 + -0x7b70);\n      uVar9 = 0x22cdc;\n      (*pcVar55)();\n      pcVar48 = pcVar55 + 0x82360;\n      *(code **)(puVar52 + -0x28) = pcVar48;\n      *(undefined4 *)(puVar52 + -4) = uVar9;\n      *(mpz_ptr *)(puVar52 + -8) = p_Var41;\n      *(mpz_ptr *)(puVar52 + -0xc) = p_Var23;\n      *(int **)(puVar52 + -0x10) = piVar37;\n      *(mpz_ptr *)(puVar52 + -0x14) = p_Var34;\n      *(mpz_ptr *)(puVar52 + -0x18) = p_Var39;\n      *(uint *)(puVar52 + -0x1c) = (uint)p_Var39 ^ uVar20;\n      if (p_Var22 == (mpz_ptr)0x0) {\n        pcVar55 = *(code **)(pcVar55 + 0x7a900);\n        (*pcVar55)();\nLAB_00022e2c:\n        piVar35 = (int *)(*pcVar55)(piVar37,p_Var34);\n        pcVar48 = *(code **)(puVar52 + -0x28);\n      }\n      else {\n        p_Var39 = (mpz_ptr)p_Var33->_mp_size;\n        if (p_Var39 == (mpz_ptr)0x0) {\n          piVar35[1] = 0;\n          return;\n        }\n        p_Var34 = p_Var39;\n        if ((int)p_Var39 < 0) {\n          p_Var34 = (mpz_ptr)-(int)p_Var39;\n        }\n        pcVar55 = *(code **)(pcVar55 + 0x7a8e0);\n        piVar37 = piVar35;\n        p_Var23 = p_Var22;\n        p_Var41 = p_Var33;\n        if (*piVar35 < (int)p_Var34) goto LAB_00022e2c;\n        piVar35 = (int *)piVar35[2];\n      }\n      pcVar55 = *(code **)(pcVar48 + -0x7d98);\n      pmVar26 = p_Var41->_mp_d;\n      *(mpz_ptr *)(puVar52 + -0x30) = p_Var23;\n      iVar5 = (*pcVar55)(piVar35,0,pmVar26,p_Var34);\n      piVar19 = piVar35 + (int)((int)&p_Var34[-1]._mp_d + 3);\n      if (iVar5 == 0) {\n        uVar20 = (uint)(*piVar19 == 0);\n        if (-1 < (int)p_Var39) {\n          iVar5 = (int)p_Var34 - uVar20;\n          goto LAB_00022d9c;\n        }\n      }\n      else {\n        if (-1 < (int)p_Var39) {\n          do {\n            iVar5 = *piVar35;\n            *piVar35 = iVar5 + 1;\n            piVar35 = piVar35 + 1;\n          } while (iVar5 + 1 == 0);\n          iVar5 = (int)p_Var34 - (uint)(*piVar19 == 0);\n          goto LAB_00022d9c;\n        }\n        uVar20 = (uint)(*piVar19 == 0);\n      }\n      iVar5 = uVar20 - (int)p_Var34;\nLAB_00022d9c:\n      piVar37[1] = iVar5;\n      return;\n    }\n    *(int *)(puVar50 + -0x44) = iVar42;\n    iVar5 = iVar42 + uVar6;\n    uVar20 = (**(code **)(*(int *)(puVar50 + -0x34) + (uVar6 - 1) * 4))(iVar42);\n    puVar47 = *(undefined **)(puVar50 + -0x78);\n    if ((uVar20 & 0xff) == 0) {\n      uVar40 = uVar20 >> 8;\n      iVar28 = 6;\n      if ((uVar40 & 0xff) == 0) {\n        uVar40 = uVar20 >> 0x10;\n        iVar28 = 0xe;\n        if ((uVar40 & 0xff) == 0) {\n          uVar40 = uVar20 >> 0x18;\n          iVar28 = 0x1e;\n          if (uVar40 != 0) {\n            iVar28 = 0x16;\n          }\n        }\n      }\n      uVar40 = (uint)*(byte *)(*(int *)(puVar50 + -0x3c) + (-uVar40 & uVar40)) + iVar28;\n    }\n    else {\n      uVar40 = *(byte *)(*(int *)(puVar50 + -0x3c) + (-uVar20 & uVar20)) - 2;\n    }\n    iVar42 = *(int *)(puVar50 + -0x38);\n    p_Var39->_mp_alloc = uVar20 >> (uVar40 & 0x1f);\n    iVar28 = *(int *)(puVar50 + -0x60);\n    *(uint *)(puVar50 + -0x40) =\n         *(int *)(puVar50 + -0x40) + *(byte *)(iVar42 + (uVar6 - 1)) + uVar40;\n    if ((uint)(iVar28 - iVar5) <= uVar6) {\n      uVar6 = iVar28 - iVar5;\n    }\n    iVar42 = iVar5;\n    if (uVar6 != 0) goto LAB_00022234;\nLAB_00022534:\n    p_Var34 = (mpz_ptr)&DAT_00000001;\n    *(mpz_ptr *)(puVar50 + -0x4c) = p_Var39;\n  } while( true );" do (compound_statement "{\n    iVar45 = iVar42 - *(int *)(puVar50 + -0x44);\n    iVar28 = *(int *)(puVar50 + -0x5c);\n    iVar5 = iVar45;\n    if (iVar45 != 0) {\n      *(uint *)(puVar50 + -0x44) = uVar6;\n      *(mpz_ptr *)(puVar50 + -0x50) = p_Var34;\n      *(mpz_ptr *)(puVar50 + -0x54) = p_Var39;\n      *(int *)(puVar50 + -0x58) = iVar42;\n      iVar5 = *(int *)(puVar50 + -0x48);\n      iVar42 = *(int *)(puVar50 + -0x68);\n      iVar28 = iVar32;\n      do {\n        iVar36 = iVar45;\n        if (iVar42 <= iVar45) {\n          iVar36 = iVar42;\n        }\n        iVar32 = iVar28 + iVar36;\n        uVar20 = (**(code **)(*(int *)(puVar50 + -0x34) + (iVar36 + -1) * 4))(iVar28);\n        if ((uVar20 & 0xff) == 0) {\n          uVar40 = uVar20 >> 8;\n          iVar28 = 6;\n          if ((uVar40 & 0xff) == 0) {\n            uVar40 = uVar20 >> 0x10;\n            iVar28 = 0xe;\n            if ((uVar40 & 0xff) == 0) {\n              uVar40 = uVar20 >> 0x18;\n              iVar28 = 0x16;\n              if (uVar40 == 0) {\n                iVar28 = 0x1e;\n              }\n            }\n          }\n          uVar40 = (uint)*(byte *)(*(int *)(puVar50 + -0x3c) + (-uVar40 & uVar40)) + iVar28;\n        }\n        else {\n          uVar40 = *(byte *)(*(int *)(puVar50 + -0x3c) + (-uVar20 & uVar20)) - 2;\n        }\n        iVar45 = iVar45 - iVar36;\n        iVar5 = iVar5 + *(byte *)(*(int *)(puVar50 + -0x38) + iVar36 + -1) + uVar40;\n        iVar28 = (**(code **)(*(int *)(puVar50 + -0x78) + -0x7f9c))\n                           (p_Var41,p_Var41,p_Var33,uVar20 >> (uVar40 & 0x1f));\n        puVar47 = *(undefined **)(puVar50 + -0x78);\n        piVar35 = &p_Var41->_mp_alloc + (int)p_Var33;\n        p_Var33 = (mpz_ptr)((int)&p_Var33->_mp_alloc + (uint)(iVar28 != 0));\n        *piVar35 = iVar28;\n        iVar28 = iVar32;\n      } while (iVar45 != 0);\n      uVar6 = *(uint *)(puVar50 + -0x44);\n      p_Var34 = *(mpz_ptr *)(puVar50 + -0x50);\n      p_Var39 = *(mpz_ptr *)(puVar50 + -0x54);\n      iVar42 = *(int *)(puVar50 + -0x58);\n      *(int *)(puVar50 + -0x48) = iVar5;\n      iVar28 = *(int *)(puVar50 + -0x5c);\n    }\n    iVar45 = p_Var39->_mp_alloc;\n    pcVar55 = *(code **)(puVar47 + -0x7bc0);\n    uVar20 = (uint)*(byte *)(*(int *)(puVar50 + -100) + ((uint)(iVar45 << 0x18) >> 0x19));\n    p_Var33 = (mpz_ptr)((int)p_Var33 +\n                       (((uint)(&p_Var41->_mp_alloc)[(int)((int)&p_Var33->_mp_alloc + iVar28)] <\n                         **(uint **)(puVar50 + -0x4c) ^ 1) - (int)p_Var34));\n    iVar28 = uVar20 * 2 - uVar20 * uVar20 * iVar45;\n    if ((int)p_Var33 < (int)p_Var34) {\n      p_Var34 = p_Var33;\n    }\n    *(mpz_ptr *)(puVar51 + -0x48) = p_Var34;\n    *(int *)(puVar51 + -0x44) = iVar28 * iVar28 * iVar45 + iVar28 * -2;\n    p_Var22 = p_Var41;\n    p_Var25 = p_Var33;\n    (*pcVar55)(p_Var41,p_Var41,p_Var33,p_Var39);\n    iVar28 = *(int *)(puVar50 + -0x78);\n    if (uVar6 == 0) {\n      if (*(int *)(puVar50 + -0x48) == *(int *)(puVar50 + -0x40)) {\n        p_Var33 = (mpz_ptr)((int)p_Var33 -\n                           (uint)(*(int *)((int)p_Var41 + (int)p_Var33 * 4 + -4) == 0));\n        pcVar55 = *(code **)(iVar28 + -0x7a80);\n        if ((int)p_Var33 <= **(int **)(puVar50 + -0x6c)) goto LAB_00022600;\nLAB_00022734:\n        p_Var22 = p_Var33;\n        puVar21 = (undefined4 *)(*pcVar55)(*(undefined4 *)(puVar50 + -0x6c));\n        iVar28 = *(int *)(puVar50 + -0x78);\n      }\n      else {\n        p_Var22 = p_Var41;\n        p_Var25 = p_Var33;\n        iVar45 = (**(code **)(iVar28 + -0x7ad4))(p_Var41);\n        iVar28 = *(int *)(puVar50 + -0x78);\n        puVar13 = (undefined1 *)((int)&p_Var33->_mp_alloc + (uint)(iVar45 != 0));\n        *(int *)((int)p_Var41 + (int)p_Var33 * 4) = iVar45;\n        p_Var33 = (mpz_ptr)(puVar13 + -(uint)(*(int *)((int)p_Var41 + (int)puVar13 * 4 + -4) == 0));\n        pcVar55 = *(code **)(iVar28 + -0x7a80);\n        if (**(int **)(puVar50 + -0x6c) < (int)p_Var33) goto LAB_00022734;\nLAB_00022600:\n        puVar21 = *(undefined4 **)(*(int *)(puVar50 + -0x6c) + 8);\n      }\n      *(mpz_ptr *)(*(int *)(puVar50 + -0x6c) + 4) = p_Var33;\n      if (p_Var33 != (mpz_ptr)0x0) {\n        puVar13 = (undefined1 *)((int)&p_Var33[-1]._mp_d + 3);\n        p_Var22 = (mpz_ptr)p_Var41->_mp_alloc;\n        if (puVar13 != (undefined1 *)0x0) {\n          puVar18 = puVar21;\n          ppmVar43 = (mp_limb_t **)&p_Var41->_mp_size;\n          do {\n            *puVar18 = p_Var22;\n            p_Var41 = (mpz_ptr)(ppmVar43 + 1);\n            puVar13 = puVar13 + -1;\n            p_Var22 = (mpz_ptr)*ppmVar43;\n            puVar18 = puVar18 + 1;\n            ppmVar43 = (mp_limb_t **)p_Var41;\n          } while (puVar13 != (undefined1 *)0x0);\n          p_Var33 = (mpz_ptr)((int)p_Var33 * 4);\n          puVar21 = (undefined4 *)((int)puVar21 + (int)&p_Var33[-1]._mp_d);\n        }\n        *puVar21 = p_Var22;\n      }\n      r_00 = *(mpz_ptr *)(puVar50 + -0x30);\n      if (r_00 != (mpz_ptr)0x0) {\n        (**(code **)(iVar28 + -0x7a28))();\n        iVar28 = *(int *)(puVar50 + -0x78);\n      }\n      if (*(int *)(puVar50 + -0x2c) == **(int **)(puVar50 + -0x70)) {\n        return;\n      }\n      pcVar55 = *(code **)(iVar28 + -0x7b70);\n      pcVar56 = __gmpz_bin_uiui;\n      (*pcVar55)();\n      pcVar48 = pcVar55 + 0x8289c;\n      *(mpz_ptr *)(puVar51 + -0x78) = p_Var34;\n      piVar35 = *(int **)(pcVar55 + 0x7ad9c);\n      *(code **)(puVar51 + -0xf0) = pcVar48;\n      *(int *)(puVar51 + -0x74) = iVar42;\n      *(code **)(puVar51 + -0x5c) = pcVar56;\n      *(undefined1 **)(puVar51 + -0x60) = puVar50 + -0x90;\n      *(int *)(puVar51 + -100) = iVar5;\n      *(int *)(puVar51 + -0x68) = iVar32;\n      *(mpz_ptr *)(puVar51 + -0x6c) = p_Var41;\n      *(mpz_ptr *)(puVar51 + -0x70) = p_Var39;\n      *(mpz_ptr *)(puVar51 + -0x7c) = p_Var33;\n      *(undefined4 *)(puVar51 + -0x80) = 0;\n      *(int *)(puVar51 + -0x84) = *piVar35;\n      p_Var34 = r_00;\n      p_Var23 = p_Var22;\n      if (p_Var22 < p_Var25) {\n        r_00->_mp_size = 0;\n        k_00 = (mpz_ptr)0x0;\n      }\n      else {\n        k_00 = p_Var25;\n        if ((mpz_ptr)((int)p_Var22 - (int)p_Var25) <= p_Var25) {\n          k_00 = (mpz_ptr)((int)p_Var22 - (int)p_Var25);\n        }\n        p_Var25 = k_00;\n        p_Var39 = p_Var22;\n        if (k_00 < (mpz_ptr)0x2) {\n          if (k_00 == (mpz_ptr)0x0) {\n            p_Var39 = (mpz_ptr)&DAT_00000001;\n          }\n          *r_00->_mp_d = (mp_limb_t)p_Var39;\n          r_00->_mp_size = 1;\n          puVar53 = puVar50 + -0x90;\n        }\n        else if (p_Var22 < (mpz_ptr)0x23) {\n          p_Var3 = k_00 + -1;\n          iVar5 = *(int *)(pcVar55 + 0x7aa7c);\n          p_Var23 = (mpz_ptr)r_00->_mp_d;\n          uVar20 = (int)p_Var22 - (int)k_00;\n          p_Var39 = (mpz_ptr)(iVar5 + ((uint)p_Var22 >> 1));\n          k_00 = (mpz_ptr)(iVar5 + ((uint)k_00 >> 1));\n          p_Var25 = (mpz_ptr)(uint)*(byte *)((int)&k_00[-1]._mp_d + 3);\n          p_Var34 = (mpz_ptr)(uint)*(byte *)(iVar5 + (uVar20 >> 1) + -1);\n          p_Var23->_mp_alloc =\n               *(int *)((int)((int)&p_Var3->_mp_d + 2) * 4 + *(int *)(pcVar55 + 0x7a8c8) + 0x35b4) *\n               *(int *)(*(int *)(pcVar55 + 0x7ad64) + (int)p_Var22 * 4) *\n               *(int *)((uVar20 - 2) * 4 + *(int *)(pcVar55 + 0x7a8c8) + 0x35b4) <<\n               (((uint)*(byte *)((int)&p_Var39[-1]._mp_d + 3) - (int)p_Var25) - (int)p_Var34 & 0x1f)\n          ;\n          r_00->_mp_size = 1;\n          puVar53 = puVar50 + -0x90;\n        }\n        else if (k_00 < (mpz_ptr)&DAT_00000011) {\n          mpz_smallk_bin_uiui(r_00,(ulong)p_Var22,(ulong)k_00);\n          pcVar48 = *(code **)(puVar51 + -0xf0);\n          puVar53 = puVar50 + -0x90;\n        }\n        else if (k_00 < (mpz_ptr)&DAT_00000021) {\n          uVar20 = (uint)k_00 >> 1;\n          uVar40 = (int)p_Var22 - uVar20;\n          mpz_smallk_bin_uiui(r_00,(ulong)p_Var22,uVar20);\n          iVar5 = *(int *)(puVar51 + -0xf0);\n          uVar6 = (int)k_00 - uVar20;\n          if (uVar40 < 0x23) {\n            puVar54 = (undefined1 *)r_00->_mp_size;\n            if ((int)puVar54 < r_00->_mp_alloc) {\n              p_Var33 = (mpz_ptr)r_00->_mp_d;\n            }\n            else {\n              p_Var33 = (mpz_ptr)(**(code **)(iVar5 + -0x7a80))(r_00,puVar54 + 1);\n              iVar5 = *(int *)(puVar51 + -0xf0);\n            }\n            iVar32 = *(int *)(iVar5 + -0x7e20);\n            iVar28 = *(int *)(iVar5 + -0x7fd4) + 0x35b4;\n            iVar28 = (**(code **)(iVar5 + -0x7f9c))\n                               (p_Var33,p_Var33,puVar54,\n                                *(int *)((((int)p_Var22 - (int)k_00) - 2U) * 4 + iVar28) *\n                                *(int *)(*(int *)(iVar5 + -0x7b38) + uVar40 * 4) *\n                                *(int *)((uVar6 - 2) * 4 + iVar28) <<\n                                (((uint)*(byte *)(iVar32 + (uVar40 >> 1) + -1) -\n                                 (uint)*(byte *)(iVar32 + (uVar6 >> 1) + -1)) -\n                                 (uint)*(byte *)(iVar32 + ((uint)((int)p_Var22 - (int)k_00) >> 1) +\n                                                -1) & 0x1f));\n            iVar5 = *(int *)(puVar51 + -0xf0);\n            k_00 = (mpz_ptr)(puVar54 + (iVar28 != 0));\n            (&p_Var33->_mp_alloc)[(int)puVar54] = iVar28;\n          }\n          else {\n            *(undefined4 *)(puVar51 + -0xe4) = 0x15;\n            *(undefined1 **)(puVar51 + -0xdc) = puVar51 + -0xd8;\n            mpz_smallk_bin_uiui((mpz_ptr)(puVar51 + -0xe4),uVar40,uVar6);\n            (**(code **)(*(int *)(puVar51 + -0xf0) + -0x7ba8))(r_00,r_00,(mpz_ptr)(puVar51 + -0xe4))\n            ;\n            iVar5 = *(int *)(puVar51 + -0xf0);\n            p_Var33 = (mpz_ptr)r_00->_mp_d;\n            k_00 = (mpz_ptr)r_00->_mp_size;\n          }\n          pcVar55 = *(code **)(iVar5 + -0x7bb4);\n          p_Var41 = (mpz_ptr)((uint)*(byte *)((uVar6 - 8) + *(int *)(iVar5 + -0x7fd4) + 0x3550) -\n                             (uint)(uVar20 != uVar6));\n          *(undefined4 *)(puVar51 + -0xf8) =\n               *(undefined4 *)((uVar6 - 8) * 4 + *(int *)(iVar5 + -0x7fd4) + 0x355c);\n          *(mpz_ptr *)(puVar51 + -0xf4) = p_Var41;\n          p_Var34 = p_Var33;\n          p_Var23 = p_Var33;\n          p_Var25 = k_00;\n          (*pcVar55)();\n          pcVar48 = *(code **)(puVar51 + -0xf0);\n          if (*(int *)((int)p_Var33 + (int)k_00 * 4 + -4) == 0) {\n            piVar37 = &p_Var33->_mp_alloc + (int)k_00;\n            do {\n              piVar19 = piVar37 + -2;\n              k_00 = (mpz_ptr)((int)&k_00[-1]._mp_d + 3);\n              piVar37 = piVar37 + -1;\n            } while (*piVar19 == 0);\n          }\n          r_00->_mp_size = (int)k_00;\n          puVar53 = puVar54;\n        }\n        else if ((k_00 < (mpz_ptr)0x3e8) || (k_00 <= (mpz_ptr)((uint)p_Var22 >> 4))) {\n          mpz_bdiv_bin_uiui(r_00,(ulong)p_Var22,(ulong)k_00);\n          pcVar48 = *(code **)(puVar51 + -0xf0);\n          puVar53 = puVar50 + -0x90;\n        }\n        else {\n          mpz_goetgheluck_bin_uiui(r_00,(ulong)p_Var22,(ulong)k_00);\n          pcVar48 = *(code **)(puVar51 + -0xf0);\n          puVar53 = puVar50 + -0x90;\n        }\n      }\n      if (*(int *)(puVar51 + -0x84) == *piVar35) {\n        return;\n      }\n      pcVar55 = *(code **)(pcVar48 + -0x7b70);\n      uVar9 = 0x22b64;\n      (*pcVar55)();\n      pcVar48 = pcVar55 + 0x824d0;\n      puVar52 = puVar51 + -0x160;\n      *(mpz_ptr *)(puVar51 + -0x118) = r_00;\n      *(mpz_ptr *)(puVar51 + -0x124) = k_00;\n      piVar37 = *(int **)(pcVar55 + 0x7a9d0);\n      uVar20 = p_Var25->_mp_size;\n      *(undefined1 **)(puVar51 + -0x110) = puVar53;\n      *(mpz_ptr *)(puVar51 + -0x114) = p_Var39;\n      *(int **)(puVar51 + -0x11c) = piVar35;\n      *(mpz_ptr *)(puVar51 + -0x120) = p_Var33;\n      *(undefined4 *)(puVar51 + -0x10c) = uVar9;\n      *(code **)(puVar51 + -0x150) = pcVar48;\n      *(undefined4 *)(puVar51 + -0x13c) = 0;\n      p_Var39 = (mpz_ptr)p_Var23->_mp_size;\n      *(int *)(puVar51 + -300) = *piVar37;\n      if ((int)uVar20 < 0) {\n        uVar40 = uVar20 * -4;\n        *(uint *)(puVar51 + -0x138) = -uVar20;\n        if (0x7f00 < uVar40) {\n          pcVar55 = *(code **)(pcVar55 + 0x7a780);\n          goto LAB_00022c88;\n        }\nLAB_00022be4:\n        iVar5 = -(uVar40 + 7 & 0xfffffff8);\n        puVar52 = puVar51 + iVar5 + -0x160;\n        puVar13 = puVar51 + iVar5 + -0x150;\n      }\n      else {\n        uVar40 = uVar20 * 4;\n        *(uint *)(puVar51 + -0x138) = uVar20;\n        pcVar55 = *(code **)(pcVar55 + 0x7a780);\n        if (uVar40 < 0x7f01) goto LAB_00022be4;\nLAB_00022c88:\n        *(mpz_ptr *)(puVar51 + -0x144) = p_Var25;\n        puVar13 = (undefined1 *)(*pcVar55)(puVar51 + -0x13c,uVar40);\n        pcVar48 = *(code **)(puVar51 + -0x150);\n        p_Var25 = *(mpz_ptr *)(puVar51 + -0x144);\n      }\n      pcVar55 = *(code **)(pcVar48 + -0x7a68);\n      p_Var33 = (mpz_ptr)(puVar51 + -0x138);\n      *(undefined1 **)(puVar51 + -0x130) = puVar13;\n      p_Var22 = p_Var23;\n      (*pcVar55)(p_Var34,p_Var33,p_Var23,p_Var25);\n      iVar5 = *(int *)(puVar51 + -0x150);\n      if (((int)((uint)p_Var39 ^ uVar20) < 0) || (*(int *)(puVar51 + -0x134) == 0)) {\n        piVar35 = *(int **)(puVar51 + -0x13c);\n        pcVar55 = *(code **)(iVar5 + -0x7a28);\n        if (piVar35 != (int *)0x0) goto LAB_00022cc0;\n      }\n      else {\n        p_Var22 = (mpz_ptr)&DAT_00000001;\n        p_Var33 = p_Var34;\n        (**(code **)(iVar5 + -0x7c9c))(p_Var34);\n        piVar35 = *(int **)(puVar51 + -0x13c);\n        iVar5 = *(int *)(puVar51 + -0x150);\n        if (piVar35 != (int *)0x0) {\n          pcVar55 = *(code **)(iVar5 + -0x7a28);\nLAB_00022cc0:\n          (*pcVar55)();\n          iVar5 = *(int *)(puVar51 + -0x150);\n        }\n      }\n      if (*(int *)(puVar51 + -300) == *piVar37) {\n        return;\n      }\n      pcVar55 = *(code **)(iVar5 + -0x7b70);\n      uVar9 = 0x22cdc;\n      (*pcVar55)();\n      pcVar48 = pcVar55 + 0x82360;\n      *(code **)(puVar52 + -0x28) = pcVar48;\n      *(undefined4 *)(puVar52 + -4) = uVar9;\n      *(mpz_ptr *)(puVar52 + -8) = p_Var41;\n      *(mpz_ptr *)(puVar52 + -0xc) = p_Var23;\n      *(int **)(puVar52 + -0x10) = piVar37;\n      *(mpz_ptr *)(puVar52 + -0x14) = p_Var34;\n      *(mpz_ptr *)(puVar52 + -0x18) = p_Var39;\n      *(uint *)(puVar52 + -0x1c) = (uint)p_Var39 ^ uVar20;\n      if (p_Var22 == (mpz_ptr)0x0) {\n        pcVar55 = *(code **)(pcVar55 + 0x7a900);\n        (*pcVar55)();\nLAB_00022e2c:\n        piVar35 = (int *)(*pcVar55)(piVar37,p_Var34);\n        pcVar48 = *(code **)(puVar52 + -0x28);\n      }\n      else {\n        p_Var39 = (mpz_ptr)p_Var33->_mp_size;\n        if (p_Var39 == (mpz_ptr)0x0) {\n          piVar35[1] = 0;\n          return;\n        }\n        p_Var34 = p_Var39;\n        if ((int)p_Var39 < 0) {\n          p_Var34 = (mpz_ptr)-(int)p_Var39;\n        }\n        pcVar55 = *(code **)(pcVar55 + 0x7a8e0);\n        piVar37 = piVar35;\n        p_Var23 = p_Var22;\n        p_Var41 = p_Var33;\n        if (*piVar35 < (int)p_Var34) goto LAB_00022e2c;\n        piVar35 = (int *)piVar35[2];\n      }\n      pcVar55 = *(code **)(pcVar48 + -0x7d98);\n      pmVar26 = p_Var41->_mp_d;\n      *(mpz_ptr *)(puVar52 + -0x30) = p_Var23;\n      iVar5 = (*pcVar55)(piVar35,0,pmVar26,p_Var34);\n      piVar19 = piVar35 + (int)((int)&p_Var34[-1]._mp_d + 3);\n      if (iVar5 == 0) {\n        uVar20 = (uint)(*piVar19 == 0);\n        if (-1 < (int)p_Var39) {\n          iVar5 = (int)p_Var34 - uVar20;\n          goto LAB_00022d9c;\n        }\n      }\n      else {\n        if (-1 < (int)p_Var39) {\n          do {\n            iVar5 = *piVar35;\n            *piVar35 = iVar5 + 1;\n            piVar35 = piVar35 + 1;\n          } while (iVar5 + 1 == 0);\n          iVar5 = (int)p_Var34 - (uint)(*piVar19 == 0);\n          goto LAB_00022d9c;\n        }\n        uVar20 = (uint)(*piVar19 == 0);\n      }\n      iVar5 = uVar20 - (int)p_Var34;\nLAB_00022d9c:\n      piVar37[1] = iVar5;\n      return;\n    }\n    *(int *)(puVar50 + -0x44) = iVar42;\n    iVar5 = iVar42 + uVar6;\n    uVar20 = (**(code **)(*(int *)(puVar50 + -0x34) + (uVar6 - 1) * 4))(iVar42);\n    puVar47 = *(undefined **)(puVar50 + -0x78);\n    if ((uVar20 & 0xff) == 0) {\n      uVar40 = uVar20 >> 8;\n      iVar28 = 6;\n      if ((uVar40 & 0xff) == 0) {\n        uVar40 = uVar20 >> 0x10;\n        iVar28 = 0xe;\n        if ((uVar40 & 0xff) == 0) {\n          uVar40 = uVar20 >> 0x18;\n          iVar28 = 0x1e;\n          if (uVar40 != 0) {\n            iVar28 = 0x16;\n          }\n        }\n      }\n      uVar40 = (uint)*(byte *)(*(int *)(puVar50 + -0x3c) + (-uVar40 & uVar40)) + iVar28;\n    }\n    else {\n      uVar40 = *(byte *)(*(int *)(puVar50 + -0x3c) + (-uVar20 & uVar20)) - 2;\n    }\n    iVar42 = *(int *)(puVar50 + -0x38);\n    p_Var39->_mp_alloc = uVar20 >> (uVar40 & 0x1f);\n    iVar28 = *(int *)(puVar50 + -0x60);\n    *(uint *)(puVar50 + -0x40) =\n         *(int *)(puVar50 + -0x40) + *(byte *)(iVar42 + (uVar6 - 1)) + uVar40;\n    if ((uint)(iVar28 - iVar5) <= uVar6) {\n      uVar6 = iVar28 - iVar5;\n    }\n    iVar42 = iVar5;\n    if (uVar6 != 0) goto LAB_00022234;\nLAB_00022534:\n    p_Var34 = (mpz_ptr)&DAT_00000001;\n    *(mpz_ptr *)(puVar50 + -0x4c) = p_Var39;\n  }" { (expression_statement "iVar45 = iVar42 - *(int *)(puVar50 + -0x44);" (assignment_expression "iVar45 = iVar42 - *(int *)(puVar50 + -0x44)" identifier = (binary_expression "iVar42 - *(int *)(puVar50 + -0x44)" identifier - (pointer_expression "*(int *)(puVar50 + -0x44)" * (cast_expression "(int *)(puVar50 + -0x44)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar50 + -0x44)" ( (binary_expression "puVar50 + -0x44" identifier + number_literal) )))))) ;) (expression_statement "iVar28 = *(int *)(puVar50 + -0x5c);" (assignment_expression "iVar28 = *(int *)(puVar50 + -0x5c)" identifier = (pointer_expression "*(int *)(puVar50 + -0x5c)" * (cast_expression "(int *)(puVar50 + -0x5c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar50 + -0x5c)" ( (binary_expression "puVar50 + -0x5c" identifier + number_literal) ))))) ;) (expression_statement "iVar5 = iVar45;" (assignment_expression "iVar5 = iVar45" identifier = identifier) ;) (if_statement "if (iVar45 != 0) {\n      *(uint *)(puVar50 + -0x44) = uVar6;\n      *(mpz_ptr *)(puVar50 + -0x50) = p_Var34;\n      *(mpz_ptr *)(puVar50 + -0x54) = p_Var39;\n      *(int *)(puVar50 + -0x58) = iVar42;\n      iVar5 = *(int *)(puVar50 + -0x48);\n      iVar42 = *(int *)(puVar50 + -0x68);\n      iVar28 = iVar32;\n      do {\n        iVar36 = iVar45;\n        if (iVar42 <= iVar45) {\n          iVar36 = iVar42;\n        }\n        iVar32 = iVar28 + iVar36;\n        uVar20 = (**(code **)(*(int *)(puVar50 + -0x34) + (iVar36 + -1) * 4))(iVar28);\n        if ((uVar20 & 0xff) == 0) {\n          uVar40 = uVar20 >> 8;\n          iVar28 = 6;\n          if ((uVar40 & 0xff) == 0) {\n            uVar40 = uVar20 >> 0x10;\n            iVar28 = 0xe;\n            if ((uVar40 & 0xff) == 0) {\n              uVar40 = uVar20 >> 0x18;\n              iVar28 = 0x16;\n              if (uVar40 == 0) {\n                iVar28 = 0x1e;\n              }\n            }\n          }\n          uVar40 = (uint)*(byte *)(*(int *)(puVar50 + -0x3c) + (-uVar40 & uVar40)) + iVar28;\n        }\n        else {\n          uVar40 = *(byte *)(*(int *)(puVar50 + -0x3c) + (-uVar20 & uVar20)) - 2;\n        }\n        iVar45 = iVar45 - iVar36;\n        iVar5 = iVar5 + *(byte *)(*(int *)(puVar50 + -0x38) + iVar36 + -1) + uVar40;\n        iVar28 = (**(code **)(*(int *)(puVar50 + -0x78) + -0x7f9c))\n                           (p_Var41,p_Var41,p_Var33,uVar20 >> (uVar40 & 0x1f));\n        puVar47 = *(undefined **)(puVar50 + -0x78);\n        piVar35 = &p_Var41->_mp_alloc + (int)p_Var33;\n        p_Var33 = (mpz_ptr)((int)&p_Var33->_mp_alloc + (uint)(iVar28 != 0));\n        *piVar35 = iVar28;\n        iVar28 = iVar32;\n      } while (iVar45 != 0);\n      uVar6 = *(uint *)(puVar50 + -0x44);\n      p_Var34 = *(mpz_ptr *)(puVar50 + -0x50);\n      p_Var39 = *(mpz_ptr *)(puVar50 + -0x54);\n      iVar42 = *(int *)(puVar50 + -0x58);\n      *(int *)(puVar50 + -0x48) = iVar5;\n      iVar28 = *(int *)(puVar50 + -0x5c);\n    }" if (parenthesized_expression "(iVar45 != 0)" ( (binary_expression "iVar45 != 0" identifier != number_literal) )) (compound_statement "{\n      *(uint *)(puVar50 + -0x44) = uVar6;\n      *(mpz_ptr *)(puVar50 + -0x50) = p_Var34;\n      *(mpz_ptr *)(puVar50 + -0x54) = p_Var39;\n      *(int *)(puVar50 + -0x58) = iVar42;\n      iVar5 = *(int *)(puVar50 + -0x48);\n      iVar42 = *(int *)(puVar50 + -0x68);\n      iVar28 = iVar32;\n      do {\n        iVar36 = iVar45;\n        if (iVar42 <= iVar45) {\n          iVar36 = iVar42;\n        }\n        iVar32 = iVar28 + iVar36;\n        uVar20 = (**(code **)(*(int *)(puVar50 + -0x34) + (iVar36 + -1) * 4))(iVar28);\n        if ((uVar20 & 0xff) == 0) {\n          uVar40 = uVar20 >> 8;\n          iVar28 = 6;\n          if ((uVar40 & 0xff) == 0) {\n            uVar40 = uVar20 >> 0x10;\n            iVar28 = 0xe;\n            if ((uVar40 & 0xff) == 0) {\n              uVar40 = uVar20 >> 0x18;\n              iVar28 = 0x16;\n              if (uVar40 == 0) {\n                iVar28 = 0x1e;\n              }\n            }\n          }\n          uVar40 = (uint)*(byte *)(*(int *)(puVar50 + -0x3c) + (-uVar40 & uVar40)) + iVar28;\n        }\n        else {\n          uVar40 = *(byte *)(*(int *)(puVar50 + -0x3c) + (-uVar20 & uVar20)) - 2;\n        }\n        iVar45 = iVar45 - iVar36;\n        iVar5 = iVar5 + *(byte *)(*(int *)(puVar50 + -0x38) + iVar36 + -1) + uVar40;\n        iVar28 = (**(code **)(*(int *)(puVar50 + -0x78) + -0x7f9c))\n                           (p_Var41,p_Var41,p_Var33,uVar20 >> (uVar40 & 0x1f));\n        puVar47 = *(undefined **)(puVar50 + -0x78);\n        piVar35 = &p_Var41->_mp_alloc + (int)p_Var33;\n        p_Var33 = (mpz_ptr)((int)&p_Var33->_mp_alloc + (uint)(iVar28 != 0));\n        *piVar35 = iVar28;\n        iVar28 = iVar32;\n      } while (iVar45 != 0);\n      uVar6 = *(uint *)(puVar50 + -0x44);\n      p_Var34 = *(mpz_ptr *)(puVar50 + -0x50);\n      p_Var39 = *(mpz_ptr *)(puVar50 + -0x54);\n      iVar42 = *(int *)(puVar50 + -0x58);\n      *(int *)(puVar50 + -0x48) = iVar5;\n      iVar28 = *(int *)(puVar50 + -0x5c);\n    }" { (expression_statement "*(uint *)(puVar50 + -0x44) = uVar6;" (assignment_expression "*(uint *)(puVar50 + -0x44) = uVar6" (pointer_expression "*(uint *)(puVar50 + -0x44)" * (cast_expression "(uint *)(puVar50 + -0x44)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar50 + -0x44)" ( (binary_expression "puVar50 + -0x44" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(mpz_ptr *)(puVar50 + -0x50) = p_Var34;" (assignment_expression "*(mpz_ptr *)(puVar50 + -0x50) = p_Var34" (pointer_expression "*(mpz_ptr *)(puVar50 + -0x50)" * (cast_expression "(mpz_ptr *)(puVar50 + -0x50)" ( (type_descriptor "mpz_ptr *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar50 + -0x50)" ( (binary_expression "puVar50 + -0x50" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(mpz_ptr *)(puVar50 + -0x54) = p_Var39;" (assignment_expression "*(mpz_ptr *)(puVar50 + -0x54) = p_Var39" (pointer_expression "*(mpz_ptr *)(puVar50 + -0x54)" * (cast_expression "(mpz_ptr *)(puVar50 + -0x54)" ( (type_descriptor "mpz_ptr *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar50 + -0x54)" ( (binary_expression "puVar50 + -0x54" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(puVar50 + -0x58) = iVar42;" (assignment_expression "*(int *)(puVar50 + -0x58) = iVar42" (pointer_expression "*(int *)(puVar50 + -0x58)" * (cast_expression "(int *)(puVar50 + -0x58)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar50 + -0x58)" ( (binary_expression "puVar50 + -0x58" identifier + number_literal) )))) = identifier) ;) (expression_statement "iVar5 = *(int *)(puVar50 + -0x48);" (assignment_expression "iVar5 = *(int *)(puVar50 + -0x48)" identifier = (pointer_expression "*(int *)(puVar50 + -0x48)" * (cast_expression "(int *)(puVar50 + -0x48)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar50 + -0x48)" ( (binary_expression "puVar50 + -0x48" identifier + number_literal) ))))) ;) (expression_statement "iVar42 = *(int *)(puVar50 + -0x68);" (assignment_expression "iVar42 = *(int *)(puVar50 + -0x68)" identifier = (pointer_expression "*(int *)(puVar50 + -0x68)" * (cast_expression "(int *)(puVar50 + -0x68)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar50 + -0x68)" ( (binary_expression "puVar50 + -0x68" identifier + number_literal) ))))) ;) (expression_statement "iVar28 = iVar32;" (assignment_expression "iVar28 = iVar32" identifier = identifier) ;) (do_statement "do {\n        iVar36 = iVar45;\n        if (iVar42 <= iVar45) {\n          iVar36 = iVar42;\n        }\n        iVar32 = iVar28 + iVar36;\n        uVar20 = (**(code **)(*(int *)(puVar50 + -0x34) + (iVar36 + -1) * 4))(iVar28);\n        if ((uVar20 & 0xff) == 0) {\n          uVar40 = uVar20 >> 8;\n          iVar28 = 6;\n          if ((uVar40 & 0xff) == 0) {\n            uVar40 = uVar20 >> 0x10;\n            iVar28 = 0xe;\n            if ((uVar40 & 0xff) == 0) {\n              uVar40 = uVar20 >> 0x18;\n              iVar28 = 0x16;\n              if (uVar40 == 0) {\n                iVar28 = 0x1e;\n              }\n            }\n          }\n          uVar40 = (uint)*(byte *)(*(int *)(puVar50 + -0x3c) + (-uVar40 & uVar40)) + iVar28;\n        }\n        else {\n          uVar40 = *(byte *)(*(int *)(puVar50 + -0x3c) + (-uVar20 & uVar20)) - 2;\n        }\n        iVar45 = iVar45 - iVar36;\n        iVar5 = iVar5 + *(byte *)(*(int *)(puVar50 + -0x38) + iVar36 + -1) + uVar40;\n        iVar28 = (**(code **)(*(int *)(puVar50 + -0x78) + -0x7f9c))\n                           (p_Var41,p_Var41,p_Var33,uVar20 >> (uVar40 & 0x1f));\n        puVar47 = *(undefined **)(puVar50 + -0x78);\n        piVar35 = &p_Var41->_mp_alloc + (int)p_Var33;\n        p_Var33 = (mpz_ptr)((int)&p_Var33->_mp_alloc + (uint)(iVar28 != 0));\n        *piVar35 = iVar28;\n        iVar28 = iVar32;\n      } while (iVar45 != 0);" do (compound_statement "{\n        iVar36 = iVar45;\n        if (iVar42 <= iVar45) {\n          iVar36 = iVar42;\n        }\n        iVar32 = iVar28 + iVar36;\n        uVar20 = (**(code **)(*(int *)(puVar50 + -0x34) + (iVar36 + -1) * 4))(iVar28);\n        if ((uVar20 & 0xff) == 0) {\n          uVar40 = uVar20 >> 8;\n          iVar28 = 6;\n          if ((uVar40 & 0xff) == 0) {\n            uVar40 = uVar20 >> 0x10;\n            iVar28 = 0xe;\n            if ((uVar40 & 0xff) == 0) {\n              uVar40 = uVar20 >> 0x18;\n              iVar28 = 0x16;\n              if (uVar40 == 0) {\n                iVar28 = 0x1e;\n              }\n            }\n          }\n          uVar40 = (uint)*(byte *)(*(int *)(puVar50 + -0x3c) + (-uVar40 & uVar40)) + iVar28;\n        }\n        else {\n          uVar40 = *(byte *)(*(int *)(puVar50 + -0x3c) + (-uVar20 & uVar20)) - 2;\n        }\n        iVar45 = iVar45 - iVar36;\n        iVar5 = iVar5 + *(byte *)(*(int *)(puVar50 + -0x38) + iVar36 + -1) + uVar40;\n        iVar28 = (**(code **)(*(int *)(puVar50 + -0x78) + -0x7f9c))\n                           (p_Var41,p_Var41,p_Var33,uVar20 >> (uVar40 & 0x1f));\n        puVar47 = *(undefined **)(puVar50 + -0x78);\n        piVar35 = &p_Var41->_mp_alloc + (int)p_Var33;\n        p_Var33 = (mpz_ptr)((int)&p_Var33->_mp_alloc + (uint)(iVar28 != 0));\n        *piVar35 = iVar28;\n        iVar28 = iVar32;\n      }" { (expression_statement "iVar36 = iVar45;" (assignment_expression "iVar36 = iVar45" identifier = identifier) ;) (if_statement "if (iVar42 <= iVar45) {\n          iVar36 = iVar42;\n        }" if (parenthesized_expression "(iVar42 <= iVar45)" ( (binary_expression "iVar42 <= iVar45" identifier <= identifier) )) (compound_statement "{\n          iVar36 = iVar42;\n        }" { (expression_statement "iVar36 = iVar42;" (assignment_expression "iVar36 = iVar42" identifier = identifier) ;) })) (expression_statement "iVar32 = iVar28 + iVar36;" (assignment_expression "iVar32 = iVar28 + iVar36" identifier = (binary_expression "iVar28 + iVar36" identifier + identifier)) ;) (expression_statement "uVar20 = (**(code **)(*(int *)(puVar50 + -0x34) + (iVar36 + -1) * 4))(iVar28);" (assignment_expression "uVar20 = (**(code **)(*(int *)(puVar50 + -0x34) + (iVar36 + -1) * 4))(iVar28)" identifier = (call_expression "(**(code **)(*(int *)(puVar50 + -0x34) + (iVar36 + -1) * 4))(iVar28)" (parenthesized_expression "(**(code **)(*(int *)(puVar50 + -0x34) + (iVar36 + -1) * 4))" ( (pointer_expression "**(code **)(*(int *)(puVar50 + -0x34) + (iVar36 + -1) * 4)" * (pointer_expression "*(code **)(*(int *)(puVar50 + -0x34) + (iVar36 + -1) * 4)" * (cast_expression "(code **)(*(int *)(puVar50 + -0x34) + (iVar36 + -1) * 4)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)(puVar50 + -0x34) + (iVar36 + -1) * 4)" ( (binary_expression "*(int *)(puVar50 + -0x34) + (iVar36 + -1) * 4" (pointer_expression "*(int *)(puVar50 + -0x34)" * (cast_expression "(int *)(puVar50 + -0x34)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar50 + -0x34)" ( (binary_expression "puVar50 + -0x34" identifier + number_literal) )))) + (binary_expression "(iVar36 + -1) * 4" (parenthesized_expression "(iVar36 + -1)" ( (binary_expression "iVar36 + -1" identifier + number_literal) )) * number_literal)) ))))) )) (argument_list "(iVar28)" ( identifier )))) ;) (if_statement "if ((uVar20 & 0xff) == 0) {\n          uVar40 = uVar20 >> 8;\n          iVar28 = 6;\n          if ((uVar40 & 0xff) == 0) {\n            uVar40 = uVar20 >> 0x10;\n            iVar28 = 0xe;\n            if ((uVar40 & 0xff) == 0) {\n              uVar40 = uVar20 >> 0x18;\n              iVar28 = 0x16;\n              if (uVar40 == 0) {\n                iVar28 = 0x1e;\n              }\n            }\n          }\n          uVar40 = (uint)*(byte *)(*(int *)(puVar50 + -0x3c) + (-uVar40 & uVar40)) + iVar28;\n        }\n        else {\n          uVar40 = *(byte *)(*(int *)(puVar50 + -0x3c) + (-uVar20 & uVar20)) - 2;\n        }" if (parenthesized_expression "((uVar20 & 0xff) == 0)" ( (binary_expression "(uVar20 & 0xff) == 0" (parenthesized_expression "(uVar20 & 0xff)" ( (binary_expression "uVar20 & 0xff" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n          uVar40 = uVar20 >> 8;\n          iVar28 = 6;\n          if ((uVar40 & 0xff) == 0) {\n            uVar40 = uVar20 >> 0x10;\n            iVar28 = 0xe;\n            if ((uVar40 & 0xff) == 0) {\n              uVar40 = uVar20 >> 0x18;\n              iVar28 = 0x16;\n              if (uVar40 == 0) {\n                iVar28 = 0x1e;\n              }\n            }\n          }\n          uVar40 = (uint)*(byte *)(*(int *)(puVar50 + -0x3c) + (-uVar40 & uVar40)) + iVar28;\n        }" { (expression_statement "uVar40 = uVar20 >> 8;" (assignment_expression "uVar40 = uVar20 >> 8" identifier = (binary_expression "uVar20 >> 8" identifier >> number_literal)) ;) (expression_statement "iVar28 = 6;" (assignment_expression "iVar28 = 6" identifier = number_literal) ;) (if_statement "if ((uVar40 & 0xff) == 0) {\n            uVar40 = uVar20 >> 0x10;\n            iVar28 = 0xe;\n            if ((uVar40 & 0xff) == 0) {\n              uVar40 = uVar20 >> 0x18;\n              iVar28 = 0x16;\n              if (uVar40 == 0) {\n                iVar28 = 0x1e;\n              }\n            }\n          }" if (parenthesized_expression "((uVar40 & 0xff) == 0)" ( (binary_expression "(uVar40 & 0xff) == 0" (parenthesized_expression "(uVar40 & 0xff)" ( (binary_expression "uVar40 & 0xff" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n            uVar40 = uVar20 >> 0x10;\n            iVar28 = 0xe;\n            if ((uVar40 & 0xff) == 0) {\n              uVar40 = uVar20 >> 0x18;\n              iVar28 = 0x16;\n              if (uVar40 == 0) {\n                iVar28 = 0x1e;\n              }\n            }\n          }" { (expression_statement "uVar40 = uVar20 >> 0x10;" (assignment_expression "uVar40 = uVar20 >> 0x10" identifier = (binary_expression "uVar20 >> 0x10" identifier >> number_literal)) ;) (expression_statement "iVar28 = 0xe;" (assignment_expression "iVar28 = 0xe" identifier = number_literal) ;) (if_statement "if ((uVar40 & 0xff) == 0) {\n              uVar40 = uVar20 >> 0x18;\n              iVar28 = 0x16;\n              if (uVar40 == 0) {\n                iVar28 = 0x1e;\n              }\n            }" if (parenthesized_expression "((uVar40 & 0xff) == 0)" ( (binary_expression "(uVar40 & 0xff) == 0" (parenthesized_expression "(uVar40 & 0xff)" ( (binary_expression "uVar40 & 0xff" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n              uVar40 = uVar20 >> 0x18;\n              iVar28 = 0x16;\n              if (uVar40 == 0) {\n                iVar28 = 0x1e;\n              }\n            }" { (expression_statement "uVar40 = uVar20 >> 0x18;" (assignment_expression "uVar40 = uVar20 >> 0x18" identifier = (binary_expression "uVar20 >> 0x18" identifier >> number_literal)) ;) (expression_statement "iVar28 = 0x16;" (assignment_expression "iVar28 = 0x16" identifier = number_literal) ;) (if_statement "if (uVar40 == 0) {\n                iVar28 = 0x1e;\n              }" if (parenthesized_expression "(uVar40 == 0)" ( (binary_expression "uVar40 == 0" identifier == number_literal) )) (compound_statement "{\n                iVar28 = 0x1e;\n              }" { (expression_statement "iVar28 = 0x1e;" (assignment_expression "iVar28 = 0x1e" identifier = number_literal) ;) })) })) })) (expression_statement "uVar40 = (uint)*(byte *)(*(int *)(puVar50 + -0x3c) + (-uVar40 & uVar40)) + iVar28;" (assignment_expression "uVar40 = (uint)*(byte *)(*(int *)(puVar50 + -0x3c) + (-uVar40 & uVar40)) + iVar28" identifier = (binary_expression "(uint)*(byte *)(*(int *)(puVar50 + -0x3c) + (-uVar40 & uVar40)) + iVar28" (binary_expression "(uint)*(byte *)(*(int *)(puVar50 + -0x3c) + (-uVar40 & uVar40))" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)(*(int *)(puVar50 + -0x3c) + (-uVar40 & uVar40))" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(puVar50 + -0x3c) + (-uVar40 & uVar40))" ( (binary_expression "*(int *)(puVar50 + -0x3c) + (-uVar40 & uVar40)" (pointer_expression "*(int *)(puVar50 + -0x3c)" * (cast_expression "(int *)(puVar50 + -0x3c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar50 + -0x3c)" ( (binary_expression "puVar50 + -0x3c" identifier + number_literal) )))) + (parenthesized_expression "(-uVar40 & uVar40)" ( (binary_expression "-uVar40 & uVar40" (unary_expression "-uVar40" - identifier) & identifier) ))) )))) + identifier)) ;) }) (else_clause "else {\n          uVar40 = *(byte *)(*(int *)(puVar50 + -0x3c) + (-uVar20 & uVar20)) - 2;\n        }" else (compound_statement "{\n          uVar40 = *(byte *)(*(int *)(puVar50 + -0x3c) + (-uVar20 & uVar20)) - 2;\n        }" { (expression_statement "uVar40 = *(byte *)(*(int *)(puVar50 + -0x3c) + (-uVar20 & uVar20)) - 2;" (assignment_expression "uVar40 = *(byte *)(*(int *)(puVar50 + -0x3c) + (-uVar20 & uVar20)) - 2" identifier = (binary_expression "*(byte *)(*(int *)(puVar50 + -0x3c) + (-uVar20 & uVar20)) - 2" (pointer_expression "*(byte *)(*(int *)(puVar50 + -0x3c) + (-uVar20 & uVar20))" * (cast_expression "(byte *)(*(int *)(puVar50 + -0x3c) + (-uVar20 & uVar20))" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(puVar50 + -0x3c) + (-uVar20 & uVar20))" ( (binary_expression "*(int *)(puVar50 + -0x3c) + (-uVar20 & uVar20)" (pointer_expression "*(int *)(puVar50 + -0x3c)" * (cast_expression "(int *)(puVar50 + -0x3c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar50 + -0x3c)" ( (binary_expression "puVar50 + -0x3c" identifier + number_literal) )))) + (parenthesized_expression "(-uVar20 & uVar20)" ( (binary_expression "-uVar20 & uVar20" (unary_expression "-uVar20" - identifier) & identifier) ))) )))) - number_literal)) ;) }))) (expression_statement "iVar45 = iVar45 - iVar36;" (assignment_expression "iVar45 = iVar45 - iVar36" identifier = (binary_expression "iVar45 - iVar36" identifier - identifier)) ;) (expression_statement "iVar5 = iVar5 + *(byte *)(*(int *)(puVar50 + -0x38) + iVar36 + -1) + uVar40;" (assignment_expression "iVar5 = iVar5 + *(byte *)(*(int *)(puVar50 + -0x38) + iVar36 + -1) + uVar40" identifier = (binary_expression "iVar5 + *(byte *)(*(int *)(puVar50 + -0x38) + iVar36 + -1) + uVar40" (binary_expression "iVar5 + *(byte *)(*(int *)(puVar50 + -0x38) + iVar36 + -1)" identifier + (pointer_expression "*(byte *)(*(int *)(puVar50 + -0x38) + iVar36 + -1)" * (cast_expression "(byte *)(*(int *)(puVar50 + -0x38) + iVar36 + -1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(puVar50 + -0x38) + iVar36 + -1)" ( (binary_expression "*(int *)(puVar50 + -0x38) + iVar36 + -1" (binary_expression "*(int *)(puVar50 + -0x38) + iVar36" (pointer_expression "*(int *)(puVar50 + -0x38)" * (cast_expression "(int *)(puVar50 + -0x38)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar50 + -0x38)" ( (binary_expression "puVar50 + -0x38" identifier + number_literal) )))) + identifier) + number_literal) ))))) + identifier)) ;) (expression_statement "iVar28 = (**(code **)(*(int *)(puVar50 + -0x78) + -0x7f9c))\n                           (p_Var41,p_Var41,p_Var33,uVar20 >> (uVar40 & 0x1f));" (assignment_expression "iVar28 = (**(code **)(*(int *)(puVar50 + -0x78) + -0x7f9c))\n                           (p_Var41,p_Var41,p_Var33,uVar20 >> (uVar40 & 0x1f))" identifier = (call_expression "(**(code **)(*(int *)(puVar50 + -0x78) + -0x7f9c))\n                           (p_Var41,p_Var41,p_Var33,uVar20 >> (uVar40 & 0x1f))" (parenthesized_expression "(**(code **)(*(int *)(puVar50 + -0x78) + -0x7f9c))" ( (pointer_expression "**(code **)(*(int *)(puVar50 + -0x78) + -0x7f9c)" * (pointer_expression "*(code **)(*(int *)(puVar50 + -0x78) + -0x7f9c)" * (cast_expression "(code **)(*(int *)(puVar50 + -0x78) + -0x7f9c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)(puVar50 + -0x78) + -0x7f9c)" ( (binary_expression "*(int *)(puVar50 + -0x78) + -0x7f9c" (pointer_expression "*(int *)(puVar50 + -0x78)" * (cast_expression "(int *)(puVar50 + -0x78)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar50 + -0x78)" ( (binary_expression "puVar50 + -0x78" identifier + number_literal) )))) + number_literal) ))))) )) (argument_list "(p_Var41,p_Var41,p_Var33,uVar20 >> (uVar40 & 0x1f))" ( identifier , identifier , identifier , (binary_expression "uVar20 >> (uVar40 & 0x1f)" identifier >> (parenthesized_expression "(uVar40 & 0x1f)" ( (binary_expression "uVar40 & 0x1f" identifier & number_literal) ))) )))) ;) (expression_statement "puVar47 = *(undefined **)(puVar50 + -0x78);" (assignment_expression "puVar47 = *(undefined **)(puVar50 + -0x78)" identifier = (pointer_expression "*(undefined **)(puVar50 + -0x78)" * (cast_expression "(undefined **)(puVar50 + -0x78)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar50 + -0x78)" ( (binary_expression "puVar50 + -0x78" identifier + number_literal) ))))) ;) (expression_statement "piVar35 = &p_Var41->_mp_alloc + (int)p_Var33;" (assignment_expression "piVar35 = &p_Var41->_mp_alloc + (int)p_Var33" identifier = (binary_expression "&p_Var41->_mp_alloc + (int)p_Var33" (pointer_expression "&p_Var41->_mp_alloc" & (field_expression "p_Var41->_mp_alloc" identifier -> field_identifier)) + (cast_expression "(int)p_Var33" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "p_Var33 = (mpz_ptr)((int)&p_Var33->_mp_alloc + (uint)(iVar28 != 0));" (assignment_expression "p_Var33 = (mpz_ptr)((int)&p_Var33->_mp_alloc + (uint)(iVar28 != 0))" identifier = (call_expression "(mpz_ptr)((int)&p_Var33->_mp_alloc + (uint)(iVar28 != 0))" (parenthesized_expression "(mpz_ptr)" ( identifier )) (argument_list "((int)&p_Var33->_mp_alloc + (uint)(iVar28 != 0))" ( (binary_expression "(int)&p_Var33->_mp_alloc + (uint)(iVar28 != 0)" (cast_expression "(int)&p_Var33->_mp_alloc" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&p_Var33->_mp_alloc" & (field_expression "p_Var33->_mp_alloc" identifier -> field_identifier))) + (call_expression "(uint)(iVar28 != 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(iVar28 != 0)" ( (binary_expression "iVar28 != 0" identifier != number_literal) )))) )))) ;) (expression_statement "*piVar35 = iVar28;" (assignment_expression "*piVar35 = iVar28" (pointer_expression "*piVar35" * identifier) = identifier) ;) (expression_statement "iVar28 = iVar32;" (assignment_expression "iVar28 = iVar32" identifier = identifier) ;) }) while (parenthesized_expression "(iVar45 != 0)" ( (binary_expression "iVar45 != 0" identifier != number_literal) )) ;) (expression_statement "uVar6 = *(uint *)(puVar50 + -0x44);" (assignment_expression "uVar6 = *(uint *)(puVar50 + -0x44)" identifier = (pointer_expression "*(uint *)(puVar50 + -0x44)" * (cast_expression "(uint *)(puVar50 + -0x44)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar50 + -0x44)" ( (binary_expression "puVar50 + -0x44" identifier + number_literal) ))))) ;) (expression_statement "p_Var34 = *(mpz_ptr *)(puVar50 + -0x50);" (assignment_expression "p_Var34 = *(mpz_ptr *)(puVar50 + -0x50)" identifier = (pointer_expression "*(mpz_ptr *)(puVar50 + -0x50)" * (cast_expression "(mpz_ptr *)(puVar50 + -0x50)" ( (type_descriptor "mpz_ptr *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar50 + -0x50)" ( (binary_expression "puVar50 + -0x50" identifier + number_literal) ))))) ;) (expression_statement "p_Var39 = *(mpz_ptr *)(puVar50 + -0x54);" (assignment_expression "p_Var39 = *(mpz_ptr *)(puVar50 + -0x54)" identifier = (pointer_expression "*(mpz_ptr *)(puVar50 + -0x54)" * (cast_expression "(mpz_ptr *)(puVar50 + -0x54)" ( (type_descriptor "mpz_ptr *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar50 + -0x54)" ( (binary_expression "puVar50 + -0x54" identifier + number_literal) ))))) ;) (expression_statement "iVar42 = *(int *)(puVar50 + -0x58);" (assignment_expression "iVar42 = *(int *)(puVar50 + -0x58)" identifier = (pointer_expression "*(int *)(puVar50 + -0x58)" * (cast_expression "(int *)(puVar50 + -0x58)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar50 + -0x58)" ( (binary_expression "puVar50 + -0x58" identifier + number_literal) ))))) ;) (expression_statement "*(int *)(puVar50 + -0x48) = iVar5;" (assignment_expression "*(int *)(puVar50 + -0x48) = iVar5" (pointer_expression "*(int *)(puVar50 + -0x48)" * (cast_expression "(int *)(puVar50 + -0x48)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar50 + -0x48)" ( (binary_expression "puVar50 + -0x48" identifier + number_literal) )))) = identifier) ;) (expression_statement "iVar28 = *(int *)(puVar50 + -0x5c);" (assignment_expression "iVar28 = *(int *)(puVar50 + -0x5c)" identifier = (pointer_expression "*(int *)(puVar50 + -0x5c)" * (cast_expression "(int *)(puVar50 + -0x5c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar50 + -0x5c)" ( (binary_expression "puVar50 + -0x5c" identifier + number_literal) ))))) ;) })) (expression_statement "iVar45 = p_Var39->_mp_alloc;" (assignment_expression "iVar45 = p_Var39->_mp_alloc" identifier = (field_expression "p_Var39->_mp_alloc" identifier -> field_identifier)) ;) (expression_statement "pcVar55 = *(code **)(puVar47 + -0x7bc0);" (assignment_expression "pcVar55 = *(code **)(puVar47 + -0x7bc0)" identifier = (pointer_expression "*(code **)(puVar47 + -0x7bc0)" * (cast_expression "(code **)(puVar47 + -0x7bc0)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar47 + -0x7bc0)" ( (binary_expression "puVar47 + -0x7bc0" identifier + number_literal) ))))) ;) (expression_statement "uVar20 = (uint)*(byte *)(*(int *)(puVar50 + -100) + ((uint)(iVar45 << 0x18) >> 0x19));" (assignment_expression "uVar20 = (uint)*(byte *)(*(int *)(puVar50 + -100) + ((uint)(iVar45 << 0x18) >> 0x19))" identifier = (binary_expression "(uint)*(byte *)(*(int *)(puVar50 + -100) + ((uint)(iVar45 << 0x18) >> 0x19))" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)(*(int *)(puVar50 + -100) + ((uint)(iVar45 << 0x18) >> 0x19))" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(puVar50 + -100) + ((uint)(iVar45 << 0x18) >> 0x19))" ( (binary_expression "*(int *)(puVar50 + -100) + ((uint)(iVar45 << 0x18) >> 0x19)" (pointer_expression "*(int *)(puVar50 + -100)" * (cast_expression "(int *)(puVar50 + -100)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar50 + -100)" ( (binary_expression "puVar50 + -100" identifier + number_literal) )))) + (parenthesized_expression "((uint)(iVar45 << 0x18) >> 0x19)" ( (binary_expression "(uint)(iVar45 << 0x18) >> 0x19" (call_expression "(uint)(iVar45 << 0x18)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(iVar45 << 0x18)" ( (binary_expression "iVar45 << 0x18" identifier << number_literal) ))) >> number_literal) ))) ))))) ;) (expression_statement "p_Var33 = (mpz_ptr)((int)p_Var33 +\n                       (((uint)(&p_Var41->_mp_alloc)[(int)((int)&p_Var33->_mp_alloc + iVar28)] <\n                         **(uint **)(puVar50 + -0x4c) ^ 1) - (int)p_Var34));" (assignment_expression "p_Var33 = (mpz_ptr)((int)p_Var33 +\n                       (((uint)(&p_Var41->_mp_alloc)[(int)((int)&p_Var33->_mp_alloc + iVar28)] <\n                         **(uint **)(puVar50 + -0x4c) ^ 1) - (int)p_Var34))" identifier = (call_expression "(mpz_ptr)((int)p_Var33 +\n                       (((uint)(&p_Var41->_mp_alloc)[(int)((int)&p_Var33->_mp_alloc + iVar28)] <\n                         **(uint **)(puVar50 + -0x4c) ^ 1) - (int)p_Var34))" (parenthesized_expression "(mpz_ptr)" ( identifier )) (argument_list "((int)p_Var33 +\n                       (((uint)(&p_Var41->_mp_alloc)[(int)((int)&p_Var33->_mp_alloc + iVar28)] <\n                         **(uint **)(puVar50 + -0x4c) ^ 1) - (int)p_Var34))" ( (binary_expression "(int)p_Var33 +\n                       (((uint)(&p_Var41->_mp_alloc)[(int)((int)&p_Var33->_mp_alloc + iVar28)] <\n                         **(uint **)(puVar50 + -0x4c) ^ 1) - (int)p_Var34)" (cast_expression "(int)p_Var33" ( (type_descriptor "int" primitive_type) ) identifier) + (parenthesized_expression "(((uint)(&p_Var41->_mp_alloc)[(int)((int)&p_Var33->_mp_alloc + iVar28)] <\n                         **(uint **)(puVar50 + -0x4c) ^ 1) - (int)p_Var34)" ( (binary_expression "((uint)(&p_Var41->_mp_alloc)[(int)((int)&p_Var33->_mp_alloc + iVar28)] <\n                         **(uint **)(puVar50 + -0x4c) ^ 1) - (int)p_Var34" (parenthesized_expression "((uint)(&p_Var41->_mp_alloc)[(int)((int)&p_Var33->_mp_alloc + iVar28)] <\n                         **(uint **)(puVar50 + -0x4c) ^ 1)" ( (binary_expression "(uint)(&p_Var41->_mp_alloc)[(int)((int)&p_Var33->_mp_alloc + iVar28)] <\n                         **(uint **)(puVar50 + -0x4c) ^ 1" (binary_expression "(uint)(&p_Var41->_mp_alloc)[(int)((int)&p_Var33->_mp_alloc + iVar28)] <\n                         **(uint **)(puVar50 + -0x4c)" (subscript_expression "(uint)(&p_Var41->_mp_alloc)[(int)((int)&p_Var33->_mp_alloc + iVar28)]" (call_expression "(uint)(&p_Var41->_mp_alloc)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(&p_Var41->_mp_alloc)" ( (pointer_expression "&p_Var41->_mp_alloc" & (field_expression "p_Var41->_mp_alloc" identifier -> field_identifier)) ))) [ (cast_expression "(int)((int)&p_Var33->_mp_alloc + iVar28)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((int)&p_Var33->_mp_alloc + iVar28)" ( (binary_expression "(int)&p_Var33->_mp_alloc + iVar28" (cast_expression "(int)&p_Var33->_mp_alloc" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&p_Var33->_mp_alloc" & (field_expression "p_Var33->_mp_alloc" identifier -> field_identifier))) + identifier) ))) ]) < (pointer_expression "**(uint **)(puVar50 + -0x4c)" * (pointer_expression "*(uint **)(puVar50 + -0x4c)" * (cast_expression "(uint **)(puVar50 + -0x4c)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar50 + -0x4c)" ( (binary_expression "puVar50 + -0x4c" identifier + number_literal) )))))) ^ number_literal) )) - (cast_expression "(int)p_Var34" ( (type_descriptor "int" primitive_type) ) identifier)) ))) )))) ;) (expression_statement "iVar28 = uVar20 * 2 - uVar20 * uVar20 * iVar45;" (assignment_expression "iVar28 = uVar20 * 2 - uVar20 * uVar20 * iVar45" identifier = (binary_expression "uVar20 * 2 - uVar20 * uVar20 * iVar45" (binary_expression "uVar20 * 2" identifier * number_literal) - (binary_expression "uVar20 * uVar20 * iVar45" (binary_expression "uVar20 * uVar20" identifier * identifier) * identifier))) ;) (if_statement "if ((int)p_Var33 < (int)p_Var34) {\n      p_Var34 = p_Var33;\n    }" if (parenthesized_expression "((int)p_Var33 < (int)p_Var34)" ( (binary_expression "(int)p_Var33 < (int)p_Var34" (cast_expression "(int)p_Var33" ( (type_descriptor "int" primitive_type) ) identifier) < (cast_expression "(int)p_Var34" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n      p_Var34 = p_Var33;\n    }" { (expression_statement "p_Var34 = p_Var33;" (assignment_expression "p_Var34 = p_Var33" identifier = identifier) ;) })) (expression_statement "*(mpz_ptr *)(puVar51 + -0x48) = p_Var34;" (assignment_expression "*(mpz_ptr *)(puVar51 + -0x48) = p_Var34" (pointer_expression "*(mpz_ptr *)(puVar51 + -0x48)" * (cast_expression "(mpz_ptr *)(puVar51 + -0x48)" ( (type_descriptor "mpz_ptr *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar51 + -0x48)" ( (binary_expression "puVar51 + -0x48" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(puVar51 + -0x44) = iVar28 * iVar28 * iVar45 + iVar28 * -2;" (assignment_expression "*(int *)(puVar51 + -0x44) = iVar28 * iVar28 * iVar45 + iVar28 * -2" (pointer_expression "*(int *)(puVar51 + -0x44)" * (cast_expression "(int *)(puVar51 + -0x44)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar51 + -0x44)" ( (binary_expression "puVar51 + -0x44" identifier + number_literal) )))) = (binary_expression "iVar28 * iVar28 * iVar45 + iVar28 * -2" (binary_expression "iVar28 * iVar28 * iVar45" (binary_expression "iVar28 * iVar28" identifier * identifier) * identifier) + (binary_expression "iVar28 * -2" identifier * number_literal))) ;) (expression_statement "p_Var22 = p_Var41;" (assignment_expression "p_Var22 = p_Var41" identifier = identifier) ;) (expression_statement "p_Var25 = p_Var33;" (assignment_expression "p_Var25 = p_Var33" identifier = identifier) ;) (expression_statement "(*pcVar55)(p_Var41,p_Var41,p_Var33,p_Var39);" (call_expression "(*pcVar55)(p_Var41,p_Var41,p_Var33,p_Var39)" (parenthesized_expression "(*pcVar55)" ( (pointer_expression "*pcVar55" * identifier) )) (argument_list "(p_Var41,p_Var41,p_Var33,p_Var39)" ( identifier , identifier , identifier , identifier ))) ;) (expression_statement "iVar28 = *(int *)(puVar50 + -0x78);" (assignment_expression "iVar28 = *(int *)(puVar50 + -0x78)" identifier = (pointer_expression "*(int *)(puVar50 + -0x78)" * (cast_expression "(int *)(puVar50 + -0x78)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar50 + -0x78)" ( (binary_expression "puVar50 + -0x78" identifier + number_literal) ))))) ;) (if_statement "if (uVar6 == 0) {\n      if (*(int *)(puVar50 + -0x48) == *(int *)(puVar50 + -0x40)) {\n        p_Var33 = (mpz_ptr)((int)p_Var33 -\n                           (uint)(*(int *)((int)p_Var41 + (int)p_Var33 * 4 + -4) == 0));\n        pcVar55 = *(code **)(iVar28 + -0x7a80);\n        if ((int)p_Var33 <= **(int **)(puVar50 + -0x6c)) goto LAB_00022600;\nLAB_00022734:\n        p_Var22 = p_Var33;\n        puVar21 = (undefined4 *)(*pcVar55)(*(undefined4 *)(puVar50 + -0x6c));\n        iVar28 = *(int *)(puVar50 + -0x78);\n      }\n      else {\n        p_Var22 = p_Var41;\n        p_Var25 = p_Var33;\n        iVar45 = (**(code **)(iVar28 + -0x7ad4))(p_Var41);\n        iVar28 = *(int *)(puVar50 + -0x78);\n        puVar13 = (undefined1 *)((int)&p_Var33->_mp_alloc + (uint)(iVar45 != 0));\n        *(int *)((int)p_Var41 + (int)p_Var33 * 4) = iVar45;\n        p_Var33 = (mpz_ptr)(puVar13 + -(uint)(*(int *)((int)p_Var41 + (int)puVar13 * 4 + -4) == 0));\n        pcVar55 = *(code **)(iVar28 + -0x7a80);\n        if (**(int **)(puVar50 + -0x6c) < (int)p_Var33) goto LAB_00022734;\nLAB_00022600:\n        puVar21 = *(undefined4 **)(*(int *)(puVar50 + -0x6c) + 8);\n      }\n      *(mpz_ptr *)(*(int *)(puVar50 + -0x6c) + 4) = p_Var33;\n      if (p_Var33 != (mpz_ptr)0x0) {\n        puVar13 = (undefined1 *)((int)&p_Var33[-1]._mp_d + 3);\n        p_Var22 = (mpz_ptr)p_Var41->_mp_alloc;\n        if (puVar13 != (undefined1 *)0x0) {\n          puVar18 = puVar21;\n          ppmVar43 = (mp_limb_t **)&p_Var41->_mp_size;\n          do {\n            *puVar18 = p_Var22;\n            p_Var41 = (mpz_ptr)(ppmVar43 + 1);\n            puVar13 = puVar13 + -1;\n            p_Var22 = (mpz_ptr)*ppmVar43;\n            puVar18 = puVar18 + 1;\n            ppmVar43 = (mp_limb_t **)p_Var41;\n          } while (puVar13 != (undefined1 *)0x0);\n          p_Var33 = (mpz_ptr)((int)p_Var33 * 4);\n          puVar21 = (undefined4 *)((int)puVar21 + (int)&p_Var33[-1]._mp_d);\n        }\n        *puVar21 = p_Var22;\n      }\n      r_00 = *(mpz_ptr *)(puVar50 + -0x30);\n      if (r_00 != (mpz_ptr)0x0) {\n        (**(code **)(iVar28 + -0x7a28))();\n        iVar28 = *(int *)(puVar50 + -0x78);\n      }\n      if (*(int *)(puVar50 + -0x2c) == **(int **)(puVar50 + -0x70)) {\n        return;\n      }\n      pcVar55 = *(code **)(iVar28 + -0x7b70);\n      pcVar56 = __gmpz_bin_uiui;\n      (*pcVar55)();\n      pcVar48 = pcVar55 + 0x8289c;\n      *(mpz_ptr *)(puVar51 + -0x78) = p_Var34;\n      piVar35 = *(int **)(pcVar55 + 0x7ad9c);\n      *(code **)(puVar51 + -0xf0) = pcVar48;\n      *(int *)(puVar51 + -0x74) = iVar42;\n      *(code **)(puVar51 + -0x5c) = pcVar56;\n      *(undefined1 **)(puVar51 + -0x60) = puVar50 + -0x90;\n      *(int *)(puVar51 + -100) = iVar5;\n      *(int *)(puVar51 + -0x68) = iVar32;\n      *(mpz_ptr *)(puVar51 + -0x6c) = p_Var41;\n      *(mpz_ptr *)(puVar51 + -0x70) = p_Var39;\n      *(mpz_ptr *)(puVar51 + -0x7c) = p_Var33;\n      *(undefined4 *)(puVar51 + -0x80) = 0;\n      *(int *)(puVar51 + -0x84) = *piVar35;\n      p_Var34 = r_00;\n      p_Var23 = p_Var22;\n      if (p_Var22 < p_Var25) {\n        r_00->_mp_size = 0;\n        k_00 = (mpz_ptr)0x0;\n      }\n      else {\n        k_00 = p_Var25;\n        if ((mpz_ptr)((int)p_Var22 - (int)p_Var25) <= p_Var25) {\n          k_00 = (mpz_ptr)((int)p_Var22 - (int)p_Var25);\n        }\n        p_Var25 = k_00;\n        p_Var39 = p_Var22;\n        if (k_00 < (mpz_ptr)0x2) {\n          if (k_00 == (mpz_ptr)0x0) {\n            p_Var39 = (mpz_ptr)&DAT_00000001;\n          }\n          *r_00->_mp_d = (mp_limb_t)p_Var39;\n          r_00->_mp_size = 1;\n          puVar53 = puVar50 + -0x90;\n        }\n        else if (p_Var22 < (mpz_ptr)0x23) {\n          p_Var3 = k_00 + -1;\n          iVar5 = *(int *)(pcVar55 + 0x7aa7c);\n          p_Var23 = (mpz_ptr)r_00->_mp_d;\n          uVar20 = (int)p_Var22 - (int)k_00;\n          p_Var39 = (mpz_ptr)(iVar5 + ((uint)p_Var22 >> 1));\n          k_00 = (mpz_ptr)(iVar5 + ((uint)k_00 >> 1));\n          p_Var25 = (mpz_ptr)(uint)*(byte *)((int)&k_00[-1]._mp_d + 3);\n          p_Var34 = (mpz_ptr)(uint)*(byte *)(iVar5 + (uVar20 >> 1) + -1);\n          p_Var23->_mp_alloc =\n               *(int *)((int)((int)&p_Var3->_mp_d + 2) * 4 + *(int *)(pcVar55 + 0x7a8c8) + 0x35b4) *\n               *(int *)(*(int *)(pcVar55 + 0x7ad64) + (int)p_Var22 * 4) *\n               *(int *)((uVar20 - 2) * 4 + *(int *)(pcVar55 + 0x7a8c8) + 0x35b4) <<\n               (((uint)*(byte *)((int)&p_Var39[-1]._mp_d + 3) - (int)p_Var25) - (int)p_Var34 & 0x1f)\n          ;\n          r_00->_mp_size = 1;\n          puVar53 = puVar50 + -0x90;\n        }\n        else if (k_00 < (mpz_ptr)&DAT_00000011) {\n          mpz_smallk_bin_uiui(r_00,(ulong)p_Var22,(ulong)k_00);\n          pcVar48 = *(code **)(puVar51 + -0xf0);\n          puVar53 = puVar50 + -0x90;\n        }\n        else if (k_00 < (mpz_ptr)&DAT_00000021) {\n          uVar20 = (uint)k_00 >> 1;\n          uVar40 = (int)p_Var22 - uVar20;\n          mpz_smallk_bin_uiui(r_00,(ulong)p_Var22,uVar20);\n          iVar5 = *(int *)(puVar51 + -0xf0);\n          uVar6 = (int)k_00 - uVar20;\n          if (uVar40 < 0x23) {\n            puVar54 = (undefined1 *)r_00->_mp_size;\n            if ((int)puVar54 < r_00->_mp_alloc) {\n              p_Var33 = (mpz_ptr)r_00->_mp_d;\n            }\n            else {\n              p_Var33 = (mpz_ptr)(**(code **)(iVar5 + -0x7a80))(r_00,puVar54 + 1);\n              iVar5 = *(int *)(puVar51 + -0xf0);\n            }\n            iVar32 = *(int *)(iVar5 + -0x7e20);\n            iVar28 = *(int *)(iVar5 + -0x7fd4) + 0x35b4;\n            iVar28 = (**(code **)(iVar5 + -0x7f9c))\n                               (p_Var33,p_Var33,puVar54,\n                                *(int *)((((int)p_Var22 - (int)k_00) - 2U) * 4 + iVar28) *\n                                *(int *)(*(int *)(iVar5 + -0x7b38) + uVar40 * 4) *\n                                *(int *)((uVar6 - 2) * 4 + iVar28) <<\n                                (((uint)*(byte *)(iVar32 + (uVar40 >> 1) + -1) -\n                                 (uint)*(byte *)(iVar32 + (uVar6 >> 1) + -1)) -\n                                 (uint)*(byte *)(iVar32 + ((uint)((int)p_Var22 - (int)k_00) >> 1) +\n                                                -1) & 0x1f));\n            iVar5 = *(int *)(puVar51 + -0xf0);\n            k_00 = (mpz_ptr)(puVar54 + (iVar28 != 0));\n            (&p_Var33->_mp_alloc)[(int)puVar54] = iVar28;\n          }\n          else {\n            *(undefined4 *)(puVar51 + -0xe4) = 0x15;\n            *(undefined1 **)(puVar51 + -0xdc) = puVar51 + -0xd8;\n            mpz_smallk_bin_uiui((mpz_ptr)(puVar51 + -0xe4),uVar40,uVar6);\n            (**(code **)(*(int *)(puVar51 + -0xf0) + -0x7ba8))(r_00,r_00,(mpz_ptr)(puVar51 + -0xe4))\n            ;\n            iVar5 = *(int *)(puVar51 + -0xf0);\n            p_Var33 = (mpz_ptr)r_00->_mp_d;\n            k_00 = (mpz_ptr)r_00->_mp_size;\n          }\n          pcVar55 = *(code **)(iVar5 + -0x7bb4);\n          p_Var41 = (mpz_ptr)((uint)*(byte *)((uVar6 - 8) + *(int *)(iVar5 + -0x7fd4) + 0x3550) -\n                             (uint)(uVar20 != uVar6));\n          *(undefined4 *)(puVar51 + -0xf8) =\n               *(undefined4 *)((uVar6 - 8) * 4 + *(int *)(iVar5 + -0x7fd4) + 0x355c);\n          *(mpz_ptr *)(puVar51 + -0xf4) = p_Var41;\n          p_Var34 = p_Var33;\n          p_Var23 = p_Var33;\n          p_Var25 = k_00;\n          (*pcVar55)();\n          pcVar48 = *(code **)(puVar51 + -0xf0);\n          if (*(int *)((int)p_Var33 + (int)k_00 * 4 + -4) == 0) {\n            piVar37 = &p_Var33->_mp_alloc + (int)k_00;\n            do {\n              piVar19 = piVar37 + -2;\n              k_00 = (mpz_ptr)((int)&k_00[-1]._mp_d + 3);\n              piVar37 = piVar37 + -1;\n            } while (*piVar19 == 0);\n          }\n          r_00->_mp_size = (int)k_00;\n          puVar53 = puVar54;\n        }\n        else if ((k_00 < (mpz_ptr)0x3e8) || (k_00 <= (mpz_ptr)((uint)p_Var22 >> 4))) {\n          mpz_bdiv_bin_uiui(r_00,(ulong)p_Var22,(ulong)k_00);\n          pcVar48 = *(code **)(puVar51 + -0xf0);\n          puVar53 = puVar50 + -0x90;\n        }\n        else {\n          mpz_goetgheluck_bin_uiui(r_00,(ulong)p_Var22,(ulong)k_00);\n          pcVar48 = *(code **)(puVar51 + -0xf0);\n          puVar53 = puVar50 + -0x90;\n        }\n      }\n      if (*(int *)(puVar51 + -0x84) == *piVar35) {\n        return;\n      }\n      pcVar55 = *(code **)(pcVar48 + -0x7b70);\n      uVar9 = 0x22b64;\n      (*pcVar55)();\n      pcVar48 = pcVar55 + 0x824d0;\n      puVar52 = puVar51 + -0x160;\n      *(mpz_ptr *)(puVar51 + -0x118) = r_00;\n      *(mpz_ptr *)(puVar51 + -0x124) = k_00;\n      piVar37 = *(int **)(pcVar55 + 0x7a9d0);\n      uVar20 = p_Var25->_mp_size;\n      *(undefined1 **)(puVar51 + -0x110) = puVar53;\n      *(mpz_ptr *)(puVar51 + -0x114) = p_Var39;\n      *(int **)(puVar51 + -0x11c) = piVar35;\n      *(mpz_ptr *)(puVar51 + -0x120) = p_Var33;\n      *(undefined4 *)(puVar51 + -0x10c) = uVar9;\n      *(code **)(puVar51 + -0x150) = pcVar48;\n      *(undefined4 *)(puVar51 + -0x13c) = 0;\n      p_Var39 = (mpz_ptr)p_Var23->_mp_size;\n      *(int *)(puVar51 + -300) = *piVar37;\n      if ((int)uVar20 < 0) {\n        uVar40 = uVar20 * -4;\n        *(uint *)(puVar51 + -0x138) = -uVar20;\n        if (0x7f00 < uVar40) {\n          pcVar55 = *(code **)(pcVar55 + 0x7a780);\n          goto LAB_00022c88;\n        }\nLAB_00022be4:\n        iVar5 = -(uVar40 + 7 & 0xfffffff8);\n        puVar52 = puVar51 + iVar5 + -0x160;\n        puVar13 = puVar51 + iVar5 + -0x150;\n      }\n      else {\n        uVar40 = uVar20 * 4;\n        *(uint *)(puVar51 + -0x138) = uVar20;\n        pcVar55 = *(code **)(pcVar55 + 0x7a780);\n        if (uVar40 < 0x7f01) goto LAB_00022be4;\nLAB_00022c88:\n        *(mpz_ptr *)(puVar51 + -0x144) = p_Var25;\n        puVar13 = (undefined1 *)(*pcVar55)(puVar51 + -0x13c,uVar40);\n        pcVar48 = *(code **)(puVar51 + -0x150);\n        p_Var25 = *(mpz_ptr *)(puVar51 + -0x144);\n      }\n      pcVar55 = *(code **)(pcVar48 + -0x7a68);\n      p_Var33 = (mpz_ptr)(puVar51 + -0x138);\n      *(undefined1 **)(puVar51 + -0x130) = puVar13;\n      p_Var22 = p_Var23;\n      (*pcVar55)(p_Var34,p_Var33,p_Var23,p_Var25);\n      iVar5 = *(int *)(puVar51 + -0x150);\n      if (((int)((uint)p_Var39 ^ uVar20) < 0) || (*(int *)(puVar51 + -0x134) == 0)) {\n        piVar35 = *(int **)(puVar51 + -0x13c);\n        pcVar55 = *(code **)(iVar5 + -0x7a28);\n        if (piVar35 != (int *)0x0) goto LAB_00022cc0;\n      }\n      else {\n        p_Var22 = (mpz_ptr)&DAT_00000001;\n        p_Var33 = p_Var34;\n        (**(code **)(iVar5 + -0x7c9c))(p_Var34);\n        piVar35 = *(int **)(puVar51 + -0x13c);\n        iVar5 = *(int *)(puVar51 + -0x150);\n        if (piVar35 != (int *)0x0) {\n          pcVar55 = *(code **)(iVar5 + -0x7a28);\nLAB_00022cc0:\n          (*pcVar55)();\n          iVar5 = *(int *)(puVar51 + -0x150);\n        }\n      }\n      if (*(int *)(puVar51 + -300) == *piVar37) {\n        return;\n      }\n      pcVar55 = *(code **)(iVar5 + -0x7b70);\n      uVar9 = 0x22cdc;\n      (*pcVar55)();\n      pcVar48 = pcVar55 + 0x82360;\n      *(code **)(puVar52 + -0x28) = pcVar48;\n      *(undefined4 *)(puVar52 + -4) = uVar9;\n      *(mpz_ptr *)(puVar52 + -8) = p_Var41;\n      *(mpz_ptr *)(puVar52 + -0xc) = p_Var23;\n      *(int **)(puVar52 + -0x10) = piVar37;\n      *(mpz_ptr *)(puVar52 + -0x14) = p_Var34;\n      *(mpz_ptr *)(puVar52 + -0x18) = p_Var39;\n      *(uint *)(puVar52 + -0x1c) = (uint)p_Var39 ^ uVar20;\n      if (p_Var22 == (mpz_ptr)0x0) {\n        pcVar55 = *(code **)(pcVar55 + 0x7a900);\n        (*pcVar55)();\nLAB_00022e2c:\n        piVar35 = (int *)(*pcVar55)(piVar37,p_Var34);\n        pcVar48 = *(code **)(puVar52 + -0x28);\n      }\n      else {\n        p_Var39 = (mpz_ptr)p_Var33->_mp_size;\n        if (p_Var39 == (mpz_ptr)0x0) {\n          piVar35[1] = 0;\n          return;\n        }\n        p_Var34 = p_Var39;\n        if ((int)p_Var39 < 0) {\n          p_Var34 = (mpz_ptr)-(int)p_Var39;\n        }\n        pcVar55 = *(code **)(pcVar55 + 0x7a8e0);\n        piVar37 = piVar35;\n        p_Var23 = p_Var22;\n        p_Var41 = p_Var33;\n        if (*piVar35 < (int)p_Var34) goto LAB_00022e2c;\n        piVar35 = (int *)piVar35[2];\n      }\n      pcVar55 = *(code **)(pcVar48 + -0x7d98);\n      pmVar26 = p_Var41->_mp_d;\n      *(mpz_ptr *)(puVar52 + -0x30) = p_Var23;\n      iVar5 = (*pcVar55)(piVar35,0,pmVar26,p_Var34);\n      piVar19 = piVar35 + (int)((int)&p_Var34[-1]._mp_d + 3);\n      if (iVar5 == 0) {\n        uVar20 = (uint)(*piVar19 == 0);\n        if (-1 < (int)p_Var39) {\n          iVar5 = (int)p_Var34 - uVar20;\n          goto LAB_00022d9c;\n        }\n      }\n      else {\n        if (-1 < (int)p_Var39) {\n          do {\n            iVar5 = *piVar35;\n            *piVar35 = iVar5 + 1;\n            piVar35 = piVar35 + 1;\n          } while (iVar5 + 1 == 0);\n          iVar5 = (int)p_Var34 - (uint)(*piVar19 == 0);\n          goto LAB_00022d9c;\n        }\n        uVar20 = (uint)(*piVar19 == 0);\n      }\n      iVar5 = uVar20 - (int)p_Var34;\nLAB_00022d9c:\n      piVar37[1] = iVar5;\n      return;\n    }" if (parenthesized_expression "(uVar6 == 0)" ( (binary_expression "uVar6 == 0" identifier == number_literal) )) (compound_statement "{\n      if (*(int *)(puVar50 + -0x48) == *(int *)(puVar50 + -0x40)) {\n        p_Var33 = (mpz_ptr)((int)p_Var33 -\n                           (uint)(*(int *)((int)p_Var41 + (int)p_Var33 * 4 + -4) == 0));\n        pcVar55 = *(code **)(iVar28 + -0x7a80);\n        if ((int)p_Var33 <= **(int **)(puVar50 + -0x6c)) goto LAB_00022600;\nLAB_00022734:\n        p_Var22 = p_Var33;\n        puVar21 = (undefined4 *)(*pcVar55)(*(undefined4 *)(puVar50 + -0x6c));\n        iVar28 = *(int *)(puVar50 + -0x78);\n      }\n      else {\n        p_Var22 = p_Var41;\n        p_Var25 = p_Var33;\n        iVar45 = (**(code **)(iVar28 + -0x7ad4))(p_Var41);\n        iVar28 = *(int *)(puVar50 + -0x78);\n        puVar13 = (undefined1 *)((int)&p_Var33->_mp_alloc + (uint)(iVar45 != 0));\n        *(int *)((int)p_Var41 + (int)p_Var33 * 4) = iVar45;\n        p_Var33 = (mpz_ptr)(puVar13 + -(uint)(*(int *)((int)p_Var41 + (int)puVar13 * 4 + -4) == 0));\n        pcVar55 = *(code **)(iVar28 + -0x7a80);\n        if (**(int **)(puVar50 + -0x6c) < (int)p_Var33) goto LAB_00022734;\nLAB_00022600:\n        puVar21 = *(undefined4 **)(*(int *)(puVar50 + -0x6c) + 8);\n      }\n      *(mpz_ptr *)(*(int *)(puVar50 + -0x6c) + 4) = p_Var33;\n      if (p_Var33 != (mpz_ptr)0x0) {\n        puVar13 = (undefined1 *)((int)&p_Var33[-1]._mp_d + 3);\n        p_Var22 = (mpz_ptr)p_Var41->_mp_alloc;\n        if (puVar13 != (undefined1 *)0x0) {\n          puVar18 = puVar21;\n          ppmVar43 = (mp_limb_t **)&p_Var41->_mp_size;\n          do {\n            *puVar18 = p_Var22;\n            p_Var41 = (mpz_ptr)(ppmVar43 + 1);\n            puVar13 = puVar13 + -1;\n            p_Var22 = (mpz_ptr)*ppmVar43;\n            puVar18 = puVar18 + 1;\n            ppmVar43 = (mp_limb_t **)p_Var41;\n          } while (puVar13 != (undefined1 *)0x0);\n          p_Var33 = (mpz_ptr)((int)p_Var33 * 4);\n          puVar21 = (undefined4 *)((int)puVar21 + (int)&p_Var33[-1]._mp_d);\n        }\n        *puVar21 = p_Var22;\n      }\n      r_00 = *(mpz_ptr *)(puVar50 + -0x30);\n      if (r_00 != (mpz_ptr)0x0) {\n        (**(code **)(iVar28 + -0x7a28))();\n        iVar28 = *(int *)(puVar50 + -0x78);\n      }\n      if (*(int *)(puVar50 + -0x2c) == **(int **)(puVar50 + -0x70)) {\n        return;\n      }\n      pcVar55 = *(code **)(iVar28 + -0x7b70);\n      pcVar56 = __gmpz_bin_uiui;\n      (*pcVar55)();\n      pcVar48 = pcVar55 + 0x8289c;\n      *(mpz_ptr *)(puVar51 + -0x78) = p_Var34;\n      piVar35 = *(int **)(pcVar55 + 0x7ad9c);\n      *(code **)(puVar51 + -0xf0) = pcVar48;\n      *(int *)(puVar51 + -0x74) = iVar42;\n      *(code **)(puVar51 + -0x5c) = pcVar56;\n      *(undefined1 **)(puVar51 + -0x60) = puVar50 + -0x90;\n      *(int *)(puVar51 + -100) = iVar5;\n      *(int *)(puVar51 + -0x68) = iVar32;\n      *(mpz_ptr *)(puVar51 + -0x6c) = p_Var41;\n      *(mpz_ptr *)(puVar51 + -0x70) = p_Var39;\n      *(mpz_ptr *)(puVar51 + -0x7c) = p_Var33;\n      *(undefined4 *)(puVar51 + -0x80) = 0;\n      *(int *)(puVar51 + -0x84) = *piVar35;\n      p_Var34 = r_00;\n      p_Var23 = p_Var22;\n      if (p_Var22 < p_Var25) {\n        r_00->_mp_size = 0;\n        k_00 = (mpz_ptr)0x0;\n      }\n      else {\n        k_00 = p_Var25;\n        if ((mpz_ptr)((int)p_Var22 - (int)p_Var25) <= p_Var25) {\n          k_00 = (mpz_ptr)((int)p_Var22 - (int)p_Var25);\n        }\n        p_Var25 = k_00;\n        p_Var39 = p_Var22;\n        if (k_00 < (mpz_ptr)0x2) {\n          if (k_00 == (mpz_ptr)0x0) {\n            p_Var39 = (mpz_ptr)&DAT_00000001;\n          }\n          *r_00->_mp_d = (mp_limb_t)p_Var39;\n          r_00->_mp_size = 1;\n          puVar53 = puVar50 + -0x90;\n        }\n        else if (p_Var22 < (mpz_ptr)0x23) {\n          p_Var3 = k_00 + -1;\n          iVar5 = *(int *)(pcVar55 + 0x7aa7c);\n          p_Var23 = (mpz_ptr)r_00->_mp_d;\n          uVar20 = (int)p_Var22 - (int)k_00;\n          p_Var39 = (mpz_ptr)(iVar5 + ((uint)p_Var22 >> 1));\n          k_00 = (mpz_ptr)(iVar5 + ((uint)k_00 >> 1));\n          p_Var25 = (mpz_ptr)(uint)*(byte *)((int)&k_00[-1]._mp_d + 3);\n          p_Var34 = (mpz_ptr)(uint)*(byte *)(iVar5 + (uVar20 >> 1) + -1);\n          p_Var23->_mp_alloc =\n               *(int *)((int)((int)&p_Var3->_mp_d + 2) * 4 + *(int *)(pcVar55 + 0x7a8c8) + 0x35b4) *\n               *(int *)(*(int *)(pcVar55 + 0x7ad64) + (int)p_Var22 * 4) *\n               *(int *)((uVar20 - 2) * 4 + *(int *)(pcVar55 + 0x7a8c8) + 0x35b4) <<\n               (((uint)*(byte *)((int)&p_Var39[-1]._mp_d + 3) - (int)p_Var25) - (int)p_Var34 & 0x1f)\n          ;\n          r_00->_mp_size = 1;\n          puVar53 = puVar50 + -0x90;\n        }\n        else if (k_00 < (mpz_ptr)&DAT_00000011) {\n          mpz_smallk_bin_uiui(r_00,(ulong)p_Var22,(ulong)k_00);\n          pcVar48 = *(code **)(puVar51 + -0xf0);\n          puVar53 = puVar50 + -0x90;\n        }\n        else if (k_00 < (mpz_ptr)&DAT_00000021) {\n          uVar20 = (uint)k_00 >> 1;\n          uVar40 = (int)p_Var22 - uVar20;\n          mpz_smallk_bin_uiui(r_00,(ulong)p_Var22,uVar20);\n          iVar5 = *(int *)(puVar51 + -0xf0);\n          uVar6 = (int)k_00 - uVar20;\n          if (uVar40 < 0x23) {\n            puVar54 = (undefined1 *)r_00->_mp_size;\n            if ((int)puVar54 < r_00->_mp_alloc) {\n              p_Var33 = (mpz_ptr)r_00->_mp_d;\n            }\n            else {\n              p_Var33 = (mpz_ptr)(**(code **)(iVar5 + -0x7a80))(r_00,puVar54 + 1);\n              iVar5 = *(int *)(puVar51 + -0xf0);\n            }\n            iVar32 = *(int *)(iVar5 + -0x7e20);\n            iVar28 = *(int *)(iVar5 + -0x7fd4) + 0x35b4;\n            iVar28 = (**(code **)(iVar5 + -0x7f9c))\n                               (p_Var33,p_Var33,puVar54,\n                                *(int *)((((int)p_Var22 - (int)k_00) - 2U) * 4 + iVar28) *\n                                *(int *)(*(int *)(iVar5 + -0x7b38) + uVar40 * 4) *\n                                *(int *)((uVar6 - 2) * 4 + iVar28) <<\n                                (((uint)*(byte *)(iVar32 + (uVar40 >> 1) + -1) -\n                                 (uint)*(byte *)(iVar32 + (uVar6 >> 1) + -1)) -\n                                 (uint)*(byte *)(iVar32 + ((uint)((int)p_Var22 - (int)k_00) >> 1) +\n                                                -1) & 0x1f));\n            iVar5 = *(int *)(puVar51 + -0xf0);\n            k_00 = (mpz_ptr)(puVar54 + (iVar28 != 0));\n            (&p_Var33->_mp_alloc)[(int)puVar54] = iVar28;\n          }\n          else {\n            *(undefined4 *)(puVar51 + -0xe4) = 0x15;\n            *(undefined1 **)(puVar51 + -0xdc) = puVar51 + -0xd8;\n            mpz_smallk_bin_uiui((mpz_ptr)(puVar51 + -0xe4),uVar40,uVar6);\n            (**(code **)(*(int *)(puVar51 + -0xf0) + -0x7ba8))(r_00,r_00,(mpz_ptr)(puVar51 + -0xe4))\n            ;\n            iVar5 = *(int *)(puVar51 + -0xf0);\n            p_Var33 = (mpz_ptr)r_00->_mp_d;\n            k_00 = (mpz_ptr)r_00->_mp_size;\n          }\n          pcVar55 = *(code **)(iVar5 + -0x7bb4);\n          p_Var41 = (mpz_ptr)((uint)*(byte *)((uVar6 - 8) + *(int *)(iVar5 + -0x7fd4) + 0x3550) -\n                             (uint)(uVar20 != uVar6));\n          *(undefined4 *)(puVar51 + -0xf8) =\n               *(undefined4 *)((uVar6 - 8) * 4 + *(int *)(iVar5 + -0x7fd4) + 0x355c);\n          *(mpz_ptr *)(puVar51 + -0xf4) = p_Var41;\n          p_Var34 = p_Var33;\n          p_Var23 = p_Var33;\n          p_Var25 = k_00;\n          (*pcVar55)();\n          pcVar48 = *(code **)(puVar51 + -0xf0);\n          if (*(int *)((int)p_Var33 + (int)k_00 * 4 + -4) == 0) {\n            piVar37 = &p_Var33->_mp_alloc + (int)k_00;\n            do {\n              piVar19 = piVar37 + -2;\n              k_00 = (mpz_ptr)((int)&k_00[-1]._mp_d + 3);\n              piVar37 = piVar37 + -1;\n            } while (*piVar19 == 0);\n          }\n          r_00->_mp_size = (int)k_00;\n          puVar53 = puVar54;\n        }\n        else if ((k_00 < (mpz_ptr)0x3e8) || (k_00 <= (mpz_ptr)((uint)p_Var22 >> 4))) {\n          mpz_bdiv_bin_uiui(r_00,(ulong)p_Var22,(ulong)k_00);\n          pcVar48 = *(code **)(puVar51 + -0xf0);\n          puVar53 = puVar50 + -0x90;\n        }\n        else {\n          mpz_goetgheluck_bin_uiui(r_00,(ulong)p_Var22,(ulong)k_00);\n          pcVar48 = *(code **)(puVar51 + -0xf0);\n          puVar53 = puVar50 + -0x90;\n        }\n      }\n      if (*(int *)(puVar51 + -0x84) == *piVar35) {\n        return;\n      }\n      pcVar55 = *(code **)(pcVar48 + -0x7b70);\n      uVar9 = 0x22b64;\n      (*pcVar55)();\n      pcVar48 = pcVar55 + 0x824d0;\n      puVar52 = puVar51 + -0x160;\n      *(mpz_ptr *)(puVar51 + -0x118) = r_00;\n      *(mpz_ptr *)(puVar51 + -0x124) = k_00;\n      piVar37 = *(int **)(pcVar55 + 0x7a9d0);\n      uVar20 = p_Var25->_mp_size;\n      *(undefined1 **)(puVar51 + -0x110) = puVar53;\n      *(mpz_ptr *)(puVar51 + -0x114) = p_Var39;\n      *(int **)(puVar51 + -0x11c) = piVar35;\n      *(mpz_ptr *)(puVar51 + -0x120) = p_Var33;\n      *(undefined4 *)(puVar51 + -0x10c) = uVar9;\n      *(code **)(puVar51 + -0x150) = pcVar48;\n      *(undefined4 *)(puVar51 + -0x13c) = 0;\n      p_Var39 = (mpz_ptr)p_Var23->_mp_size;\n      *(int *)(puVar51 + -300) = *piVar37;\n      if ((int)uVar20 < 0) {\n        uVar40 = uVar20 * -4;\n        *(uint *)(puVar51 + -0x138) = -uVar20;\n        if (0x7f00 < uVar40) {\n          pcVar55 = *(code **)(pcVar55 + 0x7a780);\n          goto LAB_00022c88;\n        }\nLAB_00022be4:\n        iVar5 = -(uVar40 + 7 & 0xfffffff8);\n        puVar52 = puVar51 + iVar5 + -0x160;\n        puVar13 = puVar51 + iVar5 + -0x150;\n      }\n      else {\n        uVar40 = uVar20 * 4;\n        *(uint *)(puVar51 + -0x138) = uVar20;\n        pcVar55 = *(code **)(pcVar55 + 0x7a780);\n        if (uVar40 < 0x7f01) goto LAB_00022be4;\nLAB_00022c88:\n        *(mpz_ptr *)(puVar51 + -0x144) = p_Var25;\n        puVar13 = (undefined1 *)(*pcVar55)(puVar51 + -0x13c,uVar40);\n        pcVar48 = *(code **)(puVar51 + -0x150);\n        p_Var25 = *(mpz_ptr *)(puVar51 + -0x144);\n      }\n      pcVar55 = *(code **)(pcVar48 + -0x7a68);\n      p_Var33 = (mpz_ptr)(puVar51 + -0x138);\n      *(undefined1 **)(puVar51 + -0x130) = puVar13;\n      p_Var22 = p_Var23;\n      (*pcVar55)(p_Var34,p_Var33,p_Var23,p_Var25);\n      iVar5 = *(int *)(puVar51 + -0x150);\n      if (((int)((uint)p_Var39 ^ uVar20) < 0) || (*(int *)(puVar51 + -0x134) == 0)) {\n        piVar35 = *(int **)(puVar51 + -0x13c);\n        pcVar55 = *(code **)(iVar5 + -0x7a28);\n        if (piVar35 != (int *)0x0) goto LAB_00022cc0;\n      }\n      else {\n        p_Var22 = (mpz_ptr)&DAT_00000001;\n        p_Var33 = p_Var34;\n        (**(code **)(iVar5 + -0x7c9c))(p_Var34);\n        piVar35 = *(int **)(puVar51 + -0x13c);\n        iVar5 = *(int *)(puVar51 + -0x150);\n        if (piVar35 != (int *)0x0) {\n          pcVar55 = *(code **)(iVar5 + -0x7a28);\nLAB_00022cc0:\n          (*pcVar55)();\n          iVar5 = *(int *)(puVar51 + -0x150);\n        }\n      }\n      if (*(int *)(puVar51 + -300) == *piVar37) {\n        return;\n      }\n      pcVar55 = *(code **)(iVar5 + -0x7b70);\n      uVar9 = 0x22cdc;\n      (*pcVar55)();\n      pcVar48 = pcVar55 + 0x82360;\n      *(code **)(puVar52 + -0x28) = pcVar48;\n      *(undefined4 *)(puVar52 + -4) = uVar9;\n      *(mpz_ptr *)(puVar52 + -8) = p_Var41;\n      *(mpz_ptr *)(puVar52 + -0xc) = p_Var23;\n      *(int **)(puVar52 + -0x10) = piVar37;\n      *(mpz_ptr *)(puVar52 + -0x14) = p_Var34;\n      *(mpz_ptr *)(puVar52 + -0x18) = p_Var39;\n      *(uint *)(puVar52 + -0x1c) = (uint)p_Var39 ^ uVar20;\n      if (p_Var22 == (mpz_ptr)0x0) {\n        pcVar55 = *(code **)(pcVar55 + 0x7a900);\n        (*pcVar55)();\nLAB_00022e2c:\n        piVar35 = (int *)(*pcVar55)(piVar37,p_Var34);\n        pcVar48 = *(code **)(puVar52 + -0x28);\n      }\n      else {\n        p_Var39 = (mpz_ptr)p_Var33->_mp_size;\n        if (p_Var39 == (mpz_ptr)0x0) {\n          piVar35[1] = 0;\n          return;\n        }\n        p_Var34 = p_Var39;\n        if ((int)p_Var39 < 0) {\n          p_Var34 = (mpz_ptr)-(int)p_Var39;\n        }\n        pcVar55 = *(code **)(pcVar55 + 0x7a8e0);\n        piVar37 = piVar35;\n        p_Var23 = p_Var22;\n        p_Var41 = p_Var33;\n        if (*piVar35 < (int)p_Var34) goto LAB_00022e2c;\n        piVar35 = (int *)piVar35[2];\n      }\n      pcVar55 = *(code **)(pcVar48 + -0x7d98);\n      pmVar26 = p_Var41->_mp_d;\n      *(mpz_ptr *)(puVar52 + -0x30) = p_Var23;\n      iVar5 = (*pcVar55)(piVar35,0,pmVar26,p_Var34);\n      piVar19 = piVar35 + (int)((int)&p_Var34[-1]._mp_d + 3);\n      if (iVar5 == 0) {\n        uVar20 = (uint)(*piVar19 == 0);\n        if (-1 < (int)p_Var39) {\n          iVar5 = (int)p_Var34 - uVar20;\n          goto LAB_00022d9c;\n        }\n      }\n      else {\n        if (-1 < (int)p_Var39) {\n          do {\n            iVar5 = *piVar35;\n            *piVar35 = iVar5 + 1;\n            piVar35 = piVar35 + 1;\n          } while (iVar5 + 1 == 0);\n          iVar5 = (int)p_Var34 - (uint)(*piVar19 == 0);\n          goto LAB_00022d9c;\n        }\n        uVar20 = (uint)(*piVar19 == 0);\n      }\n      iVar5 = uVar20 - (int)p_Var34;\nLAB_00022d9c:\n      piVar37[1] = iVar5;\n      return;\n    }" { (if_statement "if (*(int *)(puVar50 + -0x48) == *(int *)(puVar50 + -0x40)) {\n        p_Var33 = (mpz_ptr)((int)p_Var33 -\n                           (uint)(*(int *)((int)p_Var41 + (int)p_Var33 * 4 + -4) == 0));\n        pcVar55 = *(code **)(iVar28 + -0x7a80);\n        if ((int)p_Var33 <= **(int **)(puVar50 + -0x6c)) goto LAB_00022600;\nLAB_00022734:\n        p_Var22 = p_Var33;\n        puVar21 = (undefined4 *)(*pcVar55)(*(undefined4 *)(puVar50 + -0x6c));\n        iVar28 = *(int *)(puVar50 + -0x78);\n      }\n      else {\n        p_Var22 = p_Var41;\n        p_Var25 = p_Var33;\n        iVar45 = (**(code **)(iVar28 + -0x7ad4))(p_Var41);\n        iVar28 = *(int *)(puVar50 + -0x78);\n        puVar13 = (undefined1 *)((int)&p_Var33->_mp_alloc + (uint)(iVar45 != 0));\n        *(int *)((int)p_Var41 + (int)p_Var33 * 4) = iVar45;\n        p_Var33 = (mpz_ptr)(puVar13 + -(uint)(*(int *)((int)p_Var41 + (int)puVar13 * 4 + -4) == 0));\n        pcVar55 = *(code **)(iVar28 + -0x7a80);\n        if (**(int **)(puVar50 + -0x6c) < (int)p_Var33) goto LAB_00022734;\nLAB_00022600:\n        puVar21 = *(undefined4 **)(*(int *)(puVar50 + -0x6c) + 8);\n      }" if (parenthesized_expression "(*(int *)(puVar50 + -0x48) == *(int *)(puVar50 + -0x40))" ( (binary_expression "*(int *)(puVar50 + -0x48) == *(int *)(puVar50 + -0x40)" (pointer_expression "*(int *)(puVar50 + -0x48)" * (cast_expression "(int *)(puVar50 + -0x48)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar50 + -0x48)" ( (binary_expression "puVar50 + -0x48" identifier + number_literal) )))) == (pointer_expression "*(int *)(puVar50 + -0x40)" * (cast_expression "(int *)(puVar50 + -0x40)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar50 + -0x40)" ( (binary_expression "puVar50 + -0x40" identifier + number_literal) ))))) )) (compound_statement "{\n        p_Var33 = (mpz_ptr)((int)p_Var33 -\n                           (uint)(*(int *)((int)p_Var41 + (int)p_Var33 * 4 + -4) == 0));\n        pcVar55 = *(code **)(iVar28 + -0x7a80);\n        if ((int)p_Var33 <= **(int **)(puVar50 + -0x6c)) goto LAB_00022600;\nLAB_00022734:\n        p_Var22 = p_Var33;\n        puVar21 = (undefined4 *)(*pcVar55)(*(undefined4 *)(puVar50 + -0x6c));\n        iVar28 = *(int *)(puVar50 + -0x78);\n      }" { (expression_statement "p_Var33 = (mpz_ptr)((int)p_Var33 -\n                           (uint)(*(int *)((int)p_Var41 + (int)p_Var33 * 4 + -4) == 0));" (assignment_expression "p_Var33 = (mpz_ptr)((int)p_Var33 -\n                           (uint)(*(int *)((int)p_Var41 + (int)p_Var33 * 4 + -4) == 0))" identifier = (call_expression "(mpz_ptr)((int)p_Var33 -\n                           (uint)(*(int *)((int)p_Var41 + (int)p_Var33 * 4 + -4) == 0))" (parenthesized_expression "(mpz_ptr)" ( identifier )) (argument_list "((int)p_Var33 -\n                           (uint)(*(int *)((int)p_Var41 + (int)p_Var33 * 4 + -4) == 0))" ( (binary_expression "(int)p_Var33 -\n                           (uint)(*(int *)((int)p_Var41 + (int)p_Var33 * 4 + -4) == 0)" (cast_expression "(int)p_Var33" ( (type_descriptor "int" primitive_type) ) identifier) - (call_expression "(uint)(*(int *)((int)p_Var41 + (int)p_Var33 * 4 + -4) == 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(*(int *)((int)p_Var41 + (int)p_Var33 * 4 + -4) == 0)" ( (binary_expression "*(int *)((int)p_Var41 + (int)p_Var33 * 4 + -4) == 0" (pointer_expression "*(int *)((int)p_Var41 + (int)p_Var33 * 4 + -4)" * (cast_expression "(int *)((int)p_Var41 + (int)p_Var33 * 4 + -4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)p_Var41 + (int)p_Var33 * 4 + -4)" ( (binary_expression "(int)p_Var41 + (int)p_Var33 * 4 + -4" (binary_expression "(int)p_Var41 + (int)p_Var33 * 4" (cast_expression "(int)p_Var41" ( (type_descriptor "int" primitive_type) ) identifier) + (binary_expression "(int)p_Var33 * 4" (cast_expression "(int)p_Var33" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal)) + number_literal) )))) == number_literal) )))) )))) ;) (expression_statement "pcVar55 = *(code **)(iVar28 + -0x7a80);" (assignment_expression "pcVar55 = *(code **)(iVar28 + -0x7a80)" identifier = (pointer_expression "*(code **)(iVar28 + -0x7a80)" * (cast_expression "(code **)(iVar28 + -0x7a80)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar28 + -0x7a80)" ( (binary_expression "iVar28 + -0x7a80" identifier + number_literal) ))))) ;) (if_statement "if ((int)p_Var33 <= **(int **)(puVar50 + -0x6c)) goto LAB_00022600;" if (parenthesized_expression "((int)p_Var33 <= **(int **)(puVar50 + -0x6c))" ( (binary_expression "(int)p_Var33 <= **(int **)(puVar50 + -0x6c)" (cast_expression "(int)p_Var33" ( (type_descriptor "int" primitive_type) ) identifier) <= (pointer_expression "**(int **)(puVar50 + -0x6c)" * (pointer_expression "*(int **)(puVar50 + -0x6c)" * (cast_expression "(int **)(puVar50 + -0x6c)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar50 + -0x6c)" ( (binary_expression "puVar50 + -0x6c" identifier + number_literal) )))))) )) (goto_statement "goto LAB_00022600;" goto statement_identifier ;)) (labeled_statement "LAB_00022734:\n        p_Var22 = p_Var33;" statement_identifier : (expression_statement "p_Var22 = p_Var33;" (assignment_expression "p_Var22 = p_Var33" identifier = identifier) ;)) (expression_statement "puVar21 = (undefined4 *)(*pcVar55)(*(undefined4 *)(puVar50 + -0x6c));" (assignment_expression "puVar21 = (undefined4 *)(*pcVar55)(*(undefined4 *)(puVar50 + -0x6c))" identifier = (cast_expression "(undefined4 *)(*pcVar55)(*(undefined4 *)(puVar50 + -0x6c))" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(*pcVar55)(*(undefined4 *)(puVar50 + -0x6c))" (parenthesized_expression "(*pcVar55)" ( (pointer_expression "*pcVar55" * identifier) )) (argument_list "(*(undefined4 *)(puVar50 + -0x6c))" ( (pointer_expression "*(undefined4 *)(puVar50 + -0x6c)" * (cast_expression "(undefined4 *)(puVar50 + -0x6c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar50 + -0x6c)" ( (binary_expression "puVar50 + -0x6c" identifier + number_literal) )))) ))))) ;) (expression_statement "iVar28 = *(int *)(puVar50 + -0x78);" (assignment_expression "iVar28 = *(int *)(puVar50 + -0x78)" identifier = (pointer_expression "*(int *)(puVar50 + -0x78)" * (cast_expression "(int *)(puVar50 + -0x78)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar50 + -0x78)" ( (binary_expression "puVar50 + -0x78" identifier + number_literal) ))))) ;) }) (else_clause "else {\n        p_Var22 = p_Var41;\n        p_Var25 = p_Var33;\n        iVar45 = (**(code **)(iVar28 + -0x7ad4))(p_Var41);\n        iVar28 = *(int *)(puVar50 + -0x78);\n        puVar13 = (undefined1 *)((int)&p_Var33->_mp_alloc + (uint)(iVar45 != 0));\n        *(int *)((int)p_Var41 + (int)p_Var33 * 4) = iVar45;\n        p_Var33 = (mpz_ptr)(puVar13 + -(uint)(*(int *)((int)p_Var41 + (int)puVar13 * 4 + -4) == 0));\n        pcVar55 = *(code **)(iVar28 + -0x7a80);\n        if (**(int **)(puVar50 + -0x6c) < (int)p_Var33) goto LAB_00022734;\nLAB_00022600:\n        puVar21 = *(undefined4 **)(*(int *)(puVar50 + -0x6c) + 8);\n      }" else (compound_statement "{\n        p_Var22 = p_Var41;\n        p_Var25 = p_Var33;\n        iVar45 = (**(code **)(iVar28 + -0x7ad4))(p_Var41);\n        iVar28 = *(int *)(puVar50 + -0x78);\n        puVar13 = (undefined1 *)((int)&p_Var33->_mp_alloc + (uint)(iVar45 != 0));\n        *(int *)((int)p_Var41 + (int)p_Var33 * 4) = iVar45;\n        p_Var33 = (mpz_ptr)(puVar13 + -(uint)(*(int *)((int)p_Var41 + (int)puVar13 * 4 + -4) == 0));\n        pcVar55 = *(code **)(iVar28 + -0x7a80);\n        if (**(int **)(puVar50 + -0x6c) < (int)p_Var33) goto LAB_00022734;\nLAB_00022600:\n        puVar21 = *(undefined4 **)(*(int *)(puVar50 + -0x6c) + 8);\n      }" { (expression_statement "p_Var22 = p_Var41;" (assignment_expression "p_Var22 = p_Var41" identifier = identifier) ;) (expression_statement "p_Var25 = p_Var33;" (assignment_expression "p_Var25 = p_Var33" identifier = identifier) ;) (expression_statement "iVar45 = (**(code **)(iVar28 + -0x7ad4))(p_Var41);" (assignment_expression "iVar45 = (**(code **)(iVar28 + -0x7ad4))(p_Var41)" identifier = (call_expression "(**(code **)(iVar28 + -0x7ad4))(p_Var41)" (parenthesized_expression "(**(code **)(iVar28 + -0x7ad4))" ( (pointer_expression "**(code **)(iVar28 + -0x7ad4)" * (pointer_expression "*(code **)(iVar28 + -0x7ad4)" * (cast_expression "(code **)(iVar28 + -0x7ad4)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar28 + -0x7ad4)" ( (binary_expression "iVar28 + -0x7ad4" identifier + number_literal) ))))) )) (argument_list "(p_Var41)" ( identifier )))) ;) (expression_statement "iVar28 = *(int *)(puVar50 + -0x78);" (assignment_expression "iVar28 = *(int *)(puVar50 + -0x78)" identifier = (pointer_expression "*(int *)(puVar50 + -0x78)" * (cast_expression "(int *)(puVar50 + -0x78)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar50 + -0x78)" ( (binary_expression "puVar50 + -0x78" identifier + number_literal) ))))) ;) (expression_statement "puVar13 = (undefined1 *)((int)&p_Var33->_mp_alloc + (uint)(iVar45 != 0));" (assignment_expression "puVar13 = (undefined1 *)((int)&p_Var33->_mp_alloc + (uint)(iVar45 != 0))" identifier = (cast_expression "(undefined1 *)((int)&p_Var33->_mp_alloc + (uint)(iVar45 != 0))" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&p_Var33->_mp_alloc + (uint)(iVar45 != 0))" ( (binary_expression "(int)&p_Var33->_mp_alloc + (uint)(iVar45 != 0)" (cast_expression "(int)&p_Var33->_mp_alloc" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&p_Var33->_mp_alloc" & (field_expression "p_Var33->_mp_alloc" identifier -> field_identifier))) + (call_expression "(uint)(iVar45 != 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(iVar45 != 0)" ( (binary_expression "iVar45 != 0" identifier != number_literal) )))) )))) ;) (expression_statement "*(int *)((int)p_Var41 + (int)p_Var33 * 4) = iVar45;" (assignment_expression "*(int *)((int)p_Var41 + (int)p_Var33 * 4) = iVar45" (pointer_expression "*(int *)((int)p_Var41 + (int)p_Var33 * 4)" * (cast_expression "(int *)((int)p_Var41 + (int)p_Var33 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)p_Var41 + (int)p_Var33 * 4)" ( (binary_expression "(int)p_Var41 + (int)p_Var33 * 4" (cast_expression "(int)p_Var41" ( (type_descriptor "int" primitive_type) ) identifier) + (binary_expression "(int)p_Var33 * 4" (cast_expression "(int)p_Var33" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal)) )))) = identifier) ;) (expression_statement "p_Var33 = (mpz_ptr)(puVar13 + -(uint)(*(int *)((int)p_Var41 + (int)puVar13 * 4 + -4) == 0));" (assignment_expression "p_Var33 = (mpz_ptr)(puVar13 + -(uint)(*(int *)((int)p_Var41 + (int)puVar13 * 4 + -4) == 0))" identifier = (call_expression "(mpz_ptr)(puVar13 + -(uint)(*(int *)((int)p_Var41 + (int)puVar13 * 4 + -4) == 0))" (parenthesized_expression "(mpz_ptr)" ( identifier )) (argument_list "(puVar13 + -(uint)(*(int *)((int)p_Var41 + (int)puVar13 * 4 + -4) == 0))" ( (binary_expression "puVar13 + -(uint)(*(int *)((int)p_Var41 + (int)puVar13 * 4 + -4) == 0)" identifier + (unary_expression "-(uint)(*(int *)((int)p_Var41 + (int)puVar13 * 4 + -4) == 0)" - (call_expression "(uint)(*(int *)((int)p_Var41 + (int)puVar13 * 4 + -4) == 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(*(int *)((int)p_Var41 + (int)puVar13 * 4 + -4) == 0)" ( (binary_expression "*(int *)((int)p_Var41 + (int)puVar13 * 4 + -4) == 0" (pointer_expression "*(int *)((int)p_Var41 + (int)puVar13 * 4 + -4)" * (cast_expression "(int *)((int)p_Var41 + (int)puVar13 * 4 + -4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)p_Var41 + (int)puVar13 * 4 + -4)" ( (binary_expression "(int)p_Var41 + (int)puVar13 * 4 + -4" (binary_expression "(int)p_Var41 + (int)puVar13 * 4" (cast_expression "(int)p_Var41" ( (type_descriptor "int" primitive_type) ) identifier) + (binary_expression "(int)puVar13 * 4" (cast_expression "(int)puVar13" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal)) + number_literal) )))) == number_literal) ))))) )))) ;) (expression_statement "pcVar55 = *(code **)(iVar28 + -0x7a80);" (assignment_expression "pcVar55 = *(code **)(iVar28 + -0x7a80)" identifier = (pointer_expression "*(code **)(iVar28 + -0x7a80)" * (cast_expression "(code **)(iVar28 + -0x7a80)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar28 + -0x7a80)" ( (binary_expression "iVar28 + -0x7a80" identifier + number_literal) ))))) ;) (if_statement "if (**(int **)(puVar50 + -0x6c) < (int)p_Var33) goto LAB_00022734;" if (parenthesized_expression "(**(int **)(puVar50 + -0x6c) < (int)p_Var33)" ( (binary_expression "**(int **)(puVar50 + -0x6c) < (int)p_Var33" (pointer_expression "**(int **)(puVar50 + -0x6c)" * (pointer_expression "*(int **)(puVar50 + -0x6c)" * (cast_expression "(int **)(puVar50 + -0x6c)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar50 + -0x6c)" ( (binary_expression "puVar50 + -0x6c" identifier + number_literal) ))))) < (cast_expression "(int)p_Var33" ( (type_descriptor "int" primitive_type) ) identifier)) )) (goto_statement "goto LAB_00022734;" goto statement_identifier ;)) (labeled_statement "LAB_00022600:\n        puVar21 = *(undefined4 **)(*(int *)(puVar50 + -0x6c) + 8);" statement_identifier : (expression_statement "puVar21 = *(undefined4 **)(*(int *)(puVar50 + -0x6c) + 8);" (assignment_expression "puVar21 = *(undefined4 **)(*(int *)(puVar50 + -0x6c) + 8)" identifier = (pointer_expression "*(undefined4 **)(*(int *)(puVar50 + -0x6c) + 8)" * (cast_expression "(undefined4 **)(*(int *)(puVar50 + -0x6c) + 8)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)(puVar50 + -0x6c) + 8)" ( (binary_expression "*(int *)(puVar50 + -0x6c) + 8" (pointer_expression "*(int *)(puVar50 + -0x6c)" * (cast_expression "(int *)(puVar50 + -0x6c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar50 + -0x6c)" ( (binary_expression "puVar50 + -0x6c" identifier + number_literal) )))) + number_literal) ))))) ;)) }))) (expression_statement "*(mpz_ptr *)(*(int *)(puVar50 + -0x6c) + 4) = p_Var33;" (assignment_expression "*(mpz_ptr *)(*(int *)(puVar50 + -0x6c) + 4) = p_Var33" (pointer_expression "*(mpz_ptr *)(*(int *)(puVar50 + -0x6c) + 4)" * (cast_expression "(mpz_ptr *)(*(int *)(puVar50 + -0x6c) + 4)" ( (type_descriptor "mpz_ptr *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(puVar50 + -0x6c) + 4)" ( (binary_expression "*(int *)(puVar50 + -0x6c) + 4" (pointer_expression "*(int *)(puVar50 + -0x6c)" * (cast_expression "(int *)(puVar50 + -0x6c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar50 + -0x6c)" ( (binary_expression "puVar50 + -0x6c" identifier + number_literal) )))) + number_literal) )))) = identifier) ;) (if_statement "if (p_Var33 != (mpz_ptr)0x0) {\n        puVar13 = (undefined1 *)((int)&p_Var33[-1]._mp_d + 3);\n        p_Var22 = (mpz_ptr)p_Var41->_mp_alloc;\n        if (puVar13 != (undefined1 *)0x0) {\n          puVar18 = puVar21;\n          ppmVar43 = (mp_limb_t **)&p_Var41->_mp_size;\n          do {\n            *puVar18 = p_Var22;\n            p_Var41 = (mpz_ptr)(ppmVar43 + 1);\n            puVar13 = puVar13 + -1;\n            p_Var22 = (mpz_ptr)*ppmVar43;\n            puVar18 = puVar18 + 1;\n            ppmVar43 = (mp_limb_t **)p_Var41;\n          } while (puVar13 != (undefined1 *)0x0);\n          p_Var33 = (mpz_ptr)((int)p_Var33 * 4);\n          puVar21 = (undefined4 *)((int)puVar21 + (int)&p_Var33[-1]._mp_d);\n        }\n        *puVar21 = p_Var22;\n      }" if (parenthesized_expression "(p_Var33 != (mpz_ptr)0x0)" ( (binary_expression "p_Var33 != (mpz_ptr)0x0" identifier != (cast_expression "(mpz_ptr)0x0" ( (type_descriptor "mpz_ptr" type_identifier) ) number_literal)) )) (compound_statement "{\n        puVar13 = (undefined1 *)((int)&p_Var33[-1]._mp_d + 3);\n        p_Var22 = (mpz_ptr)p_Var41->_mp_alloc;\n        if (puVar13 != (undefined1 *)0x0) {\n          puVar18 = puVar21;\n          ppmVar43 = (mp_limb_t **)&p_Var41->_mp_size;\n          do {\n            *puVar18 = p_Var22;\n            p_Var41 = (mpz_ptr)(ppmVar43 + 1);\n            puVar13 = puVar13 + -1;\n            p_Var22 = (mpz_ptr)*ppmVar43;\n            puVar18 = puVar18 + 1;\n            ppmVar43 = (mp_limb_t **)p_Var41;\n          } while (puVar13 != (undefined1 *)0x0);\n          p_Var33 = (mpz_ptr)((int)p_Var33 * 4);\n          puVar21 = (undefined4 *)((int)puVar21 + (int)&p_Var33[-1]._mp_d);\n        }\n        *puVar21 = p_Var22;\n      }" { (expression_statement "puVar13 = (undefined1 *)((int)&p_Var33[-1]._mp_d + 3);" (assignment_expression "puVar13 = (undefined1 *)((int)&p_Var33[-1]._mp_d + 3)" identifier = (cast_expression "(undefined1 *)((int)&p_Var33[-1]._mp_d + 3)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&p_Var33[-1]._mp_d + 3)" ( (binary_expression "(int)&p_Var33[-1]._mp_d + 3" (cast_expression "(int)&p_Var33[-1]._mp_d" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&p_Var33[-1]._mp_d" & (field_expression "p_Var33[-1]._mp_d" (subscript_expression "p_Var33[-1]" identifier [ number_literal ]) . field_identifier))) + number_literal) )))) ;) (expression_statement "p_Var22 = (mpz_ptr)p_Var41->_mp_alloc;" (assignment_expression "p_Var22 = (mpz_ptr)p_Var41->_mp_alloc" identifier = (cast_expression "(mpz_ptr)p_Var41->_mp_alloc" ( (type_descriptor "mpz_ptr" type_identifier) ) (field_expression "p_Var41->_mp_alloc" identifier -> field_identifier))) ;) (if_statement "if (puVar13 != (undefined1 *)0x0) {\n          puVar18 = puVar21;\n          ppmVar43 = (mp_limb_t **)&p_Var41->_mp_size;\n          do {\n            *puVar18 = p_Var22;\n            p_Var41 = (mpz_ptr)(ppmVar43 + 1);\n            puVar13 = puVar13 + -1;\n            p_Var22 = (mpz_ptr)*ppmVar43;\n            puVar18 = puVar18 + 1;\n            ppmVar43 = (mp_limb_t **)p_Var41;\n          } while (puVar13 != (undefined1 *)0x0);\n          p_Var33 = (mpz_ptr)((int)p_Var33 * 4);\n          puVar21 = (undefined4 *)((int)puVar21 + (int)&p_Var33[-1]._mp_d);\n        }" if (parenthesized_expression "(puVar13 != (undefined1 *)0x0)" ( (binary_expression "puVar13 != (undefined1 *)0x0" identifier != (cast_expression "(undefined1 *)0x0" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          puVar18 = puVar21;\n          ppmVar43 = (mp_limb_t **)&p_Var41->_mp_size;\n          do {\n            *puVar18 = p_Var22;\n            p_Var41 = (mpz_ptr)(ppmVar43 + 1);\n            puVar13 = puVar13 + -1;\n            p_Var22 = (mpz_ptr)*ppmVar43;\n            puVar18 = puVar18 + 1;\n            ppmVar43 = (mp_limb_t **)p_Var41;\n          } while (puVar13 != (undefined1 *)0x0);\n          p_Var33 = (mpz_ptr)((int)p_Var33 * 4);\n          puVar21 = (undefined4 *)((int)puVar21 + (int)&p_Var33[-1]._mp_d);\n        }" { (expression_statement "puVar18 = puVar21;" (assignment_expression "puVar18 = puVar21" identifier = identifier) ;) (expression_statement "ppmVar43 = (mp_limb_t **)&p_Var41->_mp_size;" (assignment_expression "ppmVar43 = (mp_limb_t **)&p_Var41->_mp_size" identifier = (cast_expression "(mp_limb_t **)&p_Var41->_mp_size" ( (type_descriptor "mp_limb_t **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (pointer_expression "&p_Var41->_mp_size" & (field_expression "p_Var41->_mp_size" identifier -> field_identifier)))) ;) (do_statement "do {\n            *puVar18 = p_Var22;\n            p_Var41 = (mpz_ptr)(ppmVar43 + 1);\n            puVar13 = puVar13 + -1;\n            p_Var22 = (mpz_ptr)*ppmVar43;\n            puVar18 = puVar18 + 1;\n            ppmVar43 = (mp_limb_t **)p_Var41;\n          } while (puVar13 != (undefined1 *)0x0);" do (compound_statement "{\n            *puVar18 = p_Var22;\n            p_Var41 = (mpz_ptr)(ppmVar43 + 1);\n            puVar13 = puVar13 + -1;\n            p_Var22 = (mpz_ptr)*ppmVar43;\n            puVar18 = puVar18 + 1;\n            ppmVar43 = (mp_limb_t **)p_Var41;\n          }" { (expression_statement "*puVar18 = p_Var22;" (assignment_expression "*puVar18 = p_Var22" (pointer_expression "*puVar18" * identifier) = identifier) ;) (expression_statement "p_Var41 = (mpz_ptr)(ppmVar43 + 1);" (assignment_expression "p_Var41 = (mpz_ptr)(ppmVar43 + 1)" identifier = (call_expression "(mpz_ptr)(ppmVar43 + 1)" (parenthesized_expression "(mpz_ptr)" ( identifier )) (argument_list "(ppmVar43 + 1)" ( (binary_expression "ppmVar43 + 1" identifier + number_literal) )))) ;) (expression_statement "puVar13 = puVar13 + -1;" (assignment_expression "puVar13 = puVar13 + -1" identifier = (binary_expression "puVar13 + -1" identifier + number_literal)) ;) (expression_statement "p_Var22 = (mpz_ptr)*ppmVar43;" (assignment_expression "p_Var22 = (mpz_ptr)*ppmVar43" identifier = (binary_expression "(mpz_ptr)*ppmVar43" (parenthesized_expression "(mpz_ptr)" ( identifier )) * identifier)) ;) (expression_statement "puVar18 = puVar18 + 1;" (assignment_expression "puVar18 = puVar18 + 1" identifier = (binary_expression "puVar18 + 1" identifier + number_literal)) ;) (expression_statement "ppmVar43 = (mp_limb_t **)p_Var41;" (assignment_expression "ppmVar43 = (mp_limb_t **)p_Var41" identifier = (cast_expression "(mp_limb_t **)p_Var41" ( (type_descriptor "mp_limb_t **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier)) ;) }) while (parenthesized_expression "(puVar13 != (undefined1 *)0x0)" ( (binary_expression "puVar13 != (undefined1 *)0x0" identifier != (cast_expression "(undefined1 *)0x0" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) ;) (expression_statement "p_Var33 = (mpz_ptr)((int)p_Var33 * 4);" (assignment_expression "p_Var33 = (mpz_ptr)((int)p_Var33 * 4)" identifier = (call_expression "(mpz_ptr)((int)p_Var33 * 4)" (parenthesized_expression "(mpz_ptr)" ( identifier )) (argument_list "((int)p_Var33 * 4)" ( (binary_expression "(int)p_Var33 * 4" (cast_expression "(int)p_Var33" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal) )))) ;) (expression_statement "puVar21 = (undefined4 *)((int)puVar21 + (int)&p_Var33[-1]._mp_d);" (assignment_expression "puVar21 = (undefined4 *)((int)puVar21 + (int)&p_Var33[-1]._mp_d)" identifier = (cast_expression "(undefined4 *)((int)puVar21 + (int)&p_Var33[-1]._mp_d)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar21 + (int)&p_Var33[-1]._mp_d)" ( (binary_expression "(int)puVar21 + (int)&p_Var33[-1]._mp_d" (cast_expression "(int)puVar21" ( (type_descriptor "int" primitive_type) ) identifier) + (cast_expression "(int)&p_Var33[-1]._mp_d" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&p_Var33[-1]._mp_d" & (field_expression "p_Var33[-1]._mp_d" (subscript_expression "p_Var33[-1]" identifier [ number_literal ]) . field_identifier)))) )))) ;) })) (expression_statement "*puVar21 = p_Var22;" (assignment_expression "*puVar21 = p_Var22" (pointer_expression "*puVar21" * identifier) = identifier) ;) })) (expression_statement "r_00 = *(mpz_ptr *)(puVar50 + -0x30);" (assignment_expression "r_00 = *(mpz_ptr *)(puVar50 + -0x30)" identifier = (pointer_expression "*(mpz_ptr *)(puVar50 + -0x30)" * (cast_expression "(mpz_ptr *)(puVar50 + -0x30)" ( (type_descriptor "mpz_ptr *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar50 + -0x30)" ( (binary_expression "puVar50 + -0x30" identifier + number_literal) ))))) ;) (if_statement "if (r_00 != (mpz_ptr)0x0) {\n        (**(code **)(iVar28 + -0x7a28))();\n        iVar28 = *(int *)(puVar50 + -0x78);\n      }" if (parenthesized_expression "(r_00 != (mpz_ptr)0x0)" ( (binary_expression "r_00 != (mpz_ptr)0x0" identifier != (cast_expression "(mpz_ptr)0x0" ( (type_descriptor "mpz_ptr" type_identifier) ) number_literal)) )) (compound_statement "{\n        (**(code **)(iVar28 + -0x7a28))();\n        iVar28 = *(int *)(puVar50 + -0x78);\n      }" { (expression_statement "(**(code **)(iVar28 + -0x7a28))();" (call_expression "(**(code **)(iVar28 + -0x7a28))()" (parenthesized_expression "(**(code **)(iVar28 + -0x7a28))" ( (pointer_expression "**(code **)(iVar28 + -0x7a28)" * (pointer_expression "*(code **)(iVar28 + -0x7a28)" * (cast_expression "(code **)(iVar28 + -0x7a28)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar28 + -0x7a28)" ( (binary_expression "iVar28 + -0x7a28" identifier + number_literal) ))))) )) (argument_list "()" ( ))) ;) (expression_statement "iVar28 = *(int *)(puVar50 + -0x78);" (assignment_expression "iVar28 = *(int *)(puVar50 + -0x78)" identifier = (pointer_expression "*(int *)(puVar50 + -0x78)" * (cast_expression "(int *)(puVar50 + -0x78)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar50 + -0x78)" ( (binary_expression "puVar50 + -0x78" identifier + number_literal) ))))) ;) })) (if_statement "if (*(int *)(puVar50 + -0x2c) == **(int **)(puVar50 + -0x70)) {\n        return;\n      }" if (parenthesized_expression "(*(int *)(puVar50 + -0x2c) == **(int **)(puVar50 + -0x70))" ( (binary_expression "*(int *)(puVar50 + -0x2c) == **(int **)(puVar50 + -0x70)" (pointer_expression "*(int *)(puVar50 + -0x2c)" * (cast_expression "(int *)(puVar50 + -0x2c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar50 + -0x2c)" ( (binary_expression "puVar50 + -0x2c" identifier + number_literal) )))) == (pointer_expression "**(int **)(puVar50 + -0x70)" * (pointer_expression "*(int **)(puVar50 + -0x70)" * (cast_expression "(int **)(puVar50 + -0x70)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar50 + -0x70)" ( (binary_expression "puVar50 + -0x70" identifier + number_literal) )))))) )) (compound_statement "{\n        return;\n      }" { (return_statement "return;" return ;) })) (expression_statement "pcVar55 = *(code **)(iVar28 + -0x7b70);" (assignment_expression "pcVar55 = *(code **)(iVar28 + -0x7b70)" identifier = (pointer_expression "*(code **)(iVar28 + -0x7b70)" * (cast_expression "(code **)(iVar28 + -0x7b70)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar28 + -0x7b70)" ( (binary_expression "iVar28 + -0x7b70" identifier + number_literal) ))))) ;) (expression_statement "pcVar56 = __gmpz_bin_uiui;" (assignment_expression "pcVar56 = __gmpz_bin_uiui" identifier = identifier) ;) (expression_statement "(*pcVar55)();" (call_expression "(*pcVar55)()" (parenthesized_expression "(*pcVar55)" ( (pointer_expression "*pcVar55" * identifier) )) (argument_list "()" ( ))) ;) (expression_statement "pcVar48 = pcVar55 + 0x8289c;" (assignment_expression "pcVar48 = pcVar55 + 0x8289c" identifier = (binary_expression "pcVar55 + 0x8289c" identifier + number_literal)) ;) (expression_statement "*(mpz_ptr *)(puVar51 + -0x78) = p_Var34;" (assignment_expression "*(mpz_ptr *)(puVar51 + -0x78) = p_Var34" (pointer_expression "*(mpz_ptr *)(puVar51 + -0x78)" * (cast_expression "(mpz_ptr *)(puVar51 + -0x78)" ( (type_descriptor "mpz_ptr *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar51 + -0x78)" ( (binary_expression "puVar51 + -0x78" identifier + number_literal) )))) = identifier) ;) (expression_statement "piVar35 = *(int **)(pcVar55 + 0x7ad9c);" (assignment_expression "piVar35 = *(int **)(pcVar55 + 0x7ad9c)" identifier = (pointer_expression "*(int **)(pcVar55 + 0x7ad9c)" * (cast_expression "(int **)(pcVar55 + 0x7ad9c)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar55 + 0x7ad9c)" ( (binary_expression "pcVar55 + 0x7ad9c" identifier + number_literal) ))))) ;) (expression_statement "*(code **)(puVar51 + -0xf0) = pcVar48;" (assignment_expression "*(code **)(puVar51 + -0xf0) = pcVar48" (pointer_expression "*(code **)(puVar51 + -0xf0)" * (cast_expression "(code **)(puVar51 + -0xf0)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar51 + -0xf0)" ( (binary_expression "puVar51 + -0xf0" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(puVar51 + -0x74) = iVar42;" (assignment_expression "*(int *)(puVar51 + -0x74) = iVar42" (pointer_expression "*(int *)(puVar51 + -0x74)" * (cast_expression "(int *)(puVar51 + -0x74)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar51 + -0x74)" ( (binary_expression "puVar51 + -0x74" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(code **)(puVar51 + -0x5c) = pcVar56;" (assignment_expression "*(code **)(puVar51 + -0x5c) = pcVar56" (pointer_expression "*(code **)(puVar51 + -0x5c)" * (cast_expression "(code **)(puVar51 + -0x5c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar51 + -0x5c)" ( (binary_expression "puVar51 + -0x5c" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined1 **)(puVar51 + -0x60) = puVar50 + -0x90;" (assignment_expression "*(undefined1 **)(puVar51 + -0x60) = puVar50 + -0x90" (pointer_expression "*(undefined1 **)(puVar51 + -0x60)" * (cast_expression "(undefined1 **)(puVar51 + -0x60)" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar51 + -0x60)" ( (binary_expression "puVar51 + -0x60" identifier + number_literal) )))) = (binary_expression "puVar50 + -0x90" identifier + number_literal)) ;) (expression_statement "*(int *)(puVar51 + -100) = iVar5;" (assignment_expression "*(int *)(puVar51 + -100) = iVar5" (pointer_expression "*(int *)(puVar51 + -100)" * (cast_expression "(int *)(puVar51 + -100)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar51 + -100)" ( (binary_expression "puVar51 + -100" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(puVar51 + -0x68) = iVar32;" (assignment_expression "*(int *)(puVar51 + -0x68) = iVar32" (pointer_expression "*(int *)(puVar51 + -0x68)" * (cast_expression "(int *)(puVar51 + -0x68)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar51 + -0x68)" ( (binary_expression "puVar51 + -0x68" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(mpz_ptr *)(puVar51 + -0x6c) = p_Var41;" (assignment_expression "*(mpz_ptr *)(puVar51 + -0x6c) = p_Var41" (pointer_expression "*(mpz_ptr *)(puVar51 + -0x6c)" * (cast_expression "(mpz_ptr *)(puVar51 + -0x6c)" ( (type_descriptor "mpz_ptr *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar51 + -0x6c)" ( (binary_expression "puVar51 + -0x6c" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(mpz_ptr *)(puVar51 + -0x70) = p_Var39;" (assignment_expression "*(mpz_ptr *)(puVar51 + -0x70) = p_Var39" (pointer_expression "*(mpz_ptr *)(puVar51 + -0x70)" * (cast_expression "(mpz_ptr *)(puVar51 + -0x70)" ( (type_descriptor "mpz_ptr *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar51 + -0x70)" ( (binary_expression "puVar51 + -0x70" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(mpz_ptr *)(puVar51 + -0x7c) = p_Var33;" (assignment_expression "*(mpz_ptr *)(puVar51 + -0x7c) = p_Var33" (pointer_expression "*(mpz_ptr *)(puVar51 + -0x7c)" * (cast_expression "(mpz_ptr *)(puVar51 + -0x7c)" ( (type_descriptor "mpz_ptr *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar51 + -0x7c)" ( (binary_expression "puVar51 + -0x7c" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar51 + -0x80) = 0;" (assignment_expression "*(undefined4 *)(puVar51 + -0x80) = 0" (pointer_expression "*(undefined4 *)(puVar51 + -0x80)" * (cast_expression "(undefined4 *)(puVar51 + -0x80)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar51 + -0x80)" ( (binary_expression "puVar51 + -0x80" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(int *)(puVar51 + -0x84) = *piVar35;" (assignment_expression "*(int *)(puVar51 + -0x84) = *piVar35" (pointer_expression "*(int *)(puVar51 + -0x84)" * (cast_expression "(int *)(puVar51 + -0x84)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar51 + -0x84)" ( (binary_expression "puVar51 + -0x84" identifier + number_literal) )))) = (pointer_expression "*piVar35" * identifier)) ;) (expression_statement "p_Var34 = r_00;" (assignment_expression "p_Var34 = r_00" identifier = identifier) ;) (expression_statement "p_Var23 = p_Var22;" (assignment_expression "p_Var23 = p_Var22" identifier = identifier) ;) (if_statement "if (p_Var22 < p_Var25) {\n        r_00->_mp_size = 0;\n        k_00 = (mpz_ptr)0x0;\n      }\n      else {\n        k_00 = p_Var25;\n        if ((mpz_ptr)((int)p_Var22 - (int)p_Var25) <= p_Var25) {\n          k_00 = (mpz_ptr)((int)p_Var22 - (int)p_Var25);\n        }\n        p_Var25 = k_00;\n        p_Var39 = p_Var22;\n        if (k_00 < (mpz_ptr)0x2) {\n          if (k_00 == (mpz_ptr)0x0) {\n            p_Var39 = (mpz_ptr)&DAT_00000001;\n          }\n          *r_00->_mp_d = (mp_limb_t)p_Var39;\n          r_00->_mp_size = 1;\n          puVar53 = puVar50 + -0x90;\n        }\n        else if (p_Var22 < (mpz_ptr)0x23) {\n          p_Var3 = k_00 + -1;\n          iVar5 = *(int *)(pcVar55 + 0x7aa7c);\n          p_Var23 = (mpz_ptr)r_00->_mp_d;\n          uVar20 = (int)p_Var22 - (int)k_00;\n          p_Var39 = (mpz_ptr)(iVar5 + ((uint)p_Var22 >> 1));\n          k_00 = (mpz_ptr)(iVar5 + ((uint)k_00 >> 1));\n          p_Var25 = (mpz_ptr)(uint)*(byte *)((int)&k_00[-1]._mp_d + 3);\n          p_Var34 = (mpz_ptr)(uint)*(byte *)(iVar5 + (uVar20 >> 1) + -1);\n          p_Var23->_mp_alloc =\n               *(int *)((int)((int)&p_Var3->_mp_d + 2) * 4 + *(int *)(pcVar55 + 0x7a8c8) + 0x35b4) *\n               *(int *)(*(int *)(pcVar55 + 0x7ad64) + (int)p_Var22 * 4) *\n               *(int *)((uVar20 - 2) * 4 + *(int *)(pcVar55 + 0x7a8c8) + 0x35b4) <<\n               (((uint)*(byte *)((int)&p_Var39[-1]._mp_d + 3) - (int)p_Var25) - (int)p_Var34 & 0x1f)\n          ;\n          r_00->_mp_size = 1;\n          puVar53 = puVar50 + -0x90;\n        }\n        else if (k_00 < (mpz_ptr)&DAT_00000011) {\n          mpz_smallk_bin_uiui(r_00,(ulong)p_Var22,(ulong)k_00);\n          pcVar48 = *(code **)(puVar51 + -0xf0);\n          puVar53 = puVar50 + -0x90;\n        }\n        else if (k_00 < (mpz_ptr)&DAT_00000021) {\n          uVar20 = (uint)k_00 >> 1;\n          uVar40 = (int)p_Var22 - uVar20;\n          mpz_smallk_bin_uiui(r_00,(ulong)p_Var22,uVar20);\n          iVar5 = *(int *)(puVar51 + -0xf0);\n          uVar6 = (int)k_00 - uVar20;\n          if (uVar40 < 0x23) {\n            puVar54 = (undefined1 *)r_00->_mp_size;\n            if ((int)puVar54 < r_00->_mp_alloc) {\n              p_Var33 = (mpz_ptr)r_00->_mp_d;\n            }\n            else {\n              p_Var33 = (mpz_ptr)(**(code **)(iVar5 + -0x7a80))(r_00,puVar54 + 1);\n              iVar5 = *(int *)(puVar51 + -0xf0);\n            }\n            iVar32 = *(int *)(iVar5 + -0x7e20);\n            iVar28 = *(int *)(iVar5 + -0x7fd4) + 0x35b4;\n            iVar28 = (**(code **)(iVar5 + -0x7f9c))\n                               (p_Var33,p_Var33,puVar54,\n                                *(int *)((((int)p_Var22 - (int)k_00) - 2U) * 4 + iVar28) *\n                                *(int *)(*(int *)(iVar5 + -0x7b38) + uVar40 * 4) *\n                                *(int *)((uVar6 - 2) * 4 + iVar28) <<\n                                (((uint)*(byte *)(iVar32 + (uVar40 >> 1) + -1) -\n                                 (uint)*(byte *)(iVar32 + (uVar6 >> 1) + -1)) -\n                                 (uint)*(byte *)(iVar32 + ((uint)((int)p_Var22 - (int)k_00) >> 1) +\n                                                -1) & 0x1f));\n            iVar5 = *(int *)(puVar51 + -0xf0);\n            k_00 = (mpz_ptr)(puVar54 + (iVar28 != 0));\n            (&p_Var33->_mp_alloc)[(int)puVar54] = iVar28;\n          }\n          else {\n            *(undefined4 *)(puVar51 + -0xe4) = 0x15;\n            *(undefined1 **)(puVar51 + -0xdc) = puVar51 + -0xd8;\n            mpz_smallk_bin_uiui((mpz_ptr)(puVar51 + -0xe4),uVar40,uVar6);\n            (**(code **)(*(int *)(puVar51 + -0xf0) + -0x7ba8))(r_00,r_00,(mpz_ptr)(puVar51 + -0xe4))\n            ;\n            iVar5 = *(int *)(puVar51 + -0xf0);\n            p_Var33 = (mpz_ptr)r_00->_mp_d;\n            k_00 = (mpz_ptr)r_00->_mp_size;\n          }\n          pcVar55 = *(code **)(iVar5 + -0x7bb4);\n          p_Var41 = (mpz_ptr)((uint)*(byte *)((uVar6 - 8) + *(int *)(iVar5 + -0x7fd4) + 0x3550) -\n                             (uint)(uVar20 != uVar6));\n          *(undefined4 *)(puVar51 + -0xf8) =\n               *(undefined4 *)((uVar6 - 8) * 4 + *(int *)(iVar5 + -0x7fd4) + 0x355c);\n          *(mpz_ptr *)(puVar51 + -0xf4) = p_Var41;\n          p_Var34 = p_Var33;\n          p_Var23 = p_Var33;\n          p_Var25 = k_00;\n          (*pcVar55)();\n          pcVar48 = *(code **)(puVar51 + -0xf0);\n          if (*(int *)((int)p_Var33 + (int)k_00 * 4 + -4) == 0) {\n            piVar37 = &p_Var33->_mp_alloc + (int)k_00;\n            do {\n              piVar19 = piVar37 + -2;\n              k_00 = (mpz_ptr)((int)&k_00[-1]._mp_d + 3);\n              piVar37 = piVar37 + -1;\n            } while (*piVar19 == 0);\n          }\n          r_00->_mp_size = (int)k_00;\n          puVar53 = puVar54;\n        }\n        else if ((k_00 < (mpz_ptr)0x3e8) || (k_00 <= (mpz_ptr)((uint)p_Var22 >> 4))) {\n          mpz_bdiv_bin_uiui(r_00,(ulong)p_Var22,(ulong)k_00);\n          pcVar48 = *(code **)(puVar51 + -0xf0);\n          puVar53 = puVar50 + -0x90;\n        }\n        else {\n          mpz_goetgheluck_bin_uiui(r_00,(ulong)p_Var22,(ulong)k_00);\n          pcVar48 = *(code **)(puVar51 + -0xf0);\n          puVar53 = puVar50 + -0x90;\n        }\n      }" if (parenthesized_expression "(p_Var22 < p_Var25)" ( (binary_expression "p_Var22 < p_Var25" identifier < identifier) )) (compound_statement "{\n        r_00->_mp_size = 0;\n        k_00 = (mpz_ptr)0x0;\n      }" { (expression_statement "r_00->_mp_size = 0;" (assignment_expression "r_00->_mp_size = 0" (field_expression "r_00->_mp_size" identifier -> field_identifier) = number_literal) ;) (expression_statement "k_00 = (mpz_ptr)0x0;" (assignment_expression "k_00 = (mpz_ptr)0x0" identifier = (cast_expression "(mpz_ptr)0x0" ( (type_descriptor "mpz_ptr" type_identifier) ) number_literal)) ;) }) (else_clause "else {\n        k_00 = p_Var25;\n        if ((mpz_ptr)((int)p_Var22 - (int)p_Var25) <= p_Var25) {\n          k_00 = (mpz_ptr)((int)p_Var22 - (int)p_Var25);\n        }\n        p_Var25 = k_00;\n        p_Var39 = p_Var22;\n        if (k_00 < (mpz_ptr)0x2) {\n          if (k_00 == (mpz_ptr)0x0) {\n            p_Var39 = (mpz_ptr)&DAT_00000001;\n          }\n          *r_00->_mp_d = (mp_limb_t)p_Var39;\n          r_00->_mp_size = 1;\n          puVar53 = puVar50 + -0x90;\n        }\n        else if (p_Var22 < (mpz_ptr)0x23) {\n          p_Var3 = k_00 + -1;\n          iVar5 = *(int *)(pcVar55 + 0x7aa7c);\n          p_Var23 = (mpz_ptr)r_00->_mp_d;\n          uVar20 = (int)p_Var22 - (int)k_00;\n          p_Var39 = (mpz_ptr)(iVar5 + ((uint)p_Var22 >> 1));\n          k_00 = (mpz_ptr)(iVar5 + ((uint)k_00 >> 1));\n          p_Var25 = (mpz_ptr)(uint)*(byte *)((int)&k_00[-1]._mp_d + 3);\n          p_Var34 = (mpz_ptr)(uint)*(byte *)(iVar5 + (uVar20 >> 1) + -1);\n          p_Var23->_mp_alloc =\n               *(int *)((int)((int)&p_Var3->_mp_d + 2) * 4 + *(int *)(pcVar55 + 0x7a8c8) + 0x35b4) *\n               *(int *)(*(int *)(pcVar55 + 0x7ad64) + (int)p_Var22 * 4) *\n               *(int *)((uVar20 - 2) * 4 + *(int *)(pcVar55 + 0x7a8c8) + 0x35b4) <<\n               (((uint)*(byte *)((int)&p_Var39[-1]._mp_d + 3) - (int)p_Var25) - (int)p_Var34 & 0x1f)\n          ;\n          r_00->_mp_size = 1;\n          puVar53 = puVar50 + -0x90;\n        }\n        else if (k_00 < (mpz_ptr)&DAT_00000011) {\n          mpz_smallk_bin_uiui(r_00,(ulong)p_Var22,(ulong)k_00);\n          pcVar48 = *(code **)(puVar51 + -0xf0);\n          puVar53 = puVar50 + -0x90;\n        }\n        else if (k_00 < (mpz_ptr)&DAT_00000021) {\n          uVar20 = (uint)k_00 >> 1;\n          uVar40 = (int)p_Var22 - uVar20;\n          mpz_smallk_bin_uiui(r_00,(ulong)p_Var22,uVar20);\n          iVar5 = *(int *)(puVar51 + -0xf0);\n          uVar6 = (int)k_00 - uVar20;\n          if (uVar40 < 0x23) {\n            puVar54 = (undefined1 *)r_00->_mp_size;\n            if ((int)puVar54 < r_00->_mp_alloc) {\n              p_Var33 = (mpz_ptr)r_00->_mp_d;\n            }\n            else {\n              p_Var33 = (mpz_ptr)(**(code **)(iVar5 + -0x7a80))(r_00,puVar54 + 1);\n              iVar5 = *(int *)(puVar51 + -0xf0);\n            }\n            iVar32 = *(int *)(iVar5 + -0x7e20);\n            iVar28 = *(int *)(iVar5 + -0x7fd4) + 0x35b4;\n            iVar28 = (**(code **)(iVar5 + -0x7f9c))\n                               (p_Var33,p_Var33,puVar54,\n                                *(int *)((((int)p_Var22 - (int)k_00) - 2U) * 4 + iVar28) *\n                                *(int *)(*(int *)(iVar5 + -0x7b38) + uVar40 * 4) *\n                                *(int *)((uVar6 - 2) * 4 + iVar28) <<\n                                (((uint)*(byte *)(iVar32 + (uVar40 >> 1) + -1) -\n                                 (uint)*(byte *)(iVar32 + (uVar6 >> 1) + -1)) -\n                                 (uint)*(byte *)(iVar32 + ((uint)((int)p_Var22 - (int)k_00) >> 1) +\n                                                -1) & 0x1f));\n            iVar5 = *(int *)(puVar51 + -0xf0);\n            k_00 = (mpz_ptr)(puVar54 + (iVar28 != 0));\n            (&p_Var33->_mp_alloc)[(int)puVar54] = iVar28;\n          }\n          else {\n            *(undefined4 *)(puVar51 + -0xe4) = 0x15;\n            *(undefined1 **)(puVar51 + -0xdc) = puVar51 + -0xd8;\n            mpz_smallk_bin_uiui((mpz_ptr)(puVar51 + -0xe4),uVar40,uVar6);\n            (**(code **)(*(int *)(puVar51 + -0xf0) + -0x7ba8))(r_00,r_00,(mpz_ptr)(puVar51 + -0xe4))\n            ;\n            iVar5 = *(int *)(puVar51 + -0xf0);\n            p_Var33 = (mpz_ptr)r_00->_mp_d;\n            k_00 = (mpz_ptr)r_00->_mp_size;\n          }\n          pcVar55 = *(code **)(iVar5 + -0x7bb4);\n          p_Var41 = (mpz_ptr)((uint)*(byte *)((uVar6 - 8) + *(int *)(iVar5 + -0x7fd4) + 0x3550) -\n                             (uint)(uVar20 != uVar6));\n          *(undefined4 *)(puVar51 + -0xf8) =\n               *(undefined4 *)((uVar6 - 8) * 4 + *(int *)(iVar5 + -0x7fd4) + 0x355c);\n          *(mpz_ptr *)(puVar51 + -0xf4) = p_Var41;\n          p_Var34 = p_Var33;\n          p_Var23 = p_Var33;\n          p_Var25 = k_00;\n          (*pcVar55)();\n          pcVar48 = *(code **)(puVar51 + -0xf0);\n          if (*(int *)((int)p_Var33 + (int)k_00 * 4 + -4) == 0) {\n            piVar37 = &p_Var33->_mp_alloc + (int)k_00;\n            do {\n              piVar19 = piVar37 + -2;\n              k_00 = (mpz_ptr)((int)&k_00[-1]._mp_d + 3);\n              piVar37 = piVar37 + -1;\n            } while (*piVar19 == 0);\n          }\n          r_00->_mp_size = (int)k_00;\n          puVar53 = puVar54;\n        }\n        else if ((k_00 < (mpz_ptr)0x3e8) || (k_00 <= (mpz_ptr)((uint)p_Var22 >> 4))) {\n          mpz_bdiv_bin_uiui(r_00,(ulong)p_Var22,(ulong)k_00);\n          pcVar48 = *(code **)(puVar51 + -0xf0);\n          puVar53 = puVar50 + -0x90;\n        }\n        else {\n          mpz_goetgheluck_bin_uiui(r_00,(ulong)p_Var22,(ulong)k_00);\n          pcVar48 = *(code **)(puVar51 + -0xf0);\n          puVar53 = puVar50 + -0x90;\n        }\n      }" else (compound_statement "{\n        k_00 = p_Var25;\n        if ((mpz_ptr)((int)p_Var22 - (int)p_Var25) <= p_Var25) {\n          k_00 = (mpz_ptr)((int)p_Var22 - (int)p_Var25);\n        }\n        p_Var25 = k_00;\n        p_Var39 = p_Var22;\n        if (k_00 < (mpz_ptr)0x2) {\n          if (k_00 == (mpz_ptr)0x0) {\n            p_Var39 = (mpz_ptr)&DAT_00000001;\n          }\n          *r_00->_mp_d = (mp_limb_t)p_Var39;\n          r_00->_mp_size = 1;\n          puVar53 = puVar50 + -0x90;\n        }\n        else if (p_Var22 < (mpz_ptr)0x23) {\n          p_Var3 = k_00 + -1;\n          iVar5 = *(int *)(pcVar55 + 0x7aa7c);\n          p_Var23 = (mpz_ptr)r_00->_mp_d;\n          uVar20 = (int)p_Var22 - (int)k_00;\n          p_Var39 = (mpz_ptr)(iVar5 + ((uint)p_Var22 >> 1));\n          k_00 = (mpz_ptr)(iVar5 + ((uint)k_00 >> 1));\n          p_Var25 = (mpz_ptr)(uint)*(byte *)((int)&k_00[-1]._mp_d + 3);\n          p_Var34 = (mpz_ptr)(uint)*(byte *)(iVar5 + (uVar20 >> 1) + -1);\n          p_Var23->_mp_alloc =\n               *(int *)((int)((int)&p_Var3->_mp_d + 2) * 4 + *(int *)(pcVar55 + 0x7a8c8) + 0x35b4) *\n               *(int *)(*(int *)(pcVar55 + 0x7ad64) + (int)p_Var22 * 4) *\n               *(int *)((uVar20 - 2) * 4 + *(int *)(pcVar55 + 0x7a8c8) + 0x35b4) <<\n               (((uint)*(byte *)((int)&p_Var39[-1]._mp_d + 3) - (int)p_Var25) - (int)p_Var34 & 0x1f)\n          ;\n          r_00->_mp_size = 1;\n          puVar53 = puVar50 + -0x90;\n        }\n        else if (k_00 < (mpz_ptr)&DAT_00000011) {\n          mpz_smallk_bin_uiui(r_00,(ulong)p_Var22,(ulong)k_00);\n          pcVar48 = *(code **)(puVar51 + -0xf0);\n          puVar53 = puVar50 + -0x90;\n        }\n        else if (k_00 < (mpz_ptr)&DAT_00000021) {\n          uVar20 = (uint)k_00 >> 1;\n          uVar40 = (int)p_Var22 - uVar20;\n          mpz_smallk_bin_uiui(r_00,(ulong)p_Var22,uVar20);\n          iVar5 = *(int *)(puVar51 + -0xf0);\n          uVar6 = (int)k_00 - uVar20;\n          if (uVar40 < 0x23) {\n            puVar54 = (undefined1 *)r_00->_mp_size;\n            if ((int)puVar54 < r_00->_mp_alloc) {\n              p_Var33 = (mpz_ptr)r_00->_mp_d;\n            }\n            else {\n              p_Var33 = (mpz_ptr)(**(code **)(iVar5 + -0x7a80))(r_00,puVar54 + 1);\n              iVar5 = *(int *)(puVar51 + -0xf0);\n            }\n            iVar32 = *(int *)(iVar5 + -0x7e20);\n            iVar28 = *(int *)(iVar5 + -0x7fd4) + 0x35b4;\n            iVar28 = (**(code **)(iVar5 + -0x7f9c))\n                               (p_Var33,p_Var33,puVar54,\n                                *(int *)((((int)p_Var22 - (int)k_00) - 2U) * 4 + iVar28) *\n                                *(int *)(*(int *)(iVar5 + -0x7b38) + uVar40 * 4) *\n                                *(int *)((uVar6 - 2) * 4 + iVar28) <<\n                                (((uint)*(byte *)(iVar32 + (uVar40 >> 1) + -1) -\n                                 (uint)*(byte *)(iVar32 + (uVar6 >> 1) + -1)) -\n                                 (uint)*(byte *)(iVar32 + ((uint)((int)p_Var22 - (int)k_00) >> 1) +\n                                                -1) & 0x1f));\n            iVar5 = *(int *)(puVar51 + -0xf0);\n            k_00 = (mpz_ptr)(puVar54 + (iVar28 != 0));\n            (&p_Var33->_mp_alloc)[(int)puVar54] = iVar28;\n          }\n          else {\n            *(undefined4 *)(puVar51 + -0xe4) = 0x15;\n            *(undefined1 **)(puVar51 + -0xdc) = puVar51 + -0xd8;\n            mpz_smallk_bin_uiui((mpz_ptr)(puVar51 + -0xe4),uVar40,uVar6);\n            (**(code **)(*(int *)(puVar51 + -0xf0) + -0x7ba8))(r_00,r_00,(mpz_ptr)(puVar51 + -0xe4))\n            ;\n            iVar5 = *(int *)(puVar51 + -0xf0);\n            p_Var33 = (mpz_ptr)r_00->_mp_d;\n            k_00 = (mpz_ptr)r_00->_mp_size;\n          }\n          pcVar55 = *(code **)(iVar5 + -0x7bb4);\n          p_Var41 = (mpz_ptr)((uint)*(byte *)((uVar6 - 8) + *(int *)(iVar5 + -0x7fd4) + 0x3550) -\n                             (uint)(uVar20 != uVar6));\n          *(undefined4 *)(puVar51 + -0xf8) =\n               *(undefined4 *)((uVar6 - 8) * 4 + *(int *)(iVar5 + -0x7fd4) + 0x355c);\n          *(mpz_ptr *)(puVar51 + -0xf4) = p_Var41;\n          p_Var34 = p_Var33;\n          p_Var23 = p_Var33;\n          p_Var25 = k_00;\n          (*pcVar55)();\n          pcVar48 = *(code **)(puVar51 + -0xf0);\n          if (*(int *)((int)p_Var33 + (int)k_00 * 4 + -4) == 0) {\n            piVar37 = &p_Var33->_mp_alloc + (int)k_00;\n            do {\n              piVar19 = piVar37 + -2;\n              k_00 = (mpz_ptr)((int)&k_00[-1]._mp_d + 3);\n              piVar37 = piVar37 + -1;\n            } while (*piVar19 == 0);\n          }\n          r_00->_mp_size = (int)k_00;\n          puVar53 = puVar54;\n        }\n        else if ((k_00 < (mpz_ptr)0x3e8) || (k_00 <= (mpz_ptr)((uint)p_Var22 >> 4))) {\n          mpz_bdiv_bin_uiui(r_00,(ulong)p_Var22,(ulong)k_00);\n          pcVar48 = *(code **)(puVar51 + -0xf0);\n          puVar53 = puVar50 + -0x90;\n        }\n        else {\n          mpz_goetgheluck_bin_uiui(r_00,(ulong)p_Var22,(ulong)k_00);\n          pcVar48 = *(code **)(puVar51 + -0xf0);\n          puVar53 = puVar50 + -0x90;\n        }\n      }" { (expression_statement "k_00 = p_Var25;" (assignment_expression "k_00 = p_Var25" identifier = identifier) ;) (if_statement "if ((mpz_ptr)((int)p_Var22 - (int)p_Var25) <= p_Var25) {\n          k_00 = (mpz_ptr)((int)p_Var22 - (int)p_Var25);\n        }" if (parenthesized_expression "((mpz_ptr)((int)p_Var22 - (int)p_Var25) <= p_Var25)" ( (binary_expression "(mpz_ptr)((int)p_Var22 - (int)p_Var25) <= p_Var25" (call_expression "(mpz_ptr)((int)p_Var22 - (int)p_Var25)" (parenthesized_expression "(mpz_ptr)" ( identifier )) (argument_list "((int)p_Var22 - (int)p_Var25)" ( (binary_expression "(int)p_Var22 - (int)p_Var25" (cast_expression "(int)p_Var22" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)p_Var25" ( (type_descriptor "int" primitive_type) ) identifier)) ))) <= identifier) )) (compound_statement "{\n          k_00 = (mpz_ptr)((int)p_Var22 - (int)p_Var25);\n        }" { (expression_statement "k_00 = (mpz_ptr)((int)p_Var22 - (int)p_Var25);" (assignment_expression "k_00 = (mpz_ptr)((int)p_Var22 - (int)p_Var25)" identifier = (call_expression "(mpz_ptr)((int)p_Var22 - (int)p_Var25)" (parenthesized_expression "(mpz_ptr)" ( identifier )) (argument_list "((int)p_Var22 - (int)p_Var25)" ( (binary_expression "(int)p_Var22 - (int)p_Var25" (cast_expression "(int)p_Var22" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)p_Var25" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) })) (expression_statement "p_Var25 = k_00;" (assignment_expression "p_Var25 = k_00" identifier = identifier) ;) (expression_statement "p_Var39 = p_Var22;" (assignment_expression "p_Var39 = p_Var22" identifier = identifier) ;) (if_statement "if (k_00 < (mpz_ptr)0x2) {\n          if (k_00 == (mpz_ptr)0x0) {\n            p_Var39 = (mpz_ptr)&DAT_00000001;\n          }\n          *r_00->_mp_d = (mp_limb_t)p_Var39;\n          r_00->_mp_size = 1;\n          puVar53 = puVar50 + -0x90;\n        }\n        else if (p_Var22 < (mpz_ptr)0x23) {\n          p_Var3 = k_00 + -1;\n          iVar5 = *(int *)(pcVar55 + 0x7aa7c);\n          p_Var23 = (mpz_ptr)r_00->_mp_d;\n          uVar20 = (int)p_Var22 - (int)k_00;\n          p_Var39 = (mpz_ptr)(iVar5 + ((uint)p_Var22 >> 1));\n          k_00 = (mpz_ptr)(iVar5 + ((uint)k_00 >> 1));\n          p_Var25 = (mpz_ptr)(uint)*(byte *)((int)&k_00[-1]._mp_d + 3);\n          p_Var34 = (mpz_ptr)(uint)*(byte *)(iVar5 + (uVar20 >> 1) + -1);\n          p_Var23->_mp_alloc =\n               *(int *)((int)((int)&p_Var3->_mp_d + 2) * 4 + *(int *)(pcVar55 + 0x7a8c8) + 0x35b4) *\n               *(int *)(*(int *)(pcVar55 + 0x7ad64) + (int)p_Var22 * 4) *\n               *(int *)((uVar20 - 2) * 4 + *(int *)(pcVar55 + 0x7a8c8) + 0x35b4) <<\n               (((uint)*(byte *)((int)&p_Var39[-1]._mp_d + 3) - (int)p_Var25) - (int)p_Var34 & 0x1f)\n          ;\n          r_00->_mp_size = 1;\n          puVar53 = puVar50 + -0x90;\n        }\n        else if (k_00 < (mpz_ptr)&DAT_00000011) {\n          mpz_smallk_bin_uiui(r_00,(ulong)p_Var22,(ulong)k_00);\n          pcVar48 = *(code **)(puVar51 + -0xf0);\n          puVar53 = puVar50 + -0x90;\n        }\n        else if (k_00 < (mpz_ptr)&DAT_00000021) {\n          uVar20 = (uint)k_00 >> 1;\n          uVar40 = (int)p_Var22 - uVar20;\n          mpz_smallk_bin_uiui(r_00,(ulong)p_Var22,uVar20);\n          iVar5 = *(int *)(puVar51 + -0xf0);\n          uVar6 = (int)k_00 - uVar20;\n          if (uVar40 < 0x23) {\n            puVar54 = (undefined1 *)r_00->_mp_size;\n            if ((int)puVar54 < r_00->_mp_alloc) {\n              p_Var33 = (mpz_ptr)r_00->_mp_d;\n            }\n            else {\n              p_Var33 = (mpz_ptr)(**(code **)(iVar5 + -0x7a80))(r_00,puVar54 + 1);\n              iVar5 = *(int *)(puVar51 + -0xf0);\n            }\n            iVar32 = *(int *)(iVar5 + -0x7e20);\n            iVar28 = *(int *)(iVar5 + -0x7fd4) + 0x35b4;\n            iVar28 = (**(code **)(iVar5 + -0x7f9c))\n                               (p_Var33,p_Var33,puVar54,\n                                *(int *)((((int)p_Var22 - (int)k_00) - 2U) * 4 + iVar28) *\n                                *(int *)(*(int *)(iVar5 + -0x7b38) + uVar40 * 4) *\n                                *(int *)((uVar6 - 2) * 4 + iVar28) <<\n                                (((uint)*(byte *)(iVar32 + (uVar40 >> 1) + -1) -\n                                 (uint)*(byte *)(iVar32 + (uVar6 >> 1) + -1)) -\n                                 (uint)*(byte *)(iVar32 + ((uint)((int)p_Var22 - (int)k_00) >> 1) +\n                                                -1) & 0x1f));\n            iVar5 = *(int *)(puVar51 + -0xf0);\n            k_00 = (mpz_ptr)(puVar54 + (iVar28 != 0));\n            (&p_Var33->_mp_alloc)[(int)puVar54] = iVar28;\n          }\n          else {\n            *(undefined4 *)(puVar51 + -0xe4) = 0x15;\n            *(undefined1 **)(puVar51 + -0xdc) = puVar51 + -0xd8;\n            mpz_smallk_bin_uiui((mpz_ptr)(puVar51 + -0xe4),uVar40,uVar6);\n            (**(code **)(*(int *)(puVar51 + -0xf0) + -0x7ba8))(r_00,r_00,(mpz_ptr)(puVar51 + -0xe4))\n            ;\n            iVar5 = *(int *)(puVar51 + -0xf0);\n            p_Var33 = (mpz_ptr)r_00->_mp_d;\n            k_00 = (mpz_ptr)r_00->_mp_size;\n          }\n          pcVar55 = *(code **)(iVar5 + -0x7bb4);\n          p_Var41 = (mpz_ptr)((uint)*(byte *)((uVar6 - 8) + *(int *)(iVar5 + -0x7fd4) + 0x3550) -\n                             (uint)(uVar20 != uVar6));\n          *(undefined4 *)(puVar51 + -0xf8) =\n               *(undefined4 *)((uVar6 - 8) * 4 + *(int *)(iVar5 + -0x7fd4) + 0x355c);\n          *(mpz_ptr *)(puVar51 + -0xf4) = p_Var41;\n          p_Var34 = p_Var33;\n          p_Var23 = p_Var33;\n          p_Var25 = k_00;\n          (*pcVar55)();\n          pcVar48 = *(code **)(puVar51 + -0xf0);\n          if (*(int *)((int)p_Var33 + (int)k_00 * 4 + -4) == 0) {\n            piVar37 = &p_Var33->_mp_alloc + (int)k_00;\n            do {\n              piVar19 = piVar37 + -2;\n              k_00 = (mpz_ptr)((int)&k_00[-1]._mp_d + 3);\n              piVar37 = piVar37 + -1;\n            } while (*piVar19 == 0);\n          }\n          r_00->_mp_size = (int)k_00;\n          puVar53 = puVar54;\n        }\n        else if ((k_00 < (mpz_ptr)0x3e8) || (k_00 <= (mpz_ptr)((uint)p_Var22 >> 4))) {\n          mpz_bdiv_bin_uiui(r_00,(ulong)p_Var22,(ulong)k_00);\n          pcVar48 = *(code **)(puVar51 + -0xf0);\n          puVar53 = puVar50 + -0x90;\n        }\n        else {\n          mpz_goetgheluck_bin_uiui(r_00,(ulong)p_Var22,(ulong)k_00);\n          pcVar48 = *(code **)(puVar51 + -0xf0);\n          puVar53 = puVar50 + -0x90;\n        }" if (parenthesized_expression "(k_00 < (mpz_ptr)0x2)" ( (binary_expression "k_00 < (mpz_ptr)0x2" identifier < (cast_expression "(mpz_ptr)0x2" ( (type_descriptor "mpz_ptr" type_identifier) ) number_literal)) )) (compound_statement "{\n          if (k_00 == (mpz_ptr)0x0) {\n            p_Var39 = (mpz_ptr)&DAT_00000001;\n          }\n          *r_00->_mp_d = (mp_limb_t)p_Var39;\n          r_00->_mp_size = 1;\n          puVar53 = puVar50 + -0x90;\n        }" { (if_statement "if (k_00 == (mpz_ptr)0x0) {\n            p_Var39 = (mpz_ptr)&DAT_00000001;\n          }" if (parenthesized_expression "(k_00 == (mpz_ptr)0x0)" ( (binary_expression "k_00 == (mpz_ptr)0x0" identifier == (cast_expression "(mpz_ptr)0x0" ( (type_descriptor "mpz_ptr" type_identifier) ) number_literal)) )) (compound_statement "{\n            p_Var39 = (mpz_ptr)&DAT_00000001;\n          }" { (expression_statement "p_Var39 = (mpz_ptr)&DAT_00000001;" (assignment_expression "p_Var39 = (mpz_ptr)&DAT_00000001" identifier = (binary_expression "(mpz_ptr)&DAT_00000001" (parenthesized_expression "(mpz_ptr)" ( identifier )) & identifier)) ;) })) (expression_statement "*r_00->_mp_d = (mp_limb_t)p_Var39;" (assignment_expression "*r_00->_mp_d = (mp_limb_t)p_Var39" (pointer_expression "*r_00->_mp_d" * (field_expression "r_00->_mp_d" identifier -> field_identifier)) = (cast_expression "(mp_limb_t)p_Var39" ( (type_descriptor "mp_limb_t" type_identifier) ) identifier)) ;) (expression_statement "r_00->_mp_size = 1;" (assignment_expression "r_00->_mp_size = 1" (field_expression "r_00->_mp_size" identifier -> field_identifier) = number_literal) ;) (expression_statement "puVar53 = puVar50 + -0x90;" (assignment_expression "puVar53 = puVar50 + -0x90" identifier = (binary_expression "puVar50 + -0x90" identifier + number_literal)) ;) }) (else_clause "else if (p_Var22 < (mpz_ptr)0x23) {\n          p_Var3 = k_00 + -1;\n          iVar5 = *(int *)(pcVar55 + 0x7aa7c);\n          p_Var23 = (mpz_ptr)r_00->_mp_d;\n          uVar20 = (int)p_Var22 - (int)k_00;\n          p_Var39 = (mpz_ptr)(iVar5 + ((uint)p_Var22 >> 1));\n          k_00 = (mpz_ptr)(iVar5 + ((uint)k_00 >> 1));\n          p_Var25 = (mpz_ptr)(uint)*(byte *)((int)&k_00[-1]._mp_d + 3);\n          p_Var34 = (mpz_ptr)(uint)*(byte *)(iVar5 + (uVar20 >> 1) + -1);\n          p_Var23->_mp_alloc =\n               *(int *)((int)((int)&p_Var3->_mp_d + 2) * 4 + *(int *)(pcVar55 + 0x7a8c8) + 0x35b4) *\n               *(int *)(*(int *)(pcVar55 + 0x7ad64) + (int)p_Var22 * 4) *\n               *(int *)((uVar20 - 2) * 4 + *(int *)(pcVar55 + 0x7a8c8) + 0x35b4) <<\n               (((uint)*(byte *)((int)&p_Var39[-1]._mp_d + 3) - (int)p_Var25) - (int)p_Var34 & 0x1f)\n          ;\n          r_00->_mp_size = 1;\n          puVar53 = puVar50 + -0x90;\n        }\n        else if (k_00 < (mpz_ptr)&DAT_00000011) {\n          mpz_smallk_bin_uiui(r_00,(ulong)p_Var22,(ulong)k_00);\n          pcVar48 = *(code **)(puVar51 + -0xf0);\n          puVar53 = puVar50 + -0x90;\n        }\n        else if (k_00 < (mpz_ptr)&DAT_00000021) {\n          uVar20 = (uint)k_00 >> 1;\n          uVar40 = (int)p_Var22 - uVar20;\n          mpz_smallk_bin_uiui(r_00,(ulong)p_Var22,uVar20);\n          iVar5 = *(int *)(puVar51 + -0xf0);\n          uVar6 = (int)k_00 - uVar20;\n          if (uVar40 < 0x23) {\n            puVar54 = (undefined1 *)r_00->_mp_size;\n            if ((int)puVar54 < r_00->_mp_alloc) {\n              p_Var33 = (mpz_ptr)r_00->_mp_d;\n            }\n            else {\n              p_Var33 = (mpz_ptr)(**(code **)(iVar5 + -0x7a80))(r_00,puVar54 + 1);\n              iVar5 = *(int *)(puVar51 + -0xf0);\n            }\n            iVar32 = *(int *)(iVar5 + -0x7e20);\n            iVar28 = *(int *)(iVar5 + -0x7fd4) + 0x35b4;\n            iVar28 = (**(code **)(iVar5 + -0x7f9c))\n                               (p_Var33,p_Var33,puVar54,\n                                *(int *)((((int)p_Var22 - (int)k_00) - 2U) * 4 + iVar28) *\n                                *(int *)(*(int *)(iVar5 + -0x7b38) + uVar40 * 4) *\n                                *(int *)((uVar6 - 2) * 4 + iVar28) <<\n                                (((uint)*(byte *)(iVar32 + (uVar40 >> 1) + -1) -\n                                 (uint)*(byte *)(iVar32 + (uVar6 >> 1) + -1)) -\n                                 (uint)*(byte *)(iVar32 + ((uint)((int)p_Var22 - (int)k_00) >> 1) +\n                                                -1) & 0x1f));\n            iVar5 = *(int *)(puVar51 + -0xf0);\n            k_00 = (mpz_ptr)(puVar54 + (iVar28 != 0));\n            (&p_Var33->_mp_alloc)[(int)puVar54] = iVar28;\n          }\n          else {\n            *(undefined4 *)(puVar51 + -0xe4) = 0x15;\n            *(undefined1 **)(puVar51 + -0xdc) = puVar51 + -0xd8;\n            mpz_smallk_bin_uiui((mpz_ptr)(puVar51 + -0xe4),uVar40,uVar6);\n            (**(code **)(*(int *)(puVar51 + -0xf0) + -0x7ba8))(r_00,r_00,(mpz_ptr)(puVar51 + -0xe4))\n            ;\n            iVar5 = *(int *)(puVar51 + -0xf0);\n            p_Var33 = (mpz_ptr)r_00->_mp_d;\n            k_00 = (mpz_ptr)r_00->_mp_size;\n          }\n          pcVar55 = *(code **)(iVar5 + -0x7bb4);\n          p_Var41 = (mpz_ptr)((uint)*(byte *)((uVar6 - 8) + *(int *)(iVar5 + -0x7fd4) + 0x3550) -\n                             (uint)(uVar20 != uVar6));\n          *(undefined4 *)(puVar51 + -0xf8) =\n               *(undefined4 *)((uVar6 - 8) * 4 + *(int *)(iVar5 + -0x7fd4) + 0x355c);\n          *(mpz_ptr *)(puVar51 + -0xf4) = p_Var41;\n          p_Var34 = p_Var33;\n          p_Var23 = p_Var33;\n          p_Var25 = k_00;\n          (*pcVar55)();\n          pcVar48 = *(code **)(puVar51 + -0xf0);\n          if (*(int *)((int)p_Var33 + (int)k_00 * 4 + -4) == 0) {\n            piVar37 = &p_Var33->_mp_alloc + (int)k_00;\n            do {\n              piVar19 = piVar37 + -2;\n              k_00 = (mpz_ptr)((int)&k_00[-1]._mp_d + 3);\n              piVar37 = piVar37 + -1;\n            } while (*piVar19 == 0);\n          }\n          r_00->_mp_size = (int)k_00;\n          puVar53 = puVar54;\n        }\n        else if ((k_00 < (mpz_ptr)0x3e8) || (k_00 <= (mpz_ptr)((uint)p_Var22 >> 4))) {\n          mpz_bdiv_bin_uiui(r_00,(ulong)p_Var22,(ulong)k_00);\n          pcVar48 = *(code **)(puVar51 + -0xf0);\n          puVar53 = puVar50 + -0x90;\n        }\n        else {\n          mpz_goetgheluck_bin_uiui(r_00,(ulong)p_Var22,(ulong)k_00);\n          pcVar48 = *(code **)(puVar51 + -0xf0);\n          puVar53 = puVar50 + -0x90;\n        }" else (if_statement "if (p_Var22 < (mpz_ptr)0x23) {\n          p_Var3 = k_00 + -1;\n          iVar5 = *(int *)(pcVar55 + 0x7aa7c);\n          p_Var23 = (mpz_ptr)r_00->_mp_d;\n          uVar20 = (int)p_Var22 - (int)k_00;\n          p_Var39 = (mpz_ptr)(iVar5 + ((uint)p_Var22 >> 1));\n          k_00 = (mpz_ptr)(iVar5 + ((uint)k_00 >> 1));\n          p_Var25 = (mpz_ptr)(uint)*(byte *)((int)&k_00[-1]._mp_d + 3);\n          p_Var34 = (mpz_ptr)(uint)*(byte *)(iVar5 + (uVar20 >> 1) + -1);\n          p_Var23->_mp_alloc =\n               *(int *)((int)((int)&p_Var3->_mp_d + 2) * 4 + *(int *)(pcVar55 + 0x7a8c8) + 0x35b4) *\n               *(int *)(*(int *)(pcVar55 + 0x7ad64) + (int)p_Var22 * 4) *\n               *(int *)((uVar20 - 2) * 4 + *(int *)(pcVar55 + 0x7a8c8) + 0x35b4) <<\n               (((uint)*(byte *)((int)&p_Var39[-1]._mp_d + 3) - (int)p_Var25) - (int)p_Var34 & 0x1f)\n          ;\n          r_00->_mp_size = 1;\n          puVar53 = puVar50 + -0x90;\n        }\n        else if (k_00 < (mpz_ptr)&DAT_00000011) {\n          mpz_smallk_bin_uiui(r_00,(ulong)p_Var22,(ulong)k_00);\n          pcVar48 = *(code **)(puVar51 + -0xf0);\n          puVar53 = puVar50 + -0x90;\n        }\n        else if (k_00 < (mpz_ptr)&DAT_00000021) {\n          uVar20 = (uint)k_00 >> 1;\n          uVar40 = (int)p_Var22 - uVar20;\n          mpz_smallk_bin_uiui(r_00,(ulong)p_Var22,uVar20);\n          iVar5 = *(int *)(puVar51 + -0xf0);\n          uVar6 = (int)k_00 - uVar20;\n          if (uVar40 < 0x23) {\n            puVar54 = (undefined1 *)r_00->_mp_size;\n            if ((int)puVar54 < r_00->_mp_alloc) {\n              p_Var33 = (mpz_ptr)r_00->_mp_d;\n            }\n            else {\n              p_Var33 = (mpz_ptr)(**(code **)(iVar5 + -0x7a80))(r_00,puVar54 + 1);\n              iVar5 = *(int *)(puVar51 + -0xf0);\n            }\n            iVar32 = *(int *)(iVar5 + -0x7e20);\n            iVar28 = *(int *)(iVar5 + -0x7fd4) + 0x35b4;\n            iVar28 = (**(code **)(iVar5 + -0x7f9c))\n                               (p_Var33,p_Var33,puVar54,\n                                *(int *)((((int)p_Var22 - (int)k_00) - 2U) * 4 + iVar28) *\n                                *(int *)(*(int *)(iVar5 + -0x7b38) + uVar40 * 4) *\n                                *(int *)((uVar6 - 2) * 4 + iVar28) <<\n                                (((uint)*(byte *)(iVar32 + (uVar40 >> 1) + -1) -\n                                 (uint)*(byte *)(iVar32 + (uVar6 >> 1) + -1)) -\n                                 (uint)*(byte *)(iVar32 + ((uint)((int)p_Var22 - (int)k_00) >> 1) +\n                                                -1) & 0x1f));\n            iVar5 = *(int *)(puVar51 + -0xf0);\n            k_00 = (mpz_ptr)(puVar54 + (iVar28 != 0));\n            (&p_Var33->_mp_alloc)[(int)puVar54] = iVar28;\n          }\n          else {\n            *(undefined4 *)(puVar51 + -0xe4) = 0x15;\n            *(undefined1 **)(puVar51 + -0xdc) = puVar51 + -0xd8;\n            mpz_smallk_bin_uiui((mpz_ptr)(puVar51 + -0xe4),uVar40,uVar6);\n            (**(code **)(*(int *)(puVar51 + -0xf0) + -0x7ba8))(r_00,r_00,(mpz_ptr)(puVar51 + -0xe4))\n            ;\n            iVar5 = *(int *)(puVar51 + -0xf0);\n            p_Var33 = (mpz_ptr)r_00->_mp_d;\n            k_00 = (mpz_ptr)r_00->_mp_size;\n          }\n          pcVar55 = *(code **)(iVar5 + -0x7bb4);\n          p_Var41 = (mpz_ptr)((uint)*(byte *)((uVar6 - 8) + *(int *)(iVar5 + -0x7fd4) + 0x3550) -\n                             (uint)(uVar20 != uVar6));\n          *(undefined4 *)(puVar51 + -0xf8) =\n               *(undefined4 *)((uVar6 - 8) * 4 + *(int *)(iVar5 + -0x7fd4) + 0x355c);\n          *(mpz_ptr *)(puVar51 + -0xf4) = p_Var41;\n          p_Var34 = p_Var33;\n          p_Var23 = p_Var33;\n          p_Var25 = k_00;\n          (*pcVar55)();\n          pcVar48 = *(code **)(puVar51 + -0xf0);\n          if (*(int *)((int)p_Var33 + (int)k_00 * 4 + -4) == 0) {\n            piVar37 = &p_Var33->_mp_alloc + (int)k_00;\n            do {\n              piVar19 = piVar37 + -2;\n              k_00 = (mpz_ptr)((int)&k_00[-1]._mp_d + 3);\n              piVar37 = piVar37 + -1;\n            } while (*piVar19 == 0);\n          }\n          r_00->_mp_size = (int)k_00;\n          puVar53 = puVar54;\n        }\n        else if ((k_00 < (mpz_ptr)0x3e8) || (k_00 <= (mpz_ptr)((uint)p_Var22 >> 4))) {\n          mpz_bdiv_bin_uiui(r_00,(ulong)p_Var22,(ulong)k_00);\n          pcVar48 = *(code **)(puVar51 + -0xf0);\n          puVar53 = puVar50 + -0x90;\n        }\n        else {\n          mpz_goetgheluck_bin_uiui(r_00,(ulong)p_Var22,(ulong)k_00);\n          pcVar48 = *(code **)(puVar51 + -0xf0);\n          puVar53 = puVar50 + -0x90;\n        }" if (parenthesized_expression "(p_Var22 < (mpz_ptr)0x23)" ( (binary_expression "p_Var22 < (mpz_ptr)0x23" identifier < (cast_expression "(mpz_ptr)0x23" ( (type_descriptor "mpz_ptr" type_identifier) ) number_literal)) )) (compound_statement "{\n          p_Var3 = k_00 + -1;\n          iVar5 = *(int *)(pcVar55 + 0x7aa7c);\n          p_Var23 = (mpz_ptr)r_00->_mp_d;\n          uVar20 = (int)p_Var22 - (int)k_00;\n          p_Var39 = (mpz_ptr)(iVar5 + ((uint)p_Var22 >> 1));\n          k_00 = (mpz_ptr)(iVar5 + ((uint)k_00 >> 1));\n          p_Var25 = (mpz_ptr)(uint)*(byte *)((int)&k_00[-1]._mp_d + 3);\n          p_Var34 = (mpz_ptr)(uint)*(byte *)(iVar5 + (uVar20 >> 1) + -1);\n          p_Var23->_mp_alloc =\n               *(int *)((int)((int)&p_Var3->_mp_d + 2) * 4 + *(int *)(pcVar55 + 0x7a8c8) + 0x35b4) *\n               *(int *)(*(int *)(pcVar55 + 0x7ad64) + (int)p_Var22 * 4) *\n               *(int *)((uVar20 - 2) * 4 + *(int *)(pcVar55 + 0x7a8c8) + 0x35b4) <<\n               (((uint)*(byte *)((int)&p_Var39[-1]._mp_d + 3) - (int)p_Var25) - (int)p_Var34 & 0x1f)\n          ;\n          r_00->_mp_size = 1;\n          puVar53 = puVar50 + -0x90;\n        }" { (expression_statement "p_Var3 = k_00 + -1;" (assignment_expression "p_Var3 = k_00 + -1" identifier = (binary_expression "k_00 + -1" identifier + number_literal)) ;) (expression_statement "iVar5 = *(int *)(pcVar55 + 0x7aa7c);" (assignment_expression "iVar5 = *(int *)(pcVar55 + 0x7aa7c)" identifier = (pointer_expression "*(int *)(pcVar55 + 0x7aa7c)" * (cast_expression "(int *)(pcVar55 + 0x7aa7c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar55 + 0x7aa7c)" ( (binary_expression "pcVar55 + 0x7aa7c" identifier + number_literal) ))))) ;) (expression_statement "p_Var23 = (mpz_ptr)r_00->_mp_d;" (assignment_expression "p_Var23 = (mpz_ptr)r_00->_mp_d" identifier = (cast_expression "(mpz_ptr)r_00->_mp_d" ( (type_descriptor "mpz_ptr" type_identifier) ) (field_expression "r_00->_mp_d" identifier -> field_identifier))) ;) (expression_statement "uVar20 = (int)p_Var22 - (int)k_00;" (assignment_expression "uVar20 = (int)p_Var22 - (int)k_00" identifier = (binary_expression "(int)p_Var22 - (int)k_00" (cast_expression "(int)p_Var22" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)k_00" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "p_Var39 = (mpz_ptr)(iVar5 + ((uint)p_Var22 >> 1));" (assignment_expression "p_Var39 = (mpz_ptr)(iVar5 + ((uint)p_Var22 >> 1))" identifier = (call_expression "(mpz_ptr)(iVar5 + ((uint)p_Var22 >> 1))" (parenthesized_expression "(mpz_ptr)" ( identifier )) (argument_list "(iVar5 + ((uint)p_Var22 >> 1))" ( (binary_expression "iVar5 + ((uint)p_Var22 >> 1)" identifier + (parenthesized_expression "((uint)p_Var22 >> 1)" ( (binary_expression "(uint)p_Var22 >> 1" (cast_expression "(uint)p_Var22" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) ))) )))) ;) (expression_statement "k_00 = (mpz_ptr)(iVar5 + ((uint)k_00 >> 1));" (assignment_expression "k_00 = (mpz_ptr)(iVar5 + ((uint)k_00 >> 1))" identifier = (call_expression "(mpz_ptr)(iVar5 + ((uint)k_00 >> 1))" (parenthesized_expression "(mpz_ptr)" ( identifier )) (argument_list "(iVar5 + ((uint)k_00 >> 1))" ( (binary_expression "iVar5 + ((uint)k_00 >> 1)" identifier + (parenthesized_expression "((uint)k_00 >> 1)" ( (binary_expression "(uint)k_00 >> 1" (cast_expression "(uint)k_00" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) ))) )))) ;) (expression_statement "p_Var25 = (mpz_ptr)(uint)*(byte *)((int)&k_00[-1]._mp_d + 3);" (assignment_expression "p_Var25 = (mpz_ptr)(uint)*(byte *)((int)&k_00[-1]._mp_d + 3)" identifier = (binary_expression "(mpz_ptr)(uint)*(byte *)((int)&k_00[-1]._mp_d + 3)" (call_expression "(mpz_ptr)(uint)" (parenthesized_expression "(mpz_ptr)" ( identifier )) (argument_list "(uint)" ( identifier ))) * (cast_expression "(byte *)((int)&k_00[-1]._mp_d + 3)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&k_00[-1]._mp_d + 3)" ( (binary_expression "(int)&k_00[-1]._mp_d + 3" (cast_expression "(int)&k_00[-1]._mp_d" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&k_00[-1]._mp_d" & (field_expression "k_00[-1]._mp_d" (subscript_expression "k_00[-1]" identifier [ number_literal ]) . field_identifier))) + number_literal) ))))) ;) (expression_statement "p_Var34 = (mpz_ptr)(uint)*(byte *)(iVar5 + (uVar20 >> 1) + -1);" (assignment_expression "p_Var34 = (mpz_ptr)(uint)*(byte *)(iVar5 + (uVar20 >> 1) + -1)" identifier = (binary_expression "(mpz_ptr)(uint)*(byte *)(iVar5 + (uVar20 >> 1) + -1)" (call_expression "(mpz_ptr)(uint)" (parenthesized_expression "(mpz_ptr)" ( identifier )) (argument_list "(uint)" ( identifier ))) * (cast_expression "(byte *)(iVar5 + (uVar20 >> 1) + -1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + (uVar20 >> 1) + -1)" ( (binary_expression "iVar5 + (uVar20 >> 1) + -1" (binary_expression "iVar5 + (uVar20 >> 1)" identifier + (parenthesized_expression "(uVar20 >> 1)" ( (binary_expression "uVar20 >> 1" identifier >> number_literal) ))) + number_literal) ))))) ;) (expression_statement "p_Var23->_mp_alloc =\n               *(int *)((int)((int)&p_Var3->_mp_d + 2) * 4 + *(int *)(pcVar55 + 0x7a8c8) + 0x35b4) *\n               *(int *)(*(int *)(pcVar55 + 0x7ad64) + (int)p_Var22 * 4) *\n               *(int *)((uVar20 - 2) * 4 + *(int *)(pcVar55 + 0x7a8c8) + 0x35b4) <<\n               (((uint)*(byte *)((int)&p_Var39[-1]._mp_d + 3) - (int)p_Var25) - (int)p_Var34 & 0x1f)\n          ;" (assignment_expression "p_Var23->_mp_alloc =\n               *(int *)((int)((int)&p_Var3->_mp_d + 2) * 4 + *(int *)(pcVar55 + 0x7a8c8) + 0x35b4) *\n               *(int *)(*(int *)(pcVar55 + 0x7ad64) + (int)p_Var22 * 4) *\n               *(int *)((uVar20 - 2) * 4 + *(int *)(pcVar55 + 0x7a8c8) + 0x35b4) <<\n               (((uint)*(byte *)((int)&p_Var39[-1]._mp_d + 3) - (int)p_Var25) - (int)p_Var34 & 0x1f)" (field_expression "p_Var23->_mp_alloc" identifier -> field_identifier) = (binary_expression "*(int *)((int)((int)&p_Var3->_mp_d + 2) * 4 + *(int *)(pcVar55 + 0x7a8c8) + 0x35b4) *\n               *(int *)(*(int *)(pcVar55 + 0x7ad64) + (int)p_Var22 * 4) *\n               *(int *)((uVar20 - 2) * 4 + *(int *)(pcVar55 + 0x7a8c8) + 0x35b4) <<\n               (((uint)*(byte *)((int)&p_Var39[-1]._mp_d + 3) - (int)p_Var25) - (int)p_Var34 & 0x1f)" (binary_expression "*(int *)((int)((int)&p_Var3->_mp_d + 2) * 4 + *(int *)(pcVar55 + 0x7a8c8) + 0x35b4) *\n               *(int *)(*(int *)(pcVar55 + 0x7ad64) + (int)p_Var22 * 4) *\n               *(int *)((uVar20 - 2) * 4 + *(int *)(pcVar55 + 0x7a8c8) + 0x35b4)" (binary_expression "*(int *)((int)((int)&p_Var3->_mp_d + 2) * 4 + *(int *)(pcVar55 + 0x7a8c8) + 0x35b4) *\n               *(int *)(*(int *)(pcVar55 + 0x7ad64) + (int)p_Var22 * 4)" (pointer_expression "*(int *)((int)((int)&p_Var3->_mp_d + 2) * 4 + *(int *)(pcVar55 + 0x7a8c8) + 0x35b4)" * (cast_expression "(int *)((int)((int)&p_Var3->_mp_d + 2) * 4 + *(int *)(pcVar55 + 0x7a8c8) + 0x35b4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)((int)&p_Var3->_mp_d + 2) * 4 + *(int *)(pcVar55 + 0x7a8c8) + 0x35b4)" ( (binary_expression "(int)((int)&p_Var3->_mp_d + 2) * 4 + *(int *)(pcVar55 + 0x7a8c8) + 0x35b4" (binary_expression "(int)((int)&p_Var3->_mp_d + 2) * 4 + *(int *)(pcVar55 + 0x7a8c8)" (binary_expression "(int)((int)&p_Var3->_mp_d + 2) * 4" (cast_expression "(int)((int)&p_Var3->_mp_d + 2)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((int)&p_Var3->_mp_d + 2)" ( (binary_expression "(int)&p_Var3->_mp_d + 2" (cast_expression "(int)&p_Var3->_mp_d" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&p_Var3->_mp_d" & (field_expression "p_Var3->_mp_d" identifier -> field_identifier))) + number_literal) ))) * number_literal) + (pointer_expression "*(int *)(pcVar55 + 0x7a8c8)" * (cast_expression "(int *)(pcVar55 + 0x7a8c8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar55 + 0x7a8c8)" ( (binary_expression "pcVar55 + 0x7a8c8" identifier + number_literal) ))))) + number_literal) )))) * (pointer_expression "*(int *)(*(int *)(pcVar55 + 0x7ad64) + (int)p_Var22 * 4)" * (cast_expression "(int *)(*(int *)(pcVar55 + 0x7ad64) + (int)p_Var22 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(pcVar55 + 0x7ad64) + (int)p_Var22 * 4)" ( (binary_expression "*(int *)(pcVar55 + 0x7ad64) + (int)p_Var22 * 4" (pointer_expression "*(int *)(pcVar55 + 0x7ad64)" * (cast_expression "(int *)(pcVar55 + 0x7ad64)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar55 + 0x7ad64)" ( (binary_expression "pcVar55 + 0x7ad64" identifier + number_literal) )))) + (binary_expression "(int)p_Var22 * 4" (cast_expression "(int)p_Var22" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal)) ))))) * (pointer_expression "*(int *)((uVar20 - 2) * 4 + *(int *)(pcVar55 + 0x7a8c8) + 0x35b4)" * (cast_expression "(int *)((uVar20 - 2) * 4 + *(int *)(pcVar55 + 0x7a8c8) + 0x35b4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((uVar20 - 2) * 4 + *(int *)(pcVar55 + 0x7a8c8) + 0x35b4)" ( (binary_expression "(uVar20 - 2) * 4 + *(int *)(pcVar55 + 0x7a8c8) + 0x35b4" (binary_expression "(uVar20 - 2) * 4 + *(int *)(pcVar55 + 0x7a8c8)" (binary_expression "(uVar20 - 2) * 4" (parenthesized_expression "(uVar20 - 2)" ( (binary_expression "uVar20 - 2" identifier - number_literal) )) * number_literal) + (pointer_expression "*(int *)(pcVar55 + 0x7a8c8)" * (cast_expression "(int *)(pcVar55 + 0x7a8c8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar55 + 0x7a8c8)" ( (binary_expression "pcVar55 + 0x7a8c8" identifier + number_literal) ))))) + number_literal) ))))) << (parenthesized_expression "(((uint)*(byte *)((int)&p_Var39[-1]._mp_d + 3) - (int)p_Var25) - (int)p_Var34 & 0x1f)" ( (binary_expression "((uint)*(byte *)((int)&p_Var39[-1]._mp_d + 3) - (int)p_Var25) - (int)p_Var34 & 0x1f" (binary_expression "((uint)*(byte *)((int)&p_Var39[-1]._mp_d + 3) - (int)p_Var25) - (int)p_Var34" (parenthesized_expression "((uint)*(byte *)((int)&p_Var39[-1]._mp_d + 3) - (int)p_Var25)" ( (binary_expression "(uint)*(byte *)((int)&p_Var39[-1]._mp_d + 3) - (int)p_Var25" (binary_expression "(uint)*(byte *)((int)&p_Var39[-1]._mp_d + 3)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)((int)&p_Var39[-1]._mp_d + 3)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&p_Var39[-1]._mp_d + 3)" ( (binary_expression "(int)&p_Var39[-1]._mp_d + 3" (cast_expression "(int)&p_Var39[-1]._mp_d" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&p_Var39[-1]._mp_d" & (field_expression "p_Var39[-1]._mp_d" (subscript_expression "p_Var39[-1]" identifier [ number_literal ]) . field_identifier))) + number_literal) )))) - (cast_expression "(int)p_Var25" ( (type_descriptor "int" primitive_type) ) identifier)) )) - (cast_expression "(int)p_Var34" ( (type_descriptor "int" primitive_type) ) identifier)) & number_literal) )))) ;) (expression_statement "r_00->_mp_size = 1;" (assignment_expression "r_00->_mp_size = 1" (field_expression "r_00->_mp_size" identifier -> field_identifier) = number_literal) ;) (expression_statement "puVar53 = puVar50 + -0x90;" (assignment_expression "puVar53 = puVar50 + -0x90" identifier = (binary_expression "puVar50 + -0x90" identifier + number_literal)) ;) }) (else_clause "else if (k_00 < (mpz_ptr)&DAT_00000011) {\n          mpz_smallk_bin_uiui(r_00,(ulong)p_Var22,(ulong)k_00);\n          pcVar48 = *(code **)(puVar51 + -0xf0);\n          puVar53 = puVar50 + -0x90;\n        }\n        else if (k_00 < (mpz_ptr)&DAT_00000021) {\n          uVar20 = (uint)k_00 >> 1;\n          uVar40 = (int)p_Var22 - uVar20;\n          mpz_smallk_bin_uiui(r_00,(ulong)p_Var22,uVar20);\n          iVar5 = *(int *)(puVar51 + -0xf0);\n          uVar6 = (int)k_00 - uVar20;\n          if (uVar40 < 0x23) {\n            puVar54 = (undefined1 *)r_00->_mp_size;\n            if ((int)puVar54 < r_00->_mp_alloc) {\n              p_Var33 = (mpz_ptr)r_00->_mp_d;\n            }\n            else {\n              p_Var33 = (mpz_ptr)(**(code **)(iVar5 + -0x7a80))(r_00,puVar54 + 1);\n              iVar5 = *(int *)(puVar51 + -0xf0);\n            }\n            iVar32 = *(int *)(iVar5 + -0x7e20);\n            iVar28 = *(int *)(iVar5 + -0x7fd4) + 0x35b4;\n            iVar28 = (**(code **)(iVar5 + -0x7f9c))\n                               (p_Var33,p_Var33,puVar54,\n                                *(int *)((((int)p_Var22 - (int)k_00) - 2U) * 4 + iVar28) *\n                                *(int *)(*(int *)(iVar5 + -0x7b38) + uVar40 * 4) *\n                                *(int *)((uVar6 - 2) * 4 + iVar28) <<\n                                (((uint)*(byte *)(iVar32 + (uVar40 >> 1) + -1) -\n                                 (uint)*(byte *)(iVar32 + (uVar6 >> 1) + -1)) -\n                                 (uint)*(byte *)(iVar32 + ((uint)((int)p_Var22 - (int)k_00) >> 1) +\n                                                -1) & 0x1f));\n            iVar5 = *(int *)(puVar51 + -0xf0);\n            k_00 = (mpz_ptr)(puVar54 + (iVar28 != 0));\n            (&p_Var33->_mp_alloc)[(int)puVar54] = iVar28;\n          }\n          else {\n            *(undefined4 *)(puVar51 + -0xe4) = 0x15;\n            *(undefined1 **)(puVar51 + -0xdc) = puVar51 + -0xd8;\n            mpz_smallk_bin_uiui((mpz_ptr)(puVar51 + -0xe4),uVar40,uVar6);\n            (**(code **)(*(int *)(puVar51 + -0xf0) + -0x7ba8))(r_00,r_00,(mpz_ptr)(puVar51 + -0xe4))\n            ;\n            iVar5 = *(int *)(puVar51 + -0xf0);\n            p_Var33 = (mpz_ptr)r_00->_mp_d;\n            k_00 = (mpz_ptr)r_00->_mp_size;\n          }\n          pcVar55 = *(code **)(iVar5 + -0x7bb4);\n          p_Var41 = (mpz_ptr)((uint)*(byte *)((uVar6 - 8) + *(int *)(iVar5 + -0x7fd4) + 0x3550) -\n                             (uint)(uVar20 != uVar6));\n          *(undefined4 *)(puVar51 + -0xf8) =\n               *(undefined4 *)((uVar6 - 8) * 4 + *(int *)(iVar5 + -0x7fd4) + 0x355c);\n          *(mpz_ptr *)(puVar51 + -0xf4) = p_Var41;\n          p_Var34 = p_Var33;\n          p_Var23 = p_Var33;\n          p_Var25 = k_00;\n          (*pcVar55)();\n          pcVar48 = *(code **)(puVar51 + -0xf0);\n          if (*(int *)((int)p_Var33 + (int)k_00 * 4 + -4) == 0) {\n            piVar37 = &p_Var33->_mp_alloc + (int)k_00;\n            do {\n              piVar19 = piVar37 + -2;\n              k_00 = (mpz_ptr)((int)&k_00[-1]._mp_d + 3);\n              piVar37 = piVar37 + -1;\n            } while (*piVar19 == 0);\n          }\n          r_00->_mp_size = (int)k_00;\n          puVar53 = puVar54;\n        }\n        else if ((k_00 < (mpz_ptr)0x3e8) || (k_00 <= (mpz_ptr)((uint)p_Var22 >> 4))) {\n          mpz_bdiv_bin_uiui(r_00,(ulong)p_Var22,(ulong)k_00);\n          pcVar48 = *(code **)(puVar51 + -0xf0);\n          puVar53 = puVar50 + -0x90;\n        }\n        else {\n          mpz_goetgheluck_bin_uiui(r_00,(ulong)p_Var22,(ulong)k_00);\n          pcVar48 = *(code **)(puVar51 + -0xf0);\n          puVar53 = puVar50 + -0x90;\n        }" else (if_statement "if (k_00 < (mpz_ptr)&DAT_00000011) {\n          mpz_smallk_bin_uiui(r_00,(ulong)p_Var22,(ulong)k_00);\n          pcVar48 = *(code **)(puVar51 + -0xf0);\n          puVar53 = puVar50 + -0x90;\n        }\n        else if (k_00 < (mpz_ptr)&DAT_00000021) {\n          uVar20 = (uint)k_00 >> 1;\n          uVar40 = (int)p_Var22 - uVar20;\n          mpz_smallk_bin_uiui(r_00,(ulong)p_Var22,uVar20);\n          iVar5 = *(int *)(puVar51 + -0xf0);\n          uVar6 = (int)k_00 - uVar20;\n          if (uVar40 < 0x23) {\n            puVar54 = (undefined1 *)r_00->_mp_size;\n            if ((int)puVar54 < r_00->_mp_alloc) {\n              p_Var33 = (mpz_ptr)r_00->_mp_d;\n            }\n            else {\n              p_Var33 = (mpz_ptr)(**(code **)(iVar5 + -0x7a80))(r_00,puVar54 + 1);\n              iVar5 = *(int *)(puVar51 + -0xf0);\n            }\n            iVar32 = *(int *)(iVar5 + -0x7e20);\n            iVar28 = *(int *)(iVar5 + -0x7fd4) + 0x35b4;\n            iVar28 = (**(code **)(iVar5 + -0x7f9c))\n                               (p_Var33,p_Var33,puVar54,\n                                *(int *)((((int)p_Var22 - (int)k_00) - 2U) * 4 + iVar28) *\n                                *(int *)(*(int *)(iVar5 + -0x7b38) + uVar40 * 4) *\n                                *(int *)((uVar6 - 2) * 4 + iVar28) <<\n                                (((uint)*(byte *)(iVar32 + (uVar40 >> 1) + -1) -\n                                 (uint)*(byte *)(iVar32 + (uVar6 >> 1) + -1)) -\n                                 (uint)*(byte *)(iVar32 + ((uint)((int)p_Var22 - (int)k_00) >> 1) +\n                                                -1) & 0x1f));\n            iVar5 = *(int *)(puVar51 + -0xf0);\n            k_00 = (mpz_ptr)(puVar54 + (iVar28 != 0));\n            (&p_Var33->_mp_alloc)[(int)puVar54] = iVar28;\n          }\n          else {\n            *(undefined4 *)(puVar51 + -0xe4) = 0x15;\n            *(undefined1 **)(puVar51 + -0xdc) = puVar51 + -0xd8;\n            mpz_smallk_bin_uiui((mpz_ptr)(puVar51 + -0xe4),uVar40,uVar6);\n            (**(code **)(*(int *)(puVar51 + -0xf0) + -0x7ba8))(r_00,r_00,(mpz_ptr)(puVar51 + -0xe4))\n            ;\n            iVar5 = *(int *)(puVar51 + -0xf0);\n            p_Var33 = (mpz_ptr)r_00->_mp_d;\n            k_00 = (mpz_ptr)r_00->_mp_size;\n          }\n          pcVar55 = *(code **)(iVar5 + -0x7bb4);\n          p_Var41 = (mpz_ptr)((uint)*(byte *)((uVar6 - 8) + *(int *)(iVar5 + -0x7fd4) + 0x3550) -\n                             (uint)(uVar20 != uVar6));\n          *(undefined4 *)(puVar51 + -0xf8) =\n               *(undefined4 *)((uVar6 - 8) * 4 + *(int *)(iVar5 + -0x7fd4) + 0x355c);\n          *(mpz_ptr *)(puVar51 + -0xf4) = p_Var41;\n          p_Var34 = p_Var33;\n          p_Var23 = p_Var33;\n          p_Var25 = k_00;\n          (*pcVar55)();\n          pcVar48 = *(code **)(puVar51 + -0xf0);\n          if (*(int *)((int)p_Var33 + (int)k_00 * 4 + -4) == 0) {\n            piVar37 = &p_Var33->_mp_alloc + (int)k_00;\n            do {\n              piVar19 = piVar37 + -2;\n              k_00 = (mpz_ptr)((int)&k_00[-1]._mp_d + 3);\n              piVar37 = piVar37 + -1;\n            } while (*piVar19 == 0);\n          }\n          r_00->_mp_size = (int)k_00;\n          puVar53 = puVar54;\n        }\n        else if ((k_00 < (mpz_ptr)0x3e8) || (k_00 <= (mpz_ptr)((uint)p_Var22 >> 4))) {\n          mpz_bdiv_bin_uiui(r_00,(ulong)p_Var22,(ulong)k_00);\n          pcVar48 = *(code **)(puVar51 + -0xf0);\n          puVar53 = puVar50 + -0x90;\n        }\n        else {\n          mpz_goetgheluck_bin_uiui(r_00,(ulong)p_Var22,(ulong)k_00);\n          pcVar48 = *(code **)(puVar51 + -0xf0);\n          puVar53 = puVar50 + -0x90;\n        }" if (parenthesized_expression "(k_00 < (mpz_ptr)&DAT_00000011)" ( (binary_expression "k_00 < (mpz_ptr)&DAT_00000011" (binary_expression "k_00 < (mpz_ptr)" identifier < (parenthesized_expression "(mpz_ptr)" ( identifier ))) & identifier) )) (compound_statement "{\n          mpz_smallk_bin_uiui(r_00,(ulong)p_Var22,(ulong)k_00);\n          pcVar48 = *(code **)(puVar51 + -0xf0);\n          puVar53 = puVar50 + -0x90;\n        }" { (expression_statement "mpz_smallk_bin_uiui(r_00,(ulong)p_Var22,(ulong)k_00);" (call_expression "mpz_smallk_bin_uiui(r_00,(ulong)p_Var22,(ulong)k_00)" identifier (argument_list "(r_00,(ulong)p_Var22,(ulong)k_00)" ( identifier , (cast_expression "(ulong)p_Var22" ( (type_descriptor "ulong" type_identifier) ) identifier) , (cast_expression "(ulong)k_00" ( (type_descriptor "ulong" type_identifier) ) identifier) ))) ;) (expression_statement "pcVar48 = *(code **)(puVar51 + -0xf0);" (assignment_expression "pcVar48 = *(code **)(puVar51 + -0xf0)" identifier = (pointer_expression "*(code **)(puVar51 + -0xf0)" * (cast_expression "(code **)(puVar51 + -0xf0)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar51 + -0xf0)" ( (binary_expression "puVar51 + -0xf0" identifier + number_literal) ))))) ;) (expression_statement "puVar53 = puVar50 + -0x90;" (assignment_expression "puVar53 = puVar50 + -0x90" identifier = (binary_expression "puVar50 + -0x90" identifier + number_literal)) ;) }) (else_clause "else if (k_00 < (mpz_ptr)&DAT_00000021) {\n          uVar20 = (uint)k_00 >> 1;\n          uVar40 = (int)p_Var22 - uVar20;\n          mpz_smallk_bin_uiui(r_00,(ulong)p_Var22,uVar20);\n          iVar5 = *(int *)(puVar51 + -0xf0);\n          uVar6 = (int)k_00 - uVar20;\n          if (uVar40 < 0x23) {\n            puVar54 = (undefined1 *)r_00->_mp_size;\n            if ((int)puVar54 < r_00->_mp_alloc) {\n              p_Var33 = (mpz_ptr)r_00->_mp_d;\n            }\n            else {\n              p_Var33 = (mpz_ptr)(**(code **)(iVar5 + -0x7a80))(r_00,puVar54 + 1);\n              iVar5 = *(int *)(puVar51 + -0xf0);\n            }\n            iVar32 = *(int *)(iVar5 + -0x7e20);\n            iVar28 = *(int *)(iVar5 + -0x7fd4) + 0x35b4;\n            iVar28 = (**(code **)(iVar5 + -0x7f9c))\n                               (p_Var33,p_Var33,puVar54,\n                                *(int *)((((int)p_Var22 - (int)k_00) - 2U) * 4 + iVar28) *\n                                *(int *)(*(int *)(iVar5 + -0x7b38) + uVar40 * 4) *\n                                *(int *)((uVar6 - 2) * 4 + iVar28) <<\n                                (((uint)*(byte *)(iVar32 + (uVar40 >> 1) + -1) -\n                                 (uint)*(byte *)(iVar32 + (uVar6 >> 1) + -1)) -\n                                 (uint)*(byte *)(iVar32 + ((uint)((int)p_Var22 - (int)k_00) >> 1) +\n                                                -1) & 0x1f));\n            iVar5 = *(int *)(puVar51 + -0xf0);\n            k_00 = (mpz_ptr)(puVar54 + (iVar28 != 0));\n            (&p_Var33->_mp_alloc)[(int)puVar54] = iVar28;\n          }\n          else {\n            *(undefined4 *)(puVar51 + -0xe4) = 0x15;\n            *(undefined1 **)(puVar51 + -0xdc) = puVar51 + -0xd8;\n            mpz_smallk_bin_uiui((mpz_ptr)(puVar51 + -0xe4),uVar40,uVar6);\n            (**(code **)(*(int *)(puVar51 + -0xf0) + -0x7ba8))(r_00,r_00,(mpz_ptr)(puVar51 + -0xe4))\n            ;\n            iVar5 = *(int *)(puVar51 + -0xf0);\n            p_Var33 = (mpz_ptr)r_00->_mp_d;\n            k_00 = (mpz_ptr)r_00->_mp_size;\n          }\n          pcVar55 = *(code **)(iVar5 + -0x7bb4);\n          p_Var41 = (mpz_ptr)((uint)*(byte *)((uVar6 - 8) + *(int *)(iVar5 + -0x7fd4) + 0x3550) -\n                             (uint)(uVar20 != uVar6));\n          *(undefined4 *)(puVar51 + -0xf8) =\n               *(undefined4 *)((uVar6 - 8) * 4 + *(int *)(iVar5 + -0x7fd4) + 0x355c);\n          *(mpz_ptr *)(puVar51 + -0xf4) = p_Var41;\n          p_Var34 = p_Var33;\n          p_Var23 = p_Var33;\n          p_Var25 = k_00;\n          (*pcVar55)();\n          pcVar48 = *(code **)(puVar51 + -0xf0);\n          if (*(int *)((int)p_Var33 + (int)k_00 * 4 + -4) == 0) {\n            piVar37 = &p_Var33->_mp_alloc + (int)k_00;\n            do {\n              piVar19 = piVar37 + -2;\n              k_00 = (mpz_ptr)((int)&k_00[-1]._mp_d + 3);\n              piVar37 = piVar37 + -1;\n            } while (*piVar19 == 0);\n          }\n          r_00->_mp_size = (int)k_00;\n          puVar53 = puVar54;\n        }\n        else if ((k_00 < (mpz_ptr)0x3e8) || (k_00 <= (mpz_ptr)((uint)p_Var22 >> 4))) {\n          mpz_bdiv_bin_uiui(r_00,(ulong)p_Var22,(ulong)k_00);\n          pcVar48 = *(code **)(puVar51 + -0xf0);\n          puVar53 = puVar50 + -0x90;\n        }\n        else {\n          mpz_goetgheluck_bin_uiui(r_00,(ulong)p_Var22,(ulong)k_00);\n          pcVar48 = *(code **)(puVar51 + -0xf0);\n          puVar53 = puVar50 + -0x90;\n        }" else (if_statement "if (k_00 < (mpz_ptr)&DAT_00000021) {\n          uVar20 = (uint)k_00 >> 1;\n          uVar40 = (int)p_Var22 - uVar20;\n          mpz_smallk_bin_uiui(r_00,(ulong)p_Var22,uVar20);\n          iVar5 = *(int *)(puVar51 + -0xf0);\n          uVar6 = (int)k_00 - uVar20;\n          if (uVar40 < 0x23) {\n            puVar54 = (undefined1 *)r_00->_mp_size;\n            if ((int)puVar54 < r_00->_mp_alloc) {\n              p_Var33 = (mpz_ptr)r_00->_mp_d;\n            }\n            else {\n              p_Var33 = (mpz_ptr)(**(code **)(iVar5 + -0x7a80))(r_00,puVar54 + 1);\n              iVar5 = *(int *)(puVar51 + -0xf0);\n            }\n            iVar32 = *(int *)(iVar5 + -0x7e20);\n            iVar28 = *(int *)(iVar5 + -0x7fd4) + 0x35b4;\n            iVar28 = (**(code **)(iVar5 + -0x7f9c))\n                               (p_Var33,p_Var33,puVar54,\n                                *(int *)((((int)p_Var22 - (int)k_00) - 2U) * 4 + iVar28) *\n                                *(int *)(*(int *)(iVar5 + -0x7b38) + uVar40 * 4) *\n                                *(int *)((uVar6 - 2) * 4 + iVar28) <<\n                                (((uint)*(byte *)(iVar32 + (uVar40 >> 1) + -1) -\n                                 (uint)*(byte *)(iVar32 + (uVar6 >> 1) + -1)) -\n                                 (uint)*(byte *)(iVar32 + ((uint)((int)p_Var22 - (int)k_00) >> 1) +\n                                                -1) & 0x1f));\n            iVar5 = *(int *)(puVar51 + -0xf0);\n            k_00 = (mpz_ptr)(puVar54 + (iVar28 != 0));\n            (&p_Var33->_mp_alloc)[(int)puVar54] = iVar28;\n          }\n          else {\n            *(undefined4 *)(puVar51 + -0xe4) = 0x15;\n            *(undefined1 **)(puVar51 + -0xdc) = puVar51 + -0xd8;\n            mpz_smallk_bin_uiui((mpz_ptr)(puVar51 + -0xe4),uVar40,uVar6);\n            (**(code **)(*(int *)(puVar51 + -0xf0) + -0x7ba8))(r_00,r_00,(mpz_ptr)(puVar51 + -0xe4))\n            ;\n            iVar5 = *(int *)(puVar51 + -0xf0);\n            p_Var33 = (mpz_ptr)r_00->_mp_d;\n            k_00 = (mpz_ptr)r_00->_mp_size;\n          }\n          pcVar55 = *(code **)(iVar5 + -0x7bb4);\n          p_Var41 = (mpz_ptr)((uint)*(byte *)((uVar6 - 8) + *(int *)(iVar5 + -0x7fd4) + 0x3550) -\n                             (uint)(uVar20 != uVar6));\n          *(undefined4 *)(puVar51 + -0xf8) =\n               *(undefined4 *)((uVar6 - 8) * 4 + *(int *)(iVar5 + -0x7fd4) + 0x355c);\n          *(mpz_ptr *)(puVar51 + -0xf4) = p_Var41;\n          p_Var34 = p_Var33;\n          p_Var23 = p_Var33;\n          p_Var25 = k_00;\n          (*pcVar55)();\n          pcVar48 = *(code **)(puVar51 + -0xf0);\n          if (*(int *)((int)p_Var33 + (int)k_00 * 4 + -4) == 0) {\n            piVar37 = &p_Var33->_mp_alloc + (int)k_00;\n            do {\n              piVar19 = piVar37 + -2;\n              k_00 = (mpz_ptr)((int)&k_00[-1]._mp_d + 3);\n              piVar37 = piVar37 + -1;\n            } while (*piVar19 == 0);\n          }\n          r_00->_mp_size = (int)k_00;\n          puVar53 = puVar54;\n        }\n        else if ((k_00 < (mpz_ptr)0x3e8) || (k_00 <= (mpz_ptr)((uint)p_Var22 >> 4))) {\n          mpz_bdiv_bin_uiui(r_00,(ulong)p_Var22,(ulong)k_00);\n          pcVar48 = *(code **)(puVar51 + -0xf0);\n          puVar53 = puVar50 + -0x90;\n        }\n        else {\n          mpz_goetgheluck_bin_uiui(r_00,(ulong)p_Var22,(ulong)k_00);\n          pcVar48 = *(code **)(puVar51 + -0xf0);\n          puVar53 = puVar50 + -0x90;\n        }" if (parenthesized_expression "(k_00 < (mpz_ptr)&DAT_00000021)" ( (binary_expression "k_00 < (mpz_ptr)&DAT_00000021" (binary_expression "k_00 < (mpz_ptr)" identifier < (parenthesized_expression "(mpz_ptr)" ( identifier ))) & identifier) )) (compound_statement "{\n          uVar20 = (uint)k_00 >> 1;\n          uVar40 = (int)p_Var22 - uVar20;\n          mpz_smallk_bin_uiui(r_00,(ulong)p_Var22,uVar20);\n          iVar5 = *(int *)(puVar51 + -0xf0);\n          uVar6 = (int)k_00 - uVar20;\n          if (uVar40 < 0x23) {\n            puVar54 = (undefined1 *)r_00->_mp_size;\n            if ((int)puVar54 < r_00->_mp_alloc) {\n              p_Var33 = (mpz_ptr)r_00->_mp_d;\n            }\n            else {\n              p_Var33 = (mpz_ptr)(**(code **)(iVar5 + -0x7a80))(r_00,puVar54 + 1);\n              iVar5 = *(int *)(puVar51 + -0xf0);\n            }\n            iVar32 = *(int *)(iVar5 + -0x7e20);\n            iVar28 = *(int *)(iVar5 + -0x7fd4) + 0x35b4;\n            iVar28 = (**(code **)(iVar5 + -0x7f9c))\n                               (p_Var33,p_Var33,puVar54,\n                                *(int *)((((int)p_Var22 - (int)k_00) - 2U) * 4 + iVar28) *\n                                *(int *)(*(int *)(iVar5 + -0x7b38) + uVar40 * 4) *\n                                *(int *)((uVar6 - 2) * 4 + iVar28) <<\n                                (((uint)*(byte *)(iVar32 + (uVar40 >> 1) + -1) -\n                                 (uint)*(byte *)(iVar32 + (uVar6 >> 1) + -1)) -\n                                 (uint)*(byte *)(iVar32 + ((uint)((int)p_Var22 - (int)k_00) >> 1) +\n                                                -1) & 0x1f));\n            iVar5 = *(int *)(puVar51 + -0xf0);\n            k_00 = (mpz_ptr)(puVar54 + (iVar28 != 0));\n            (&p_Var33->_mp_alloc)[(int)puVar54] = iVar28;\n          }\n          else {\n            *(undefined4 *)(puVar51 + -0xe4) = 0x15;\n            *(undefined1 **)(puVar51 + -0xdc) = puVar51 + -0xd8;\n            mpz_smallk_bin_uiui((mpz_ptr)(puVar51 + -0xe4),uVar40,uVar6);\n            (**(code **)(*(int *)(puVar51 + -0xf0) + -0x7ba8))(r_00,r_00,(mpz_ptr)(puVar51 + -0xe4))\n            ;\n            iVar5 = *(int *)(puVar51 + -0xf0);\n            p_Var33 = (mpz_ptr)r_00->_mp_d;\n            k_00 = (mpz_ptr)r_00->_mp_size;\n          }\n          pcVar55 = *(code **)(iVar5 + -0x7bb4);\n          p_Var41 = (mpz_ptr)((uint)*(byte *)((uVar6 - 8) + *(int *)(iVar5 + -0x7fd4) + 0x3550) -\n                             (uint)(uVar20 != uVar6));\n          *(undefined4 *)(puVar51 + -0xf8) =\n               *(undefined4 *)((uVar6 - 8) * 4 + *(int *)(iVar5 + -0x7fd4) + 0x355c);\n          *(mpz_ptr *)(puVar51 + -0xf4) = p_Var41;\n          p_Var34 = p_Var33;\n          p_Var23 = p_Var33;\n          p_Var25 = k_00;\n          (*pcVar55)();\n          pcVar48 = *(code **)(puVar51 + -0xf0);\n          if (*(int *)((int)p_Var33 + (int)k_00 * 4 + -4) == 0) {\n            piVar37 = &p_Var33->_mp_alloc + (int)k_00;\n            do {\n              piVar19 = piVar37 + -2;\n              k_00 = (mpz_ptr)((int)&k_00[-1]._mp_d + 3);\n              piVar37 = piVar37 + -1;\n            } while (*piVar19 == 0);\n          }\n          r_00->_mp_size = (int)k_00;\n          puVar53 = puVar54;\n        }" { (expression_statement "uVar20 = (uint)k_00 >> 1;" (assignment_expression "uVar20 = (uint)k_00 >> 1" identifier = (binary_expression "(uint)k_00 >> 1" (cast_expression "(uint)k_00" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal)) ;) (expression_statement "uVar40 = (int)p_Var22 - uVar20;" (assignment_expression "uVar40 = (int)p_Var22 - uVar20" identifier = (binary_expression "(int)p_Var22 - uVar20" (cast_expression "(int)p_Var22" ( (type_descriptor "int" primitive_type) ) identifier) - identifier)) ;) (expression_statement "mpz_smallk_bin_uiui(r_00,(ulong)p_Var22,uVar20);" (call_expression "mpz_smallk_bin_uiui(r_00,(ulong)p_Var22,uVar20)" identifier (argument_list "(r_00,(ulong)p_Var22,uVar20)" ( identifier , (cast_expression "(ulong)p_Var22" ( (type_descriptor "ulong" type_identifier) ) identifier) , identifier ))) ;) (expression_statement "iVar5 = *(int *)(puVar51 + -0xf0);" (assignment_expression "iVar5 = *(int *)(puVar51 + -0xf0)" identifier = (pointer_expression "*(int *)(puVar51 + -0xf0)" * (cast_expression "(int *)(puVar51 + -0xf0)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar51 + -0xf0)" ( (binary_expression "puVar51 + -0xf0" identifier + number_literal) ))))) ;) (expression_statement "uVar6 = (int)k_00 - uVar20;" (assignment_expression "uVar6 = (int)k_00 - uVar20" identifier = (binary_expression "(int)k_00 - uVar20" (cast_expression "(int)k_00" ( (type_descriptor "int" primitive_type) ) identifier) - identifier)) ;) (if_statement "if (uVar40 < 0x23) {\n            puVar54 = (undefined1 *)r_00->_mp_size;\n            if ((int)puVar54 < r_00->_mp_alloc) {\n              p_Var33 = (mpz_ptr)r_00->_mp_d;\n            }\n            else {\n              p_Var33 = (mpz_ptr)(**(code **)(iVar5 + -0x7a80))(r_00,puVar54 + 1);\n              iVar5 = *(int *)(puVar51 + -0xf0);\n            }\n            iVar32 = *(int *)(iVar5 + -0x7e20);\n            iVar28 = *(int *)(iVar5 + -0x7fd4) + 0x35b4;\n            iVar28 = (**(code **)(iVar5 + -0x7f9c))\n                               (p_Var33,p_Var33,puVar54,\n                                *(int *)((((int)p_Var22 - (int)k_00) - 2U) * 4 + iVar28) *\n                                *(int *)(*(int *)(iVar5 + -0x7b38) + uVar40 * 4) *\n                                *(int *)((uVar6 - 2) * 4 + iVar28) <<\n                                (((uint)*(byte *)(iVar32 + (uVar40 >> 1) + -1) -\n                                 (uint)*(byte *)(iVar32 + (uVar6 >> 1) + -1)) -\n                                 (uint)*(byte *)(iVar32 + ((uint)((int)p_Var22 - (int)k_00) >> 1) +\n                                                -1) & 0x1f));\n            iVar5 = *(int *)(puVar51 + -0xf0);\n            k_00 = (mpz_ptr)(puVar54 + (iVar28 != 0));\n            (&p_Var33->_mp_alloc)[(int)puVar54] = iVar28;\n          }\n          else {\n            *(undefined4 *)(puVar51 + -0xe4) = 0x15;\n            *(undefined1 **)(puVar51 + -0xdc) = puVar51 + -0xd8;\n            mpz_smallk_bin_uiui((mpz_ptr)(puVar51 + -0xe4),uVar40,uVar6);\n            (**(code **)(*(int *)(puVar51 + -0xf0) + -0x7ba8))(r_00,r_00,(mpz_ptr)(puVar51 + -0xe4))\n            ;\n            iVar5 = *(int *)(puVar51 + -0xf0);\n            p_Var33 = (mpz_ptr)r_00->_mp_d;\n            k_00 = (mpz_ptr)r_00->_mp_size;\n          }" if (parenthesized_expression "(uVar40 < 0x23)" ( (binary_expression "uVar40 < 0x23" identifier < number_literal) )) (compound_statement "{\n            puVar54 = (undefined1 *)r_00->_mp_size;\n            if ((int)puVar54 < r_00->_mp_alloc) {\n              p_Var33 = (mpz_ptr)r_00->_mp_d;\n            }\n            else {\n              p_Var33 = (mpz_ptr)(**(code **)(iVar5 + -0x7a80))(r_00,puVar54 + 1);\n              iVar5 = *(int *)(puVar51 + -0xf0);\n            }\n            iVar32 = *(int *)(iVar5 + -0x7e20);\n            iVar28 = *(int *)(iVar5 + -0x7fd4) + 0x35b4;\n            iVar28 = (**(code **)(iVar5 + -0x7f9c))\n                               (p_Var33,p_Var33,puVar54,\n                                *(int *)((((int)p_Var22 - (int)k_00) - 2U) * 4 + iVar28) *\n                                *(int *)(*(int *)(iVar5 + -0x7b38) + uVar40 * 4) *\n                                *(int *)((uVar6 - 2) * 4 + iVar28) <<\n                                (((uint)*(byte *)(iVar32 + (uVar40 >> 1) + -1) -\n                                 (uint)*(byte *)(iVar32 + (uVar6 >> 1) + -1)) -\n                                 (uint)*(byte *)(iVar32 + ((uint)((int)p_Var22 - (int)k_00) >> 1) +\n                                                -1) & 0x1f));\n            iVar5 = *(int *)(puVar51 + -0xf0);\n            k_00 = (mpz_ptr)(puVar54 + (iVar28 != 0));\n            (&p_Var33->_mp_alloc)[(int)puVar54] = iVar28;\n          }" { (expression_statement "puVar54 = (undefined1 *)r_00->_mp_size;" (assignment_expression "puVar54 = (undefined1 *)r_00->_mp_size" identifier = (cast_expression "(undefined1 *)r_00->_mp_size" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "r_00->_mp_size" identifier -> field_identifier))) ;) (if_statement "if ((int)puVar54 < r_00->_mp_alloc) {\n              p_Var33 = (mpz_ptr)r_00->_mp_d;\n            }\n            else {\n              p_Var33 = (mpz_ptr)(**(code **)(iVar5 + -0x7a80))(r_00,puVar54 + 1);\n              iVar5 = *(int *)(puVar51 + -0xf0);\n            }" if (parenthesized_expression "((int)puVar54 < r_00->_mp_alloc)" ( (binary_expression "(int)puVar54 < r_00->_mp_alloc" (cast_expression "(int)puVar54" ( (type_descriptor "int" primitive_type) ) identifier) < (field_expression "r_00->_mp_alloc" identifier -> field_identifier)) )) (compound_statement "{\n              p_Var33 = (mpz_ptr)r_00->_mp_d;\n            }" { (expression_statement "p_Var33 = (mpz_ptr)r_00->_mp_d;" (assignment_expression "p_Var33 = (mpz_ptr)r_00->_mp_d" identifier = (cast_expression "(mpz_ptr)r_00->_mp_d" ( (type_descriptor "mpz_ptr" type_identifier) ) (field_expression "r_00->_mp_d" identifier -> field_identifier))) ;) }) (else_clause "else {\n              p_Var33 = (mpz_ptr)(**(code **)(iVar5 + -0x7a80))(r_00,puVar54 + 1);\n              iVar5 = *(int *)(puVar51 + -0xf0);\n            }" else (compound_statement "{\n              p_Var33 = (mpz_ptr)(**(code **)(iVar5 + -0x7a80))(r_00,puVar54 + 1);\n              iVar5 = *(int *)(puVar51 + -0xf0);\n            }" { (expression_statement "p_Var33 = (mpz_ptr)(**(code **)(iVar5 + -0x7a80))(r_00,puVar54 + 1);" (assignment_expression "p_Var33 = (mpz_ptr)(**(code **)(iVar5 + -0x7a80))(r_00,puVar54 + 1)" identifier = (call_expression "(mpz_ptr)(**(code **)(iVar5 + -0x7a80))(r_00,puVar54 + 1)" (call_expression "(mpz_ptr)(**(code **)(iVar5 + -0x7a80))" (parenthesized_expression "(mpz_ptr)" ( identifier )) (argument_list "(**(code **)(iVar5 + -0x7a80))" ( (pointer_expression "**(code **)(iVar5 + -0x7a80)" * (pointer_expression "*(code **)(iVar5 + -0x7a80)" * (cast_expression "(code **)(iVar5 + -0x7a80)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar5 + -0x7a80)" ( (binary_expression "iVar5 + -0x7a80" identifier + number_literal) ))))) ))) (argument_list "(r_00,puVar54 + 1)" ( identifier , (binary_expression "puVar54 + 1" identifier + number_literal) )))) ;) (expression_statement "iVar5 = *(int *)(puVar51 + -0xf0);" (assignment_expression "iVar5 = *(int *)(puVar51 + -0xf0)" identifier = (pointer_expression "*(int *)(puVar51 + -0xf0)" * (cast_expression "(int *)(puVar51 + -0xf0)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar51 + -0xf0)" ( (binary_expression "puVar51 + -0xf0" identifier + number_literal) ))))) ;) }))) (expression_statement "iVar32 = *(int *)(iVar5 + -0x7e20);" (assignment_expression "iVar32 = *(int *)(iVar5 + -0x7e20)" identifier = (pointer_expression "*(int *)(iVar5 + -0x7e20)" * (cast_expression "(int *)(iVar5 + -0x7e20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + -0x7e20)" ( (binary_expression "iVar5 + -0x7e20" identifier + number_literal) ))))) ;) (expression_statement "iVar28 = *(int *)(iVar5 + -0x7fd4) + 0x35b4;" (assignment_expression "iVar28 = *(int *)(iVar5 + -0x7fd4) + 0x35b4" identifier = (binary_expression "*(int *)(iVar5 + -0x7fd4) + 0x35b4" (pointer_expression "*(int *)(iVar5 + -0x7fd4)" * (cast_expression "(int *)(iVar5 + -0x7fd4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + -0x7fd4)" ( (binary_expression "iVar5 + -0x7fd4" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "iVar28 = (**(code **)(iVar5 + -0x7f9c))\n                               (p_Var33,p_Var33,puVar54,\n                                *(int *)((((int)p_Var22 - (int)k_00) - 2U) * 4 + iVar28) *\n                                *(int *)(*(int *)(iVar5 + -0x7b38) + uVar40 * 4) *\n                                *(int *)((uVar6 - 2) * 4 + iVar28) <<\n                                (((uint)*(byte *)(iVar32 + (uVar40 >> 1) + -1) -\n                                 (uint)*(byte *)(iVar32 + (uVar6 >> 1) + -1)) -\n                                 (uint)*(byte *)(iVar32 + ((uint)((int)p_Var22 - (int)k_00) >> 1) +\n                                                -1) & 0x1f));" (assignment_expression "iVar28 = (**(code **)(iVar5 + -0x7f9c))\n                               (p_Var33,p_Var33,puVar54,\n                                *(int *)((((int)p_Var22 - (int)k_00) - 2U) * 4 + iVar28) *\n                                *(int *)(*(int *)(iVar5 + -0x7b38) + uVar40 * 4) *\n                                *(int *)((uVar6 - 2) * 4 + iVar28) <<\n                                (((uint)*(byte *)(iVar32 + (uVar40 >> 1) + -1) -\n                                 (uint)*(byte *)(iVar32 + (uVar6 >> 1) + -1)) -\n                                 (uint)*(byte *)(iVar32 + ((uint)((int)p_Var22 - (int)k_00) >> 1) +\n                                                -1) & 0x1f))" identifier = (call_expression "(**(code **)(iVar5 + -0x7f9c))\n                               (p_Var33,p_Var33,puVar54,\n                                *(int *)((((int)p_Var22 - (int)k_00) - 2U) * 4 + iVar28) *\n                                *(int *)(*(int *)(iVar5 + -0x7b38) + uVar40 * 4) *\n                                *(int *)((uVar6 - 2) * 4 + iVar28) <<\n                                (((uint)*(byte *)(iVar32 + (uVar40 >> 1) + -1) -\n                                 (uint)*(byte *)(iVar32 + (uVar6 >> 1) + -1)) -\n                                 (uint)*(byte *)(iVar32 + ((uint)((int)p_Var22 - (int)k_00) >> 1) +\n                                                -1) & 0x1f))" (parenthesized_expression "(**(code **)(iVar5 + -0x7f9c))" ( (pointer_expression "**(code **)(iVar5 + -0x7f9c)" * (pointer_expression "*(code **)(iVar5 + -0x7f9c)" * (cast_expression "(code **)(iVar5 + -0x7f9c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar5 + -0x7f9c)" ( (binary_expression "iVar5 + -0x7f9c" identifier + number_literal) ))))) )) (argument_list "(p_Var33,p_Var33,puVar54,\n                                *(int *)((((int)p_Var22 - (int)k_00) - 2U) * 4 + iVar28) *\n                                *(int *)(*(int *)(iVar5 + -0x7b38) + uVar40 * 4) *\n                                *(int *)((uVar6 - 2) * 4 + iVar28) <<\n                                (((uint)*(byte *)(iVar32 + (uVar40 >> 1) + -1) -\n                                 (uint)*(byte *)(iVar32 + (uVar6 >> 1) + -1)) -\n                                 (uint)*(byte *)(iVar32 + ((uint)((int)p_Var22 - (int)k_00) >> 1) +\n                                                -1) & 0x1f))" ( identifier , identifier , identifier , (binary_expression "*(int *)((((int)p_Var22 - (int)k_00) - 2U) * 4 + iVar28) *\n                                *(int *)(*(int *)(iVar5 + -0x7b38) + uVar40 * 4) *\n                                *(int *)((uVar6 - 2) * 4 + iVar28) <<\n                                (((uint)*(byte *)(iVar32 + (uVar40 >> 1) + -1) -\n                                 (uint)*(byte *)(iVar32 + (uVar6 >> 1) + -1)) -\n                                 (uint)*(byte *)(iVar32 + ((uint)((int)p_Var22 - (int)k_00) >> 1) +\n                                                -1) & 0x1f)" (binary_expression "*(int *)((((int)p_Var22 - (int)k_00) - 2U) * 4 + iVar28) *\n                                *(int *)(*(int *)(iVar5 + -0x7b38) + uVar40 * 4) *\n                                *(int *)((uVar6 - 2) * 4 + iVar28)" (binary_expression "*(int *)((((int)p_Var22 - (int)k_00) - 2U) * 4 + iVar28) *\n                                *(int *)(*(int *)(iVar5 + -0x7b38) + uVar40 * 4)" (pointer_expression "*(int *)((((int)p_Var22 - (int)k_00) - 2U) * 4 + iVar28)" * (cast_expression "(int *)((((int)p_Var22 - (int)k_00) - 2U) * 4 + iVar28)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((((int)p_Var22 - (int)k_00) - 2U) * 4 + iVar28)" ( (binary_expression "(((int)p_Var22 - (int)k_00) - 2U) * 4 + iVar28" (binary_expression "(((int)p_Var22 - (int)k_00) - 2U) * 4" (parenthesized_expression "(((int)p_Var22 - (int)k_00) - 2U)" ( (binary_expression "((int)p_Var22 - (int)k_00) - 2U" (parenthesized_expression "((int)p_Var22 - (int)k_00)" ( (binary_expression "(int)p_Var22 - (int)k_00" (cast_expression "(int)p_Var22" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)k_00" ( (type_descriptor "int" primitive_type) ) identifier)) )) - number_literal) )) * number_literal) + identifier) )))) * (pointer_expression "*(int *)(*(int *)(iVar5 + -0x7b38) + uVar40 * 4)" * (cast_expression "(int *)(*(int *)(iVar5 + -0x7b38) + uVar40 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(iVar5 + -0x7b38) + uVar40 * 4)" ( (binary_expression "*(int *)(iVar5 + -0x7b38) + uVar40 * 4" (pointer_expression "*(int *)(iVar5 + -0x7b38)" * (cast_expression "(int *)(iVar5 + -0x7b38)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + -0x7b38)" ( (binary_expression "iVar5 + -0x7b38" identifier + number_literal) )))) + (binary_expression "uVar40 * 4" identifier * number_literal)) ))))) * (pointer_expression "*(int *)((uVar6 - 2) * 4 + iVar28)" * (cast_expression "(int *)((uVar6 - 2) * 4 + iVar28)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((uVar6 - 2) * 4 + iVar28)" ( (binary_expression "(uVar6 - 2) * 4 + iVar28" (binary_expression "(uVar6 - 2) * 4" (parenthesized_expression "(uVar6 - 2)" ( (binary_expression "uVar6 - 2" identifier - number_literal) )) * number_literal) + identifier) ))))) << (parenthesized_expression "(((uint)*(byte *)(iVar32 + (uVar40 >> 1) + -1) -\n                                 (uint)*(byte *)(iVar32 + (uVar6 >> 1) + -1)) -\n                                 (uint)*(byte *)(iVar32 + ((uint)((int)p_Var22 - (int)k_00) >> 1) +\n                                                -1) & 0x1f)" ( (binary_expression "((uint)*(byte *)(iVar32 + (uVar40 >> 1) + -1) -\n                                 (uint)*(byte *)(iVar32 + (uVar6 >> 1) + -1)) -\n                                 (uint)*(byte *)(iVar32 + ((uint)((int)p_Var22 - (int)k_00) >> 1) +\n                                                -1) & 0x1f" (binary_expression "((uint)*(byte *)(iVar32 + (uVar40 >> 1) + -1) -\n                                 (uint)*(byte *)(iVar32 + (uVar6 >> 1) + -1)) -\n                                 (uint)*(byte *)(iVar32 + ((uint)((int)p_Var22 - (int)k_00) >> 1) +\n                                                -1)" (parenthesized_expression "((uint)*(byte *)(iVar32 + (uVar40 >> 1) + -1) -\n                                 (uint)*(byte *)(iVar32 + (uVar6 >> 1) + -1))" ( (binary_expression "(uint)*(byte *)(iVar32 + (uVar40 >> 1) + -1) -\n                                 (uint)*(byte *)(iVar32 + (uVar6 >> 1) + -1)" (binary_expression "(uint)*(byte *)(iVar32 + (uVar40 >> 1) + -1)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)(iVar32 + (uVar40 >> 1) + -1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar32 + (uVar40 >> 1) + -1)" ( (binary_expression "iVar32 + (uVar40 >> 1) + -1" (binary_expression "iVar32 + (uVar40 >> 1)" identifier + (parenthesized_expression "(uVar40 >> 1)" ( (binary_expression "uVar40 >> 1" identifier >> number_literal) ))) + number_literal) )))) - (binary_expression "(uint)*(byte *)(iVar32 + (uVar6 >> 1) + -1)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)(iVar32 + (uVar6 >> 1) + -1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar32 + (uVar6 >> 1) + -1)" ( (binary_expression "iVar32 + (uVar6 >> 1) + -1" (binary_expression "iVar32 + (uVar6 >> 1)" identifier + (parenthesized_expression "(uVar6 >> 1)" ( (binary_expression "uVar6 >> 1" identifier >> number_literal) ))) + number_literal) ))))) )) - (binary_expression "(uint)*(byte *)(iVar32 + ((uint)((int)p_Var22 - (int)k_00) >> 1) +\n                                                -1)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)(iVar32 + ((uint)((int)p_Var22 - (int)k_00) >> 1) +\n                                                -1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar32 + ((uint)((int)p_Var22 - (int)k_00) >> 1) +\n                                                -1)" ( (binary_expression "iVar32 + ((uint)((int)p_Var22 - (int)k_00) >> 1) +\n                                                -1" (binary_expression "iVar32 + ((uint)((int)p_Var22 - (int)k_00) >> 1)" identifier + (parenthesized_expression "((uint)((int)p_Var22 - (int)k_00) >> 1)" ( (binary_expression "(uint)((int)p_Var22 - (int)k_00) >> 1" (call_expression "(uint)((int)p_Var22 - (int)k_00)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((int)p_Var22 - (int)k_00)" ( (binary_expression "(int)p_Var22 - (int)k_00" (cast_expression "(int)p_Var22" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)k_00" ( (type_descriptor "int" primitive_type) ) identifier)) ))) >> number_literal) ))) + number_literal) ))))) & number_literal) ))) )))) ;) (expression_statement "iVar5 = *(int *)(puVar51 + -0xf0);" (assignment_expression "iVar5 = *(int *)(puVar51 + -0xf0)" identifier = (pointer_expression "*(int *)(puVar51 + -0xf0)" * (cast_expression "(int *)(puVar51 + -0xf0)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar51 + -0xf0)" ( (binary_expression "puVar51 + -0xf0" identifier + number_literal) ))))) ;) (expression_statement "k_00 = (mpz_ptr)(puVar54 + (iVar28 != 0));" (assignment_expression "k_00 = (mpz_ptr)(puVar54 + (iVar28 != 0))" identifier = (call_expression "(mpz_ptr)(puVar54 + (iVar28 != 0))" (parenthesized_expression "(mpz_ptr)" ( identifier )) (argument_list "(puVar54 + (iVar28 != 0))" ( (binary_expression "puVar54 + (iVar28 != 0)" identifier + (parenthesized_expression "(iVar28 != 0)" ( (binary_expression "iVar28 != 0" identifier != number_literal) ))) )))) ;) (expression_statement "(&p_Var33->_mp_alloc)[(int)puVar54] = iVar28;" (assignment_expression "(&p_Var33->_mp_alloc)[(int)puVar54] = iVar28" (subscript_expression "(&p_Var33->_mp_alloc)[(int)puVar54]" (parenthesized_expression "(&p_Var33->_mp_alloc)" ( (pointer_expression "&p_Var33->_mp_alloc" & (field_expression "p_Var33->_mp_alloc" identifier -> field_identifier)) )) [ (cast_expression "(int)puVar54" ( (type_descriptor "int" primitive_type) ) identifier) ]) = identifier) ;) }) (else_clause "else {\n            *(undefined4 *)(puVar51 + -0xe4) = 0x15;\n            *(undefined1 **)(puVar51 + -0xdc) = puVar51 + -0xd8;\n            mpz_smallk_bin_uiui((mpz_ptr)(puVar51 + -0xe4),uVar40,uVar6);\n            (**(code **)(*(int *)(puVar51 + -0xf0) + -0x7ba8))(r_00,r_00,(mpz_ptr)(puVar51 + -0xe4))\n            ;\n            iVar5 = *(int *)(puVar51 + -0xf0);\n            p_Var33 = (mpz_ptr)r_00->_mp_d;\n            k_00 = (mpz_ptr)r_00->_mp_size;\n          }" else (compound_statement "{\n            *(undefined4 *)(puVar51 + -0xe4) = 0x15;\n            *(undefined1 **)(puVar51 + -0xdc) = puVar51 + -0xd8;\n            mpz_smallk_bin_uiui((mpz_ptr)(puVar51 + -0xe4),uVar40,uVar6);\n            (**(code **)(*(int *)(puVar51 + -0xf0) + -0x7ba8))(r_00,r_00,(mpz_ptr)(puVar51 + -0xe4))\n            ;\n            iVar5 = *(int *)(puVar51 + -0xf0);\n            p_Var33 = (mpz_ptr)r_00->_mp_d;\n            k_00 = (mpz_ptr)r_00->_mp_size;\n          }" { (expression_statement "*(undefined4 *)(puVar51 + -0xe4) = 0x15;" (assignment_expression "*(undefined4 *)(puVar51 + -0xe4) = 0x15" (pointer_expression "*(undefined4 *)(puVar51 + -0xe4)" * (cast_expression "(undefined4 *)(puVar51 + -0xe4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar51 + -0xe4)" ( (binary_expression "puVar51 + -0xe4" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined1 **)(puVar51 + -0xdc) = puVar51 + -0xd8;" (assignment_expression "*(undefined1 **)(puVar51 + -0xdc) = puVar51 + -0xd8" (pointer_expression "*(undefined1 **)(puVar51 + -0xdc)" * (cast_expression "(undefined1 **)(puVar51 + -0xdc)" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar51 + -0xdc)" ( (binary_expression "puVar51 + -0xdc" identifier + number_literal) )))) = (binary_expression "puVar51 + -0xd8" identifier + number_literal)) ;) (expression_statement "mpz_smallk_bin_uiui((mpz_ptr)(puVar51 + -0xe4),uVar40,uVar6);" (call_expression "mpz_smallk_bin_uiui((mpz_ptr)(puVar51 + -0xe4),uVar40,uVar6)" identifier (argument_list "((mpz_ptr)(puVar51 + -0xe4),uVar40,uVar6)" ( (call_expression "(mpz_ptr)(puVar51 + -0xe4)" (parenthesized_expression "(mpz_ptr)" ( identifier )) (argument_list "(puVar51 + -0xe4)" ( (binary_expression "puVar51 + -0xe4" identifier + number_literal) ))) , identifier , identifier ))) ;) (expression_statement "(**(code **)(*(int *)(puVar51 + -0xf0) + -0x7ba8))(r_00,r_00,(mpz_ptr)(puVar51 + -0xe4))\n            ;" (call_expression "(**(code **)(*(int *)(puVar51 + -0xf0) + -0x7ba8))(r_00,r_00,(mpz_ptr)(puVar51 + -0xe4))" (parenthesized_expression "(**(code **)(*(int *)(puVar51 + -0xf0) + -0x7ba8))" ( (pointer_expression "**(code **)(*(int *)(puVar51 + -0xf0) + -0x7ba8)" * (pointer_expression "*(code **)(*(int *)(puVar51 + -0xf0) + -0x7ba8)" * (cast_expression "(code **)(*(int *)(puVar51 + -0xf0) + -0x7ba8)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)(puVar51 + -0xf0) + -0x7ba8)" ( (binary_expression "*(int *)(puVar51 + -0xf0) + -0x7ba8" (pointer_expression "*(int *)(puVar51 + -0xf0)" * (cast_expression "(int *)(puVar51 + -0xf0)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar51 + -0xf0)" ( (binary_expression "puVar51 + -0xf0" identifier + number_literal) )))) + number_literal) ))))) )) (argument_list "(r_00,r_00,(mpz_ptr)(puVar51 + -0xe4))" ( identifier , identifier , (call_expression "(mpz_ptr)(puVar51 + -0xe4)" (parenthesized_expression "(mpz_ptr)" ( identifier )) (argument_list "(puVar51 + -0xe4)" ( (binary_expression "puVar51 + -0xe4" identifier + number_literal) ))) ))) ;) (expression_statement "iVar5 = *(int *)(puVar51 + -0xf0);" (assignment_expression "iVar5 = *(int *)(puVar51 + -0xf0)" identifier = (pointer_expression "*(int *)(puVar51 + -0xf0)" * (cast_expression "(int *)(puVar51 + -0xf0)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar51 + -0xf0)" ( (binary_expression "puVar51 + -0xf0" identifier + number_literal) ))))) ;) (expression_statement "p_Var33 = (mpz_ptr)r_00->_mp_d;" (assignment_expression "p_Var33 = (mpz_ptr)r_00->_mp_d" identifier = (cast_expression "(mpz_ptr)r_00->_mp_d" ( (type_descriptor "mpz_ptr" type_identifier) ) (field_expression "r_00->_mp_d" identifier -> field_identifier))) ;) (expression_statement "k_00 = (mpz_ptr)r_00->_mp_size;" (assignment_expression "k_00 = (mpz_ptr)r_00->_mp_size" identifier = (cast_expression "(mpz_ptr)r_00->_mp_size" ( (type_descriptor "mpz_ptr" type_identifier) ) (field_expression "r_00->_mp_size" identifier -> field_identifier))) ;) }))) (expression_statement "pcVar55 = *(code **)(iVar5 + -0x7bb4);" (assignment_expression "pcVar55 = *(code **)(iVar5 + -0x7bb4)" identifier = (pointer_expression "*(code **)(iVar5 + -0x7bb4)" * (cast_expression "(code **)(iVar5 + -0x7bb4)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar5 + -0x7bb4)" ( (binary_expression "iVar5 + -0x7bb4" identifier + number_literal) ))))) ;) (expression_statement "p_Var41 = (mpz_ptr)((uint)*(byte *)((uVar6 - 8) + *(int *)(iVar5 + -0x7fd4) + 0x3550) -\n                             (uint)(uVar20 != uVar6));" (assignment_expression "p_Var41 = (mpz_ptr)((uint)*(byte *)((uVar6 - 8) + *(int *)(iVar5 + -0x7fd4) + 0x3550) -\n                             (uint)(uVar20 != uVar6))" identifier = (call_expression "(mpz_ptr)((uint)*(byte *)((uVar6 - 8) + *(int *)(iVar5 + -0x7fd4) + 0x3550) -\n                             (uint)(uVar20 != uVar6))" (parenthesized_expression "(mpz_ptr)" ( identifier )) (argument_list "((uint)*(byte *)((uVar6 - 8) + *(int *)(iVar5 + -0x7fd4) + 0x3550) -\n                             (uint)(uVar20 != uVar6))" ( (binary_expression "(uint)*(byte *)((uVar6 - 8) + *(int *)(iVar5 + -0x7fd4) + 0x3550) -\n                             (uint)(uVar20 != uVar6)" (binary_expression "(uint)*(byte *)((uVar6 - 8) + *(int *)(iVar5 + -0x7fd4) + 0x3550)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)((uVar6 - 8) + *(int *)(iVar5 + -0x7fd4) + 0x3550)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((uVar6 - 8) + *(int *)(iVar5 + -0x7fd4) + 0x3550)" ( (binary_expression "(uVar6 - 8) + *(int *)(iVar5 + -0x7fd4) + 0x3550" (binary_expression "(uVar6 - 8) + *(int *)(iVar5 + -0x7fd4)" (parenthesized_expression "(uVar6 - 8)" ( (binary_expression "uVar6 - 8" identifier - number_literal) )) + (pointer_expression "*(int *)(iVar5 + -0x7fd4)" * (cast_expression "(int *)(iVar5 + -0x7fd4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + -0x7fd4)" ( (binary_expression "iVar5 + -0x7fd4" identifier + number_literal) ))))) + number_literal) )))) - (call_expression "(uint)(uVar20 != uVar6)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar20 != uVar6)" ( (binary_expression "uVar20 != uVar6" identifier != identifier) )))) )))) ;) (expression_statement "*(undefined4 *)(puVar51 + -0xf8) =\n               *(undefined4 *)((uVar6 - 8) * 4 + *(int *)(iVar5 + -0x7fd4) + 0x355c);" (assignment_expression "*(undefined4 *)(puVar51 + -0xf8) =\n               *(undefined4 *)((uVar6 - 8) * 4 + *(int *)(iVar5 + -0x7fd4) + 0x355c)" (pointer_expression "*(undefined4 *)(puVar51 + -0xf8)" * (cast_expression "(undefined4 *)(puVar51 + -0xf8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar51 + -0xf8)" ( (binary_expression "puVar51 + -0xf8" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)((uVar6 - 8) * 4 + *(int *)(iVar5 + -0x7fd4) + 0x355c)" * (cast_expression "(undefined4 *)((uVar6 - 8) * 4 + *(int *)(iVar5 + -0x7fd4) + 0x355c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((uVar6 - 8) * 4 + *(int *)(iVar5 + -0x7fd4) + 0x355c)" ( (binary_expression "(uVar6 - 8) * 4 + *(int *)(iVar5 + -0x7fd4) + 0x355c" (binary_expression "(uVar6 - 8) * 4 + *(int *)(iVar5 + -0x7fd4)" (binary_expression "(uVar6 - 8) * 4" (parenthesized_expression "(uVar6 - 8)" ( (binary_expression "uVar6 - 8" identifier - number_literal) )) * number_literal) + (pointer_expression "*(int *)(iVar5 + -0x7fd4)" * (cast_expression "(int *)(iVar5 + -0x7fd4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + -0x7fd4)" ( (binary_expression "iVar5 + -0x7fd4" identifier + number_literal) ))))) + number_literal) ))))) ;) (expression_statement "*(mpz_ptr *)(puVar51 + -0xf4) = p_Var41;" (assignment_expression "*(mpz_ptr *)(puVar51 + -0xf4) = p_Var41" (pointer_expression "*(mpz_ptr *)(puVar51 + -0xf4)" * (cast_expression "(mpz_ptr *)(puVar51 + -0xf4)" ( (type_descriptor "mpz_ptr *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar51 + -0xf4)" ( (binary_expression "puVar51 + -0xf4" identifier + number_literal) )))) = identifier) ;) (expression_statement "p_Var34 = p_Var33;" (assignment_expression "p_Var34 = p_Var33" identifier = identifier) ;) (expression_statement "p_Var23 = p_Var33;" (assignment_expression "p_Var23 = p_Var33" identifier = identifier) ;) (expression_statement "p_Var25 = k_00;" (assignment_expression "p_Var25 = k_00" identifier = identifier) ;) (expression_statement "(*pcVar55)();" (call_expression "(*pcVar55)()" (parenthesized_expression "(*pcVar55)" ( (pointer_expression "*pcVar55" * identifier) )) (argument_list "()" ( ))) ;) (expression_statement "pcVar48 = *(code **)(puVar51 + -0xf0);" (assignment_expression "pcVar48 = *(code **)(puVar51 + -0xf0)" identifier = (pointer_expression "*(code **)(puVar51 + -0xf0)" * (cast_expression "(code **)(puVar51 + -0xf0)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar51 + -0xf0)" ( (binary_expression "puVar51 + -0xf0" identifier + number_literal) ))))) ;) (if_statement "if (*(int *)((int)p_Var33 + (int)k_00 * 4 + -4) == 0) {\n            piVar37 = &p_Var33->_mp_alloc + (int)k_00;\n            do {\n              piVar19 = piVar37 + -2;\n              k_00 = (mpz_ptr)((int)&k_00[-1]._mp_d + 3);\n              piVar37 = piVar37 + -1;\n            } while (*piVar19 == 0);\n          }" if (parenthesized_expression "(*(int *)((int)p_Var33 + (int)k_00 * 4 + -4) == 0)" ( (binary_expression "*(int *)((int)p_Var33 + (int)k_00 * 4 + -4) == 0" (pointer_expression "*(int *)((int)p_Var33 + (int)k_00 * 4 + -4)" * (cast_expression "(int *)((int)p_Var33 + (int)k_00 * 4 + -4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)p_Var33 + (int)k_00 * 4 + -4)" ( (binary_expression "(int)p_Var33 + (int)k_00 * 4 + -4" (binary_expression "(int)p_Var33 + (int)k_00 * 4" (cast_expression "(int)p_Var33" ( (type_descriptor "int" primitive_type) ) identifier) + (binary_expression "(int)k_00 * 4" (cast_expression "(int)k_00" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal)) + number_literal) )))) == number_literal) )) (compound_statement "{\n            piVar37 = &p_Var33->_mp_alloc + (int)k_00;\n            do {\n              piVar19 = piVar37 + -2;\n              k_00 = (mpz_ptr)((int)&k_00[-1]._mp_d + 3);\n              piVar37 = piVar37 + -1;\n            } while (*piVar19 == 0);\n          }" { (expression_statement "piVar37 = &p_Var33->_mp_alloc + (int)k_00;" (assignment_expression "piVar37 = &p_Var33->_mp_alloc + (int)k_00" identifier = (binary_expression "&p_Var33->_mp_alloc + (int)k_00" (pointer_expression "&p_Var33->_mp_alloc" & (field_expression "p_Var33->_mp_alloc" identifier -> field_identifier)) + (cast_expression "(int)k_00" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (do_statement "do {\n              piVar19 = piVar37 + -2;\n              k_00 = (mpz_ptr)((int)&k_00[-1]._mp_d + 3);\n              piVar37 = piVar37 + -1;\n            } while (*piVar19 == 0);" do (compound_statement "{\n              piVar19 = piVar37 + -2;\n              k_00 = (mpz_ptr)((int)&k_00[-1]._mp_d + 3);\n              piVar37 = piVar37 + -1;\n            }" { (expression_statement "piVar19 = piVar37 + -2;" (assignment_expression "piVar19 = piVar37 + -2" identifier = (binary_expression "piVar37 + -2" identifier + number_literal)) ;) (expression_statement "k_00 = (mpz_ptr)((int)&k_00[-1]._mp_d + 3);" (assignment_expression "k_00 = (mpz_ptr)((int)&k_00[-1]._mp_d + 3)" identifier = (call_expression "(mpz_ptr)((int)&k_00[-1]._mp_d + 3)" (parenthesized_expression "(mpz_ptr)" ( identifier )) (argument_list "((int)&k_00[-1]._mp_d + 3)" ( (binary_expression "(int)&k_00[-1]._mp_d + 3" (cast_expression "(int)&k_00[-1]._mp_d" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&k_00[-1]._mp_d" & (field_expression "k_00[-1]._mp_d" (subscript_expression "k_00[-1]" identifier [ number_literal ]) . field_identifier))) + number_literal) )))) ;) (expression_statement "piVar37 = piVar37 + -1;" (assignment_expression "piVar37 = piVar37 + -1" identifier = (binary_expression "piVar37 + -1" identifier + number_literal)) ;) }) while (parenthesized_expression "(*piVar19 == 0)" ( (binary_expression "*piVar19 == 0" (pointer_expression "*piVar19" * identifier) == number_literal) )) ;) })) (expression_statement "r_00->_mp_size = (int)k_00;" (assignment_expression "r_00->_mp_size = (int)k_00" (field_expression "r_00->_mp_size" identifier -> field_identifier) = (cast_expression "(int)k_00" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "puVar53 = puVar54;" (assignment_expression "puVar53 = puVar54" identifier = identifier) ;) }) (else_clause "else if ((k_00 < (mpz_ptr)0x3e8) || (k_00 <= (mpz_ptr)((uint)p_Var22 >> 4))) {\n          mpz_bdiv_bin_uiui(r_00,(ulong)p_Var22,(ulong)k_00);\n          pcVar48 = *(code **)(puVar51 + -0xf0);\n          puVar53 = puVar50 + -0x90;\n        }\n        else {\n          mpz_goetgheluck_bin_uiui(r_00,(ulong)p_Var22,(ulong)k_00);\n          pcVar48 = *(code **)(puVar51 + -0xf0);\n          puVar53 = puVar50 + -0x90;\n        }" else (if_statement "if ((k_00 < (mpz_ptr)0x3e8) || (k_00 <= (mpz_ptr)((uint)p_Var22 >> 4))) {\n          mpz_bdiv_bin_uiui(r_00,(ulong)p_Var22,(ulong)k_00);\n          pcVar48 = *(code **)(puVar51 + -0xf0);\n          puVar53 = puVar50 + -0x90;\n        }\n        else {\n          mpz_goetgheluck_bin_uiui(r_00,(ulong)p_Var22,(ulong)k_00);\n          pcVar48 = *(code **)(puVar51 + -0xf0);\n          puVar53 = puVar50 + -0x90;\n        }" if (parenthesized_expression "((k_00 < (mpz_ptr)0x3e8) || (k_00 <= (mpz_ptr)((uint)p_Var22 >> 4)))" ( (binary_expression "(k_00 < (mpz_ptr)0x3e8) || (k_00 <= (mpz_ptr)((uint)p_Var22 >> 4))" (parenthesized_expression "(k_00 < (mpz_ptr)0x3e8)" ( (binary_expression "k_00 < (mpz_ptr)0x3e8" identifier < (cast_expression "(mpz_ptr)0x3e8" ( (type_descriptor "mpz_ptr" type_identifier) ) number_literal)) )) || (parenthesized_expression "(k_00 <= (mpz_ptr)((uint)p_Var22 >> 4))" ( (binary_expression "k_00 <= (mpz_ptr)((uint)p_Var22 >> 4)" identifier <= (call_expression "(mpz_ptr)((uint)p_Var22 >> 4)" (parenthesized_expression "(mpz_ptr)" ( identifier )) (argument_list "((uint)p_Var22 >> 4)" ( (binary_expression "(uint)p_Var22 >> 4" (cast_expression "(uint)p_Var22" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) )))) ))) )) (compound_statement "{\n          mpz_bdiv_bin_uiui(r_00,(ulong)p_Var22,(ulong)k_00);\n          pcVar48 = *(code **)(puVar51 + -0xf0);\n          puVar53 = puVar50 + -0x90;\n        }" { (expression_statement "mpz_bdiv_bin_uiui(r_00,(ulong)p_Var22,(ulong)k_00);" (call_expression "mpz_bdiv_bin_uiui(r_00,(ulong)p_Var22,(ulong)k_00)" identifier (argument_list "(r_00,(ulong)p_Var22,(ulong)k_00)" ( identifier , (cast_expression "(ulong)p_Var22" ( (type_descriptor "ulong" type_identifier) ) identifier) , (cast_expression "(ulong)k_00" ( (type_descriptor "ulong" type_identifier) ) identifier) ))) ;) (expression_statement "pcVar48 = *(code **)(puVar51 + -0xf0);" (assignment_expression "pcVar48 = *(code **)(puVar51 + -0xf0)" identifier = (pointer_expression "*(code **)(puVar51 + -0xf0)" * (cast_expression "(code **)(puVar51 + -0xf0)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar51 + -0xf0)" ( (binary_expression "puVar51 + -0xf0" identifier + number_literal) ))))) ;) (expression_statement "puVar53 = puVar50 + -0x90;" (assignment_expression "puVar53 = puVar50 + -0x90" identifier = (binary_expression "puVar50 + -0x90" identifier + number_literal)) ;) }) (else_clause "else {\n          mpz_goetgheluck_bin_uiui(r_00,(ulong)p_Var22,(ulong)k_00);\n          pcVar48 = *(code **)(puVar51 + -0xf0);\n          puVar53 = puVar50 + -0x90;\n        }" else (compound_statement "{\n          mpz_goetgheluck_bin_uiui(r_00,(ulong)p_Var22,(ulong)k_00);\n          pcVar48 = *(code **)(puVar51 + -0xf0);\n          puVar53 = puVar50 + -0x90;\n        }" { (expression_statement "mpz_goetgheluck_bin_uiui(r_00,(ulong)p_Var22,(ulong)k_00);" (call_expression "mpz_goetgheluck_bin_uiui(r_00,(ulong)p_Var22,(ulong)k_00)" identifier (argument_list "(r_00,(ulong)p_Var22,(ulong)k_00)" ( identifier , (cast_expression "(ulong)p_Var22" ( (type_descriptor "ulong" type_identifier) ) identifier) , (cast_expression "(ulong)k_00" ( (type_descriptor "ulong" type_identifier) ) identifier) ))) ;) (expression_statement "pcVar48 = *(code **)(puVar51 + -0xf0);" (assignment_expression "pcVar48 = *(code **)(puVar51 + -0xf0)" identifier = (pointer_expression "*(code **)(puVar51 + -0xf0)" * (cast_expression "(code **)(puVar51 + -0xf0)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar51 + -0xf0)" ( (binary_expression "puVar51 + -0xf0" identifier + number_literal) ))))) ;) (expression_statement "puVar53 = puVar50 + -0x90;" (assignment_expression "puVar53 = puVar50 + -0x90" identifier = (binary_expression "puVar50 + -0x90" identifier + number_literal)) ;) }))))))))))) }))) (if_statement "if (*(int *)(puVar51 + -0x84) == *piVar35) {\n        return;\n      }" if (parenthesized_expression "(*(int *)(puVar51 + -0x84) == *piVar35)" ( (binary_expression "*(int *)(puVar51 + -0x84) == *piVar35" (pointer_expression "*(int *)(puVar51 + -0x84)" * (cast_expression "(int *)(puVar51 + -0x84)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar51 + -0x84)" ( (binary_expression "puVar51 + -0x84" identifier + number_literal) )))) == (pointer_expression "*piVar35" * identifier)) )) (compound_statement "{\n        return;\n      }" { (return_statement "return;" return ;) })) (expression_statement "pcVar55 = *(code **)(pcVar48 + -0x7b70);" (assignment_expression "pcVar55 = *(code **)(pcVar48 + -0x7b70)" identifier = (pointer_expression "*(code **)(pcVar48 + -0x7b70)" * (cast_expression "(code **)(pcVar48 + -0x7b70)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar48 + -0x7b70)" ( (binary_expression "pcVar48 + -0x7b70" identifier + number_literal) ))))) ;) (expression_statement "uVar9 = 0x22b64;" (assignment_expression "uVar9 = 0x22b64" identifier = number_literal) ;) (expression_statement "(*pcVar55)();" (call_expression "(*pcVar55)()" (parenthesized_expression "(*pcVar55)" ( (pointer_expression "*pcVar55" * identifier) )) (argument_list "()" ( ))) ;) (expression_statement "pcVar48 = pcVar55 + 0x824d0;" (assignment_expression "pcVar48 = pcVar55 + 0x824d0" identifier = (binary_expression "pcVar55 + 0x824d0" identifier + number_literal)) ;) (expression_statement "puVar52 = puVar51 + -0x160;" (assignment_expression "puVar52 = puVar51 + -0x160" identifier = (binary_expression "puVar51 + -0x160" identifier + number_literal)) ;) (expression_statement "*(mpz_ptr *)(puVar51 + -0x118) = r_00;" (assignment_expression "*(mpz_ptr *)(puVar51 + -0x118) = r_00" (pointer_expression "*(mpz_ptr *)(puVar51 + -0x118)" * (cast_expression "(mpz_ptr *)(puVar51 + -0x118)" ( (type_descriptor "mpz_ptr *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar51 + -0x118)" ( (binary_expression "puVar51 + -0x118" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(mpz_ptr *)(puVar51 + -0x124) = k_00;" (assignment_expression "*(mpz_ptr *)(puVar51 + -0x124) = k_00" (pointer_expression "*(mpz_ptr *)(puVar51 + -0x124)" * (cast_expression "(mpz_ptr *)(puVar51 + -0x124)" ( (type_descriptor "mpz_ptr *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar51 + -0x124)" ( (binary_expression "puVar51 + -0x124" identifier + number_literal) )))) = identifier) ;) (expression_statement "piVar37 = *(int **)(pcVar55 + 0x7a9d0);" (assignment_expression "piVar37 = *(int **)(pcVar55 + 0x7a9d0)" identifier = (pointer_expression "*(int **)(pcVar55 + 0x7a9d0)" * (cast_expression "(int **)(pcVar55 + 0x7a9d0)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar55 + 0x7a9d0)" ( (binary_expression "pcVar55 + 0x7a9d0" identifier + number_literal) ))))) ;) (expression_statement "uVar20 = p_Var25->_mp_size;" (assignment_expression "uVar20 = p_Var25->_mp_size" identifier = (field_expression "p_Var25->_mp_size" identifier -> field_identifier)) ;) (expression_statement "*(undefined1 **)(puVar51 + -0x110) = puVar53;" (assignment_expression "*(undefined1 **)(puVar51 + -0x110) = puVar53" (pointer_expression "*(undefined1 **)(puVar51 + -0x110)" * (cast_expression "(undefined1 **)(puVar51 + -0x110)" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar51 + -0x110)" ( (binary_expression "puVar51 + -0x110" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(mpz_ptr *)(puVar51 + -0x114) = p_Var39;" (assignment_expression "*(mpz_ptr *)(puVar51 + -0x114) = p_Var39" (pointer_expression "*(mpz_ptr *)(puVar51 + -0x114)" * (cast_expression "(mpz_ptr *)(puVar51 + -0x114)" ( (type_descriptor "mpz_ptr *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar51 + -0x114)" ( (binary_expression "puVar51 + -0x114" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int **)(puVar51 + -0x11c) = piVar35;" (assignment_expression "*(int **)(puVar51 + -0x11c) = piVar35" (pointer_expression "*(int **)(puVar51 + -0x11c)" * (cast_expression "(int **)(puVar51 + -0x11c)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar51 + -0x11c)" ( (binary_expression "puVar51 + -0x11c" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(mpz_ptr *)(puVar51 + -0x120) = p_Var33;" (assignment_expression "*(mpz_ptr *)(puVar51 + -0x120) = p_Var33" (pointer_expression "*(mpz_ptr *)(puVar51 + -0x120)" * (cast_expression "(mpz_ptr *)(puVar51 + -0x120)" ( (type_descriptor "mpz_ptr *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar51 + -0x120)" ( (binary_expression "puVar51 + -0x120" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar51 + -0x10c) = uVar9;" (assignment_expression "*(undefined4 *)(puVar51 + -0x10c) = uVar9" (pointer_expression "*(undefined4 *)(puVar51 + -0x10c)" * (cast_expression "(undefined4 *)(puVar51 + -0x10c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar51 + -0x10c)" ( (binary_expression "puVar51 + -0x10c" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(code **)(puVar51 + -0x150) = pcVar48;" (assignment_expression "*(code **)(puVar51 + -0x150) = pcVar48" (pointer_expression "*(code **)(puVar51 + -0x150)" * (cast_expression "(code **)(puVar51 + -0x150)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar51 + -0x150)" ( (binary_expression "puVar51 + -0x150" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar51 + -0x13c) = 0;" (assignment_expression "*(undefined4 *)(puVar51 + -0x13c) = 0" (pointer_expression "*(undefined4 *)(puVar51 + -0x13c)" * (cast_expression "(undefined4 *)(puVar51 + -0x13c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar51 + -0x13c)" ( (binary_expression "puVar51 + -0x13c" identifier + number_literal) )))) = number_literal) ;) (expression_statement "p_Var39 = (mpz_ptr)p_Var23->_mp_size;" (assignment_expression "p_Var39 = (mpz_ptr)p_Var23->_mp_size" identifier = (cast_expression "(mpz_ptr)p_Var23->_mp_size" ( (type_descriptor "mpz_ptr" type_identifier) ) (field_expression "p_Var23->_mp_size" identifier -> field_identifier))) ;) (expression_statement "*(int *)(puVar51 + -300) = *piVar37;" (assignment_expression "*(int *)(puVar51 + -300) = *piVar37" (pointer_expression "*(int *)(puVar51 + -300)" * (cast_expression "(int *)(puVar51 + -300)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar51 + -300)" ( (binary_expression "puVar51 + -300" identifier + number_literal) )))) = (pointer_expression "*piVar37" * identifier)) ;) (if_statement "if ((int)uVar20 < 0) {\n        uVar40 = uVar20 * -4;\n        *(uint *)(puVar51 + -0x138) = -uVar20;\n        if (0x7f00 < uVar40) {\n          pcVar55 = *(code **)(pcVar55 + 0x7a780);\n          goto LAB_00022c88;\n        }\nLAB_00022be4:\n        iVar5 = -(uVar40 + 7 & 0xfffffff8);\n        puVar52 = puVar51 + iVar5 + -0x160;\n        puVar13 = puVar51 + iVar5 + -0x150;\n      }\n      else {\n        uVar40 = uVar20 * 4;\n        *(uint *)(puVar51 + -0x138) = uVar20;\n        pcVar55 = *(code **)(pcVar55 + 0x7a780);\n        if (uVar40 < 0x7f01) goto LAB_00022be4;\nLAB_00022c88:\n        *(mpz_ptr *)(puVar51 + -0x144) = p_Var25;\n        puVar13 = (undefined1 *)(*pcVar55)(puVar51 + -0x13c,uVar40);\n        pcVar48 = *(code **)(puVar51 + -0x150);\n        p_Var25 = *(mpz_ptr *)(puVar51 + -0x144);\n      }" if (parenthesized_expression "((int)uVar20 < 0)" ( (binary_expression "(int)uVar20 < 0" (cast_expression "(int)uVar20" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n        uVar40 = uVar20 * -4;\n        *(uint *)(puVar51 + -0x138) = -uVar20;\n        if (0x7f00 < uVar40) {\n          pcVar55 = *(code **)(pcVar55 + 0x7a780);\n          goto LAB_00022c88;\n        }\nLAB_00022be4:\n        iVar5 = -(uVar40 + 7 & 0xfffffff8);\n        puVar52 = puVar51 + iVar5 + -0x160;\n        puVar13 = puVar51 + iVar5 + -0x150;\n      }" { (expression_statement "uVar40 = uVar20 * -4;" (assignment_expression "uVar40 = uVar20 * -4" identifier = (binary_expression "uVar20 * -4" identifier * number_literal)) ;) (expression_statement "*(uint *)(puVar51 + -0x138) = -uVar20;" (assignment_expression "*(uint *)(puVar51 + -0x138) = -uVar20" (pointer_expression "*(uint *)(puVar51 + -0x138)" * (cast_expression "(uint *)(puVar51 + -0x138)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar51 + -0x138)" ( (binary_expression "puVar51 + -0x138" identifier + number_literal) )))) = (unary_expression "-uVar20" - identifier)) ;) (if_statement "if (0x7f00 < uVar40) {\n          pcVar55 = *(code **)(pcVar55 + 0x7a780);\n          goto LAB_00022c88;\n        }" if (parenthesized_expression "(0x7f00 < uVar40)" ( (binary_expression "0x7f00 < uVar40" number_literal < identifier) )) (compound_statement "{\n          pcVar55 = *(code **)(pcVar55 + 0x7a780);\n          goto LAB_00022c88;\n        }" { (expression_statement "pcVar55 = *(code **)(pcVar55 + 0x7a780);" (assignment_expression "pcVar55 = *(code **)(pcVar55 + 0x7a780)" identifier = (pointer_expression "*(code **)(pcVar55 + 0x7a780)" * (cast_expression "(code **)(pcVar55 + 0x7a780)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar55 + 0x7a780)" ( (binary_expression "pcVar55 + 0x7a780" identifier + number_literal) ))))) ;) (goto_statement "goto LAB_00022c88;" goto statement_identifier ;) })) (labeled_statement "LAB_00022be4:\n        iVar5 = -(uVar40 + 7 & 0xfffffff8);" statement_identifier : (expression_statement "iVar5 = -(uVar40 + 7 & 0xfffffff8);" (assignment_expression "iVar5 = -(uVar40 + 7 & 0xfffffff8)" identifier = (unary_expression "-(uVar40 + 7 & 0xfffffff8)" - (parenthesized_expression "(uVar40 + 7 & 0xfffffff8)" ( (binary_expression "uVar40 + 7 & 0xfffffff8" (binary_expression "uVar40 + 7" identifier + number_literal) & number_literal) )))) ;)) (expression_statement "puVar52 = puVar51 + iVar5 + -0x160;" (assignment_expression "puVar52 = puVar51 + iVar5 + -0x160" identifier = (binary_expression "puVar51 + iVar5 + -0x160" (binary_expression "puVar51 + iVar5" identifier + identifier) + number_literal)) ;) (expression_statement "puVar13 = puVar51 + iVar5 + -0x150;" (assignment_expression "puVar13 = puVar51 + iVar5 + -0x150" identifier = (binary_expression "puVar51 + iVar5 + -0x150" (binary_expression "puVar51 + iVar5" identifier + identifier) + number_literal)) ;) }) (else_clause "else {\n        uVar40 = uVar20 * 4;\n        *(uint *)(puVar51 + -0x138) = uVar20;\n        pcVar55 = *(code **)(pcVar55 + 0x7a780);\n        if (uVar40 < 0x7f01) goto LAB_00022be4;\nLAB_00022c88:\n        *(mpz_ptr *)(puVar51 + -0x144) = p_Var25;\n        puVar13 = (undefined1 *)(*pcVar55)(puVar51 + -0x13c,uVar40);\n        pcVar48 = *(code **)(puVar51 + -0x150);\n        p_Var25 = *(mpz_ptr *)(puVar51 + -0x144);\n      }" else (compound_statement "{\n        uVar40 = uVar20 * 4;\n        *(uint *)(puVar51 + -0x138) = uVar20;\n        pcVar55 = *(code **)(pcVar55 + 0x7a780);\n        if (uVar40 < 0x7f01) goto LAB_00022be4;\nLAB_00022c88:\n        *(mpz_ptr *)(puVar51 + -0x144) = p_Var25;\n        puVar13 = (undefined1 *)(*pcVar55)(puVar51 + -0x13c,uVar40);\n        pcVar48 = *(code **)(puVar51 + -0x150);\n        p_Var25 = *(mpz_ptr *)(puVar51 + -0x144);\n      }" { (expression_statement "uVar40 = uVar20 * 4;" (assignment_expression "uVar40 = uVar20 * 4" identifier = (binary_expression "uVar20 * 4" identifier * number_literal)) ;) (expression_statement "*(uint *)(puVar51 + -0x138) = uVar20;" (assignment_expression "*(uint *)(puVar51 + -0x138) = uVar20" (pointer_expression "*(uint *)(puVar51 + -0x138)" * (cast_expression "(uint *)(puVar51 + -0x138)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar51 + -0x138)" ( (binary_expression "puVar51 + -0x138" identifier + number_literal) )))) = identifier) ;) (expression_statement "pcVar55 = *(code **)(pcVar55 + 0x7a780);" (assignment_expression "pcVar55 = *(code **)(pcVar55 + 0x7a780)" identifier = (pointer_expression "*(code **)(pcVar55 + 0x7a780)" * (cast_expression "(code **)(pcVar55 + 0x7a780)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar55 + 0x7a780)" ( (binary_expression "pcVar55 + 0x7a780" identifier + number_literal) ))))) ;) (if_statement "if (uVar40 < 0x7f01) goto LAB_00022be4;" if (parenthesized_expression "(uVar40 < 0x7f01)" ( (binary_expression "uVar40 < 0x7f01" identifier < number_literal) )) (goto_statement "goto LAB_00022be4;" goto statement_identifier ;)) (labeled_statement "LAB_00022c88:\n        *(mpz_ptr *)(puVar51 + -0x144) = p_Var25;" statement_identifier : (expression_statement "*(mpz_ptr *)(puVar51 + -0x144) = p_Var25;" (assignment_expression "*(mpz_ptr *)(puVar51 + -0x144) = p_Var25" (pointer_expression "*(mpz_ptr *)(puVar51 + -0x144)" * (cast_expression "(mpz_ptr *)(puVar51 + -0x144)" ( (type_descriptor "mpz_ptr *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar51 + -0x144)" ( (binary_expression "puVar51 + -0x144" identifier + number_literal) )))) = identifier) ;)) (expression_statement "puVar13 = (undefined1 *)(*pcVar55)(puVar51 + -0x13c,uVar40);" (assignment_expression "puVar13 = (undefined1 *)(*pcVar55)(puVar51 + -0x13c,uVar40)" identifier = (cast_expression "(undefined1 *)(*pcVar55)(puVar51 + -0x13c,uVar40)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(*pcVar55)(puVar51 + -0x13c,uVar40)" (parenthesized_expression "(*pcVar55)" ( (pointer_expression "*pcVar55" * identifier) )) (argument_list "(puVar51 + -0x13c,uVar40)" ( (binary_expression "puVar51 + -0x13c" identifier + number_literal) , identifier ))))) ;) (expression_statement "pcVar48 = *(code **)(puVar51 + -0x150);" (assignment_expression "pcVar48 = *(code **)(puVar51 + -0x150)" identifier = (pointer_expression "*(code **)(puVar51 + -0x150)" * (cast_expression "(code **)(puVar51 + -0x150)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar51 + -0x150)" ( (binary_expression "puVar51 + -0x150" identifier + number_literal) ))))) ;) (expression_statement "p_Var25 = *(mpz_ptr *)(puVar51 + -0x144);" (assignment_expression "p_Var25 = *(mpz_ptr *)(puVar51 + -0x144)" identifier = (pointer_expression "*(mpz_ptr *)(puVar51 + -0x144)" * (cast_expression "(mpz_ptr *)(puVar51 + -0x144)" ( (type_descriptor "mpz_ptr *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar51 + -0x144)" ( (binary_expression "puVar51 + -0x144" identifier + number_literal) ))))) ;) }))) (expression_statement "pcVar55 = *(code **)(pcVar48 + -0x7a68);" (assignment_expression "pcVar55 = *(code **)(pcVar48 + -0x7a68)" identifier = (pointer_expression "*(code **)(pcVar48 + -0x7a68)" * (cast_expression "(code **)(pcVar48 + -0x7a68)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar48 + -0x7a68)" ( (binary_expression "pcVar48 + -0x7a68" identifier + number_literal) ))))) ;) (expression_statement "p_Var33 = (mpz_ptr)(puVar51 + -0x138);" (assignment_expression "p_Var33 = (mpz_ptr)(puVar51 + -0x138)" identifier = (call_expression "(mpz_ptr)(puVar51 + -0x138)" (parenthesized_expression "(mpz_ptr)" ( identifier )) (argument_list "(puVar51 + -0x138)" ( (binary_expression "puVar51 + -0x138" identifier + number_literal) )))) ;) (expression_statement "*(undefined1 **)(puVar51 + -0x130) = puVar13;" (assignment_expression "*(undefined1 **)(puVar51 + -0x130) = puVar13" (pointer_expression "*(undefined1 **)(puVar51 + -0x130)" * (cast_expression "(undefined1 **)(puVar51 + -0x130)" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar51 + -0x130)" ( (binary_expression "puVar51 + -0x130" identifier + number_literal) )))) = identifier) ;) (expression_statement "p_Var22 = p_Var23;" (assignment_expression "p_Var22 = p_Var23" identifier = identifier) ;) (expression_statement "(*pcVar55)(p_Var34,p_Var33,p_Var23,p_Var25);" (call_expression "(*pcVar55)(p_Var34,p_Var33,p_Var23,p_Var25)" (parenthesized_expression "(*pcVar55)" ( (pointer_expression "*pcVar55" * identifier) )) (argument_list "(p_Var34,p_Var33,p_Var23,p_Var25)" ( identifier , identifier , identifier , identifier ))) ;) (expression_statement "iVar5 = *(int *)(puVar51 + -0x150);" (assignment_expression "iVar5 = *(int *)(puVar51 + -0x150)" identifier = (pointer_expression "*(int *)(puVar51 + -0x150)" * (cast_expression "(int *)(puVar51 + -0x150)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar51 + -0x150)" ( (binary_expression "puVar51 + -0x150" identifier + number_literal) ))))) ;) (if_statement "if (((int)((uint)p_Var39 ^ uVar20) < 0) || (*(int *)(puVar51 + -0x134) == 0)) {\n        piVar35 = *(int **)(puVar51 + -0x13c);\n        pcVar55 = *(code **)(iVar5 + -0x7a28);\n        if (piVar35 != (int *)0x0) goto LAB_00022cc0;\n      }\n      else {\n        p_Var22 = (mpz_ptr)&DAT_00000001;\n        p_Var33 = p_Var34;\n        (**(code **)(iVar5 + -0x7c9c))(p_Var34);\n        piVar35 = *(int **)(puVar51 + -0x13c);\n        iVar5 = *(int *)(puVar51 + -0x150);\n        if (piVar35 != (int *)0x0) {\n          pcVar55 = *(code **)(iVar5 + -0x7a28);\nLAB_00022cc0:\n          (*pcVar55)();\n          iVar5 = *(int *)(puVar51 + -0x150);\n        }\n      }" if (parenthesized_expression "(((int)((uint)p_Var39 ^ uVar20) < 0) || (*(int *)(puVar51 + -0x134) == 0))" ( (binary_expression "((int)((uint)p_Var39 ^ uVar20) < 0) || (*(int *)(puVar51 + -0x134) == 0)" (parenthesized_expression "((int)((uint)p_Var39 ^ uVar20) < 0)" ( (binary_expression "(int)((uint)p_Var39 ^ uVar20) < 0" (cast_expression "(int)((uint)p_Var39 ^ uVar20)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((uint)p_Var39 ^ uVar20)" ( (binary_expression "(uint)p_Var39 ^ uVar20" (cast_expression "(uint)p_Var39" ( (type_descriptor "uint" type_identifier) ) identifier) ^ identifier) ))) < number_literal) )) || (parenthesized_expression "(*(int *)(puVar51 + -0x134) == 0)" ( (binary_expression "*(int *)(puVar51 + -0x134) == 0" (pointer_expression "*(int *)(puVar51 + -0x134)" * (cast_expression "(int *)(puVar51 + -0x134)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar51 + -0x134)" ( (binary_expression "puVar51 + -0x134" identifier + number_literal) )))) == number_literal) ))) )) (compound_statement "{\n        piVar35 = *(int **)(puVar51 + -0x13c);\n        pcVar55 = *(code **)(iVar5 + -0x7a28);\n        if (piVar35 != (int *)0x0) goto LAB_00022cc0;\n      }" { (expression_statement "piVar35 = *(int **)(puVar51 + -0x13c);" (assignment_expression "piVar35 = *(int **)(puVar51 + -0x13c)" identifier = (pointer_expression "*(int **)(puVar51 + -0x13c)" * (cast_expression "(int **)(puVar51 + -0x13c)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar51 + -0x13c)" ( (binary_expression "puVar51 + -0x13c" identifier + number_literal) ))))) ;) (expression_statement "pcVar55 = *(code **)(iVar5 + -0x7a28);" (assignment_expression "pcVar55 = *(code **)(iVar5 + -0x7a28)" identifier = (pointer_expression "*(code **)(iVar5 + -0x7a28)" * (cast_expression "(code **)(iVar5 + -0x7a28)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar5 + -0x7a28)" ( (binary_expression "iVar5 + -0x7a28" identifier + number_literal) ))))) ;) (if_statement "if (piVar35 != (int *)0x0) goto LAB_00022cc0;" if (parenthesized_expression "(piVar35 != (int *)0x0)" ( (binary_expression "piVar35 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_00022cc0;" goto statement_identifier ;)) }) (else_clause "else {\n        p_Var22 = (mpz_ptr)&DAT_00000001;\n        p_Var33 = p_Var34;\n        (**(code **)(iVar5 + -0x7c9c))(p_Var34);\n        piVar35 = *(int **)(puVar51 + -0x13c);\n        iVar5 = *(int *)(puVar51 + -0x150);\n        if (piVar35 != (int *)0x0) {\n          pcVar55 = *(code **)(iVar5 + -0x7a28);\nLAB_00022cc0:\n          (*pcVar55)();\n          iVar5 = *(int *)(puVar51 + -0x150);\n        }\n      }" else (compound_statement "{\n        p_Var22 = (mpz_ptr)&DAT_00000001;\n        p_Var33 = p_Var34;\n        (**(code **)(iVar5 + -0x7c9c))(p_Var34);\n        piVar35 = *(int **)(puVar51 + -0x13c);\n        iVar5 = *(int *)(puVar51 + -0x150);\n        if (piVar35 != (int *)0x0) {\n          pcVar55 = *(code **)(iVar5 + -0x7a28);\nLAB_00022cc0:\n          (*pcVar55)();\n          iVar5 = *(int *)(puVar51 + -0x150);\n        }\n      }" { (expression_statement "p_Var22 = (mpz_ptr)&DAT_00000001;" (assignment_expression "p_Var22 = (mpz_ptr)&DAT_00000001" identifier = (binary_expression "(mpz_ptr)&DAT_00000001" (parenthesized_expression "(mpz_ptr)" ( identifier )) & identifier)) ;) (expression_statement "p_Var33 = p_Var34;" (assignment_expression "p_Var33 = p_Var34" identifier = identifier) ;) (expression_statement "(**(code **)(iVar5 + -0x7c9c))(p_Var34);" (call_expression "(**(code **)(iVar5 + -0x7c9c))(p_Var34)" (parenthesized_expression "(**(code **)(iVar5 + -0x7c9c))" ( (pointer_expression "**(code **)(iVar5 + -0x7c9c)" * (pointer_expression "*(code **)(iVar5 + -0x7c9c)" * (cast_expression "(code **)(iVar5 + -0x7c9c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar5 + -0x7c9c)" ( (binary_expression "iVar5 + -0x7c9c" identifier + number_literal) ))))) )) (argument_list "(p_Var34)" ( identifier ))) ;) (expression_statement "piVar35 = *(int **)(puVar51 + -0x13c);" (assignment_expression "piVar35 = *(int **)(puVar51 + -0x13c)" identifier = (pointer_expression "*(int **)(puVar51 + -0x13c)" * (cast_expression "(int **)(puVar51 + -0x13c)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar51 + -0x13c)" ( (binary_expression "puVar51 + -0x13c" identifier + number_literal) ))))) ;) (expression_statement "iVar5 = *(int *)(puVar51 + -0x150);" (assignment_expression "iVar5 = *(int *)(puVar51 + -0x150)" identifier = (pointer_expression "*(int *)(puVar51 + -0x150)" * (cast_expression "(int *)(puVar51 + -0x150)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar51 + -0x150)" ( (binary_expression "puVar51 + -0x150" identifier + number_literal) ))))) ;) (if_statement "if (piVar35 != (int *)0x0) {\n          pcVar55 = *(code **)(iVar5 + -0x7a28);\nLAB_00022cc0:\n          (*pcVar55)();\n          iVar5 = *(int *)(puVar51 + -0x150);\n        }" if (parenthesized_expression "(piVar35 != (int *)0x0)" ( (binary_expression "piVar35 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          pcVar55 = *(code **)(iVar5 + -0x7a28);\nLAB_00022cc0:\n          (*pcVar55)();\n          iVar5 = *(int *)(puVar51 + -0x150);\n        }" { (expression_statement "pcVar55 = *(code **)(iVar5 + -0x7a28);" (assignment_expression "pcVar55 = *(code **)(iVar5 + -0x7a28)" identifier = (pointer_expression "*(code **)(iVar5 + -0x7a28)" * (cast_expression "(code **)(iVar5 + -0x7a28)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar5 + -0x7a28)" ( (binary_expression "iVar5 + -0x7a28" identifier + number_literal) ))))) ;) (labeled_statement "LAB_00022cc0:\n          (*pcVar55)();" statement_identifier : (expression_statement "(*pcVar55)();" (call_expression "(*pcVar55)()" (parenthesized_expression "(*pcVar55)" ( (pointer_expression "*pcVar55" * identifier) )) (argument_list "()" ( ))) ;)) (expression_statement "iVar5 = *(int *)(puVar51 + -0x150);" (assignment_expression "iVar5 = *(int *)(puVar51 + -0x150)" identifier = (pointer_expression "*(int *)(puVar51 + -0x150)" * (cast_expression "(int *)(puVar51 + -0x150)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar51 + -0x150)" ( (binary_expression "puVar51 + -0x150" identifier + number_literal) ))))) ;) })) }))) (if_statement "if (*(int *)(puVar51 + -300) == *piVar37) {\n        return;\n      }" if (parenthesized_expression "(*(int *)(puVar51 + -300) == *piVar37)" ( (binary_expression "*(int *)(puVar51 + -300) == *piVar37" (pointer_expression "*(int *)(puVar51 + -300)" * (cast_expression "(int *)(puVar51 + -300)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar51 + -300)" ( (binary_expression "puVar51 + -300" identifier + number_literal) )))) == (pointer_expression "*piVar37" * identifier)) )) (compound_statement "{\n        return;\n      }" { (return_statement "return;" return ;) })) (expression_statement "pcVar55 = *(code **)(iVar5 + -0x7b70);" (assignment_expression "pcVar55 = *(code **)(iVar5 + -0x7b70)" identifier = (pointer_expression "*(code **)(iVar5 + -0x7b70)" * (cast_expression "(code **)(iVar5 + -0x7b70)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar5 + -0x7b70)" ( (binary_expression "iVar5 + -0x7b70" identifier + number_literal) ))))) ;) (expression_statement "uVar9 = 0x22cdc;" (assignment_expression "uVar9 = 0x22cdc" identifier = number_literal) ;) (expression_statement "(*pcVar55)();" (call_expression "(*pcVar55)()" (parenthesized_expression "(*pcVar55)" ( (pointer_expression "*pcVar55" * identifier) )) (argument_list "()" ( ))) ;) (expression_statement "pcVar48 = pcVar55 + 0x82360;" (assignment_expression "pcVar48 = pcVar55 + 0x82360" identifier = (binary_expression "pcVar55 + 0x82360" identifier + number_literal)) ;) (expression_statement "*(code **)(puVar52 + -0x28) = pcVar48;" (assignment_expression "*(code **)(puVar52 + -0x28) = pcVar48" (pointer_expression "*(code **)(puVar52 + -0x28)" * (cast_expression "(code **)(puVar52 + -0x28)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar52 + -0x28)" ( (binary_expression "puVar52 + -0x28" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar52 + -4) = uVar9;" (assignment_expression "*(undefined4 *)(puVar52 + -4) = uVar9" (pointer_expression "*(undefined4 *)(puVar52 + -4)" * (cast_expression "(undefined4 *)(puVar52 + -4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar52 + -4)" ( (binary_expression "puVar52 + -4" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(mpz_ptr *)(puVar52 + -8) = p_Var41;" (assignment_expression "*(mpz_ptr *)(puVar52 + -8) = p_Var41" (pointer_expression "*(mpz_ptr *)(puVar52 + -8)" * (cast_expression "(mpz_ptr *)(puVar52 + -8)" ( (type_descriptor "mpz_ptr *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar52 + -8)" ( (binary_expression "puVar52 + -8" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(mpz_ptr *)(puVar52 + -0xc) = p_Var23;" (assignment_expression "*(mpz_ptr *)(puVar52 + -0xc) = p_Var23" (pointer_expression "*(mpz_ptr *)(puVar52 + -0xc)" * (cast_expression "(mpz_ptr *)(puVar52 + -0xc)" ( (type_descriptor "mpz_ptr *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar52 + -0xc)" ( (binary_expression "puVar52 + -0xc" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int **)(puVar52 + -0x10) = piVar37;" (assignment_expression "*(int **)(puVar52 + -0x10) = piVar37" (pointer_expression "*(int **)(puVar52 + -0x10)" * (cast_expression "(int **)(puVar52 + -0x10)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar52 + -0x10)" ( (binary_expression "puVar52 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(mpz_ptr *)(puVar52 + -0x14) = p_Var34;" (assignment_expression "*(mpz_ptr *)(puVar52 + -0x14) = p_Var34" (pointer_expression "*(mpz_ptr *)(puVar52 + -0x14)" * (cast_expression "(mpz_ptr *)(puVar52 + -0x14)" ( (type_descriptor "mpz_ptr *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar52 + -0x14)" ( (binary_expression "puVar52 + -0x14" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(mpz_ptr *)(puVar52 + -0x18) = p_Var39;" (assignment_expression "*(mpz_ptr *)(puVar52 + -0x18) = p_Var39" (pointer_expression "*(mpz_ptr *)(puVar52 + -0x18)" * (cast_expression "(mpz_ptr *)(puVar52 + -0x18)" ( (type_descriptor "mpz_ptr *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar52 + -0x18)" ( (binary_expression "puVar52 + -0x18" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(uint *)(puVar52 + -0x1c) = (uint)p_Var39 ^ uVar20;" (assignment_expression "*(uint *)(puVar52 + -0x1c) = (uint)p_Var39 ^ uVar20" (pointer_expression "*(uint *)(puVar52 + -0x1c)" * (cast_expression "(uint *)(puVar52 + -0x1c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar52 + -0x1c)" ( (binary_expression "puVar52 + -0x1c" identifier + number_literal) )))) = (binary_expression "(uint)p_Var39 ^ uVar20" (cast_expression "(uint)p_Var39" ( (type_descriptor "uint" type_identifier) ) identifier) ^ identifier)) ;) (if_statement "if (p_Var22 == (mpz_ptr)0x0) {\n        pcVar55 = *(code **)(pcVar55 + 0x7a900);\n        (*pcVar55)();\nLAB_00022e2c:\n        piVar35 = (int *)(*pcVar55)(piVar37,p_Var34);\n        pcVar48 = *(code **)(puVar52 + -0x28);\n      }\n      else {\n        p_Var39 = (mpz_ptr)p_Var33->_mp_size;\n        if (p_Var39 == (mpz_ptr)0x0) {\n          piVar35[1] = 0;\n          return;\n        }\n        p_Var34 = p_Var39;\n        if ((int)p_Var39 < 0) {\n          p_Var34 = (mpz_ptr)-(int)p_Var39;\n        }\n        pcVar55 = *(code **)(pcVar55 + 0x7a8e0);\n        piVar37 = piVar35;\n        p_Var23 = p_Var22;\n        p_Var41 = p_Var33;\n        if (*piVar35 < (int)p_Var34) goto LAB_00022e2c;\n        piVar35 = (int *)piVar35[2];\n      }" if (parenthesized_expression "(p_Var22 == (mpz_ptr)0x0)" ( (binary_expression "p_Var22 == (mpz_ptr)0x0" identifier == (cast_expression "(mpz_ptr)0x0" ( (type_descriptor "mpz_ptr" type_identifier) ) number_literal)) )) (compound_statement "{\n        pcVar55 = *(code **)(pcVar55 + 0x7a900);\n        (*pcVar55)();\nLAB_00022e2c:\n        piVar35 = (int *)(*pcVar55)(piVar37,p_Var34);\n        pcVar48 = *(code **)(puVar52 + -0x28);\n      }" { (expression_statement "pcVar55 = *(code **)(pcVar55 + 0x7a900);" (assignment_expression "pcVar55 = *(code **)(pcVar55 + 0x7a900)" identifier = (pointer_expression "*(code **)(pcVar55 + 0x7a900)" * (cast_expression "(code **)(pcVar55 + 0x7a900)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar55 + 0x7a900)" ( (binary_expression "pcVar55 + 0x7a900" identifier + number_literal) ))))) ;) (expression_statement "(*pcVar55)();" (call_expression "(*pcVar55)()" (parenthesized_expression "(*pcVar55)" ( (pointer_expression "*pcVar55" * identifier) )) (argument_list "()" ( ))) ;) (labeled_statement "LAB_00022e2c:\n        piVar35 = (int *)(*pcVar55)(piVar37,p_Var34);" statement_identifier : (expression_statement "piVar35 = (int *)(*pcVar55)(piVar37,p_Var34);" (assignment_expression "piVar35 = (int *)(*pcVar55)(piVar37,p_Var34)" identifier = (cast_expression "(int *)(*pcVar55)(piVar37,p_Var34)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "(*pcVar55)(piVar37,p_Var34)" (parenthesized_expression "(*pcVar55)" ( (pointer_expression "*pcVar55" * identifier) )) (argument_list "(piVar37,p_Var34)" ( identifier , identifier ))))) ;)) (expression_statement "pcVar48 = *(code **)(puVar52 + -0x28);" (assignment_expression "pcVar48 = *(code **)(puVar52 + -0x28)" identifier = (pointer_expression "*(code **)(puVar52 + -0x28)" * (cast_expression "(code **)(puVar52 + -0x28)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar52 + -0x28)" ( (binary_expression "puVar52 + -0x28" identifier + number_literal) ))))) ;) }) (else_clause "else {\n        p_Var39 = (mpz_ptr)p_Var33->_mp_size;\n        if (p_Var39 == (mpz_ptr)0x0) {\n          piVar35[1] = 0;\n          return;\n        }\n        p_Var34 = p_Var39;\n        if ((int)p_Var39 < 0) {\n          p_Var34 = (mpz_ptr)-(int)p_Var39;\n        }\n        pcVar55 = *(code **)(pcVar55 + 0x7a8e0);\n        piVar37 = piVar35;\n        p_Var23 = p_Var22;\n        p_Var41 = p_Var33;\n        if (*piVar35 < (int)p_Var34) goto LAB_00022e2c;\n        piVar35 = (int *)piVar35[2];\n      }" else (compound_statement "{\n        p_Var39 = (mpz_ptr)p_Var33->_mp_size;\n        if (p_Var39 == (mpz_ptr)0x0) {\n          piVar35[1] = 0;\n          return;\n        }\n        p_Var34 = p_Var39;\n        if ((int)p_Var39 < 0) {\n          p_Var34 = (mpz_ptr)-(int)p_Var39;\n        }\n        pcVar55 = *(code **)(pcVar55 + 0x7a8e0);\n        piVar37 = piVar35;\n        p_Var23 = p_Var22;\n        p_Var41 = p_Var33;\n        if (*piVar35 < (int)p_Var34) goto LAB_00022e2c;\n        piVar35 = (int *)piVar35[2];\n      }" { (expression_statement "p_Var39 = (mpz_ptr)p_Var33->_mp_size;" (assignment_expression "p_Var39 = (mpz_ptr)p_Var33->_mp_size" identifier = (cast_expression "(mpz_ptr)p_Var33->_mp_size" ( (type_descriptor "mpz_ptr" type_identifier) ) (field_expression "p_Var33->_mp_size" identifier -> field_identifier))) ;) (if_statement "if (p_Var39 == (mpz_ptr)0x0) {\n          piVar35[1] = 0;\n          return;\n        }" if (parenthesized_expression "(p_Var39 == (mpz_ptr)0x0)" ( (binary_expression "p_Var39 == (mpz_ptr)0x0" identifier == (cast_expression "(mpz_ptr)0x0" ( (type_descriptor "mpz_ptr" type_identifier) ) number_literal)) )) (compound_statement "{\n          piVar35[1] = 0;\n          return;\n        }" { (expression_statement "piVar35[1] = 0;" (assignment_expression "piVar35[1] = 0" (subscript_expression "piVar35[1]" identifier [ number_literal ]) = number_literal) ;) (return_statement "return;" return ;) })) (expression_statement "p_Var34 = p_Var39;" (assignment_expression "p_Var34 = p_Var39" identifier = identifier) ;) (if_statement "if ((int)p_Var39 < 0) {\n          p_Var34 = (mpz_ptr)-(int)p_Var39;\n        }" if (parenthesized_expression "((int)p_Var39 < 0)" ( (binary_expression "(int)p_Var39 < 0" (cast_expression "(int)p_Var39" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n          p_Var34 = (mpz_ptr)-(int)p_Var39;\n        }" { (expression_statement "p_Var34 = (mpz_ptr)-(int)p_Var39;" (assignment_expression "p_Var34 = (mpz_ptr)-(int)p_Var39" identifier = (binary_expression "(mpz_ptr)-(int)p_Var39" (parenthesized_expression "(mpz_ptr)" ( identifier )) - (cast_expression "(int)p_Var39" ( (type_descriptor "int" primitive_type) ) identifier))) ;) })) (expression_statement "pcVar55 = *(code **)(pcVar55 + 0x7a8e0);" (assignment_expression "pcVar55 = *(code **)(pcVar55 + 0x7a8e0)" identifier = (pointer_expression "*(code **)(pcVar55 + 0x7a8e0)" * (cast_expression "(code **)(pcVar55 + 0x7a8e0)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar55 + 0x7a8e0)" ( (binary_expression "pcVar55 + 0x7a8e0" identifier + number_literal) ))))) ;) (expression_statement "piVar37 = piVar35;" (assignment_expression "piVar37 = piVar35" identifier = identifier) ;) (expression_statement "p_Var23 = p_Var22;" (assignment_expression "p_Var23 = p_Var22" identifier = identifier) ;) (expression_statement "p_Var41 = p_Var33;" (assignment_expression "p_Var41 = p_Var33" identifier = identifier) ;) (if_statement "if (*piVar35 < (int)p_Var34) goto LAB_00022e2c;" if (parenthesized_expression "(*piVar35 < (int)p_Var34)" ( (binary_expression "*piVar35 < (int)p_Var34" (pointer_expression "*piVar35" * identifier) < (cast_expression "(int)p_Var34" ( (type_descriptor "int" primitive_type) ) identifier)) )) (goto_statement "goto LAB_00022e2c;" goto statement_identifier ;)) (expression_statement "piVar35 = (int *)piVar35[2];" (assignment_expression "piVar35 = (int *)piVar35[2]" identifier = (cast_expression "(int *)piVar35[2]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar35[2]" identifier [ number_literal ]))) ;) }))) (expression_statement "pcVar55 = *(code **)(pcVar48 + -0x7d98);" (assignment_expression "pcVar55 = *(code **)(pcVar48 + -0x7d98)" identifier = (pointer_expression "*(code **)(pcVar48 + -0x7d98)" * (cast_expression "(code **)(pcVar48 + -0x7d98)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar48 + -0x7d98)" ( (binary_expression "pcVar48 + -0x7d98" identifier + number_literal) ))))) ;) (expression_statement "pmVar26 = p_Var41->_mp_d;" (assignment_expression "pmVar26 = p_Var41->_mp_d" identifier = (field_expression "p_Var41->_mp_d" identifier -> field_identifier)) ;) (expression_statement "*(mpz_ptr *)(puVar52 + -0x30) = p_Var23;" (assignment_expression "*(mpz_ptr *)(puVar52 + -0x30) = p_Var23" (pointer_expression "*(mpz_ptr *)(puVar52 + -0x30)" * (cast_expression "(mpz_ptr *)(puVar52 + -0x30)" ( (type_descriptor "mpz_ptr *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar52 + -0x30)" ( (binary_expression "puVar52 + -0x30" identifier + number_literal) )))) = identifier) ;) (expression_statement "iVar5 = (*pcVar55)(piVar35,0,pmVar26,p_Var34);" (assignment_expression "iVar5 = (*pcVar55)(piVar35,0,pmVar26,p_Var34)" identifier = (call_expression "(*pcVar55)(piVar35,0,pmVar26,p_Var34)" (parenthesized_expression "(*pcVar55)" ( (pointer_expression "*pcVar55" * identifier) )) (argument_list "(piVar35,0,pmVar26,p_Var34)" ( identifier , number_literal , identifier , identifier )))) ;) (expression_statement "piVar19 = piVar35 + (int)((int)&p_Var34[-1]._mp_d + 3);" (assignment_expression "piVar19 = piVar35 + (int)((int)&p_Var34[-1]._mp_d + 3)" identifier = (binary_expression "piVar35 + (int)((int)&p_Var34[-1]._mp_d + 3)" identifier + (cast_expression "(int)((int)&p_Var34[-1]._mp_d + 3)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((int)&p_Var34[-1]._mp_d + 3)" ( (binary_expression "(int)&p_Var34[-1]._mp_d + 3" (cast_expression "(int)&p_Var34[-1]._mp_d" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&p_Var34[-1]._mp_d" & (field_expression "p_Var34[-1]._mp_d" (subscript_expression "p_Var34[-1]" identifier [ number_literal ]) . field_identifier))) + number_literal) ))))) ;) (if_statement "if (iVar5 == 0) {\n        uVar20 = (uint)(*piVar19 == 0);\n        if (-1 < (int)p_Var39) {\n          iVar5 = (int)p_Var34 - uVar20;\n          goto LAB_00022d9c;\n        }\n      }\n      else {\n        if (-1 < (int)p_Var39) {\n          do {\n            iVar5 = *piVar35;\n            *piVar35 = iVar5 + 1;\n            piVar35 = piVar35 + 1;\n          } while (iVar5 + 1 == 0);\n          iVar5 = (int)p_Var34 - (uint)(*piVar19 == 0);\n          goto LAB_00022d9c;\n        }\n        uVar20 = (uint)(*piVar19 == 0);\n      }" if (parenthesized_expression "(iVar5 == 0)" ( (binary_expression "iVar5 == 0" identifier == number_literal) )) (compound_statement "{\n        uVar20 = (uint)(*piVar19 == 0);\n        if (-1 < (int)p_Var39) {\n          iVar5 = (int)p_Var34 - uVar20;\n          goto LAB_00022d9c;\n        }\n      }" { (expression_statement "uVar20 = (uint)(*piVar19 == 0);" (assignment_expression "uVar20 = (uint)(*piVar19 == 0)" identifier = (call_expression "(uint)(*piVar19 == 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(*piVar19 == 0)" ( (binary_expression "*piVar19 == 0" (pointer_expression "*piVar19" * identifier) == number_literal) )))) ;) (if_statement "if (-1 < (int)p_Var39) {\n          iVar5 = (int)p_Var34 - uVar20;\n          goto LAB_00022d9c;\n        }" if (parenthesized_expression "(-1 < (int)p_Var39)" ( (binary_expression "-1 < (int)p_Var39" number_literal < (cast_expression "(int)p_Var39" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n          iVar5 = (int)p_Var34 - uVar20;\n          goto LAB_00022d9c;\n        }" { (expression_statement "iVar5 = (int)p_Var34 - uVar20;" (assignment_expression "iVar5 = (int)p_Var34 - uVar20" identifier = (binary_expression "(int)p_Var34 - uVar20" (cast_expression "(int)p_Var34" ( (type_descriptor "int" primitive_type) ) identifier) - identifier)) ;) (goto_statement "goto LAB_00022d9c;" goto statement_identifier ;) })) }) (else_clause "else {\n        if (-1 < (int)p_Var39) {\n          do {\n            iVar5 = *piVar35;\n            *piVar35 = iVar5 + 1;\n            piVar35 = piVar35 + 1;\n          } while (iVar5 + 1 == 0);\n          iVar5 = (int)p_Var34 - (uint)(*piVar19 == 0);\n          goto LAB_00022d9c;\n        }\n        uVar20 = (uint)(*piVar19 == 0);\n      }" else (compound_statement "{\n        if (-1 < (int)p_Var39) {\n          do {\n            iVar5 = *piVar35;\n            *piVar35 = iVar5 + 1;\n            piVar35 = piVar35 + 1;\n          } while (iVar5 + 1 == 0);\n          iVar5 = (int)p_Var34 - (uint)(*piVar19 == 0);\n          goto LAB_00022d9c;\n        }\n        uVar20 = (uint)(*piVar19 == 0);\n      }" { (if_statement "if (-1 < (int)p_Var39) {\n          do {\n            iVar5 = *piVar35;\n            *piVar35 = iVar5 + 1;\n            piVar35 = piVar35 + 1;\n          } while (iVar5 + 1 == 0);\n          iVar5 = (int)p_Var34 - (uint)(*piVar19 == 0);\n          goto LAB_00022d9c;\n        }" if (parenthesized_expression "(-1 < (int)p_Var39)" ( (binary_expression "-1 < (int)p_Var39" number_literal < (cast_expression "(int)p_Var39" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n          do {\n            iVar5 = *piVar35;\n            *piVar35 = iVar5 + 1;\n            piVar35 = piVar35 + 1;\n          } while (iVar5 + 1 == 0);\n          iVar5 = (int)p_Var34 - (uint)(*piVar19 == 0);\n          goto LAB_00022d9c;\n        }" { (do_statement "do {\n            iVar5 = *piVar35;\n            *piVar35 = iVar5 + 1;\n            piVar35 = piVar35 + 1;\n          } while (iVar5 + 1 == 0);" do (compound_statement "{\n            iVar5 = *piVar35;\n            *piVar35 = iVar5 + 1;\n            piVar35 = piVar35 + 1;\n          }" { (expression_statement "iVar5 = *piVar35;" (assignment_expression "iVar5 = *piVar35" identifier = (pointer_expression "*piVar35" * identifier)) ;) (expression_statement "*piVar35 = iVar5 + 1;" (assignment_expression "*piVar35 = iVar5 + 1" (pointer_expression "*piVar35" * identifier) = (binary_expression "iVar5 + 1" identifier + number_literal)) ;) (expression_statement "piVar35 = piVar35 + 1;" (assignment_expression "piVar35 = piVar35 + 1" identifier = (binary_expression "piVar35 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar5 + 1 == 0)" ( (binary_expression "iVar5 + 1 == 0" (binary_expression "iVar5 + 1" identifier + number_literal) == number_literal) )) ;) (expression_statement "iVar5 = (int)p_Var34 - (uint)(*piVar19 == 0);" (assignment_expression "iVar5 = (int)p_Var34 - (uint)(*piVar19 == 0)" identifier = (binary_expression "(int)p_Var34 - (uint)(*piVar19 == 0)" (cast_expression "(int)p_Var34" ( (type_descriptor "int" primitive_type) ) identifier) - (call_expression "(uint)(*piVar19 == 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(*piVar19 == 0)" ( (binary_expression "*piVar19 == 0" (pointer_expression "*piVar19" * identifier) == number_literal) ))))) ;) (goto_statement "goto LAB_00022d9c;" goto statement_identifier ;) })) (expression_statement "uVar20 = (uint)(*piVar19 == 0);" (assignment_expression "uVar20 = (uint)(*piVar19 == 0)" identifier = (call_expression "(uint)(*piVar19 == 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(*piVar19 == 0)" ( (binary_expression "*piVar19 == 0" (pointer_expression "*piVar19" * identifier) == number_literal) )))) ;) }))) (expression_statement "iVar5 = uVar20 - (int)p_Var34;" (assignment_expression "iVar5 = uVar20 - (int)p_Var34" identifier = (binary_expression "uVar20 - (int)p_Var34" identifier - (cast_expression "(int)p_Var34" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (labeled_statement "LAB_00022d9c:\n      piVar37[1] = iVar5;" statement_identifier : (expression_statement "piVar37[1] = iVar5;" (assignment_expression "piVar37[1] = iVar5" (subscript_expression "piVar37[1]" identifier [ number_literal ]) = identifier) ;)) (return_statement "return;" return ;) })) (expression_statement "*(int *)(puVar50 + -0x44) = iVar42;" (assignment_expression "*(int *)(puVar50 + -0x44) = iVar42" (pointer_expression "*(int *)(puVar50 + -0x44)" * (cast_expression "(int *)(puVar50 + -0x44)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar50 + -0x44)" ( (binary_expression "puVar50 + -0x44" identifier + number_literal) )))) = identifier) ;) (expression_statement "iVar5 = iVar42 + uVar6;" (assignment_expression "iVar5 = iVar42 + uVar6" identifier = (binary_expression "iVar42 + uVar6" identifier + identifier)) ;) (expression_statement "uVar20 = (**(code **)(*(int *)(puVar50 + -0x34) + (uVar6 - 1) * 4))(iVar42);" (assignment_expression "uVar20 = (**(code **)(*(int *)(puVar50 + -0x34) + (uVar6 - 1) * 4))(iVar42)" identifier = (call_expression "(**(code **)(*(int *)(puVar50 + -0x34) + (uVar6 - 1) * 4))(iVar42)" (parenthesized_expression "(**(code **)(*(int *)(puVar50 + -0x34) + (uVar6 - 1) * 4))" ( (pointer_expression "**(code **)(*(int *)(puVar50 + -0x34) + (uVar6 - 1) * 4)" * (pointer_expression "*(code **)(*(int *)(puVar50 + -0x34) + (uVar6 - 1) * 4)" * (cast_expression "(code **)(*(int *)(puVar50 + -0x34) + (uVar6 - 1) * 4)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)(puVar50 + -0x34) + (uVar6 - 1) * 4)" ( (binary_expression "*(int *)(puVar50 + -0x34) + (uVar6 - 1) * 4" (pointer_expression "*(int *)(puVar50 + -0x34)" * (cast_expression "(int *)(puVar50 + -0x34)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar50 + -0x34)" ( (binary_expression "puVar50 + -0x34" identifier + number_literal) )))) + (binary_expression "(uVar6 - 1) * 4" (parenthesized_expression "(uVar6 - 1)" ( (binary_expression "uVar6 - 1" identifier - number_literal) )) * number_literal)) ))))) )) (argument_list "(iVar42)" ( identifier )))) ;) (expression_statement "puVar47 = *(undefined **)(puVar50 + -0x78);" (assignment_expression "puVar47 = *(undefined **)(puVar50 + -0x78)" identifier = (pointer_expression "*(undefined **)(puVar50 + -0x78)" * (cast_expression "(undefined **)(puVar50 + -0x78)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar50 + -0x78)" ( (binary_expression "puVar50 + -0x78" identifier + number_literal) ))))) ;) (if_statement "if ((uVar20 & 0xff) == 0) {\n      uVar40 = uVar20 >> 8;\n      iVar28 = 6;\n      if ((uVar40 & 0xff) == 0) {\n        uVar40 = uVar20 >> 0x10;\n        iVar28 = 0xe;\n        if ((uVar40 & 0xff) == 0) {\n          uVar40 = uVar20 >> 0x18;\n          iVar28 = 0x1e;\n          if (uVar40 != 0) {\n            iVar28 = 0x16;\n          }\n        }\n      }\n      uVar40 = (uint)*(byte *)(*(int *)(puVar50 + -0x3c) + (-uVar40 & uVar40)) + iVar28;\n    }\n    else {\n      uVar40 = *(byte *)(*(int *)(puVar50 + -0x3c) + (-uVar20 & uVar20)) - 2;\n    }" if (parenthesized_expression "((uVar20 & 0xff) == 0)" ( (binary_expression "(uVar20 & 0xff) == 0" (parenthesized_expression "(uVar20 & 0xff)" ( (binary_expression "uVar20 & 0xff" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n      uVar40 = uVar20 >> 8;\n      iVar28 = 6;\n      if ((uVar40 & 0xff) == 0) {\n        uVar40 = uVar20 >> 0x10;\n        iVar28 = 0xe;\n        if ((uVar40 & 0xff) == 0) {\n          uVar40 = uVar20 >> 0x18;\n          iVar28 = 0x1e;\n          if (uVar40 != 0) {\n            iVar28 = 0x16;\n          }\n        }\n      }\n      uVar40 = (uint)*(byte *)(*(int *)(puVar50 + -0x3c) + (-uVar40 & uVar40)) + iVar28;\n    }" { (expression_statement "uVar40 = uVar20 >> 8;" (assignment_expression "uVar40 = uVar20 >> 8" identifier = (binary_expression "uVar20 >> 8" identifier >> number_literal)) ;) (expression_statement "iVar28 = 6;" (assignment_expression "iVar28 = 6" identifier = number_literal) ;) (if_statement "if ((uVar40 & 0xff) == 0) {\n        uVar40 = uVar20 >> 0x10;\n        iVar28 = 0xe;\n        if ((uVar40 & 0xff) == 0) {\n          uVar40 = uVar20 >> 0x18;\n          iVar28 = 0x1e;\n          if (uVar40 != 0) {\n            iVar28 = 0x16;\n          }\n        }\n      }" if (parenthesized_expression "((uVar40 & 0xff) == 0)" ( (binary_expression "(uVar40 & 0xff) == 0" (parenthesized_expression "(uVar40 & 0xff)" ( (binary_expression "uVar40 & 0xff" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n        uVar40 = uVar20 >> 0x10;\n        iVar28 = 0xe;\n        if ((uVar40 & 0xff) == 0) {\n          uVar40 = uVar20 >> 0x18;\n          iVar28 = 0x1e;\n          if (uVar40 != 0) {\n            iVar28 = 0x16;\n          }\n        }\n      }" { (expression_statement "uVar40 = uVar20 >> 0x10;" (assignment_expression "uVar40 = uVar20 >> 0x10" identifier = (binary_expression "uVar20 >> 0x10" identifier >> number_literal)) ;) (expression_statement "iVar28 = 0xe;" (assignment_expression "iVar28 = 0xe" identifier = number_literal) ;) (if_statement "if ((uVar40 & 0xff) == 0) {\n          uVar40 = uVar20 >> 0x18;\n          iVar28 = 0x1e;\n          if (uVar40 != 0) {\n            iVar28 = 0x16;\n          }\n        }" if (parenthesized_expression "((uVar40 & 0xff) == 0)" ( (binary_expression "(uVar40 & 0xff) == 0" (parenthesized_expression "(uVar40 & 0xff)" ( (binary_expression "uVar40 & 0xff" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n          uVar40 = uVar20 >> 0x18;\n          iVar28 = 0x1e;\n          if (uVar40 != 0) {\n            iVar28 = 0x16;\n          }\n        }" { (expression_statement "uVar40 = uVar20 >> 0x18;" (assignment_expression "uVar40 = uVar20 >> 0x18" identifier = (binary_expression "uVar20 >> 0x18" identifier >> number_literal)) ;) (expression_statement "iVar28 = 0x1e;" (assignment_expression "iVar28 = 0x1e" identifier = number_literal) ;) (if_statement "if (uVar40 != 0) {\n            iVar28 = 0x16;\n          }" if (parenthesized_expression "(uVar40 != 0)" ( (binary_expression "uVar40 != 0" identifier != number_literal) )) (compound_statement "{\n            iVar28 = 0x16;\n          }" { (expression_statement "iVar28 = 0x16;" (assignment_expression "iVar28 = 0x16" identifier = number_literal) ;) })) })) })) (expression_statement "uVar40 = (uint)*(byte *)(*(int *)(puVar50 + -0x3c) + (-uVar40 & uVar40)) + iVar28;" (assignment_expression "uVar40 = (uint)*(byte *)(*(int *)(puVar50 + -0x3c) + (-uVar40 & uVar40)) + iVar28" identifier = (binary_expression "(uint)*(byte *)(*(int *)(puVar50 + -0x3c) + (-uVar40 & uVar40)) + iVar28" (binary_expression "(uint)*(byte *)(*(int *)(puVar50 + -0x3c) + (-uVar40 & uVar40))" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)(*(int *)(puVar50 + -0x3c) + (-uVar40 & uVar40))" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(puVar50 + -0x3c) + (-uVar40 & uVar40))" ( (binary_expression "*(int *)(puVar50 + -0x3c) + (-uVar40 & uVar40)" (pointer_expression "*(int *)(puVar50 + -0x3c)" * (cast_expression "(int *)(puVar50 + -0x3c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar50 + -0x3c)" ( (binary_expression "puVar50 + -0x3c" identifier + number_literal) )))) + (parenthesized_expression "(-uVar40 & uVar40)" ( (binary_expression "-uVar40 & uVar40" (unary_expression "-uVar40" - identifier) & identifier) ))) )))) + identifier)) ;) }) (else_clause "else {\n      uVar40 = *(byte *)(*(int *)(puVar50 + -0x3c) + (-uVar20 & uVar20)) - 2;\n    }" else (compound_statement "{\n      uVar40 = *(byte *)(*(int *)(puVar50 + -0x3c) + (-uVar20 & uVar20)) - 2;\n    }" { (expression_statement "uVar40 = *(byte *)(*(int *)(puVar50 + -0x3c) + (-uVar20 & uVar20)) - 2;" (assignment_expression "uVar40 = *(byte *)(*(int *)(puVar50 + -0x3c) + (-uVar20 & uVar20)) - 2" identifier = (binary_expression "*(byte *)(*(int *)(puVar50 + -0x3c) + (-uVar20 & uVar20)) - 2" (pointer_expression "*(byte *)(*(int *)(puVar50 + -0x3c) + (-uVar20 & uVar20))" * (cast_expression "(byte *)(*(int *)(puVar50 + -0x3c) + (-uVar20 & uVar20))" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(puVar50 + -0x3c) + (-uVar20 & uVar20))" ( (binary_expression "*(int *)(puVar50 + -0x3c) + (-uVar20 & uVar20)" (pointer_expression "*(int *)(puVar50 + -0x3c)" * (cast_expression "(int *)(puVar50 + -0x3c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar50 + -0x3c)" ( (binary_expression "puVar50 + -0x3c" identifier + number_literal) )))) + (parenthesized_expression "(-uVar20 & uVar20)" ( (binary_expression "-uVar20 & uVar20" (unary_expression "-uVar20" - identifier) & identifier) ))) )))) - number_literal)) ;) }))) (expression_statement "iVar42 = *(int *)(puVar50 + -0x38);" (assignment_expression "iVar42 = *(int *)(puVar50 + -0x38)" identifier = (pointer_expression "*(int *)(puVar50 + -0x38)" * (cast_expression "(int *)(puVar50 + -0x38)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar50 + -0x38)" ( (binary_expression "puVar50 + -0x38" identifier + number_literal) ))))) ;) (expression_statement "p_Var39->_mp_alloc = uVar20 >> (uVar40 & 0x1f);" (assignment_expression "p_Var39->_mp_alloc = uVar20 >> (uVar40 & 0x1f)" (field_expression "p_Var39->_mp_alloc" identifier -> field_identifier) = (binary_expression "uVar20 >> (uVar40 & 0x1f)" identifier >> (parenthesized_expression "(uVar40 & 0x1f)" ( (binary_expression "uVar40 & 0x1f" identifier & number_literal) )))) ;) (expression_statement "iVar28 = *(int *)(puVar50 + -0x60);" (assignment_expression "iVar28 = *(int *)(puVar50 + -0x60)" identifier = (pointer_expression "*(int *)(puVar50 + -0x60)" * (cast_expression "(int *)(puVar50 + -0x60)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar50 + -0x60)" ( (binary_expression "puVar50 + -0x60" identifier + number_literal) ))))) ;) (expression_statement "*(uint *)(puVar50 + -0x40) =\n         *(int *)(puVar50 + -0x40) + *(byte *)(iVar42 + (uVar6 - 1)) + uVar40;" (assignment_expression "*(uint *)(puVar50 + -0x40) =\n         *(int *)(puVar50 + -0x40) + *(byte *)(iVar42 + (uVar6 - 1)) + uVar40" (pointer_expression "*(uint *)(puVar50 + -0x40)" * (cast_expression "(uint *)(puVar50 + -0x40)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar50 + -0x40)" ( (binary_expression "puVar50 + -0x40" identifier + number_literal) )))) = (binary_expression "*(int *)(puVar50 + -0x40) + *(byte *)(iVar42 + (uVar6 - 1)) + uVar40" (binary_expression "*(int *)(puVar50 + -0x40) + *(byte *)(iVar42 + (uVar6 - 1))" (pointer_expression "*(int *)(puVar50 + -0x40)" * (cast_expression "(int *)(puVar50 + -0x40)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar50 + -0x40)" ( (binary_expression "puVar50 + -0x40" identifier + number_literal) )))) + (pointer_expression "*(byte *)(iVar42 + (uVar6 - 1))" * (cast_expression "(byte *)(iVar42 + (uVar6 - 1))" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar42 + (uVar6 - 1))" ( (binary_expression "iVar42 + (uVar6 - 1)" identifier + (parenthesized_expression "(uVar6 - 1)" ( (binary_expression "uVar6 - 1" identifier - number_literal) ))) ))))) + identifier)) ;) (if_statement "if ((uint)(iVar28 - iVar5) <= uVar6) {\n      uVar6 = iVar28 - iVar5;\n    }" if (parenthesized_expression "((uint)(iVar28 - iVar5) <= uVar6)" ( (binary_expression "(uint)(iVar28 - iVar5) <= uVar6" (call_expression "(uint)(iVar28 - iVar5)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(iVar28 - iVar5)" ( (binary_expression "iVar28 - iVar5" identifier - identifier) ))) <= identifier) )) (compound_statement "{\n      uVar6 = iVar28 - iVar5;\n    }" { (expression_statement "uVar6 = iVar28 - iVar5;" (assignment_expression "uVar6 = iVar28 - iVar5" identifier = (binary_expression "iVar28 - iVar5" identifier - identifier)) ;) })) (expression_statement "iVar42 = iVar5;" (assignment_expression "iVar42 = iVar5" identifier = identifier) ;) (if_statement "if (uVar6 != 0) goto LAB_00022234;" if (parenthesized_expression "(uVar6 != 0)" ( (binary_expression "uVar6 != 0" identifier != number_literal) )) (goto_statement "goto LAB_00022234;" goto statement_identifier ;)) (labeled_statement "LAB_00022534:\n    p_Var34 = (mpz_ptr)&DAT_00000001;" statement_identifier : (expression_statement "p_Var34 = (mpz_ptr)&DAT_00000001;" (assignment_expression "p_Var34 = (mpz_ptr)&DAT_00000001" identifier = (binary_expression "(mpz_ptr)&DAT_00000001" (parenthesized_expression "(mpz_ptr)" ( identifier )) & identifier)) ;)) (expression_statement "*(mpz_ptr *)(puVar50 + -0x4c) = p_Var39;" (assignment_expression "*(mpz_ptr *)(puVar50 + -0x4c) = p_Var39" (pointer_expression "*(mpz_ptr *)(puVar50 + -0x4c)" * (cast_expression "(mpz_ptr *)(puVar50 + -0x4c)" ( (type_descriptor "mpz_ptr *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar50 + -0x4c)" ( (binary_expression "puVar50 + -0x4c" identifier + number_literal) )))) = identifier) ;) }) while (parenthesized_expression "( true )" ( true )) ;)) })))
(translation_unit "int FUN_000219dc(int param_1,uint param_2,uint param_3)\n\n{\n  uint *puVar1;\n  byte bVar2;\n  bool bVar3;\n  bool bVar4;\n  undefined *puVar5;\n  int iVar6;\n  uint uVar7;\n  uint *puVar8;\n  uint *puVar9;\n  undefined4 uVar10;\n  uint uVar11;\n  uint uVar12;\n  undefined1 *puVar13;\n  undefined *puVar14;\n  undefined4 *puVar15;\n  uint *puVar16;\n  int *piVar17;\n  uint uVar18;\n  undefined4 *puVar19;\n  uint *puVar20;\n  uint uVar21;\n  uint *puVar22;\n  uint uVar23;\n  int iVar24;\n  uint uVar25;\n  uint uVar26;\n  uint uVar27;\n  uint uVar28;\n  int iVar29;\n  uint *puVar30;\n  uint *puVar31;\n  int *piVar32;\n  int iVar33;\n  int *piVar34;\n  uint uVar35;\n  uint *puVar36;\n  uint uVar37;\n  uint *puVar38;\n  int iVar39;\n  uint uVar40;\n  int iVar41;\n  uint uVar42;\n  undefined *puVar43;\n  code *pcVar44;\n  undefined1 *puVar45;\n  undefined1 *puVar46;\n  undefined1 *puVar47;\n  undefined1 *puVar48;\n  undefined1 *puVar49;\n  undefined1 *puVar50;\n  code *pcVar51;\n  code *pcVar52;\n  uint uVar53;\n  uint uVar54;\n  undefined1 auStack_48 [16];\n  int local_30;\n  int local_2c;\n  \n  puVar5 = PTR___stack_chk_guard_0009d540;\n  puVar45 = auStack_48;\n  uVar37 = param_2 - 5 | 1;\n  local_30 = 0;\n  local_2c = *(int *)PTR___stack_chk_guard_0009d540;\n  uVar18 = (uVar37 / 0x60 + 1) * 4;\n  if (uVar18 < 0x7f01) {\n    iVar6 = -(uVar18 + 7 & 0xfffffff8);\n    puVar45 = auStack_48 + iVar6;\n    puVar13 = &stack0xffffffc8 + iVar6;\n  }\n  else {\n    puVar13 = (undefined1 *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&local_30);\n  }\n  iVar6 = (*(code *)PTR___gmp_primesieve_0009d144)(puVar13,param_2);\n  uVar7 = iVar6 + 1;\n  puVar8 = (uint *)(PTR___gmp_limbroots_table_0009d3d4 + 0x1c);\n  uVar18 = 8;\n  do {\n    uVar23 = uVar18;\n    uVar11 = *puVar8;\n    puVar8 = puVar8 + -1;\n    uVar18 = uVar23 - 1;\n  } while (uVar11 < param_2);\n  if (uVar23 == 0) {\n    trap(7);\n  }\n  puVar8 = (uint *)(PTR___gmp_limbroots_table_0009d3d4 + 0x1c);\n  uVar18 = 8;\n  if ((uVar7 / uVar23 + 1) * 4 < 0x7f01) {\n    do {\n      uVar23 = uVar18;\n      uVar11 = *puVar8;\n      puVar8 = puVar8 + -1;\n      uVar18 = uVar23 - 1;\n    } while (uVar11 < param_2);\n    if (uVar23 == 0) {\n      trap(7);\n    }\n    iVar6 = -((uVar7 / uVar23) * 4 + 0xb & 0xfffffff8);\n    puVar46 = puVar45 + iVar6;\n    puVar8 = (uint *)(puVar45 + iVar6 + 0x10);\n  }\n  else {\n    for (puVar14 = PTR___gmp_limbroots_table_0009d3d4 + 0x18; *(uint *)(puVar14 + 4) < param_2;\n        puVar14 = puVar14 + -4) {\n      uVar18 = uVar18 - 1;\n    }\n    if (uVar18 == 0) {\n      trap(7);\n    }\n    puVar8 = (uint *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)\n                               (&local_30,(uVar7 / uVar18 + 1) * 4);\n    puVar46 = puVar45;\n  }\n  uVar18 = param_2 - param_3;\n  if (param_2 == 0) {\n    trap(7);\n  }\n  uVar53 = 0xffffffff / param_2;\n  uVar40 = param_2 >> 1;\n  uVar11 = uVar18 - (uVar18 >> 1 & 0x55555555);\n  uVar23 = param_2 - (uVar40 & 0x55555555);\n  uVar7 = param_3 - (param_3 >> 1 & 0x55555555);\n  uVar26 = (uVar11 >> 2 & 0x33333333) + (uVar11 & 0x33333333);\n  uVar23 = (uVar23 >> 2 & 0x33333333) + (uVar23 & 0x33333333);\n  uVar11 = (uVar7 >> 2 & 0x33333333) + (uVar7 & 0x33333333);\n  uVar7 = (uVar26 >> 4) + uVar26 & 0xf0f0f0f;\n  uVar23 = (uVar23 >> 4) + uVar23 & 0xf0f0f0f;\n  uVar7 = (uVar7 >> 8) + uVar7;\n  uVar11 = (uVar11 >> 4) + uVar11 & 0xf0f0f0f;\n  uVar23 = (uVar23 >> 8) + uVar23;\n  uVar11 = (uVar11 >> 8) + uVar11;\n  uVar7 = 1 << ((uVar11 >> 0x10) + uVar11 +\n                (((uVar7 >> 0x10) + uVar7 & 0xff) - ((uVar23 >> 0x10) + uVar23 & 0xff)) & 0x1f);\n  bVar3 = uVar53 < uVar7;\n  if (bVar3) {\n    *puVar8 = uVar7;\n    uVar7 = 1;\n  }\n  uVar11 = 0;\n  uVar23 = param_2;\n  uVar26 = param_3;\n  do {\n    bVar4 = uVar23 % 3 < uVar26 % 3 + uVar11;\n    if (bVar4) {\n      uVar7 = uVar7 * 3;\n    }\n    uVar11 = (uint)bVar4;\n    bVar4 = 8 < uVar23;\n    uVar23 = uVar23 / 3;\n    uVar26 = uVar26 / 3;\n  } while (bVar4);\n  uVar11 = param_2 - 1;\n  if (uVar11 < 0x10000) {\n    iVar6 = 0x18;\n    if (uVar11 < 0x100) {\n      iVar6 = 0x20;\n    }\n    iVar24 = 9;\n    if (uVar11 < 0x100) {\n      iVar24 = 1;\n    }\n  }\n  else {\n    iVar6 = 8;\n    if (uVar11 < 0x1000000) {\n      iVar6 = 0x10;\n    }\n    iVar24 = 0x19;\n    if (uVar11 < 0x1000000) {\n      iVar24 = 0x11;\n    }\n  }\n  iVar29 = 0;\n  uVar28 = 1;\n  uVar42 = (((1 << ((int)(0x1f - (iVar6 - (uint)(byte)PTR___gmpn_clz_tab_0009d18c[uVar11 >> iVar24])\n                         ) >> 1 & 0x1fU)) +\n            (1 << ((int)(0x1e - (iVar6 - (uint)(byte)PTR___gmpn_clz_tab_0009d18c[uVar11 >> iVar24]))\n                   >> 1 & 0x1fU))) - 5U | 1) / 3;\n  uVar26 = uVar42 + 1;\n  uVar11 = (uint)bVar3;\n  uVar23 = 0;\n  do {\n    uVar35 = uVar23 + 1;\n    uVar21 = uVar11;\n    if ((uVar28 & *(uint *)(puVar13 + iVar29 * 4)) == 0) {\n      uVar12 = (uVar35 & 1) + 1 + uVar35 * 3;\n      if (uVar53 < uVar7) {\n        uVar21 = uVar11 + 1;\n        puVar8[uVar11] = uVar7;\n        uVar7 = 1;\n      }\n      uVar27 = 0;\n      uVar11 = param_3;\n      uVar25 = param_2;\n      do {\n        if (uVar12 == 0) {\n          trap(7);\n        }\n        if (uVar12 == 0) {\n          trap(7);\n        }\n        uVar54 = uVar25 / uVar12;\n        bVar3 = uVar25 % uVar12 < uVar11 % uVar12 + uVar27;\n        if (bVar3) {\n          uVar7 = uVar7 * uVar12;\n        }\n        uVar27 = (uint)bVar3;\n        uVar11 = uVar11 / uVar12;\n        uVar25 = uVar54;\n      } while (uVar12 <= uVar54);\n    }\n    uVar28 = uVar28 * 2 - ((int)uVar28 >> 0x1f);\n    bVar3 = uVar23 != uVar42;\n    iVar29 = iVar29 + (uVar28 & 1);\n    uVar11 = uVar21;\n    uVar23 = uVar35;\n  } while (bVar3);\n  uVar23 = uVar26 >> 5;\n  uVar11 = 1 << (uVar26 & 0x1f);\n  uVar28 = (uVar40 - 5 | 1) / 3;\n  do {\n    while( true ) {\n      uVar26 = uVar26 + 1;\n      uVar42 = uVar21;\n      if ((uVar11 & *(uint *)(puVar13 + uVar23 * 4)) == 0) break;\nLAB_00021e80:\n      uVar11 = uVar11 * 2 - ((int)uVar11 >> 0x1f);\n      uVar23 = uVar23 + (uVar11 & 1);\n      uVar21 = uVar42;\n      if (uVar28 < uVar26) goto LAB_00021f04;\n    }\n    uVar12 = (uVar26 & 1) + 1 + uVar26 * 3;\n    if (uVar12 == 0) {\n      trap(7);\n    }\n    if (uVar12 == 0) {\n      trap(7);\n    }\n    if (param_3 % uVar12 <= param_2 % uVar12) goto LAB_00021e80;\n    if (uVar53 << 1 < uVar7) {\n      uVar42 = uVar21 + 1;\n      puVar8[uVar21] = uVar7;\n      uVar7 = uVar12;\n      goto LAB_00021e80;\n    }\n    uVar11 = uVar11 * 2 - ((int)uVar11 >> 0x1f);\n    uVar7 = uVar7 * uVar12;\n    uVar23 = uVar23 + (uVar11 & 1);\n  } while (uVar26 <= uVar28);\nLAB_00021f04:\n  uVar18 = (uVar18 - 5 | 1) / 3 + 1;\n  uVar23 = uVar18 >> 5;\n  uVar37 = uVar37 / 3;\n  uVar11 = 1 << (uVar18 & 0x1f);\n  do {\n    while( true ) {\n      uVar18 = uVar18 + 1;\n      uVar26 = uVar42;\n      if ((uVar11 & *(uint *)(puVar13 + uVar23 * 4)) == 0) break;\nLAB_00021f58:\n      uVar11 = uVar11 * 2 - ((int)uVar11 >> 0x1f);\n      uVar23 = uVar23 + (uVar11 & 1);\n      uVar42 = uVar26;\n      if (uVar37 < uVar18) goto LAB_00021fb8;\n    }\n    uVar28 = (uVar18 & 1) + 1 + uVar18 * 3;\n    if ((uVar53 & 0x7fffffff) < uVar7) {\n      uVar26 = uVar42 + 1;\n      puVar8[uVar42] = uVar7;\n      uVar7 = uVar28;\n      goto LAB_00021f58;\n    }\n    uVar11 = uVar11 * 2 - ((int)uVar11 >> 0x1f);\n    uVar7 = uVar7 * uVar28;\n    uVar23 = uVar23 + (uVar11 & 1);\n  } while (uVar18 <= uVar37);\nLAB_00021fb8:\n  if (uVar26 == 0) {\n    **(uint **)(param_1 + 8) = uVar7;\n    *(undefined4 *)(param_1 + 4) = 1;\n    uVar18 = 0;\n    iVar6 = local_30;\n  }\n  else {\n    uVar18 = uVar26 + 1;\n    puVar8[uVar26] = uVar7;\n    (*(code *)PTR___gmpz_prodlimbs_0009d284)(param_1);\n    iVar6 = local_30;\n  }\n  local_30 = iVar6;\n  if (iVar6 != 0) {\n    (*(code *)PTR___gmp_tmp_reentrant_free_0009d618)();\n  }\n  iVar24 = *(int *)puVar5;\n  if (local_2c == iVar24) {\n    return iVar24;\n  }\n  pcVar51 = FUN_0002209c;\n  puVar14 = PTR___stack_chk_fail_0009d4d0;\n  (*(code *)PTR___stack_chk_fail_0009d4d0)();\n  puVar43 = puVar14 + 0x82fa4;\n  puVar47 = puVar46 + -0x90;\n  puVar50 = puVar46 + -0x90;\n  puVar49 = puVar46 + -0x90;\n  *(int *)(puVar46 + -0x24) = param_1;\n  *(undefined1 **)(puVar46 + -8) = auStack_48;\n  puVar19 = *(undefined4 **)(puVar14 + 0x7b4a4);\n  *(code **)(puVar46 + -4) = pcVar51;\n  *(int *)(puVar46 + -0x6c) = iVar6;\n  *(uint *)(puVar46 + -0xc) = uVar40;\n  *(uint *)(puVar46 + -0x10) = param_3;\n  *(uint *)(puVar46 + -0x14) = uVar37;\n  uVar37 = (((uint)puVar8 >> 5) + 1) * 3;\n  *(uint *)(puVar46 + -0x18) = uVar35;\n  *(undefined1 **)(puVar46 + -0x1c) = puVar13;\n  *(uint *)(puVar46 + -0x20) = param_2;\n  *(undefined **)(puVar46 + -0x28) = puVar5;\n  *(undefined **)(puVar46 + -0x78) = puVar43;\n  *(undefined4 **)(puVar46 + -0x70) = puVar19;\n  *(undefined4 *)(puVar46 + -0x30) = 0;\n  *(undefined4 *)(puVar46 + -0x2c) = *puVar19;\n  if (uVar37 < 0x2a) {\n    uVar37 = 0x27;\n    if (uVar18 < 0x28) {\n      uVar37 = uVar18;\n    }\n    uVar37 = (uVar37 + 1) * 4;\n  }\n  else {\n    uVar37 = ((int)uVar37 >> 1) + 0x13;\n    if (uVar18 < uVar37) {\n      uVar37 = uVar18;\n    }\n    uVar37 = (uVar37 + 1) * 4;\n    pcVar51 = *(code **)(puVar14 + 0x7b254);\n    if (0x7f00 < uVar37) {\n      *(uint *)(puVar46 + 8) = uVar18;\n      puVar38 = (uint *)(*pcVar51)(puVar46 + -0x30);\n      puVar43 = *(undefined **)(puVar46 + -0x78);\n      uVar18 = *(uint *)(puVar46 + 8);\n      goto LAB_0002214c;\n    }\n  }\n  iVar6 = -(uVar37 + 7 & 0xfffffff8);\n  puVar47 = puVar46 + iVar6 + -0x90;\n  puVar38 = (uint *)(puVar46 + iVar6 + -0x78);\nLAB_0002214c:\n  iVar24 = *(int *)(puVar43 + -0x7c6c);\n  puVar36 = (uint *)(puVar47 + -0x40);\n  puVar31 = (uint *)(iVar24 + 0x1c);\n  iVar6 = 8;\n  do {\n    iVar29 = iVar6;\n    puVar9 = (uint *)*puVar31;\n    puVar31 = puVar31 + -1;\n    iVar6 = iVar29 + -1;\n  } while (puVar9 < puVar8);\n  *(int *)(puVar46 + -0x68) = iVar29;\n  puVar31 = (uint *)(iVar24 + 0x1c);\n  uVar37 = 8;\n  do {\n    uVar7 = uVar37;\n    uVar11 = *puVar31;\n    puVar31 = puVar31 + -1;\n    uVar37 = uVar7 - 1;\n  } while (uVar11 < uVar18);\n  uVar10 = *(undefined4 *)(puVar43 + -0x7d3c);\n  iVar6 = 0x11;\n  *(undefined4 *)(puVar46 + -0x48) = 0;\n  *(undefined4 *)(puVar46 + -100) = uVar10;\n  iVar24 = *(int *)(puVar43 + -0x7e20);\n  *(undefined4 *)(puVar46 + -0x5c) = 0x3fffffff;\n  iVar29 = (int)puVar8 + (1 - uVar18);\n  *(uint *)(puVar46 + -0x40) = (uint)*(byte *)(iVar24 + 7);\n  *(undefined4 *)(puVar46 + -0x3c) = *(undefined4 *)(puVar43 + -0x7eb4);\n  *(uint *)(puVar46 + -0x60) = uVar18 + 1;\n  iVar24 = *(int *)(puVar46 + -0x60);\n  *puVar38 = 1;\n  *(undefined4 *)(puVar46 + -0x44) = 1;\n  *(int *)(puVar46 + -0x34) = *(int *)(puVar43 + -0x7fe4) + -0x31a4;\n  *(int *)(puVar46 + -0x38) = *(int *)(puVar43 + -0x7fd4) + 0x3630;\n  *puVar36 = 0x260eeeeb;\n  if (iVar24 - 0x11U <= uVar7) {\n    uVar7 = iVar24 - 0x11U;\n  }\n  puVar8 = (uint *)0x1;\n  iVar39 = iVar6;\n  if (uVar7 == 0) goto LAB_00022534;\nLAB_00022234:\n  puVar31 = (uint *)0x1;\n  iVar41 = *(int *)(puVar46 + -0x40);\n  *(uint **)(puVar46 + -0x4c) = puVar8;\n  *(uint **)(puVar46 + -0x50) = puVar38;\n  do {\n    iVar39 = iVar6 + uVar7;\n    uVar18 = (**(code **)(*(int *)(puVar46 + -0x34) + (uVar7 - 1) * 4))(iVar6);\n    if ((uVar18 & 0xff) == 0) {\n      uVar37 = uVar18 >> 8;\n      iVar6 = 6;\n      if ((uVar37 & 0xff) == 0) {\n        uVar37 = uVar18 >> 0x10;\n        iVar6 = 0xe;\n        if ((uVar37 & 0xff) == 0) {\n          uVar37 = uVar18 >> 0x18;\n          iVar6 = 0x1e;\n          if (uVar37 != 0) {\n            iVar6 = 0x16;\n          }\n        }\n      }\n      uVar37 = (uint)*(byte *)(*(int *)(puVar46 + -0x3c) + (-uVar37 & uVar37)) + iVar6;\n    }\n    else {\n      uVar37 = *(byte *)(*(int *)(puVar46 + -0x3c) + (-uVar18 & uVar18)) - 2;\n    }\n    iVar41 = iVar41 + *(byte *)(*(int *)(puVar46 + -0x38) + (uVar7 - 1)) + uVar37;\n    uVar18 = (**(code **)(*(int *)(puVar46 + -0x78) + -0x7f9c))\n                       (puVar36,puVar36,puVar31,uVar18 >> (uVar37 & 0x1f));\n    puVar43 = *(undefined **)(puVar46 + -0x78);\n    if ((uint)(iVar24 - iVar39) <= uVar7) {\n      uVar7 = iVar24 - iVar39;\n    }\n    puVar8 = puVar36 + (int)puVar31;\n    puVar31 = (uint *)((int)puVar31 + (uint)(uVar18 != 0));\n    *puVar8 = uVar18;\n    if (uVar7 == 0) {\n      puVar38 = *(uint **)(puVar46 + -0x50);\n      puVar8 = *(uint **)(puVar46 + -0x4c);\n      *(int *)(puVar46 + -0x40) = iVar41;\n      *(uint **)(puVar46 + -0x4c) = puVar36 + (int)((int)puVar31 + *(int *)(puVar46 + -0x5c));\n      goto LAB_00022340;\n    }\n    iVar6 = iVar39;\n  } while (puVar31 != (uint *)0x14);\n  puVar8 = *(uint **)(puVar46 + -0x4c);\n  puVar38 = *(uint **)(puVar46 + -0x50);\n  *(int *)(puVar46 + -0x40) = iVar41;\n  *(uint **)(puVar46 + -0x4c) = puVar36 + 0x13;\nLAB_00022340:\n  do {\n    iVar41 = iVar39 - *(int *)(puVar46 + -0x44);\n    iVar24 = *(int *)(puVar46 + -0x5c);\n    iVar6 = iVar41;\n    if (iVar41 != 0) {\n      *(uint *)(puVar46 + -0x44) = uVar7;\n      *(uint **)(puVar46 + -0x50) = puVar31;\n      *(uint **)(puVar46 + -0x54) = puVar36;\n      *(int *)(puVar46 + -0x58) = iVar39;\n      iVar6 = *(int *)(puVar46 + -0x48);\n      iVar39 = *(int *)(puVar46 + -0x68);\n      iVar24 = iVar29;\n      do {\n        iVar33 = iVar41;\n        if (iVar39 <= iVar41) {\n          iVar33 = iVar39;\n        }\n        iVar29 = iVar24 + iVar33;\n        uVar18 = (**(code **)(*(int *)(puVar46 + -0x34) + (iVar33 + -1) * 4))(iVar24);\n        if ((uVar18 & 0xff) == 0) {\n          uVar37 = uVar18 >> 8;\n          iVar24 = 6;\n          if ((uVar37 & 0xff) == 0) {\n            uVar37 = uVar18 >> 0x10;\n            iVar24 = 0xe;\n            if ((uVar37 & 0xff) == 0) {\n              uVar37 = uVar18 >> 0x18;\n              iVar24 = 0x16;\n              if (uVar37 == 0) {\n                iVar24 = 0x1e;\n              }\n            }\n          }\n          uVar37 = (uint)*(byte *)(*(int *)(puVar46 + -0x3c) + (-uVar37 & uVar37)) + iVar24;\n        }\n        else {\n          uVar37 = *(byte *)(*(int *)(puVar46 + -0x3c) + (-uVar18 & uVar18)) - 2;\n        }\n        iVar41 = iVar41 - iVar33;\n        iVar6 = iVar6 + *(byte *)(*(int *)(puVar46 + -0x38) + iVar33 + -1) + uVar37;\n        uVar18 = (**(code **)(*(int *)(puVar46 + -0x78) + -0x7f9c))\n                           (puVar38,puVar38,puVar8,uVar18 >> (uVar37 & 0x1f));\n        puVar43 = *(undefined **)(puVar46 + -0x78);\n        puVar31 = puVar38 + (int)puVar8;\n        puVar8 = (uint *)((int)puVar8 + (uint)(uVar18 != 0));\n        *puVar31 = uVar18;\n        iVar24 = iVar29;\n      } while (iVar41 != 0);\n      uVar7 = *(uint *)(puVar46 + -0x44);\n      puVar31 = *(uint **)(puVar46 + -0x50);\n      puVar36 = *(uint **)(puVar46 + -0x54);\n      iVar39 = *(int *)(puVar46 + -0x58);\n      *(int *)(puVar46 + -0x48) = iVar6;\n      iVar24 = *(int *)(puVar46 + -0x5c);\n    }\n    uVar37 = *puVar36;\n    pcVar51 = *(code **)(puVar43 + -0x7bc0);\n    uVar18 = (uint)*(byte *)(*(int *)(puVar46 + -100) + ((uVar37 << 0x18) >> 0x19));\n    puVar8 = (uint *)((int)puVar8 +\n                     ((puVar38[(int)((int)puVar8 + iVar24)] < **(uint **)(puVar46 + -0x4c) ^ 1) -\n                     (int)puVar31));\n    iVar24 = uVar18 * 2 - uVar18 * uVar18 * uVar37;\n    if ((int)puVar8 < (int)puVar31) {\n      puVar31 = puVar8;\n    }\n    *(uint **)(puVar47 + -0x48) = puVar31;\n    *(uint *)(puVar47 + -0x44) = iVar24 * iVar24 * uVar37 + iVar24 * -2;\n    puVar9 = puVar38;\n    puVar22 = puVar8;\n    (*pcVar51)(puVar38,puVar38,puVar8,puVar36);\n    iVar24 = *(int *)(puVar46 + -0x78);\n    if (uVar7 == 0) {\n      if (*(int *)(puVar46 + -0x48) == *(int *)(puVar46 + -0x40)) {\n        puVar8 = (uint *)((int)puVar8 - (uint)(puVar38[(int)((int)puVar8 + -1)] == 0));\n        pcVar51 = *(code **)(iVar24 + -0x7a80);\n        if ((int)puVar8 <= **(int **)(puVar46 + -0x6c)) goto LAB_00022600;\nLAB_00022734:\n        puVar9 = puVar8;\n        puVar19 = (undefined4 *)(*pcVar51)(*(undefined4 *)(puVar46 + -0x6c));\n        iVar24 = *(int *)(puVar46 + -0x78);\n      }\n      else {\n        puVar9 = puVar38;\n        puVar22 = puVar8;\n        uVar18 = (**(code **)(iVar24 + -0x7ad4))(puVar38);\n        iVar24 = *(int *)(puVar46 + -0x78);\n        puVar38[(int)puVar8] = uVar18;\n        puVar8 = (uint *)((int)puVar8 +\n                         ((uint)(uVar18 != 0) -\n                         (uint)(puVar38[(int)((int)puVar8 + ((uVar18 != 0) - 1))] == 0)));\n        pcVar51 = *(code **)(iVar24 + -0x7a80);\n        if (**(int **)(puVar46 + -0x6c) < (int)puVar8) goto LAB_00022734;\nLAB_00022600:\n        puVar19 = *(undefined4 **)(*(int *)(puVar46 + -0x6c) + 8);\n      }\n      *(uint **)(*(int *)(puVar46 + -0x6c) + 4) = puVar8;\n      if (puVar8 != (uint *)0x0) {\n        puVar13 = (undefined1 *)((int)puVar8 + -1);\n        puVar9 = (uint *)*puVar38;\n        if (puVar13 != (undefined1 *)0x0) {\n          puVar15 = puVar19;\n          puVar16 = puVar38 + 1;\n          do {\n            *puVar15 = puVar9;\n            puVar38 = puVar16 + 1;\n            puVar13 = puVar13 + -1;\n            puVar9 = (uint *)*puVar16;\n            puVar15 = puVar15 + 1;\n            puVar16 = puVar38;\n          } while (puVar13 != (undefined1 *)0x0);\n          puVar8 = (uint *)((int)puVar8 * 4);\n          puVar19 = (undefined4 *)((int)puVar19 + (int)(puVar8 + -1));\n        }\n        *puVar19 = puVar9;\n      }\n      puVar16 = *(uint **)(puVar46 + -0x30);\n      if (puVar16 != (uint *)0x0) {\n        (**(code **)(iVar24 + -0x7a28))();\n        iVar24 = *(int *)(puVar46 + -0x78);\n      }\n      if (*(int *)(puVar46 + -0x2c) == **(int **)(puVar46 + -0x70)) {\n        return **(int **)(puVar46 + -0x70);\n      }\n      pcVar51 = *(code **)(iVar24 + -0x7b70);\n      pcVar52 = __gmpz_bin_uiui;\n      (*pcVar51)();\n      pcVar44 = pcVar51 + 0x8289c;\n      *(uint **)(puVar47 + -0x78) = puVar31;\n      piVar32 = *(int **)(pcVar51 + 0x7ad9c);\n      *(code **)(puVar47 + -0xf0) = pcVar44;\n      *(int *)(puVar47 + -0x74) = iVar39;\n      *(code **)(puVar47 + -0x5c) = pcVar52;\n      *(undefined1 **)(puVar47 + -0x60) = puVar46 + -0x90;\n      *(int *)(puVar47 + -100) = iVar6;\n      *(int *)(puVar47 + -0x68) = iVar29;\n      *(uint **)(puVar47 + -0x6c) = puVar38;\n      *(uint **)(puVar47 + -0x70) = puVar36;\n      *(uint **)(puVar47 + -0x7c) = puVar8;\n      *(undefined4 *)(puVar47 + -0x80) = 0;\n      *(int *)(puVar47 + -0x84) = *piVar32;\n      puVar31 = puVar16;\n      puVar20 = puVar9;\n      if (puVar9 < puVar22) {\n        puVar16[1] = 0;\n        puVar30 = (uint *)0x0;\n      }\n      else {\n        puVar30 = puVar22;\n        if ((uint *)((int)puVar9 - (int)puVar22) <= puVar22) {\n          puVar30 = (uint *)((int)puVar9 - (int)puVar22);\n        }\n        puVar22 = puVar30;\n        puVar36 = puVar9;\n        if (puVar30 < (uint *)0x2) {\n          if (puVar30 == (uint *)0x0) {\n            puVar36 = (uint *)0x1;\n          }\n          *(uint **)puVar16[2] = puVar36;\n          puVar16[1] = 1;\n          puVar49 = puVar46 + -0x90;\n        }\n        else if (puVar9 < (uint *)0x23) {\n          puVar13 = (undefined1 *)((int)puVar30 + -2);\n          iVar6 = *(int *)(pcVar51 + 0x7aa7c);\n          puVar20 = (uint *)puVar16[2];\n          uVar18 = (int)puVar9 - (int)puVar30;\n          puVar36 = (uint *)(iVar6 + ((uint)puVar9 >> 1));\n          puVar30 = (uint *)(iVar6 + ((uint)puVar30 >> 1));\n          bVar2 = *(byte *)((int)puVar30 + -1);\n          puVar31 = (uint *)(uint)*(byte *)(iVar6 + (uVar18 >> 1) + -1);\n          *puVar20 = *(int *)((int)puVar13 * 4 + *(int *)(pcVar51 + 0x7a8c8) + 0x35b4) *\n                     *(int *)(*(int *)(pcVar51 + 0x7ad64) + (int)puVar9 * 4) *\n                     *(int *)((uVar18 - 2) * 4 + *(int *)(pcVar51 + 0x7a8c8) + 0x35b4) <<\n                     (((uint)*(byte *)((int)puVar36 + -1) - (int)(uint)bVar2) - (int)puVar31 & 0x1f)\n          ;\n          puVar16[1] = 1;\n          puVar22 = (uint *)(uint)bVar2;\n          puVar49 = puVar46 + -0x90;\n        }\n        else if (puVar30 < &DAT_00000011) {\n          FUN_000216e8();\n          pcVar44 = *(code **)(puVar47 + -0xf0);\n          puVar49 = puVar46 + -0x90;\n        }\n        else if (puVar30 < &DAT_00000021) {\n          uVar18 = (uint)puVar30 >> 1;\n          uVar37 = (int)puVar9 - uVar18;\n          FUN_000216e8();\n          iVar6 = *(int *)(puVar47 + -0xf0);\n          uVar7 = (int)puVar30 - uVar18;\n          if (uVar37 < 0x23) {\n            puVar50 = (undefined1 *)puVar16[1];\n            if ((int)puVar50 < (int)*puVar16) {\n              puVar8 = (uint *)puVar16[2];\n            }\n            else {\n              puVar8 = (uint *)(**(code **)(iVar6 + -0x7a80))(puVar16,puVar50 + 1);\n              iVar6 = *(int *)(puVar47 + -0xf0);\n            }\n            iVar29 = *(int *)(iVar6 + -0x7e20);\n            iVar24 = *(int *)(iVar6 + -0x7fd4) + 0x35b4;\n            uVar37 = (**(code **)(iVar6 + -0x7f9c))\n                               (puVar8,puVar8,puVar50,\n                                *(int *)((((int)puVar9 - (int)puVar30) - 2U) * 4 + iVar24) *\n                                *(int *)(*(int *)(iVar6 + -0x7b38) + uVar37 * 4) *\n                                *(int *)((uVar7 - 2) * 4 + iVar24) <<\n                                (((uint)*(byte *)(iVar29 + (uVar37 >> 1) + -1) -\n                                 (uint)*(byte *)(iVar29 + (uVar7 >> 1) + -1)) -\n                                 (uint)*(byte *)(iVar29 + ((uint)((int)puVar9 - (int)puVar30) >> 1)\n                                                + -1) & 0x1f));\n            iVar6 = *(int *)(puVar47 + -0xf0);\n            puVar30 = (uint *)(puVar50 + (uVar37 != 0));\n            puVar8[(int)puVar50] = uVar37;\n          }\n          else {\n            *(undefined4 *)(puVar47 + -0xe4) = 0x15;\n            *(undefined1 **)(puVar47 + -0xdc) = puVar47 + -0xd8;\n            FUN_000216e8(puVar47 + -0xe4,uVar37,uVar7);\n            (**(code **)(*(int *)(puVar47 + -0xf0) + -0x7ba8))(puVar16,puVar16,puVar47 + -0xe4);\n            iVar6 = *(int *)(puVar47 + -0xf0);\n            puVar8 = (uint *)puVar16[2];\n            puVar30 = (uint *)puVar16[1];\n          }\n          pcVar51 = *(code **)(iVar6 + -0x7bb4);\n          puVar38 = (uint *)((uint)*(byte *)((uVar7 - 8) + *(int *)(iVar6 + -0x7fd4) + 0x3550) -\n                            (uint)(uVar18 != uVar7));\n          *(undefined4 *)(puVar47 + -0xf8) =\n               *(undefined4 *)((uVar7 - 8) * 4 + *(int *)(iVar6 + -0x7fd4) + 0x355c);\n          *(uint **)(puVar47 + -0xf4) = puVar38;\n          puVar31 = puVar8;\n          puVar20 = puVar8;\n          puVar22 = puVar30;\n          (*pcVar51)();\n          pcVar44 = *(code **)(puVar47 + -0xf0);\n          if (puVar8[(int)((int)puVar30 + -1)] == 0) {\n            puVar9 = puVar8 + (int)puVar30;\n            do {\n              puVar1 = puVar9 + -2;\n              puVar30 = (uint *)((int)puVar30 + -1);\n              puVar9 = puVar9 + -1;\n            } while (*puVar1 == 0);\n          }\n          puVar16[1] = (uint)puVar30;\n          puVar49 = puVar50;\n        }\n        else if ((puVar30 < (uint *)0x3e8) || (puVar30 <= (uint *)((uint)puVar9 >> 4))) {\n          FUN_0002209c();\n          pcVar44 = *(code **)(puVar47 + -0xf0);\n          puVar49 = puVar46 + -0x90;\n        }\n        else {\n          FUN_000219dc();\n          pcVar44 = *(code **)(puVar47 + -0xf0);\n          puVar49 = puVar46 + -0x90;\n        }\n      }\n      if (*(int *)(puVar47 + -0x84) == *piVar32) {\n        return *piVar32;\n      }\n      pcVar51 = *(code **)(pcVar44 + -0x7b70);\n      uVar10 = 0x22b64;\n      (*pcVar51)();\n      pcVar44 = pcVar51 + 0x824d0;\n      puVar48 = puVar47 + -0x160;\n      *(uint **)(puVar47 + -0x118) = puVar16;\n      *(uint **)(puVar47 + -0x124) = puVar30;\n      piVar34 = *(int **)(pcVar51 + 0x7a9d0);\n      uVar18 = puVar22[1];\n      *(undefined1 **)(puVar47 + -0x110) = puVar49;\n      *(uint **)(puVar47 + -0x114) = puVar36;\n      *(int **)(puVar47 + -0x11c) = piVar32;\n      *(uint **)(puVar47 + -0x120) = puVar8;\n      *(undefined4 *)(puVar47 + -0x10c) = uVar10;\n      *(code **)(puVar47 + -0x150) = pcVar44;\n      *(undefined4 *)(puVar47 + -0x13c) = 0;\n      puVar8 = (uint *)puVar20[1];\n      *(int *)(puVar47 + -300) = *piVar34;\n      if ((int)uVar18 < 0) {\n        uVar37 = uVar18 * -4;\n        *(uint *)(puVar47 + -0x138) = -uVar18;\n        if (0x7f00 < uVar37) {\n          pcVar51 = *(code **)(pcVar51 + 0x7a780);\n          goto LAB_00022c88;\n        }\nLAB_00022be4:\n        iVar6 = -(uVar37 + 7 & 0xfffffff8);\n        puVar48 = puVar47 + iVar6 + -0x160;\n        puVar13 = puVar47 + iVar6 + -0x150;\n      }\n      else {\n        uVar37 = uVar18 * 4;\n        *(uint *)(puVar47 + -0x138) = uVar18;\n        pcVar51 = *(code **)(pcVar51 + 0x7a780);\n        if (uVar37 < 0x7f01) goto LAB_00022be4;\nLAB_00022c88:\n        *(uint **)(puVar47 + -0x144) = puVar22;\n        puVar13 = (undefined1 *)(*pcVar51)(puVar47 + -0x13c,uVar37);\n        pcVar44 = *(code **)(puVar47 + -0x150);\n        puVar22 = *(uint **)(puVar47 + -0x144);\n      }\n      pcVar51 = *(code **)(pcVar44 + -0x7a68);\n      puVar36 = (uint *)(puVar47 + -0x138);\n      *(undefined1 **)(puVar47 + -0x130) = puVar13;\n      puVar9 = puVar20;\n      (*pcVar51)(puVar31,puVar36,puVar20,puVar22);\n      iVar6 = *(int *)(puVar47 + -0x150);\n      if (((int)((uint)puVar8 ^ uVar18) < 0) || (*(int *)(puVar47 + -0x134) == 0)) {\n        piVar32 = *(int **)(puVar47 + -0x13c);\n        pcVar51 = *(code **)(iVar6 + -0x7a28);\n        if (piVar32 != (int *)0x0) goto LAB_00022cc0;\n      }\n      else {\n        puVar9 = (uint *)0x1;\n        puVar36 = puVar31;\n        (**(code **)(iVar6 + -0x7c9c))(puVar31);\n        piVar32 = *(int **)(puVar47 + -0x13c);\n        iVar6 = *(int *)(puVar47 + -0x150);\n        if (piVar32 != (int *)0x0) {\n          pcVar51 = *(code **)(iVar6 + -0x7a28);\nLAB_00022cc0:\n          (*pcVar51)();\n          iVar6 = *(int *)(puVar47 + -0x150);\n        }\n      }\n      if (*(int *)(puVar47 + -300) == *piVar34) {\n        return *piVar34;\n      }\n      pcVar51 = *(code **)(iVar6 + -0x7b70);\n      uVar10 = 0x22cdc;\n      (*pcVar51)();\n      pcVar44 = pcVar51 + 0x82360;\n      *(code **)(puVar48 + -0x28) = pcVar44;\n      *(undefined4 *)(puVar48 + -4) = uVar10;\n      *(uint **)(puVar48 + -8) = puVar38;\n      *(uint **)(puVar48 + -0xc) = puVar20;\n      *(int **)(puVar48 + -0x10) = piVar34;\n      *(uint **)(puVar48 + -0x14) = puVar31;\n      *(uint **)(puVar48 + -0x18) = puVar8;\n      *(uint *)(puVar48 + -0x1c) = (uint)puVar8 ^ uVar18;\n      if (puVar9 == (uint *)0x0) {\n        pcVar51 = *(code **)(pcVar51 + 0x7a900);\n        (*pcVar51)();\nLAB_00022e2c:\n        piVar32 = (int *)(*pcVar51)(piVar34,puVar31);\n        pcVar44 = *(code **)(puVar48 + -0x28);\n      }\n      else {\n        puVar8 = (uint *)puVar36[1];\n        if (puVar8 == (uint *)0x0) {\n          piVar32[1] = 0;\n          return 0;\n        }\n        puVar31 = puVar8;\n        if ((int)puVar8 < 0) {\n          puVar31 = (uint *)-(int)puVar8;\n        }\n        pcVar51 = *(code **)(pcVar51 + 0x7a8e0);\n        piVar34 = piVar32;\n        puVar20 = puVar9;\n        puVar38 = puVar36;\n        if (*piVar32 < (int)puVar31) goto LAB_00022e2c;\n        piVar32 = (int *)piVar32[2];\n      }\n      pcVar51 = *(code **)(pcVar44 + -0x7d98);\n      uVar18 = puVar38[2];\n      *(uint **)(puVar48 + -0x30) = puVar20;\n      iVar6 = (*pcVar51)(piVar32,0,uVar18,puVar31);\n      piVar17 = piVar32 + (int)puVar31 + -1;\n      if (iVar6 == 0) {\n        uVar18 = (uint)(*piVar17 == 0);\n        if (-1 < (int)puVar8) {\n          iVar24 = (int)puVar31 - uVar18;\n          goto LAB_00022d9c;\n        }\n      }\n      else {\n        if (-1 < (int)puVar8) {\n          do {\n            iVar24 = *piVar32;\n            *piVar32 = iVar24 + 1;\n            piVar32 = piVar32 + 1;\n          } while (iVar24 + 1 == 0);\n          iVar6 = (int)puVar20 - iVar6;\n          iVar24 = (int)puVar31 - (uint)(*piVar17 == 0);\n          goto LAB_00022d9c;\n        }\n        uVar18 = (uint)(*piVar17 == 0);\n      }\n      iVar24 = uVar18 - (int)puVar31;\nLAB_00022d9c:\n      piVar34[1] = iVar24;\n      return iVar6;\n    }\n    *(int *)(puVar46 + -0x44) = iVar39;\n    iVar6 = iVar39 + uVar7;\n    uVar18 = (**(code **)(*(int *)(puVar46 + -0x34) + (uVar7 - 1) * 4))(iVar39);\n    puVar43 = *(undefined **)(puVar46 + -0x78);\n    if ((uVar18 & 0xff) == 0) {\n      uVar37 = uVar18 >> 8;\n      iVar24 = 6;\n      if ((uVar37 & 0xff) == 0) {\n        uVar37 = uVar18 >> 0x10;\n        iVar24 = 0xe;\n        if ((uVar37 & 0xff) == 0) {\n          uVar37 = uVar18 >> 0x18;\n          iVar24 = 0x1e;\n          if (uVar37 != 0) {\n            iVar24 = 0x16;\n          }\n        }\n      }\n      uVar37 = (uint)*(byte *)(*(int *)(puVar46 + -0x3c) + (-uVar37 & uVar37)) + iVar24;\n    }\n    else {\n      uVar37 = *(byte *)(*(int *)(puVar46 + -0x3c) + (-uVar18 & uVar18)) - 2;\n    }\n    iVar39 = *(int *)(puVar46 + -0x38);\n    *puVar36 = uVar18 >> (uVar37 & 0x1f);\n    iVar24 = *(int *)(puVar46 + -0x60);\n    *(uint *)(puVar46 + -0x40) =\n         *(int *)(puVar46 + -0x40) + *(byte *)(iVar39 + (uVar7 - 1)) + uVar37;\n    if ((uint)(iVar24 - iVar6) <= uVar7) {\n      uVar7 = iVar24 - iVar6;\n    }\n    iVar39 = iVar6;\n    if (uVar7 != 0) goto LAB_00022234;\nLAB_00022534:\n    puVar31 = (uint *)0x1;\n    *(uint **)(puVar46 + -0x4c) = puVar36;\n  } while( true );\n}\n\n" (function_definition "int FUN_000219dc(int param_1,uint param_2,uint param_3)\n\n{\n  uint *puVar1;\n  byte bVar2;\n  bool bVar3;\n  bool bVar4;\n  undefined *puVar5;\n  int iVar6;\n  uint uVar7;\n  uint *puVar8;\n  uint *puVar9;\n  undefined4 uVar10;\n  uint uVar11;\n  uint uVar12;\n  undefined1 *puVar13;\n  undefined *puVar14;\n  undefined4 *puVar15;\n  uint *puVar16;\n  int *piVar17;\n  uint uVar18;\n  undefined4 *puVar19;\n  uint *puVar20;\n  uint uVar21;\n  uint *puVar22;\n  uint uVar23;\n  int iVar24;\n  uint uVar25;\n  uint uVar26;\n  uint uVar27;\n  uint uVar28;\n  int iVar29;\n  uint *puVar30;\n  uint *puVar31;\n  int *piVar32;\n  int iVar33;\n  int *piVar34;\n  uint uVar35;\n  uint *puVar36;\n  uint uVar37;\n  uint *puVar38;\n  int iVar39;\n  uint uVar40;\n  int iVar41;\n  uint uVar42;\n  undefined *puVar43;\n  code *pcVar44;\n  undefined1 *puVar45;\n  undefined1 *puVar46;\n  undefined1 *puVar47;\n  undefined1 *puVar48;\n  undefined1 *puVar49;\n  undefined1 *puVar50;\n  code *pcVar51;\n  code *pcVar52;\n  uint uVar53;\n  uint uVar54;\n  undefined1 auStack_48 [16];\n  int local_30;\n  int local_2c;\n  \n  puVar5 = PTR___stack_chk_guard_0009d540;\n  puVar45 = auStack_48;\n  uVar37 = param_2 - 5 | 1;\n  local_30 = 0;\n  local_2c = *(int *)PTR___stack_chk_guard_0009d540;\n  uVar18 = (uVar37 / 0x60 + 1) * 4;\n  if (uVar18 < 0x7f01) {\n    iVar6 = -(uVar18 + 7 & 0xfffffff8);\n    puVar45 = auStack_48 + iVar6;\n    puVar13 = &stack0xffffffc8 + iVar6;\n  }\n  else {\n    puVar13 = (undefined1 *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&local_30);\n  }\n  iVar6 = (*(code *)PTR___gmp_primesieve_0009d144)(puVar13,param_2);\n  uVar7 = iVar6 + 1;\n  puVar8 = (uint *)(PTR___gmp_limbroots_table_0009d3d4 + 0x1c);\n  uVar18 = 8;\n  do {\n    uVar23 = uVar18;\n    uVar11 = *puVar8;\n    puVar8 = puVar8 + -1;\n    uVar18 = uVar23 - 1;\n  } while (uVar11 < param_2);\n  if (uVar23 == 0) {\n    trap(7);\n  }\n  puVar8 = (uint *)(PTR___gmp_limbroots_table_0009d3d4 + 0x1c);\n  uVar18 = 8;\n  if ((uVar7 / uVar23 + 1) * 4 < 0x7f01) {\n    do {\n      uVar23 = uVar18;\n      uVar11 = *puVar8;\n      puVar8 = puVar8 + -1;\n      uVar18 = uVar23 - 1;\n    } while (uVar11 < param_2);\n    if (uVar23 == 0) {\n      trap(7);\n    }\n    iVar6 = -((uVar7 / uVar23) * 4 + 0xb & 0xfffffff8);\n    puVar46 = puVar45 + iVar6;\n    puVar8 = (uint *)(puVar45 + iVar6 + 0x10);\n  }\n  else {\n    for (puVar14 = PTR___gmp_limbroots_table_0009d3d4 + 0x18; *(uint *)(puVar14 + 4) < param_2;\n        puVar14 = puVar14 + -4) {\n      uVar18 = uVar18 - 1;\n    }\n    if (uVar18 == 0) {\n      trap(7);\n    }\n    puVar8 = (uint *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)\n                               (&local_30,(uVar7 / uVar18 + 1) * 4);\n    puVar46 = puVar45;\n  }\n  uVar18 = param_2 - param_3;\n  if (param_2 == 0) {\n    trap(7);\n  }\n  uVar53 = 0xffffffff / param_2;\n  uVar40 = param_2 >> 1;\n  uVar11 = uVar18 - (uVar18 >> 1 & 0x55555555);\n  uVar23 = param_2 - (uVar40 & 0x55555555);\n  uVar7 = param_3 - (param_3 >> 1 & 0x55555555);\n  uVar26 = (uVar11 >> 2 & 0x33333333) + (uVar11 & 0x33333333);\n  uVar23 = (uVar23 >> 2 & 0x33333333) + (uVar23 & 0x33333333);\n  uVar11 = (uVar7 >> 2 & 0x33333333) + (uVar7 & 0x33333333);\n  uVar7 = (uVar26 >> 4) + uVar26 & 0xf0f0f0f;\n  uVar23 = (uVar23 >> 4) + uVar23 & 0xf0f0f0f;\n  uVar7 = (uVar7 >> 8) + uVar7;\n  uVar11 = (uVar11 >> 4) + uVar11 & 0xf0f0f0f;\n  uVar23 = (uVar23 >> 8) + uVar23;\n  uVar11 = (uVar11 >> 8) + uVar11;\n  uVar7 = 1 << ((uVar11 >> 0x10) + uVar11 +\n                (((uVar7 >> 0x10) + uVar7 & 0xff) - ((uVar23 >> 0x10) + uVar23 & 0xff)) & 0x1f);\n  bVar3 = uVar53 < uVar7;\n  if (bVar3) {\n    *puVar8 = uVar7;\n    uVar7 = 1;\n  }\n  uVar11 = 0;\n  uVar23 = param_2;\n  uVar26 = param_3;\n  do {\n    bVar4 = uVar23 % 3 < uVar26 % 3 + uVar11;\n    if (bVar4) {\n      uVar7 = uVar7 * 3;\n    }\n    uVar11 = (uint)bVar4;\n    bVar4 = 8 < uVar23;\n    uVar23 = uVar23 / 3;\n    uVar26 = uVar26 / 3;\n  } while (bVar4);\n  uVar11 = param_2 - 1;\n  if (uVar11 < 0x10000) {\n    iVar6 = 0x18;\n    if (uVar11 < 0x100) {\n      iVar6 = 0x20;\n    }\n    iVar24 = 9;\n    if (uVar11 < 0x100) {\n      iVar24 = 1;\n    }\n  }\n  else {\n    iVar6 = 8;\n    if (uVar11 < 0x1000000) {\n      iVar6 = 0x10;\n    }\n    iVar24 = 0x19;\n    if (uVar11 < 0x1000000) {\n      iVar24 = 0x11;\n    }\n  }\n  iVar29 = 0;\n  uVar28 = 1;\n  uVar42 = (((1 << ((int)(0x1f - (iVar6 - (uint)(byte)PTR___gmpn_clz_tab_0009d18c[uVar11 >> iVar24])\n                         ) >> 1 & 0x1fU)) +\n            (1 << ((int)(0x1e - (iVar6 - (uint)(byte)PTR___gmpn_clz_tab_0009d18c[uVar11 >> iVar24]))\n                   >> 1 & 0x1fU))) - 5U | 1) / 3;\n  uVar26 = uVar42 + 1;\n  uVar11 = (uint)bVar3;\n  uVar23 = 0;\n  do {\n    uVar35 = uVar23 + 1;\n    uVar21 = uVar11;\n    if ((uVar28 & *(uint *)(puVar13 + iVar29 * 4)) == 0) {\n      uVar12 = (uVar35 & 1) + 1 + uVar35 * 3;\n      if (uVar53 < uVar7) {\n        uVar21 = uVar11 + 1;\n        puVar8[uVar11] = uVar7;\n        uVar7 = 1;\n      }\n      uVar27 = 0;\n      uVar11 = param_3;\n      uVar25 = param_2;\n      do {\n        if (uVar12 == 0) {\n          trap(7);\n        }\n        if (uVar12 == 0) {\n          trap(7);\n        }\n        uVar54 = uVar25 / uVar12;\n        bVar3 = uVar25 % uVar12 < uVar11 % uVar12 + uVar27;\n        if (bVar3) {\n          uVar7 = uVar7 * uVar12;\n        }\n        uVar27 = (uint)bVar3;\n        uVar11 = uVar11 / uVar12;\n        uVar25 = uVar54;\n      } while (uVar12 <= uVar54);\n    }\n    uVar28 = uVar28 * 2 - ((int)uVar28 >> 0x1f);\n    bVar3 = uVar23 != uVar42;\n    iVar29 = iVar29 + (uVar28 & 1);\n    uVar11 = uVar21;\n    uVar23 = uVar35;\n  } while (bVar3);\n  uVar23 = uVar26 >> 5;\n  uVar11 = 1 << (uVar26 & 0x1f);\n  uVar28 = (uVar40 - 5 | 1) / 3;\n  do {\n    while( true ) {\n      uVar26 = uVar26 + 1;\n      uVar42 = uVar21;\n      if ((uVar11 & *(uint *)(puVar13 + uVar23 * 4)) == 0) break;\nLAB_00021e80:\n      uVar11 = uVar11 * 2 - ((int)uVar11 >> 0x1f);\n      uVar23 = uVar23 + (uVar11 & 1);\n      uVar21 = uVar42;\n      if (uVar28 < uVar26) goto LAB_00021f04;\n    }\n    uVar12 = (uVar26 & 1) + 1 + uVar26 * 3;\n    if (uVar12 == 0) {\n      trap(7);\n    }\n    if (uVar12 == 0) {\n      trap(7);\n    }\n    if (param_3 % uVar12 <= param_2 % uVar12) goto LAB_00021e80;\n    if (uVar53 << 1 < uVar7) {\n      uVar42 = uVar21 + 1;\n      puVar8[uVar21] = uVar7;\n      uVar7 = uVar12;\n      goto LAB_00021e80;\n    }\n    uVar11 = uVar11 * 2 - ((int)uVar11 >> 0x1f);\n    uVar7 = uVar7 * uVar12;\n    uVar23 = uVar23 + (uVar11 & 1);\n  } while (uVar26 <= uVar28);\nLAB_00021f04:\n  uVar18 = (uVar18 - 5 | 1) / 3 + 1;\n  uVar23 = uVar18 >> 5;\n  uVar37 = uVar37 / 3;\n  uVar11 = 1 << (uVar18 & 0x1f);\n  do {\n    while( true ) {\n      uVar18 = uVar18 + 1;\n      uVar26 = uVar42;\n      if ((uVar11 & *(uint *)(puVar13 + uVar23 * 4)) == 0) break;\nLAB_00021f58:\n      uVar11 = uVar11 * 2 - ((int)uVar11 >> 0x1f);\n      uVar23 = uVar23 + (uVar11 & 1);\n      uVar42 = uVar26;\n      if (uVar37 < uVar18) goto LAB_00021fb8;\n    }\n    uVar28 = (uVar18 & 1) + 1 + uVar18 * 3;\n    if ((uVar53 & 0x7fffffff) < uVar7) {\n      uVar26 = uVar42 + 1;\n      puVar8[uVar42] = uVar7;\n      uVar7 = uVar28;\n      goto LAB_00021f58;\n    }\n    uVar11 = uVar11 * 2 - ((int)uVar11 >> 0x1f);\n    uVar7 = uVar7 * uVar28;\n    uVar23 = uVar23 + (uVar11 & 1);\n  } while (uVar18 <= uVar37);\nLAB_00021fb8:\n  if (uVar26 == 0) {\n    **(uint **)(param_1 + 8) = uVar7;\n    *(undefined4 *)(param_1 + 4) = 1;\n    uVar18 = 0;\n    iVar6 = local_30;\n  }\n  else {\n    uVar18 = uVar26 + 1;\n    puVar8[uVar26] = uVar7;\n    (*(code *)PTR___gmpz_prodlimbs_0009d284)(param_1);\n    iVar6 = local_30;\n  }\n  local_30 = iVar6;\n  if (iVar6 != 0) {\n    (*(code *)PTR___gmp_tmp_reentrant_free_0009d618)();\n  }\n  iVar24 = *(int *)puVar5;\n  if (local_2c == iVar24) {\n    return iVar24;\n  }\n  pcVar51 = FUN_0002209c;\n  puVar14 = PTR___stack_chk_fail_0009d4d0;\n  (*(code *)PTR___stack_chk_fail_0009d4d0)();\n  puVar43 = puVar14 + 0x82fa4;\n  puVar47 = puVar46 + -0x90;\n  puVar50 = puVar46 + -0x90;\n  puVar49 = puVar46 + -0x90;\n  *(int *)(puVar46 + -0x24) = param_1;\n  *(undefined1 **)(puVar46 + -8) = auStack_48;\n  puVar19 = *(undefined4 **)(puVar14 + 0x7b4a4);\n  *(code **)(puVar46 + -4) = pcVar51;\n  *(int *)(puVar46 + -0x6c) = iVar6;\n  *(uint *)(puVar46 + -0xc) = uVar40;\n  *(uint *)(puVar46 + -0x10) = param_3;\n  *(uint *)(puVar46 + -0x14) = uVar37;\n  uVar37 = (((uint)puVar8 >> 5) + 1) * 3;\n  *(uint *)(puVar46 + -0x18) = uVar35;\n  *(undefined1 **)(puVar46 + -0x1c) = puVar13;\n  *(uint *)(puVar46 + -0x20) = param_2;\n  *(undefined **)(puVar46 + -0x28) = puVar5;\n  *(undefined **)(puVar46 + -0x78) = puVar43;\n  *(undefined4 **)(puVar46 + -0x70) = puVar19;\n  *(undefined4 *)(puVar46 + -0x30) = 0;\n  *(undefined4 *)(puVar46 + -0x2c) = *puVar19;\n  if (uVar37 < 0x2a) {\n    uVar37 = 0x27;\n    if (uVar18 < 0x28) {\n      uVar37 = uVar18;\n    }\n    uVar37 = (uVar37 + 1) * 4;\n  }\n  else {\n    uVar37 = ((int)uVar37 >> 1) + 0x13;\n    if (uVar18 < uVar37) {\n      uVar37 = uVar18;\n    }\n    uVar37 = (uVar37 + 1) * 4;\n    pcVar51 = *(code **)(puVar14 + 0x7b254);\n    if (0x7f00 < uVar37) {\n      *(uint *)(puVar46 + 8) = uVar18;\n      puVar38 = (uint *)(*pcVar51)(puVar46 + -0x30);\n      puVar43 = *(undefined **)(puVar46 + -0x78);\n      uVar18 = *(uint *)(puVar46 + 8);\n      goto LAB_0002214c;\n    }\n  }\n  iVar6 = -(uVar37 + 7 & 0xfffffff8);\n  puVar47 = puVar46 + iVar6 + -0x90;\n  puVar38 = (uint *)(puVar46 + iVar6 + -0x78);\nLAB_0002214c:\n  iVar24 = *(int *)(puVar43 + -0x7c6c);\n  puVar36 = (uint *)(puVar47 + -0x40);\n  puVar31 = (uint *)(iVar24 + 0x1c);\n  iVar6 = 8;\n  do {\n    iVar29 = iVar6;\n    puVar9 = (uint *)*puVar31;\n    puVar31 = puVar31 + -1;\n    iVar6 = iVar29 + -1;\n  } while (puVar9 < puVar8);\n  *(int *)(puVar46 + -0x68) = iVar29;\n  puVar31 = (uint *)(iVar24 + 0x1c);\n  uVar37 = 8;\n  do {\n    uVar7 = uVar37;\n    uVar11 = *puVar31;\n    puVar31 = puVar31 + -1;\n    uVar37 = uVar7 - 1;\n  } while (uVar11 < uVar18);\n  uVar10 = *(undefined4 *)(puVar43 + -0x7d3c);\n  iVar6 = 0x11;\n  *(undefined4 *)(puVar46 + -0x48) = 0;\n  *(undefined4 *)(puVar46 + -100) = uVar10;\n  iVar24 = *(int *)(puVar43 + -0x7e20);\n  *(undefined4 *)(puVar46 + -0x5c) = 0x3fffffff;\n  iVar29 = (int)puVar8 + (1 - uVar18);\n  *(uint *)(puVar46 + -0x40) = (uint)*(byte *)(iVar24 + 7);\n  *(undefined4 *)(puVar46 + -0x3c) = *(undefined4 *)(puVar43 + -0x7eb4);\n  *(uint *)(puVar46 + -0x60) = uVar18 + 1;\n  iVar24 = *(int *)(puVar46 + -0x60);\n  *puVar38 = 1;\n  *(undefined4 *)(puVar46 + -0x44) = 1;\n  *(int *)(puVar46 + -0x34) = *(int *)(puVar43 + -0x7fe4) + -0x31a4;\n  *(int *)(puVar46 + -0x38) = *(int *)(puVar43 + -0x7fd4) + 0x3630;\n  *puVar36 = 0x260eeeeb;\n  if (iVar24 - 0x11U <= uVar7) {\n    uVar7 = iVar24 - 0x11U;\n  }\n  puVar8 = (uint *)0x1;\n  iVar39 = iVar6;\n  if (uVar7 == 0) goto LAB_00022534;\nLAB_00022234:\n  puVar31 = (uint *)0x1;\n  iVar41 = *(int *)(puVar46 + -0x40);\n  *(uint **)(puVar46 + -0x4c) = puVar8;\n  *(uint **)(puVar46 + -0x50) = puVar38;\n  do {\n    iVar39 = iVar6 + uVar7;\n    uVar18 = (**(code **)(*(int *)(puVar46 + -0x34) + (uVar7 - 1) * 4))(iVar6);\n    if ((uVar18 & 0xff) == 0) {\n      uVar37 = uVar18 >> 8;\n      iVar6 = 6;\n      if ((uVar37 & 0xff) == 0) {\n        uVar37 = uVar18 >> 0x10;\n        iVar6 = 0xe;\n        if ((uVar37 & 0xff) == 0) {\n          uVar37 = uVar18 >> 0x18;\n          iVar6 = 0x1e;\n          if (uVar37 != 0) {\n            iVar6 = 0x16;\n          }\n        }\n      }\n      uVar37 = (uint)*(byte *)(*(int *)(puVar46 + -0x3c) + (-uVar37 & uVar37)) + iVar6;\n    }\n    else {\n      uVar37 = *(byte *)(*(int *)(puVar46 + -0x3c) + (-uVar18 & uVar18)) - 2;\n    }\n    iVar41 = iVar41 + *(byte *)(*(int *)(puVar46 + -0x38) + (uVar7 - 1)) + uVar37;\n    uVar18 = (**(code **)(*(int *)(puVar46 + -0x78) + -0x7f9c))\n                       (puVar36,puVar36,puVar31,uVar18 >> (uVar37 & 0x1f));\n    puVar43 = *(undefined **)(puVar46 + -0x78);\n    if ((uint)(iVar24 - iVar39) <= uVar7) {\n      uVar7 = iVar24 - iVar39;\n    }\n    puVar8 = puVar36 + (int)puVar31;\n    puVar31 = (uint *)((int)puVar31 + (uint)(uVar18 != 0));\n    *puVar8 = uVar18;\n    if (uVar7 == 0) {\n      puVar38 = *(uint **)(puVar46 + -0x50);\n      puVar8 = *(uint **)(puVar46 + -0x4c);\n      *(int *)(puVar46 + -0x40) = iVar41;\n      *(uint **)(puVar46 + -0x4c) = puVar36 + (int)((int)puVar31 + *(int *)(puVar46 + -0x5c));\n      goto LAB_00022340;\n    }\n    iVar6 = iVar39;\n  } while (puVar31 != (uint *)0x14);\n  puVar8 = *(uint **)(puVar46 + -0x4c);\n  puVar38 = *(uint **)(puVar46 + -0x50);\n  *(int *)(puVar46 + -0x40) = iVar41;\n  *(uint **)(puVar46 + -0x4c) = puVar36 + 0x13;\nLAB_00022340:\n  do {\n    iVar41 = iVar39 - *(int *)(puVar46 + -0x44);\n    iVar24 = *(int *)(puVar46 + -0x5c);\n    iVar6 = iVar41;\n    if (iVar41 != 0) {\n      *(uint *)(puVar46 + -0x44) = uVar7;\n      *(uint **)(puVar46 + -0x50) = puVar31;\n      *(uint **)(puVar46 + -0x54) = puVar36;\n      *(int *)(puVar46 + -0x58) = iVar39;\n      iVar6 = *(int *)(puVar46 + -0x48);\n      iVar39 = *(int *)(puVar46 + -0x68);\n      iVar24 = iVar29;\n      do {\n        iVar33 = iVar41;\n        if (iVar39 <= iVar41) {\n          iVar33 = iVar39;\n        }\n        iVar29 = iVar24 + iVar33;\n        uVar18 = (**(code **)(*(int *)(puVar46 + -0x34) + (iVar33 + -1) * 4))(iVar24);\n        if ((uVar18 & 0xff) == 0) {\n          uVar37 = uVar18 >> 8;\n          iVar24 = 6;\n          if ((uVar37 & 0xff) == 0) {\n            uVar37 = uVar18 >> 0x10;\n            iVar24 = 0xe;\n            if ((uVar37 & 0xff) == 0) {\n              uVar37 = uVar18 >> 0x18;\n              iVar24 = 0x16;\n              if (uVar37 == 0) {\n                iVar24 = 0x1e;\n              }\n            }\n          }\n          uVar37 = (uint)*(byte *)(*(int *)(puVar46 + -0x3c) + (-uVar37 & uVar37)) + iVar24;\n        }\n        else {\n          uVar37 = *(byte *)(*(int *)(puVar46 + -0x3c) + (-uVar18 & uVar18)) - 2;\n        }\n        iVar41 = iVar41 - iVar33;\n        iVar6 = iVar6 + *(byte *)(*(int *)(puVar46 + -0x38) + iVar33 + -1) + uVar37;\n        uVar18 = (**(code **)(*(int *)(puVar46 + -0x78) + -0x7f9c))\n                           (puVar38,puVar38,puVar8,uVar18 >> (uVar37 & 0x1f));\n        puVar43 = *(undefined **)(puVar46 + -0x78);\n        puVar31 = puVar38 + (int)puVar8;\n        puVar8 = (uint *)((int)puVar8 + (uint)(uVar18 != 0));\n        *puVar31 = uVar18;\n        iVar24 = iVar29;\n      } while (iVar41 != 0);\n      uVar7 = *(uint *)(puVar46 + -0x44);\n      puVar31 = *(uint **)(puVar46 + -0x50);\n      puVar36 = *(uint **)(puVar46 + -0x54);\n      iVar39 = *(int *)(puVar46 + -0x58);\n      *(int *)(puVar46 + -0x48) = iVar6;\n      iVar24 = *(int *)(puVar46 + -0x5c);\n    }\n    uVar37 = *puVar36;\n    pcVar51 = *(code **)(puVar43 + -0x7bc0);\n    uVar18 = (uint)*(byte *)(*(int *)(puVar46 + -100) + ((uVar37 << 0x18) >> 0x19));\n    puVar8 = (uint *)((int)puVar8 +\n                     ((puVar38[(int)((int)puVar8 + iVar24)] < **(uint **)(puVar46 + -0x4c) ^ 1) -\n                     (int)puVar31));\n    iVar24 = uVar18 * 2 - uVar18 * uVar18 * uVar37;\n    if ((int)puVar8 < (int)puVar31) {\n      puVar31 = puVar8;\n    }\n    *(uint **)(puVar47 + -0x48) = puVar31;\n    *(uint *)(puVar47 + -0x44) = iVar24 * iVar24 * uVar37 + iVar24 * -2;\n    puVar9 = puVar38;\n    puVar22 = puVar8;\n    (*pcVar51)(puVar38,puVar38,puVar8,puVar36);\n    iVar24 = *(int *)(puVar46 + -0x78);\n    if (uVar7 == 0) {\n      if (*(int *)(puVar46 + -0x48) == *(int *)(puVar46 + -0x40)) {\n        puVar8 = (uint *)((int)puVar8 - (uint)(puVar38[(int)((int)puVar8 + -1)] == 0));\n        pcVar51 = *(code **)(iVar24 + -0x7a80);\n        if ((int)puVar8 <= **(int **)(puVar46 + -0x6c)) goto LAB_00022600;\nLAB_00022734:\n        puVar9 = puVar8;\n        puVar19 = (undefined4 *)(*pcVar51)(*(undefined4 *)(puVar46 + -0x6c));\n        iVar24 = *(int *)(puVar46 + -0x78);\n      }\n      else {\n        puVar9 = puVar38;\n        puVar22 = puVar8;\n        uVar18 = (**(code **)(iVar24 + -0x7ad4))(puVar38);\n        iVar24 = *(int *)(puVar46 + -0x78);\n        puVar38[(int)puVar8] = uVar18;\n        puVar8 = (uint *)((int)puVar8 +\n                         ((uint)(uVar18 != 0) -\n                         (uint)(puVar38[(int)((int)puVar8 + ((uVar18 != 0) - 1))] == 0)));\n        pcVar51 = *(code **)(iVar24 + -0x7a80);\n        if (**(int **)(puVar46 + -0x6c) < (int)puVar8) goto LAB_00022734;\nLAB_00022600:\n        puVar19 = *(undefined4 **)(*(int *)(puVar46 + -0x6c) + 8);\n      }\n      *(uint **)(*(int *)(puVar46 + -0x6c) + 4) = puVar8;\n      if (puVar8 != (uint *)0x0) {\n        puVar13 = (undefined1 *)((int)puVar8 + -1);\n        puVar9 = (uint *)*puVar38;\n        if (puVar13 != (undefined1 *)0x0) {\n          puVar15 = puVar19;\n          puVar16 = puVar38 + 1;\n          do {\n            *puVar15 = puVar9;\n            puVar38 = puVar16 + 1;\n            puVar13 = puVar13 + -1;\n            puVar9 = (uint *)*puVar16;\n            puVar15 = puVar15 + 1;\n            puVar16 = puVar38;\n          } while (puVar13 != (undefined1 *)0x0);\n          puVar8 = (uint *)((int)puVar8 * 4);\n          puVar19 = (undefined4 *)((int)puVar19 + (int)(puVar8 + -1));\n        }\n        *puVar19 = puVar9;\n      }\n      puVar16 = *(uint **)(puVar46 + -0x30);\n      if (puVar16 != (uint *)0x0) {\n        (**(code **)(iVar24 + -0x7a28))();\n        iVar24 = *(int *)(puVar46 + -0x78);\n      }\n      if (*(int *)(puVar46 + -0x2c) == **(int **)(puVar46 + -0x70)) {\n        return **(int **)(puVar46 + -0x70);\n      }\n      pcVar51 = *(code **)(iVar24 + -0x7b70);\n      pcVar52 = __gmpz_bin_uiui;\n      (*pcVar51)();\n      pcVar44 = pcVar51 + 0x8289c;\n      *(uint **)(puVar47 + -0x78) = puVar31;\n      piVar32 = *(int **)(pcVar51 + 0x7ad9c);\n      *(code **)(puVar47 + -0xf0) = pcVar44;\n      *(int *)(puVar47 + -0x74) = iVar39;\n      *(code **)(puVar47 + -0x5c) = pcVar52;\n      *(undefined1 **)(puVar47 + -0x60) = puVar46 + -0x90;\n      *(int *)(puVar47 + -100) = iVar6;\n      *(int *)(puVar47 + -0x68) = iVar29;\n      *(uint **)(puVar47 + -0x6c) = puVar38;\n      *(uint **)(puVar47 + -0x70) = puVar36;\n      *(uint **)(puVar47 + -0x7c) = puVar8;\n      *(undefined4 *)(puVar47 + -0x80) = 0;\n      *(int *)(puVar47 + -0x84) = *piVar32;\n      puVar31 = puVar16;\n      puVar20 = puVar9;\n      if (puVar9 < puVar22) {\n        puVar16[1] = 0;\n        puVar30 = (uint *)0x0;\n      }\n      else {\n        puVar30 = puVar22;\n        if ((uint *)((int)puVar9 - (int)puVar22) <= puVar22) {\n          puVar30 = (uint *)((int)puVar9 - (int)puVar22);\n        }\n        puVar22 = puVar30;\n        puVar36 = puVar9;\n        if (puVar30 < (uint *)0x2) {\n          if (puVar30 == (uint *)0x0) {\n            puVar36 = (uint *)0x1;\n          }\n          *(uint **)puVar16[2] = puVar36;\n          puVar16[1] = 1;\n          puVar49 = puVar46 + -0x90;\n        }\n        else if (puVar9 < (uint *)0x23) {\n          puVar13 = (undefined1 *)((int)puVar30 + -2);\n          iVar6 = *(int *)(pcVar51 + 0x7aa7c);\n          puVar20 = (uint *)puVar16[2];\n          uVar18 = (int)puVar9 - (int)puVar30;\n          puVar36 = (uint *)(iVar6 + ((uint)puVar9 >> 1));\n          puVar30 = (uint *)(iVar6 + ((uint)puVar30 >> 1));\n          bVar2 = *(byte *)((int)puVar30 + -1);\n          puVar31 = (uint *)(uint)*(byte *)(iVar6 + (uVar18 >> 1) + -1);\n          *puVar20 = *(int *)((int)puVar13 * 4 + *(int *)(pcVar51 + 0x7a8c8) + 0x35b4) *\n                     *(int *)(*(int *)(pcVar51 + 0x7ad64) + (int)puVar9 * 4) *\n                     *(int *)((uVar18 - 2) * 4 + *(int *)(pcVar51 + 0x7a8c8) + 0x35b4) <<\n                     (((uint)*(byte *)((int)puVar36 + -1) - (int)(uint)bVar2) - (int)puVar31 & 0x1f)\n          ;\n          puVar16[1] = 1;\n          puVar22 = (uint *)(uint)bVar2;\n          puVar49 = puVar46 + -0x90;\n        }\n        else if (puVar30 < &DAT_00000011) {\n          FUN_000216e8();\n          pcVar44 = *(code **)(puVar47 + -0xf0);\n          puVar49 = puVar46 + -0x90;\n        }\n        else if (puVar30 < &DAT_00000021) {\n          uVar18 = (uint)puVar30 >> 1;\n          uVar37 = (int)puVar9 - uVar18;\n          FUN_000216e8();\n          iVar6 = *(int *)(puVar47 + -0xf0);\n          uVar7 = (int)puVar30 - uVar18;\n          if (uVar37 < 0x23) {\n            puVar50 = (undefined1 *)puVar16[1];\n            if ((int)puVar50 < (int)*puVar16) {\n              puVar8 = (uint *)puVar16[2];\n            }\n            else {\n              puVar8 = (uint *)(**(code **)(iVar6 + -0x7a80))(puVar16,puVar50 + 1);\n              iVar6 = *(int *)(puVar47 + -0xf0);\n            }\n            iVar29 = *(int *)(iVar6 + -0x7e20);\n            iVar24 = *(int *)(iVar6 + -0x7fd4) + 0x35b4;\n            uVar37 = (**(code **)(iVar6 + -0x7f9c))\n                               (puVar8,puVar8,puVar50,\n                                *(int *)((((int)puVar9 - (int)puVar30) - 2U) * 4 + iVar24) *\n                                *(int *)(*(int *)(iVar6 + -0x7b38) + uVar37 * 4) *\n                                *(int *)((uVar7 - 2) * 4 + iVar24) <<\n                                (((uint)*(byte *)(iVar29 + (uVar37 >> 1) + -1) -\n                                 (uint)*(byte *)(iVar29 + (uVar7 >> 1) + -1)) -\n                                 (uint)*(byte *)(iVar29 + ((uint)((int)puVar9 - (int)puVar30) >> 1)\n                                                + -1) & 0x1f));\n            iVar6 = *(int *)(puVar47 + -0xf0);\n            puVar30 = (uint *)(puVar50 + (uVar37 != 0));\n            puVar8[(int)puVar50] = uVar37;\n          }\n          else {\n            *(undefined4 *)(puVar47 + -0xe4) = 0x15;\n            *(undefined1 **)(puVar47 + -0xdc) = puVar47 + -0xd8;\n            FUN_000216e8(puVar47 + -0xe4,uVar37,uVar7);\n            (**(code **)(*(int *)(puVar47 + -0xf0) + -0x7ba8))(puVar16,puVar16,puVar47 + -0xe4);\n            iVar6 = *(int *)(puVar47 + -0xf0);\n            puVar8 = (uint *)puVar16[2];\n            puVar30 = (uint *)puVar16[1];\n          }\n          pcVar51 = *(code **)(iVar6 + -0x7bb4);\n          puVar38 = (uint *)((uint)*(byte *)((uVar7 - 8) + *(int *)(iVar6 + -0x7fd4) + 0x3550) -\n                            (uint)(uVar18 != uVar7));\n          *(undefined4 *)(puVar47 + -0xf8) =\n               *(undefined4 *)((uVar7 - 8) * 4 + *(int *)(iVar6 + -0x7fd4) + 0x355c);\n          *(uint **)(puVar47 + -0xf4) = puVar38;\n          puVar31 = puVar8;\n          puVar20 = puVar8;\n          puVar22 = puVar30;\n          (*pcVar51)();\n          pcVar44 = *(code **)(puVar47 + -0xf0);\n          if (puVar8[(int)((int)puVar30 + -1)] == 0) {\n            puVar9 = puVar8 + (int)puVar30;\n            do {\n              puVar1 = puVar9 + -2;\n              puVar30 = (uint *)((int)puVar30 + -1);\n              puVar9 = puVar9 + -1;\n            } while (*puVar1 == 0);\n          }\n          puVar16[1] = (uint)puVar30;\n          puVar49 = puVar50;\n        }\n        else if ((puVar30 < (uint *)0x3e8) || (puVar30 <= (uint *)((uint)puVar9 >> 4))) {\n          FUN_0002209c();\n          pcVar44 = *(code **)(puVar47 + -0xf0);\n          puVar49 = puVar46 + -0x90;\n        }\n        else {\n          FUN_000219dc();\n          pcVar44 = *(code **)(puVar47 + -0xf0);\n          puVar49 = puVar46 + -0x90;\n        }\n      }\n      if (*(int *)(puVar47 + -0x84) == *piVar32) {\n        return *piVar32;\n      }\n      pcVar51 = *(code **)(pcVar44 + -0x7b70);\n      uVar10 = 0x22b64;\n      (*pcVar51)();\n      pcVar44 = pcVar51 + 0x824d0;\n      puVar48 = puVar47 + -0x160;\n      *(uint **)(puVar47 + -0x118) = puVar16;\n      *(uint **)(puVar47 + -0x124) = puVar30;\n      piVar34 = *(int **)(pcVar51 + 0x7a9d0);\n      uVar18 = puVar22[1];\n      *(undefined1 **)(puVar47 + -0x110) = puVar49;\n      *(uint **)(puVar47 + -0x114) = puVar36;\n      *(int **)(puVar47 + -0x11c) = piVar32;\n      *(uint **)(puVar47 + -0x120) = puVar8;\n      *(undefined4 *)(puVar47 + -0x10c) = uVar10;\n      *(code **)(puVar47 + -0x150) = pcVar44;\n      *(undefined4 *)(puVar47 + -0x13c) = 0;\n      puVar8 = (uint *)puVar20[1];\n      *(int *)(puVar47 + -300) = *piVar34;\n      if ((int)uVar18 < 0) {\n        uVar37 = uVar18 * -4;\n        *(uint *)(puVar47 + -0x138) = -uVar18;\n        if (0x7f00 < uVar37) {\n          pcVar51 = *(code **)(pcVar51 + 0x7a780);\n          goto LAB_00022c88;\n        }\nLAB_00022be4:\n        iVar6 = -(uVar37 + 7 & 0xfffffff8);\n        puVar48 = puVar47 + iVar6 + -0x160;\n        puVar13 = puVar47 + iVar6 + -0x150;\n      }\n      else {\n        uVar37 = uVar18 * 4;\n        *(uint *)(puVar47 + -0x138) = uVar18;\n        pcVar51 = *(code **)(pcVar51 + 0x7a780);\n        if (uVar37 < 0x7f01) goto LAB_00022be4;\nLAB_00022c88:\n        *(uint **)(puVar47 + -0x144) = puVar22;\n        puVar13 = (undefined1 *)(*pcVar51)(puVar47 + -0x13c,uVar37);\n        pcVar44 = *(code **)(puVar47 + -0x150);\n        puVar22 = *(uint **)(puVar47 + -0x144);\n      }\n      pcVar51 = *(code **)(pcVar44 + -0x7a68);\n      puVar36 = (uint *)(puVar47 + -0x138);\n      *(undefined1 **)(puVar47 + -0x130) = puVar13;\n      puVar9 = puVar20;\n      (*pcVar51)(puVar31,puVar36,puVar20,puVar22);\n      iVar6 = *(int *)(puVar47 + -0x150);\n      if (((int)((uint)puVar8 ^ uVar18) < 0) || (*(int *)(puVar47 + -0x134) == 0)) {\n        piVar32 = *(int **)(puVar47 + -0x13c);\n        pcVar51 = *(code **)(iVar6 + -0x7a28);\n        if (piVar32 != (int *)0x0) goto LAB_00022cc0;\n      }\n      else {\n        puVar9 = (uint *)0x1;\n        puVar36 = puVar31;\n        (**(code **)(iVar6 + -0x7c9c))(puVar31);\n        piVar32 = *(int **)(puVar47 + -0x13c);\n        iVar6 = *(int *)(puVar47 + -0x150);\n        if (piVar32 != (int *)0x0) {\n          pcVar51 = *(code **)(iVar6 + -0x7a28);\nLAB_00022cc0:\n          (*pcVar51)();\n          iVar6 = *(int *)(puVar47 + -0x150);\n        }\n      }\n      if (*(int *)(puVar47 + -300) == *piVar34) {\n        return *piVar34;\n      }\n      pcVar51 = *(code **)(iVar6 + -0x7b70);\n      uVar10 = 0x22cdc;\n      (*pcVar51)();\n      pcVar44 = pcVar51 + 0x82360;\n      *(code **)(puVar48 + -0x28) = pcVar44;\n      *(undefined4 *)(puVar48 + -4) = uVar10;\n      *(uint **)(puVar48 + -8) = puVar38;\n      *(uint **)(puVar48 + -0xc) = puVar20;\n      *(int **)(puVar48 + -0x10) = piVar34;\n      *(uint **)(puVar48 + -0x14) = puVar31;\n      *(uint **)(puVar48 + -0x18) = puVar8;\n      *(uint *)(puVar48 + -0x1c) = (uint)puVar8 ^ uVar18;\n      if (puVar9 == (uint *)0x0) {\n        pcVar51 = *(code **)(pcVar51 + 0x7a900);\n        (*pcVar51)();\nLAB_00022e2c:\n        piVar32 = (int *)(*pcVar51)(piVar34,puVar31);\n        pcVar44 = *(code **)(puVar48 + -0x28);\n      }\n      else {\n        puVar8 = (uint *)puVar36[1];\n        if (puVar8 == (uint *)0x0) {\n          piVar32[1] = 0;\n          return 0;\n        }\n        puVar31 = puVar8;\n        if ((int)puVar8 < 0) {\n          puVar31 = (uint *)-(int)puVar8;\n        }\n        pcVar51 = *(code **)(pcVar51 + 0x7a8e0);\n        piVar34 = piVar32;\n        puVar20 = puVar9;\n        puVar38 = puVar36;\n        if (*piVar32 < (int)puVar31) goto LAB_00022e2c;\n        piVar32 = (int *)piVar32[2];\n      }\n      pcVar51 = *(code **)(pcVar44 + -0x7d98);\n      uVar18 = puVar38[2];\n      *(uint **)(puVar48 + -0x30) = puVar20;\n      iVar6 = (*pcVar51)(piVar32,0,uVar18,puVar31);\n      piVar17 = piVar32 + (int)puVar31 + -1;\n      if (iVar6 == 0) {\n        uVar18 = (uint)(*piVar17 == 0);\n        if (-1 < (int)puVar8) {\n          iVar24 = (int)puVar31 - uVar18;\n          goto LAB_00022d9c;\n        }\n      }\n      else {\n        if (-1 < (int)puVar8) {\n          do {\n            iVar24 = *piVar32;\n            *piVar32 = iVar24 + 1;\n            piVar32 = piVar32 + 1;\n          } while (iVar24 + 1 == 0);\n          iVar6 = (int)puVar20 - iVar6;\n          iVar24 = (int)puVar31 - (uint)(*piVar17 == 0);\n          goto LAB_00022d9c;\n        }\n        uVar18 = (uint)(*piVar17 == 0);\n      }\n      iVar24 = uVar18 - (int)puVar31;\nLAB_00022d9c:\n      piVar34[1] = iVar24;\n      return iVar6;\n    }\n    *(int *)(puVar46 + -0x44) = iVar39;\n    iVar6 = iVar39 + uVar7;\n    uVar18 = (**(code **)(*(int *)(puVar46 + -0x34) + (uVar7 - 1) * 4))(iVar39);\n    puVar43 = *(undefined **)(puVar46 + -0x78);\n    if ((uVar18 & 0xff) == 0) {\n      uVar37 = uVar18 >> 8;\n      iVar24 = 6;\n      if ((uVar37 & 0xff) == 0) {\n        uVar37 = uVar18 >> 0x10;\n        iVar24 = 0xe;\n        if ((uVar37 & 0xff) == 0) {\n          uVar37 = uVar18 >> 0x18;\n          iVar24 = 0x1e;\n          if (uVar37 != 0) {\n            iVar24 = 0x16;\n          }\n        }\n      }\n      uVar37 = (uint)*(byte *)(*(int *)(puVar46 + -0x3c) + (-uVar37 & uVar37)) + iVar24;\n    }\n    else {\n      uVar37 = *(byte *)(*(int *)(puVar46 + -0x3c) + (-uVar18 & uVar18)) - 2;\n    }\n    iVar39 = *(int *)(puVar46 + -0x38);\n    *puVar36 = uVar18 >> (uVar37 & 0x1f);\n    iVar24 = *(int *)(puVar46 + -0x60);\n    *(uint *)(puVar46 + -0x40) =\n         *(int *)(puVar46 + -0x40) + *(byte *)(iVar39 + (uVar7 - 1)) + uVar37;\n    if ((uint)(iVar24 - iVar6) <= uVar7) {\n      uVar7 = iVar24 - iVar6;\n    }\n    iVar39 = iVar6;\n    if (uVar7 != 0) goto LAB_00022234;\nLAB_00022534:\n    puVar31 = (uint *)0x1;\n    *(uint **)(puVar46 + -0x4c) = puVar36;\n  } while( true );\n}" primitive_type (function_declarator "FUN_000219dc(int param_1,uint param_2,uint param_3)" identifier (parameter_list "(int param_1,uint param_2,uint param_3)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "uint param_2" type_identifier identifier) , (parameter_declaration "uint param_3" type_identifier identifier) ))) (compound_statement "{\n  uint *puVar1;\n  byte bVar2;\n  bool bVar3;\n  bool bVar4;\n  undefined *puVar5;\n  int iVar6;\n  uint uVar7;\n  uint *puVar8;\n  uint *puVar9;\n  undefined4 uVar10;\n  uint uVar11;\n  uint uVar12;\n  undefined1 *puVar13;\n  undefined *puVar14;\n  undefined4 *puVar15;\n  uint *puVar16;\n  int *piVar17;\n  uint uVar18;\n  undefined4 *puVar19;\n  uint *puVar20;\n  uint uVar21;\n  uint *puVar22;\n  uint uVar23;\n  int iVar24;\n  uint uVar25;\n  uint uVar26;\n  uint uVar27;\n  uint uVar28;\n  int iVar29;\n  uint *puVar30;\n  uint *puVar31;\n  int *piVar32;\n  int iVar33;\n  int *piVar34;\n  uint uVar35;\n  uint *puVar36;\n  uint uVar37;\n  uint *puVar38;\n  int iVar39;\n  uint uVar40;\n  int iVar41;\n  uint uVar42;\n  undefined *puVar43;\n  code *pcVar44;\n  undefined1 *puVar45;\n  undefined1 *puVar46;\n  undefined1 *puVar47;\n  undefined1 *puVar48;\n  undefined1 *puVar49;\n  undefined1 *puVar50;\n  code *pcVar51;\n  code *pcVar52;\n  uint uVar53;\n  uint uVar54;\n  undefined1 auStack_48 [16];\n  int local_30;\n  int local_2c;\n  \n  puVar5 = PTR___stack_chk_guard_0009d540;\n  puVar45 = auStack_48;\n  uVar37 = param_2 - 5 | 1;\n  local_30 = 0;\n  local_2c = *(int *)PTR___stack_chk_guard_0009d540;\n  uVar18 = (uVar37 / 0x60 + 1) * 4;\n  if (uVar18 < 0x7f01) {\n    iVar6 = -(uVar18 + 7 & 0xfffffff8);\n    puVar45 = auStack_48 + iVar6;\n    puVar13 = &stack0xffffffc8 + iVar6;\n  }\n  else {\n    puVar13 = (undefined1 *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&local_30);\n  }\n  iVar6 = (*(code *)PTR___gmp_primesieve_0009d144)(puVar13,param_2);\n  uVar7 = iVar6 + 1;\n  puVar8 = (uint *)(PTR___gmp_limbroots_table_0009d3d4 + 0x1c);\n  uVar18 = 8;\n  do {\n    uVar23 = uVar18;\n    uVar11 = *puVar8;\n    puVar8 = puVar8 + -1;\n    uVar18 = uVar23 - 1;\n  } while (uVar11 < param_2);\n  if (uVar23 == 0) {\n    trap(7);\n  }\n  puVar8 = (uint *)(PTR___gmp_limbroots_table_0009d3d4 + 0x1c);\n  uVar18 = 8;\n  if ((uVar7 / uVar23 + 1) * 4 < 0x7f01) {\n    do {\n      uVar23 = uVar18;\n      uVar11 = *puVar8;\n      puVar8 = puVar8 + -1;\n      uVar18 = uVar23 - 1;\n    } while (uVar11 < param_2);\n    if (uVar23 == 0) {\n      trap(7);\n    }\n    iVar6 = -((uVar7 / uVar23) * 4 + 0xb & 0xfffffff8);\n    puVar46 = puVar45 + iVar6;\n    puVar8 = (uint *)(puVar45 + iVar6 + 0x10);\n  }\n  else {\n    for (puVar14 = PTR___gmp_limbroots_table_0009d3d4 + 0x18; *(uint *)(puVar14 + 4) < param_2;\n        puVar14 = puVar14 + -4) {\n      uVar18 = uVar18 - 1;\n    }\n    if (uVar18 == 0) {\n      trap(7);\n    }\n    puVar8 = (uint *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)\n                               (&local_30,(uVar7 / uVar18 + 1) * 4);\n    puVar46 = puVar45;\n  }\n  uVar18 = param_2 - param_3;\n  if (param_2 == 0) {\n    trap(7);\n  }\n  uVar53 = 0xffffffff / param_2;\n  uVar40 = param_2 >> 1;\n  uVar11 = uVar18 - (uVar18 >> 1 & 0x55555555);\n  uVar23 = param_2 - (uVar40 & 0x55555555);\n  uVar7 = param_3 - (param_3 >> 1 & 0x55555555);\n  uVar26 = (uVar11 >> 2 & 0x33333333) + (uVar11 & 0x33333333);\n  uVar23 = (uVar23 >> 2 & 0x33333333) + (uVar23 & 0x33333333);\n  uVar11 = (uVar7 >> 2 & 0x33333333) + (uVar7 & 0x33333333);\n  uVar7 = (uVar26 >> 4) + uVar26 & 0xf0f0f0f;\n  uVar23 = (uVar23 >> 4) + uVar23 & 0xf0f0f0f;\n  uVar7 = (uVar7 >> 8) + uVar7;\n  uVar11 = (uVar11 >> 4) + uVar11 & 0xf0f0f0f;\n  uVar23 = (uVar23 >> 8) + uVar23;\n  uVar11 = (uVar11 >> 8) + uVar11;\n  uVar7 = 1 << ((uVar11 >> 0x10) + uVar11 +\n                (((uVar7 >> 0x10) + uVar7 & 0xff) - ((uVar23 >> 0x10) + uVar23 & 0xff)) & 0x1f);\n  bVar3 = uVar53 < uVar7;\n  if (bVar3) {\n    *puVar8 = uVar7;\n    uVar7 = 1;\n  }\n  uVar11 = 0;\n  uVar23 = param_2;\n  uVar26 = param_3;\n  do {\n    bVar4 = uVar23 % 3 < uVar26 % 3 + uVar11;\n    if (bVar4) {\n      uVar7 = uVar7 * 3;\n    }\n    uVar11 = (uint)bVar4;\n    bVar4 = 8 < uVar23;\n    uVar23 = uVar23 / 3;\n    uVar26 = uVar26 / 3;\n  } while (bVar4);\n  uVar11 = param_2 - 1;\n  if (uVar11 < 0x10000) {\n    iVar6 = 0x18;\n    if (uVar11 < 0x100) {\n      iVar6 = 0x20;\n    }\n    iVar24 = 9;\n    if (uVar11 < 0x100) {\n      iVar24 = 1;\n    }\n  }\n  else {\n    iVar6 = 8;\n    if (uVar11 < 0x1000000) {\n      iVar6 = 0x10;\n    }\n    iVar24 = 0x19;\n    if (uVar11 < 0x1000000) {\n      iVar24 = 0x11;\n    }\n  }\n  iVar29 = 0;\n  uVar28 = 1;\n  uVar42 = (((1 << ((int)(0x1f - (iVar6 - (uint)(byte)PTR___gmpn_clz_tab_0009d18c[uVar11 >> iVar24])\n                         ) >> 1 & 0x1fU)) +\n            (1 << ((int)(0x1e - (iVar6 - (uint)(byte)PTR___gmpn_clz_tab_0009d18c[uVar11 >> iVar24]))\n                   >> 1 & 0x1fU))) - 5U | 1) / 3;\n  uVar26 = uVar42 + 1;\n  uVar11 = (uint)bVar3;\n  uVar23 = 0;\n  do {\n    uVar35 = uVar23 + 1;\n    uVar21 = uVar11;\n    if ((uVar28 & *(uint *)(puVar13 + iVar29 * 4)) == 0) {\n      uVar12 = (uVar35 & 1) + 1 + uVar35 * 3;\n      if (uVar53 < uVar7) {\n        uVar21 = uVar11 + 1;\n        puVar8[uVar11] = uVar7;\n        uVar7 = 1;\n      }\n      uVar27 = 0;\n      uVar11 = param_3;\n      uVar25 = param_2;\n      do {\n        if (uVar12 == 0) {\n          trap(7);\n        }\n        if (uVar12 == 0) {\n          trap(7);\n        }\n        uVar54 = uVar25 / uVar12;\n        bVar3 = uVar25 % uVar12 < uVar11 % uVar12 + uVar27;\n        if (bVar3) {\n          uVar7 = uVar7 * uVar12;\n        }\n        uVar27 = (uint)bVar3;\n        uVar11 = uVar11 / uVar12;\n        uVar25 = uVar54;\n      } while (uVar12 <= uVar54);\n    }\n    uVar28 = uVar28 * 2 - ((int)uVar28 >> 0x1f);\n    bVar3 = uVar23 != uVar42;\n    iVar29 = iVar29 + (uVar28 & 1);\n    uVar11 = uVar21;\n    uVar23 = uVar35;\n  } while (bVar3);\n  uVar23 = uVar26 >> 5;\n  uVar11 = 1 << (uVar26 & 0x1f);\n  uVar28 = (uVar40 - 5 | 1) / 3;\n  do {\n    while( true ) {\n      uVar26 = uVar26 + 1;\n      uVar42 = uVar21;\n      if ((uVar11 & *(uint *)(puVar13 + uVar23 * 4)) == 0) break;\nLAB_00021e80:\n      uVar11 = uVar11 * 2 - ((int)uVar11 >> 0x1f);\n      uVar23 = uVar23 + (uVar11 & 1);\n      uVar21 = uVar42;\n      if (uVar28 < uVar26) goto LAB_00021f04;\n    }\n    uVar12 = (uVar26 & 1) + 1 + uVar26 * 3;\n    if (uVar12 == 0) {\n      trap(7);\n    }\n    if (uVar12 == 0) {\n      trap(7);\n    }\n    if (param_3 % uVar12 <= param_2 % uVar12) goto LAB_00021e80;\n    if (uVar53 << 1 < uVar7) {\n      uVar42 = uVar21 + 1;\n      puVar8[uVar21] = uVar7;\n      uVar7 = uVar12;\n      goto LAB_00021e80;\n    }\n    uVar11 = uVar11 * 2 - ((int)uVar11 >> 0x1f);\n    uVar7 = uVar7 * uVar12;\n    uVar23 = uVar23 + (uVar11 & 1);\n  } while (uVar26 <= uVar28);\nLAB_00021f04:\n  uVar18 = (uVar18 - 5 | 1) / 3 + 1;\n  uVar23 = uVar18 >> 5;\n  uVar37 = uVar37 / 3;\n  uVar11 = 1 << (uVar18 & 0x1f);\n  do {\n    while( true ) {\n      uVar18 = uVar18 + 1;\n      uVar26 = uVar42;\n      if ((uVar11 & *(uint *)(puVar13 + uVar23 * 4)) == 0) break;\nLAB_00021f58:\n      uVar11 = uVar11 * 2 - ((int)uVar11 >> 0x1f);\n      uVar23 = uVar23 + (uVar11 & 1);\n      uVar42 = uVar26;\n      if (uVar37 < uVar18) goto LAB_00021fb8;\n    }\n    uVar28 = (uVar18 & 1) + 1 + uVar18 * 3;\n    if ((uVar53 & 0x7fffffff) < uVar7) {\n      uVar26 = uVar42 + 1;\n      puVar8[uVar42] = uVar7;\n      uVar7 = uVar28;\n      goto LAB_00021f58;\n    }\n    uVar11 = uVar11 * 2 - ((int)uVar11 >> 0x1f);\n    uVar7 = uVar7 * uVar28;\n    uVar23 = uVar23 + (uVar11 & 1);\n  } while (uVar18 <= uVar37);\nLAB_00021fb8:\n  if (uVar26 == 0) {\n    **(uint **)(param_1 + 8) = uVar7;\n    *(undefined4 *)(param_1 + 4) = 1;\n    uVar18 = 0;\n    iVar6 = local_30;\n  }\n  else {\n    uVar18 = uVar26 + 1;\n    puVar8[uVar26] = uVar7;\n    (*(code *)PTR___gmpz_prodlimbs_0009d284)(param_1);\n    iVar6 = local_30;\n  }\n  local_30 = iVar6;\n  if (iVar6 != 0) {\n    (*(code *)PTR___gmp_tmp_reentrant_free_0009d618)();\n  }\n  iVar24 = *(int *)puVar5;\n  if (local_2c == iVar24) {\n    return iVar24;\n  }\n  pcVar51 = FUN_0002209c;\n  puVar14 = PTR___stack_chk_fail_0009d4d0;\n  (*(code *)PTR___stack_chk_fail_0009d4d0)();\n  puVar43 = puVar14 + 0x82fa4;\n  puVar47 = puVar46 + -0x90;\n  puVar50 = puVar46 + -0x90;\n  puVar49 = puVar46 + -0x90;\n  *(int *)(puVar46 + -0x24) = param_1;\n  *(undefined1 **)(puVar46 + -8) = auStack_48;\n  puVar19 = *(undefined4 **)(puVar14 + 0x7b4a4);\n  *(code **)(puVar46 + -4) = pcVar51;\n  *(int *)(puVar46 + -0x6c) = iVar6;\n  *(uint *)(puVar46 + -0xc) = uVar40;\n  *(uint *)(puVar46 + -0x10) = param_3;\n  *(uint *)(puVar46 + -0x14) = uVar37;\n  uVar37 = (((uint)puVar8 >> 5) + 1) * 3;\n  *(uint *)(puVar46 + -0x18) = uVar35;\n  *(undefined1 **)(puVar46 + -0x1c) = puVar13;\n  *(uint *)(puVar46 + -0x20) = param_2;\n  *(undefined **)(puVar46 + -0x28) = puVar5;\n  *(undefined **)(puVar46 + -0x78) = puVar43;\n  *(undefined4 **)(puVar46 + -0x70) = puVar19;\n  *(undefined4 *)(puVar46 + -0x30) = 0;\n  *(undefined4 *)(puVar46 + -0x2c) = *puVar19;\n  if (uVar37 < 0x2a) {\n    uVar37 = 0x27;\n    if (uVar18 < 0x28) {\n      uVar37 = uVar18;\n    }\n    uVar37 = (uVar37 + 1) * 4;\n  }\n  else {\n    uVar37 = ((int)uVar37 >> 1) + 0x13;\n    if (uVar18 < uVar37) {\n      uVar37 = uVar18;\n    }\n    uVar37 = (uVar37 + 1) * 4;\n    pcVar51 = *(code **)(puVar14 + 0x7b254);\n    if (0x7f00 < uVar37) {\n      *(uint *)(puVar46 + 8) = uVar18;\n      puVar38 = (uint *)(*pcVar51)(puVar46 + -0x30);\n      puVar43 = *(undefined **)(puVar46 + -0x78);\n      uVar18 = *(uint *)(puVar46 + 8);\n      goto LAB_0002214c;\n    }\n  }\n  iVar6 = -(uVar37 + 7 & 0xfffffff8);\n  puVar47 = puVar46 + iVar6 + -0x90;\n  puVar38 = (uint *)(puVar46 + iVar6 + -0x78);\nLAB_0002214c:\n  iVar24 = *(int *)(puVar43 + -0x7c6c);\n  puVar36 = (uint *)(puVar47 + -0x40);\n  puVar31 = (uint *)(iVar24 + 0x1c);\n  iVar6 = 8;\n  do {\n    iVar29 = iVar6;\n    puVar9 = (uint *)*puVar31;\n    puVar31 = puVar31 + -1;\n    iVar6 = iVar29 + -1;\n  } while (puVar9 < puVar8);\n  *(int *)(puVar46 + -0x68) = iVar29;\n  puVar31 = (uint *)(iVar24 + 0x1c);\n  uVar37 = 8;\n  do {\n    uVar7 = uVar37;\n    uVar11 = *puVar31;\n    puVar31 = puVar31 + -1;\n    uVar37 = uVar7 - 1;\n  } while (uVar11 < uVar18);\n  uVar10 = *(undefined4 *)(puVar43 + -0x7d3c);\n  iVar6 = 0x11;\n  *(undefined4 *)(puVar46 + -0x48) = 0;\n  *(undefined4 *)(puVar46 + -100) = uVar10;\n  iVar24 = *(int *)(puVar43 + -0x7e20);\n  *(undefined4 *)(puVar46 + -0x5c) = 0x3fffffff;\n  iVar29 = (int)puVar8 + (1 - uVar18);\n  *(uint *)(puVar46 + -0x40) = (uint)*(byte *)(iVar24 + 7);\n  *(undefined4 *)(puVar46 + -0x3c) = *(undefined4 *)(puVar43 + -0x7eb4);\n  *(uint *)(puVar46 + -0x60) = uVar18 + 1;\n  iVar24 = *(int *)(puVar46 + -0x60);\n  *puVar38 = 1;\n  *(undefined4 *)(puVar46 + -0x44) = 1;\n  *(int *)(puVar46 + -0x34) = *(int *)(puVar43 + -0x7fe4) + -0x31a4;\n  *(int *)(puVar46 + -0x38) = *(int *)(puVar43 + -0x7fd4) + 0x3630;\n  *puVar36 = 0x260eeeeb;\n  if (iVar24 - 0x11U <= uVar7) {\n    uVar7 = iVar24 - 0x11U;\n  }\n  puVar8 = (uint *)0x1;\n  iVar39 = iVar6;\n  if (uVar7 == 0) goto LAB_00022534;\nLAB_00022234:\n  puVar31 = (uint *)0x1;\n  iVar41 = *(int *)(puVar46 + -0x40);\n  *(uint **)(puVar46 + -0x4c) = puVar8;\n  *(uint **)(puVar46 + -0x50) = puVar38;\n  do {\n    iVar39 = iVar6 + uVar7;\n    uVar18 = (**(code **)(*(int *)(puVar46 + -0x34) + (uVar7 - 1) * 4))(iVar6);\n    if ((uVar18 & 0xff) == 0) {\n      uVar37 = uVar18 >> 8;\n      iVar6 = 6;\n      if ((uVar37 & 0xff) == 0) {\n        uVar37 = uVar18 >> 0x10;\n        iVar6 = 0xe;\n        if ((uVar37 & 0xff) == 0) {\n          uVar37 = uVar18 >> 0x18;\n          iVar6 = 0x1e;\n          if (uVar37 != 0) {\n            iVar6 = 0x16;\n          }\n        }\n      }\n      uVar37 = (uint)*(byte *)(*(int *)(puVar46 + -0x3c) + (-uVar37 & uVar37)) + iVar6;\n    }\n    else {\n      uVar37 = *(byte *)(*(int *)(puVar46 + -0x3c) + (-uVar18 & uVar18)) - 2;\n    }\n    iVar41 = iVar41 + *(byte *)(*(int *)(puVar46 + -0x38) + (uVar7 - 1)) + uVar37;\n    uVar18 = (**(code **)(*(int *)(puVar46 + -0x78) + -0x7f9c))\n                       (puVar36,puVar36,puVar31,uVar18 >> (uVar37 & 0x1f));\n    puVar43 = *(undefined **)(puVar46 + -0x78);\n    if ((uint)(iVar24 - iVar39) <= uVar7) {\n      uVar7 = iVar24 - iVar39;\n    }\n    puVar8 = puVar36 + (int)puVar31;\n    puVar31 = (uint *)((int)puVar31 + (uint)(uVar18 != 0));\n    *puVar8 = uVar18;\n    if (uVar7 == 0) {\n      puVar38 = *(uint **)(puVar46 + -0x50);\n      puVar8 = *(uint **)(puVar46 + -0x4c);\n      *(int *)(puVar46 + -0x40) = iVar41;\n      *(uint **)(puVar46 + -0x4c) = puVar36 + (int)((int)puVar31 + *(int *)(puVar46 + -0x5c));\n      goto LAB_00022340;\n    }\n    iVar6 = iVar39;\n  } while (puVar31 != (uint *)0x14);\n  puVar8 = *(uint **)(puVar46 + -0x4c);\n  puVar38 = *(uint **)(puVar46 + -0x50);\n  *(int *)(puVar46 + -0x40) = iVar41;\n  *(uint **)(puVar46 + -0x4c) = puVar36 + 0x13;\nLAB_00022340:\n  do {\n    iVar41 = iVar39 - *(int *)(puVar46 + -0x44);\n    iVar24 = *(int *)(puVar46 + -0x5c);\n    iVar6 = iVar41;\n    if (iVar41 != 0) {\n      *(uint *)(puVar46 + -0x44) = uVar7;\n      *(uint **)(puVar46 + -0x50) = puVar31;\n      *(uint **)(puVar46 + -0x54) = puVar36;\n      *(int *)(puVar46 + -0x58) = iVar39;\n      iVar6 = *(int *)(puVar46 + -0x48);\n      iVar39 = *(int *)(puVar46 + -0x68);\n      iVar24 = iVar29;\n      do {\n        iVar33 = iVar41;\n        if (iVar39 <= iVar41) {\n          iVar33 = iVar39;\n        }\n        iVar29 = iVar24 + iVar33;\n        uVar18 = (**(code **)(*(int *)(puVar46 + -0x34) + (iVar33 + -1) * 4))(iVar24);\n        if ((uVar18 & 0xff) == 0) {\n          uVar37 = uVar18 >> 8;\n          iVar24 = 6;\n          if ((uVar37 & 0xff) == 0) {\n            uVar37 = uVar18 >> 0x10;\n            iVar24 = 0xe;\n            if ((uVar37 & 0xff) == 0) {\n              uVar37 = uVar18 >> 0x18;\n              iVar24 = 0x16;\n              if (uVar37 == 0) {\n                iVar24 = 0x1e;\n              }\n            }\n          }\n          uVar37 = (uint)*(byte *)(*(int *)(puVar46 + -0x3c) + (-uVar37 & uVar37)) + iVar24;\n        }\n        else {\n          uVar37 = *(byte *)(*(int *)(puVar46 + -0x3c) + (-uVar18 & uVar18)) - 2;\n        }\n        iVar41 = iVar41 - iVar33;\n        iVar6 = iVar6 + *(byte *)(*(int *)(puVar46 + -0x38) + iVar33 + -1) + uVar37;\n        uVar18 = (**(code **)(*(int *)(puVar46 + -0x78) + -0x7f9c))\n                           (puVar38,puVar38,puVar8,uVar18 >> (uVar37 & 0x1f));\n        puVar43 = *(undefined **)(puVar46 + -0x78);\n        puVar31 = puVar38 + (int)puVar8;\n        puVar8 = (uint *)((int)puVar8 + (uint)(uVar18 != 0));\n        *puVar31 = uVar18;\n        iVar24 = iVar29;\n      } while (iVar41 != 0);\n      uVar7 = *(uint *)(puVar46 + -0x44);\n      puVar31 = *(uint **)(puVar46 + -0x50);\n      puVar36 = *(uint **)(puVar46 + -0x54);\n      iVar39 = *(int *)(puVar46 + -0x58);\n      *(int *)(puVar46 + -0x48) = iVar6;\n      iVar24 = *(int *)(puVar46 + -0x5c);\n    }\n    uVar37 = *puVar36;\n    pcVar51 = *(code **)(puVar43 + -0x7bc0);\n    uVar18 = (uint)*(byte *)(*(int *)(puVar46 + -100) + ((uVar37 << 0x18) >> 0x19));\n    puVar8 = (uint *)((int)puVar8 +\n                     ((puVar38[(int)((int)puVar8 + iVar24)] < **(uint **)(puVar46 + -0x4c) ^ 1) -\n                     (int)puVar31));\n    iVar24 = uVar18 * 2 - uVar18 * uVar18 * uVar37;\n    if ((int)puVar8 < (int)puVar31) {\n      puVar31 = puVar8;\n    }\n    *(uint **)(puVar47 + -0x48) = puVar31;\n    *(uint *)(puVar47 + -0x44) = iVar24 * iVar24 * uVar37 + iVar24 * -2;\n    puVar9 = puVar38;\n    puVar22 = puVar8;\n    (*pcVar51)(puVar38,puVar38,puVar8,puVar36);\n    iVar24 = *(int *)(puVar46 + -0x78);\n    if (uVar7 == 0) {\n      if (*(int *)(puVar46 + -0x48) == *(int *)(puVar46 + -0x40)) {\n        puVar8 = (uint *)((int)puVar8 - (uint)(puVar38[(int)((int)puVar8 + -1)] == 0));\n        pcVar51 = *(code **)(iVar24 + -0x7a80);\n        if ((int)puVar8 <= **(int **)(puVar46 + -0x6c)) goto LAB_00022600;\nLAB_00022734:\n        puVar9 = puVar8;\n        puVar19 = (undefined4 *)(*pcVar51)(*(undefined4 *)(puVar46 + -0x6c));\n        iVar24 = *(int *)(puVar46 + -0x78);\n      }\n      else {\n        puVar9 = puVar38;\n        puVar22 = puVar8;\n        uVar18 = (**(code **)(iVar24 + -0x7ad4))(puVar38);\n        iVar24 = *(int *)(puVar46 + -0x78);\n        puVar38[(int)puVar8] = uVar18;\n        puVar8 = (uint *)((int)puVar8 +\n                         ((uint)(uVar18 != 0) -\n                         (uint)(puVar38[(int)((int)puVar8 + ((uVar18 != 0) - 1))] == 0)));\n        pcVar51 = *(code **)(iVar24 + -0x7a80);\n        if (**(int **)(puVar46 + -0x6c) < (int)puVar8) goto LAB_00022734;\nLAB_00022600:\n        puVar19 = *(undefined4 **)(*(int *)(puVar46 + -0x6c) + 8);\n      }\n      *(uint **)(*(int *)(puVar46 + -0x6c) + 4) = puVar8;\n      if (puVar8 != (uint *)0x0) {\n        puVar13 = (undefined1 *)((int)puVar8 + -1);\n        puVar9 = (uint *)*puVar38;\n        if (puVar13 != (undefined1 *)0x0) {\n          puVar15 = puVar19;\n          puVar16 = puVar38 + 1;\n          do {\n            *puVar15 = puVar9;\n            puVar38 = puVar16 + 1;\n            puVar13 = puVar13 + -1;\n            puVar9 = (uint *)*puVar16;\n            puVar15 = puVar15 + 1;\n            puVar16 = puVar38;\n          } while (puVar13 != (undefined1 *)0x0);\n          puVar8 = (uint *)((int)puVar8 * 4);\n          puVar19 = (undefined4 *)((int)puVar19 + (int)(puVar8 + -1));\n        }\n        *puVar19 = puVar9;\n      }\n      puVar16 = *(uint **)(puVar46 + -0x30);\n      if (puVar16 != (uint *)0x0) {\n        (**(code **)(iVar24 + -0x7a28))();\n        iVar24 = *(int *)(puVar46 + -0x78);\n      }\n      if (*(int *)(puVar46 + -0x2c) == **(int **)(puVar46 + -0x70)) {\n        return **(int **)(puVar46 + -0x70);\n      }\n      pcVar51 = *(code **)(iVar24 + -0x7b70);\n      pcVar52 = __gmpz_bin_uiui;\n      (*pcVar51)();\n      pcVar44 = pcVar51 + 0x8289c;\n      *(uint **)(puVar47 + -0x78) = puVar31;\n      piVar32 = *(int **)(pcVar51 + 0x7ad9c);\n      *(code **)(puVar47 + -0xf0) = pcVar44;\n      *(int *)(puVar47 + -0x74) = iVar39;\n      *(code **)(puVar47 + -0x5c) = pcVar52;\n      *(undefined1 **)(puVar47 + -0x60) = puVar46 + -0x90;\n      *(int *)(puVar47 + -100) = iVar6;\n      *(int *)(puVar47 + -0x68) = iVar29;\n      *(uint **)(puVar47 + -0x6c) = puVar38;\n      *(uint **)(puVar47 + -0x70) = puVar36;\n      *(uint **)(puVar47 + -0x7c) = puVar8;\n      *(undefined4 *)(puVar47 + -0x80) = 0;\n      *(int *)(puVar47 + -0x84) = *piVar32;\n      puVar31 = puVar16;\n      puVar20 = puVar9;\n      if (puVar9 < puVar22) {\n        puVar16[1] = 0;\n        puVar30 = (uint *)0x0;\n      }\n      else {\n        puVar30 = puVar22;\n        if ((uint *)((int)puVar9 - (int)puVar22) <= puVar22) {\n          puVar30 = (uint *)((int)puVar9 - (int)puVar22);\n        }\n        puVar22 = puVar30;\n        puVar36 = puVar9;\n        if (puVar30 < (uint *)0x2) {\n          if (puVar30 == (uint *)0x0) {\n            puVar36 = (uint *)0x1;\n          }\n          *(uint **)puVar16[2] = puVar36;\n          puVar16[1] = 1;\n          puVar49 = puVar46 + -0x90;\n        }\n        else if (puVar9 < (uint *)0x23) {\n          puVar13 = (undefined1 *)((int)puVar30 + -2);\n          iVar6 = *(int *)(pcVar51 + 0x7aa7c);\n          puVar20 = (uint *)puVar16[2];\n          uVar18 = (int)puVar9 - (int)puVar30;\n          puVar36 = (uint *)(iVar6 + ((uint)puVar9 >> 1));\n          puVar30 = (uint *)(iVar6 + ((uint)puVar30 >> 1));\n          bVar2 = *(byte *)((int)puVar30 + -1);\n          puVar31 = (uint *)(uint)*(byte *)(iVar6 + (uVar18 >> 1) + -1);\n          *puVar20 = *(int *)((int)puVar13 * 4 + *(int *)(pcVar51 + 0x7a8c8) + 0x35b4) *\n                     *(int *)(*(int *)(pcVar51 + 0x7ad64) + (int)puVar9 * 4) *\n                     *(int *)((uVar18 - 2) * 4 + *(int *)(pcVar51 + 0x7a8c8) + 0x35b4) <<\n                     (((uint)*(byte *)((int)puVar36 + -1) - (int)(uint)bVar2) - (int)puVar31 & 0x1f)\n          ;\n          puVar16[1] = 1;\n          puVar22 = (uint *)(uint)bVar2;\n          puVar49 = puVar46 + -0x90;\n        }\n        else if (puVar30 < &DAT_00000011) {\n          FUN_000216e8();\n          pcVar44 = *(code **)(puVar47 + -0xf0);\n          puVar49 = puVar46 + -0x90;\n        }\n        else if (puVar30 < &DAT_00000021) {\n          uVar18 = (uint)puVar30 >> 1;\n          uVar37 = (int)puVar9 - uVar18;\n          FUN_000216e8();\n          iVar6 = *(int *)(puVar47 + -0xf0);\n          uVar7 = (int)puVar30 - uVar18;\n          if (uVar37 < 0x23) {\n            puVar50 = (undefined1 *)puVar16[1];\n            if ((int)puVar50 < (int)*puVar16) {\n              puVar8 = (uint *)puVar16[2];\n            }\n            else {\n              puVar8 = (uint *)(**(code **)(iVar6 + -0x7a80))(puVar16,puVar50 + 1);\n              iVar6 = *(int *)(puVar47 + -0xf0);\n            }\n            iVar29 = *(int *)(iVar6 + -0x7e20);\n            iVar24 = *(int *)(iVar6 + -0x7fd4) + 0x35b4;\n            uVar37 = (**(code **)(iVar6 + -0x7f9c))\n                               (puVar8,puVar8,puVar50,\n                                *(int *)((((int)puVar9 - (int)puVar30) - 2U) * 4 + iVar24) *\n                                *(int *)(*(int *)(iVar6 + -0x7b38) + uVar37 * 4) *\n                                *(int *)((uVar7 - 2) * 4 + iVar24) <<\n                                (((uint)*(byte *)(iVar29 + (uVar37 >> 1) + -1) -\n                                 (uint)*(byte *)(iVar29 + (uVar7 >> 1) + -1)) -\n                                 (uint)*(byte *)(iVar29 + ((uint)((int)puVar9 - (int)puVar30) >> 1)\n                                                + -1) & 0x1f));\n            iVar6 = *(int *)(puVar47 + -0xf0);\n            puVar30 = (uint *)(puVar50 + (uVar37 != 0));\n            puVar8[(int)puVar50] = uVar37;\n          }\n          else {\n            *(undefined4 *)(puVar47 + -0xe4) = 0x15;\n            *(undefined1 **)(puVar47 + -0xdc) = puVar47 + -0xd8;\n            FUN_000216e8(puVar47 + -0xe4,uVar37,uVar7);\n            (**(code **)(*(int *)(puVar47 + -0xf0) + -0x7ba8))(puVar16,puVar16,puVar47 + -0xe4);\n            iVar6 = *(int *)(puVar47 + -0xf0);\n            puVar8 = (uint *)puVar16[2];\n            puVar30 = (uint *)puVar16[1];\n          }\n          pcVar51 = *(code **)(iVar6 + -0x7bb4);\n          puVar38 = (uint *)((uint)*(byte *)((uVar7 - 8) + *(int *)(iVar6 + -0x7fd4) + 0x3550) -\n                            (uint)(uVar18 != uVar7));\n          *(undefined4 *)(puVar47 + -0xf8) =\n               *(undefined4 *)((uVar7 - 8) * 4 + *(int *)(iVar6 + -0x7fd4) + 0x355c);\n          *(uint **)(puVar47 + -0xf4) = puVar38;\n          puVar31 = puVar8;\n          puVar20 = puVar8;\n          puVar22 = puVar30;\n          (*pcVar51)();\n          pcVar44 = *(code **)(puVar47 + -0xf0);\n          if (puVar8[(int)((int)puVar30 + -1)] == 0) {\n            puVar9 = puVar8 + (int)puVar30;\n            do {\n              puVar1 = puVar9 + -2;\n              puVar30 = (uint *)((int)puVar30 + -1);\n              puVar9 = puVar9 + -1;\n            } while (*puVar1 == 0);\n          }\n          puVar16[1] = (uint)puVar30;\n          puVar49 = puVar50;\n        }\n        else if ((puVar30 < (uint *)0x3e8) || (puVar30 <= (uint *)((uint)puVar9 >> 4))) {\n          FUN_0002209c();\n          pcVar44 = *(code **)(puVar47 + -0xf0);\n          puVar49 = puVar46 + -0x90;\n        }\n        else {\n          FUN_000219dc();\n          pcVar44 = *(code **)(puVar47 + -0xf0);\n          puVar49 = puVar46 + -0x90;\n        }\n      }\n      if (*(int *)(puVar47 + -0x84) == *piVar32) {\n        return *piVar32;\n      }\n      pcVar51 = *(code **)(pcVar44 + -0x7b70);\n      uVar10 = 0x22b64;\n      (*pcVar51)();\n      pcVar44 = pcVar51 + 0x824d0;\n      puVar48 = puVar47 + -0x160;\n      *(uint **)(puVar47 + -0x118) = puVar16;\n      *(uint **)(puVar47 + -0x124) = puVar30;\n      piVar34 = *(int **)(pcVar51 + 0x7a9d0);\n      uVar18 = puVar22[1];\n      *(undefined1 **)(puVar47 + -0x110) = puVar49;\n      *(uint **)(puVar47 + -0x114) = puVar36;\n      *(int **)(puVar47 + -0x11c) = piVar32;\n      *(uint **)(puVar47 + -0x120) = puVar8;\n      *(undefined4 *)(puVar47 + -0x10c) = uVar10;\n      *(code **)(puVar47 + -0x150) = pcVar44;\n      *(undefined4 *)(puVar47 + -0x13c) = 0;\n      puVar8 = (uint *)puVar20[1];\n      *(int *)(puVar47 + -300) = *piVar34;\n      if ((int)uVar18 < 0) {\n        uVar37 = uVar18 * -4;\n        *(uint *)(puVar47 + -0x138) = -uVar18;\n        if (0x7f00 < uVar37) {\n          pcVar51 = *(code **)(pcVar51 + 0x7a780);\n          goto LAB_00022c88;\n        }\nLAB_00022be4:\n        iVar6 = -(uVar37 + 7 & 0xfffffff8);\n        puVar48 = puVar47 + iVar6 + -0x160;\n        puVar13 = puVar47 + iVar6 + -0x150;\n      }\n      else {\n        uVar37 = uVar18 * 4;\n        *(uint *)(puVar47 + -0x138) = uVar18;\n        pcVar51 = *(code **)(pcVar51 + 0x7a780);\n        if (uVar37 < 0x7f01) goto LAB_00022be4;\nLAB_00022c88:\n        *(uint **)(puVar47 + -0x144) = puVar22;\n        puVar13 = (undefined1 *)(*pcVar51)(puVar47 + -0x13c,uVar37);\n        pcVar44 = *(code **)(puVar47 + -0x150);\n        puVar22 = *(uint **)(puVar47 + -0x144);\n      }\n      pcVar51 = *(code **)(pcVar44 + -0x7a68);\n      puVar36 = (uint *)(puVar47 + -0x138);\n      *(undefined1 **)(puVar47 + -0x130) = puVar13;\n      puVar9 = puVar20;\n      (*pcVar51)(puVar31,puVar36,puVar20,puVar22);\n      iVar6 = *(int *)(puVar47 + -0x150);\n      if (((int)((uint)puVar8 ^ uVar18) < 0) || (*(int *)(puVar47 + -0x134) == 0)) {\n        piVar32 = *(int **)(puVar47 + -0x13c);\n        pcVar51 = *(code **)(iVar6 + -0x7a28);\n        if (piVar32 != (int *)0x0) goto LAB_00022cc0;\n      }\n      else {\n        puVar9 = (uint *)0x1;\n        puVar36 = puVar31;\n        (**(code **)(iVar6 + -0x7c9c))(puVar31);\n        piVar32 = *(int **)(puVar47 + -0x13c);\n        iVar6 = *(int *)(puVar47 + -0x150);\n        if (piVar32 != (int *)0x0) {\n          pcVar51 = *(code **)(iVar6 + -0x7a28);\nLAB_00022cc0:\n          (*pcVar51)();\n          iVar6 = *(int *)(puVar47 + -0x150);\n        }\n      }\n      if (*(int *)(puVar47 + -300) == *piVar34) {\n        return *piVar34;\n      }\n      pcVar51 = *(code **)(iVar6 + -0x7b70);\n      uVar10 = 0x22cdc;\n      (*pcVar51)();\n      pcVar44 = pcVar51 + 0x82360;\n      *(code **)(puVar48 + -0x28) = pcVar44;\n      *(undefined4 *)(puVar48 + -4) = uVar10;\n      *(uint **)(puVar48 + -8) = puVar38;\n      *(uint **)(puVar48 + -0xc) = puVar20;\n      *(int **)(puVar48 + -0x10) = piVar34;\n      *(uint **)(puVar48 + -0x14) = puVar31;\n      *(uint **)(puVar48 + -0x18) = puVar8;\n      *(uint *)(puVar48 + -0x1c) = (uint)puVar8 ^ uVar18;\n      if (puVar9 == (uint *)0x0) {\n        pcVar51 = *(code **)(pcVar51 + 0x7a900);\n        (*pcVar51)();\nLAB_00022e2c:\n        piVar32 = (int *)(*pcVar51)(piVar34,puVar31);\n        pcVar44 = *(code **)(puVar48 + -0x28);\n      }\n      else {\n        puVar8 = (uint *)puVar36[1];\n        if (puVar8 == (uint *)0x0) {\n          piVar32[1] = 0;\n          return 0;\n        }\n        puVar31 = puVar8;\n        if ((int)puVar8 < 0) {\n          puVar31 = (uint *)-(int)puVar8;\n        }\n        pcVar51 = *(code **)(pcVar51 + 0x7a8e0);\n        piVar34 = piVar32;\n        puVar20 = puVar9;\n        puVar38 = puVar36;\n        if (*piVar32 < (int)puVar31) goto LAB_00022e2c;\n        piVar32 = (int *)piVar32[2];\n      }\n      pcVar51 = *(code **)(pcVar44 + -0x7d98);\n      uVar18 = puVar38[2];\n      *(uint **)(puVar48 + -0x30) = puVar20;\n      iVar6 = (*pcVar51)(piVar32,0,uVar18,puVar31);\n      piVar17 = piVar32 + (int)puVar31 + -1;\n      if (iVar6 == 0) {\n        uVar18 = (uint)(*piVar17 == 0);\n        if (-1 < (int)puVar8) {\n          iVar24 = (int)puVar31 - uVar18;\n          goto LAB_00022d9c;\n        }\n      }\n      else {\n        if (-1 < (int)puVar8) {\n          do {\n            iVar24 = *piVar32;\n            *piVar32 = iVar24 + 1;\n            piVar32 = piVar32 + 1;\n          } while (iVar24 + 1 == 0);\n          iVar6 = (int)puVar20 - iVar6;\n          iVar24 = (int)puVar31 - (uint)(*piVar17 == 0);\n          goto LAB_00022d9c;\n        }\n        uVar18 = (uint)(*piVar17 == 0);\n      }\n      iVar24 = uVar18 - (int)puVar31;\nLAB_00022d9c:\n      piVar34[1] = iVar24;\n      return iVar6;\n    }\n    *(int *)(puVar46 + -0x44) = iVar39;\n    iVar6 = iVar39 + uVar7;\n    uVar18 = (**(code **)(*(int *)(puVar46 + -0x34) + (uVar7 - 1) * 4))(iVar39);\n    puVar43 = *(undefined **)(puVar46 + -0x78);\n    if ((uVar18 & 0xff) == 0) {\n      uVar37 = uVar18 >> 8;\n      iVar24 = 6;\n      if ((uVar37 & 0xff) == 0) {\n        uVar37 = uVar18 >> 0x10;\n        iVar24 = 0xe;\n        if ((uVar37 & 0xff) == 0) {\n          uVar37 = uVar18 >> 0x18;\n          iVar24 = 0x1e;\n          if (uVar37 != 0) {\n            iVar24 = 0x16;\n          }\n        }\n      }\n      uVar37 = (uint)*(byte *)(*(int *)(puVar46 + -0x3c) + (-uVar37 & uVar37)) + iVar24;\n    }\n    else {\n      uVar37 = *(byte *)(*(int *)(puVar46 + -0x3c) + (-uVar18 & uVar18)) - 2;\n    }\n    iVar39 = *(int *)(puVar46 + -0x38);\n    *puVar36 = uVar18 >> (uVar37 & 0x1f);\n    iVar24 = *(int *)(puVar46 + -0x60);\n    *(uint *)(puVar46 + -0x40) =\n         *(int *)(puVar46 + -0x40) + *(byte *)(iVar39 + (uVar7 - 1)) + uVar37;\n    if ((uint)(iVar24 - iVar6) <= uVar7) {\n      uVar7 = iVar24 - iVar6;\n    }\n    iVar39 = iVar6;\n    if (uVar7 != 0) goto LAB_00022234;\nLAB_00022534:\n    puVar31 = (uint *)0x1;\n    *(uint **)(puVar46 + -0x4c) = puVar36;\n  } while( true );\n}" { (declaration "uint *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "byte bVar2;" type_identifier identifier ;) (declaration "bool bVar3;" primitive_type identifier ;) (declaration "bool bVar4;" primitive_type identifier ;) (declaration "undefined *puVar5;" type_identifier (pointer_declarator "*puVar5" * identifier) ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "uint uVar7;" type_identifier identifier ;) (declaration "uint *puVar8;" type_identifier (pointer_declarator "*puVar8" * identifier) ;) (declaration "uint *puVar9;" type_identifier (pointer_declarator "*puVar9" * identifier) ;) (declaration "undefined4 uVar10;" type_identifier identifier ;) (declaration "uint uVar11;" type_identifier identifier ;) (declaration "uint uVar12;" type_identifier identifier ;) (declaration "undefined1 *puVar13;" type_identifier (pointer_declarator "*puVar13" * identifier) ;) (declaration "undefined *puVar14;" type_identifier (pointer_declarator "*puVar14" * identifier) ;) (declaration "undefined4 *puVar15;" type_identifier (pointer_declarator "*puVar15" * identifier) ;) (declaration "uint *puVar16;" type_identifier (pointer_declarator "*puVar16" * identifier) ;) (declaration "int *piVar17;" primitive_type (pointer_declarator "*piVar17" * identifier) ;) (declaration "uint uVar18;" type_identifier identifier ;) (declaration "undefined4 *puVar19;" type_identifier (pointer_declarator "*puVar19" * identifier) ;) (declaration "uint *puVar20;" type_identifier (pointer_declarator "*puVar20" * identifier) ;) (declaration "uint uVar21;" type_identifier identifier ;) (declaration "uint *puVar22;" type_identifier (pointer_declarator "*puVar22" * identifier) ;) (declaration "uint uVar23;" type_identifier identifier ;) (declaration "int iVar24;" primitive_type identifier ;) (declaration "uint uVar25;" type_identifier identifier ;) (declaration "uint uVar26;" type_identifier identifier ;) (declaration "uint uVar27;" type_identifier identifier ;) (declaration "uint uVar28;" type_identifier identifier ;) (declaration "int iVar29;" primitive_type identifier ;) (declaration "uint *puVar30;" type_identifier (pointer_declarator "*puVar30" * identifier) ;) (declaration "uint *puVar31;" type_identifier (pointer_declarator "*puVar31" * identifier) ;) (declaration "int *piVar32;" primitive_type (pointer_declarator "*piVar32" * identifier) ;) (declaration "int iVar33;" primitive_type identifier ;) (declaration "int *piVar34;" primitive_type (pointer_declarator "*piVar34" * identifier) ;) (declaration "uint uVar35;" type_identifier identifier ;) (declaration "uint *puVar36;" type_identifier (pointer_declarator "*puVar36" * identifier) ;) (declaration "uint uVar37;" type_identifier identifier ;) (declaration "uint *puVar38;" type_identifier (pointer_declarator "*puVar38" * identifier) ;) (declaration "int iVar39;" primitive_type identifier ;) (declaration "uint uVar40;" type_identifier identifier ;) (declaration "int iVar41;" primitive_type identifier ;) (declaration "uint uVar42;" type_identifier identifier ;) (declaration "undefined *puVar43;" type_identifier (pointer_declarator "*puVar43" * identifier) ;) (declaration "code *pcVar44;" type_identifier (pointer_declarator "*pcVar44" * identifier) ;) (declaration "undefined1 *puVar45;" type_identifier (pointer_declarator "*puVar45" * identifier) ;) (declaration "undefined1 *puVar46;" type_identifier (pointer_declarator "*puVar46" * identifier) ;) (declaration "undefined1 *puVar47;" type_identifier (pointer_declarator "*puVar47" * identifier) ;) (declaration "undefined1 *puVar48;" type_identifier (pointer_declarator "*puVar48" * identifier) ;) (declaration "undefined1 *puVar49;" type_identifier (pointer_declarator "*puVar49" * identifier) ;) (declaration "undefined1 *puVar50;" type_identifier (pointer_declarator "*puVar50" * identifier) ;) (declaration "code *pcVar51;" type_identifier (pointer_declarator "*pcVar51" * identifier) ;) (declaration "code *pcVar52;" type_identifier (pointer_declarator "*pcVar52" * identifier) ;) (declaration "uint uVar53;" type_identifier identifier ;) (declaration "uint uVar54;" type_identifier identifier ;) (declaration "undefined1 auStack_48 [16];" type_identifier (array_declarator "auStack_48 [16]" identifier [ number_literal ]) ;) (declaration "int local_30;" primitive_type identifier ;) (declaration "int local_2c;" primitive_type identifier ;) (expression_statement "puVar5 = PTR___stack_chk_guard_0009d540;" (assignment_expression "puVar5 = PTR___stack_chk_guard_0009d540" identifier = identifier) ;) (expression_statement "puVar45 = auStack_48;" (assignment_expression "puVar45 = auStack_48" identifier = identifier) ;) (expression_statement "uVar37 = param_2 - 5 | 1;" (assignment_expression "uVar37 = param_2 - 5 | 1" identifier = (binary_expression "param_2 - 5 | 1" (binary_expression "param_2 - 5" identifier - number_literal) | number_literal)) ;) (expression_statement "local_30 = 0;" (assignment_expression "local_30 = 0" identifier = number_literal) ;) (expression_statement "local_2c = *(int *)PTR___stack_chk_guard_0009d540;" (assignment_expression "local_2c = *(int *)PTR___stack_chk_guard_0009d540" identifier = (pointer_expression "*(int *)PTR___stack_chk_guard_0009d540" * (cast_expression "(int *)PTR___stack_chk_guard_0009d540" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "uVar18 = (uVar37 / 0x60 + 1) * 4;" (assignment_expression "uVar18 = (uVar37 / 0x60 + 1) * 4" identifier = (binary_expression "(uVar37 / 0x60 + 1) * 4" (parenthesized_expression "(uVar37 / 0x60 + 1)" ( (binary_expression "uVar37 / 0x60 + 1" (binary_expression "uVar37 / 0x60" identifier / number_literal) + number_literal) )) * number_literal)) ;) (if_statement "if (uVar18 < 0x7f01) {\n    iVar6 = -(uVar18 + 7 & 0xfffffff8);\n    puVar45 = auStack_48 + iVar6;\n    puVar13 = &stack0xffffffc8 + iVar6;\n  }\n  else {\n    puVar13 = (undefined1 *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&local_30);\n  }" if (parenthesized_expression "(uVar18 < 0x7f01)" ( (binary_expression "uVar18 < 0x7f01" identifier < number_literal) )) (compound_statement "{\n    iVar6 = -(uVar18 + 7 & 0xfffffff8);\n    puVar45 = auStack_48 + iVar6;\n    puVar13 = &stack0xffffffc8 + iVar6;\n  }" { (expression_statement "iVar6 = -(uVar18 + 7 & 0xfffffff8);" (assignment_expression "iVar6 = -(uVar18 + 7 & 0xfffffff8)" identifier = (unary_expression "-(uVar18 + 7 & 0xfffffff8)" - (parenthesized_expression "(uVar18 + 7 & 0xfffffff8)" ( (binary_expression "uVar18 + 7 & 0xfffffff8" (binary_expression "uVar18 + 7" identifier + number_literal) & number_literal) )))) ;) (expression_statement "puVar45 = auStack_48 + iVar6;" (assignment_expression "puVar45 = auStack_48 + iVar6" identifier = (binary_expression "auStack_48 + iVar6" identifier + identifier)) ;) (expression_statement "puVar13 = &stack0xffffffc8 + iVar6;" (assignment_expression "puVar13 = &stack0xffffffc8 + iVar6" identifier = (binary_expression "&stack0xffffffc8 + iVar6" (pointer_expression "&stack0xffffffc8" & identifier) + identifier)) ;) }) (else_clause "else {\n    puVar13 = (undefined1 *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&local_30);\n  }" else (compound_statement "{\n    puVar13 = (undefined1 *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&local_30);\n  }" { (expression_statement "puVar13 = (undefined1 *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&local_30);" (assignment_expression "puVar13 = (undefined1 *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&local_30)" identifier = (cast_expression "(undefined1 *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&local_30)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&local_30)" (parenthesized_expression "(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)" ( (pointer_expression "*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0" * (cast_expression "(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(&local_30)" ( (pointer_expression "&local_30" & identifier) ))))) ;) }))) (expression_statement "iVar6 = (*(code *)PTR___gmp_primesieve_0009d144)(puVar13,param_2);" (assignment_expression "iVar6 = (*(code *)PTR___gmp_primesieve_0009d144)(puVar13,param_2)" identifier = (call_expression "(*(code *)PTR___gmp_primesieve_0009d144)(puVar13,param_2)" (parenthesized_expression "(*(code *)PTR___gmp_primesieve_0009d144)" ( (pointer_expression "*(code *)PTR___gmp_primesieve_0009d144" * (cast_expression "(code *)PTR___gmp_primesieve_0009d144" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(puVar13,param_2)" ( identifier , identifier )))) ;) (expression_statement "uVar7 = iVar6 + 1;" (assignment_expression "uVar7 = iVar6 + 1" identifier = (binary_expression "iVar6 + 1" identifier + number_literal)) ;) (expression_statement "puVar8 = (uint *)(PTR___gmp_limbroots_table_0009d3d4 + 0x1c);" (assignment_expression "puVar8 = (uint *)(PTR___gmp_limbroots_table_0009d3d4 + 0x1c)" identifier = (cast_expression "(uint *)(PTR___gmp_limbroots_table_0009d3d4 + 0x1c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR___gmp_limbroots_table_0009d3d4 + 0x1c)" ( (binary_expression "PTR___gmp_limbroots_table_0009d3d4 + 0x1c" identifier + number_literal) )))) ;) (expression_statement "uVar18 = 8;" (assignment_expression "uVar18 = 8" identifier = number_literal) ;) (do_statement "do {\n    uVar23 = uVar18;\n    uVar11 = *puVar8;\n    puVar8 = puVar8 + -1;\n    uVar18 = uVar23 - 1;\n  } while (uVar11 < param_2);" do (compound_statement "{\n    uVar23 = uVar18;\n    uVar11 = *puVar8;\n    puVar8 = puVar8 + -1;\n    uVar18 = uVar23 - 1;\n  }" { (expression_statement "uVar23 = uVar18;" (assignment_expression "uVar23 = uVar18" identifier = identifier) ;) (expression_statement "uVar11 = *puVar8;" (assignment_expression "uVar11 = *puVar8" identifier = (pointer_expression "*puVar8" * identifier)) ;) (expression_statement "puVar8 = puVar8 + -1;" (assignment_expression "puVar8 = puVar8 + -1" identifier = (binary_expression "puVar8 + -1" identifier + number_literal)) ;) (expression_statement "uVar18 = uVar23 - 1;" (assignment_expression "uVar18 = uVar23 - 1" identifier = (binary_expression "uVar23 - 1" identifier - number_literal)) ;) }) while (parenthesized_expression "(uVar11 < param_2)" ( (binary_expression "uVar11 < param_2" identifier < identifier) )) ;) (if_statement "if (uVar23 == 0) {\n    trap(7);\n  }" if (parenthesized_expression "(uVar23 == 0)" ( (binary_expression "uVar23 == 0" identifier == number_literal) )) (compound_statement "{\n    trap(7);\n  }" { (expression_statement "trap(7);" (call_expression "trap(7)" identifier (argument_list "(7)" ( number_literal ))) ;) })) (expression_statement "puVar8 = (uint *)(PTR___gmp_limbroots_table_0009d3d4 + 0x1c);" (assignment_expression "puVar8 = (uint *)(PTR___gmp_limbroots_table_0009d3d4 + 0x1c)" identifier = (cast_expression "(uint *)(PTR___gmp_limbroots_table_0009d3d4 + 0x1c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR___gmp_limbroots_table_0009d3d4 + 0x1c)" ( (binary_expression "PTR___gmp_limbroots_table_0009d3d4 + 0x1c" identifier + number_literal) )))) ;) (expression_statement "uVar18 = 8;" (assignment_expression "uVar18 = 8" identifier = number_literal) ;) (if_statement "if ((uVar7 / uVar23 + 1) * 4 < 0x7f01) {\n    do {\n      uVar23 = uVar18;\n      uVar11 = *puVar8;\n      puVar8 = puVar8 + -1;\n      uVar18 = uVar23 - 1;\n    } while (uVar11 < param_2);\n    if (uVar23 == 0) {\n      trap(7);\n    }\n    iVar6 = -((uVar7 / uVar23) * 4 + 0xb & 0xfffffff8);\n    puVar46 = puVar45 + iVar6;\n    puVar8 = (uint *)(puVar45 + iVar6 + 0x10);\n  }\n  else {\n    for (puVar14 = PTR___gmp_limbroots_table_0009d3d4 + 0x18; *(uint *)(puVar14 + 4) < param_2;\n        puVar14 = puVar14 + -4) {\n      uVar18 = uVar18 - 1;\n    }\n    if (uVar18 == 0) {\n      trap(7);\n    }\n    puVar8 = (uint *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)\n                               (&local_30,(uVar7 / uVar18 + 1) * 4);\n    puVar46 = puVar45;\n  }" if (parenthesized_expression "((uVar7 / uVar23 + 1) * 4 < 0x7f01)" ( (binary_expression "(uVar7 / uVar23 + 1) * 4 < 0x7f01" (binary_expression "(uVar7 / uVar23 + 1) * 4" (parenthesized_expression "(uVar7 / uVar23 + 1)" ( (binary_expression "uVar7 / uVar23 + 1" (binary_expression "uVar7 / uVar23" identifier / identifier) + number_literal) )) * number_literal) < number_literal) )) (compound_statement "{\n    do {\n      uVar23 = uVar18;\n      uVar11 = *puVar8;\n      puVar8 = puVar8 + -1;\n      uVar18 = uVar23 - 1;\n    } while (uVar11 < param_2);\n    if (uVar23 == 0) {\n      trap(7);\n    }\n    iVar6 = -((uVar7 / uVar23) * 4 + 0xb & 0xfffffff8);\n    puVar46 = puVar45 + iVar6;\n    puVar8 = (uint *)(puVar45 + iVar6 + 0x10);\n  }" { (do_statement "do {\n      uVar23 = uVar18;\n      uVar11 = *puVar8;\n      puVar8 = puVar8 + -1;\n      uVar18 = uVar23 - 1;\n    } while (uVar11 < param_2);" do (compound_statement "{\n      uVar23 = uVar18;\n      uVar11 = *puVar8;\n      puVar8 = puVar8 + -1;\n      uVar18 = uVar23 - 1;\n    }" { (expression_statement "uVar23 = uVar18;" (assignment_expression "uVar23 = uVar18" identifier = identifier) ;) (expression_statement "uVar11 = *puVar8;" (assignment_expression "uVar11 = *puVar8" identifier = (pointer_expression "*puVar8" * identifier)) ;) (expression_statement "puVar8 = puVar8 + -1;" (assignment_expression "puVar8 = puVar8 + -1" identifier = (binary_expression "puVar8 + -1" identifier + number_literal)) ;) (expression_statement "uVar18 = uVar23 - 1;" (assignment_expression "uVar18 = uVar23 - 1" identifier = (binary_expression "uVar23 - 1" identifier - number_literal)) ;) }) while (parenthesized_expression "(uVar11 < param_2)" ( (binary_expression "uVar11 < param_2" identifier < identifier) )) ;) (if_statement "if (uVar23 == 0) {\n      trap(7);\n    }" if (parenthesized_expression "(uVar23 == 0)" ( (binary_expression "uVar23 == 0" identifier == number_literal) )) (compound_statement "{\n      trap(7);\n    }" { (expression_statement "trap(7);" (call_expression "trap(7)" identifier (argument_list "(7)" ( number_literal ))) ;) })) (expression_statement "iVar6 = -((uVar7 / uVar23) * 4 + 0xb & 0xfffffff8);" (assignment_expression "iVar6 = -((uVar7 / uVar23) * 4 + 0xb & 0xfffffff8)" identifier = (unary_expression "-((uVar7 / uVar23) * 4 + 0xb & 0xfffffff8)" - (parenthesized_expression "((uVar7 / uVar23) * 4 + 0xb & 0xfffffff8)" ( (binary_expression "(uVar7 / uVar23) * 4 + 0xb & 0xfffffff8" (binary_expression "(uVar7 / uVar23) * 4 + 0xb" (binary_expression "(uVar7 / uVar23) * 4" (parenthesized_expression "(uVar7 / uVar23)" ( (binary_expression "uVar7 / uVar23" identifier / identifier) )) * number_literal) + number_literal) & number_literal) )))) ;) (expression_statement "puVar46 = puVar45 + iVar6;" (assignment_expression "puVar46 = puVar45 + iVar6" identifier = (binary_expression "puVar45 + iVar6" identifier + identifier)) ;) (expression_statement "puVar8 = (uint *)(puVar45 + iVar6 + 0x10);" (assignment_expression "puVar8 = (uint *)(puVar45 + iVar6 + 0x10)" identifier = (cast_expression "(uint *)(puVar45 + iVar6 + 0x10)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar45 + iVar6 + 0x10)" ( (binary_expression "puVar45 + iVar6 + 0x10" (binary_expression "puVar45 + iVar6" identifier + identifier) + number_literal) )))) ;) }) (else_clause "else {\n    for (puVar14 = PTR___gmp_limbroots_table_0009d3d4 + 0x18; *(uint *)(puVar14 + 4) < param_2;\n        puVar14 = puVar14 + -4) {\n      uVar18 = uVar18 - 1;\n    }\n    if (uVar18 == 0) {\n      trap(7);\n    }\n    puVar8 = (uint *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)\n                               (&local_30,(uVar7 / uVar18 + 1) * 4);\n    puVar46 = puVar45;\n  }" else (compound_statement "{\n    for (puVar14 = PTR___gmp_limbroots_table_0009d3d4 + 0x18; *(uint *)(puVar14 + 4) < param_2;\n        puVar14 = puVar14 + -4) {\n      uVar18 = uVar18 - 1;\n    }\n    if (uVar18 == 0) {\n      trap(7);\n    }\n    puVar8 = (uint *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)\n                               (&local_30,(uVar7 / uVar18 + 1) * 4);\n    puVar46 = puVar45;\n  }" { (for_statement "for (puVar14 = PTR___gmp_limbroots_table_0009d3d4 + 0x18; *(uint *)(puVar14 + 4) < param_2;\n        puVar14 = puVar14 + -4) {\n      uVar18 = uVar18 - 1;\n    }" for ( (assignment_expression "puVar14 = PTR___gmp_limbroots_table_0009d3d4 + 0x18" identifier = (binary_expression "PTR___gmp_limbroots_table_0009d3d4 + 0x18" identifier + number_literal)) ; (binary_expression "*(uint *)(puVar14 + 4) < param_2" (pointer_expression "*(uint *)(puVar14 + 4)" * (cast_expression "(uint *)(puVar14 + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar14 + 4)" ( (binary_expression "puVar14 + 4" identifier + number_literal) )))) < identifier) ; (assignment_expression "puVar14 = puVar14 + -4" identifier = (binary_expression "puVar14 + -4" identifier + number_literal)) ) (compound_statement "{\n      uVar18 = uVar18 - 1;\n    }" { (expression_statement "uVar18 = uVar18 - 1;" (assignment_expression "uVar18 = uVar18 - 1" identifier = (binary_expression "uVar18 - 1" identifier - number_literal)) ;) })) (if_statement "if (uVar18 == 0) {\n      trap(7);\n    }" if (parenthesized_expression "(uVar18 == 0)" ( (binary_expression "uVar18 == 0" identifier == number_literal) )) (compound_statement "{\n      trap(7);\n    }" { (expression_statement "trap(7);" (call_expression "trap(7)" identifier (argument_list "(7)" ( number_literal ))) ;) })) (expression_statement "puVar8 = (uint *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)\n                               (&local_30,(uVar7 / uVar18 + 1) * 4);" (assignment_expression "puVar8 = (uint *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)\n                               (&local_30,(uVar7 / uVar18 + 1) * 4)" identifier = (cast_expression "(uint *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)\n                               (&local_30,(uVar7 / uVar18 + 1) * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)\n                               (&local_30,(uVar7 / uVar18 + 1) * 4)" (parenthesized_expression "(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)" ( (pointer_expression "*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0" * (cast_expression "(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(&local_30,(uVar7 / uVar18 + 1) * 4)" ( (pointer_expression "&local_30" & identifier) , (binary_expression "(uVar7 / uVar18 + 1) * 4" (parenthesized_expression "(uVar7 / uVar18 + 1)" ( (binary_expression "uVar7 / uVar18 + 1" (binary_expression "uVar7 / uVar18" identifier / identifier) + number_literal) )) * number_literal) ))))) ;) (expression_statement "puVar46 = puVar45;" (assignment_expression "puVar46 = puVar45" identifier = identifier) ;) }))) (expression_statement "uVar18 = param_2 - param_3;" (assignment_expression "uVar18 = param_2 - param_3" identifier = (binary_expression "param_2 - param_3" identifier - identifier)) ;) (if_statement "if (param_2 == 0) {\n    trap(7);\n  }" if (parenthesized_expression "(param_2 == 0)" ( (binary_expression "param_2 == 0" identifier == number_literal) )) (compound_statement "{\n    trap(7);\n  }" { (expression_statement "trap(7);" (call_expression "trap(7)" identifier (argument_list "(7)" ( number_literal ))) ;) })) (expression_statement "uVar53 = 0xffffffff / param_2;" (assignment_expression "uVar53 = 0xffffffff / param_2" identifier = (binary_expression "0xffffffff / param_2" number_literal / identifier)) ;) (expression_statement "uVar40 = param_2 >> 1;" (assignment_expression "uVar40 = param_2 >> 1" identifier = (binary_expression "param_2 >> 1" identifier >> number_literal)) ;) (expression_statement "uVar11 = uVar18 - (uVar18 >> 1 & 0x55555555);" (assignment_expression "uVar11 = uVar18 - (uVar18 >> 1 & 0x55555555)" identifier = (binary_expression "uVar18 - (uVar18 >> 1 & 0x55555555)" identifier - (parenthesized_expression "(uVar18 >> 1 & 0x55555555)" ( (binary_expression "uVar18 >> 1 & 0x55555555" (binary_expression "uVar18 >> 1" identifier >> number_literal) & number_literal) )))) ;) (expression_statement "uVar23 = param_2 - (uVar40 & 0x55555555);" (assignment_expression "uVar23 = param_2 - (uVar40 & 0x55555555)" identifier = (binary_expression "param_2 - (uVar40 & 0x55555555)" identifier - (parenthesized_expression "(uVar40 & 0x55555555)" ( (binary_expression "uVar40 & 0x55555555" identifier & number_literal) )))) ;) (expression_statement "uVar7 = param_3 - (param_3 >> 1 & 0x55555555);" (assignment_expression "uVar7 = param_3 - (param_3 >> 1 & 0x55555555)" identifier = (binary_expression "param_3 - (param_3 >> 1 & 0x55555555)" identifier - (parenthesized_expression "(param_3 >> 1 & 0x55555555)" ( (binary_expression "param_3 >> 1 & 0x55555555" (binary_expression "param_3 >> 1" identifier >> number_literal) & number_literal) )))) ;) (expression_statement "uVar26 = (uVar11 >> 2 & 0x33333333) + (uVar11 & 0x33333333);" (assignment_expression "uVar26 = (uVar11 >> 2 & 0x33333333) + (uVar11 & 0x33333333)" identifier = (binary_expression "(uVar11 >> 2 & 0x33333333) + (uVar11 & 0x33333333)" (parenthesized_expression "(uVar11 >> 2 & 0x33333333)" ( (binary_expression "uVar11 >> 2 & 0x33333333" (binary_expression "uVar11 >> 2" identifier >> number_literal) & number_literal) )) + (parenthesized_expression "(uVar11 & 0x33333333)" ( (binary_expression "uVar11 & 0x33333333" identifier & number_literal) )))) ;) (expression_statement "uVar23 = (uVar23 >> 2 & 0x33333333) + (uVar23 & 0x33333333);" (assignment_expression "uVar23 = (uVar23 >> 2 & 0x33333333) + (uVar23 & 0x33333333)" identifier = (binary_expression "(uVar23 >> 2 & 0x33333333) + (uVar23 & 0x33333333)" (parenthesized_expression "(uVar23 >> 2 & 0x33333333)" ( (binary_expression "uVar23 >> 2 & 0x33333333" (binary_expression "uVar23 >> 2" identifier >> number_literal) & number_literal) )) + (parenthesized_expression "(uVar23 & 0x33333333)" ( (binary_expression "uVar23 & 0x33333333" identifier & number_literal) )))) ;) (expression_statement "uVar11 = (uVar7 >> 2 & 0x33333333) + (uVar7 & 0x33333333);" (assignment_expression "uVar11 = (uVar7 >> 2 & 0x33333333) + (uVar7 & 0x33333333)" identifier = (binary_expression "(uVar7 >> 2 & 0x33333333) + (uVar7 & 0x33333333)" (parenthesized_expression "(uVar7 >> 2 & 0x33333333)" ( (binary_expression "uVar7 >> 2 & 0x33333333" (binary_expression "uVar7 >> 2" identifier >> number_literal) & number_literal) )) + (parenthesized_expression "(uVar7 & 0x33333333)" ( (binary_expression "uVar7 & 0x33333333" identifier & number_literal) )))) ;) (expression_statement "uVar7 = (uVar26 >> 4) + uVar26 & 0xf0f0f0f;" (assignment_expression "uVar7 = (uVar26 >> 4) + uVar26 & 0xf0f0f0f" identifier = (binary_expression "(uVar26 >> 4) + uVar26 & 0xf0f0f0f" (binary_expression "(uVar26 >> 4) + uVar26" (parenthesized_expression "(uVar26 >> 4)" ( (binary_expression "uVar26 >> 4" identifier >> number_literal) )) + identifier) & number_literal)) ;) (expression_statement "uVar23 = (uVar23 >> 4) + uVar23 & 0xf0f0f0f;" (assignment_expression "uVar23 = (uVar23 >> 4) + uVar23 & 0xf0f0f0f" identifier = (binary_expression "(uVar23 >> 4) + uVar23 & 0xf0f0f0f" (binary_expression "(uVar23 >> 4) + uVar23" (parenthesized_expression "(uVar23 >> 4)" ( (binary_expression "uVar23 >> 4" identifier >> number_literal) )) + identifier) & number_literal)) ;) (expression_statement "uVar7 = (uVar7 >> 8) + uVar7;" (assignment_expression "uVar7 = (uVar7 >> 8) + uVar7" identifier = (binary_expression "(uVar7 >> 8) + uVar7" (parenthesized_expression "(uVar7 >> 8)" ( (binary_expression "uVar7 >> 8" identifier >> number_literal) )) + identifier)) ;) (expression_statement "uVar11 = (uVar11 >> 4) + uVar11 & 0xf0f0f0f;" (assignment_expression "uVar11 = (uVar11 >> 4) + uVar11 & 0xf0f0f0f" identifier = (binary_expression "(uVar11 >> 4) + uVar11 & 0xf0f0f0f" (binary_expression "(uVar11 >> 4) + uVar11" (parenthesized_expression "(uVar11 >> 4)" ( (binary_expression "uVar11 >> 4" identifier >> number_literal) )) + identifier) & number_literal)) ;) (expression_statement "uVar23 = (uVar23 >> 8) + uVar23;" (assignment_expression "uVar23 = (uVar23 >> 8) + uVar23" identifier = (binary_expression "(uVar23 >> 8) + uVar23" (parenthesized_expression "(uVar23 >> 8)" ( (binary_expression "uVar23 >> 8" identifier >> number_literal) )) + identifier)) ;) (expression_statement "uVar11 = (uVar11 >> 8) + uVar11;" (assignment_expression "uVar11 = (uVar11 >> 8) + uVar11" identifier = (binary_expression "(uVar11 >> 8) + uVar11" (parenthesized_expression "(uVar11 >> 8)" ( (binary_expression "uVar11 >> 8" identifier >> number_literal) )) + identifier)) ;) (expression_statement "uVar7 = 1 << ((uVar11 >> 0x10) + uVar11 +\n                (((uVar7 >> 0x10) + uVar7 & 0xff) - ((uVar23 >> 0x10) + uVar23 & 0xff)) & 0x1f);" (assignment_expression "uVar7 = 1 << ((uVar11 >> 0x10) + uVar11 +\n                (((uVar7 >> 0x10) + uVar7 & 0xff) - ((uVar23 >> 0x10) + uVar23 & 0xff)) & 0x1f)" identifier = (binary_expression "1 << ((uVar11 >> 0x10) + uVar11 +\n                (((uVar7 >> 0x10) + uVar7 & 0xff) - ((uVar23 >> 0x10) + uVar23 & 0xff)) & 0x1f)" number_literal << (parenthesized_expression "((uVar11 >> 0x10) + uVar11 +\n                (((uVar7 >> 0x10) + uVar7 & 0xff) - ((uVar23 >> 0x10) + uVar23 & 0xff)) & 0x1f)" ( (binary_expression "(uVar11 >> 0x10) + uVar11 +\n                (((uVar7 >> 0x10) + uVar7 & 0xff) - ((uVar23 >> 0x10) + uVar23 & 0xff)) & 0x1f" (binary_expression "(uVar11 >> 0x10) + uVar11 +\n                (((uVar7 >> 0x10) + uVar7 & 0xff) - ((uVar23 >> 0x10) + uVar23 & 0xff))" (binary_expression "(uVar11 >> 0x10) + uVar11" (parenthesized_expression "(uVar11 >> 0x10)" ( (binary_expression "uVar11 >> 0x10" identifier >> number_literal) )) + identifier) + (parenthesized_expression "(((uVar7 >> 0x10) + uVar7 & 0xff) - ((uVar23 >> 0x10) + uVar23 & 0xff))" ( (binary_expression "((uVar7 >> 0x10) + uVar7 & 0xff) - ((uVar23 >> 0x10) + uVar23 & 0xff)" (parenthesized_expression "((uVar7 >> 0x10) + uVar7 & 0xff)" ( (binary_expression "(uVar7 >> 0x10) + uVar7 & 0xff" (binary_expression "(uVar7 >> 0x10) + uVar7" (parenthesized_expression "(uVar7 >> 0x10)" ( (binary_expression "uVar7 >> 0x10" identifier >> number_literal) )) + identifier) & number_literal) )) - (parenthesized_expression "((uVar23 >> 0x10) + uVar23 & 0xff)" ( (binary_expression "(uVar23 >> 0x10) + uVar23 & 0xff" (binary_expression "(uVar23 >> 0x10) + uVar23" (parenthesized_expression "(uVar23 >> 0x10)" ( (binary_expression "uVar23 >> 0x10" identifier >> number_literal) )) + identifier) & number_literal) ))) ))) & number_literal) )))) ;) (expression_statement "bVar3 = uVar53 < uVar7;" (assignment_expression "bVar3 = uVar53 < uVar7" identifier = (binary_expression "uVar53 < uVar7" identifier < identifier)) ;) (if_statement "if (bVar3) {\n    *puVar8 = uVar7;\n    uVar7 = 1;\n  }" if (parenthesized_expression "(bVar3)" ( identifier )) (compound_statement "{\n    *puVar8 = uVar7;\n    uVar7 = 1;\n  }" { (expression_statement "*puVar8 = uVar7;" (assignment_expression "*puVar8 = uVar7" (pointer_expression "*puVar8" * identifier) = identifier) ;) (expression_statement "uVar7 = 1;" (assignment_expression "uVar7 = 1" identifier = number_literal) ;) })) (expression_statement "uVar11 = 0;" (assignment_expression "uVar11 = 0" identifier = number_literal) ;) (expression_statement "uVar23 = param_2;" (assignment_expression "uVar23 = param_2" identifier = identifier) ;) (expression_statement "uVar26 = param_3;" (assignment_expression "uVar26 = param_3" identifier = identifier) ;) (do_statement "do {\n    bVar4 = uVar23 % 3 < uVar26 % 3 + uVar11;\n    if (bVar4) {\n      uVar7 = uVar7 * 3;\n    }\n    uVar11 = (uint)bVar4;\n    bVar4 = 8 < uVar23;\n    uVar23 = uVar23 / 3;\n    uVar26 = uVar26 / 3;\n  } while (bVar4);" do (compound_statement "{\n    bVar4 = uVar23 % 3 < uVar26 % 3 + uVar11;\n    if (bVar4) {\n      uVar7 = uVar7 * 3;\n    }\n    uVar11 = (uint)bVar4;\n    bVar4 = 8 < uVar23;\n    uVar23 = uVar23 / 3;\n    uVar26 = uVar26 / 3;\n  }" { (expression_statement "bVar4 = uVar23 % 3 < uVar26 % 3 + uVar11;" (assignment_expression "bVar4 = uVar23 % 3 < uVar26 % 3 + uVar11" identifier = (binary_expression "uVar23 % 3 < uVar26 % 3 + uVar11" (binary_expression "uVar23 % 3" identifier % number_literal) < (binary_expression "uVar26 % 3 + uVar11" (binary_expression "uVar26 % 3" identifier % number_literal) + identifier))) ;) (if_statement "if (bVar4) {\n      uVar7 = uVar7 * 3;\n    }" if (parenthesized_expression "(bVar4)" ( identifier )) (compound_statement "{\n      uVar7 = uVar7 * 3;\n    }" { (expression_statement "uVar7 = uVar7 * 3;" (assignment_expression "uVar7 = uVar7 * 3" identifier = (binary_expression "uVar7 * 3" identifier * number_literal)) ;) })) (expression_statement "uVar11 = (uint)bVar4;" (assignment_expression "uVar11 = (uint)bVar4" identifier = (cast_expression "(uint)bVar4" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "bVar4 = 8 < uVar23;" (assignment_expression "bVar4 = 8 < uVar23" identifier = (binary_expression "8 < uVar23" number_literal < identifier)) ;) (expression_statement "uVar23 = uVar23 / 3;" (assignment_expression "uVar23 = uVar23 / 3" identifier = (binary_expression "uVar23 / 3" identifier / number_literal)) ;) (expression_statement "uVar26 = uVar26 / 3;" (assignment_expression "uVar26 = uVar26 / 3" identifier = (binary_expression "uVar26 / 3" identifier / number_literal)) ;) }) while (parenthesized_expression "(bVar4)" ( identifier )) ;) (expression_statement "uVar11 = param_2 - 1;" (assignment_expression "uVar11 = param_2 - 1" identifier = (binary_expression "param_2 - 1" identifier - number_literal)) ;) (if_statement "if (uVar11 < 0x10000) {\n    iVar6 = 0x18;\n    if (uVar11 < 0x100) {\n      iVar6 = 0x20;\n    }\n    iVar24 = 9;\n    if (uVar11 < 0x100) {\n      iVar24 = 1;\n    }\n  }\n  else {\n    iVar6 = 8;\n    if (uVar11 < 0x1000000) {\n      iVar6 = 0x10;\n    }\n    iVar24 = 0x19;\n    if (uVar11 < 0x1000000) {\n      iVar24 = 0x11;\n    }\n  }" if (parenthesized_expression "(uVar11 < 0x10000)" ( (binary_expression "uVar11 < 0x10000" identifier < number_literal) )) (compound_statement "{\n    iVar6 = 0x18;\n    if (uVar11 < 0x100) {\n      iVar6 = 0x20;\n    }\n    iVar24 = 9;\n    if (uVar11 < 0x100) {\n      iVar24 = 1;\n    }\n  }" { (expression_statement "iVar6 = 0x18;" (assignment_expression "iVar6 = 0x18" identifier = number_literal) ;) (if_statement "if (uVar11 < 0x100) {\n      iVar6 = 0x20;\n    }" if (parenthesized_expression "(uVar11 < 0x100)" ( (binary_expression "uVar11 < 0x100" identifier < number_literal) )) (compound_statement "{\n      iVar6 = 0x20;\n    }" { (expression_statement "iVar6 = 0x20;" (assignment_expression "iVar6 = 0x20" identifier = number_literal) ;) })) (expression_statement "iVar24 = 9;" (assignment_expression "iVar24 = 9" identifier = number_literal) ;) (if_statement "if (uVar11 < 0x100) {\n      iVar24 = 1;\n    }" if (parenthesized_expression "(uVar11 < 0x100)" ( (binary_expression "uVar11 < 0x100" identifier < number_literal) )) (compound_statement "{\n      iVar24 = 1;\n    }" { (expression_statement "iVar24 = 1;" (assignment_expression "iVar24 = 1" identifier = number_literal) ;) })) }) (else_clause "else {\n    iVar6 = 8;\n    if (uVar11 < 0x1000000) {\n      iVar6 = 0x10;\n    }\n    iVar24 = 0x19;\n    if (uVar11 < 0x1000000) {\n      iVar24 = 0x11;\n    }\n  }" else (compound_statement "{\n    iVar6 = 8;\n    if (uVar11 < 0x1000000) {\n      iVar6 = 0x10;\n    }\n    iVar24 = 0x19;\n    if (uVar11 < 0x1000000) {\n      iVar24 = 0x11;\n    }\n  }" { (expression_statement "iVar6 = 8;" (assignment_expression "iVar6 = 8" identifier = number_literal) ;) (if_statement "if (uVar11 < 0x1000000) {\n      iVar6 = 0x10;\n    }" if (parenthesized_expression "(uVar11 < 0x1000000)" ( (binary_expression "uVar11 < 0x1000000" identifier < number_literal) )) (compound_statement "{\n      iVar6 = 0x10;\n    }" { (expression_statement "iVar6 = 0x10;" (assignment_expression "iVar6 = 0x10" identifier = number_literal) ;) })) (expression_statement "iVar24 = 0x19;" (assignment_expression "iVar24 = 0x19" identifier = number_literal) ;) (if_statement "if (uVar11 < 0x1000000) {\n      iVar24 = 0x11;\n    }" if (parenthesized_expression "(uVar11 < 0x1000000)" ( (binary_expression "uVar11 < 0x1000000" identifier < number_literal) )) (compound_statement "{\n      iVar24 = 0x11;\n    }" { (expression_statement "iVar24 = 0x11;" (assignment_expression "iVar24 = 0x11" identifier = number_literal) ;) })) }))) (expression_statement "iVar29 = 0;" (assignment_expression "iVar29 = 0" identifier = number_literal) ;) (expression_statement "uVar28 = 1;" (assignment_expression "uVar28 = 1" identifier = number_literal) ;) (expression_statement "uVar42 = (((1 << ((int)(0x1f - (iVar6 - (uint)(byte)PTR___gmpn_clz_tab_0009d18c[uVar11 >> iVar24])\n                         ) >> 1 & 0x1fU)) +\n            (1 << ((int)(0x1e - (iVar6 - (uint)(byte)PTR___gmpn_clz_tab_0009d18c[uVar11 >> iVar24]))\n                   >> 1 & 0x1fU))) - 5U | 1) / 3;" (assignment_expression "uVar42 = (((1 << ((int)(0x1f - (iVar6 - (uint)(byte)PTR___gmpn_clz_tab_0009d18c[uVar11 >> iVar24])\n                         ) >> 1 & 0x1fU)) +\n            (1 << ((int)(0x1e - (iVar6 - (uint)(byte)PTR___gmpn_clz_tab_0009d18c[uVar11 >> iVar24]))\n                   >> 1 & 0x1fU))) - 5U | 1) / 3" identifier = (binary_expression "(((1 << ((int)(0x1f - (iVar6 - (uint)(byte)PTR___gmpn_clz_tab_0009d18c[uVar11 >> iVar24])\n                         ) >> 1 & 0x1fU)) +\n            (1 << ((int)(0x1e - (iVar6 - (uint)(byte)PTR___gmpn_clz_tab_0009d18c[uVar11 >> iVar24]))\n                   >> 1 & 0x1fU))) - 5U | 1) / 3" (parenthesized_expression "(((1 << ((int)(0x1f - (iVar6 - (uint)(byte)PTR___gmpn_clz_tab_0009d18c[uVar11 >> iVar24])\n                         ) >> 1 & 0x1fU)) +\n            (1 << ((int)(0x1e - (iVar6 - (uint)(byte)PTR___gmpn_clz_tab_0009d18c[uVar11 >> iVar24]))\n                   >> 1 & 0x1fU))) - 5U | 1)" ( (binary_expression "((1 << ((int)(0x1f - (iVar6 - (uint)(byte)PTR___gmpn_clz_tab_0009d18c[uVar11 >> iVar24])\n                         ) >> 1 & 0x1fU)) +\n            (1 << ((int)(0x1e - (iVar6 - (uint)(byte)PTR___gmpn_clz_tab_0009d18c[uVar11 >> iVar24]))\n                   >> 1 & 0x1fU))) - 5U | 1" (binary_expression "((1 << ((int)(0x1f - (iVar6 - (uint)(byte)PTR___gmpn_clz_tab_0009d18c[uVar11 >> iVar24])\n                         ) >> 1 & 0x1fU)) +\n            (1 << ((int)(0x1e - (iVar6 - (uint)(byte)PTR___gmpn_clz_tab_0009d18c[uVar11 >> iVar24]))\n                   >> 1 & 0x1fU))) - 5U" (parenthesized_expression "((1 << ((int)(0x1f - (iVar6 - (uint)(byte)PTR___gmpn_clz_tab_0009d18c[uVar11 >> iVar24])\n                         ) >> 1 & 0x1fU)) +\n            (1 << ((int)(0x1e - (iVar6 - (uint)(byte)PTR___gmpn_clz_tab_0009d18c[uVar11 >> iVar24]))\n                   >> 1 & 0x1fU)))" ( (binary_expression "(1 << ((int)(0x1f - (iVar6 - (uint)(byte)PTR___gmpn_clz_tab_0009d18c[uVar11 >> iVar24])\n                         ) >> 1 & 0x1fU)) +\n            (1 << ((int)(0x1e - (iVar6 - (uint)(byte)PTR___gmpn_clz_tab_0009d18c[uVar11 >> iVar24]))\n                   >> 1 & 0x1fU))" (parenthesized_expression "(1 << ((int)(0x1f - (iVar6 - (uint)(byte)PTR___gmpn_clz_tab_0009d18c[uVar11 >> iVar24])\n                         ) >> 1 & 0x1fU))" ( (binary_expression "1 << ((int)(0x1f - (iVar6 - (uint)(byte)PTR___gmpn_clz_tab_0009d18c[uVar11 >> iVar24])\n                         ) >> 1 & 0x1fU)" number_literal << (parenthesized_expression "((int)(0x1f - (iVar6 - (uint)(byte)PTR___gmpn_clz_tab_0009d18c[uVar11 >> iVar24])\n                         ) >> 1 & 0x1fU)" ( (binary_expression "(int)(0x1f - (iVar6 - (uint)(byte)PTR___gmpn_clz_tab_0009d18c[uVar11 >> iVar24])\n                         ) >> 1 & 0x1fU" (binary_expression "(int)(0x1f - (iVar6 - (uint)(byte)PTR___gmpn_clz_tab_0009d18c[uVar11 >> iVar24])\n                         ) >> 1" (cast_expression "(int)(0x1f - (iVar6 - (uint)(byte)PTR___gmpn_clz_tab_0009d18c[uVar11 >> iVar24])\n                         )" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(0x1f - (iVar6 - (uint)(byte)PTR___gmpn_clz_tab_0009d18c[uVar11 >> iVar24])\n                         )" ( (binary_expression "0x1f - (iVar6 - (uint)(byte)PTR___gmpn_clz_tab_0009d18c[uVar11 >> iVar24])" number_literal - (parenthesized_expression "(iVar6 - (uint)(byte)PTR___gmpn_clz_tab_0009d18c[uVar11 >> iVar24])" ( (binary_expression "iVar6 - (uint)(byte)PTR___gmpn_clz_tab_0009d18c[uVar11 >> iVar24]" identifier - (cast_expression "(uint)(byte)PTR___gmpn_clz_tab_0009d18c[uVar11 >> iVar24]" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(byte)PTR___gmpn_clz_tab_0009d18c[uVar11 >> iVar24]" ( (type_descriptor "byte" type_identifier) ) (subscript_expression "PTR___gmpn_clz_tab_0009d18c[uVar11 >> iVar24]" identifier [ (binary_expression "uVar11 >> iVar24" identifier >> identifier) ])))) ))) ))) >> number_literal) & number_literal) ))) )) + (parenthesized_expression "(1 << ((int)(0x1e - (iVar6 - (uint)(byte)PTR___gmpn_clz_tab_0009d18c[uVar11 >> iVar24]))\n                   >> 1 & 0x1fU))" ( (binary_expression "1 << ((int)(0x1e - (iVar6 - (uint)(byte)PTR___gmpn_clz_tab_0009d18c[uVar11 >> iVar24]))\n                   >> 1 & 0x1fU)" number_literal << (parenthesized_expression "((int)(0x1e - (iVar6 - (uint)(byte)PTR___gmpn_clz_tab_0009d18c[uVar11 >> iVar24]))\n                   >> 1 & 0x1fU)" ( (binary_expression "(int)(0x1e - (iVar6 - (uint)(byte)PTR___gmpn_clz_tab_0009d18c[uVar11 >> iVar24]))\n                   >> 1 & 0x1fU" (binary_expression "(int)(0x1e - (iVar6 - (uint)(byte)PTR___gmpn_clz_tab_0009d18c[uVar11 >> iVar24]))\n                   >> 1" (cast_expression "(int)(0x1e - (iVar6 - (uint)(byte)PTR___gmpn_clz_tab_0009d18c[uVar11 >> iVar24]))" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(0x1e - (iVar6 - (uint)(byte)PTR___gmpn_clz_tab_0009d18c[uVar11 >> iVar24]))" ( (binary_expression "0x1e - (iVar6 - (uint)(byte)PTR___gmpn_clz_tab_0009d18c[uVar11 >> iVar24])" number_literal - (parenthesized_expression "(iVar6 - (uint)(byte)PTR___gmpn_clz_tab_0009d18c[uVar11 >> iVar24])" ( (binary_expression "iVar6 - (uint)(byte)PTR___gmpn_clz_tab_0009d18c[uVar11 >> iVar24]" identifier - (cast_expression "(uint)(byte)PTR___gmpn_clz_tab_0009d18c[uVar11 >> iVar24]" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(byte)PTR___gmpn_clz_tab_0009d18c[uVar11 >> iVar24]" ( (type_descriptor "byte" type_identifier) ) (subscript_expression "PTR___gmpn_clz_tab_0009d18c[uVar11 >> iVar24]" identifier [ (binary_expression "uVar11 >> iVar24" identifier >> identifier) ])))) ))) ))) >> number_literal) & number_literal) ))) ))) )) - number_literal) | number_literal) )) / number_literal)) ;) (expression_statement "uVar26 = uVar42 + 1;" (assignment_expression "uVar26 = uVar42 + 1" identifier = (binary_expression "uVar42 + 1" identifier + number_literal)) ;) (expression_statement "uVar11 = (uint)bVar3;" (assignment_expression "uVar11 = (uint)bVar3" identifier = (cast_expression "(uint)bVar3" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "uVar23 = 0;" (assignment_expression "uVar23 = 0" identifier = number_literal) ;) (do_statement "do {\n    uVar35 = uVar23 + 1;\n    uVar21 = uVar11;\n    if ((uVar28 & *(uint *)(puVar13 + iVar29 * 4)) == 0) {\n      uVar12 = (uVar35 & 1) + 1 + uVar35 * 3;\n      if (uVar53 < uVar7) {\n        uVar21 = uVar11 + 1;\n        puVar8[uVar11] = uVar7;\n        uVar7 = 1;\n      }\n      uVar27 = 0;\n      uVar11 = param_3;\n      uVar25 = param_2;\n      do {\n        if (uVar12 == 0) {\n          trap(7);\n        }\n        if (uVar12 == 0) {\n          trap(7);\n        }\n        uVar54 = uVar25 / uVar12;\n        bVar3 = uVar25 % uVar12 < uVar11 % uVar12 + uVar27;\n        if (bVar3) {\n          uVar7 = uVar7 * uVar12;\n        }\n        uVar27 = (uint)bVar3;\n        uVar11 = uVar11 / uVar12;\n        uVar25 = uVar54;\n      } while (uVar12 <= uVar54);\n    }\n    uVar28 = uVar28 * 2 - ((int)uVar28 >> 0x1f);\n    bVar3 = uVar23 != uVar42;\n    iVar29 = iVar29 + (uVar28 & 1);\n    uVar11 = uVar21;\n    uVar23 = uVar35;\n  } while (bVar3);" do (compound_statement "{\n    uVar35 = uVar23 + 1;\n    uVar21 = uVar11;\n    if ((uVar28 & *(uint *)(puVar13 + iVar29 * 4)) == 0) {\n      uVar12 = (uVar35 & 1) + 1 + uVar35 * 3;\n      if (uVar53 < uVar7) {\n        uVar21 = uVar11 + 1;\n        puVar8[uVar11] = uVar7;\n        uVar7 = 1;\n      }\n      uVar27 = 0;\n      uVar11 = param_3;\n      uVar25 = param_2;\n      do {\n        if (uVar12 == 0) {\n          trap(7);\n        }\n        if (uVar12 == 0) {\n          trap(7);\n        }\n        uVar54 = uVar25 / uVar12;\n        bVar3 = uVar25 % uVar12 < uVar11 % uVar12 + uVar27;\n        if (bVar3) {\n          uVar7 = uVar7 * uVar12;\n        }\n        uVar27 = (uint)bVar3;\n        uVar11 = uVar11 / uVar12;\n        uVar25 = uVar54;\n      } while (uVar12 <= uVar54);\n    }\n    uVar28 = uVar28 * 2 - ((int)uVar28 >> 0x1f);\n    bVar3 = uVar23 != uVar42;\n    iVar29 = iVar29 + (uVar28 & 1);\n    uVar11 = uVar21;\n    uVar23 = uVar35;\n  }" { (expression_statement "uVar35 = uVar23 + 1;" (assignment_expression "uVar35 = uVar23 + 1" identifier = (binary_expression "uVar23 + 1" identifier + number_literal)) ;) (expression_statement "uVar21 = uVar11;" (assignment_expression "uVar21 = uVar11" identifier = identifier) ;) (if_statement "if ((uVar28 & *(uint *)(puVar13 + iVar29 * 4)) == 0) {\n      uVar12 = (uVar35 & 1) + 1 + uVar35 * 3;\n      if (uVar53 < uVar7) {\n        uVar21 = uVar11 + 1;\n        puVar8[uVar11] = uVar7;\n        uVar7 = 1;\n      }\n      uVar27 = 0;\n      uVar11 = param_3;\n      uVar25 = param_2;\n      do {\n        if (uVar12 == 0) {\n          trap(7);\n        }\n        if (uVar12 == 0) {\n          trap(7);\n        }\n        uVar54 = uVar25 / uVar12;\n        bVar3 = uVar25 % uVar12 < uVar11 % uVar12 + uVar27;\n        if (bVar3) {\n          uVar7 = uVar7 * uVar12;\n        }\n        uVar27 = (uint)bVar3;\n        uVar11 = uVar11 / uVar12;\n        uVar25 = uVar54;\n      } while (uVar12 <= uVar54);\n    }" if (parenthesized_expression "((uVar28 & *(uint *)(puVar13 + iVar29 * 4)) == 0)" ( (binary_expression "(uVar28 & *(uint *)(puVar13 + iVar29 * 4)) == 0" (parenthesized_expression "(uVar28 & *(uint *)(puVar13 + iVar29 * 4))" ( (binary_expression "uVar28 & *(uint *)(puVar13 + iVar29 * 4)" identifier & (pointer_expression "*(uint *)(puVar13 + iVar29 * 4)" * (cast_expression "(uint *)(puVar13 + iVar29 * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar13 + iVar29 * 4)" ( (binary_expression "puVar13 + iVar29 * 4" identifier + (binary_expression "iVar29 * 4" identifier * number_literal)) ))))) )) == number_literal) )) (compound_statement "{\n      uVar12 = (uVar35 & 1) + 1 + uVar35 * 3;\n      if (uVar53 < uVar7) {\n        uVar21 = uVar11 + 1;\n        puVar8[uVar11] = uVar7;\n        uVar7 = 1;\n      }\n      uVar27 = 0;\n      uVar11 = param_3;\n      uVar25 = param_2;\n      do {\n        if (uVar12 == 0) {\n          trap(7);\n        }\n        if (uVar12 == 0) {\n          trap(7);\n        }\n        uVar54 = uVar25 / uVar12;\n        bVar3 = uVar25 % uVar12 < uVar11 % uVar12 + uVar27;\n        if (bVar3) {\n          uVar7 = uVar7 * uVar12;\n        }\n        uVar27 = (uint)bVar3;\n        uVar11 = uVar11 / uVar12;\n        uVar25 = uVar54;\n      } while (uVar12 <= uVar54);\n    }" { (expression_statement "uVar12 = (uVar35 & 1) + 1 + uVar35 * 3;" (assignment_expression "uVar12 = (uVar35 & 1) + 1 + uVar35 * 3" identifier = (binary_expression "(uVar35 & 1) + 1 + uVar35 * 3" (binary_expression "(uVar35 & 1) + 1" (parenthesized_expression "(uVar35 & 1)" ( (binary_expression "uVar35 & 1" identifier & number_literal) )) + number_literal) + (binary_expression "uVar35 * 3" identifier * number_literal))) ;) (if_statement "if (uVar53 < uVar7) {\n        uVar21 = uVar11 + 1;\n        puVar8[uVar11] = uVar7;\n        uVar7 = 1;\n      }" if (parenthesized_expression "(uVar53 < uVar7)" ( (binary_expression "uVar53 < uVar7" identifier < identifier) )) (compound_statement "{\n        uVar21 = uVar11 + 1;\n        puVar8[uVar11] = uVar7;\n        uVar7 = 1;\n      }" { (expression_statement "uVar21 = uVar11 + 1;" (assignment_expression "uVar21 = uVar11 + 1" identifier = (binary_expression "uVar11 + 1" identifier + number_literal)) ;) (expression_statement "puVar8[uVar11] = uVar7;" (assignment_expression "puVar8[uVar11] = uVar7" (subscript_expression "puVar8[uVar11]" identifier [ identifier ]) = identifier) ;) (expression_statement "uVar7 = 1;" (assignment_expression "uVar7 = 1" identifier = number_literal) ;) })) (expression_statement "uVar27 = 0;" (assignment_expression "uVar27 = 0" identifier = number_literal) ;) (expression_statement "uVar11 = param_3;" (assignment_expression "uVar11 = param_3" identifier = identifier) ;) (expression_statement "uVar25 = param_2;" (assignment_expression "uVar25 = param_2" identifier = identifier) ;) (do_statement "do {\n        if (uVar12 == 0) {\n          trap(7);\n        }\n        if (uVar12 == 0) {\n          trap(7);\n        }\n        uVar54 = uVar25 / uVar12;\n        bVar3 = uVar25 % uVar12 < uVar11 % uVar12 + uVar27;\n        if (bVar3) {\n          uVar7 = uVar7 * uVar12;\n        }\n        uVar27 = (uint)bVar3;\n        uVar11 = uVar11 / uVar12;\n        uVar25 = uVar54;\n      } while (uVar12 <= uVar54);" do (compound_statement "{\n        if (uVar12 == 0) {\n          trap(7);\n        }\n        if (uVar12 == 0) {\n          trap(7);\n        }\n        uVar54 = uVar25 / uVar12;\n        bVar3 = uVar25 % uVar12 < uVar11 % uVar12 + uVar27;\n        if (bVar3) {\n          uVar7 = uVar7 * uVar12;\n        }\n        uVar27 = (uint)bVar3;\n        uVar11 = uVar11 / uVar12;\n        uVar25 = uVar54;\n      }" { (if_statement "if (uVar12 == 0) {\n          trap(7);\n        }" if (parenthesized_expression "(uVar12 == 0)" ( (binary_expression "uVar12 == 0" identifier == number_literal) )) (compound_statement "{\n          trap(7);\n        }" { (expression_statement "trap(7);" (call_expression "trap(7)" identifier (argument_list "(7)" ( number_literal ))) ;) })) (if_statement "if (uVar12 == 0) {\n          trap(7);\n        }" if (parenthesized_expression "(uVar12 == 0)" ( (binary_expression "uVar12 == 0" identifier == number_literal) )) (compound_statement "{\n          trap(7);\n        }" { (expression_statement "trap(7);" (call_expression "trap(7)" identifier (argument_list "(7)" ( number_literal ))) ;) })) (expression_statement "uVar54 = uVar25 / uVar12;" (assignment_expression "uVar54 = uVar25 / uVar12" identifier = (binary_expression "uVar25 / uVar12" identifier / identifier)) ;) (expression_statement "bVar3 = uVar25 % uVar12 < uVar11 % uVar12 + uVar27;" (assignment_expression "bVar3 = uVar25 % uVar12 < uVar11 % uVar12 + uVar27" identifier = (binary_expression "uVar25 % uVar12 < uVar11 % uVar12 + uVar27" (binary_expression "uVar25 % uVar12" identifier % identifier) < (binary_expression "uVar11 % uVar12 + uVar27" (binary_expression "uVar11 % uVar12" identifier % identifier) + identifier))) ;) (if_statement "if (bVar3) {\n          uVar7 = uVar7 * uVar12;\n        }" if (parenthesized_expression "(bVar3)" ( identifier )) (compound_statement "{\n          uVar7 = uVar7 * uVar12;\n        }" { (expression_statement "uVar7 = uVar7 * uVar12;" (assignment_expression "uVar7 = uVar7 * uVar12" identifier = (binary_expression "uVar7 * uVar12" identifier * identifier)) ;) })) (expression_statement "uVar27 = (uint)bVar3;" (assignment_expression "uVar27 = (uint)bVar3" identifier = (cast_expression "(uint)bVar3" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "uVar11 = uVar11 / uVar12;" (assignment_expression "uVar11 = uVar11 / uVar12" identifier = (binary_expression "uVar11 / uVar12" identifier / identifier)) ;) (expression_statement "uVar25 = uVar54;" (assignment_expression "uVar25 = uVar54" identifier = identifier) ;) }) while (parenthesized_expression "(uVar12 <= uVar54)" ( (binary_expression "uVar12 <= uVar54" identifier <= identifier) )) ;) })) (expression_statement "uVar28 = uVar28 * 2 - ((int)uVar28 >> 0x1f);" (assignment_expression "uVar28 = uVar28 * 2 - ((int)uVar28 >> 0x1f)" identifier = (binary_expression "uVar28 * 2 - ((int)uVar28 >> 0x1f)" (binary_expression "uVar28 * 2" identifier * number_literal) - (parenthesized_expression "((int)uVar28 >> 0x1f)" ( (binary_expression "(int)uVar28 >> 0x1f" (cast_expression "(int)uVar28" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal) )))) ;) (expression_statement "bVar3 = uVar23 != uVar42;" (assignment_expression "bVar3 = uVar23 != uVar42" identifier = (binary_expression "uVar23 != uVar42" identifier != identifier)) ;) (expression_statement "iVar29 = iVar29 + (uVar28 & 1);" (assignment_expression "iVar29 = iVar29 + (uVar28 & 1)" identifier = (binary_expression "iVar29 + (uVar28 & 1)" identifier + (parenthesized_expression "(uVar28 & 1)" ( (binary_expression "uVar28 & 1" identifier & number_literal) )))) ;) (expression_statement "uVar11 = uVar21;" (assignment_expression "uVar11 = uVar21" identifier = identifier) ;) (expression_statement "uVar23 = uVar35;" (assignment_expression "uVar23 = uVar35" identifier = identifier) ;) }) while (parenthesized_expression "(bVar3)" ( identifier )) ;) (expression_statement "uVar23 = uVar26 >> 5;" (assignment_expression "uVar23 = uVar26 >> 5" identifier = (binary_expression "uVar26 >> 5" identifier >> number_literal)) ;) (expression_statement "uVar11 = 1 << (uVar26 & 0x1f);" (assignment_expression "uVar11 = 1 << (uVar26 & 0x1f)" identifier = (binary_expression "1 << (uVar26 & 0x1f)" number_literal << (parenthesized_expression "(uVar26 & 0x1f)" ( (binary_expression "uVar26 & 0x1f" identifier & number_literal) )))) ;) (expression_statement "uVar28 = (uVar40 - 5 | 1) / 3;" (assignment_expression "uVar28 = (uVar40 - 5 | 1) / 3" identifier = (binary_expression "(uVar40 - 5 | 1) / 3" (parenthesized_expression "(uVar40 - 5 | 1)" ( (binary_expression "uVar40 - 5 | 1" (binary_expression "uVar40 - 5" identifier - number_literal) | number_literal) )) / number_literal)) ;) (do_statement "do {\n    while( true ) {\n      uVar26 = uVar26 + 1;\n      uVar42 = uVar21;\n      if ((uVar11 & *(uint *)(puVar13 + uVar23 * 4)) == 0) break;\nLAB_00021e80:\n      uVar11 = uVar11 * 2 - ((int)uVar11 >> 0x1f);\n      uVar23 = uVar23 + (uVar11 & 1);\n      uVar21 = uVar42;\n      if (uVar28 < uVar26) goto LAB_00021f04;\n    }\n    uVar12 = (uVar26 & 1) + 1 + uVar26 * 3;\n    if (uVar12 == 0) {\n      trap(7);\n    }\n    if (uVar12 == 0) {\n      trap(7);\n    }\n    if (param_3 % uVar12 <= param_2 % uVar12) goto LAB_00021e80;\n    if (uVar53 << 1 < uVar7) {\n      uVar42 = uVar21 + 1;\n      puVar8[uVar21] = uVar7;\n      uVar7 = uVar12;\n      goto LAB_00021e80;\n    }\n    uVar11 = uVar11 * 2 - ((int)uVar11 >> 0x1f);\n    uVar7 = uVar7 * uVar12;\n    uVar23 = uVar23 + (uVar11 & 1);\n  } while (uVar26 <= uVar28);" do (compound_statement "{\n    while( true ) {\n      uVar26 = uVar26 + 1;\n      uVar42 = uVar21;\n      if ((uVar11 & *(uint *)(puVar13 + uVar23 * 4)) == 0) break;\nLAB_00021e80:\n      uVar11 = uVar11 * 2 - ((int)uVar11 >> 0x1f);\n      uVar23 = uVar23 + (uVar11 & 1);\n      uVar21 = uVar42;\n      if (uVar28 < uVar26) goto LAB_00021f04;\n    }\n    uVar12 = (uVar26 & 1) + 1 + uVar26 * 3;\n    if (uVar12 == 0) {\n      trap(7);\n    }\n    if (uVar12 == 0) {\n      trap(7);\n    }\n    if (param_3 % uVar12 <= param_2 % uVar12) goto LAB_00021e80;\n    if (uVar53 << 1 < uVar7) {\n      uVar42 = uVar21 + 1;\n      puVar8[uVar21] = uVar7;\n      uVar7 = uVar12;\n      goto LAB_00021e80;\n    }\n    uVar11 = uVar11 * 2 - ((int)uVar11 >> 0x1f);\n    uVar7 = uVar7 * uVar12;\n    uVar23 = uVar23 + (uVar11 & 1);\n  }" { (while_statement "while( true ) {\n      uVar26 = uVar26 + 1;\n      uVar42 = uVar21;\n      if ((uVar11 & *(uint *)(puVar13 + uVar23 * 4)) == 0) break;\nLAB_00021e80:\n      uVar11 = uVar11 * 2 - ((int)uVar11 >> 0x1f);\n      uVar23 = uVar23 + (uVar11 & 1);\n      uVar21 = uVar42;\n      if (uVar28 < uVar26) goto LAB_00021f04;\n    }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n      uVar26 = uVar26 + 1;\n      uVar42 = uVar21;\n      if ((uVar11 & *(uint *)(puVar13 + uVar23 * 4)) == 0) break;\nLAB_00021e80:\n      uVar11 = uVar11 * 2 - ((int)uVar11 >> 0x1f);\n      uVar23 = uVar23 + (uVar11 & 1);\n      uVar21 = uVar42;\n      if (uVar28 < uVar26) goto LAB_00021f04;\n    }" { (expression_statement "uVar26 = uVar26 + 1;" (assignment_expression "uVar26 = uVar26 + 1" identifier = (binary_expression "uVar26 + 1" identifier + number_literal)) ;) (expression_statement "uVar42 = uVar21;" (assignment_expression "uVar42 = uVar21" identifier = identifier) ;) (if_statement "if ((uVar11 & *(uint *)(puVar13 + uVar23 * 4)) == 0) break;" if (parenthesized_expression "((uVar11 & *(uint *)(puVar13 + uVar23 * 4)) == 0)" ( (binary_expression "(uVar11 & *(uint *)(puVar13 + uVar23 * 4)) == 0" (parenthesized_expression "(uVar11 & *(uint *)(puVar13 + uVar23 * 4))" ( (binary_expression "uVar11 & *(uint *)(puVar13 + uVar23 * 4)" identifier & (pointer_expression "*(uint *)(puVar13 + uVar23 * 4)" * (cast_expression "(uint *)(puVar13 + uVar23 * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar13 + uVar23 * 4)" ( (binary_expression "puVar13 + uVar23 * 4" identifier + (binary_expression "uVar23 * 4" identifier * number_literal)) ))))) )) == number_literal) )) (break_statement "break;" break ;)) (labeled_statement "LAB_00021e80:\n      uVar11 = uVar11 * 2 - ((int)uVar11 >> 0x1f);" statement_identifier : (expression_statement "uVar11 = uVar11 * 2 - ((int)uVar11 >> 0x1f);" (assignment_expression "uVar11 = uVar11 * 2 - ((int)uVar11 >> 0x1f)" identifier = (binary_expression "uVar11 * 2 - ((int)uVar11 >> 0x1f)" (binary_expression "uVar11 * 2" identifier * number_literal) - (parenthesized_expression "((int)uVar11 >> 0x1f)" ( (binary_expression "(int)uVar11 >> 0x1f" (cast_expression "(int)uVar11" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal) )))) ;)) (expression_statement "uVar23 = uVar23 + (uVar11 & 1);" (assignment_expression "uVar23 = uVar23 + (uVar11 & 1)" identifier = (binary_expression "uVar23 + (uVar11 & 1)" identifier + (parenthesized_expression "(uVar11 & 1)" ( (binary_expression "uVar11 & 1" identifier & number_literal) )))) ;) (expression_statement "uVar21 = uVar42;" (assignment_expression "uVar21 = uVar42" identifier = identifier) ;) (if_statement "if (uVar28 < uVar26) goto LAB_00021f04;" if (parenthesized_expression "(uVar28 < uVar26)" ( (binary_expression "uVar28 < uVar26" identifier < identifier) )) (goto_statement "goto LAB_00021f04;" goto statement_identifier ;)) })) (expression_statement "uVar12 = (uVar26 & 1) + 1 + uVar26 * 3;" (assignment_expression "uVar12 = (uVar26 & 1) + 1 + uVar26 * 3" identifier = (binary_expression "(uVar26 & 1) + 1 + uVar26 * 3" (binary_expression "(uVar26 & 1) + 1" (parenthesized_expression "(uVar26 & 1)" ( (binary_expression "uVar26 & 1" identifier & number_literal) )) + number_literal) + (binary_expression "uVar26 * 3" identifier * number_literal))) ;) (if_statement "if (uVar12 == 0) {\n      trap(7);\n    }" if (parenthesized_expression "(uVar12 == 0)" ( (binary_expression "uVar12 == 0" identifier == number_literal) )) (compound_statement "{\n      trap(7);\n    }" { (expression_statement "trap(7);" (call_expression "trap(7)" identifier (argument_list "(7)" ( number_literal ))) ;) })) (if_statement "if (uVar12 == 0) {\n      trap(7);\n    }" if (parenthesized_expression "(uVar12 == 0)" ( (binary_expression "uVar12 == 0" identifier == number_literal) )) (compound_statement "{\n      trap(7);\n    }" { (expression_statement "trap(7);" (call_expression "trap(7)" identifier (argument_list "(7)" ( number_literal ))) ;) })) (if_statement "if (param_3 % uVar12 <= param_2 % uVar12) goto LAB_00021e80;" if (parenthesized_expression "(param_3 % uVar12 <= param_2 % uVar12)" ( (binary_expression "param_3 % uVar12 <= param_2 % uVar12" (binary_expression "param_3 % uVar12" identifier % identifier) <= (binary_expression "param_2 % uVar12" identifier % identifier)) )) (goto_statement "goto LAB_00021e80;" goto statement_identifier ;)) (if_statement "if (uVar53 << 1 < uVar7) {\n      uVar42 = uVar21 + 1;\n      puVar8[uVar21] = uVar7;\n      uVar7 = uVar12;\n      goto LAB_00021e80;\n    }" if (parenthesized_expression "(uVar53 << 1 < uVar7)" ( (binary_expression "uVar53 << 1 < uVar7" (binary_expression "uVar53 << 1" identifier << number_literal) < identifier) )) (compound_statement "{\n      uVar42 = uVar21 + 1;\n      puVar8[uVar21] = uVar7;\n      uVar7 = uVar12;\n      goto LAB_00021e80;\n    }" { (expression_statement "uVar42 = uVar21 + 1;" (assignment_expression "uVar42 = uVar21 + 1" identifier = (binary_expression "uVar21 + 1" identifier + number_literal)) ;) (expression_statement "puVar8[uVar21] = uVar7;" (assignment_expression "puVar8[uVar21] = uVar7" (subscript_expression "puVar8[uVar21]" identifier [ identifier ]) = identifier) ;) (expression_statement "uVar7 = uVar12;" (assignment_expression "uVar7 = uVar12" identifier = identifier) ;) (goto_statement "goto LAB_00021e80;" goto statement_identifier ;) })) (expression_statement "uVar11 = uVar11 * 2 - ((int)uVar11 >> 0x1f);" (assignment_expression "uVar11 = uVar11 * 2 - ((int)uVar11 >> 0x1f)" identifier = (binary_expression "uVar11 * 2 - ((int)uVar11 >> 0x1f)" (binary_expression "uVar11 * 2" identifier * number_literal) - (parenthesized_expression "((int)uVar11 >> 0x1f)" ( (binary_expression "(int)uVar11 >> 0x1f" (cast_expression "(int)uVar11" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal) )))) ;) (expression_statement "uVar7 = uVar7 * uVar12;" (assignment_expression "uVar7 = uVar7 * uVar12" identifier = (binary_expression "uVar7 * uVar12" identifier * identifier)) ;) (expression_statement "uVar23 = uVar23 + (uVar11 & 1);" (assignment_expression "uVar23 = uVar23 + (uVar11 & 1)" identifier = (binary_expression "uVar23 + (uVar11 & 1)" identifier + (parenthesized_expression "(uVar11 & 1)" ( (binary_expression "uVar11 & 1" identifier & number_literal) )))) ;) }) while (parenthesized_expression "(uVar26 <= uVar28)" ( (binary_expression "uVar26 <= uVar28" identifier <= identifier) )) ;) (labeled_statement "LAB_00021f04:\n  uVar18 = (uVar18 - 5 | 1) / 3 + 1;" statement_identifier : (expression_statement "uVar18 = (uVar18 - 5 | 1) / 3 + 1;" (assignment_expression "uVar18 = (uVar18 - 5 | 1) / 3 + 1" identifier = (binary_expression "(uVar18 - 5 | 1) / 3 + 1" (binary_expression "(uVar18 - 5 | 1) / 3" (parenthesized_expression "(uVar18 - 5 | 1)" ( (binary_expression "uVar18 - 5 | 1" (binary_expression "uVar18 - 5" identifier - number_literal) | number_literal) )) / number_literal) + number_literal)) ;)) (expression_statement "uVar23 = uVar18 >> 5;" (assignment_expression "uVar23 = uVar18 >> 5" identifier = (binary_expression "uVar18 >> 5" identifier >> number_literal)) ;) (expression_statement "uVar37 = uVar37 / 3;" (assignment_expression "uVar37 = uVar37 / 3" identifier = (binary_expression "uVar37 / 3" identifier / number_literal)) ;) (expression_statement "uVar11 = 1 << (uVar18 & 0x1f);" (assignment_expression "uVar11 = 1 << (uVar18 & 0x1f)" identifier = (binary_expression "1 << (uVar18 & 0x1f)" number_literal << (parenthesized_expression "(uVar18 & 0x1f)" ( (binary_expression "uVar18 & 0x1f" identifier & number_literal) )))) ;) (do_statement "do {\n    while( true ) {\n      uVar18 = uVar18 + 1;\n      uVar26 = uVar42;\n      if ((uVar11 & *(uint *)(puVar13 + uVar23 * 4)) == 0) break;\nLAB_00021f58:\n      uVar11 = uVar11 * 2 - ((int)uVar11 >> 0x1f);\n      uVar23 = uVar23 + (uVar11 & 1);\n      uVar42 = uVar26;\n      if (uVar37 < uVar18) goto LAB_00021fb8;\n    }\n    uVar28 = (uVar18 & 1) + 1 + uVar18 * 3;\n    if ((uVar53 & 0x7fffffff) < uVar7) {\n      uVar26 = uVar42 + 1;\n      puVar8[uVar42] = uVar7;\n      uVar7 = uVar28;\n      goto LAB_00021f58;\n    }\n    uVar11 = uVar11 * 2 - ((int)uVar11 >> 0x1f);\n    uVar7 = uVar7 * uVar28;\n    uVar23 = uVar23 + (uVar11 & 1);\n  } while (uVar18 <= uVar37);" do (compound_statement "{\n    while( true ) {\n      uVar18 = uVar18 + 1;\n      uVar26 = uVar42;\n      if ((uVar11 & *(uint *)(puVar13 + uVar23 * 4)) == 0) break;\nLAB_00021f58:\n      uVar11 = uVar11 * 2 - ((int)uVar11 >> 0x1f);\n      uVar23 = uVar23 + (uVar11 & 1);\n      uVar42 = uVar26;\n      if (uVar37 < uVar18) goto LAB_00021fb8;\n    }\n    uVar28 = (uVar18 & 1) + 1 + uVar18 * 3;\n    if ((uVar53 & 0x7fffffff) < uVar7) {\n      uVar26 = uVar42 + 1;\n      puVar8[uVar42] = uVar7;\n      uVar7 = uVar28;\n      goto LAB_00021f58;\n    }\n    uVar11 = uVar11 * 2 - ((int)uVar11 >> 0x1f);\n    uVar7 = uVar7 * uVar28;\n    uVar23 = uVar23 + (uVar11 & 1);\n  }" { (while_statement "while( true ) {\n      uVar18 = uVar18 + 1;\n      uVar26 = uVar42;\n      if ((uVar11 & *(uint *)(puVar13 + uVar23 * 4)) == 0) break;\nLAB_00021f58:\n      uVar11 = uVar11 * 2 - ((int)uVar11 >> 0x1f);\n      uVar23 = uVar23 + (uVar11 & 1);\n      uVar42 = uVar26;\n      if (uVar37 < uVar18) goto LAB_00021fb8;\n    }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n      uVar18 = uVar18 + 1;\n      uVar26 = uVar42;\n      if ((uVar11 & *(uint *)(puVar13 + uVar23 * 4)) == 0) break;\nLAB_00021f58:\n      uVar11 = uVar11 * 2 - ((int)uVar11 >> 0x1f);\n      uVar23 = uVar23 + (uVar11 & 1);\n      uVar42 = uVar26;\n      if (uVar37 < uVar18) goto LAB_00021fb8;\n    }" { (expression_statement "uVar18 = uVar18 + 1;" (assignment_expression "uVar18 = uVar18 + 1" identifier = (binary_expression "uVar18 + 1" identifier + number_literal)) ;) (expression_statement "uVar26 = uVar42;" (assignment_expression "uVar26 = uVar42" identifier = identifier) ;) (if_statement "if ((uVar11 & *(uint *)(puVar13 + uVar23 * 4)) == 0) break;" if (parenthesized_expression "((uVar11 & *(uint *)(puVar13 + uVar23 * 4)) == 0)" ( (binary_expression "(uVar11 & *(uint *)(puVar13 + uVar23 * 4)) == 0" (parenthesized_expression "(uVar11 & *(uint *)(puVar13 + uVar23 * 4))" ( (binary_expression "uVar11 & *(uint *)(puVar13 + uVar23 * 4)" identifier & (pointer_expression "*(uint *)(puVar13 + uVar23 * 4)" * (cast_expression "(uint *)(puVar13 + uVar23 * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar13 + uVar23 * 4)" ( (binary_expression "puVar13 + uVar23 * 4" identifier + (binary_expression "uVar23 * 4" identifier * number_literal)) ))))) )) == number_literal) )) (break_statement "break;" break ;)) (labeled_statement "LAB_00021f58:\n      uVar11 = uVar11 * 2 - ((int)uVar11 >> 0x1f);" statement_identifier : (expression_statement "uVar11 = uVar11 * 2 - ((int)uVar11 >> 0x1f);" (assignment_expression "uVar11 = uVar11 * 2 - ((int)uVar11 >> 0x1f)" identifier = (binary_expression "uVar11 * 2 - ((int)uVar11 >> 0x1f)" (binary_expression "uVar11 * 2" identifier * number_literal) - (parenthesized_expression "((int)uVar11 >> 0x1f)" ( (binary_expression "(int)uVar11 >> 0x1f" (cast_expression "(int)uVar11" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal) )))) ;)) (expression_statement "uVar23 = uVar23 + (uVar11 & 1);" (assignment_expression "uVar23 = uVar23 + (uVar11 & 1)" identifier = (binary_expression "uVar23 + (uVar11 & 1)" identifier + (parenthesized_expression "(uVar11 & 1)" ( (binary_expression "uVar11 & 1" identifier & number_literal) )))) ;) (expression_statement "uVar42 = uVar26;" (assignment_expression "uVar42 = uVar26" identifier = identifier) ;) (if_statement "if (uVar37 < uVar18) goto LAB_00021fb8;" if (parenthesized_expression "(uVar37 < uVar18)" ( (binary_expression "uVar37 < uVar18" identifier < identifier) )) (goto_statement "goto LAB_00021fb8;" goto statement_identifier ;)) })) (expression_statement "uVar28 = (uVar18 & 1) + 1 + uVar18 * 3;" (assignment_expression "uVar28 = (uVar18 & 1) + 1 + uVar18 * 3" identifier = (binary_expression "(uVar18 & 1) + 1 + uVar18 * 3" (binary_expression "(uVar18 & 1) + 1" (parenthesized_expression "(uVar18 & 1)" ( (binary_expression "uVar18 & 1" identifier & number_literal) )) + number_literal) + (binary_expression "uVar18 * 3" identifier * number_literal))) ;) (if_statement "if ((uVar53 & 0x7fffffff) < uVar7) {\n      uVar26 = uVar42 + 1;\n      puVar8[uVar42] = uVar7;\n      uVar7 = uVar28;\n      goto LAB_00021f58;\n    }" if (parenthesized_expression "((uVar53 & 0x7fffffff) < uVar7)" ( (binary_expression "(uVar53 & 0x7fffffff) < uVar7" (parenthesized_expression "(uVar53 & 0x7fffffff)" ( (binary_expression "uVar53 & 0x7fffffff" identifier & number_literal) )) < identifier) )) (compound_statement "{\n      uVar26 = uVar42 + 1;\n      puVar8[uVar42] = uVar7;\n      uVar7 = uVar28;\n      goto LAB_00021f58;\n    }" { (expression_statement "uVar26 = uVar42 + 1;" (assignment_expression "uVar26 = uVar42 + 1" identifier = (binary_expression "uVar42 + 1" identifier + number_literal)) ;) (expression_statement "puVar8[uVar42] = uVar7;" (assignment_expression "puVar8[uVar42] = uVar7" (subscript_expression "puVar8[uVar42]" identifier [ identifier ]) = identifier) ;) (expression_statement "uVar7 = uVar28;" (assignment_expression "uVar7 = uVar28" identifier = identifier) ;) (goto_statement "goto LAB_00021f58;" goto statement_identifier ;) })) (expression_statement "uVar11 = uVar11 * 2 - ((int)uVar11 >> 0x1f);" (assignment_expression "uVar11 = uVar11 * 2 - ((int)uVar11 >> 0x1f)" identifier = (binary_expression "uVar11 * 2 - ((int)uVar11 >> 0x1f)" (binary_expression "uVar11 * 2" identifier * number_literal) - (parenthesized_expression "((int)uVar11 >> 0x1f)" ( (binary_expression "(int)uVar11 >> 0x1f" (cast_expression "(int)uVar11" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal) )))) ;) (expression_statement "uVar7 = uVar7 * uVar28;" (assignment_expression "uVar7 = uVar7 * uVar28" identifier = (binary_expression "uVar7 * uVar28" identifier * identifier)) ;) (expression_statement "uVar23 = uVar23 + (uVar11 & 1);" (assignment_expression "uVar23 = uVar23 + (uVar11 & 1)" identifier = (binary_expression "uVar23 + (uVar11 & 1)" identifier + (parenthesized_expression "(uVar11 & 1)" ( (binary_expression "uVar11 & 1" identifier & number_literal) )))) ;) }) while (parenthesized_expression "(uVar18 <= uVar37)" ( (binary_expression "uVar18 <= uVar37" identifier <= identifier) )) ;) (labeled_statement "LAB_00021fb8:\n  if (uVar26 == 0) {\n    **(uint **)(param_1 + 8) = uVar7;\n    *(undefined4 *)(param_1 + 4) = 1;\n    uVar18 = 0;\n    iVar6 = local_30;\n  }\n  else {\n    uVar18 = uVar26 + 1;\n    puVar8[uVar26] = uVar7;\n    (*(code *)PTR___gmpz_prodlimbs_0009d284)(param_1);\n    iVar6 = local_30;\n  }" statement_identifier : (if_statement "if (uVar26 == 0) {\n    **(uint **)(param_1 + 8) = uVar7;\n    *(undefined4 *)(param_1 + 4) = 1;\n    uVar18 = 0;\n    iVar6 = local_30;\n  }\n  else {\n    uVar18 = uVar26 + 1;\n    puVar8[uVar26] = uVar7;\n    (*(code *)PTR___gmpz_prodlimbs_0009d284)(param_1);\n    iVar6 = local_30;\n  }" if (parenthesized_expression "(uVar26 == 0)" ( (binary_expression "uVar26 == 0" identifier == number_literal) )) (compound_statement "{\n    **(uint **)(param_1 + 8) = uVar7;\n    *(undefined4 *)(param_1 + 4) = 1;\n    uVar18 = 0;\n    iVar6 = local_30;\n  }" { (expression_statement "**(uint **)(param_1 + 8) = uVar7;" (assignment_expression "**(uint **)(param_1 + 8) = uVar7" (pointer_expression "**(uint **)(param_1 + 8)" * (pointer_expression "*(uint **)(param_1 + 8)" * (cast_expression "(uint **)(param_1 + 8)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) ))))) = identifier) ;) (expression_statement "*(undefined4 *)(param_1 + 4) = 1;" (assignment_expression "*(undefined4 *)(param_1 + 4) = 1" (pointer_expression "*(undefined4 *)(param_1 + 4)" * (cast_expression "(undefined4 *)(param_1 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) )))) = number_literal) ;) (expression_statement "uVar18 = 0;" (assignment_expression "uVar18 = 0" identifier = number_literal) ;) (expression_statement "iVar6 = local_30;" (assignment_expression "iVar6 = local_30" identifier = identifier) ;) }) (else_clause "else {\n    uVar18 = uVar26 + 1;\n    puVar8[uVar26] = uVar7;\n    (*(code *)PTR___gmpz_prodlimbs_0009d284)(param_1);\n    iVar6 = local_30;\n  }" else (compound_statement "{\n    uVar18 = uVar26 + 1;\n    puVar8[uVar26] = uVar7;\n    (*(code *)PTR___gmpz_prodlimbs_0009d284)(param_1);\n    iVar6 = local_30;\n  }" { (expression_statement "uVar18 = uVar26 + 1;" (assignment_expression "uVar18 = uVar26 + 1" identifier = (binary_expression "uVar26 + 1" identifier + number_literal)) ;) (expression_statement "puVar8[uVar26] = uVar7;" (assignment_expression "puVar8[uVar26] = uVar7" (subscript_expression "puVar8[uVar26]" identifier [ identifier ]) = identifier) ;) (expression_statement "(*(code *)PTR___gmpz_prodlimbs_0009d284)(param_1);" (call_expression "(*(code *)PTR___gmpz_prodlimbs_0009d284)(param_1)" (parenthesized_expression "(*(code *)PTR___gmpz_prodlimbs_0009d284)" ( (pointer_expression "*(code *)PTR___gmpz_prodlimbs_0009d284" * (cast_expression "(code *)PTR___gmpz_prodlimbs_0009d284" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(param_1)" ( identifier ))) ;) (expression_statement "iVar6 = local_30;" (assignment_expression "iVar6 = local_30" identifier = identifier) ;) })))) (expression_statement "local_30 = iVar6;" (assignment_expression "local_30 = iVar6" identifier = identifier) ;) (if_statement "if (iVar6 != 0) {\n    (*(code *)PTR___gmp_tmp_reentrant_free_0009d618)();\n  }" if (parenthesized_expression "(iVar6 != 0)" ( (binary_expression "iVar6 != 0" identifier != number_literal) )) (compound_statement "{\n    (*(code *)PTR___gmp_tmp_reentrant_free_0009d618)();\n  }" { (expression_statement "(*(code *)PTR___gmp_tmp_reentrant_free_0009d618)();" (call_expression "(*(code *)PTR___gmp_tmp_reentrant_free_0009d618)()" (parenthesized_expression "(*(code *)PTR___gmp_tmp_reentrant_free_0009d618)" ( (pointer_expression "*(code *)PTR___gmp_tmp_reentrant_free_0009d618" * (cast_expression "(code *)PTR___gmp_tmp_reentrant_free_0009d618" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) })) (expression_statement "iVar24 = *(int *)puVar5;" (assignment_expression "iVar24 = *(int *)puVar5" identifier = (pointer_expression "*(int *)puVar5" * (cast_expression "(int *)puVar5" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;) (if_statement "if (local_2c == iVar24) {\n    return iVar24;\n  }" if (parenthesized_expression "(local_2c == iVar24)" ( (binary_expression "local_2c == iVar24" identifier == identifier) )) (compound_statement "{\n    return iVar24;\n  }" { (return_statement "return iVar24;" return identifier ;) })) (expression_statement "pcVar51 = FUN_0002209c;" (assignment_expression "pcVar51 = FUN_0002209c" identifier = identifier) ;) (expression_statement "puVar14 = PTR___stack_chk_fail_0009d4d0;" (assignment_expression "puVar14 = PTR___stack_chk_fail_0009d4d0" identifier = identifier) ;) (expression_statement "(*(code *)PTR___stack_chk_fail_0009d4d0)();" (call_expression "(*(code *)PTR___stack_chk_fail_0009d4d0)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_0009d4d0)" ( (pointer_expression "*(code *)PTR___stack_chk_fail_0009d4d0" * (cast_expression "(code *)PTR___stack_chk_fail_0009d4d0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (expression_statement "puVar43 = puVar14 + 0x82fa4;" (assignment_expression "puVar43 = puVar14 + 0x82fa4" identifier = (binary_expression "puVar14 + 0x82fa4" identifier + number_literal)) ;) (expression_statement "puVar47 = puVar46 + -0x90;" (assignment_expression "puVar47 = puVar46 + -0x90" identifier = (binary_expression "puVar46 + -0x90" identifier + number_literal)) ;) (expression_statement "puVar50 = puVar46 + -0x90;" (assignment_expression "puVar50 = puVar46 + -0x90" identifier = (binary_expression "puVar46 + -0x90" identifier + number_literal)) ;) (expression_statement "puVar49 = puVar46 + -0x90;" (assignment_expression "puVar49 = puVar46 + -0x90" identifier = (binary_expression "puVar46 + -0x90" identifier + number_literal)) ;) (expression_statement "*(int *)(puVar46 + -0x24) = param_1;" (assignment_expression "*(int *)(puVar46 + -0x24) = param_1" (pointer_expression "*(int *)(puVar46 + -0x24)" * (cast_expression "(int *)(puVar46 + -0x24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar46 + -0x24)" ( (binary_expression "puVar46 + -0x24" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined1 **)(puVar46 + -8) = auStack_48;" (assignment_expression "*(undefined1 **)(puVar46 + -8) = auStack_48" (pointer_expression "*(undefined1 **)(puVar46 + -8)" * (cast_expression "(undefined1 **)(puVar46 + -8)" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar46 + -8)" ( (binary_expression "puVar46 + -8" identifier + number_literal) )))) = identifier) ;) (expression_statement "puVar19 = *(undefined4 **)(puVar14 + 0x7b4a4);" (assignment_expression "puVar19 = *(undefined4 **)(puVar14 + 0x7b4a4)" identifier = (pointer_expression "*(undefined4 **)(puVar14 + 0x7b4a4)" * (cast_expression "(undefined4 **)(puVar14 + 0x7b4a4)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar14 + 0x7b4a4)" ( (binary_expression "puVar14 + 0x7b4a4" identifier + number_literal) ))))) ;) (expression_statement "*(code **)(puVar46 + -4) = pcVar51;" (assignment_expression "*(code **)(puVar46 + -4) = pcVar51" (pointer_expression "*(code **)(puVar46 + -4)" * (cast_expression "(code **)(puVar46 + -4)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar46 + -4)" ( (binary_expression "puVar46 + -4" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(puVar46 + -0x6c) = iVar6;" (assignment_expression "*(int *)(puVar46 + -0x6c) = iVar6" (pointer_expression "*(int *)(puVar46 + -0x6c)" * (cast_expression "(int *)(puVar46 + -0x6c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar46 + -0x6c)" ( (binary_expression "puVar46 + -0x6c" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(uint *)(puVar46 + -0xc) = uVar40;" (assignment_expression "*(uint *)(puVar46 + -0xc) = uVar40" (pointer_expression "*(uint *)(puVar46 + -0xc)" * (cast_expression "(uint *)(puVar46 + -0xc)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar46 + -0xc)" ( (binary_expression "puVar46 + -0xc" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(uint *)(puVar46 + -0x10) = param_3;" (assignment_expression "*(uint *)(puVar46 + -0x10) = param_3" (pointer_expression "*(uint *)(puVar46 + -0x10)" * (cast_expression "(uint *)(puVar46 + -0x10)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar46 + -0x10)" ( (binary_expression "puVar46 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(uint *)(puVar46 + -0x14) = uVar37;" (assignment_expression "*(uint *)(puVar46 + -0x14) = uVar37" (pointer_expression "*(uint *)(puVar46 + -0x14)" * (cast_expression "(uint *)(puVar46 + -0x14)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar46 + -0x14)" ( (binary_expression "puVar46 + -0x14" identifier + number_literal) )))) = identifier) ;) (expression_statement "uVar37 = (((uint)puVar8 >> 5) + 1) * 3;" (assignment_expression "uVar37 = (((uint)puVar8 >> 5) + 1) * 3" identifier = (binary_expression "(((uint)puVar8 >> 5) + 1) * 3" (parenthesized_expression "(((uint)puVar8 >> 5) + 1)" ( (binary_expression "((uint)puVar8 >> 5) + 1" (parenthesized_expression "((uint)puVar8 >> 5)" ( (binary_expression "(uint)puVar8 >> 5" (cast_expression "(uint)puVar8" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) )) + number_literal) )) * number_literal)) ;) (expression_statement "*(uint *)(puVar46 + -0x18) = uVar35;" (assignment_expression "*(uint *)(puVar46 + -0x18) = uVar35" (pointer_expression "*(uint *)(puVar46 + -0x18)" * (cast_expression "(uint *)(puVar46 + -0x18)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar46 + -0x18)" ( (binary_expression "puVar46 + -0x18" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined1 **)(puVar46 + -0x1c) = puVar13;" (assignment_expression "*(undefined1 **)(puVar46 + -0x1c) = puVar13" (pointer_expression "*(undefined1 **)(puVar46 + -0x1c)" * (cast_expression "(undefined1 **)(puVar46 + -0x1c)" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar46 + -0x1c)" ( (binary_expression "puVar46 + -0x1c" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(uint *)(puVar46 + -0x20) = param_2;" (assignment_expression "*(uint *)(puVar46 + -0x20) = param_2" (pointer_expression "*(uint *)(puVar46 + -0x20)" * (cast_expression "(uint *)(puVar46 + -0x20)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar46 + -0x20)" ( (binary_expression "puVar46 + -0x20" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined **)(puVar46 + -0x28) = puVar5;" (assignment_expression "*(undefined **)(puVar46 + -0x28) = puVar5" (pointer_expression "*(undefined **)(puVar46 + -0x28)" * (cast_expression "(undefined **)(puVar46 + -0x28)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar46 + -0x28)" ( (binary_expression "puVar46 + -0x28" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined **)(puVar46 + -0x78) = puVar43;" (assignment_expression "*(undefined **)(puVar46 + -0x78) = puVar43" (pointer_expression "*(undefined **)(puVar46 + -0x78)" * (cast_expression "(undefined **)(puVar46 + -0x78)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar46 + -0x78)" ( (binary_expression "puVar46 + -0x78" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 **)(puVar46 + -0x70) = puVar19;" (assignment_expression "*(undefined4 **)(puVar46 + -0x70) = puVar19" (pointer_expression "*(undefined4 **)(puVar46 + -0x70)" * (cast_expression "(undefined4 **)(puVar46 + -0x70)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar46 + -0x70)" ( (binary_expression "puVar46 + -0x70" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar46 + -0x30) = 0;" (assignment_expression "*(undefined4 *)(puVar46 + -0x30) = 0" (pointer_expression "*(undefined4 *)(puVar46 + -0x30)" * (cast_expression "(undefined4 *)(puVar46 + -0x30)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar46 + -0x30)" ( (binary_expression "puVar46 + -0x30" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(puVar46 + -0x2c) = *puVar19;" (assignment_expression "*(undefined4 *)(puVar46 + -0x2c) = *puVar19" (pointer_expression "*(undefined4 *)(puVar46 + -0x2c)" * (cast_expression "(undefined4 *)(puVar46 + -0x2c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar46 + -0x2c)" ( (binary_expression "puVar46 + -0x2c" identifier + number_literal) )))) = (pointer_expression "*puVar19" * identifier)) ;) (if_statement "if (uVar37 < 0x2a) {\n    uVar37 = 0x27;\n    if (uVar18 < 0x28) {\n      uVar37 = uVar18;\n    }\n    uVar37 = (uVar37 + 1) * 4;\n  }\n  else {\n    uVar37 = ((int)uVar37 >> 1) + 0x13;\n    if (uVar18 < uVar37) {\n      uVar37 = uVar18;\n    }\n    uVar37 = (uVar37 + 1) * 4;\n    pcVar51 = *(code **)(puVar14 + 0x7b254);\n    if (0x7f00 < uVar37) {\n      *(uint *)(puVar46 + 8) = uVar18;\n      puVar38 = (uint *)(*pcVar51)(puVar46 + -0x30);\n      puVar43 = *(undefined **)(puVar46 + -0x78);\n      uVar18 = *(uint *)(puVar46 + 8);\n      goto LAB_0002214c;\n    }\n  }" if (parenthesized_expression "(uVar37 < 0x2a)" ( (binary_expression "uVar37 < 0x2a" identifier < number_literal) )) (compound_statement "{\n    uVar37 = 0x27;\n    if (uVar18 < 0x28) {\n      uVar37 = uVar18;\n    }\n    uVar37 = (uVar37 + 1) * 4;\n  }" { (expression_statement "uVar37 = 0x27;" (assignment_expression "uVar37 = 0x27" identifier = number_literal) ;) (if_statement "if (uVar18 < 0x28) {\n      uVar37 = uVar18;\n    }" if (parenthesized_expression "(uVar18 < 0x28)" ( (binary_expression "uVar18 < 0x28" identifier < number_literal) )) (compound_statement "{\n      uVar37 = uVar18;\n    }" { (expression_statement "uVar37 = uVar18;" (assignment_expression "uVar37 = uVar18" identifier = identifier) ;) })) (expression_statement "uVar37 = (uVar37 + 1) * 4;" (assignment_expression "uVar37 = (uVar37 + 1) * 4" identifier = (binary_expression "(uVar37 + 1) * 4" (parenthesized_expression "(uVar37 + 1)" ( (binary_expression "uVar37 + 1" identifier + number_literal) )) * number_literal)) ;) }) (else_clause "else {\n    uVar37 = ((int)uVar37 >> 1) + 0x13;\n    if (uVar18 < uVar37) {\n      uVar37 = uVar18;\n    }\n    uVar37 = (uVar37 + 1) * 4;\n    pcVar51 = *(code **)(puVar14 + 0x7b254);\n    if (0x7f00 < uVar37) {\n      *(uint *)(puVar46 + 8) = uVar18;\n      puVar38 = (uint *)(*pcVar51)(puVar46 + -0x30);\n      puVar43 = *(undefined **)(puVar46 + -0x78);\n      uVar18 = *(uint *)(puVar46 + 8);\n      goto LAB_0002214c;\n    }\n  }" else (compound_statement "{\n    uVar37 = ((int)uVar37 >> 1) + 0x13;\n    if (uVar18 < uVar37) {\n      uVar37 = uVar18;\n    }\n    uVar37 = (uVar37 + 1) * 4;\n    pcVar51 = *(code **)(puVar14 + 0x7b254);\n    if (0x7f00 < uVar37) {\n      *(uint *)(puVar46 + 8) = uVar18;\n      puVar38 = (uint *)(*pcVar51)(puVar46 + -0x30);\n      puVar43 = *(undefined **)(puVar46 + -0x78);\n      uVar18 = *(uint *)(puVar46 + 8);\n      goto LAB_0002214c;\n    }\n  }" { (expression_statement "uVar37 = ((int)uVar37 >> 1) + 0x13;" (assignment_expression "uVar37 = ((int)uVar37 >> 1) + 0x13" identifier = (binary_expression "((int)uVar37 >> 1) + 0x13" (parenthesized_expression "((int)uVar37 >> 1)" ( (binary_expression "(int)uVar37 >> 1" (cast_expression "(int)uVar37" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal) )) + number_literal)) ;) (if_statement "if (uVar18 < uVar37) {\n      uVar37 = uVar18;\n    }" if (parenthesized_expression "(uVar18 < uVar37)" ( (binary_expression "uVar18 < uVar37" identifier < identifier) )) (compound_statement "{\n      uVar37 = uVar18;\n    }" { (expression_statement "uVar37 = uVar18;" (assignment_expression "uVar37 = uVar18" identifier = identifier) ;) })) (expression_statement "uVar37 = (uVar37 + 1) * 4;" (assignment_expression "uVar37 = (uVar37 + 1) * 4" identifier = (binary_expression "(uVar37 + 1) * 4" (parenthesized_expression "(uVar37 + 1)" ( (binary_expression "uVar37 + 1" identifier + number_literal) )) * number_literal)) ;) (expression_statement "pcVar51 = *(code **)(puVar14 + 0x7b254);" (assignment_expression "pcVar51 = *(code **)(puVar14 + 0x7b254)" identifier = (pointer_expression "*(code **)(puVar14 + 0x7b254)" * (cast_expression "(code **)(puVar14 + 0x7b254)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar14 + 0x7b254)" ( (binary_expression "puVar14 + 0x7b254" identifier + number_literal) ))))) ;) (if_statement "if (0x7f00 < uVar37) {\n      *(uint *)(puVar46 + 8) = uVar18;\n      puVar38 = (uint *)(*pcVar51)(puVar46 + -0x30);\n      puVar43 = *(undefined **)(puVar46 + -0x78);\n      uVar18 = *(uint *)(puVar46 + 8);\n      goto LAB_0002214c;\n    }" if (parenthesized_expression "(0x7f00 < uVar37)" ( (binary_expression "0x7f00 < uVar37" number_literal < identifier) )) (compound_statement "{\n      *(uint *)(puVar46 + 8) = uVar18;\n      puVar38 = (uint *)(*pcVar51)(puVar46 + -0x30);\n      puVar43 = *(undefined **)(puVar46 + -0x78);\n      uVar18 = *(uint *)(puVar46 + 8);\n      goto LAB_0002214c;\n    }" { (expression_statement "*(uint *)(puVar46 + 8) = uVar18;" (assignment_expression "*(uint *)(puVar46 + 8) = uVar18" (pointer_expression "*(uint *)(puVar46 + 8)" * (cast_expression "(uint *)(puVar46 + 8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar46 + 8)" ( (binary_expression "puVar46 + 8" identifier + number_literal) )))) = identifier) ;) (expression_statement "puVar38 = (uint *)(*pcVar51)(puVar46 + -0x30);" (assignment_expression "puVar38 = (uint *)(*pcVar51)(puVar46 + -0x30)" identifier = (cast_expression "(uint *)(*pcVar51)(puVar46 + -0x30)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(*pcVar51)(puVar46 + -0x30)" (parenthesized_expression "(*pcVar51)" ( (pointer_expression "*pcVar51" * identifier) )) (argument_list "(puVar46 + -0x30)" ( (binary_expression "puVar46 + -0x30" identifier + number_literal) ))))) ;) (expression_statement "puVar43 = *(undefined **)(puVar46 + -0x78);" (assignment_expression "puVar43 = *(undefined **)(puVar46 + -0x78)" identifier = (pointer_expression "*(undefined **)(puVar46 + -0x78)" * (cast_expression "(undefined **)(puVar46 + -0x78)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar46 + -0x78)" ( (binary_expression "puVar46 + -0x78" identifier + number_literal) ))))) ;) (expression_statement "uVar18 = *(uint *)(puVar46 + 8);" (assignment_expression "uVar18 = *(uint *)(puVar46 + 8)" identifier = (pointer_expression "*(uint *)(puVar46 + 8)" * (cast_expression "(uint *)(puVar46 + 8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar46 + 8)" ( (binary_expression "puVar46 + 8" identifier + number_literal) ))))) ;) (goto_statement "goto LAB_0002214c;" goto statement_identifier ;) })) }))) (expression_statement "iVar6 = -(uVar37 + 7 & 0xfffffff8);" (assignment_expression "iVar6 = -(uVar37 + 7 & 0xfffffff8)" identifier = (unary_expression "-(uVar37 + 7 & 0xfffffff8)" - (parenthesized_expression "(uVar37 + 7 & 0xfffffff8)" ( (binary_expression "uVar37 + 7 & 0xfffffff8" (binary_expression "uVar37 + 7" identifier + number_literal) & number_literal) )))) ;) (expression_statement "puVar47 = puVar46 + iVar6 + -0x90;" (assignment_expression "puVar47 = puVar46 + iVar6 + -0x90" identifier = (binary_expression "puVar46 + iVar6 + -0x90" (binary_expression "puVar46 + iVar6" identifier + identifier) + number_literal)) ;) (expression_statement "puVar38 = (uint *)(puVar46 + iVar6 + -0x78);" (assignment_expression "puVar38 = (uint *)(puVar46 + iVar6 + -0x78)" identifier = (cast_expression "(uint *)(puVar46 + iVar6 + -0x78)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar46 + iVar6 + -0x78)" ( (binary_expression "puVar46 + iVar6 + -0x78" (binary_expression "puVar46 + iVar6" identifier + identifier) + number_literal) )))) ;) (labeled_statement "LAB_0002214c:\n  iVar24 = *(int *)(puVar43 + -0x7c6c);" statement_identifier : (expression_statement "iVar24 = *(int *)(puVar43 + -0x7c6c);" (assignment_expression "iVar24 = *(int *)(puVar43 + -0x7c6c)" identifier = (pointer_expression "*(int *)(puVar43 + -0x7c6c)" * (cast_expression "(int *)(puVar43 + -0x7c6c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar43 + -0x7c6c)" ( (binary_expression "puVar43 + -0x7c6c" identifier + number_literal) ))))) ;)) (expression_statement "puVar36 = (uint *)(puVar47 + -0x40);" (assignment_expression "puVar36 = (uint *)(puVar47 + -0x40)" identifier = (cast_expression "(uint *)(puVar47 + -0x40)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar47 + -0x40)" ( (binary_expression "puVar47 + -0x40" identifier + number_literal) )))) ;) (expression_statement "puVar31 = (uint *)(iVar24 + 0x1c);" (assignment_expression "puVar31 = (uint *)(iVar24 + 0x1c)" identifier = (cast_expression "(uint *)(iVar24 + 0x1c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar24 + 0x1c)" ( (binary_expression "iVar24 + 0x1c" identifier + number_literal) )))) ;) (expression_statement "iVar6 = 8;" (assignment_expression "iVar6 = 8" identifier = number_literal) ;) (do_statement "do {\n    iVar29 = iVar6;\n    puVar9 = (uint *)*puVar31;\n    puVar31 = puVar31 + -1;\n    iVar6 = iVar29 + -1;\n  } while (puVar9 < puVar8);" do (compound_statement "{\n    iVar29 = iVar6;\n    puVar9 = (uint *)*puVar31;\n    puVar31 = puVar31 + -1;\n    iVar6 = iVar29 + -1;\n  }" { (expression_statement "iVar29 = iVar6;" (assignment_expression "iVar29 = iVar6" identifier = identifier) ;) (expression_statement "puVar9 = (uint *)*puVar31;" (assignment_expression "puVar9 = (uint *)*puVar31" identifier = (cast_expression "(uint *)*puVar31" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar31" * identifier))) ;) (expression_statement "puVar31 = puVar31 + -1;" (assignment_expression "puVar31 = puVar31 + -1" identifier = (binary_expression "puVar31 + -1" identifier + number_literal)) ;) (expression_statement "iVar6 = iVar29 + -1;" (assignment_expression "iVar6 = iVar29 + -1" identifier = (binary_expression "iVar29 + -1" identifier + number_literal)) ;) }) while (parenthesized_expression "(puVar9 < puVar8)" ( (binary_expression "puVar9 < puVar8" identifier < identifier) )) ;) (expression_statement "*(int *)(puVar46 + -0x68) = iVar29;" (assignment_expression "*(int *)(puVar46 + -0x68) = iVar29" (pointer_expression "*(int *)(puVar46 + -0x68)" * (cast_expression "(int *)(puVar46 + -0x68)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar46 + -0x68)" ( (binary_expression "puVar46 + -0x68" identifier + number_literal) )))) = identifier) ;) (expression_statement "puVar31 = (uint *)(iVar24 + 0x1c);" (assignment_expression "puVar31 = (uint *)(iVar24 + 0x1c)" identifier = (cast_expression "(uint *)(iVar24 + 0x1c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar24 + 0x1c)" ( (binary_expression "iVar24 + 0x1c" identifier + number_literal) )))) ;) (expression_statement "uVar37 = 8;" (assignment_expression "uVar37 = 8" identifier = number_literal) ;) (do_statement "do {\n    uVar7 = uVar37;\n    uVar11 = *puVar31;\n    puVar31 = puVar31 + -1;\n    uVar37 = uVar7 - 1;\n  } while (uVar11 < uVar18);" do (compound_statement "{\n    uVar7 = uVar37;\n    uVar11 = *puVar31;\n    puVar31 = puVar31 + -1;\n    uVar37 = uVar7 - 1;\n  }" { (expression_statement "uVar7 = uVar37;" (assignment_expression "uVar7 = uVar37" identifier = identifier) ;) (expression_statement "uVar11 = *puVar31;" (assignment_expression "uVar11 = *puVar31" identifier = (pointer_expression "*puVar31" * identifier)) ;) (expression_statement "puVar31 = puVar31 + -1;" (assignment_expression "puVar31 = puVar31 + -1" identifier = (binary_expression "puVar31 + -1" identifier + number_literal)) ;) (expression_statement "uVar37 = uVar7 - 1;" (assignment_expression "uVar37 = uVar7 - 1" identifier = (binary_expression "uVar7 - 1" identifier - number_literal)) ;) }) while (parenthesized_expression "(uVar11 < uVar18)" ( (binary_expression "uVar11 < uVar18" identifier < identifier) )) ;) (expression_statement "uVar10 = *(undefined4 *)(puVar43 + -0x7d3c);" (assignment_expression "uVar10 = *(undefined4 *)(puVar43 + -0x7d3c)" identifier = (pointer_expression "*(undefined4 *)(puVar43 + -0x7d3c)" * (cast_expression "(undefined4 *)(puVar43 + -0x7d3c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar43 + -0x7d3c)" ( (binary_expression "puVar43 + -0x7d3c" identifier + number_literal) ))))) ;) (expression_statement "iVar6 = 0x11;" (assignment_expression "iVar6 = 0x11" identifier = number_literal) ;) (expression_statement "*(undefined4 *)(puVar46 + -0x48) = 0;" (assignment_expression "*(undefined4 *)(puVar46 + -0x48) = 0" (pointer_expression "*(undefined4 *)(puVar46 + -0x48)" * (cast_expression "(undefined4 *)(puVar46 + -0x48)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar46 + -0x48)" ( (binary_expression "puVar46 + -0x48" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(puVar46 + -100) = uVar10;" (assignment_expression "*(undefined4 *)(puVar46 + -100) = uVar10" (pointer_expression "*(undefined4 *)(puVar46 + -100)" * (cast_expression "(undefined4 *)(puVar46 + -100)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar46 + -100)" ( (binary_expression "puVar46 + -100" identifier + number_literal) )))) = identifier) ;) (expression_statement "iVar24 = *(int *)(puVar43 + -0x7e20);" (assignment_expression "iVar24 = *(int *)(puVar43 + -0x7e20)" identifier = (pointer_expression "*(int *)(puVar43 + -0x7e20)" * (cast_expression "(int *)(puVar43 + -0x7e20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar43 + -0x7e20)" ( (binary_expression "puVar43 + -0x7e20" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar46 + -0x5c) = 0x3fffffff;" (assignment_expression "*(undefined4 *)(puVar46 + -0x5c) = 0x3fffffff" (pointer_expression "*(undefined4 *)(puVar46 + -0x5c)" * (cast_expression "(undefined4 *)(puVar46 + -0x5c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar46 + -0x5c)" ( (binary_expression "puVar46 + -0x5c" identifier + number_literal) )))) = number_literal) ;) (expression_statement "iVar29 = (int)puVar8 + (1 - uVar18);" (assignment_expression "iVar29 = (int)puVar8 + (1 - uVar18)" identifier = (binary_expression "(int)puVar8 + (1 - uVar18)" (cast_expression "(int)puVar8" ( (type_descriptor "int" primitive_type) ) identifier) + (parenthesized_expression "(1 - uVar18)" ( (binary_expression "1 - uVar18" number_literal - identifier) )))) ;) (expression_statement "*(uint *)(puVar46 + -0x40) = (uint)*(byte *)(iVar24 + 7);" (assignment_expression "*(uint *)(puVar46 + -0x40) = (uint)*(byte *)(iVar24 + 7)" (pointer_expression "*(uint *)(puVar46 + -0x40)" * (cast_expression "(uint *)(puVar46 + -0x40)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar46 + -0x40)" ( (binary_expression "puVar46 + -0x40" identifier + number_literal) )))) = (binary_expression "(uint)*(byte *)(iVar24 + 7)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)(iVar24 + 7)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar24 + 7)" ( (binary_expression "iVar24 + 7" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar46 + -0x3c) = *(undefined4 *)(puVar43 + -0x7eb4);" (assignment_expression "*(undefined4 *)(puVar46 + -0x3c) = *(undefined4 *)(puVar43 + -0x7eb4)" (pointer_expression "*(undefined4 *)(puVar46 + -0x3c)" * (cast_expression "(undefined4 *)(puVar46 + -0x3c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar46 + -0x3c)" ( (binary_expression "puVar46 + -0x3c" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(puVar43 + -0x7eb4)" * (cast_expression "(undefined4 *)(puVar43 + -0x7eb4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar43 + -0x7eb4)" ( (binary_expression "puVar43 + -0x7eb4" identifier + number_literal) ))))) ;) (expression_statement "*(uint *)(puVar46 + -0x60) = uVar18 + 1;" (assignment_expression "*(uint *)(puVar46 + -0x60) = uVar18 + 1" (pointer_expression "*(uint *)(puVar46 + -0x60)" * (cast_expression "(uint *)(puVar46 + -0x60)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar46 + -0x60)" ( (binary_expression "puVar46 + -0x60" identifier + number_literal) )))) = (binary_expression "uVar18 + 1" identifier + number_literal)) ;) (expression_statement "iVar24 = *(int *)(puVar46 + -0x60);" (assignment_expression "iVar24 = *(int *)(puVar46 + -0x60)" identifier = (pointer_expression "*(int *)(puVar46 + -0x60)" * (cast_expression "(int *)(puVar46 + -0x60)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar46 + -0x60)" ( (binary_expression "puVar46 + -0x60" identifier + number_literal) ))))) ;) (expression_statement "*puVar38 = 1;" (assignment_expression "*puVar38 = 1" (pointer_expression "*puVar38" * identifier) = number_literal) ;) (expression_statement "*(undefined4 *)(puVar46 + -0x44) = 1;" (assignment_expression "*(undefined4 *)(puVar46 + -0x44) = 1" (pointer_expression "*(undefined4 *)(puVar46 + -0x44)" * (cast_expression "(undefined4 *)(puVar46 + -0x44)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar46 + -0x44)" ( (binary_expression "puVar46 + -0x44" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(int *)(puVar46 + -0x34) = *(int *)(puVar43 + -0x7fe4) + -0x31a4;" (assignment_expression "*(int *)(puVar46 + -0x34) = *(int *)(puVar43 + -0x7fe4) + -0x31a4" (pointer_expression "*(int *)(puVar46 + -0x34)" * (cast_expression "(int *)(puVar46 + -0x34)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar46 + -0x34)" ( (binary_expression "puVar46 + -0x34" identifier + number_literal) )))) = (binary_expression "*(int *)(puVar43 + -0x7fe4) + -0x31a4" (pointer_expression "*(int *)(puVar43 + -0x7fe4)" * (cast_expression "(int *)(puVar43 + -0x7fe4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar43 + -0x7fe4)" ( (binary_expression "puVar43 + -0x7fe4" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "*(int *)(puVar46 + -0x38) = *(int *)(puVar43 + -0x7fd4) + 0x3630;" (assignment_expression "*(int *)(puVar46 + -0x38) = *(int *)(puVar43 + -0x7fd4) + 0x3630" (pointer_expression "*(int *)(puVar46 + -0x38)" * (cast_expression "(int *)(puVar46 + -0x38)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar46 + -0x38)" ( (binary_expression "puVar46 + -0x38" identifier + number_literal) )))) = (binary_expression "*(int *)(puVar43 + -0x7fd4) + 0x3630" (pointer_expression "*(int *)(puVar43 + -0x7fd4)" * (cast_expression "(int *)(puVar43 + -0x7fd4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar43 + -0x7fd4)" ( (binary_expression "puVar43 + -0x7fd4" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "*puVar36 = 0x260eeeeb;" (assignment_expression "*puVar36 = 0x260eeeeb" (pointer_expression "*puVar36" * identifier) = number_literal) ;) (if_statement "if (iVar24 - 0x11U <= uVar7) {\n    uVar7 = iVar24 - 0x11U;\n  }" if (parenthesized_expression "(iVar24 - 0x11U <= uVar7)" ( (binary_expression "iVar24 - 0x11U <= uVar7" (binary_expression "iVar24 - 0x11U" identifier - number_literal) <= identifier) )) (compound_statement "{\n    uVar7 = iVar24 - 0x11U;\n  }" { (expression_statement "uVar7 = iVar24 - 0x11U;" (assignment_expression "uVar7 = iVar24 - 0x11U" identifier = (binary_expression "iVar24 - 0x11U" identifier - number_literal)) ;) })) (expression_statement "puVar8 = (uint *)0x1;" (assignment_expression "puVar8 = (uint *)0x1" identifier = (cast_expression "(uint *)0x1" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "iVar39 = iVar6;" (assignment_expression "iVar39 = iVar6" identifier = identifier) ;) (if_statement "if (uVar7 == 0) goto LAB_00022534;" if (parenthesized_expression "(uVar7 == 0)" ( (binary_expression "uVar7 == 0" identifier == number_literal) )) (goto_statement "goto LAB_00022534;" goto statement_identifier ;)) (labeled_statement "LAB_00022234:\n  puVar31 = (uint *)0x1;" statement_identifier : (expression_statement "puVar31 = (uint *)0x1;" (assignment_expression "puVar31 = (uint *)0x1" identifier = (cast_expression "(uint *)0x1" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;)) (expression_statement "iVar41 = *(int *)(puVar46 + -0x40);" (assignment_expression "iVar41 = *(int *)(puVar46 + -0x40)" identifier = (pointer_expression "*(int *)(puVar46 + -0x40)" * (cast_expression "(int *)(puVar46 + -0x40)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar46 + -0x40)" ( (binary_expression "puVar46 + -0x40" identifier + number_literal) ))))) ;) (expression_statement "*(uint **)(puVar46 + -0x4c) = puVar8;" (assignment_expression "*(uint **)(puVar46 + -0x4c) = puVar8" (pointer_expression "*(uint **)(puVar46 + -0x4c)" * (cast_expression "(uint **)(puVar46 + -0x4c)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar46 + -0x4c)" ( (binary_expression "puVar46 + -0x4c" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(uint **)(puVar46 + -0x50) = puVar38;" (assignment_expression "*(uint **)(puVar46 + -0x50) = puVar38" (pointer_expression "*(uint **)(puVar46 + -0x50)" * (cast_expression "(uint **)(puVar46 + -0x50)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar46 + -0x50)" ( (binary_expression "puVar46 + -0x50" identifier + number_literal) )))) = identifier) ;) (do_statement "do {\n    iVar39 = iVar6 + uVar7;\n    uVar18 = (**(code **)(*(int *)(puVar46 + -0x34) + (uVar7 - 1) * 4))(iVar6);\n    if ((uVar18 & 0xff) == 0) {\n      uVar37 = uVar18 >> 8;\n      iVar6 = 6;\n      if ((uVar37 & 0xff) == 0) {\n        uVar37 = uVar18 >> 0x10;\n        iVar6 = 0xe;\n        if ((uVar37 & 0xff) == 0) {\n          uVar37 = uVar18 >> 0x18;\n          iVar6 = 0x1e;\n          if (uVar37 != 0) {\n            iVar6 = 0x16;\n          }\n        }\n      }\n      uVar37 = (uint)*(byte *)(*(int *)(puVar46 + -0x3c) + (-uVar37 & uVar37)) + iVar6;\n    }\n    else {\n      uVar37 = *(byte *)(*(int *)(puVar46 + -0x3c) + (-uVar18 & uVar18)) - 2;\n    }\n    iVar41 = iVar41 + *(byte *)(*(int *)(puVar46 + -0x38) + (uVar7 - 1)) + uVar37;\n    uVar18 = (**(code **)(*(int *)(puVar46 + -0x78) + -0x7f9c))\n                       (puVar36,puVar36,puVar31,uVar18 >> (uVar37 & 0x1f));\n    puVar43 = *(undefined **)(puVar46 + -0x78);\n    if ((uint)(iVar24 - iVar39) <= uVar7) {\n      uVar7 = iVar24 - iVar39;\n    }\n    puVar8 = puVar36 + (int)puVar31;\n    puVar31 = (uint *)((int)puVar31 + (uint)(uVar18 != 0));\n    *puVar8 = uVar18;\n    if (uVar7 == 0) {\n      puVar38 = *(uint **)(puVar46 + -0x50);\n      puVar8 = *(uint **)(puVar46 + -0x4c);\n      *(int *)(puVar46 + -0x40) = iVar41;\n      *(uint **)(puVar46 + -0x4c) = puVar36 + (int)((int)puVar31 + *(int *)(puVar46 + -0x5c));\n      goto LAB_00022340;\n    }\n    iVar6 = iVar39;\n  } while (puVar31 != (uint *)0x14);" do (compound_statement "{\n    iVar39 = iVar6 + uVar7;\n    uVar18 = (**(code **)(*(int *)(puVar46 + -0x34) + (uVar7 - 1) * 4))(iVar6);\n    if ((uVar18 & 0xff) == 0) {\n      uVar37 = uVar18 >> 8;\n      iVar6 = 6;\n      if ((uVar37 & 0xff) == 0) {\n        uVar37 = uVar18 >> 0x10;\n        iVar6 = 0xe;\n        if ((uVar37 & 0xff) == 0) {\n          uVar37 = uVar18 >> 0x18;\n          iVar6 = 0x1e;\n          if (uVar37 != 0) {\n            iVar6 = 0x16;\n          }\n        }\n      }\n      uVar37 = (uint)*(byte *)(*(int *)(puVar46 + -0x3c) + (-uVar37 & uVar37)) + iVar6;\n    }\n    else {\n      uVar37 = *(byte *)(*(int *)(puVar46 + -0x3c) + (-uVar18 & uVar18)) - 2;\n    }\n    iVar41 = iVar41 + *(byte *)(*(int *)(puVar46 + -0x38) + (uVar7 - 1)) + uVar37;\n    uVar18 = (**(code **)(*(int *)(puVar46 + -0x78) + -0x7f9c))\n                       (puVar36,puVar36,puVar31,uVar18 >> (uVar37 & 0x1f));\n    puVar43 = *(undefined **)(puVar46 + -0x78);\n    if ((uint)(iVar24 - iVar39) <= uVar7) {\n      uVar7 = iVar24 - iVar39;\n    }\n    puVar8 = puVar36 + (int)puVar31;\n    puVar31 = (uint *)((int)puVar31 + (uint)(uVar18 != 0));\n    *puVar8 = uVar18;\n    if (uVar7 == 0) {\n      puVar38 = *(uint **)(puVar46 + -0x50);\n      puVar8 = *(uint **)(puVar46 + -0x4c);\n      *(int *)(puVar46 + -0x40) = iVar41;\n      *(uint **)(puVar46 + -0x4c) = puVar36 + (int)((int)puVar31 + *(int *)(puVar46 + -0x5c));\n      goto LAB_00022340;\n    }\n    iVar6 = iVar39;\n  }" { (expression_statement "iVar39 = iVar6 + uVar7;" (assignment_expression "iVar39 = iVar6 + uVar7" identifier = (binary_expression "iVar6 + uVar7" identifier + identifier)) ;) (expression_statement "uVar18 = (**(code **)(*(int *)(puVar46 + -0x34) + (uVar7 - 1) * 4))(iVar6);" (assignment_expression "uVar18 = (**(code **)(*(int *)(puVar46 + -0x34) + (uVar7 - 1) * 4))(iVar6)" identifier = (call_expression "(**(code **)(*(int *)(puVar46 + -0x34) + (uVar7 - 1) * 4))(iVar6)" (parenthesized_expression "(**(code **)(*(int *)(puVar46 + -0x34) + (uVar7 - 1) * 4))" ( (pointer_expression "**(code **)(*(int *)(puVar46 + -0x34) + (uVar7 - 1) * 4)" * (pointer_expression "*(code **)(*(int *)(puVar46 + -0x34) + (uVar7 - 1) * 4)" * (cast_expression "(code **)(*(int *)(puVar46 + -0x34) + (uVar7 - 1) * 4)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)(puVar46 + -0x34) + (uVar7 - 1) * 4)" ( (binary_expression "*(int *)(puVar46 + -0x34) + (uVar7 - 1) * 4" (pointer_expression "*(int *)(puVar46 + -0x34)" * (cast_expression "(int *)(puVar46 + -0x34)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar46 + -0x34)" ( (binary_expression "puVar46 + -0x34" identifier + number_literal) )))) + (binary_expression "(uVar7 - 1) * 4" (parenthesized_expression "(uVar7 - 1)" ( (binary_expression "uVar7 - 1" identifier - number_literal) )) * number_literal)) ))))) )) (argument_list "(iVar6)" ( identifier )))) ;) (if_statement "if ((uVar18 & 0xff) == 0) {\n      uVar37 = uVar18 >> 8;\n      iVar6 = 6;\n      if ((uVar37 & 0xff) == 0) {\n        uVar37 = uVar18 >> 0x10;\n        iVar6 = 0xe;\n        if ((uVar37 & 0xff) == 0) {\n          uVar37 = uVar18 >> 0x18;\n          iVar6 = 0x1e;\n          if (uVar37 != 0) {\n            iVar6 = 0x16;\n          }\n        }\n      }\n      uVar37 = (uint)*(byte *)(*(int *)(puVar46 + -0x3c) + (-uVar37 & uVar37)) + iVar6;\n    }\n    else {\n      uVar37 = *(byte *)(*(int *)(puVar46 + -0x3c) + (-uVar18 & uVar18)) - 2;\n    }" if (parenthesized_expression "((uVar18 & 0xff) == 0)" ( (binary_expression "(uVar18 & 0xff) == 0" (parenthesized_expression "(uVar18 & 0xff)" ( (binary_expression "uVar18 & 0xff" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n      uVar37 = uVar18 >> 8;\n      iVar6 = 6;\n      if ((uVar37 & 0xff) == 0) {\n        uVar37 = uVar18 >> 0x10;\n        iVar6 = 0xe;\n        if ((uVar37 & 0xff) == 0) {\n          uVar37 = uVar18 >> 0x18;\n          iVar6 = 0x1e;\n          if (uVar37 != 0) {\n            iVar6 = 0x16;\n          }\n        }\n      }\n      uVar37 = (uint)*(byte *)(*(int *)(puVar46 + -0x3c) + (-uVar37 & uVar37)) + iVar6;\n    }" { (expression_statement "uVar37 = uVar18 >> 8;" (assignment_expression "uVar37 = uVar18 >> 8" identifier = (binary_expression "uVar18 >> 8" identifier >> number_literal)) ;) (expression_statement "iVar6 = 6;" (assignment_expression "iVar6 = 6" identifier = number_literal) ;) (if_statement "if ((uVar37 & 0xff) == 0) {\n        uVar37 = uVar18 >> 0x10;\n        iVar6 = 0xe;\n        if ((uVar37 & 0xff) == 0) {\n          uVar37 = uVar18 >> 0x18;\n          iVar6 = 0x1e;\n          if (uVar37 != 0) {\n            iVar6 = 0x16;\n          }\n        }\n      }" if (parenthesized_expression "((uVar37 & 0xff) == 0)" ( (binary_expression "(uVar37 & 0xff) == 0" (parenthesized_expression "(uVar37 & 0xff)" ( (binary_expression "uVar37 & 0xff" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n        uVar37 = uVar18 >> 0x10;\n        iVar6 = 0xe;\n        if ((uVar37 & 0xff) == 0) {\n          uVar37 = uVar18 >> 0x18;\n          iVar6 = 0x1e;\n          if (uVar37 != 0) {\n            iVar6 = 0x16;\n          }\n        }\n      }" { (expression_statement "uVar37 = uVar18 >> 0x10;" (assignment_expression "uVar37 = uVar18 >> 0x10" identifier = (binary_expression "uVar18 >> 0x10" identifier >> number_literal)) ;) (expression_statement "iVar6 = 0xe;" (assignment_expression "iVar6 = 0xe" identifier = number_literal) ;) (if_statement "if ((uVar37 & 0xff) == 0) {\n          uVar37 = uVar18 >> 0x18;\n          iVar6 = 0x1e;\n          if (uVar37 != 0) {\n            iVar6 = 0x16;\n          }\n        }" if (parenthesized_expression "((uVar37 & 0xff) == 0)" ( (binary_expression "(uVar37 & 0xff) == 0" (parenthesized_expression "(uVar37 & 0xff)" ( (binary_expression "uVar37 & 0xff" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n          uVar37 = uVar18 >> 0x18;\n          iVar6 = 0x1e;\n          if (uVar37 != 0) {\n            iVar6 = 0x16;\n          }\n        }" { (expression_statement "uVar37 = uVar18 >> 0x18;" (assignment_expression "uVar37 = uVar18 >> 0x18" identifier = (binary_expression "uVar18 >> 0x18" identifier >> number_literal)) ;) (expression_statement "iVar6 = 0x1e;" (assignment_expression "iVar6 = 0x1e" identifier = number_literal) ;) (if_statement "if (uVar37 != 0) {\n            iVar6 = 0x16;\n          }" if (parenthesized_expression "(uVar37 != 0)" ( (binary_expression "uVar37 != 0" identifier != number_literal) )) (compound_statement "{\n            iVar6 = 0x16;\n          }" { (expression_statement "iVar6 = 0x16;" (assignment_expression "iVar6 = 0x16" identifier = number_literal) ;) })) })) })) (expression_statement "uVar37 = (uint)*(byte *)(*(int *)(puVar46 + -0x3c) + (-uVar37 & uVar37)) + iVar6;" (assignment_expression "uVar37 = (uint)*(byte *)(*(int *)(puVar46 + -0x3c) + (-uVar37 & uVar37)) + iVar6" identifier = (binary_expression "(uint)*(byte *)(*(int *)(puVar46 + -0x3c) + (-uVar37 & uVar37)) + iVar6" (binary_expression "(uint)*(byte *)(*(int *)(puVar46 + -0x3c) + (-uVar37 & uVar37))" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)(*(int *)(puVar46 + -0x3c) + (-uVar37 & uVar37))" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(puVar46 + -0x3c) + (-uVar37 & uVar37))" ( (binary_expression "*(int *)(puVar46 + -0x3c) + (-uVar37 & uVar37)" (pointer_expression "*(int *)(puVar46 + -0x3c)" * (cast_expression "(int *)(puVar46 + -0x3c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar46 + -0x3c)" ( (binary_expression "puVar46 + -0x3c" identifier + number_literal) )))) + (parenthesized_expression "(-uVar37 & uVar37)" ( (binary_expression "-uVar37 & uVar37" (unary_expression "-uVar37" - identifier) & identifier) ))) )))) + identifier)) ;) }) (else_clause "else {\n      uVar37 = *(byte *)(*(int *)(puVar46 + -0x3c) + (-uVar18 & uVar18)) - 2;\n    }" else (compound_statement "{\n      uVar37 = *(byte *)(*(int *)(puVar46 + -0x3c) + (-uVar18 & uVar18)) - 2;\n    }" { (expression_statement "uVar37 = *(byte *)(*(int *)(puVar46 + -0x3c) + (-uVar18 & uVar18)) - 2;" (assignment_expression "uVar37 = *(byte *)(*(int *)(puVar46 + -0x3c) + (-uVar18 & uVar18)) - 2" identifier = (binary_expression "*(byte *)(*(int *)(puVar46 + -0x3c) + (-uVar18 & uVar18)) - 2" (pointer_expression "*(byte *)(*(int *)(puVar46 + -0x3c) + (-uVar18 & uVar18))" * (cast_expression "(byte *)(*(int *)(puVar46 + -0x3c) + (-uVar18 & uVar18))" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(puVar46 + -0x3c) + (-uVar18 & uVar18))" ( (binary_expression "*(int *)(puVar46 + -0x3c) + (-uVar18 & uVar18)" (pointer_expression "*(int *)(puVar46 + -0x3c)" * (cast_expression "(int *)(puVar46 + -0x3c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar46 + -0x3c)" ( (binary_expression "puVar46 + -0x3c" identifier + number_literal) )))) + (parenthesized_expression "(-uVar18 & uVar18)" ( (binary_expression "-uVar18 & uVar18" (unary_expression "-uVar18" - identifier) & identifier) ))) )))) - number_literal)) ;) }))) (expression_statement "iVar41 = iVar41 + *(byte *)(*(int *)(puVar46 + -0x38) + (uVar7 - 1)) + uVar37;" (assignment_expression "iVar41 = iVar41 + *(byte *)(*(int *)(puVar46 + -0x38) + (uVar7 - 1)) + uVar37" identifier = (binary_expression "iVar41 + *(byte *)(*(int *)(puVar46 + -0x38) + (uVar7 - 1)) + uVar37" (binary_expression "iVar41 + *(byte *)(*(int *)(puVar46 + -0x38) + (uVar7 - 1))" identifier + (pointer_expression "*(byte *)(*(int *)(puVar46 + -0x38) + (uVar7 - 1))" * (cast_expression "(byte *)(*(int *)(puVar46 + -0x38) + (uVar7 - 1))" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(puVar46 + -0x38) + (uVar7 - 1))" ( (binary_expression "*(int *)(puVar46 + -0x38) + (uVar7 - 1)" (pointer_expression "*(int *)(puVar46 + -0x38)" * (cast_expression "(int *)(puVar46 + -0x38)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar46 + -0x38)" ( (binary_expression "puVar46 + -0x38" identifier + number_literal) )))) + (parenthesized_expression "(uVar7 - 1)" ( (binary_expression "uVar7 - 1" identifier - number_literal) ))) ))))) + identifier)) ;) (expression_statement "uVar18 = (**(code **)(*(int *)(puVar46 + -0x78) + -0x7f9c))\n                       (puVar36,puVar36,puVar31,uVar18 >> (uVar37 & 0x1f));" (assignment_expression "uVar18 = (**(code **)(*(int *)(puVar46 + -0x78) + -0x7f9c))\n                       (puVar36,puVar36,puVar31,uVar18 >> (uVar37 & 0x1f))" identifier = (call_expression "(**(code **)(*(int *)(puVar46 + -0x78) + -0x7f9c))\n                       (puVar36,puVar36,puVar31,uVar18 >> (uVar37 & 0x1f))" (parenthesized_expression "(**(code **)(*(int *)(puVar46 + -0x78) + -0x7f9c))" ( (pointer_expression "**(code **)(*(int *)(puVar46 + -0x78) + -0x7f9c)" * (pointer_expression "*(code **)(*(int *)(puVar46 + -0x78) + -0x7f9c)" * (cast_expression "(code **)(*(int *)(puVar46 + -0x78) + -0x7f9c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)(puVar46 + -0x78) + -0x7f9c)" ( (binary_expression "*(int *)(puVar46 + -0x78) + -0x7f9c" (pointer_expression "*(int *)(puVar46 + -0x78)" * (cast_expression "(int *)(puVar46 + -0x78)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar46 + -0x78)" ( (binary_expression "puVar46 + -0x78" identifier + number_literal) )))) + number_literal) ))))) )) (argument_list "(puVar36,puVar36,puVar31,uVar18 >> (uVar37 & 0x1f))" ( identifier , identifier , identifier , (binary_expression "uVar18 >> (uVar37 & 0x1f)" identifier >> (parenthesized_expression "(uVar37 & 0x1f)" ( (binary_expression "uVar37 & 0x1f" identifier & number_literal) ))) )))) ;) (expression_statement "puVar43 = *(undefined **)(puVar46 + -0x78);" (assignment_expression "puVar43 = *(undefined **)(puVar46 + -0x78)" identifier = (pointer_expression "*(undefined **)(puVar46 + -0x78)" * (cast_expression "(undefined **)(puVar46 + -0x78)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar46 + -0x78)" ( (binary_expression "puVar46 + -0x78" identifier + number_literal) ))))) ;) (if_statement "if ((uint)(iVar24 - iVar39) <= uVar7) {\n      uVar7 = iVar24 - iVar39;\n    }" if (parenthesized_expression "((uint)(iVar24 - iVar39) <= uVar7)" ( (binary_expression "(uint)(iVar24 - iVar39) <= uVar7" (call_expression "(uint)(iVar24 - iVar39)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(iVar24 - iVar39)" ( (binary_expression "iVar24 - iVar39" identifier - identifier) ))) <= identifier) )) (compound_statement "{\n      uVar7 = iVar24 - iVar39;\n    }" { (expression_statement "uVar7 = iVar24 - iVar39;" (assignment_expression "uVar7 = iVar24 - iVar39" identifier = (binary_expression "iVar24 - iVar39" identifier - identifier)) ;) })) (expression_statement "puVar8 = puVar36 + (int)puVar31;" (assignment_expression "puVar8 = puVar36 + (int)puVar31" identifier = (binary_expression "puVar36 + (int)puVar31" identifier + (cast_expression "(int)puVar31" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "puVar31 = (uint *)((int)puVar31 + (uint)(uVar18 != 0));" (assignment_expression "puVar31 = (uint *)((int)puVar31 + (uint)(uVar18 != 0))" identifier = (cast_expression "(uint *)((int)puVar31 + (uint)(uVar18 != 0))" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar31 + (uint)(uVar18 != 0))" ( (binary_expression "(int)puVar31 + (uint)(uVar18 != 0)" (cast_expression "(int)puVar31" ( (type_descriptor "int" primitive_type) ) identifier) + (call_expression "(uint)(uVar18 != 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar18 != 0)" ( (binary_expression "uVar18 != 0" identifier != number_literal) )))) )))) ;) (expression_statement "*puVar8 = uVar18;" (assignment_expression "*puVar8 = uVar18" (pointer_expression "*puVar8" * identifier) = identifier) ;) (if_statement "if (uVar7 == 0) {\n      puVar38 = *(uint **)(puVar46 + -0x50);\n      puVar8 = *(uint **)(puVar46 + -0x4c);\n      *(int *)(puVar46 + -0x40) = iVar41;\n      *(uint **)(puVar46 + -0x4c) = puVar36 + (int)((int)puVar31 + *(int *)(puVar46 + -0x5c));\n      goto LAB_00022340;\n    }" if (parenthesized_expression "(uVar7 == 0)" ( (binary_expression "uVar7 == 0" identifier == number_literal) )) (compound_statement "{\n      puVar38 = *(uint **)(puVar46 + -0x50);\n      puVar8 = *(uint **)(puVar46 + -0x4c);\n      *(int *)(puVar46 + -0x40) = iVar41;\n      *(uint **)(puVar46 + -0x4c) = puVar36 + (int)((int)puVar31 + *(int *)(puVar46 + -0x5c));\n      goto LAB_00022340;\n    }" { (expression_statement "puVar38 = *(uint **)(puVar46 + -0x50);" (assignment_expression "puVar38 = *(uint **)(puVar46 + -0x50)" identifier = (pointer_expression "*(uint **)(puVar46 + -0x50)" * (cast_expression "(uint **)(puVar46 + -0x50)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar46 + -0x50)" ( (binary_expression "puVar46 + -0x50" identifier + number_literal) ))))) ;) (expression_statement "puVar8 = *(uint **)(puVar46 + -0x4c);" (assignment_expression "puVar8 = *(uint **)(puVar46 + -0x4c)" identifier = (pointer_expression "*(uint **)(puVar46 + -0x4c)" * (cast_expression "(uint **)(puVar46 + -0x4c)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar46 + -0x4c)" ( (binary_expression "puVar46 + -0x4c" identifier + number_literal) ))))) ;) (expression_statement "*(int *)(puVar46 + -0x40) = iVar41;" (assignment_expression "*(int *)(puVar46 + -0x40) = iVar41" (pointer_expression "*(int *)(puVar46 + -0x40)" * (cast_expression "(int *)(puVar46 + -0x40)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar46 + -0x40)" ( (binary_expression "puVar46 + -0x40" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(uint **)(puVar46 + -0x4c) = puVar36 + (int)((int)puVar31 + *(int *)(puVar46 + -0x5c));" (assignment_expression "*(uint **)(puVar46 + -0x4c) = puVar36 + (int)((int)puVar31 + *(int *)(puVar46 + -0x5c))" (pointer_expression "*(uint **)(puVar46 + -0x4c)" * (cast_expression "(uint **)(puVar46 + -0x4c)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar46 + -0x4c)" ( (binary_expression "puVar46 + -0x4c" identifier + number_literal) )))) = (binary_expression "puVar36 + (int)((int)puVar31 + *(int *)(puVar46 + -0x5c))" identifier + (cast_expression "(int)((int)puVar31 + *(int *)(puVar46 + -0x5c))" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((int)puVar31 + *(int *)(puVar46 + -0x5c))" ( (binary_expression "(int)puVar31 + *(int *)(puVar46 + -0x5c)" (cast_expression "(int)puVar31" ( (type_descriptor "int" primitive_type) ) identifier) + (pointer_expression "*(int *)(puVar46 + -0x5c)" * (cast_expression "(int *)(puVar46 + -0x5c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar46 + -0x5c)" ( (binary_expression "puVar46 + -0x5c" identifier + number_literal) ))))) ))))) ;) (goto_statement "goto LAB_00022340;" goto statement_identifier ;) })) (expression_statement "iVar6 = iVar39;" (assignment_expression "iVar6 = iVar39" identifier = identifier) ;) }) while (parenthesized_expression "(puVar31 != (uint *)0x14)" ( (binary_expression "puVar31 != (uint *)0x14" identifier != (cast_expression "(uint *)0x14" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) ;) (expression_statement "puVar8 = *(uint **)(puVar46 + -0x4c);" (assignment_expression "puVar8 = *(uint **)(puVar46 + -0x4c)" identifier = (pointer_expression "*(uint **)(puVar46 + -0x4c)" * (cast_expression "(uint **)(puVar46 + -0x4c)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar46 + -0x4c)" ( (binary_expression "puVar46 + -0x4c" identifier + number_literal) ))))) ;) (expression_statement "puVar38 = *(uint **)(puVar46 + -0x50);" (assignment_expression "puVar38 = *(uint **)(puVar46 + -0x50)" identifier = (pointer_expression "*(uint **)(puVar46 + -0x50)" * (cast_expression "(uint **)(puVar46 + -0x50)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar46 + -0x50)" ( (binary_expression "puVar46 + -0x50" identifier + number_literal) ))))) ;) (expression_statement "*(int *)(puVar46 + -0x40) = iVar41;" (assignment_expression "*(int *)(puVar46 + -0x40) = iVar41" (pointer_expression "*(int *)(puVar46 + -0x40)" * (cast_expression "(int *)(puVar46 + -0x40)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar46 + -0x40)" ( (binary_expression "puVar46 + -0x40" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(uint **)(puVar46 + -0x4c) = puVar36 + 0x13;" (assignment_expression "*(uint **)(puVar46 + -0x4c) = puVar36 + 0x13" (pointer_expression "*(uint **)(puVar46 + -0x4c)" * (cast_expression "(uint **)(puVar46 + -0x4c)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar46 + -0x4c)" ( (binary_expression "puVar46 + -0x4c" identifier + number_literal) )))) = (binary_expression "puVar36 + 0x13" identifier + number_literal)) ;) (labeled_statement "LAB_00022340:\n  do {\n    iVar41 = iVar39 - *(int *)(puVar46 + -0x44);\n    iVar24 = *(int *)(puVar46 + -0x5c);\n    iVar6 = iVar41;\n    if (iVar41 != 0) {\n      *(uint *)(puVar46 + -0x44) = uVar7;\n      *(uint **)(puVar46 + -0x50) = puVar31;\n      *(uint **)(puVar46 + -0x54) = puVar36;\n      *(int *)(puVar46 + -0x58) = iVar39;\n      iVar6 = *(int *)(puVar46 + -0x48);\n      iVar39 = *(int *)(puVar46 + -0x68);\n      iVar24 = iVar29;\n      do {\n        iVar33 = iVar41;\n        if (iVar39 <= iVar41) {\n          iVar33 = iVar39;\n        }\n        iVar29 = iVar24 + iVar33;\n        uVar18 = (**(code **)(*(int *)(puVar46 + -0x34) + (iVar33 + -1) * 4))(iVar24);\n        if ((uVar18 & 0xff) == 0) {\n          uVar37 = uVar18 >> 8;\n          iVar24 = 6;\n          if ((uVar37 & 0xff) == 0) {\n            uVar37 = uVar18 >> 0x10;\n            iVar24 = 0xe;\n            if ((uVar37 & 0xff) == 0) {\n              uVar37 = uVar18 >> 0x18;\n              iVar24 = 0x16;\n              if (uVar37 == 0) {\n                iVar24 = 0x1e;\n              }\n            }\n          }\n          uVar37 = (uint)*(byte *)(*(int *)(puVar46 + -0x3c) + (-uVar37 & uVar37)) + iVar24;\n        }\n        else {\n          uVar37 = *(byte *)(*(int *)(puVar46 + -0x3c) + (-uVar18 & uVar18)) - 2;\n        }\n        iVar41 = iVar41 - iVar33;\n        iVar6 = iVar6 + *(byte *)(*(int *)(puVar46 + -0x38) + iVar33 + -1) + uVar37;\n        uVar18 = (**(code **)(*(int *)(puVar46 + -0x78) + -0x7f9c))\n                           (puVar38,puVar38,puVar8,uVar18 >> (uVar37 & 0x1f));\n        puVar43 = *(undefined **)(puVar46 + -0x78);\n        puVar31 = puVar38 + (int)puVar8;\n        puVar8 = (uint *)((int)puVar8 + (uint)(uVar18 != 0));\n        *puVar31 = uVar18;\n        iVar24 = iVar29;\n      } while (iVar41 != 0);\n      uVar7 = *(uint *)(puVar46 + -0x44);\n      puVar31 = *(uint **)(puVar46 + -0x50);\n      puVar36 = *(uint **)(puVar46 + -0x54);\n      iVar39 = *(int *)(puVar46 + -0x58);\n      *(int *)(puVar46 + -0x48) = iVar6;\n      iVar24 = *(int *)(puVar46 + -0x5c);\n    }\n    uVar37 = *puVar36;\n    pcVar51 = *(code **)(puVar43 + -0x7bc0);\n    uVar18 = (uint)*(byte *)(*(int *)(puVar46 + -100) + ((uVar37 << 0x18) >> 0x19));\n    puVar8 = (uint *)((int)puVar8 +\n                     ((puVar38[(int)((int)puVar8 + iVar24)] < **(uint **)(puVar46 + -0x4c) ^ 1) -\n                     (int)puVar31));\n    iVar24 = uVar18 * 2 - uVar18 * uVar18 * uVar37;\n    if ((int)puVar8 < (int)puVar31) {\n      puVar31 = puVar8;\n    }\n    *(uint **)(puVar47 + -0x48) = puVar31;\n    *(uint *)(puVar47 + -0x44) = iVar24 * iVar24 * uVar37 + iVar24 * -2;\n    puVar9 = puVar38;\n    puVar22 = puVar8;\n    (*pcVar51)(puVar38,puVar38,puVar8,puVar36);\n    iVar24 = *(int *)(puVar46 + -0x78);\n    if (uVar7 == 0) {\n      if (*(int *)(puVar46 + -0x48) == *(int *)(puVar46 + -0x40)) {\n        puVar8 = (uint *)((int)puVar8 - (uint)(puVar38[(int)((int)puVar8 + -1)] == 0));\n        pcVar51 = *(code **)(iVar24 + -0x7a80);\n        if ((int)puVar8 <= **(int **)(puVar46 + -0x6c)) goto LAB_00022600;\nLAB_00022734:\n        puVar9 = puVar8;\n        puVar19 = (undefined4 *)(*pcVar51)(*(undefined4 *)(puVar46 + -0x6c));\n        iVar24 = *(int *)(puVar46 + -0x78);\n      }\n      else {\n        puVar9 = puVar38;\n        puVar22 = puVar8;\n        uVar18 = (**(code **)(iVar24 + -0x7ad4))(puVar38);\n        iVar24 = *(int *)(puVar46 + -0x78);\n        puVar38[(int)puVar8] = uVar18;\n        puVar8 = (uint *)((int)puVar8 +\n                         ((uint)(uVar18 != 0) -\n                         (uint)(puVar38[(int)((int)puVar8 + ((uVar18 != 0) - 1))] == 0)));\n        pcVar51 = *(code **)(iVar24 + -0x7a80);\n        if (**(int **)(puVar46 + -0x6c) < (int)puVar8) goto LAB_00022734;\nLAB_00022600:\n        puVar19 = *(undefined4 **)(*(int *)(puVar46 + -0x6c) + 8);\n      }\n      *(uint **)(*(int *)(puVar46 + -0x6c) + 4) = puVar8;\n      if (puVar8 != (uint *)0x0) {\n        puVar13 = (undefined1 *)((int)puVar8 + -1);\n        puVar9 = (uint *)*puVar38;\n        if (puVar13 != (undefined1 *)0x0) {\n          puVar15 = puVar19;\n          puVar16 = puVar38 + 1;\n          do {\n            *puVar15 = puVar9;\n            puVar38 = puVar16 + 1;\n            puVar13 = puVar13 + -1;\n            puVar9 = (uint *)*puVar16;\n            puVar15 = puVar15 + 1;\n            puVar16 = puVar38;\n          } while (puVar13 != (undefined1 *)0x0);\n          puVar8 = (uint *)((int)puVar8 * 4);\n          puVar19 = (undefined4 *)((int)puVar19 + (int)(puVar8 + -1));\n        }\n        *puVar19 = puVar9;\n      }\n      puVar16 = *(uint **)(puVar46 + -0x30);\n      if (puVar16 != (uint *)0x0) {\n        (**(code **)(iVar24 + -0x7a28))();\n        iVar24 = *(int *)(puVar46 + -0x78);\n      }\n      if (*(int *)(puVar46 + -0x2c) == **(int **)(puVar46 + -0x70)) {\n        return **(int **)(puVar46 + -0x70);\n      }\n      pcVar51 = *(code **)(iVar24 + -0x7b70);\n      pcVar52 = __gmpz_bin_uiui;\n      (*pcVar51)();\n      pcVar44 = pcVar51 + 0x8289c;\n      *(uint **)(puVar47 + -0x78) = puVar31;\n      piVar32 = *(int **)(pcVar51 + 0x7ad9c);\n      *(code **)(puVar47 + -0xf0) = pcVar44;\n      *(int *)(puVar47 + -0x74) = iVar39;\n      *(code **)(puVar47 + -0x5c) = pcVar52;\n      *(undefined1 **)(puVar47 + -0x60) = puVar46 + -0x90;\n      *(int *)(puVar47 + -100) = iVar6;\n      *(int *)(puVar47 + -0x68) = iVar29;\n      *(uint **)(puVar47 + -0x6c) = puVar38;\n      *(uint **)(puVar47 + -0x70) = puVar36;\n      *(uint **)(puVar47 + -0x7c) = puVar8;\n      *(undefined4 *)(puVar47 + -0x80) = 0;\n      *(int *)(puVar47 + -0x84) = *piVar32;\n      puVar31 = puVar16;\n      puVar20 = puVar9;\n      if (puVar9 < puVar22) {\n        puVar16[1] = 0;\n        puVar30 = (uint *)0x0;\n      }\n      else {\n        puVar30 = puVar22;\n        if ((uint *)((int)puVar9 - (int)puVar22) <= puVar22) {\n          puVar30 = (uint *)((int)puVar9 - (int)puVar22);\n        }\n        puVar22 = puVar30;\n        puVar36 = puVar9;\n        if (puVar30 < (uint *)0x2) {\n          if (puVar30 == (uint *)0x0) {\n            puVar36 = (uint *)0x1;\n          }\n          *(uint **)puVar16[2] = puVar36;\n          puVar16[1] = 1;\n          puVar49 = puVar46 + -0x90;\n        }\n        else if (puVar9 < (uint *)0x23) {\n          puVar13 = (undefined1 *)((int)puVar30 + -2);\n          iVar6 = *(int *)(pcVar51 + 0x7aa7c);\n          puVar20 = (uint *)puVar16[2];\n          uVar18 = (int)puVar9 - (int)puVar30;\n          puVar36 = (uint *)(iVar6 + ((uint)puVar9 >> 1));\n          puVar30 = (uint *)(iVar6 + ((uint)puVar30 >> 1));\n          bVar2 = *(byte *)((int)puVar30 + -1);\n          puVar31 = (uint *)(uint)*(byte *)(iVar6 + (uVar18 >> 1) + -1);\n          *puVar20 = *(int *)((int)puVar13 * 4 + *(int *)(pcVar51 + 0x7a8c8) + 0x35b4) *\n                     *(int *)(*(int *)(pcVar51 + 0x7ad64) + (int)puVar9 * 4) *\n                     *(int *)((uVar18 - 2) * 4 + *(int *)(pcVar51 + 0x7a8c8) + 0x35b4) <<\n                     (((uint)*(byte *)((int)puVar36 + -1) - (int)(uint)bVar2) - (int)puVar31 & 0x1f)\n          ;\n          puVar16[1] = 1;\n          puVar22 = (uint *)(uint)bVar2;\n          puVar49 = puVar46 + -0x90;\n        }\n        else if (puVar30 < &DAT_00000011) {\n          FUN_000216e8();\n          pcVar44 = *(code **)(puVar47 + -0xf0);\n          puVar49 = puVar46 + -0x90;\n        }\n        else if (puVar30 < &DAT_00000021) {\n          uVar18 = (uint)puVar30 >> 1;\n          uVar37 = (int)puVar9 - uVar18;\n          FUN_000216e8();\n          iVar6 = *(int *)(puVar47 + -0xf0);\n          uVar7 = (int)puVar30 - uVar18;\n          if (uVar37 < 0x23) {\n            puVar50 = (undefined1 *)puVar16[1];\n            if ((int)puVar50 < (int)*puVar16) {\n              puVar8 = (uint *)puVar16[2];\n            }\n            else {\n              puVar8 = (uint *)(**(code **)(iVar6 + -0x7a80))(puVar16,puVar50 + 1);\n              iVar6 = *(int *)(puVar47 + -0xf0);\n            }\n            iVar29 = *(int *)(iVar6 + -0x7e20);\n            iVar24 = *(int *)(iVar6 + -0x7fd4) + 0x35b4;\n            uVar37 = (**(code **)(iVar6 + -0x7f9c))\n                               (puVar8,puVar8,puVar50,\n                                *(int *)((((int)puVar9 - (int)puVar30) - 2U) * 4 + iVar24) *\n                                *(int *)(*(int *)(iVar6 + -0x7b38) + uVar37 * 4) *\n                                *(int *)((uVar7 - 2) * 4 + iVar24) <<\n                                (((uint)*(byte *)(iVar29 + (uVar37 >> 1) + -1) -\n                                 (uint)*(byte *)(iVar29 + (uVar7 >> 1) + -1)) -\n                                 (uint)*(byte *)(iVar29 + ((uint)((int)puVar9 - (int)puVar30) >> 1)\n                                                + -1) & 0x1f));\n            iVar6 = *(int *)(puVar47 + -0xf0);\n            puVar30 = (uint *)(puVar50 + (uVar37 != 0));\n            puVar8[(int)puVar50] = uVar37;\n          }\n          else {\n            *(undefined4 *)(puVar47 + -0xe4) = 0x15;\n            *(undefined1 **)(puVar47 + -0xdc) = puVar47 + -0xd8;\n            FUN_000216e8(puVar47 + -0xe4,uVar37,uVar7);\n            (**(code **)(*(int *)(puVar47 + -0xf0) + -0x7ba8))(puVar16,puVar16,puVar47 + -0xe4);\n            iVar6 = *(int *)(puVar47 + -0xf0);\n            puVar8 = (uint *)puVar16[2];\n            puVar30 = (uint *)puVar16[1];\n          }\n          pcVar51 = *(code **)(iVar6 + -0x7bb4);\n          puVar38 = (uint *)((uint)*(byte *)((uVar7 - 8) + *(int *)(iVar6 + -0x7fd4) + 0x3550) -\n                            (uint)(uVar18 != uVar7));\n          *(undefined4 *)(puVar47 + -0xf8) =\n               *(undefined4 *)((uVar7 - 8) * 4 + *(int *)(iVar6 + -0x7fd4) + 0x355c);\n          *(uint **)(puVar47 + -0xf4) = puVar38;\n          puVar31 = puVar8;\n          puVar20 = puVar8;\n          puVar22 = puVar30;\n          (*pcVar51)();\n          pcVar44 = *(code **)(puVar47 + -0xf0);\n          if (puVar8[(int)((int)puVar30 + -1)] == 0) {\n            puVar9 = puVar8 + (int)puVar30;\n            do {\n              puVar1 = puVar9 + -2;\n              puVar30 = (uint *)((int)puVar30 + -1);\n              puVar9 = puVar9 + -1;\n            } while (*puVar1 == 0);\n          }\n          puVar16[1] = (uint)puVar30;\n          puVar49 = puVar50;\n        }\n        else if ((puVar30 < (uint *)0x3e8) || (puVar30 <= (uint *)((uint)puVar9 >> 4))) {\n          FUN_0002209c();\n          pcVar44 = *(code **)(puVar47 + -0xf0);\n          puVar49 = puVar46 + -0x90;\n        }\n        else {\n          FUN_000219dc();\n          pcVar44 = *(code **)(puVar47 + -0xf0);\n          puVar49 = puVar46 + -0x90;\n        }\n      }\n      if (*(int *)(puVar47 + -0x84) == *piVar32) {\n        return *piVar32;\n      }\n      pcVar51 = *(code **)(pcVar44 + -0x7b70);\n      uVar10 = 0x22b64;\n      (*pcVar51)();\n      pcVar44 = pcVar51 + 0x824d0;\n      puVar48 = puVar47 + -0x160;\n      *(uint **)(puVar47 + -0x118) = puVar16;\n      *(uint **)(puVar47 + -0x124) = puVar30;\n      piVar34 = *(int **)(pcVar51 + 0x7a9d0);\n      uVar18 = puVar22[1];\n      *(undefined1 **)(puVar47 + -0x110) = puVar49;\n      *(uint **)(puVar47 + -0x114) = puVar36;\n      *(int **)(puVar47 + -0x11c) = piVar32;\n      *(uint **)(puVar47 + -0x120) = puVar8;\n      *(undefined4 *)(puVar47 + -0x10c) = uVar10;\n      *(code **)(puVar47 + -0x150) = pcVar44;\n      *(undefined4 *)(puVar47 + -0x13c) = 0;\n      puVar8 = (uint *)puVar20[1];\n      *(int *)(puVar47 + -300) = *piVar34;\n      if ((int)uVar18 < 0) {\n        uVar37 = uVar18 * -4;\n        *(uint *)(puVar47 + -0x138) = -uVar18;\n        if (0x7f00 < uVar37) {\n          pcVar51 = *(code **)(pcVar51 + 0x7a780);\n          goto LAB_00022c88;\n        }\nLAB_00022be4:\n        iVar6 = -(uVar37 + 7 & 0xfffffff8);\n        puVar48 = puVar47 + iVar6 + -0x160;\n        puVar13 = puVar47 + iVar6 + -0x150;\n      }\n      else {\n        uVar37 = uVar18 * 4;\n        *(uint *)(puVar47 + -0x138) = uVar18;\n        pcVar51 = *(code **)(pcVar51 + 0x7a780);\n        if (uVar37 < 0x7f01) goto LAB_00022be4;\nLAB_00022c88:\n        *(uint **)(puVar47 + -0x144) = puVar22;\n        puVar13 = (undefined1 *)(*pcVar51)(puVar47 + -0x13c,uVar37);\n        pcVar44 = *(code **)(puVar47 + -0x150);\n        puVar22 = *(uint **)(puVar47 + -0x144);\n      }\n      pcVar51 = *(code **)(pcVar44 + -0x7a68);\n      puVar36 = (uint *)(puVar47 + -0x138);\n      *(undefined1 **)(puVar47 + -0x130) = puVar13;\n      puVar9 = puVar20;\n      (*pcVar51)(puVar31,puVar36,puVar20,puVar22);\n      iVar6 = *(int *)(puVar47 + -0x150);\n      if (((int)((uint)puVar8 ^ uVar18) < 0) || (*(int *)(puVar47 + -0x134) == 0)) {\n        piVar32 = *(int **)(puVar47 + -0x13c);\n        pcVar51 = *(code **)(iVar6 + -0x7a28);\n        if (piVar32 != (int *)0x0) goto LAB_00022cc0;\n      }\n      else {\n        puVar9 = (uint *)0x1;\n        puVar36 = puVar31;\n        (**(code **)(iVar6 + -0x7c9c))(puVar31);\n        piVar32 = *(int **)(puVar47 + -0x13c);\n        iVar6 = *(int *)(puVar47 + -0x150);\n        if (piVar32 != (int *)0x0) {\n          pcVar51 = *(code **)(iVar6 + -0x7a28);\nLAB_00022cc0:\n          (*pcVar51)();\n          iVar6 = *(int *)(puVar47 + -0x150);\n        }\n      }\n      if (*(int *)(puVar47 + -300) == *piVar34) {\n        return *piVar34;\n      }\n      pcVar51 = *(code **)(iVar6 + -0x7b70);\n      uVar10 = 0x22cdc;\n      (*pcVar51)();\n      pcVar44 = pcVar51 + 0x82360;\n      *(code **)(puVar48 + -0x28) = pcVar44;\n      *(undefined4 *)(puVar48 + -4) = uVar10;\n      *(uint **)(puVar48 + -8) = puVar38;\n      *(uint **)(puVar48 + -0xc) = puVar20;\n      *(int **)(puVar48 + -0x10) = piVar34;\n      *(uint **)(puVar48 + -0x14) = puVar31;\n      *(uint **)(puVar48 + -0x18) = puVar8;\n      *(uint *)(puVar48 + -0x1c) = (uint)puVar8 ^ uVar18;\n      if (puVar9 == (uint *)0x0) {\n        pcVar51 = *(code **)(pcVar51 + 0x7a900);\n        (*pcVar51)();\nLAB_00022e2c:\n        piVar32 = (int *)(*pcVar51)(piVar34,puVar31);\n        pcVar44 = *(code **)(puVar48 + -0x28);\n      }\n      else {\n        puVar8 = (uint *)puVar36[1];\n        if (puVar8 == (uint *)0x0) {\n          piVar32[1] = 0;\n          return 0;\n        }\n        puVar31 = puVar8;\n        if ((int)puVar8 < 0) {\n          puVar31 = (uint *)-(int)puVar8;\n        }\n        pcVar51 = *(code **)(pcVar51 + 0x7a8e0);\n        piVar34 = piVar32;\n        puVar20 = puVar9;\n        puVar38 = puVar36;\n        if (*piVar32 < (int)puVar31) goto LAB_00022e2c;\n        piVar32 = (int *)piVar32[2];\n      }\n      pcVar51 = *(code **)(pcVar44 + -0x7d98);\n      uVar18 = puVar38[2];\n      *(uint **)(puVar48 + -0x30) = puVar20;\n      iVar6 = (*pcVar51)(piVar32,0,uVar18,puVar31);\n      piVar17 = piVar32 + (int)puVar31 + -1;\n      if (iVar6 == 0) {\n        uVar18 = (uint)(*piVar17 == 0);\n        if (-1 < (int)puVar8) {\n          iVar24 = (int)puVar31 - uVar18;\n          goto LAB_00022d9c;\n        }\n      }\n      else {\n        if (-1 < (int)puVar8) {\n          do {\n            iVar24 = *piVar32;\n            *piVar32 = iVar24 + 1;\n            piVar32 = piVar32 + 1;\n          } while (iVar24 + 1 == 0);\n          iVar6 = (int)puVar20 - iVar6;\n          iVar24 = (int)puVar31 - (uint)(*piVar17 == 0);\n          goto LAB_00022d9c;\n        }\n        uVar18 = (uint)(*piVar17 == 0);\n      }\n      iVar24 = uVar18 - (int)puVar31;\nLAB_00022d9c:\n      piVar34[1] = iVar24;\n      return iVar6;\n    }\n    *(int *)(puVar46 + -0x44) = iVar39;\n    iVar6 = iVar39 + uVar7;\n    uVar18 = (**(code **)(*(int *)(puVar46 + -0x34) + (uVar7 - 1) * 4))(iVar39);\n    puVar43 = *(undefined **)(puVar46 + -0x78);\n    if ((uVar18 & 0xff) == 0) {\n      uVar37 = uVar18 >> 8;\n      iVar24 = 6;\n      if ((uVar37 & 0xff) == 0) {\n        uVar37 = uVar18 >> 0x10;\n        iVar24 = 0xe;\n        if ((uVar37 & 0xff) == 0) {\n          uVar37 = uVar18 >> 0x18;\n          iVar24 = 0x1e;\n          if (uVar37 != 0) {\n            iVar24 = 0x16;\n          }\n        }\n      }\n      uVar37 = (uint)*(byte *)(*(int *)(puVar46 + -0x3c) + (-uVar37 & uVar37)) + iVar24;\n    }\n    else {\n      uVar37 = *(byte *)(*(int *)(puVar46 + -0x3c) + (-uVar18 & uVar18)) - 2;\n    }\n    iVar39 = *(int *)(puVar46 + -0x38);\n    *puVar36 = uVar18 >> (uVar37 & 0x1f);\n    iVar24 = *(int *)(puVar46 + -0x60);\n    *(uint *)(puVar46 + -0x40) =\n         *(int *)(puVar46 + -0x40) + *(byte *)(iVar39 + (uVar7 - 1)) + uVar37;\n    if ((uint)(iVar24 - iVar6) <= uVar7) {\n      uVar7 = iVar24 - iVar6;\n    }\n    iVar39 = iVar6;\n    if (uVar7 != 0) goto LAB_00022234;\nLAB_00022534:\n    puVar31 = (uint *)0x1;\n    *(uint **)(puVar46 + -0x4c) = puVar36;\n  } while( true );" statement_identifier : (do_statement "do {\n    iVar41 = iVar39 - *(int *)(puVar46 + -0x44);\n    iVar24 = *(int *)(puVar46 + -0x5c);\n    iVar6 = iVar41;\n    if (iVar41 != 0) {\n      *(uint *)(puVar46 + -0x44) = uVar7;\n      *(uint **)(puVar46 + -0x50) = puVar31;\n      *(uint **)(puVar46 + -0x54) = puVar36;\n      *(int *)(puVar46 + -0x58) = iVar39;\n      iVar6 = *(int *)(puVar46 + -0x48);\n      iVar39 = *(int *)(puVar46 + -0x68);\n      iVar24 = iVar29;\n      do {\n        iVar33 = iVar41;\n        if (iVar39 <= iVar41) {\n          iVar33 = iVar39;\n        }\n        iVar29 = iVar24 + iVar33;\n        uVar18 = (**(code **)(*(int *)(puVar46 + -0x34) + (iVar33 + -1) * 4))(iVar24);\n        if ((uVar18 & 0xff) == 0) {\n          uVar37 = uVar18 >> 8;\n          iVar24 = 6;\n          if ((uVar37 & 0xff) == 0) {\n            uVar37 = uVar18 >> 0x10;\n            iVar24 = 0xe;\n            if ((uVar37 & 0xff) == 0) {\n              uVar37 = uVar18 >> 0x18;\n              iVar24 = 0x16;\n              if (uVar37 == 0) {\n                iVar24 = 0x1e;\n              }\n            }\n          }\n          uVar37 = (uint)*(byte *)(*(int *)(puVar46 + -0x3c) + (-uVar37 & uVar37)) + iVar24;\n        }\n        else {\n          uVar37 = *(byte *)(*(int *)(puVar46 + -0x3c) + (-uVar18 & uVar18)) - 2;\n        }\n        iVar41 = iVar41 - iVar33;\n        iVar6 = iVar6 + *(byte *)(*(int *)(puVar46 + -0x38) + iVar33 + -1) + uVar37;\n        uVar18 = (**(code **)(*(int *)(puVar46 + -0x78) + -0x7f9c))\n                           (puVar38,puVar38,puVar8,uVar18 >> (uVar37 & 0x1f));\n        puVar43 = *(undefined **)(puVar46 + -0x78);\n        puVar31 = puVar38 + (int)puVar8;\n        puVar8 = (uint *)((int)puVar8 + (uint)(uVar18 != 0));\n        *puVar31 = uVar18;\n        iVar24 = iVar29;\n      } while (iVar41 != 0);\n      uVar7 = *(uint *)(puVar46 + -0x44);\n      puVar31 = *(uint **)(puVar46 + -0x50);\n      puVar36 = *(uint **)(puVar46 + -0x54);\n      iVar39 = *(int *)(puVar46 + -0x58);\n      *(int *)(puVar46 + -0x48) = iVar6;\n      iVar24 = *(int *)(puVar46 + -0x5c);\n    }\n    uVar37 = *puVar36;\n    pcVar51 = *(code **)(puVar43 + -0x7bc0);\n    uVar18 = (uint)*(byte *)(*(int *)(puVar46 + -100) + ((uVar37 << 0x18) >> 0x19));\n    puVar8 = (uint *)((int)puVar8 +\n                     ((puVar38[(int)((int)puVar8 + iVar24)] < **(uint **)(puVar46 + -0x4c) ^ 1) -\n                     (int)puVar31));\n    iVar24 = uVar18 * 2 - uVar18 * uVar18 * uVar37;\n    if ((int)puVar8 < (int)puVar31) {\n      puVar31 = puVar8;\n    }\n    *(uint **)(puVar47 + -0x48) = puVar31;\n    *(uint *)(puVar47 + -0x44) = iVar24 * iVar24 * uVar37 + iVar24 * -2;\n    puVar9 = puVar38;\n    puVar22 = puVar8;\n    (*pcVar51)(puVar38,puVar38,puVar8,puVar36);\n    iVar24 = *(int *)(puVar46 + -0x78);\n    if (uVar7 == 0) {\n      if (*(int *)(puVar46 + -0x48) == *(int *)(puVar46 + -0x40)) {\n        puVar8 = (uint *)((int)puVar8 - (uint)(puVar38[(int)((int)puVar8 + -1)] == 0));\n        pcVar51 = *(code **)(iVar24 + -0x7a80);\n        if ((int)puVar8 <= **(int **)(puVar46 + -0x6c)) goto LAB_00022600;\nLAB_00022734:\n        puVar9 = puVar8;\n        puVar19 = (undefined4 *)(*pcVar51)(*(undefined4 *)(puVar46 + -0x6c));\n        iVar24 = *(int *)(puVar46 + -0x78);\n      }\n      else {\n        puVar9 = puVar38;\n        puVar22 = puVar8;\n        uVar18 = (**(code **)(iVar24 + -0x7ad4))(puVar38);\n        iVar24 = *(int *)(puVar46 + -0x78);\n        puVar38[(int)puVar8] = uVar18;\n        puVar8 = (uint *)((int)puVar8 +\n                         ((uint)(uVar18 != 0) -\n                         (uint)(puVar38[(int)((int)puVar8 + ((uVar18 != 0) - 1))] == 0)));\n        pcVar51 = *(code **)(iVar24 + -0x7a80);\n        if (**(int **)(puVar46 + -0x6c) < (int)puVar8) goto LAB_00022734;\nLAB_00022600:\n        puVar19 = *(undefined4 **)(*(int *)(puVar46 + -0x6c) + 8);\n      }\n      *(uint **)(*(int *)(puVar46 + -0x6c) + 4) = puVar8;\n      if (puVar8 != (uint *)0x0) {\n        puVar13 = (undefined1 *)((int)puVar8 + -1);\n        puVar9 = (uint *)*puVar38;\n        if (puVar13 != (undefined1 *)0x0) {\n          puVar15 = puVar19;\n          puVar16 = puVar38 + 1;\n          do {\n            *puVar15 = puVar9;\n            puVar38 = puVar16 + 1;\n            puVar13 = puVar13 + -1;\n            puVar9 = (uint *)*puVar16;\n            puVar15 = puVar15 + 1;\n            puVar16 = puVar38;\n          } while (puVar13 != (undefined1 *)0x0);\n          puVar8 = (uint *)((int)puVar8 * 4);\n          puVar19 = (undefined4 *)((int)puVar19 + (int)(puVar8 + -1));\n        }\n        *puVar19 = puVar9;\n      }\n      puVar16 = *(uint **)(puVar46 + -0x30);\n      if (puVar16 != (uint *)0x0) {\n        (**(code **)(iVar24 + -0x7a28))();\n        iVar24 = *(int *)(puVar46 + -0x78);\n      }\n      if (*(int *)(puVar46 + -0x2c) == **(int **)(puVar46 + -0x70)) {\n        return **(int **)(puVar46 + -0x70);\n      }\n      pcVar51 = *(code **)(iVar24 + -0x7b70);\n      pcVar52 = __gmpz_bin_uiui;\n      (*pcVar51)();\n      pcVar44 = pcVar51 + 0x8289c;\n      *(uint **)(puVar47 + -0x78) = puVar31;\n      piVar32 = *(int **)(pcVar51 + 0x7ad9c);\n      *(code **)(puVar47 + -0xf0) = pcVar44;\n      *(int *)(puVar47 + -0x74) = iVar39;\n      *(code **)(puVar47 + -0x5c) = pcVar52;\n      *(undefined1 **)(puVar47 + -0x60) = puVar46 + -0x90;\n      *(int *)(puVar47 + -100) = iVar6;\n      *(int *)(puVar47 + -0x68) = iVar29;\n      *(uint **)(puVar47 + -0x6c) = puVar38;\n      *(uint **)(puVar47 + -0x70) = puVar36;\n      *(uint **)(puVar47 + -0x7c) = puVar8;\n      *(undefined4 *)(puVar47 + -0x80) = 0;\n      *(int *)(puVar47 + -0x84) = *piVar32;\n      puVar31 = puVar16;\n      puVar20 = puVar9;\n      if (puVar9 < puVar22) {\n        puVar16[1] = 0;\n        puVar30 = (uint *)0x0;\n      }\n      else {\n        puVar30 = puVar22;\n        if ((uint *)((int)puVar9 - (int)puVar22) <= puVar22) {\n          puVar30 = (uint *)((int)puVar9 - (int)puVar22);\n        }\n        puVar22 = puVar30;\n        puVar36 = puVar9;\n        if (puVar30 < (uint *)0x2) {\n          if (puVar30 == (uint *)0x0) {\n            puVar36 = (uint *)0x1;\n          }\n          *(uint **)puVar16[2] = puVar36;\n          puVar16[1] = 1;\n          puVar49 = puVar46 + -0x90;\n        }\n        else if (puVar9 < (uint *)0x23) {\n          puVar13 = (undefined1 *)((int)puVar30 + -2);\n          iVar6 = *(int *)(pcVar51 + 0x7aa7c);\n          puVar20 = (uint *)puVar16[2];\n          uVar18 = (int)puVar9 - (int)puVar30;\n          puVar36 = (uint *)(iVar6 + ((uint)puVar9 >> 1));\n          puVar30 = (uint *)(iVar6 + ((uint)puVar30 >> 1));\n          bVar2 = *(byte *)((int)puVar30 + -1);\n          puVar31 = (uint *)(uint)*(byte *)(iVar6 + (uVar18 >> 1) + -1);\n          *puVar20 = *(int *)((int)puVar13 * 4 + *(int *)(pcVar51 + 0x7a8c8) + 0x35b4) *\n                     *(int *)(*(int *)(pcVar51 + 0x7ad64) + (int)puVar9 * 4) *\n                     *(int *)((uVar18 - 2) * 4 + *(int *)(pcVar51 + 0x7a8c8) + 0x35b4) <<\n                     (((uint)*(byte *)((int)puVar36 + -1) - (int)(uint)bVar2) - (int)puVar31 & 0x1f)\n          ;\n          puVar16[1] = 1;\n          puVar22 = (uint *)(uint)bVar2;\n          puVar49 = puVar46 + -0x90;\n        }\n        else if (puVar30 < &DAT_00000011) {\n          FUN_000216e8();\n          pcVar44 = *(code **)(puVar47 + -0xf0);\n          puVar49 = puVar46 + -0x90;\n        }\n        else if (puVar30 < &DAT_00000021) {\n          uVar18 = (uint)puVar30 >> 1;\n          uVar37 = (int)puVar9 - uVar18;\n          FUN_000216e8();\n          iVar6 = *(int *)(puVar47 + -0xf0);\n          uVar7 = (int)puVar30 - uVar18;\n          if (uVar37 < 0x23) {\n            puVar50 = (undefined1 *)puVar16[1];\n            if ((int)puVar50 < (int)*puVar16) {\n              puVar8 = (uint *)puVar16[2];\n            }\n            else {\n              puVar8 = (uint *)(**(code **)(iVar6 + -0x7a80))(puVar16,puVar50 + 1);\n              iVar6 = *(int *)(puVar47 + -0xf0);\n            }\n            iVar29 = *(int *)(iVar6 + -0x7e20);\n            iVar24 = *(int *)(iVar6 + -0x7fd4) + 0x35b4;\n            uVar37 = (**(code **)(iVar6 + -0x7f9c))\n                               (puVar8,puVar8,puVar50,\n                                *(int *)((((int)puVar9 - (int)puVar30) - 2U) * 4 + iVar24) *\n                                *(int *)(*(int *)(iVar6 + -0x7b38) + uVar37 * 4) *\n                                *(int *)((uVar7 - 2) * 4 + iVar24) <<\n                                (((uint)*(byte *)(iVar29 + (uVar37 >> 1) + -1) -\n                                 (uint)*(byte *)(iVar29 + (uVar7 >> 1) + -1)) -\n                                 (uint)*(byte *)(iVar29 + ((uint)((int)puVar9 - (int)puVar30) >> 1)\n                                                + -1) & 0x1f));\n            iVar6 = *(int *)(puVar47 + -0xf0);\n            puVar30 = (uint *)(puVar50 + (uVar37 != 0));\n            puVar8[(int)puVar50] = uVar37;\n          }\n          else {\n            *(undefined4 *)(puVar47 + -0xe4) = 0x15;\n            *(undefined1 **)(puVar47 + -0xdc) = puVar47 + -0xd8;\n            FUN_000216e8(puVar47 + -0xe4,uVar37,uVar7);\n            (**(code **)(*(int *)(puVar47 + -0xf0) + -0x7ba8))(puVar16,puVar16,puVar47 + -0xe4);\n            iVar6 = *(int *)(puVar47 + -0xf0);\n            puVar8 = (uint *)puVar16[2];\n            puVar30 = (uint *)puVar16[1];\n          }\n          pcVar51 = *(code **)(iVar6 + -0x7bb4);\n          puVar38 = (uint *)((uint)*(byte *)((uVar7 - 8) + *(int *)(iVar6 + -0x7fd4) + 0x3550) -\n                            (uint)(uVar18 != uVar7));\n          *(undefined4 *)(puVar47 + -0xf8) =\n               *(undefined4 *)((uVar7 - 8) * 4 + *(int *)(iVar6 + -0x7fd4) + 0x355c);\n          *(uint **)(puVar47 + -0xf4) = puVar38;\n          puVar31 = puVar8;\n          puVar20 = puVar8;\n          puVar22 = puVar30;\n          (*pcVar51)();\n          pcVar44 = *(code **)(puVar47 + -0xf0);\n          if (puVar8[(int)((int)puVar30 + -1)] == 0) {\n            puVar9 = puVar8 + (int)puVar30;\n            do {\n              puVar1 = puVar9 + -2;\n              puVar30 = (uint *)((int)puVar30 + -1);\n              puVar9 = puVar9 + -1;\n            } while (*puVar1 == 0);\n          }\n          puVar16[1] = (uint)puVar30;\n          puVar49 = puVar50;\n        }\n        else if ((puVar30 < (uint *)0x3e8) || (puVar30 <= (uint *)((uint)puVar9 >> 4))) {\n          FUN_0002209c();\n          pcVar44 = *(code **)(puVar47 + -0xf0);\n          puVar49 = puVar46 + -0x90;\n        }\n        else {\n          FUN_000219dc();\n          pcVar44 = *(code **)(puVar47 + -0xf0);\n          puVar49 = puVar46 + -0x90;\n        }\n      }\n      if (*(int *)(puVar47 + -0x84) == *piVar32) {\n        return *piVar32;\n      }\n      pcVar51 = *(code **)(pcVar44 + -0x7b70);\n      uVar10 = 0x22b64;\n      (*pcVar51)();\n      pcVar44 = pcVar51 + 0x824d0;\n      puVar48 = puVar47 + -0x160;\n      *(uint **)(puVar47 + -0x118) = puVar16;\n      *(uint **)(puVar47 + -0x124) = puVar30;\n      piVar34 = *(int **)(pcVar51 + 0x7a9d0);\n      uVar18 = puVar22[1];\n      *(undefined1 **)(puVar47 + -0x110) = puVar49;\n      *(uint **)(puVar47 + -0x114) = puVar36;\n      *(int **)(puVar47 + -0x11c) = piVar32;\n      *(uint **)(puVar47 + -0x120) = puVar8;\n      *(undefined4 *)(puVar47 + -0x10c) = uVar10;\n      *(code **)(puVar47 + -0x150) = pcVar44;\n      *(undefined4 *)(puVar47 + -0x13c) = 0;\n      puVar8 = (uint *)puVar20[1];\n      *(int *)(puVar47 + -300) = *piVar34;\n      if ((int)uVar18 < 0) {\n        uVar37 = uVar18 * -4;\n        *(uint *)(puVar47 + -0x138) = -uVar18;\n        if (0x7f00 < uVar37) {\n          pcVar51 = *(code **)(pcVar51 + 0x7a780);\n          goto LAB_00022c88;\n        }\nLAB_00022be4:\n        iVar6 = -(uVar37 + 7 & 0xfffffff8);\n        puVar48 = puVar47 + iVar6 + -0x160;\n        puVar13 = puVar47 + iVar6 + -0x150;\n      }\n      else {\n        uVar37 = uVar18 * 4;\n        *(uint *)(puVar47 + -0x138) = uVar18;\n        pcVar51 = *(code **)(pcVar51 + 0x7a780);\n        if (uVar37 < 0x7f01) goto LAB_00022be4;\nLAB_00022c88:\n        *(uint **)(puVar47 + -0x144) = puVar22;\n        puVar13 = (undefined1 *)(*pcVar51)(puVar47 + -0x13c,uVar37);\n        pcVar44 = *(code **)(puVar47 + -0x150);\n        puVar22 = *(uint **)(puVar47 + -0x144);\n      }\n      pcVar51 = *(code **)(pcVar44 + -0x7a68);\n      puVar36 = (uint *)(puVar47 + -0x138);\n      *(undefined1 **)(puVar47 + -0x130) = puVar13;\n      puVar9 = puVar20;\n      (*pcVar51)(puVar31,puVar36,puVar20,puVar22);\n      iVar6 = *(int *)(puVar47 + -0x150);\n      if (((int)((uint)puVar8 ^ uVar18) < 0) || (*(int *)(puVar47 + -0x134) == 0)) {\n        piVar32 = *(int **)(puVar47 + -0x13c);\n        pcVar51 = *(code **)(iVar6 + -0x7a28);\n        if (piVar32 != (int *)0x0) goto LAB_00022cc0;\n      }\n      else {\n        puVar9 = (uint *)0x1;\n        puVar36 = puVar31;\n        (**(code **)(iVar6 + -0x7c9c))(puVar31);\n        piVar32 = *(int **)(puVar47 + -0x13c);\n        iVar6 = *(int *)(puVar47 + -0x150);\n        if (piVar32 != (int *)0x0) {\n          pcVar51 = *(code **)(iVar6 + -0x7a28);\nLAB_00022cc0:\n          (*pcVar51)();\n          iVar6 = *(int *)(puVar47 + -0x150);\n        }\n      }\n      if (*(int *)(puVar47 + -300) == *piVar34) {\n        return *piVar34;\n      }\n      pcVar51 = *(code **)(iVar6 + -0x7b70);\n      uVar10 = 0x22cdc;\n      (*pcVar51)();\n      pcVar44 = pcVar51 + 0x82360;\n      *(code **)(puVar48 + -0x28) = pcVar44;\n      *(undefined4 *)(puVar48 + -4) = uVar10;\n      *(uint **)(puVar48 + -8) = puVar38;\n      *(uint **)(puVar48 + -0xc) = puVar20;\n      *(int **)(puVar48 + -0x10) = piVar34;\n      *(uint **)(puVar48 + -0x14) = puVar31;\n      *(uint **)(puVar48 + -0x18) = puVar8;\n      *(uint *)(puVar48 + -0x1c) = (uint)puVar8 ^ uVar18;\n      if (puVar9 == (uint *)0x0) {\n        pcVar51 = *(code **)(pcVar51 + 0x7a900);\n        (*pcVar51)();\nLAB_00022e2c:\n        piVar32 = (int *)(*pcVar51)(piVar34,puVar31);\n        pcVar44 = *(code **)(puVar48 + -0x28);\n      }\n      else {\n        puVar8 = (uint *)puVar36[1];\n        if (puVar8 == (uint *)0x0) {\n          piVar32[1] = 0;\n          return 0;\n        }\n        puVar31 = puVar8;\n        if ((int)puVar8 < 0) {\n          puVar31 = (uint *)-(int)puVar8;\n        }\n        pcVar51 = *(code **)(pcVar51 + 0x7a8e0);\n        piVar34 = piVar32;\n        puVar20 = puVar9;\n        puVar38 = puVar36;\n        if (*piVar32 < (int)puVar31) goto LAB_00022e2c;\n        piVar32 = (int *)piVar32[2];\n      }\n      pcVar51 = *(code **)(pcVar44 + -0x7d98);\n      uVar18 = puVar38[2];\n      *(uint **)(puVar48 + -0x30) = puVar20;\n      iVar6 = (*pcVar51)(piVar32,0,uVar18,puVar31);\n      piVar17 = piVar32 + (int)puVar31 + -1;\n      if (iVar6 == 0) {\n        uVar18 = (uint)(*piVar17 == 0);\n        if (-1 < (int)puVar8) {\n          iVar24 = (int)puVar31 - uVar18;\n          goto LAB_00022d9c;\n        }\n      }\n      else {\n        if (-1 < (int)puVar8) {\n          do {\n            iVar24 = *piVar32;\n            *piVar32 = iVar24 + 1;\n            piVar32 = piVar32 + 1;\n          } while (iVar24 + 1 == 0);\n          iVar6 = (int)puVar20 - iVar6;\n          iVar24 = (int)puVar31 - (uint)(*piVar17 == 0);\n          goto LAB_00022d9c;\n        }\n        uVar18 = (uint)(*piVar17 == 0);\n      }\n      iVar24 = uVar18 - (int)puVar31;\nLAB_00022d9c:\n      piVar34[1] = iVar24;\n      return iVar6;\n    }\n    *(int *)(puVar46 + -0x44) = iVar39;\n    iVar6 = iVar39 + uVar7;\n    uVar18 = (**(code **)(*(int *)(puVar46 + -0x34) + (uVar7 - 1) * 4))(iVar39);\n    puVar43 = *(undefined **)(puVar46 + -0x78);\n    if ((uVar18 & 0xff) == 0) {\n      uVar37 = uVar18 >> 8;\n      iVar24 = 6;\n      if ((uVar37 & 0xff) == 0) {\n        uVar37 = uVar18 >> 0x10;\n        iVar24 = 0xe;\n        if ((uVar37 & 0xff) == 0) {\n          uVar37 = uVar18 >> 0x18;\n          iVar24 = 0x1e;\n          if (uVar37 != 0) {\n            iVar24 = 0x16;\n          }\n        }\n      }\n      uVar37 = (uint)*(byte *)(*(int *)(puVar46 + -0x3c) + (-uVar37 & uVar37)) + iVar24;\n    }\n    else {\n      uVar37 = *(byte *)(*(int *)(puVar46 + -0x3c) + (-uVar18 & uVar18)) - 2;\n    }\n    iVar39 = *(int *)(puVar46 + -0x38);\n    *puVar36 = uVar18 >> (uVar37 & 0x1f);\n    iVar24 = *(int *)(puVar46 + -0x60);\n    *(uint *)(puVar46 + -0x40) =\n         *(int *)(puVar46 + -0x40) + *(byte *)(iVar39 + (uVar7 - 1)) + uVar37;\n    if ((uint)(iVar24 - iVar6) <= uVar7) {\n      uVar7 = iVar24 - iVar6;\n    }\n    iVar39 = iVar6;\n    if (uVar7 != 0) goto LAB_00022234;\nLAB_00022534:\n    puVar31 = (uint *)0x1;\n    *(uint **)(puVar46 + -0x4c) = puVar36;\n  } while( true );" do (compound_statement "{\n    iVar41 = iVar39 - *(int *)(puVar46 + -0x44);\n    iVar24 = *(int *)(puVar46 + -0x5c);\n    iVar6 = iVar41;\n    if (iVar41 != 0) {\n      *(uint *)(puVar46 + -0x44) = uVar7;\n      *(uint **)(puVar46 + -0x50) = puVar31;\n      *(uint **)(puVar46 + -0x54) = puVar36;\n      *(int *)(puVar46 + -0x58) = iVar39;\n      iVar6 = *(int *)(puVar46 + -0x48);\n      iVar39 = *(int *)(puVar46 + -0x68);\n      iVar24 = iVar29;\n      do {\n        iVar33 = iVar41;\n        if (iVar39 <= iVar41) {\n          iVar33 = iVar39;\n        }\n        iVar29 = iVar24 + iVar33;\n        uVar18 = (**(code **)(*(int *)(puVar46 + -0x34) + (iVar33 + -1) * 4))(iVar24);\n        if ((uVar18 & 0xff) == 0) {\n          uVar37 = uVar18 >> 8;\n          iVar24 = 6;\n          if ((uVar37 & 0xff) == 0) {\n            uVar37 = uVar18 >> 0x10;\n            iVar24 = 0xe;\n            if ((uVar37 & 0xff) == 0) {\n              uVar37 = uVar18 >> 0x18;\n              iVar24 = 0x16;\n              if (uVar37 == 0) {\n                iVar24 = 0x1e;\n              }\n            }\n          }\n          uVar37 = (uint)*(byte *)(*(int *)(puVar46 + -0x3c) + (-uVar37 & uVar37)) + iVar24;\n        }\n        else {\n          uVar37 = *(byte *)(*(int *)(puVar46 + -0x3c) + (-uVar18 & uVar18)) - 2;\n        }\n        iVar41 = iVar41 - iVar33;\n        iVar6 = iVar6 + *(byte *)(*(int *)(puVar46 + -0x38) + iVar33 + -1) + uVar37;\n        uVar18 = (**(code **)(*(int *)(puVar46 + -0x78) + -0x7f9c))\n                           (puVar38,puVar38,puVar8,uVar18 >> (uVar37 & 0x1f));\n        puVar43 = *(undefined **)(puVar46 + -0x78);\n        puVar31 = puVar38 + (int)puVar8;\n        puVar8 = (uint *)((int)puVar8 + (uint)(uVar18 != 0));\n        *puVar31 = uVar18;\n        iVar24 = iVar29;\n      } while (iVar41 != 0);\n      uVar7 = *(uint *)(puVar46 + -0x44);\n      puVar31 = *(uint **)(puVar46 + -0x50);\n      puVar36 = *(uint **)(puVar46 + -0x54);\n      iVar39 = *(int *)(puVar46 + -0x58);\n      *(int *)(puVar46 + -0x48) = iVar6;\n      iVar24 = *(int *)(puVar46 + -0x5c);\n    }\n    uVar37 = *puVar36;\n    pcVar51 = *(code **)(puVar43 + -0x7bc0);\n    uVar18 = (uint)*(byte *)(*(int *)(puVar46 + -100) + ((uVar37 << 0x18) >> 0x19));\n    puVar8 = (uint *)((int)puVar8 +\n                     ((puVar38[(int)((int)puVar8 + iVar24)] < **(uint **)(puVar46 + -0x4c) ^ 1) -\n                     (int)puVar31));\n    iVar24 = uVar18 * 2 - uVar18 * uVar18 * uVar37;\n    if ((int)puVar8 < (int)puVar31) {\n      puVar31 = puVar8;\n    }\n    *(uint **)(puVar47 + -0x48) = puVar31;\n    *(uint *)(puVar47 + -0x44) = iVar24 * iVar24 * uVar37 + iVar24 * -2;\n    puVar9 = puVar38;\n    puVar22 = puVar8;\n    (*pcVar51)(puVar38,puVar38,puVar8,puVar36);\n    iVar24 = *(int *)(puVar46 + -0x78);\n    if (uVar7 == 0) {\n      if (*(int *)(puVar46 + -0x48) == *(int *)(puVar46 + -0x40)) {\n        puVar8 = (uint *)((int)puVar8 - (uint)(puVar38[(int)((int)puVar8 + -1)] == 0));\n        pcVar51 = *(code **)(iVar24 + -0x7a80);\n        if ((int)puVar8 <= **(int **)(puVar46 + -0x6c)) goto LAB_00022600;\nLAB_00022734:\n        puVar9 = puVar8;\n        puVar19 = (undefined4 *)(*pcVar51)(*(undefined4 *)(puVar46 + -0x6c));\n        iVar24 = *(int *)(puVar46 + -0x78);\n      }\n      else {\n        puVar9 = puVar38;\n        puVar22 = puVar8;\n        uVar18 = (**(code **)(iVar24 + -0x7ad4))(puVar38);\n        iVar24 = *(int *)(puVar46 + -0x78);\n        puVar38[(int)puVar8] = uVar18;\n        puVar8 = (uint *)((int)puVar8 +\n                         ((uint)(uVar18 != 0) -\n                         (uint)(puVar38[(int)((int)puVar8 + ((uVar18 != 0) - 1))] == 0)));\n        pcVar51 = *(code **)(iVar24 + -0x7a80);\n        if (**(int **)(puVar46 + -0x6c) < (int)puVar8) goto LAB_00022734;\nLAB_00022600:\n        puVar19 = *(undefined4 **)(*(int *)(puVar46 + -0x6c) + 8);\n      }\n      *(uint **)(*(int *)(puVar46 + -0x6c) + 4) = puVar8;\n      if (puVar8 != (uint *)0x0) {\n        puVar13 = (undefined1 *)((int)puVar8 + -1);\n        puVar9 = (uint *)*puVar38;\n        if (puVar13 != (undefined1 *)0x0) {\n          puVar15 = puVar19;\n          puVar16 = puVar38 + 1;\n          do {\n            *puVar15 = puVar9;\n            puVar38 = puVar16 + 1;\n            puVar13 = puVar13 + -1;\n            puVar9 = (uint *)*puVar16;\n            puVar15 = puVar15 + 1;\n            puVar16 = puVar38;\n          } while (puVar13 != (undefined1 *)0x0);\n          puVar8 = (uint *)((int)puVar8 * 4);\n          puVar19 = (undefined4 *)((int)puVar19 + (int)(puVar8 + -1));\n        }\n        *puVar19 = puVar9;\n      }\n      puVar16 = *(uint **)(puVar46 + -0x30);\n      if (puVar16 != (uint *)0x0) {\n        (**(code **)(iVar24 + -0x7a28))();\n        iVar24 = *(int *)(puVar46 + -0x78);\n      }\n      if (*(int *)(puVar46 + -0x2c) == **(int **)(puVar46 + -0x70)) {\n        return **(int **)(puVar46 + -0x70);\n      }\n      pcVar51 = *(code **)(iVar24 + -0x7b70);\n      pcVar52 = __gmpz_bin_uiui;\n      (*pcVar51)();\n      pcVar44 = pcVar51 + 0x8289c;\n      *(uint **)(puVar47 + -0x78) = puVar31;\n      piVar32 = *(int **)(pcVar51 + 0x7ad9c);\n      *(code **)(puVar47 + -0xf0) = pcVar44;\n      *(int *)(puVar47 + -0x74) = iVar39;\n      *(code **)(puVar47 + -0x5c) = pcVar52;\n      *(undefined1 **)(puVar47 + -0x60) = puVar46 + -0x90;\n      *(int *)(puVar47 + -100) = iVar6;\n      *(int *)(puVar47 + -0x68) = iVar29;\n      *(uint **)(puVar47 + -0x6c) = puVar38;\n      *(uint **)(puVar47 + -0x70) = puVar36;\n      *(uint **)(puVar47 + -0x7c) = puVar8;\n      *(undefined4 *)(puVar47 + -0x80) = 0;\n      *(int *)(puVar47 + -0x84) = *piVar32;\n      puVar31 = puVar16;\n      puVar20 = puVar9;\n      if (puVar9 < puVar22) {\n        puVar16[1] = 0;\n        puVar30 = (uint *)0x0;\n      }\n      else {\n        puVar30 = puVar22;\n        if ((uint *)((int)puVar9 - (int)puVar22) <= puVar22) {\n          puVar30 = (uint *)((int)puVar9 - (int)puVar22);\n        }\n        puVar22 = puVar30;\n        puVar36 = puVar9;\n        if (puVar30 < (uint *)0x2) {\n          if (puVar30 == (uint *)0x0) {\n            puVar36 = (uint *)0x1;\n          }\n          *(uint **)puVar16[2] = puVar36;\n          puVar16[1] = 1;\n          puVar49 = puVar46 + -0x90;\n        }\n        else if (puVar9 < (uint *)0x23) {\n          puVar13 = (undefined1 *)((int)puVar30 + -2);\n          iVar6 = *(int *)(pcVar51 + 0x7aa7c);\n          puVar20 = (uint *)puVar16[2];\n          uVar18 = (int)puVar9 - (int)puVar30;\n          puVar36 = (uint *)(iVar6 + ((uint)puVar9 >> 1));\n          puVar30 = (uint *)(iVar6 + ((uint)puVar30 >> 1));\n          bVar2 = *(byte *)((int)puVar30 + -1);\n          puVar31 = (uint *)(uint)*(byte *)(iVar6 + (uVar18 >> 1) + -1);\n          *puVar20 = *(int *)((int)puVar13 * 4 + *(int *)(pcVar51 + 0x7a8c8) + 0x35b4) *\n                     *(int *)(*(int *)(pcVar51 + 0x7ad64) + (int)puVar9 * 4) *\n                     *(int *)((uVar18 - 2) * 4 + *(int *)(pcVar51 + 0x7a8c8) + 0x35b4) <<\n                     (((uint)*(byte *)((int)puVar36 + -1) - (int)(uint)bVar2) - (int)puVar31 & 0x1f)\n          ;\n          puVar16[1] = 1;\n          puVar22 = (uint *)(uint)bVar2;\n          puVar49 = puVar46 + -0x90;\n        }\n        else if (puVar30 < &DAT_00000011) {\n          FUN_000216e8();\n          pcVar44 = *(code **)(puVar47 + -0xf0);\n          puVar49 = puVar46 + -0x90;\n        }\n        else if (puVar30 < &DAT_00000021) {\n          uVar18 = (uint)puVar30 >> 1;\n          uVar37 = (int)puVar9 - uVar18;\n          FUN_000216e8();\n          iVar6 = *(int *)(puVar47 + -0xf0);\n          uVar7 = (int)puVar30 - uVar18;\n          if (uVar37 < 0x23) {\n            puVar50 = (undefined1 *)puVar16[1];\n            if ((int)puVar50 < (int)*puVar16) {\n              puVar8 = (uint *)puVar16[2];\n            }\n            else {\n              puVar8 = (uint *)(**(code **)(iVar6 + -0x7a80))(puVar16,puVar50 + 1);\n              iVar6 = *(int *)(puVar47 + -0xf0);\n            }\n            iVar29 = *(int *)(iVar6 + -0x7e20);\n            iVar24 = *(int *)(iVar6 + -0x7fd4) + 0x35b4;\n            uVar37 = (**(code **)(iVar6 + -0x7f9c))\n                               (puVar8,puVar8,puVar50,\n                                *(int *)((((int)puVar9 - (int)puVar30) - 2U) * 4 + iVar24) *\n                                *(int *)(*(int *)(iVar6 + -0x7b38) + uVar37 * 4) *\n                                *(int *)((uVar7 - 2) * 4 + iVar24) <<\n                                (((uint)*(byte *)(iVar29 + (uVar37 >> 1) + -1) -\n                                 (uint)*(byte *)(iVar29 + (uVar7 >> 1) + -1)) -\n                                 (uint)*(byte *)(iVar29 + ((uint)((int)puVar9 - (int)puVar30) >> 1)\n                                                + -1) & 0x1f));\n            iVar6 = *(int *)(puVar47 + -0xf0);\n            puVar30 = (uint *)(puVar50 + (uVar37 != 0));\n            puVar8[(int)puVar50] = uVar37;\n          }\n          else {\n            *(undefined4 *)(puVar47 + -0xe4) = 0x15;\n            *(undefined1 **)(puVar47 + -0xdc) = puVar47 + -0xd8;\n            FUN_000216e8(puVar47 + -0xe4,uVar37,uVar7);\n            (**(code **)(*(int *)(puVar47 + -0xf0) + -0x7ba8))(puVar16,puVar16,puVar47 + -0xe4);\n            iVar6 = *(int *)(puVar47 + -0xf0);\n            puVar8 = (uint *)puVar16[2];\n            puVar30 = (uint *)puVar16[1];\n          }\n          pcVar51 = *(code **)(iVar6 + -0x7bb4);\n          puVar38 = (uint *)((uint)*(byte *)((uVar7 - 8) + *(int *)(iVar6 + -0x7fd4) + 0x3550) -\n                            (uint)(uVar18 != uVar7));\n          *(undefined4 *)(puVar47 + -0xf8) =\n               *(undefined4 *)((uVar7 - 8) * 4 + *(int *)(iVar6 + -0x7fd4) + 0x355c);\n          *(uint **)(puVar47 + -0xf4) = puVar38;\n          puVar31 = puVar8;\n          puVar20 = puVar8;\n          puVar22 = puVar30;\n          (*pcVar51)();\n          pcVar44 = *(code **)(puVar47 + -0xf0);\n          if (puVar8[(int)((int)puVar30 + -1)] == 0) {\n            puVar9 = puVar8 + (int)puVar30;\n            do {\n              puVar1 = puVar9 + -2;\n              puVar30 = (uint *)((int)puVar30 + -1);\n              puVar9 = puVar9 + -1;\n            } while (*puVar1 == 0);\n          }\n          puVar16[1] = (uint)puVar30;\n          puVar49 = puVar50;\n        }\n        else if ((puVar30 < (uint *)0x3e8) || (puVar30 <= (uint *)((uint)puVar9 >> 4))) {\n          FUN_0002209c();\n          pcVar44 = *(code **)(puVar47 + -0xf0);\n          puVar49 = puVar46 + -0x90;\n        }\n        else {\n          FUN_000219dc();\n          pcVar44 = *(code **)(puVar47 + -0xf0);\n          puVar49 = puVar46 + -0x90;\n        }\n      }\n      if (*(int *)(puVar47 + -0x84) == *piVar32) {\n        return *piVar32;\n      }\n      pcVar51 = *(code **)(pcVar44 + -0x7b70);\n      uVar10 = 0x22b64;\n      (*pcVar51)();\n      pcVar44 = pcVar51 + 0x824d0;\n      puVar48 = puVar47 + -0x160;\n      *(uint **)(puVar47 + -0x118) = puVar16;\n      *(uint **)(puVar47 + -0x124) = puVar30;\n      piVar34 = *(int **)(pcVar51 + 0x7a9d0);\n      uVar18 = puVar22[1];\n      *(undefined1 **)(puVar47 + -0x110) = puVar49;\n      *(uint **)(puVar47 + -0x114) = puVar36;\n      *(int **)(puVar47 + -0x11c) = piVar32;\n      *(uint **)(puVar47 + -0x120) = puVar8;\n      *(undefined4 *)(puVar47 + -0x10c) = uVar10;\n      *(code **)(puVar47 + -0x150) = pcVar44;\n      *(undefined4 *)(puVar47 + -0x13c) = 0;\n      puVar8 = (uint *)puVar20[1];\n      *(int *)(puVar47 + -300) = *piVar34;\n      if ((int)uVar18 < 0) {\n        uVar37 = uVar18 * -4;\n        *(uint *)(puVar47 + -0x138) = -uVar18;\n        if (0x7f00 < uVar37) {\n          pcVar51 = *(code **)(pcVar51 + 0x7a780);\n          goto LAB_00022c88;\n        }\nLAB_00022be4:\n        iVar6 = -(uVar37 + 7 & 0xfffffff8);\n        puVar48 = puVar47 + iVar6 + -0x160;\n        puVar13 = puVar47 + iVar6 + -0x150;\n      }\n      else {\n        uVar37 = uVar18 * 4;\n        *(uint *)(puVar47 + -0x138) = uVar18;\n        pcVar51 = *(code **)(pcVar51 + 0x7a780);\n        if (uVar37 < 0x7f01) goto LAB_00022be4;\nLAB_00022c88:\n        *(uint **)(puVar47 + -0x144) = puVar22;\n        puVar13 = (undefined1 *)(*pcVar51)(puVar47 + -0x13c,uVar37);\n        pcVar44 = *(code **)(puVar47 + -0x150);\n        puVar22 = *(uint **)(puVar47 + -0x144);\n      }\n      pcVar51 = *(code **)(pcVar44 + -0x7a68);\n      puVar36 = (uint *)(puVar47 + -0x138);\n      *(undefined1 **)(puVar47 + -0x130) = puVar13;\n      puVar9 = puVar20;\n      (*pcVar51)(puVar31,puVar36,puVar20,puVar22);\n      iVar6 = *(int *)(puVar47 + -0x150);\n      if (((int)((uint)puVar8 ^ uVar18) < 0) || (*(int *)(puVar47 + -0x134) == 0)) {\n        piVar32 = *(int **)(puVar47 + -0x13c);\n        pcVar51 = *(code **)(iVar6 + -0x7a28);\n        if (piVar32 != (int *)0x0) goto LAB_00022cc0;\n      }\n      else {\n        puVar9 = (uint *)0x1;\n        puVar36 = puVar31;\n        (**(code **)(iVar6 + -0x7c9c))(puVar31);\n        piVar32 = *(int **)(puVar47 + -0x13c);\n        iVar6 = *(int *)(puVar47 + -0x150);\n        if (piVar32 != (int *)0x0) {\n          pcVar51 = *(code **)(iVar6 + -0x7a28);\nLAB_00022cc0:\n          (*pcVar51)();\n          iVar6 = *(int *)(puVar47 + -0x150);\n        }\n      }\n      if (*(int *)(puVar47 + -300) == *piVar34) {\n        return *piVar34;\n      }\n      pcVar51 = *(code **)(iVar6 + -0x7b70);\n      uVar10 = 0x22cdc;\n      (*pcVar51)();\n      pcVar44 = pcVar51 + 0x82360;\n      *(code **)(puVar48 + -0x28) = pcVar44;\n      *(undefined4 *)(puVar48 + -4) = uVar10;\n      *(uint **)(puVar48 + -8) = puVar38;\n      *(uint **)(puVar48 + -0xc) = puVar20;\n      *(int **)(puVar48 + -0x10) = piVar34;\n      *(uint **)(puVar48 + -0x14) = puVar31;\n      *(uint **)(puVar48 + -0x18) = puVar8;\n      *(uint *)(puVar48 + -0x1c) = (uint)puVar8 ^ uVar18;\n      if (puVar9 == (uint *)0x0) {\n        pcVar51 = *(code **)(pcVar51 + 0x7a900);\n        (*pcVar51)();\nLAB_00022e2c:\n        piVar32 = (int *)(*pcVar51)(piVar34,puVar31);\n        pcVar44 = *(code **)(puVar48 + -0x28);\n      }\n      else {\n        puVar8 = (uint *)puVar36[1];\n        if (puVar8 == (uint *)0x0) {\n          piVar32[1] = 0;\n          return 0;\n        }\n        puVar31 = puVar8;\n        if ((int)puVar8 < 0) {\n          puVar31 = (uint *)-(int)puVar8;\n        }\n        pcVar51 = *(code **)(pcVar51 + 0x7a8e0);\n        piVar34 = piVar32;\n        puVar20 = puVar9;\n        puVar38 = puVar36;\n        if (*piVar32 < (int)puVar31) goto LAB_00022e2c;\n        piVar32 = (int *)piVar32[2];\n      }\n      pcVar51 = *(code **)(pcVar44 + -0x7d98);\n      uVar18 = puVar38[2];\n      *(uint **)(puVar48 + -0x30) = puVar20;\n      iVar6 = (*pcVar51)(piVar32,0,uVar18,puVar31);\n      piVar17 = piVar32 + (int)puVar31 + -1;\n      if (iVar6 == 0) {\n        uVar18 = (uint)(*piVar17 == 0);\n        if (-1 < (int)puVar8) {\n          iVar24 = (int)puVar31 - uVar18;\n          goto LAB_00022d9c;\n        }\n      }\n      else {\n        if (-1 < (int)puVar8) {\n          do {\n            iVar24 = *piVar32;\n            *piVar32 = iVar24 + 1;\n            piVar32 = piVar32 + 1;\n          } while (iVar24 + 1 == 0);\n          iVar6 = (int)puVar20 - iVar6;\n          iVar24 = (int)puVar31 - (uint)(*piVar17 == 0);\n          goto LAB_00022d9c;\n        }\n        uVar18 = (uint)(*piVar17 == 0);\n      }\n      iVar24 = uVar18 - (int)puVar31;\nLAB_00022d9c:\n      piVar34[1] = iVar24;\n      return iVar6;\n    }\n    *(int *)(puVar46 + -0x44) = iVar39;\n    iVar6 = iVar39 + uVar7;\n    uVar18 = (**(code **)(*(int *)(puVar46 + -0x34) + (uVar7 - 1) * 4))(iVar39);\n    puVar43 = *(undefined **)(puVar46 + -0x78);\n    if ((uVar18 & 0xff) == 0) {\n      uVar37 = uVar18 >> 8;\n      iVar24 = 6;\n      if ((uVar37 & 0xff) == 0) {\n        uVar37 = uVar18 >> 0x10;\n        iVar24 = 0xe;\n        if ((uVar37 & 0xff) == 0) {\n          uVar37 = uVar18 >> 0x18;\n          iVar24 = 0x1e;\n          if (uVar37 != 0) {\n            iVar24 = 0x16;\n          }\n        }\n      }\n      uVar37 = (uint)*(byte *)(*(int *)(puVar46 + -0x3c) + (-uVar37 & uVar37)) + iVar24;\n    }\n    else {\n      uVar37 = *(byte *)(*(int *)(puVar46 + -0x3c) + (-uVar18 & uVar18)) - 2;\n    }\n    iVar39 = *(int *)(puVar46 + -0x38);\n    *puVar36 = uVar18 >> (uVar37 & 0x1f);\n    iVar24 = *(int *)(puVar46 + -0x60);\n    *(uint *)(puVar46 + -0x40) =\n         *(int *)(puVar46 + -0x40) + *(byte *)(iVar39 + (uVar7 - 1)) + uVar37;\n    if ((uint)(iVar24 - iVar6) <= uVar7) {\n      uVar7 = iVar24 - iVar6;\n    }\n    iVar39 = iVar6;\n    if (uVar7 != 0) goto LAB_00022234;\nLAB_00022534:\n    puVar31 = (uint *)0x1;\n    *(uint **)(puVar46 + -0x4c) = puVar36;\n  }" { (expression_statement "iVar41 = iVar39 - *(int *)(puVar46 + -0x44);" (assignment_expression "iVar41 = iVar39 - *(int *)(puVar46 + -0x44)" identifier = (binary_expression "iVar39 - *(int *)(puVar46 + -0x44)" identifier - (pointer_expression "*(int *)(puVar46 + -0x44)" * (cast_expression "(int *)(puVar46 + -0x44)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar46 + -0x44)" ( (binary_expression "puVar46 + -0x44" identifier + number_literal) )))))) ;) (expression_statement "iVar24 = *(int *)(puVar46 + -0x5c);" (assignment_expression "iVar24 = *(int *)(puVar46 + -0x5c)" identifier = (pointer_expression "*(int *)(puVar46 + -0x5c)" * (cast_expression "(int *)(puVar46 + -0x5c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar46 + -0x5c)" ( (binary_expression "puVar46 + -0x5c" identifier + number_literal) ))))) ;) (expression_statement "iVar6 = iVar41;" (assignment_expression "iVar6 = iVar41" identifier = identifier) ;) (if_statement "if (iVar41 != 0) {\n      *(uint *)(puVar46 + -0x44) = uVar7;\n      *(uint **)(puVar46 + -0x50) = puVar31;\n      *(uint **)(puVar46 + -0x54) = puVar36;\n      *(int *)(puVar46 + -0x58) = iVar39;\n      iVar6 = *(int *)(puVar46 + -0x48);\n      iVar39 = *(int *)(puVar46 + -0x68);\n      iVar24 = iVar29;\n      do {\n        iVar33 = iVar41;\n        if (iVar39 <= iVar41) {\n          iVar33 = iVar39;\n        }\n        iVar29 = iVar24 + iVar33;\n        uVar18 = (**(code **)(*(int *)(puVar46 + -0x34) + (iVar33 + -1) * 4))(iVar24);\n        if ((uVar18 & 0xff) == 0) {\n          uVar37 = uVar18 >> 8;\n          iVar24 = 6;\n          if ((uVar37 & 0xff) == 0) {\n            uVar37 = uVar18 >> 0x10;\n            iVar24 = 0xe;\n            if ((uVar37 & 0xff) == 0) {\n              uVar37 = uVar18 >> 0x18;\n              iVar24 = 0x16;\n              if (uVar37 == 0) {\n                iVar24 = 0x1e;\n              }\n            }\n          }\n          uVar37 = (uint)*(byte *)(*(int *)(puVar46 + -0x3c) + (-uVar37 & uVar37)) + iVar24;\n        }\n        else {\n          uVar37 = *(byte *)(*(int *)(puVar46 + -0x3c) + (-uVar18 & uVar18)) - 2;\n        }\n        iVar41 = iVar41 - iVar33;\n        iVar6 = iVar6 + *(byte *)(*(int *)(puVar46 + -0x38) + iVar33 + -1) + uVar37;\n        uVar18 = (**(code **)(*(int *)(puVar46 + -0x78) + -0x7f9c))\n                           (puVar38,puVar38,puVar8,uVar18 >> (uVar37 & 0x1f));\n        puVar43 = *(undefined **)(puVar46 + -0x78);\n        puVar31 = puVar38 + (int)puVar8;\n        puVar8 = (uint *)((int)puVar8 + (uint)(uVar18 != 0));\n        *puVar31 = uVar18;\n        iVar24 = iVar29;\n      } while (iVar41 != 0);\n      uVar7 = *(uint *)(puVar46 + -0x44);\n      puVar31 = *(uint **)(puVar46 + -0x50);\n      puVar36 = *(uint **)(puVar46 + -0x54);\n      iVar39 = *(int *)(puVar46 + -0x58);\n      *(int *)(puVar46 + -0x48) = iVar6;\n      iVar24 = *(int *)(puVar46 + -0x5c);\n    }" if (parenthesized_expression "(iVar41 != 0)" ( (binary_expression "iVar41 != 0" identifier != number_literal) )) (compound_statement "{\n      *(uint *)(puVar46 + -0x44) = uVar7;\n      *(uint **)(puVar46 + -0x50) = puVar31;\n      *(uint **)(puVar46 + -0x54) = puVar36;\n      *(int *)(puVar46 + -0x58) = iVar39;\n      iVar6 = *(int *)(puVar46 + -0x48);\n      iVar39 = *(int *)(puVar46 + -0x68);\n      iVar24 = iVar29;\n      do {\n        iVar33 = iVar41;\n        if (iVar39 <= iVar41) {\n          iVar33 = iVar39;\n        }\n        iVar29 = iVar24 + iVar33;\n        uVar18 = (**(code **)(*(int *)(puVar46 + -0x34) + (iVar33 + -1) * 4))(iVar24);\n        if ((uVar18 & 0xff) == 0) {\n          uVar37 = uVar18 >> 8;\n          iVar24 = 6;\n          if ((uVar37 & 0xff) == 0) {\n            uVar37 = uVar18 >> 0x10;\n            iVar24 = 0xe;\n            if ((uVar37 & 0xff) == 0) {\n              uVar37 = uVar18 >> 0x18;\n              iVar24 = 0x16;\n              if (uVar37 == 0) {\n                iVar24 = 0x1e;\n              }\n            }\n          }\n          uVar37 = (uint)*(byte *)(*(int *)(puVar46 + -0x3c) + (-uVar37 & uVar37)) + iVar24;\n        }\n        else {\n          uVar37 = *(byte *)(*(int *)(puVar46 + -0x3c) + (-uVar18 & uVar18)) - 2;\n        }\n        iVar41 = iVar41 - iVar33;\n        iVar6 = iVar6 + *(byte *)(*(int *)(puVar46 + -0x38) + iVar33 + -1) + uVar37;\n        uVar18 = (**(code **)(*(int *)(puVar46 + -0x78) + -0x7f9c))\n                           (puVar38,puVar38,puVar8,uVar18 >> (uVar37 & 0x1f));\n        puVar43 = *(undefined **)(puVar46 + -0x78);\n        puVar31 = puVar38 + (int)puVar8;\n        puVar8 = (uint *)((int)puVar8 + (uint)(uVar18 != 0));\n        *puVar31 = uVar18;\n        iVar24 = iVar29;\n      } while (iVar41 != 0);\n      uVar7 = *(uint *)(puVar46 + -0x44);\n      puVar31 = *(uint **)(puVar46 + -0x50);\n      puVar36 = *(uint **)(puVar46 + -0x54);\n      iVar39 = *(int *)(puVar46 + -0x58);\n      *(int *)(puVar46 + -0x48) = iVar6;\n      iVar24 = *(int *)(puVar46 + -0x5c);\n    }" { (expression_statement "*(uint *)(puVar46 + -0x44) = uVar7;" (assignment_expression "*(uint *)(puVar46 + -0x44) = uVar7" (pointer_expression "*(uint *)(puVar46 + -0x44)" * (cast_expression "(uint *)(puVar46 + -0x44)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar46 + -0x44)" ( (binary_expression "puVar46 + -0x44" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(uint **)(puVar46 + -0x50) = puVar31;" (assignment_expression "*(uint **)(puVar46 + -0x50) = puVar31" (pointer_expression "*(uint **)(puVar46 + -0x50)" * (cast_expression "(uint **)(puVar46 + -0x50)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar46 + -0x50)" ( (binary_expression "puVar46 + -0x50" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(uint **)(puVar46 + -0x54) = puVar36;" (assignment_expression "*(uint **)(puVar46 + -0x54) = puVar36" (pointer_expression "*(uint **)(puVar46 + -0x54)" * (cast_expression "(uint **)(puVar46 + -0x54)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar46 + -0x54)" ( (binary_expression "puVar46 + -0x54" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(puVar46 + -0x58) = iVar39;" (assignment_expression "*(int *)(puVar46 + -0x58) = iVar39" (pointer_expression "*(int *)(puVar46 + -0x58)" * (cast_expression "(int *)(puVar46 + -0x58)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar46 + -0x58)" ( (binary_expression "puVar46 + -0x58" identifier + number_literal) )))) = identifier) ;) (expression_statement "iVar6 = *(int *)(puVar46 + -0x48);" (assignment_expression "iVar6 = *(int *)(puVar46 + -0x48)" identifier = (pointer_expression "*(int *)(puVar46 + -0x48)" * (cast_expression "(int *)(puVar46 + -0x48)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar46 + -0x48)" ( (binary_expression "puVar46 + -0x48" identifier + number_literal) ))))) ;) (expression_statement "iVar39 = *(int *)(puVar46 + -0x68);" (assignment_expression "iVar39 = *(int *)(puVar46 + -0x68)" identifier = (pointer_expression "*(int *)(puVar46 + -0x68)" * (cast_expression "(int *)(puVar46 + -0x68)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar46 + -0x68)" ( (binary_expression "puVar46 + -0x68" identifier + number_literal) ))))) ;) (expression_statement "iVar24 = iVar29;" (assignment_expression "iVar24 = iVar29" identifier = identifier) ;) (do_statement "do {\n        iVar33 = iVar41;\n        if (iVar39 <= iVar41) {\n          iVar33 = iVar39;\n        }\n        iVar29 = iVar24 + iVar33;\n        uVar18 = (**(code **)(*(int *)(puVar46 + -0x34) + (iVar33 + -1) * 4))(iVar24);\n        if ((uVar18 & 0xff) == 0) {\n          uVar37 = uVar18 >> 8;\n          iVar24 = 6;\n          if ((uVar37 & 0xff) == 0) {\n            uVar37 = uVar18 >> 0x10;\n            iVar24 = 0xe;\n            if ((uVar37 & 0xff) == 0) {\n              uVar37 = uVar18 >> 0x18;\n              iVar24 = 0x16;\n              if (uVar37 == 0) {\n                iVar24 = 0x1e;\n              }\n            }\n          }\n          uVar37 = (uint)*(byte *)(*(int *)(puVar46 + -0x3c) + (-uVar37 & uVar37)) + iVar24;\n        }\n        else {\n          uVar37 = *(byte *)(*(int *)(puVar46 + -0x3c) + (-uVar18 & uVar18)) - 2;\n        }\n        iVar41 = iVar41 - iVar33;\n        iVar6 = iVar6 + *(byte *)(*(int *)(puVar46 + -0x38) + iVar33 + -1) + uVar37;\n        uVar18 = (**(code **)(*(int *)(puVar46 + -0x78) + -0x7f9c))\n                           (puVar38,puVar38,puVar8,uVar18 >> (uVar37 & 0x1f));\n        puVar43 = *(undefined **)(puVar46 + -0x78);\n        puVar31 = puVar38 + (int)puVar8;\n        puVar8 = (uint *)((int)puVar8 + (uint)(uVar18 != 0));\n        *puVar31 = uVar18;\n        iVar24 = iVar29;\n      } while (iVar41 != 0);" do (compound_statement "{\n        iVar33 = iVar41;\n        if (iVar39 <= iVar41) {\n          iVar33 = iVar39;\n        }\n        iVar29 = iVar24 + iVar33;\n        uVar18 = (**(code **)(*(int *)(puVar46 + -0x34) + (iVar33 + -1) * 4))(iVar24);\n        if ((uVar18 & 0xff) == 0) {\n          uVar37 = uVar18 >> 8;\n          iVar24 = 6;\n          if ((uVar37 & 0xff) == 0) {\n            uVar37 = uVar18 >> 0x10;\n            iVar24 = 0xe;\n            if ((uVar37 & 0xff) == 0) {\n              uVar37 = uVar18 >> 0x18;\n              iVar24 = 0x16;\n              if (uVar37 == 0) {\n                iVar24 = 0x1e;\n              }\n            }\n          }\n          uVar37 = (uint)*(byte *)(*(int *)(puVar46 + -0x3c) + (-uVar37 & uVar37)) + iVar24;\n        }\n        else {\n          uVar37 = *(byte *)(*(int *)(puVar46 + -0x3c) + (-uVar18 & uVar18)) - 2;\n        }\n        iVar41 = iVar41 - iVar33;\n        iVar6 = iVar6 + *(byte *)(*(int *)(puVar46 + -0x38) + iVar33 + -1) + uVar37;\n        uVar18 = (**(code **)(*(int *)(puVar46 + -0x78) + -0x7f9c))\n                           (puVar38,puVar38,puVar8,uVar18 >> (uVar37 & 0x1f));\n        puVar43 = *(undefined **)(puVar46 + -0x78);\n        puVar31 = puVar38 + (int)puVar8;\n        puVar8 = (uint *)((int)puVar8 + (uint)(uVar18 != 0));\n        *puVar31 = uVar18;\n        iVar24 = iVar29;\n      }" { (expression_statement "iVar33 = iVar41;" (assignment_expression "iVar33 = iVar41" identifier = identifier) ;) (if_statement "if (iVar39 <= iVar41) {\n          iVar33 = iVar39;\n        }" if (parenthesized_expression "(iVar39 <= iVar41)" ( (binary_expression "iVar39 <= iVar41" identifier <= identifier) )) (compound_statement "{\n          iVar33 = iVar39;\n        }" { (expression_statement "iVar33 = iVar39;" (assignment_expression "iVar33 = iVar39" identifier = identifier) ;) })) (expression_statement "iVar29 = iVar24 + iVar33;" (assignment_expression "iVar29 = iVar24 + iVar33" identifier = (binary_expression "iVar24 + iVar33" identifier + identifier)) ;) (expression_statement "uVar18 = (**(code **)(*(int *)(puVar46 + -0x34) + (iVar33 + -1) * 4))(iVar24);" (assignment_expression "uVar18 = (**(code **)(*(int *)(puVar46 + -0x34) + (iVar33 + -1) * 4))(iVar24)" identifier = (call_expression "(**(code **)(*(int *)(puVar46 + -0x34) + (iVar33 + -1) * 4))(iVar24)" (parenthesized_expression "(**(code **)(*(int *)(puVar46 + -0x34) + (iVar33 + -1) * 4))" ( (pointer_expression "**(code **)(*(int *)(puVar46 + -0x34) + (iVar33 + -1) * 4)" * (pointer_expression "*(code **)(*(int *)(puVar46 + -0x34) + (iVar33 + -1) * 4)" * (cast_expression "(code **)(*(int *)(puVar46 + -0x34) + (iVar33 + -1) * 4)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)(puVar46 + -0x34) + (iVar33 + -1) * 4)" ( (binary_expression "*(int *)(puVar46 + -0x34) + (iVar33 + -1) * 4" (pointer_expression "*(int *)(puVar46 + -0x34)" * (cast_expression "(int *)(puVar46 + -0x34)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar46 + -0x34)" ( (binary_expression "puVar46 + -0x34" identifier + number_literal) )))) + (binary_expression "(iVar33 + -1) * 4" (parenthesized_expression "(iVar33 + -1)" ( (binary_expression "iVar33 + -1" identifier + number_literal) )) * number_literal)) ))))) )) (argument_list "(iVar24)" ( identifier )))) ;) (if_statement "if ((uVar18 & 0xff) == 0) {\n          uVar37 = uVar18 >> 8;\n          iVar24 = 6;\n          if ((uVar37 & 0xff) == 0) {\n            uVar37 = uVar18 >> 0x10;\n            iVar24 = 0xe;\n            if ((uVar37 & 0xff) == 0) {\n              uVar37 = uVar18 >> 0x18;\n              iVar24 = 0x16;\n              if (uVar37 == 0) {\n                iVar24 = 0x1e;\n              }\n            }\n          }\n          uVar37 = (uint)*(byte *)(*(int *)(puVar46 + -0x3c) + (-uVar37 & uVar37)) + iVar24;\n        }\n        else {\n          uVar37 = *(byte *)(*(int *)(puVar46 + -0x3c) + (-uVar18 & uVar18)) - 2;\n        }" if (parenthesized_expression "((uVar18 & 0xff) == 0)" ( (binary_expression "(uVar18 & 0xff) == 0" (parenthesized_expression "(uVar18 & 0xff)" ( (binary_expression "uVar18 & 0xff" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n          uVar37 = uVar18 >> 8;\n          iVar24 = 6;\n          if ((uVar37 & 0xff) == 0) {\n            uVar37 = uVar18 >> 0x10;\n            iVar24 = 0xe;\n            if ((uVar37 & 0xff) == 0) {\n              uVar37 = uVar18 >> 0x18;\n              iVar24 = 0x16;\n              if (uVar37 == 0) {\n                iVar24 = 0x1e;\n              }\n            }\n          }\n          uVar37 = (uint)*(byte *)(*(int *)(puVar46 + -0x3c) + (-uVar37 & uVar37)) + iVar24;\n        }" { (expression_statement "uVar37 = uVar18 >> 8;" (assignment_expression "uVar37 = uVar18 >> 8" identifier = (binary_expression "uVar18 >> 8" identifier >> number_literal)) ;) (expression_statement "iVar24 = 6;" (assignment_expression "iVar24 = 6" identifier = number_literal) ;) (if_statement "if ((uVar37 & 0xff) == 0) {\n            uVar37 = uVar18 >> 0x10;\n            iVar24 = 0xe;\n            if ((uVar37 & 0xff) == 0) {\n              uVar37 = uVar18 >> 0x18;\n              iVar24 = 0x16;\n              if (uVar37 == 0) {\n                iVar24 = 0x1e;\n              }\n            }\n          }" if (parenthesized_expression "((uVar37 & 0xff) == 0)" ( (binary_expression "(uVar37 & 0xff) == 0" (parenthesized_expression "(uVar37 & 0xff)" ( (binary_expression "uVar37 & 0xff" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n            uVar37 = uVar18 >> 0x10;\n            iVar24 = 0xe;\n            if ((uVar37 & 0xff) == 0) {\n              uVar37 = uVar18 >> 0x18;\n              iVar24 = 0x16;\n              if (uVar37 == 0) {\n                iVar24 = 0x1e;\n              }\n            }\n          }" { (expression_statement "uVar37 = uVar18 >> 0x10;" (assignment_expression "uVar37 = uVar18 >> 0x10" identifier = (binary_expression "uVar18 >> 0x10" identifier >> number_literal)) ;) (expression_statement "iVar24 = 0xe;" (assignment_expression "iVar24 = 0xe" identifier = number_literal) ;) (if_statement "if ((uVar37 & 0xff) == 0) {\n              uVar37 = uVar18 >> 0x18;\n              iVar24 = 0x16;\n              if (uVar37 == 0) {\n                iVar24 = 0x1e;\n              }\n            }" if (parenthesized_expression "((uVar37 & 0xff) == 0)" ( (binary_expression "(uVar37 & 0xff) == 0" (parenthesized_expression "(uVar37 & 0xff)" ( (binary_expression "uVar37 & 0xff" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n              uVar37 = uVar18 >> 0x18;\n              iVar24 = 0x16;\n              if (uVar37 == 0) {\n                iVar24 = 0x1e;\n              }\n            }" { (expression_statement "uVar37 = uVar18 >> 0x18;" (assignment_expression "uVar37 = uVar18 >> 0x18" identifier = (binary_expression "uVar18 >> 0x18" identifier >> number_literal)) ;) (expression_statement "iVar24 = 0x16;" (assignment_expression "iVar24 = 0x16" identifier = number_literal) ;) (if_statement "if (uVar37 == 0) {\n                iVar24 = 0x1e;\n              }" if (parenthesized_expression "(uVar37 == 0)" ( (binary_expression "uVar37 == 0" identifier == number_literal) )) (compound_statement "{\n                iVar24 = 0x1e;\n              }" { (expression_statement "iVar24 = 0x1e;" (assignment_expression "iVar24 = 0x1e" identifier = number_literal) ;) })) })) })) (expression_statement "uVar37 = (uint)*(byte *)(*(int *)(puVar46 + -0x3c) + (-uVar37 & uVar37)) + iVar24;" (assignment_expression "uVar37 = (uint)*(byte *)(*(int *)(puVar46 + -0x3c) + (-uVar37 & uVar37)) + iVar24" identifier = (binary_expression "(uint)*(byte *)(*(int *)(puVar46 + -0x3c) + (-uVar37 & uVar37)) + iVar24" (binary_expression "(uint)*(byte *)(*(int *)(puVar46 + -0x3c) + (-uVar37 & uVar37))" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)(*(int *)(puVar46 + -0x3c) + (-uVar37 & uVar37))" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(puVar46 + -0x3c) + (-uVar37 & uVar37))" ( (binary_expression "*(int *)(puVar46 + -0x3c) + (-uVar37 & uVar37)" (pointer_expression "*(int *)(puVar46 + -0x3c)" * (cast_expression "(int *)(puVar46 + -0x3c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar46 + -0x3c)" ( (binary_expression "puVar46 + -0x3c" identifier + number_literal) )))) + (parenthesized_expression "(-uVar37 & uVar37)" ( (binary_expression "-uVar37 & uVar37" (unary_expression "-uVar37" - identifier) & identifier) ))) )))) + identifier)) ;) }) (else_clause "else {\n          uVar37 = *(byte *)(*(int *)(puVar46 + -0x3c) + (-uVar18 & uVar18)) - 2;\n        }" else (compound_statement "{\n          uVar37 = *(byte *)(*(int *)(puVar46 + -0x3c) + (-uVar18 & uVar18)) - 2;\n        }" { (expression_statement "uVar37 = *(byte *)(*(int *)(puVar46 + -0x3c) + (-uVar18 & uVar18)) - 2;" (assignment_expression "uVar37 = *(byte *)(*(int *)(puVar46 + -0x3c) + (-uVar18 & uVar18)) - 2" identifier = (binary_expression "*(byte *)(*(int *)(puVar46 + -0x3c) + (-uVar18 & uVar18)) - 2" (pointer_expression "*(byte *)(*(int *)(puVar46 + -0x3c) + (-uVar18 & uVar18))" * (cast_expression "(byte *)(*(int *)(puVar46 + -0x3c) + (-uVar18 & uVar18))" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(puVar46 + -0x3c) + (-uVar18 & uVar18))" ( (binary_expression "*(int *)(puVar46 + -0x3c) + (-uVar18 & uVar18)" (pointer_expression "*(int *)(puVar46 + -0x3c)" * (cast_expression "(int *)(puVar46 + -0x3c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar46 + -0x3c)" ( (binary_expression "puVar46 + -0x3c" identifier + number_literal) )))) + (parenthesized_expression "(-uVar18 & uVar18)" ( (binary_expression "-uVar18 & uVar18" (unary_expression "-uVar18" - identifier) & identifier) ))) )))) - number_literal)) ;) }))) (expression_statement "iVar41 = iVar41 - iVar33;" (assignment_expression "iVar41 = iVar41 - iVar33" identifier = (binary_expression "iVar41 - iVar33" identifier - identifier)) ;) (expression_statement "iVar6 = iVar6 + *(byte *)(*(int *)(puVar46 + -0x38) + iVar33 + -1) + uVar37;" (assignment_expression "iVar6 = iVar6 + *(byte *)(*(int *)(puVar46 + -0x38) + iVar33 + -1) + uVar37" identifier = (binary_expression "iVar6 + *(byte *)(*(int *)(puVar46 + -0x38) + iVar33 + -1) + uVar37" (binary_expression "iVar6 + *(byte *)(*(int *)(puVar46 + -0x38) + iVar33 + -1)" identifier + (pointer_expression "*(byte *)(*(int *)(puVar46 + -0x38) + iVar33 + -1)" * (cast_expression "(byte *)(*(int *)(puVar46 + -0x38) + iVar33 + -1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(puVar46 + -0x38) + iVar33 + -1)" ( (binary_expression "*(int *)(puVar46 + -0x38) + iVar33 + -1" (binary_expression "*(int *)(puVar46 + -0x38) + iVar33" (pointer_expression "*(int *)(puVar46 + -0x38)" * (cast_expression "(int *)(puVar46 + -0x38)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar46 + -0x38)" ( (binary_expression "puVar46 + -0x38" identifier + number_literal) )))) + identifier) + number_literal) ))))) + identifier)) ;) (expression_statement "uVar18 = (**(code **)(*(int *)(puVar46 + -0x78) + -0x7f9c))\n                           (puVar38,puVar38,puVar8,uVar18 >> (uVar37 & 0x1f));" (assignment_expression "uVar18 = (**(code **)(*(int *)(puVar46 + -0x78) + -0x7f9c))\n                           (puVar38,puVar38,puVar8,uVar18 >> (uVar37 & 0x1f))" identifier = (call_expression "(**(code **)(*(int *)(puVar46 + -0x78) + -0x7f9c))\n                           (puVar38,puVar38,puVar8,uVar18 >> (uVar37 & 0x1f))" (parenthesized_expression "(**(code **)(*(int *)(puVar46 + -0x78) + -0x7f9c))" ( (pointer_expression "**(code **)(*(int *)(puVar46 + -0x78) + -0x7f9c)" * (pointer_expression "*(code **)(*(int *)(puVar46 + -0x78) + -0x7f9c)" * (cast_expression "(code **)(*(int *)(puVar46 + -0x78) + -0x7f9c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)(puVar46 + -0x78) + -0x7f9c)" ( (binary_expression "*(int *)(puVar46 + -0x78) + -0x7f9c" (pointer_expression "*(int *)(puVar46 + -0x78)" * (cast_expression "(int *)(puVar46 + -0x78)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar46 + -0x78)" ( (binary_expression "puVar46 + -0x78" identifier + number_literal) )))) + number_literal) ))))) )) (argument_list "(puVar38,puVar38,puVar8,uVar18 >> (uVar37 & 0x1f))" ( identifier , identifier , identifier , (binary_expression "uVar18 >> (uVar37 & 0x1f)" identifier >> (parenthesized_expression "(uVar37 & 0x1f)" ( (binary_expression "uVar37 & 0x1f" identifier & number_literal) ))) )))) ;) (expression_statement "puVar43 = *(undefined **)(puVar46 + -0x78);" (assignment_expression "puVar43 = *(undefined **)(puVar46 + -0x78)" identifier = (pointer_expression "*(undefined **)(puVar46 + -0x78)" * (cast_expression "(undefined **)(puVar46 + -0x78)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar46 + -0x78)" ( (binary_expression "puVar46 + -0x78" identifier + number_literal) ))))) ;) (expression_statement "puVar31 = puVar38 + (int)puVar8;" (assignment_expression "puVar31 = puVar38 + (int)puVar8" identifier = (binary_expression "puVar38 + (int)puVar8" identifier + (cast_expression "(int)puVar8" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "puVar8 = (uint *)((int)puVar8 + (uint)(uVar18 != 0));" (assignment_expression "puVar8 = (uint *)((int)puVar8 + (uint)(uVar18 != 0))" identifier = (cast_expression "(uint *)((int)puVar8 + (uint)(uVar18 != 0))" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar8 + (uint)(uVar18 != 0))" ( (binary_expression "(int)puVar8 + (uint)(uVar18 != 0)" (cast_expression "(int)puVar8" ( (type_descriptor "int" primitive_type) ) identifier) + (call_expression "(uint)(uVar18 != 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar18 != 0)" ( (binary_expression "uVar18 != 0" identifier != number_literal) )))) )))) ;) (expression_statement "*puVar31 = uVar18;" (assignment_expression "*puVar31 = uVar18" (pointer_expression "*puVar31" * identifier) = identifier) ;) (expression_statement "iVar24 = iVar29;" (assignment_expression "iVar24 = iVar29" identifier = identifier) ;) }) while (parenthesized_expression "(iVar41 != 0)" ( (binary_expression "iVar41 != 0" identifier != number_literal) )) ;) (expression_statement "uVar7 = *(uint *)(puVar46 + -0x44);" (assignment_expression "uVar7 = *(uint *)(puVar46 + -0x44)" identifier = (pointer_expression "*(uint *)(puVar46 + -0x44)" * (cast_expression "(uint *)(puVar46 + -0x44)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar46 + -0x44)" ( (binary_expression "puVar46 + -0x44" identifier + number_literal) ))))) ;) (expression_statement "puVar31 = *(uint **)(puVar46 + -0x50);" (assignment_expression "puVar31 = *(uint **)(puVar46 + -0x50)" identifier = (pointer_expression "*(uint **)(puVar46 + -0x50)" * (cast_expression "(uint **)(puVar46 + -0x50)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar46 + -0x50)" ( (binary_expression "puVar46 + -0x50" identifier + number_literal) ))))) ;) (expression_statement "puVar36 = *(uint **)(puVar46 + -0x54);" (assignment_expression "puVar36 = *(uint **)(puVar46 + -0x54)" identifier = (pointer_expression "*(uint **)(puVar46 + -0x54)" * (cast_expression "(uint **)(puVar46 + -0x54)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar46 + -0x54)" ( (binary_expression "puVar46 + -0x54" identifier + number_literal) ))))) ;) (expression_statement "iVar39 = *(int *)(puVar46 + -0x58);" (assignment_expression "iVar39 = *(int *)(puVar46 + -0x58)" identifier = (pointer_expression "*(int *)(puVar46 + -0x58)" * (cast_expression "(int *)(puVar46 + -0x58)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar46 + -0x58)" ( (binary_expression "puVar46 + -0x58" identifier + number_literal) ))))) ;) (expression_statement "*(int *)(puVar46 + -0x48) = iVar6;" (assignment_expression "*(int *)(puVar46 + -0x48) = iVar6" (pointer_expression "*(int *)(puVar46 + -0x48)" * (cast_expression "(int *)(puVar46 + -0x48)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar46 + -0x48)" ( (binary_expression "puVar46 + -0x48" identifier + number_literal) )))) = identifier) ;) (expression_statement "iVar24 = *(int *)(puVar46 + -0x5c);" (assignment_expression "iVar24 = *(int *)(puVar46 + -0x5c)" identifier = (pointer_expression "*(int *)(puVar46 + -0x5c)" * (cast_expression "(int *)(puVar46 + -0x5c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar46 + -0x5c)" ( (binary_expression "puVar46 + -0x5c" identifier + number_literal) ))))) ;) })) (expression_statement "uVar37 = *puVar36;" (assignment_expression "uVar37 = *puVar36" identifier = (pointer_expression "*puVar36" * identifier)) ;) (expression_statement "pcVar51 = *(code **)(puVar43 + -0x7bc0);" (assignment_expression "pcVar51 = *(code **)(puVar43 + -0x7bc0)" identifier = (pointer_expression "*(code **)(puVar43 + -0x7bc0)" * (cast_expression "(code **)(puVar43 + -0x7bc0)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar43 + -0x7bc0)" ( (binary_expression "puVar43 + -0x7bc0" identifier + number_literal) ))))) ;) (expression_statement "uVar18 = (uint)*(byte *)(*(int *)(puVar46 + -100) + ((uVar37 << 0x18) >> 0x19));" (assignment_expression "uVar18 = (uint)*(byte *)(*(int *)(puVar46 + -100) + ((uVar37 << 0x18) >> 0x19))" identifier = (binary_expression "(uint)*(byte *)(*(int *)(puVar46 + -100) + ((uVar37 << 0x18) >> 0x19))" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)(*(int *)(puVar46 + -100) + ((uVar37 << 0x18) >> 0x19))" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(puVar46 + -100) + ((uVar37 << 0x18) >> 0x19))" ( (binary_expression "*(int *)(puVar46 + -100) + ((uVar37 << 0x18) >> 0x19)" (pointer_expression "*(int *)(puVar46 + -100)" * (cast_expression "(int *)(puVar46 + -100)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar46 + -100)" ( (binary_expression "puVar46 + -100" identifier + number_literal) )))) + (parenthesized_expression "((uVar37 << 0x18) >> 0x19)" ( (binary_expression "(uVar37 << 0x18) >> 0x19" (parenthesized_expression "(uVar37 << 0x18)" ( (binary_expression "uVar37 << 0x18" identifier << number_literal) )) >> number_literal) ))) ))))) ;) (expression_statement "puVar8 = (uint *)((int)puVar8 +\n                     ((puVar38[(int)((int)puVar8 + iVar24)] < **(uint **)(puVar46 + -0x4c) ^ 1) -\n                     (int)puVar31));" (assignment_expression "puVar8 = (uint *)((int)puVar8 +\n                     ((puVar38[(int)((int)puVar8 + iVar24)] < **(uint **)(puVar46 + -0x4c) ^ 1) -\n                     (int)puVar31))" identifier = (cast_expression "(uint *)((int)puVar8 +\n                     ((puVar38[(int)((int)puVar8 + iVar24)] < **(uint **)(puVar46 + -0x4c) ^ 1) -\n                     (int)puVar31))" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar8 +\n                     ((puVar38[(int)((int)puVar8 + iVar24)] < **(uint **)(puVar46 + -0x4c) ^ 1) -\n                     (int)puVar31))" ( (binary_expression "(int)puVar8 +\n                     ((puVar38[(int)((int)puVar8 + iVar24)] < **(uint **)(puVar46 + -0x4c) ^ 1) -\n                     (int)puVar31)" (cast_expression "(int)puVar8" ( (type_descriptor "int" primitive_type) ) identifier) + (parenthesized_expression "((puVar38[(int)((int)puVar8 + iVar24)] < **(uint **)(puVar46 + -0x4c) ^ 1) -\n                     (int)puVar31)" ( (binary_expression "(puVar38[(int)((int)puVar8 + iVar24)] < **(uint **)(puVar46 + -0x4c) ^ 1) -\n                     (int)puVar31" (parenthesized_expression "(puVar38[(int)((int)puVar8 + iVar24)] < **(uint **)(puVar46 + -0x4c) ^ 1)" ( (binary_expression "puVar38[(int)((int)puVar8 + iVar24)] < **(uint **)(puVar46 + -0x4c) ^ 1" (binary_expression "puVar38[(int)((int)puVar8 + iVar24)] < **(uint **)(puVar46 + -0x4c)" (subscript_expression "puVar38[(int)((int)puVar8 + iVar24)]" identifier [ (cast_expression "(int)((int)puVar8 + iVar24)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((int)puVar8 + iVar24)" ( (binary_expression "(int)puVar8 + iVar24" (cast_expression "(int)puVar8" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) ))) ]) < (pointer_expression "**(uint **)(puVar46 + -0x4c)" * (pointer_expression "*(uint **)(puVar46 + -0x4c)" * (cast_expression "(uint **)(puVar46 + -0x4c)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar46 + -0x4c)" ( (binary_expression "puVar46 + -0x4c" identifier + number_literal) )))))) ^ number_literal) )) - (cast_expression "(int)puVar31" ( (type_descriptor "int" primitive_type) ) identifier)) ))) )))) ;) (expression_statement "iVar24 = uVar18 * 2 - uVar18 * uVar18 * uVar37;" (assignment_expression "iVar24 = uVar18 * 2 - uVar18 * uVar18 * uVar37" identifier = (binary_expression "uVar18 * 2 - uVar18 * uVar18 * uVar37" (binary_expression "uVar18 * 2" identifier * number_literal) - (binary_expression "uVar18 * uVar18 * uVar37" (binary_expression "uVar18 * uVar18" identifier * identifier) * identifier))) ;) (if_statement "if ((int)puVar8 < (int)puVar31) {\n      puVar31 = puVar8;\n    }" if (parenthesized_expression "((int)puVar8 < (int)puVar31)" ( (binary_expression "(int)puVar8 < (int)puVar31" (cast_expression "(int)puVar8" ( (type_descriptor "int" primitive_type) ) identifier) < (cast_expression "(int)puVar31" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n      puVar31 = puVar8;\n    }" { (expression_statement "puVar31 = puVar8;" (assignment_expression "puVar31 = puVar8" identifier = identifier) ;) })) (expression_statement "*(uint **)(puVar47 + -0x48) = puVar31;" (assignment_expression "*(uint **)(puVar47 + -0x48) = puVar31" (pointer_expression "*(uint **)(puVar47 + -0x48)" * (cast_expression "(uint **)(puVar47 + -0x48)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar47 + -0x48)" ( (binary_expression "puVar47 + -0x48" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(uint *)(puVar47 + -0x44) = iVar24 * iVar24 * uVar37 + iVar24 * -2;" (assignment_expression "*(uint *)(puVar47 + -0x44) = iVar24 * iVar24 * uVar37 + iVar24 * -2" (pointer_expression "*(uint *)(puVar47 + -0x44)" * (cast_expression "(uint *)(puVar47 + -0x44)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar47 + -0x44)" ( (binary_expression "puVar47 + -0x44" identifier + number_literal) )))) = (binary_expression "iVar24 * iVar24 * uVar37 + iVar24 * -2" (binary_expression "iVar24 * iVar24 * uVar37" (binary_expression "iVar24 * iVar24" identifier * identifier) * identifier) + (binary_expression "iVar24 * -2" identifier * number_literal))) ;) (expression_statement "puVar9 = puVar38;" (assignment_expression "puVar9 = puVar38" identifier = identifier) ;) (expression_statement "puVar22 = puVar8;" (assignment_expression "puVar22 = puVar8" identifier = identifier) ;) (expression_statement "(*pcVar51)(puVar38,puVar38,puVar8,puVar36);" (call_expression "(*pcVar51)(puVar38,puVar38,puVar8,puVar36)" (parenthesized_expression "(*pcVar51)" ( (pointer_expression "*pcVar51" * identifier) )) (argument_list "(puVar38,puVar38,puVar8,puVar36)" ( identifier , identifier , identifier , identifier ))) ;) (expression_statement "iVar24 = *(int *)(puVar46 + -0x78);" (assignment_expression "iVar24 = *(int *)(puVar46 + -0x78)" identifier = (pointer_expression "*(int *)(puVar46 + -0x78)" * (cast_expression "(int *)(puVar46 + -0x78)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar46 + -0x78)" ( (binary_expression "puVar46 + -0x78" identifier + number_literal) ))))) ;) (if_statement "if (uVar7 == 0) {\n      if (*(int *)(puVar46 + -0x48) == *(int *)(puVar46 + -0x40)) {\n        puVar8 = (uint *)((int)puVar8 - (uint)(puVar38[(int)((int)puVar8 + -1)] == 0));\n        pcVar51 = *(code **)(iVar24 + -0x7a80);\n        if ((int)puVar8 <= **(int **)(puVar46 + -0x6c)) goto LAB_00022600;\nLAB_00022734:\n        puVar9 = puVar8;\n        puVar19 = (undefined4 *)(*pcVar51)(*(undefined4 *)(puVar46 + -0x6c));\n        iVar24 = *(int *)(puVar46 + -0x78);\n      }\n      else {\n        puVar9 = puVar38;\n        puVar22 = puVar8;\n        uVar18 = (**(code **)(iVar24 + -0x7ad4))(puVar38);\n        iVar24 = *(int *)(puVar46 + -0x78);\n        puVar38[(int)puVar8] = uVar18;\n        puVar8 = (uint *)((int)puVar8 +\n                         ((uint)(uVar18 != 0) -\n                         (uint)(puVar38[(int)((int)puVar8 + ((uVar18 != 0) - 1))] == 0)));\n        pcVar51 = *(code **)(iVar24 + -0x7a80);\n        if (**(int **)(puVar46 + -0x6c) < (int)puVar8) goto LAB_00022734;\nLAB_00022600:\n        puVar19 = *(undefined4 **)(*(int *)(puVar46 + -0x6c) + 8);\n      }\n      *(uint **)(*(int *)(puVar46 + -0x6c) + 4) = puVar8;\n      if (puVar8 != (uint *)0x0) {\n        puVar13 = (undefined1 *)((int)puVar8 + -1);\n        puVar9 = (uint *)*puVar38;\n        if (puVar13 != (undefined1 *)0x0) {\n          puVar15 = puVar19;\n          puVar16 = puVar38 + 1;\n          do {\n            *puVar15 = puVar9;\n            puVar38 = puVar16 + 1;\n            puVar13 = puVar13 + -1;\n            puVar9 = (uint *)*puVar16;\n            puVar15 = puVar15 + 1;\n            puVar16 = puVar38;\n          } while (puVar13 != (undefined1 *)0x0);\n          puVar8 = (uint *)((int)puVar8 * 4);\n          puVar19 = (undefined4 *)((int)puVar19 + (int)(puVar8 + -1));\n        }\n        *puVar19 = puVar9;\n      }\n      puVar16 = *(uint **)(puVar46 + -0x30);\n      if (puVar16 != (uint *)0x0) {\n        (**(code **)(iVar24 + -0x7a28))();\n        iVar24 = *(int *)(puVar46 + -0x78);\n      }\n      if (*(int *)(puVar46 + -0x2c) == **(int **)(puVar46 + -0x70)) {\n        return **(int **)(puVar46 + -0x70);\n      }\n      pcVar51 = *(code **)(iVar24 + -0x7b70);\n      pcVar52 = __gmpz_bin_uiui;\n      (*pcVar51)();\n      pcVar44 = pcVar51 + 0x8289c;\n      *(uint **)(puVar47 + -0x78) = puVar31;\n      piVar32 = *(int **)(pcVar51 + 0x7ad9c);\n      *(code **)(puVar47 + -0xf0) = pcVar44;\n      *(int *)(puVar47 + -0x74) = iVar39;\n      *(code **)(puVar47 + -0x5c) = pcVar52;\n      *(undefined1 **)(puVar47 + -0x60) = puVar46 + -0x90;\n      *(int *)(puVar47 + -100) = iVar6;\n      *(int *)(puVar47 + -0x68) = iVar29;\n      *(uint **)(puVar47 + -0x6c) = puVar38;\n      *(uint **)(puVar47 + -0x70) = puVar36;\n      *(uint **)(puVar47 + -0x7c) = puVar8;\n      *(undefined4 *)(puVar47 + -0x80) = 0;\n      *(int *)(puVar47 + -0x84) = *piVar32;\n      puVar31 = puVar16;\n      puVar20 = puVar9;\n      if (puVar9 < puVar22) {\n        puVar16[1] = 0;\n        puVar30 = (uint *)0x0;\n      }\n      else {\n        puVar30 = puVar22;\n        if ((uint *)((int)puVar9 - (int)puVar22) <= puVar22) {\n          puVar30 = (uint *)((int)puVar9 - (int)puVar22);\n        }\n        puVar22 = puVar30;\n        puVar36 = puVar9;\n        if (puVar30 < (uint *)0x2) {\n          if (puVar30 == (uint *)0x0) {\n            puVar36 = (uint *)0x1;\n          }\n          *(uint **)puVar16[2] = puVar36;\n          puVar16[1] = 1;\n          puVar49 = puVar46 + -0x90;\n        }\n        else if (puVar9 < (uint *)0x23) {\n          puVar13 = (undefined1 *)((int)puVar30 + -2);\n          iVar6 = *(int *)(pcVar51 + 0x7aa7c);\n          puVar20 = (uint *)puVar16[2];\n          uVar18 = (int)puVar9 - (int)puVar30;\n          puVar36 = (uint *)(iVar6 + ((uint)puVar9 >> 1));\n          puVar30 = (uint *)(iVar6 + ((uint)puVar30 >> 1));\n          bVar2 = *(byte *)((int)puVar30 + -1);\n          puVar31 = (uint *)(uint)*(byte *)(iVar6 + (uVar18 >> 1) + -1);\n          *puVar20 = *(int *)((int)puVar13 * 4 + *(int *)(pcVar51 + 0x7a8c8) + 0x35b4) *\n                     *(int *)(*(int *)(pcVar51 + 0x7ad64) + (int)puVar9 * 4) *\n                     *(int *)((uVar18 - 2) * 4 + *(int *)(pcVar51 + 0x7a8c8) + 0x35b4) <<\n                     (((uint)*(byte *)((int)puVar36 + -1) - (int)(uint)bVar2) - (int)puVar31 & 0x1f)\n          ;\n          puVar16[1] = 1;\n          puVar22 = (uint *)(uint)bVar2;\n          puVar49 = puVar46 + -0x90;\n        }\n        else if (puVar30 < &DAT_00000011) {\n          FUN_000216e8();\n          pcVar44 = *(code **)(puVar47 + -0xf0);\n          puVar49 = puVar46 + -0x90;\n        }\n        else if (puVar30 < &DAT_00000021) {\n          uVar18 = (uint)puVar30 >> 1;\n          uVar37 = (int)puVar9 - uVar18;\n          FUN_000216e8();\n          iVar6 = *(int *)(puVar47 + -0xf0);\n          uVar7 = (int)puVar30 - uVar18;\n          if (uVar37 < 0x23) {\n            puVar50 = (undefined1 *)puVar16[1];\n            if ((int)puVar50 < (int)*puVar16) {\n              puVar8 = (uint *)puVar16[2];\n            }\n            else {\n              puVar8 = (uint *)(**(code **)(iVar6 + -0x7a80))(puVar16,puVar50 + 1);\n              iVar6 = *(int *)(puVar47 + -0xf0);\n            }\n            iVar29 = *(int *)(iVar6 + -0x7e20);\n            iVar24 = *(int *)(iVar6 + -0x7fd4) + 0x35b4;\n            uVar37 = (**(code **)(iVar6 + -0x7f9c))\n                               (puVar8,puVar8,puVar50,\n                                *(int *)((((int)puVar9 - (int)puVar30) - 2U) * 4 + iVar24) *\n                                *(int *)(*(int *)(iVar6 + -0x7b38) + uVar37 * 4) *\n                                *(int *)((uVar7 - 2) * 4 + iVar24) <<\n                                (((uint)*(byte *)(iVar29 + (uVar37 >> 1) + -1) -\n                                 (uint)*(byte *)(iVar29 + (uVar7 >> 1) + -1)) -\n                                 (uint)*(byte *)(iVar29 + ((uint)((int)puVar9 - (int)puVar30) >> 1)\n                                                + -1) & 0x1f));\n            iVar6 = *(int *)(puVar47 + -0xf0);\n            puVar30 = (uint *)(puVar50 + (uVar37 != 0));\n            puVar8[(int)puVar50] = uVar37;\n          }\n          else {\n            *(undefined4 *)(puVar47 + -0xe4) = 0x15;\n            *(undefined1 **)(puVar47 + -0xdc) = puVar47 + -0xd8;\n            FUN_000216e8(puVar47 + -0xe4,uVar37,uVar7);\n            (**(code **)(*(int *)(puVar47 + -0xf0) + -0x7ba8))(puVar16,puVar16,puVar47 + -0xe4);\n            iVar6 = *(int *)(puVar47 + -0xf0);\n            puVar8 = (uint *)puVar16[2];\n            puVar30 = (uint *)puVar16[1];\n          }\n          pcVar51 = *(code **)(iVar6 + -0x7bb4);\n          puVar38 = (uint *)((uint)*(byte *)((uVar7 - 8) + *(int *)(iVar6 + -0x7fd4) + 0x3550) -\n                            (uint)(uVar18 != uVar7));\n          *(undefined4 *)(puVar47 + -0xf8) =\n               *(undefined4 *)((uVar7 - 8) * 4 + *(int *)(iVar6 + -0x7fd4) + 0x355c);\n          *(uint **)(puVar47 + -0xf4) = puVar38;\n          puVar31 = puVar8;\n          puVar20 = puVar8;\n          puVar22 = puVar30;\n          (*pcVar51)();\n          pcVar44 = *(code **)(puVar47 + -0xf0);\n          if (puVar8[(int)((int)puVar30 + -1)] == 0) {\n            puVar9 = puVar8 + (int)puVar30;\n            do {\n              puVar1 = puVar9 + -2;\n              puVar30 = (uint *)((int)puVar30 + -1);\n              puVar9 = puVar9 + -1;\n            } while (*puVar1 == 0);\n          }\n          puVar16[1] = (uint)puVar30;\n          puVar49 = puVar50;\n        }\n        else if ((puVar30 < (uint *)0x3e8) || (puVar30 <= (uint *)((uint)puVar9 >> 4))) {\n          FUN_0002209c();\n          pcVar44 = *(code **)(puVar47 + -0xf0);\n          puVar49 = puVar46 + -0x90;\n        }\n        else {\n          FUN_000219dc();\n          pcVar44 = *(code **)(puVar47 + -0xf0);\n          puVar49 = puVar46 + -0x90;\n        }\n      }\n      if (*(int *)(puVar47 + -0x84) == *piVar32) {\n        return *piVar32;\n      }\n      pcVar51 = *(code **)(pcVar44 + -0x7b70);\n      uVar10 = 0x22b64;\n      (*pcVar51)();\n      pcVar44 = pcVar51 + 0x824d0;\n      puVar48 = puVar47 + -0x160;\n      *(uint **)(puVar47 + -0x118) = puVar16;\n      *(uint **)(puVar47 + -0x124) = puVar30;\n      piVar34 = *(int **)(pcVar51 + 0x7a9d0);\n      uVar18 = puVar22[1];\n      *(undefined1 **)(puVar47 + -0x110) = puVar49;\n      *(uint **)(puVar47 + -0x114) = puVar36;\n      *(int **)(puVar47 + -0x11c) = piVar32;\n      *(uint **)(puVar47 + -0x120) = puVar8;\n      *(undefined4 *)(puVar47 + -0x10c) = uVar10;\n      *(code **)(puVar47 + -0x150) = pcVar44;\n      *(undefined4 *)(puVar47 + -0x13c) = 0;\n      puVar8 = (uint *)puVar20[1];\n      *(int *)(puVar47 + -300) = *piVar34;\n      if ((int)uVar18 < 0) {\n        uVar37 = uVar18 * -4;\n        *(uint *)(puVar47 + -0x138) = -uVar18;\n        if (0x7f00 < uVar37) {\n          pcVar51 = *(code **)(pcVar51 + 0x7a780);\n          goto LAB_00022c88;\n        }\nLAB_00022be4:\n        iVar6 = -(uVar37 + 7 & 0xfffffff8);\n        puVar48 = puVar47 + iVar6 + -0x160;\n        puVar13 = puVar47 + iVar6 + -0x150;\n      }\n      else {\n        uVar37 = uVar18 * 4;\n        *(uint *)(puVar47 + -0x138) = uVar18;\n        pcVar51 = *(code **)(pcVar51 + 0x7a780);\n        if (uVar37 < 0x7f01) goto LAB_00022be4;\nLAB_00022c88:\n        *(uint **)(puVar47 + -0x144) = puVar22;\n        puVar13 = (undefined1 *)(*pcVar51)(puVar47 + -0x13c,uVar37);\n        pcVar44 = *(code **)(puVar47 + -0x150);\n        puVar22 = *(uint **)(puVar47 + -0x144);\n      }\n      pcVar51 = *(code **)(pcVar44 + -0x7a68);\n      puVar36 = (uint *)(puVar47 + -0x138);\n      *(undefined1 **)(puVar47 + -0x130) = puVar13;\n      puVar9 = puVar20;\n      (*pcVar51)(puVar31,puVar36,puVar20,puVar22);\n      iVar6 = *(int *)(puVar47 + -0x150);\n      if (((int)((uint)puVar8 ^ uVar18) < 0) || (*(int *)(puVar47 + -0x134) == 0)) {\n        piVar32 = *(int **)(puVar47 + -0x13c);\n        pcVar51 = *(code **)(iVar6 + -0x7a28);\n        if (piVar32 != (int *)0x0) goto LAB_00022cc0;\n      }\n      else {\n        puVar9 = (uint *)0x1;\n        puVar36 = puVar31;\n        (**(code **)(iVar6 + -0x7c9c))(puVar31);\n        piVar32 = *(int **)(puVar47 + -0x13c);\n        iVar6 = *(int *)(puVar47 + -0x150);\n        if (piVar32 != (int *)0x0) {\n          pcVar51 = *(code **)(iVar6 + -0x7a28);\nLAB_00022cc0:\n          (*pcVar51)();\n          iVar6 = *(int *)(puVar47 + -0x150);\n        }\n      }\n      if (*(int *)(puVar47 + -300) == *piVar34) {\n        return *piVar34;\n      }\n      pcVar51 = *(code **)(iVar6 + -0x7b70);\n      uVar10 = 0x22cdc;\n      (*pcVar51)();\n      pcVar44 = pcVar51 + 0x82360;\n      *(code **)(puVar48 + -0x28) = pcVar44;\n      *(undefined4 *)(puVar48 + -4) = uVar10;\n      *(uint **)(puVar48 + -8) = puVar38;\n      *(uint **)(puVar48 + -0xc) = puVar20;\n      *(int **)(puVar48 + -0x10) = piVar34;\n      *(uint **)(puVar48 + -0x14) = puVar31;\n      *(uint **)(puVar48 + -0x18) = puVar8;\n      *(uint *)(puVar48 + -0x1c) = (uint)puVar8 ^ uVar18;\n      if (puVar9 == (uint *)0x0) {\n        pcVar51 = *(code **)(pcVar51 + 0x7a900);\n        (*pcVar51)();\nLAB_00022e2c:\n        piVar32 = (int *)(*pcVar51)(piVar34,puVar31);\n        pcVar44 = *(code **)(puVar48 + -0x28);\n      }\n      else {\n        puVar8 = (uint *)puVar36[1];\n        if (puVar8 == (uint *)0x0) {\n          piVar32[1] = 0;\n          return 0;\n        }\n        puVar31 = puVar8;\n        if ((int)puVar8 < 0) {\n          puVar31 = (uint *)-(int)puVar8;\n        }\n        pcVar51 = *(code **)(pcVar51 + 0x7a8e0);\n        piVar34 = piVar32;\n        puVar20 = puVar9;\n        puVar38 = puVar36;\n        if (*piVar32 < (int)puVar31) goto LAB_00022e2c;\n        piVar32 = (int *)piVar32[2];\n      }\n      pcVar51 = *(code **)(pcVar44 + -0x7d98);\n      uVar18 = puVar38[2];\n      *(uint **)(puVar48 + -0x30) = puVar20;\n      iVar6 = (*pcVar51)(piVar32,0,uVar18,puVar31);\n      piVar17 = piVar32 + (int)puVar31 + -1;\n      if (iVar6 == 0) {\n        uVar18 = (uint)(*piVar17 == 0);\n        if (-1 < (int)puVar8) {\n          iVar24 = (int)puVar31 - uVar18;\n          goto LAB_00022d9c;\n        }\n      }\n      else {\n        if (-1 < (int)puVar8) {\n          do {\n            iVar24 = *piVar32;\n            *piVar32 = iVar24 + 1;\n            piVar32 = piVar32 + 1;\n          } while (iVar24 + 1 == 0);\n          iVar6 = (int)puVar20 - iVar6;\n          iVar24 = (int)puVar31 - (uint)(*piVar17 == 0);\n          goto LAB_00022d9c;\n        }\n        uVar18 = (uint)(*piVar17 == 0);\n      }\n      iVar24 = uVar18 - (int)puVar31;\nLAB_00022d9c:\n      piVar34[1] = iVar24;\n      return iVar6;\n    }" if (parenthesized_expression "(uVar7 == 0)" ( (binary_expression "uVar7 == 0" identifier == number_literal) )) (compound_statement "{\n      if (*(int *)(puVar46 + -0x48) == *(int *)(puVar46 + -0x40)) {\n        puVar8 = (uint *)((int)puVar8 - (uint)(puVar38[(int)((int)puVar8 + -1)] == 0));\n        pcVar51 = *(code **)(iVar24 + -0x7a80);\n        if ((int)puVar8 <= **(int **)(puVar46 + -0x6c)) goto LAB_00022600;\nLAB_00022734:\n        puVar9 = puVar8;\n        puVar19 = (undefined4 *)(*pcVar51)(*(undefined4 *)(puVar46 + -0x6c));\n        iVar24 = *(int *)(puVar46 + -0x78);\n      }\n      else {\n        puVar9 = puVar38;\n        puVar22 = puVar8;\n        uVar18 = (**(code **)(iVar24 + -0x7ad4))(puVar38);\n        iVar24 = *(int *)(puVar46 + -0x78);\n        puVar38[(int)puVar8] = uVar18;\n        puVar8 = (uint *)((int)puVar8 +\n                         ((uint)(uVar18 != 0) -\n                         (uint)(puVar38[(int)((int)puVar8 + ((uVar18 != 0) - 1))] == 0)));\n        pcVar51 = *(code **)(iVar24 + -0x7a80);\n        if (**(int **)(puVar46 + -0x6c) < (int)puVar8) goto LAB_00022734;\nLAB_00022600:\n        puVar19 = *(undefined4 **)(*(int *)(puVar46 + -0x6c) + 8);\n      }\n      *(uint **)(*(int *)(puVar46 + -0x6c) + 4) = puVar8;\n      if (puVar8 != (uint *)0x0) {\n        puVar13 = (undefined1 *)((int)puVar8 + -1);\n        puVar9 = (uint *)*puVar38;\n        if (puVar13 != (undefined1 *)0x0) {\n          puVar15 = puVar19;\n          puVar16 = puVar38 + 1;\n          do {\n            *puVar15 = puVar9;\n            puVar38 = puVar16 + 1;\n            puVar13 = puVar13 + -1;\n            puVar9 = (uint *)*puVar16;\n            puVar15 = puVar15 + 1;\n            puVar16 = puVar38;\n          } while (puVar13 != (undefined1 *)0x0);\n          puVar8 = (uint *)((int)puVar8 * 4);\n          puVar19 = (undefined4 *)((int)puVar19 + (int)(puVar8 + -1));\n        }\n        *puVar19 = puVar9;\n      }\n      puVar16 = *(uint **)(puVar46 + -0x30);\n      if (puVar16 != (uint *)0x0) {\n        (**(code **)(iVar24 + -0x7a28))();\n        iVar24 = *(int *)(puVar46 + -0x78);\n      }\n      if (*(int *)(puVar46 + -0x2c) == **(int **)(puVar46 + -0x70)) {\n        return **(int **)(puVar46 + -0x70);\n      }\n      pcVar51 = *(code **)(iVar24 + -0x7b70);\n      pcVar52 = __gmpz_bin_uiui;\n      (*pcVar51)();\n      pcVar44 = pcVar51 + 0x8289c;\n      *(uint **)(puVar47 + -0x78) = puVar31;\n      piVar32 = *(int **)(pcVar51 + 0x7ad9c);\n      *(code **)(puVar47 + -0xf0) = pcVar44;\n      *(int *)(puVar47 + -0x74) = iVar39;\n      *(code **)(puVar47 + -0x5c) = pcVar52;\n      *(undefined1 **)(puVar47 + -0x60) = puVar46 + -0x90;\n      *(int *)(puVar47 + -100) = iVar6;\n      *(int *)(puVar47 + -0x68) = iVar29;\n      *(uint **)(puVar47 + -0x6c) = puVar38;\n      *(uint **)(puVar47 + -0x70) = puVar36;\n      *(uint **)(puVar47 + -0x7c) = puVar8;\n      *(undefined4 *)(puVar47 + -0x80) = 0;\n      *(int *)(puVar47 + -0x84) = *piVar32;\n      puVar31 = puVar16;\n      puVar20 = puVar9;\n      if (puVar9 < puVar22) {\n        puVar16[1] = 0;\n        puVar30 = (uint *)0x0;\n      }\n      else {\n        puVar30 = puVar22;\n        if ((uint *)((int)puVar9 - (int)puVar22) <= puVar22) {\n          puVar30 = (uint *)((int)puVar9 - (int)puVar22);\n        }\n        puVar22 = puVar30;\n        puVar36 = puVar9;\n        if (puVar30 < (uint *)0x2) {\n          if (puVar30 == (uint *)0x0) {\n            puVar36 = (uint *)0x1;\n          }\n          *(uint **)puVar16[2] = puVar36;\n          puVar16[1] = 1;\n          puVar49 = puVar46 + -0x90;\n        }\n        else if (puVar9 < (uint *)0x23) {\n          puVar13 = (undefined1 *)((int)puVar30 + -2);\n          iVar6 = *(int *)(pcVar51 + 0x7aa7c);\n          puVar20 = (uint *)puVar16[2];\n          uVar18 = (int)puVar9 - (int)puVar30;\n          puVar36 = (uint *)(iVar6 + ((uint)puVar9 >> 1));\n          puVar30 = (uint *)(iVar6 + ((uint)puVar30 >> 1));\n          bVar2 = *(byte *)((int)puVar30 + -1);\n          puVar31 = (uint *)(uint)*(byte *)(iVar6 + (uVar18 >> 1) + -1);\n          *puVar20 = *(int *)((int)puVar13 * 4 + *(int *)(pcVar51 + 0x7a8c8) + 0x35b4) *\n                     *(int *)(*(int *)(pcVar51 + 0x7ad64) + (int)puVar9 * 4) *\n                     *(int *)((uVar18 - 2) * 4 + *(int *)(pcVar51 + 0x7a8c8) + 0x35b4) <<\n                     (((uint)*(byte *)((int)puVar36 + -1) - (int)(uint)bVar2) - (int)puVar31 & 0x1f)\n          ;\n          puVar16[1] = 1;\n          puVar22 = (uint *)(uint)bVar2;\n          puVar49 = puVar46 + -0x90;\n        }\n        else if (puVar30 < &DAT_00000011) {\n          FUN_000216e8();\n          pcVar44 = *(code **)(puVar47 + -0xf0);\n          puVar49 = puVar46 + -0x90;\n        }\n        else if (puVar30 < &DAT_00000021) {\n          uVar18 = (uint)puVar30 >> 1;\n          uVar37 = (int)puVar9 - uVar18;\n          FUN_000216e8();\n          iVar6 = *(int *)(puVar47 + -0xf0);\n          uVar7 = (int)puVar30 - uVar18;\n          if (uVar37 < 0x23) {\n            puVar50 = (undefined1 *)puVar16[1];\n            if ((int)puVar50 < (int)*puVar16) {\n              puVar8 = (uint *)puVar16[2];\n            }\n            else {\n              puVar8 = (uint *)(**(code **)(iVar6 + -0x7a80))(puVar16,puVar50 + 1);\n              iVar6 = *(int *)(puVar47 + -0xf0);\n            }\n            iVar29 = *(int *)(iVar6 + -0x7e20);\n            iVar24 = *(int *)(iVar6 + -0x7fd4) + 0x35b4;\n            uVar37 = (**(code **)(iVar6 + -0x7f9c))\n                               (puVar8,puVar8,puVar50,\n                                *(int *)((((int)puVar9 - (int)puVar30) - 2U) * 4 + iVar24) *\n                                *(int *)(*(int *)(iVar6 + -0x7b38) + uVar37 * 4) *\n                                *(int *)((uVar7 - 2) * 4 + iVar24) <<\n                                (((uint)*(byte *)(iVar29 + (uVar37 >> 1) + -1) -\n                                 (uint)*(byte *)(iVar29 + (uVar7 >> 1) + -1)) -\n                                 (uint)*(byte *)(iVar29 + ((uint)((int)puVar9 - (int)puVar30) >> 1)\n                                                + -1) & 0x1f));\n            iVar6 = *(int *)(puVar47 + -0xf0);\n            puVar30 = (uint *)(puVar50 + (uVar37 != 0));\n            puVar8[(int)puVar50] = uVar37;\n          }\n          else {\n            *(undefined4 *)(puVar47 + -0xe4) = 0x15;\n            *(undefined1 **)(puVar47 + -0xdc) = puVar47 + -0xd8;\n            FUN_000216e8(puVar47 + -0xe4,uVar37,uVar7);\n            (**(code **)(*(int *)(puVar47 + -0xf0) + -0x7ba8))(puVar16,puVar16,puVar47 + -0xe4);\n            iVar6 = *(int *)(puVar47 + -0xf0);\n            puVar8 = (uint *)puVar16[2];\n            puVar30 = (uint *)puVar16[1];\n          }\n          pcVar51 = *(code **)(iVar6 + -0x7bb4);\n          puVar38 = (uint *)((uint)*(byte *)((uVar7 - 8) + *(int *)(iVar6 + -0x7fd4) + 0x3550) -\n                            (uint)(uVar18 != uVar7));\n          *(undefined4 *)(puVar47 + -0xf8) =\n               *(undefined4 *)((uVar7 - 8) * 4 + *(int *)(iVar6 + -0x7fd4) + 0x355c);\n          *(uint **)(puVar47 + -0xf4) = puVar38;\n          puVar31 = puVar8;\n          puVar20 = puVar8;\n          puVar22 = puVar30;\n          (*pcVar51)();\n          pcVar44 = *(code **)(puVar47 + -0xf0);\n          if (puVar8[(int)((int)puVar30 + -1)] == 0) {\n            puVar9 = puVar8 + (int)puVar30;\n            do {\n              puVar1 = puVar9 + -2;\n              puVar30 = (uint *)((int)puVar30 + -1);\n              puVar9 = puVar9 + -1;\n            } while (*puVar1 == 0);\n          }\n          puVar16[1] = (uint)puVar30;\n          puVar49 = puVar50;\n        }\n        else if ((puVar30 < (uint *)0x3e8) || (puVar30 <= (uint *)((uint)puVar9 >> 4))) {\n          FUN_0002209c();\n          pcVar44 = *(code **)(puVar47 + -0xf0);\n          puVar49 = puVar46 + -0x90;\n        }\n        else {\n          FUN_000219dc();\n          pcVar44 = *(code **)(puVar47 + -0xf0);\n          puVar49 = puVar46 + -0x90;\n        }\n      }\n      if (*(int *)(puVar47 + -0x84) == *piVar32) {\n        return *piVar32;\n      }\n      pcVar51 = *(code **)(pcVar44 + -0x7b70);\n      uVar10 = 0x22b64;\n      (*pcVar51)();\n      pcVar44 = pcVar51 + 0x824d0;\n      puVar48 = puVar47 + -0x160;\n      *(uint **)(puVar47 + -0x118) = puVar16;\n      *(uint **)(puVar47 + -0x124) = puVar30;\n      piVar34 = *(int **)(pcVar51 + 0x7a9d0);\n      uVar18 = puVar22[1];\n      *(undefined1 **)(puVar47 + -0x110) = puVar49;\n      *(uint **)(puVar47 + -0x114) = puVar36;\n      *(int **)(puVar47 + -0x11c) = piVar32;\n      *(uint **)(puVar47 + -0x120) = puVar8;\n      *(undefined4 *)(puVar47 + -0x10c) = uVar10;\n      *(code **)(puVar47 + -0x150) = pcVar44;\n      *(undefined4 *)(puVar47 + -0x13c) = 0;\n      puVar8 = (uint *)puVar20[1];\n      *(int *)(puVar47 + -300) = *piVar34;\n      if ((int)uVar18 < 0) {\n        uVar37 = uVar18 * -4;\n        *(uint *)(puVar47 + -0x138) = -uVar18;\n        if (0x7f00 < uVar37) {\n          pcVar51 = *(code **)(pcVar51 + 0x7a780);\n          goto LAB_00022c88;\n        }\nLAB_00022be4:\n        iVar6 = -(uVar37 + 7 & 0xfffffff8);\n        puVar48 = puVar47 + iVar6 + -0x160;\n        puVar13 = puVar47 + iVar6 + -0x150;\n      }\n      else {\n        uVar37 = uVar18 * 4;\n        *(uint *)(puVar47 + -0x138) = uVar18;\n        pcVar51 = *(code **)(pcVar51 + 0x7a780);\n        if (uVar37 < 0x7f01) goto LAB_00022be4;\nLAB_00022c88:\n        *(uint **)(puVar47 + -0x144) = puVar22;\n        puVar13 = (undefined1 *)(*pcVar51)(puVar47 + -0x13c,uVar37);\n        pcVar44 = *(code **)(puVar47 + -0x150);\n        puVar22 = *(uint **)(puVar47 + -0x144);\n      }\n      pcVar51 = *(code **)(pcVar44 + -0x7a68);\n      puVar36 = (uint *)(puVar47 + -0x138);\n      *(undefined1 **)(puVar47 + -0x130) = puVar13;\n      puVar9 = puVar20;\n      (*pcVar51)(puVar31,puVar36,puVar20,puVar22);\n      iVar6 = *(int *)(puVar47 + -0x150);\n      if (((int)((uint)puVar8 ^ uVar18) < 0) || (*(int *)(puVar47 + -0x134) == 0)) {\n        piVar32 = *(int **)(puVar47 + -0x13c);\n        pcVar51 = *(code **)(iVar6 + -0x7a28);\n        if (piVar32 != (int *)0x0) goto LAB_00022cc0;\n      }\n      else {\n        puVar9 = (uint *)0x1;\n        puVar36 = puVar31;\n        (**(code **)(iVar6 + -0x7c9c))(puVar31);\n        piVar32 = *(int **)(puVar47 + -0x13c);\n        iVar6 = *(int *)(puVar47 + -0x150);\n        if (piVar32 != (int *)0x0) {\n          pcVar51 = *(code **)(iVar6 + -0x7a28);\nLAB_00022cc0:\n          (*pcVar51)();\n          iVar6 = *(int *)(puVar47 + -0x150);\n        }\n      }\n      if (*(int *)(puVar47 + -300) == *piVar34) {\n        return *piVar34;\n      }\n      pcVar51 = *(code **)(iVar6 + -0x7b70);\n      uVar10 = 0x22cdc;\n      (*pcVar51)();\n      pcVar44 = pcVar51 + 0x82360;\n      *(code **)(puVar48 + -0x28) = pcVar44;\n      *(undefined4 *)(puVar48 + -4) = uVar10;\n      *(uint **)(puVar48 + -8) = puVar38;\n      *(uint **)(puVar48 + -0xc) = puVar20;\n      *(int **)(puVar48 + -0x10) = piVar34;\n      *(uint **)(puVar48 + -0x14) = puVar31;\n      *(uint **)(puVar48 + -0x18) = puVar8;\n      *(uint *)(puVar48 + -0x1c) = (uint)puVar8 ^ uVar18;\n      if (puVar9 == (uint *)0x0) {\n        pcVar51 = *(code **)(pcVar51 + 0x7a900);\n        (*pcVar51)();\nLAB_00022e2c:\n        piVar32 = (int *)(*pcVar51)(piVar34,puVar31);\n        pcVar44 = *(code **)(puVar48 + -0x28);\n      }\n      else {\n        puVar8 = (uint *)puVar36[1];\n        if (puVar8 == (uint *)0x0) {\n          piVar32[1] = 0;\n          return 0;\n        }\n        puVar31 = puVar8;\n        if ((int)puVar8 < 0) {\n          puVar31 = (uint *)-(int)puVar8;\n        }\n        pcVar51 = *(code **)(pcVar51 + 0x7a8e0);\n        piVar34 = piVar32;\n        puVar20 = puVar9;\n        puVar38 = puVar36;\n        if (*piVar32 < (int)puVar31) goto LAB_00022e2c;\n        piVar32 = (int *)piVar32[2];\n      }\n      pcVar51 = *(code **)(pcVar44 + -0x7d98);\n      uVar18 = puVar38[2];\n      *(uint **)(puVar48 + -0x30) = puVar20;\n      iVar6 = (*pcVar51)(piVar32,0,uVar18,puVar31);\n      piVar17 = piVar32 + (int)puVar31 + -1;\n      if (iVar6 == 0) {\n        uVar18 = (uint)(*piVar17 == 0);\n        if (-1 < (int)puVar8) {\n          iVar24 = (int)puVar31 - uVar18;\n          goto LAB_00022d9c;\n        }\n      }\n      else {\n        if (-1 < (int)puVar8) {\n          do {\n            iVar24 = *piVar32;\n            *piVar32 = iVar24 + 1;\n            piVar32 = piVar32 + 1;\n          } while (iVar24 + 1 == 0);\n          iVar6 = (int)puVar20 - iVar6;\n          iVar24 = (int)puVar31 - (uint)(*piVar17 == 0);\n          goto LAB_00022d9c;\n        }\n        uVar18 = (uint)(*piVar17 == 0);\n      }\n      iVar24 = uVar18 - (int)puVar31;\nLAB_00022d9c:\n      piVar34[1] = iVar24;\n      return iVar6;\n    }" { (if_statement "if (*(int *)(puVar46 + -0x48) == *(int *)(puVar46 + -0x40)) {\n        puVar8 = (uint *)((int)puVar8 - (uint)(puVar38[(int)((int)puVar8 + -1)] == 0));\n        pcVar51 = *(code **)(iVar24 + -0x7a80);\n        if ((int)puVar8 <= **(int **)(puVar46 + -0x6c)) goto LAB_00022600;\nLAB_00022734:\n        puVar9 = puVar8;\n        puVar19 = (undefined4 *)(*pcVar51)(*(undefined4 *)(puVar46 + -0x6c));\n        iVar24 = *(int *)(puVar46 + -0x78);\n      }\n      else {\n        puVar9 = puVar38;\n        puVar22 = puVar8;\n        uVar18 = (**(code **)(iVar24 + -0x7ad4))(puVar38);\n        iVar24 = *(int *)(puVar46 + -0x78);\n        puVar38[(int)puVar8] = uVar18;\n        puVar8 = (uint *)((int)puVar8 +\n                         ((uint)(uVar18 != 0) -\n                         (uint)(puVar38[(int)((int)puVar8 + ((uVar18 != 0) - 1))] == 0)));\n        pcVar51 = *(code **)(iVar24 + -0x7a80);\n        if (**(int **)(puVar46 + -0x6c) < (int)puVar8) goto LAB_00022734;\nLAB_00022600:\n        puVar19 = *(undefined4 **)(*(int *)(puVar46 + -0x6c) + 8);\n      }" if (parenthesized_expression "(*(int *)(puVar46 + -0x48) == *(int *)(puVar46 + -0x40))" ( (binary_expression "*(int *)(puVar46 + -0x48) == *(int *)(puVar46 + -0x40)" (pointer_expression "*(int *)(puVar46 + -0x48)" * (cast_expression "(int *)(puVar46 + -0x48)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar46 + -0x48)" ( (binary_expression "puVar46 + -0x48" identifier + number_literal) )))) == (pointer_expression "*(int *)(puVar46 + -0x40)" * (cast_expression "(int *)(puVar46 + -0x40)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar46 + -0x40)" ( (binary_expression "puVar46 + -0x40" identifier + number_literal) ))))) )) (compound_statement "{\n        puVar8 = (uint *)((int)puVar8 - (uint)(puVar38[(int)((int)puVar8 + -1)] == 0));\n        pcVar51 = *(code **)(iVar24 + -0x7a80);\n        if ((int)puVar8 <= **(int **)(puVar46 + -0x6c)) goto LAB_00022600;\nLAB_00022734:\n        puVar9 = puVar8;\n        puVar19 = (undefined4 *)(*pcVar51)(*(undefined4 *)(puVar46 + -0x6c));\n        iVar24 = *(int *)(puVar46 + -0x78);\n      }" { (expression_statement "puVar8 = (uint *)((int)puVar8 - (uint)(puVar38[(int)((int)puVar8 + -1)] == 0));" (assignment_expression "puVar8 = (uint *)((int)puVar8 - (uint)(puVar38[(int)((int)puVar8 + -1)] == 0))" identifier = (cast_expression "(uint *)((int)puVar8 - (uint)(puVar38[(int)((int)puVar8 + -1)] == 0))" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar8 - (uint)(puVar38[(int)((int)puVar8 + -1)] == 0))" ( (binary_expression "(int)puVar8 - (uint)(puVar38[(int)((int)puVar8 + -1)] == 0)" (cast_expression "(int)puVar8" ( (type_descriptor "int" primitive_type) ) identifier) - (call_expression "(uint)(puVar38[(int)((int)puVar8 + -1)] == 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(puVar38[(int)((int)puVar8 + -1)] == 0)" ( (binary_expression "puVar38[(int)((int)puVar8 + -1)] == 0" (subscript_expression "puVar38[(int)((int)puVar8 + -1)]" identifier [ (cast_expression "(int)((int)puVar8 + -1)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((int)puVar8 + -1)" ( (binary_expression "(int)puVar8 + -1" (cast_expression "(int)puVar8" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))) ]) == number_literal) )))) )))) ;) (expression_statement "pcVar51 = *(code **)(iVar24 + -0x7a80);" (assignment_expression "pcVar51 = *(code **)(iVar24 + -0x7a80)" identifier = (pointer_expression "*(code **)(iVar24 + -0x7a80)" * (cast_expression "(code **)(iVar24 + -0x7a80)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar24 + -0x7a80)" ( (binary_expression "iVar24 + -0x7a80" identifier + number_literal) ))))) ;) (if_statement "if ((int)puVar8 <= **(int **)(puVar46 + -0x6c)) goto LAB_00022600;" if (parenthesized_expression "((int)puVar8 <= **(int **)(puVar46 + -0x6c))" ( (binary_expression "(int)puVar8 <= **(int **)(puVar46 + -0x6c)" (cast_expression "(int)puVar8" ( (type_descriptor "int" primitive_type) ) identifier) <= (pointer_expression "**(int **)(puVar46 + -0x6c)" * (pointer_expression "*(int **)(puVar46 + -0x6c)" * (cast_expression "(int **)(puVar46 + -0x6c)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar46 + -0x6c)" ( (binary_expression "puVar46 + -0x6c" identifier + number_literal) )))))) )) (goto_statement "goto LAB_00022600;" goto statement_identifier ;)) (labeled_statement "LAB_00022734:\n        puVar9 = puVar8;" statement_identifier : (expression_statement "puVar9 = puVar8;" (assignment_expression "puVar9 = puVar8" identifier = identifier) ;)) (expression_statement "puVar19 = (undefined4 *)(*pcVar51)(*(undefined4 *)(puVar46 + -0x6c));" (assignment_expression "puVar19 = (undefined4 *)(*pcVar51)(*(undefined4 *)(puVar46 + -0x6c))" identifier = (cast_expression "(undefined4 *)(*pcVar51)(*(undefined4 *)(puVar46 + -0x6c))" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(*pcVar51)(*(undefined4 *)(puVar46 + -0x6c))" (parenthesized_expression "(*pcVar51)" ( (pointer_expression "*pcVar51" * identifier) )) (argument_list "(*(undefined4 *)(puVar46 + -0x6c))" ( (pointer_expression "*(undefined4 *)(puVar46 + -0x6c)" * (cast_expression "(undefined4 *)(puVar46 + -0x6c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar46 + -0x6c)" ( (binary_expression "puVar46 + -0x6c" identifier + number_literal) )))) ))))) ;) (expression_statement "iVar24 = *(int *)(puVar46 + -0x78);" (assignment_expression "iVar24 = *(int *)(puVar46 + -0x78)" identifier = (pointer_expression "*(int *)(puVar46 + -0x78)" * (cast_expression "(int *)(puVar46 + -0x78)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar46 + -0x78)" ( (binary_expression "puVar46 + -0x78" identifier + number_literal) ))))) ;) }) (else_clause "else {\n        puVar9 = puVar38;\n        puVar22 = puVar8;\n        uVar18 = (**(code **)(iVar24 + -0x7ad4))(puVar38);\n        iVar24 = *(int *)(puVar46 + -0x78);\n        puVar38[(int)puVar8] = uVar18;\n        puVar8 = (uint *)((int)puVar8 +\n                         ((uint)(uVar18 != 0) -\n                         (uint)(puVar38[(int)((int)puVar8 + ((uVar18 != 0) - 1))] == 0)));\n        pcVar51 = *(code **)(iVar24 + -0x7a80);\n        if (**(int **)(puVar46 + -0x6c) < (int)puVar8) goto LAB_00022734;\nLAB_00022600:\n        puVar19 = *(undefined4 **)(*(int *)(puVar46 + -0x6c) + 8);\n      }" else (compound_statement "{\n        puVar9 = puVar38;\n        puVar22 = puVar8;\n        uVar18 = (**(code **)(iVar24 + -0x7ad4))(puVar38);\n        iVar24 = *(int *)(puVar46 + -0x78);\n        puVar38[(int)puVar8] = uVar18;\n        puVar8 = (uint *)((int)puVar8 +\n                         ((uint)(uVar18 != 0) -\n                         (uint)(puVar38[(int)((int)puVar8 + ((uVar18 != 0) - 1))] == 0)));\n        pcVar51 = *(code **)(iVar24 + -0x7a80);\n        if (**(int **)(puVar46 + -0x6c) < (int)puVar8) goto LAB_00022734;\nLAB_00022600:\n        puVar19 = *(undefined4 **)(*(int *)(puVar46 + -0x6c) + 8);\n      }" { (expression_statement "puVar9 = puVar38;" (assignment_expression "puVar9 = puVar38" identifier = identifier) ;) (expression_statement "puVar22 = puVar8;" (assignment_expression "puVar22 = puVar8" identifier = identifier) ;) (expression_statement "uVar18 = (**(code **)(iVar24 + -0x7ad4))(puVar38);" (assignment_expression "uVar18 = (**(code **)(iVar24 + -0x7ad4))(puVar38)" identifier = (call_expression "(**(code **)(iVar24 + -0x7ad4))(puVar38)" (parenthesized_expression "(**(code **)(iVar24 + -0x7ad4))" ( (pointer_expression "**(code **)(iVar24 + -0x7ad4)" * (pointer_expression "*(code **)(iVar24 + -0x7ad4)" * (cast_expression "(code **)(iVar24 + -0x7ad4)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar24 + -0x7ad4)" ( (binary_expression "iVar24 + -0x7ad4" identifier + number_literal) ))))) )) (argument_list "(puVar38)" ( identifier )))) ;) (expression_statement "iVar24 = *(int *)(puVar46 + -0x78);" (assignment_expression "iVar24 = *(int *)(puVar46 + -0x78)" identifier = (pointer_expression "*(int *)(puVar46 + -0x78)" * (cast_expression "(int *)(puVar46 + -0x78)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar46 + -0x78)" ( (binary_expression "puVar46 + -0x78" identifier + number_literal) ))))) ;) (expression_statement "puVar38[(int)puVar8] = uVar18;" (assignment_expression "puVar38[(int)puVar8] = uVar18" (subscript_expression "puVar38[(int)puVar8]" identifier [ (cast_expression "(int)puVar8" ( (type_descriptor "int" primitive_type) ) identifier) ]) = identifier) ;) (expression_statement "puVar8 = (uint *)((int)puVar8 +\n                         ((uint)(uVar18 != 0) -\n                         (uint)(puVar38[(int)((int)puVar8 + ((uVar18 != 0) - 1))] == 0)));" (assignment_expression "puVar8 = (uint *)((int)puVar8 +\n                         ((uint)(uVar18 != 0) -\n                         (uint)(puVar38[(int)((int)puVar8 + ((uVar18 != 0) - 1))] == 0)))" identifier = (cast_expression "(uint *)((int)puVar8 +\n                         ((uint)(uVar18 != 0) -\n                         (uint)(puVar38[(int)((int)puVar8 + ((uVar18 != 0) - 1))] == 0)))" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar8 +\n                         ((uint)(uVar18 != 0) -\n                         (uint)(puVar38[(int)((int)puVar8 + ((uVar18 != 0) - 1))] == 0)))" ( (binary_expression "(int)puVar8 +\n                         ((uint)(uVar18 != 0) -\n                         (uint)(puVar38[(int)((int)puVar8 + ((uVar18 != 0) - 1))] == 0))" (cast_expression "(int)puVar8" ( (type_descriptor "int" primitive_type) ) identifier) + (parenthesized_expression "((uint)(uVar18 != 0) -\n                         (uint)(puVar38[(int)((int)puVar8 + ((uVar18 != 0) - 1))] == 0))" ( (binary_expression "(uint)(uVar18 != 0) -\n                         (uint)(puVar38[(int)((int)puVar8 + ((uVar18 != 0) - 1))] == 0)" (call_expression "(uint)(uVar18 != 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar18 != 0)" ( (binary_expression "uVar18 != 0" identifier != number_literal) ))) - (call_expression "(uint)(puVar38[(int)((int)puVar8 + ((uVar18 != 0) - 1))] == 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(puVar38[(int)((int)puVar8 + ((uVar18 != 0) - 1))] == 0)" ( (binary_expression "puVar38[(int)((int)puVar8 + ((uVar18 != 0) - 1))] == 0" (subscript_expression "puVar38[(int)((int)puVar8 + ((uVar18 != 0) - 1))]" identifier [ (cast_expression "(int)((int)puVar8 + ((uVar18 != 0) - 1))" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((int)puVar8 + ((uVar18 != 0) - 1))" ( (binary_expression "(int)puVar8 + ((uVar18 != 0) - 1)" (cast_expression "(int)puVar8" ( (type_descriptor "int" primitive_type) ) identifier) + (parenthesized_expression "((uVar18 != 0) - 1)" ( (binary_expression "(uVar18 != 0) - 1" (parenthesized_expression "(uVar18 != 0)" ( (binary_expression "uVar18 != 0" identifier != number_literal) )) - number_literal) ))) ))) ]) == number_literal) )))) ))) )))) ;) (expression_statement "pcVar51 = *(code **)(iVar24 + -0x7a80);" (assignment_expression "pcVar51 = *(code **)(iVar24 + -0x7a80)" identifier = (pointer_expression "*(code **)(iVar24 + -0x7a80)" * (cast_expression "(code **)(iVar24 + -0x7a80)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar24 + -0x7a80)" ( (binary_expression "iVar24 + -0x7a80" identifier + number_literal) ))))) ;) (if_statement "if (**(int **)(puVar46 + -0x6c) < (int)puVar8) goto LAB_00022734;" if (parenthesized_expression "(**(int **)(puVar46 + -0x6c) < (int)puVar8)" ( (binary_expression "**(int **)(puVar46 + -0x6c) < (int)puVar8" (pointer_expression "**(int **)(puVar46 + -0x6c)" * (pointer_expression "*(int **)(puVar46 + -0x6c)" * (cast_expression "(int **)(puVar46 + -0x6c)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar46 + -0x6c)" ( (binary_expression "puVar46 + -0x6c" identifier + number_literal) ))))) < (cast_expression "(int)puVar8" ( (type_descriptor "int" primitive_type) ) identifier)) )) (goto_statement "goto LAB_00022734;" goto statement_identifier ;)) (labeled_statement "LAB_00022600:\n        puVar19 = *(undefined4 **)(*(int *)(puVar46 + -0x6c) + 8);" statement_identifier : (expression_statement "puVar19 = *(undefined4 **)(*(int *)(puVar46 + -0x6c) + 8);" (assignment_expression "puVar19 = *(undefined4 **)(*(int *)(puVar46 + -0x6c) + 8)" identifier = (pointer_expression "*(undefined4 **)(*(int *)(puVar46 + -0x6c) + 8)" * (cast_expression "(undefined4 **)(*(int *)(puVar46 + -0x6c) + 8)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)(puVar46 + -0x6c) + 8)" ( (binary_expression "*(int *)(puVar46 + -0x6c) + 8" (pointer_expression "*(int *)(puVar46 + -0x6c)" * (cast_expression "(int *)(puVar46 + -0x6c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar46 + -0x6c)" ( (binary_expression "puVar46 + -0x6c" identifier + number_literal) )))) + number_literal) ))))) ;)) }))) (expression_statement "*(uint **)(*(int *)(puVar46 + -0x6c) + 4) = puVar8;" (assignment_expression "*(uint **)(*(int *)(puVar46 + -0x6c) + 4) = puVar8" (pointer_expression "*(uint **)(*(int *)(puVar46 + -0x6c) + 4)" * (cast_expression "(uint **)(*(int *)(puVar46 + -0x6c) + 4)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)(puVar46 + -0x6c) + 4)" ( (binary_expression "*(int *)(puVar46 + -0x6c) + 4" (pointer_expression "*(int *)(puVar46 + -0x6c)" * (cast_expression "(int *)(puVar46 + -0x6c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar46 + -0x6c)" ( (binary_expression "puVar46 + -0x6c" identifier + number_literal) )))) + number_literal) )))) = identifier) ;) (if_statement "if (puVar8 != (uint *)0x0) {\n        puVar13 = (undefined1 *)((int)puVar8 + -1);\n        puVar9 = (uint *)*puVar38;\n        if (puVar13 != (undefined1 *)0x0) {\n          puVar15 = puVar19;\n          puVar16 = puVar38 + 1;\n          do {\n            *puVar15 = puVar9;\n            puVar38 = puVar16 + 1;\n            puVar13 = puVar13 + -1;\n            puVar9 = (uint *)*puVar16;\n            puVar15 = puVar15 + 1;\n            puVar16 = puVar38;\n          } while (puVar13 != (undefined1 *)0x0);\n          puVar8 = (uint *)((int)puVar8 * 4);\n          puVar19 = (undefined4 *)((int)puVar19 + (int)(puVar8 + -1));\n        }\n        *puVar19 = puVar9;\n      }" if (parenthesized_expression "(puVar8 != (uint *)0x0)" ( (binary_expression "puVar8 != (uint *)0x0" identifier != (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        puVar13 = (undefined1 *)((int)puVar8 + -1);\n        puVar9 = (uint *)*puVar38;\n        if (puVar13 != (undefined1 *)0x0) {\n          puVar15 = puVar19;\n          puVar16 = puVar38 + 1;\n          do {\n            *puVar15 = puVar9;\n            puVar38 = puVar16 + 1;\n            puVar13 = puVar13 + -1;\n            puVar9 = (uint *)*puVar16;\n            puVar15 = puVar15 + 1;\n            puVar16 = puVar38;\n          } while (puVar13 != (undefined1 *)0x0);\n          puVar8 = (uint *)((int)puVar8 * 4);\n          puVar19 = (undefined4 *)((int)puVar19 + (int)(puVar8 + -1));\n        }\n        *puVar19 = puVar9;\n      }" { (expression_statement "puVar13 = (undefined1 *)((int)puVar8 + -1);" (assignment_expression "puVar13 = (undefined1 *)((int)puVar8 + -1)" identifier = (cast_expression "(undefined1 *)((int)puVar8 + -1)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar8 + -1)" ( (binary_expression "(int)puVar8 + -1" (cast_expression "(int)puVar8" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "puVar9 = (uint *)*puVar38;" (assignment_expression "puVar9 = (uint *)*puVar38" identifier = (cast_expression "(uint *)*puVar38" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar38" * identifier))) ;) (if_statement "if (puVar13 != (undefined1 *)0x0) {\n          puVar15 = puVar19;\n          puVar16 = puVar38 + 1;\n          do {\n            *puVar15 = puVar9;\n            puVar38 = puVar16 + 1;\n            puVar13 = puVar13 + -1;\n            puVar9 = (uint *)*puVar16;\n            puVar15 = puVar15 + 1;\n            puVar16 = puVar38;\n          } while (puVar13 != (undefined1 *)0x0);\n          puVar8 = (uint *)((int)puVar8 * 4);\n          puVar19 = (undefined4 *)((int)puVar19 + (int)(puVar8 + -1));\n        }" if (parenthesized_expression "(puVar13 != (undefined1 *)0x0)" ( (binary_expression "puVar13 != (undefined1 *)0x0" identifier != (cast_expression "(undefined1 *)0x0" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          puVar15 = puVar19;\n          puVar16 = puVar38 + 1;\n          do {\n            *puVar15 = puVar9;\n            puVar38 = puVar16 + 1;\n            puVar13 = puVar13 + -1;\n            puVar9 = (uint *)*puVar16;\n            puVar15 = puVar15 + 1;\n            puVar16 = puVar38;\n          } while (puVar13 != (undefined1 *)0x0);\n          puVar8 = (uint *)((int)puVar8 * 4);\n          puVar19 = (undefined4 *)((int)puVar19 + (int)(puVar8 + -1));\n        }" { (expression_statement "puVar15 = puVar19;" (assignment_expression "puVar15 = puVar19" identifier = identifier) ;) (expression_statement "puVar16 = puVar38 + 1;" (assignment_expression "puVar16 = puVar38 + 1" identifier = (binary_expression "puVar38 + 1" identifier + number_literal)) ;) (do_statement "do {\n            *puVar15 = puVar9;\n            puVar38 = puVar16 + 1;\n            puVar13 = puVar13 + -1;\n            puVar9 = (uint *)*puVar16;\n            puVar15 = puVar15 + 1;\n            puVar16 = puVar38;\n          } while (puVar13 != (undefined1 *)0x0);" do (compound_statement "{\n            *puVar15 = puVar9;\n            puVar38 = puVar16 + 1;\n            puVar13 = puVar13 + -1;\n            puVar9 = (uint *)*puVar16;\n            puVar15 = puVar15 + 1;\n            puVar16 = puVar38;\n          }" { (expression_statement "*puVar15 = puVar9;" (assignment_expression "*puVar15 = puVar9" (pointer_expression "*puVar15" * identifier) = identifier) ;) (expression_statement "puVar38 = puVar16 + 1;" (assignment_expression "puVar38 = puVar16 + 1" identifier = (binary_expression "puVar16 + 1" identifier + number_literal)) ;) (expression_statement "puVar13 = puVar13 + -1;" (assignment_expression "puVar13 = puVar13 + -1" identifier = (binary_expression "puVar13 + -1" identifier + number_literal)) ;) (expression_statement "puVar9 = (uint *)*puVar16;" (assignment_expression "puVar9 = (uint *)*puVar16" identifier = (cast_expression "(uint *)*puVar16" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar16" * identifier))) ;) (expression_statement "puVar15 = puVar15 + 1;" (assignment_expression "puVar15 = puVar15 + 1" identifier = (binary_expression "puVar15 + 1" identifier + number_literal)) ;) (expression_statement "puVar16 = puVar38;" (assignment_expression "puVar16 = puVar38" identifier = identifier) ;) }) while (parenthesized_expression "(puVar13 != (undefined1 *)0x0)" ( (binary_expression "puVar13 != (undefined1 *)0x0" identifier != (cast_expression "(undefined1 *)0x0" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) ;) (expression_statement "puVar8 = (uint *)((int)puVar8 * 4);" (assignment_expression "puVar8 = (uint *)((int)puVar8 * 4)" identifier = (cast_expression "(uint *)((int)puVar8 * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar8 * 4)" ( (binary_expression "(int)puVar8 * 4" (cast_expression "(int)puVar8" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal) )))) ;) (expression_statement "puVar19 = (undefined4 *)((int)puVar19 + (int)(puVar8 + -1));" (assignment_expression "puVar19 = (undefined4 *)((int)puVar19 + (int)(puVar8 + -1))" identifier = (cast_expression "(undefined4 *)((int)puVar19 + (int)(puVar8 + -1))" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar19 + (int)(puVar8 + -1))" ( (binary_expression "(int)puVar19 + (int)(puVar8 + -1)" (cast_expression "(int)puVar19" ( (type_descriptor "int" primitive_type) ) identifier) + (cast_expression "(int)(puVar8 + -1)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(puVar8 + -1)" ( (binary_expression "puVar8 + -1" identifier + number_literal) )))) )))) ;) })) (expression_statement "*puVar19 = puVar9;" (assignment_expression "*puVar19 = puVar9" (pointer_expression "*puVar19" * identifier) = identifier) ;) })) (expression_statement "puVar16 = *(uint **)(puVar46 + -0x30);" (assignment_expression "puVar16 = *(uint **)(puVar46 + -0x30)" identifier = (pointer_expression "*(uint **)(puVar46 + -0x30)" * (cast_expression "(uint **)(puVar46 + -0x30)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar46 + -0x30)" ( (binary_expression "puVar46 + -0x30" identifier + number_literal) ))))) ;) (if_statement "if (puVar16 != (uint *)0x0) {\n        (**(code **)(iVar24 + -0x7a28))();\n        iVar24 = *(int *)(puVar46 + -0x78);\n      }" if (parenthesized_expression "(puVar16 != (uint *)0x0)" ( (binary_expression "puVar16 != (uint *)0x0" identifier != (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        (**(code **)(iVar24 + -0x7a28))();\n        iVar24 = *(int *)(puVar46 + -0x78);\n      }" { (expression_statement "(**(code **)(iVar24 + -0x7a28))();" (call_expression "(**(code **)(iVar24 + -0x7a28))()" (parenthesized_expression "(**(code **)(iVar24 + -0x7a28))" ( (pointer_expression "**(code **)(iVar24 + -0x7a28)" * (pointer_expression "*(code **)(iVar24 + -0x7a28)" * (cast_expression "(code **)(iVar24 + -0x7a28)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar24 + -0x7a28)" ( (binary_expression "iVar24 + -0x7a28" identifier + number_literal) ))))) )) (argument_list "()" ( ))) ;) (expression_statement "iVar24 = *(int *)(puVar46 + -0x78);" (assignment_expression "iVar24 = *(int *)(puVar46 + -0x78)" identifier = (pointer_expression "*(int *)(puVar46 + -0x78)" * (cast_expression "(int *)(puVar46 + -0x78)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar46 + -0x78)" ( (binary_expression "puVar46 + -0x78" identifier + number_literal) ))))) ;) })) (if_statement "if (*(int *)(puVar46 + -0x2c) == **(int **)(puVar46 + -0x70)) {\n        return **(int **)(puVar46 + -0x70);\n      }" if (parenthesized_expression "(*(int *)(puVar46 + -0x2c) == **(int **)(puVar46 + -0x70))" ( (binary_expression "*(int *)(puVar46 + -0x2c) == **(int **)(puVar46 + -0x70)" (pointer_expression "*(int *)(puVar46 + -0x2c)" * (cast_expression "(int *)(puVar46 + -0x2c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar46 + -0x2c)" ( (binary_expression "puVar46 + -0x2c" identifier + number_literal) )))) == (pointer_expression "**(int **)(puVar46 + -0x70)" * (pointer_expression "*(int **)(puVar46 + -0x70)" * (cast_expression "(int **)(puVar46 + -0x70)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar46 + -0x70)" ( (binary_expression "puVar46 + -0x70" identifier + number_literal) )))))) )) (compound_statement "{\n        return **(int **)(puVar46 + -0x70);\n      }" { (return_statement "return **(int **)(puVar46 + -0x70);" return (pointer_expression "**(int **)(puVar46 + -0x70)" * (pointer_expression "*(int **)(puVar46 + -0x70)" * (cast_expression "(int **)(puVar46 + -0x70)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar46 + -0x70)" ( (binary_expression "puVar46 + -0x70" identifier + number_literal) ))))) ;) })) (expression_statement "pcVar51 = *(code **)(iVar24 + -0x7b70);" (assignment_expression "pcVar51 = *(code **)(iVar24 + -0x7b70)" identifier = (pointer_expression "*(code **)(iVar24 + -0x7b70)" * (cast_expression "(code **)(iVar24 + -0x7b70)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar24 + -0x7b70)" ( (binary_expression "iVar24 + -0x7b70" identifier + number_literal) ))))) ;) (expression_statement "pcVar52 = __gmpz_bin_uiui;" (assignment_expression "pcVar52 = __gmpz_bin_uiui" identifier = identifier) ;) (expression_statement "(*pcVar51)();" (call_expression "(*pcVar51)()" (parenthesized_expression "(*pcVar51)" ( (pointer_expression "*pcVar51" * identifier) )) (argument_list "()" ( ))) ;) (expression_statement "pcVar44 = pcVar51 + 0x8289c;" (assignment_expression "pcVar44 = pcVar51 + 0x8289c" identifier = (binary_expression "pcVar51 + 0x8289c" identifier + number_literal)) ;) (expression_statement "*(uint **)(puVar47 + -0x78) = puVar31;" (assignment_expression "*(uint **)(puVar47 + -0x78) = puVar31" (pointer_expression "*(uint **)(puVar47 + -0x78)" * (cast_expression "(uint **)(puVar47 + -0x78)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar47 + -0x78)" ( (binary_expression "puVar47 + -0x78" identifier + number_literal) )))) = identifier) ;) (expression_statement "piVar32 = *(int **)(pcVar51 + 0x7ad9c);" (assignment_expression "piVar32 = *(int **)(pcVar51 + 0x7ad9c)" identifier = (pointer_expression "*(int **)(pcVar51 + 0x7ad9c)" * (cast_expression "(int **)(pcVar51 + 0x7ad9c)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar51 + 0x7ad9c)" ( (binary_expression "pcVar51 + 0x7ad9c" identifier + number_literal) ))))) ;) (expression_statement "*(code **)(puVar47 + -0xf0) = pcVar44;" (assignment_expression "*(code **)(puVar47 + -0xf0) = pcVar44" (pointer_expression "*(code **)(puVar47 + -0xf0)" * (cast_expression "(code **)(puVar47 + -0xf0)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar47 + -0xf0)" ( (binary_expression "puVar47 + -0xf0" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(puVar47 + -0x74) = iVar39;" (assignment_expression "*(int *)(puVar47 + -0x74) = iVar39" (pointer_expression "*(int *)(puVar47 + -0x74)" * (cast_expression "(int *)(puVar47 + -0x74)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar47 + -0x74)" ( (binary_expression "puVar47 + -0x74" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(code **)(puVar47 + -0x5c) = pcVar52;" (assignment_expression "*(code **)(puVar47 + -0x5c) = pcVar52" (pointer_expression "*(code **)(puVar47 + -0x5c)" * (cast_expression "(code **)(puVar47 + -0x5c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar47 + -0x5c)" ( (binary_expression "puVar47 + -0x5c" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined1 **)(puVar47 + -0x60) = puVar46 + -0x90;" (assignment_expression "*(undefined1 **)(puVar47 + -0x60) = puVar46 + -0x90" (pointer_expression "*(undefined1 **)(puVar47 + -0x60)" * (cast_expression "(undefined1 **)(puVar47 + -0x60)" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar47 + -0x60)" ( (binary_expression "puVar47 + -0x60" identifier + number_literal) )))) = (binary_expression "puVar46 + -0x90" identifier + number_literal)) ;) (expression_statement "*(int *)(puVar47 + -100) = iVar6;" (assignment_expression "*(int *)(puVar47 + -100) = iVar6" (pointer_expression "*(int *)(puVar47 + -100)" * (cast_expression "(int *)(puVar47 + -100)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar47 + -100)" ( (binary_expression "puVar47 + -100" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(puVar47 + -0x68) = iVar29;" (assignment_expression "*(int *)(puVar47 + -0x68) = iVar29" (pointer_expression "*(int *)(puVar47 + -0x68)" * (cast_expression "(int *)(puVar47 + -0x68)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar47 + -0x68)" ( (binary_expression "puVar47 + -0x68" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(uint **)(puVar47 + -0x6c) = puVar38;" (assignment_expression "*(uint **)(puVar47 + -0x6c) = puVar38" (pointer_expression "*(uint **)(puVar47 + -0x6c)" * (cast_expression "(uint **)(puVar47 + -0x6c)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar47 + -0x6c)" ( (binary_expression "puVar47 + -0x6c" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(uint **)(puVar47 + -0x70) = puVar36;" (assignment_expression "*(uint **)(puVar47 + -0x70) = puVar36" (pointer_expression "*(uint **)(puVar47 + -0x70)" * (cast_expression "(uint **)(puVar47 + -0x70)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar47 + -0x70)" ( (binary_expression "puVar47 + -0x70" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(uint **)(puVar47 + -0x7c) = puVar8;" (assignment_expression "*(uint **)(puVar47 + -0x7c) = puVar8" (pointer_expression "*(uint **)(puVar47 + -0x7c)" * (cast_expression "(uint **)(puVar47 + -0x7c)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar47 + -0x7c)" ( (binary_expression "puVar47 + -0x7c" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar47 + -0x80) = 0;" (assignment_expression "*(undefined4 *)(puVar47 + -0x80) = 0" (pointer_expression "*(undefined4 *)(puVar47 + -0x80)" * (cast_expression "(undefined4 *)(puVar47 + -0x80)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar47 + -0x80)" ( (binary_expression "puVar47 + -0x80" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(int *)(puVar47 + -0x84) = *piVar32;" (assignment_expression "*(int *)(puVar47 + -0x84) = *piVar32" (pointer_expression "*(int *)(puVar47 + -0x84)" * (cast_expression "(int *)(puVar47 + -0x84)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar47 + -0x84)" ( (binary_expression "puVar47 + -0x84" identifier + number_literal) )))) = (pointer_expression "*piVar32" * identifier)) ;) (expression_statement "puVar31 = puVar16;" (assignment_expression "puVar31 = puVar16" identifier = identifier) ;) (expression_statement "puVar20 = puVar9;" (assignment_expression "puVar20 = puVar9" identifier = identifier) ;) (if_statement "if (puVar9 < puVar22) {\n        puVar16[1] = 0;\n        puVar30 = (uint *)0x0;\n      }\n      else {\n        puVar30 = puVar22;\n        if ((uint *)((int)puVar9 - (int)puVar22) <= puVar22) {\n          puVar30 = (uint *)((int)puVar9 - (int)puVar22);\n        }\n        puVar22 = puVar30;\n        puVar36 = puVar9;\n        if (puVar30 < (uint *)0x2) {\n          if (puVar30 == (uint *)0x0) {\n            puVar36 = (uint *)0x1;\n          }\n          *(uint **)puVar16[2] = puVar36;\n          puVar16[1] = 1;\n          puVar49 = puVar46 + -0x90;\n        }\n        else if (puVar9 < (uint *)0x23) {\n          puVar13 = (undefined1 *)((int)puVar30 + -2);\n          iVar6 = *(int *)(pcVar51 + 0x7aa7c);\n          puVar20 = (uint *)puVar16[2];\n          uVar18 = (int)puVar9 - (int)puVar30;\n          puVar36 = (uint *)(iVar6 + ((uint)puVar9 >> 1));\n          puVar30 = (uint *)(iVar6 + ((uint)puVar30 >> 1));\n          bVar2 = *(byte *)((int)puVar30 + -1);\n          puVar31 = (uint *)(uint)*(byte *)(iVar6 + (uVar18 >> 1) + -1);\n          *puVar20 = *(int *)((int)puVar13 * 4 + *(int *)(pcVar51 + 0x7a8c8) + 0x35b4) *\n                     *(int *)(*(int *)(pcVar51 + 0x7ad64) + (int)puVar9 * 4) *\n                     *(int *)((uVar18 - 2) * 4 + *(int *)(pcVar51 + 0x7a8c8) + 0x35b4) <<\n                     (((uint)*(byte *)((int)puVar36 + -1) - (int)(uint)bVar2) - (int)puVar31 & 0x1f)\n          ;\n          puVar16[1] = 1;\n          puVar22 = (uint *)(uint)bVar2;\n          puVar49 = puVar46 + -0x90;\n        }\n        else if (puVar30 < &DAT_00000011) {\n          FUN_000216e8();\n          pcVar44 = *(code **)(puVar47 + -0xf0);\n          puVar49 = puVar46 + -0x90;\n        }\n        else if (puVar30 < &DAT_00000021) {\n          uVar18 = (uint)puVar30 >> 1;\n          uVar37 = (int)puVar9 - uVar18;\n          FUN_000216e8();\n          iVar6 = *(int *)(puVar47 + -0xf0);\n          uVar7 = (int)puVar30 - uVar18;\n          if (uVar37 < 0x23) {\n            puVar50 = (undefined1 *)puVar16[1];\n            if ((int)puVar50 < (int)*puVar16) {\n              puVar8 = (uint *)puVar16[2];\n            }\n            else {\n              puVar8 = (uint *)(**(code **)(iVar6 + -0x7a80))(puVar16,puVar50 + 1);\n              iVar6 = *(int *)(puVar47 + -0xf0);\n            }\n            iVar29 = *(int *)(iVar6 + -0x7e20);\n            iVar24 = *(int *)(iVar6 + -0x7fd4) + 0x35b4;\n            uVar37 = (**(code **)(iVar6 + -0x7f9c))\n                               (puVar8,puVar8,puVar50,\n                                *(int *)((((int)puVar9 - (int)puVar30) - 2U) * 4 + iVar24) *\n                                *(int *)(*(int *)(iVar6 + -0x7b38) + uVar37 * 4) *\n                                *(int *)((uVar7 - 2) * 4 + iVar24) <<\n                                (((uint)*(byte *)(iVar29 + (uVar37 >> 1) + -1) -\n                                 (uint)*(byte *)(iVar29 + (uVar7 >> 1) + -1)) -\n                                 (uint)*(byte *)(iVar29 + ((uint)((int)puVar9 - (int)puVar30) >> 1)\n                                                + -1) & 0x1f));\n            iVar6 = *(int *)(puVar47 + -0xf0);\n            puVar30 = (uint *)(puVar50 + (uVar37 != 0));\n            puVar8[(int)puVar50] = uVar37;\n          }\n          else {\n            *(undefined4 *)(puVar47 + -0xe4) = 0x15;\n            *(undefined1 **)(puVar47 + -0xdc) = puVar47 + -0xd8;\n            FUN_000216e8(puVar47 + -0xe4,uVar37,uVar7);\n            (**(code **)(*(int *)(puVar47 + -0xf0) + -0x7ba8))(puVar16,puVar16,puVar47 + -0xe4);\n            iVar6 = *(int *)(puVar47 + -0xf0);\n            puVar8 = (uint *)puVar16[2];\n            puVar30 = (uint *)puVar16[1];\n          }\n          pcVar51 = *(code **)(iVar6 + -0x7bb4);\n          puVar38 = (uint *)((uint)*(byte *)((uVar7 - 8) + *(int *)(iVar6 + -0x7fd4) + 0x3550) -\n                            (uint)(uVar18 != uVar7));\n          *(undefined4 *)(puVar47 + -0xf8) =\n               *(undefined4 *)((uVar7 - 8) * 4 + *(int *)(iVar6 + -0x7fd4) + 0x355c);\n          *(uint **)(puVar47 + -0xf4) = puVar38;\n          puVar31 = puVar8;\n          puVar20 = puVar8;\n          puVar22 = puVar30;\n          (*pcVar51)();\n          pcVar44 = *(code **)(puVar47 + -0xf0);\n          if (puVar8[(int)((int)puVar30 + -1)] == 0) {\n            puVar9 = puVar8 + (int)puVar30;\n            do {\n              puVar1 = puVar9 + -2;\n              puVar30 = (uint *)((int)puVar30 + -1);\n              puVar9 = puVar9 + -1;\n            } while (*puVar1 == 0);\n          }\n          puVar16[1] = (uint)puVar30;\n          puVar49 = puVar50;\n        }\n        else if ((puVar30 < (uint *)0x3e8) || (puVar30 <= (uint *)((uint)puVar9 >> 4))) {\n          FUN_0002209c();\n          pcVar44 = *(code **)(puVar47 + -0xf0);\n          puVar49 = puVar46 + -0x90;\n        }\n        else {\n          FUN_000219dc();\n          pcVar44 = *(code **)(puVar47 + -0xf0);\n          puVar49 = puVar46 + -0x90;\n        }\n      }" if (parenthesized_expression "(puVar9 < puVar22)" ( (binary_expression "puVar9 < puVar22" identifier < identifier) )) (compound_statement "{\n        puVar16[1] = 0;\n        puVar30 = (uint *)0x0;\n      }" { (expression_statement "puVar16[1] = 0;" (assignment_expression "puVar16[1] = 0" (subscript_expression "puVar16[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar30 = (uint *)0x0;" (assignment_expression "puVar30 = (uint *)0x0" identifier = (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) }) (else_clause "else {\n        puVar30 = puVar22;\n        if ((uint *)((int)puVar9 - (int)puVar22) <= puVar22) {\n          puVar30 = (uint *)((int)puVar9 - (int)puVar22);\n        }\n        puVar22 = puVar30;\n        puVar36 = puVar9;\n        if (puVar30 < (uint *)0x2) {\n          if (puVar30 == (uint *)0x0) {\n            puVar36 = (uint *)0x1;\n          }\n          *(uint **)puVar16[2] = puVar36;\n          puVar16[1] = 1;\n          puVar49 = puVar46 + -0x90;\n        }\n        else if (puVar9 < (uint *)0x23) {\n          puVar13 = (undefined1 *)((int)puVar30 + -2);\n          iVar6 = *(int *)(pcVar51 + 0x7aa7c);\n          puVar20 = (uint *)puVar16[2];\n          uVar18 = (int)puVar9 - (int)puVar30;\n          puVar36 = (uint *)(iVar6 + ((uint)puVar9 >> 1));\n          puVar30 = (uint *)(iVar6 + ((uint)puVar30 >> 1));\n          bVar2 = *(byte *)((int)puVar30 + -1);\n          puVar31 = (uint *)(uint)*(byte *)(iVar6 + (uVar18 >> 1) + -1);\n          *puVar20 = *(int *)((int)puVar13 * 4 + *(int *)(pcVar51 + 0x7a8c8) + 0x35b4) *\n                     *(int *)(*(int *)(pcVar51 + 0x7ad64) + (int)puVar9 * 4) *\n                     *(int *)((uVar18 - 2) * 4 + *(int *)(pcVar51 + 0x7a8c8) + 0x35b4) <<\n                     (((uint)*(byte *)((int)puVar36 + -1) - (int)(uint)bVar2) - (int)puVar31 & 0x1f)\n          ;\n          puVar16[1] = 1;\n          puVar22 = (uint *)(uint)bVar2;\n          puVar49 = puVar46 + -0x90;\n        }\n        else if (puVar30 < &DAT_00000011) {\n          FUN_000216e8();\n          pcVar44 = *(code **)(puVar47 + -0xf0);\n          puVar49 = puVar46 + -0x90;\n        }\n        else if (puVar30 < &DAT_00000021) {\n          uVar18 = (uint)puVar30 >> 1;\n          uVar37 = (int)puVar9 - uVar18;\n          FUN_000216e8();\n          iVar6 = *(int *)(puVar47 + -0xf0);\n          uVar7 = (int)puVar30 - uVar18;\n          if (uVar37 < 0x23) {\n            puVar50 = (undefined1 *)puVar16[1];\n            if ((int)puVar50 < (int)*puVar16) {\n              puVar8 = (uint *)puVar16[2];\n            }\n            else {\n              puVar8 = (uint *)(**(code **)(iVar6 + -0x7a80))(puVar16,puVar50 + 1);\n              iVar6 = *(int *)(puVar47 + -0xf0);\n            }\n            iVar29 = *(int *)(iVar6 + -0x7e20);\n            iVar24 = *(int *)(iVar6 + -0x7fd4) + 0x35b4;\n            uVar37 = (**(code **)(iVar6 + -0x7f9c))\n                               (puVar8,puVar8,puVar50,\n                                *(int *)((((int)puVar9 - (int)puVar30) - 2U) * 4 + iVar24) *\n                                *(int *)(*(int *)(iVar6 + -0x7b38) + uVar37 * 4) *\n                                *(int *)((uVar7 - 2) * 4 + iVar24) <<\n                                (((uint)*(byte *)(iVar29 + (uVar37 >> 1) + -1) -\n                                 (uint)*(byte *)(iVar29 + (uVar7 >> 1) + -1)) -\n                                 (uint)*(byte *)(iVar29 + ((uint)((int)puVar9 - (int)puVar30) >> 1)\n                                                + -1) & 0x1f));\n            iVar6 = *(int *)(puVar47 + -0xf0);\n            puVar30 = (uint *)(puVar50 + (uVar37 != 0));\n            puVar8[(int)puVar50] = uVar37;\n          }\n          else {\n            *(undefined4 *)(puVar47 + -0xe4) = 0x15;\n            *(undefined1 **)(puVar47 + -0xdc) = puVar47 + -0xd8;\n            FUN_000216e8(puVar47 + -0xe4,uVar37,uVar7);\n            (**(code **)(*(int *)(puVar47 + -0xf0) + -0x7ba8))(puVar16,puVar16,puVar47 + -0xe4);\n            iVar6 = *(int *)(puVar47 + -0xf0);\n            puVar8 = (uint *)puVar16[2];\n            puVar30 = (uint *)puVar16[1];\n          }\n          pcVar51 = *(code **)(iVar6 + -0x7bb4);\n          puVar38 = (uint *)((uint)*(byte *)((uVar7 - 8) + *(int *)(iVar6 + -0x7fd4) + 0x3550) -\n                            (uint)(uVar18 != uVar7));\n          *(undefined4 *)(puVar47 + -0xf8) =\n               *(undefined4 *)((uVar7 - 8) * 4 + *(int *)(iVar6 + -0x7fd4) + 0x355c);\n          *(uint **)(puVar47 + -0xf4) = puVar38;\n          puVar31 = puVar8;\n          puVar20 = puVar8;\n          puVar22 = puVar30;\n          (*pcVar51)();\n          pcVar44 = *(code **)(puVar47 + -0xf0);\n          if (puVar8[(int)((int)puVar30 + -1)] == 0) {\n            puVar9 = puVar8 + (int)puVar30;\n            do {\n              puVar1 = puVar9 + -2;\n              puVar30 = (uint *)((int)puVar30 + -1);\n              puVar9 = puVar9 + -1;\n            } while (*puVar1 == 0);\n          }\n          puVar16[1] = (uint)puVar30;\n          puVar49 = puVar50;\n        }\n        else if ((puVar30 < (uint *)0x3e8) || (puVar30 <= (uint *)((uint)puVar9 >> 4))) {\n          FUN_0002209c();\n          pcVar44 = *(code **)(puVar47 + -0xf0);\n          puVar49 = puVar46 + -0x90;\n        }\n        else {\n          FUN_000219dc();\n          pcVar44 = *(code **)(puVar47 + -0xf0);\n          puVar49 = puVar46 + -0x90;\n        }\n      }" else (compound_statement "{\n        puVar30 = puVar22;\n        if ((uint *)((int)puVar9 - (int)puVar22) <= puVar22) {\n          puVar30 = (uint *)((int)puVar9 - (int)puVar22);\n        }\n        puVar22 = puVar30;\n        puVar36 = puVar9;\n        if (puVar30 < (uint *)0x2) {\n          if (puVar30 == (uint *)0x0) {\n            puVar36 = (uint *)0x1;\n          }\n          *(uint **)puVar16[2] = puVar36;\n          puVar16[1] = 1;\n          puVar49 = puVar46 + -0x90;\n        }\n        else if (puVar9 < (uint *)0x23) {\n          puVar13 = (undefined1 *)((int)puVar30 + -2);\n          iVar6 = *(int *)(pcVar51 + 0x7aa7c);\n          puVar20 = (uint *)puVar16[2];\n          uVar18 = (int)puVar9 - (int)puVar30;\n          puVar36 = (uint *)(iVar6 + ((uint)puVar9 >> 1));\n          puVar30 = (uint *)(iVar6 + ((uint)puVar30 >> 1));\n          bVar2 = *(byte *)((int)puVar30 + -1);\n          puVar31 = (uint *)(uint)*(byte *)(iVar6 + (uVar18 >> 1) + -1);\n          *puVar20 = *(int *)((int)puVar13 * 4 + *(int *)(pcVar51 + 0x7a8c8) + 0x35b4) *\n                     *(int *)(*(int *)(pcVar51 + 0x7ad64) + (int)puVar9 * 4) *\n                     *(int *)((uVar18 - 2) * 4 + *(int *)(pcVar51 + 0x7a8c8) + 0x35b4) <<\n                     (((uint)*(byte *)((int)puVar36 + -1) - (int)(uint)bVar2) - (int)puVar31 & 0x1f)\n          ;\n          puVar16[1] = 1;\n          puVar22 = (uint *)(uint)bVar2;\n          puVar49 = puVar46 + -0x90;\n        }\n        else if (puVar30 < &DAT_00000011) {\n          FUN_000216e8();\n          pcVar44 = *(code **)(puVar47 + -0xf0);\n          puVar49 = puVar46 + -0x90;\n        }\n        else if (puVar30 < &DAT_00000021) {\n          uVar18 = (uint)puVar30 >> 1;\n          uVar37 = (int)puVar9 - uVar18;\n          FUN_000216e8();\n          iVar6 = *(int *)(puVar47 + -0xf0);\n          uVar7 = (int)puVar30 - uVar18;\n          if (uVar37 < 0x23) {\n            puVar50 = (undefined1 *)puVar16[1];\n            if ((int)puVar50 < (int)*puVar16) {\n              puVar8 = (uint *)puVar16[2];\n            }\n            else {\n              puVar8 = (uint *)(**(code **)(iVar6 + -0x7a80))(puVar16,puVar50 + 1);\n              iVar6 = *(int *)(puVar47 + -0xf0);\n            }\n            iVar29 = *(int *)(iVar6 + -0x7e20);\n            iVar24 = *(int *)(iVar6 + -0x7fd4) + 0x35b4;\n            uVar37 = (**(code **)(iVar6 + -0x7f9c))\n                               (puVar8,puVar8,puVar50,\n                                *(int *)((((int)puVar9 - (int)puVar30) - 2U) * 4 + iVar24) *\n                                *(int *)(*(int *)(iVar6 + -0x7b38) + uVar37 * 4) *\n                                *(int *)((uVar7 - 2) * 4 + iVar24) <<\n                                (((uint)*(byte *)(iVar29 + (uVar37 >> 1) + -1) -\n                                 (uint)*(byte *)(iVar29 + (uVar7 >> 1) + -1)) -\n                                 (uint)*(byte *)(iVar29 + ((uint)((int)puVar9 - (int)puVar30) >> 1)\n                                                + -1) & 0x1f));\n            iVar6 = *(int *)(puVar47 + -0xf0);\n            puVar30 = (uint *)(puVar50 + (uVar37 != 0));\n            puVar8[(int)puVar50] = uVar37;\n          }\n          else {\n            *(undefined4 *)(puVar47 + -0xe4) = 0x15;\n            *(undefined1 **)(puVar47 + -0xdc) = puVar47 + -0xd8;\n            FUN_000216e8(puVar47 + -0xe4,uVar37,uVar7);\n            (**(code **)(*(int *)(puVar47 + -0xf0) + -0x7ba8))(puVar16,puVar16,puVar47 + -0xe4);\n            iVar6 = *(int *)(puVar47 + -0xf0);\n            puVar8 = (uint *)puVar16[2];\n            puVar30 = (uint *)puVar16[1];\n          }\n          pcVar51 = *(code **)(iVar6 + -0x7bb4);\n          puVar38 = (uint *)((uint)*(byte *)((uVar7 - 8) + *(int *)(iVar6 + -0x7fd4) + 0x3550) -\n                            (uint)(uVar18 != uVar7));\n          *(undefined4 *)(puVar47 + -0xf8) =\n               *(undefined4 *)((uVar7 - 8) * 4 + *(int *)(iVar6 + -0x7fd4) + 0x355c);\n          *(uint **)(puVar47 + -0xf4) = puVar38;\n          puVar31 = puVar8;\n          puVar20 = puVar8;\n          puVar22 = puVar30;\n          (*pcVar51)();\n          pcVar44 = *(code **)(puVar47 + -0xf0);\n          if (puVar8[(int)((int)puVar30 + -1)] == 0) {\n            puVar9 = puVar8 + (int)puVar30;\n            do {\n              puVar1 = puVar9 + -2;\n              puVar30 = (uint *)((int)puVar30 + -1);\n              puVar9 = puVar9 + -1;\n            } while (*puVar1 == 0);\n          }\n          puVar16[1] = (uint)puVar30;\n          puVar49 = puVar50;\n        }\n        else if ((puVar30 < (uint *)0x3e8) || (puVar30 <= (uint *)((uint)puVar9 >> 4))) {\n          FUN_0002209c();\n          pcVar44 = *(code **)(puVar47 + -0xf0);\n          puVar49 = puVar46 + -0x90;\n        }\n        else {\n          FUN_000219dc();\n          pcVar44 = *(code **)(puVar47 + -0xf0);\n          puVar49 = puVar46 + -0x90;\n        }\n      }" { (expression_statement "puVar30 = puVar22;" (assignment_expression "puVar30 = puVar22" identifier = identifier) ;) (if_statement "if ((uint *)((int)puVar9 - (int)puVar22) <= puVar22) {\n          puVar30 = (uint *)((int)puVar9 - (int)puVar22);\n        }" if (parenthesized_expression "((uint *)((int)puVar9 - (int)puVar22) <= puVar22)" ( (binary_expression "(uint *)((int)puVar9 - (int)puVar22) <= puVar22" (cast_expression "(uint *)((int)puVar9 - (int)puVar22)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar9 - (int)puVar22)" ( (binary_expression "(int)puVar9 - (int)puVar22" (cast_expression "(int)puVar9" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)puVar22" ( (type_descriptor "int" primitive_type) ) identifier)) ))) <= identifier) )) (compound_statement "{\n          puVar30 = (uint *)((int)puVar9 - (int)puVar22);\n        }" { (expression_statement "puVar30 = (uint *)((int)puVar9 - (int)puVar22);" (assignment_expression "puVar30 = (uint *)((int)puVar9 - (int)puVar22)" identifier = (cast_expression "(uint *)((int)puVar9 - (int)puVar22)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar9 - (int)puVar22)" ( (binary_expression "(int)puVar9 - (int)puVar22" (cast_expression "(int)puVar9" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)puVar22" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) })) (expression_statement "puVar22 = puVar30;" (assignment_expression "puVar22 = puVar30" identifier = identifier) ;) (expression_statement "puVar36 = puVar9;" (assignment_expression "puVar36 = puVar9" identifier = identifier) ;) (if_statement "if (puVar30 < (uint *)0x2) {\n          if (puVar30 == (uint *)0x0) {\n            puVar36 = (uint *)0x1;\n          }\n          *(uint **)puVar16[2] = puVar36;\n          puVar16[1] = 1;\n          puVar49 = puVar46 + -0x90;\n        }\n        else if (puVar9 < (uint *)0x23) {\n          puVar13 = (undefined1 *)((int)puVar30 + -2);\n          iVar6 = *(int *)(pcVar51 + 0x7aa7c);\n          puVar20 = (uint *)puVar16[2];\n          uVar18 = (int)puVar9 - (int)puVar30;\n          puVar36 = (uint *)(iVar6 + ((uint)puVar9 >> 1));\n          puVar30 = (uint *)(iVar6 + ((uint)puVar30 >> 1));\n          bVar2 = *(byte *)((int)puVar30 + -1);\n          puVar31 = (uint *)(uint)*(byte *)(iVar6 + (uVar18 >> 1) + -1);\n          *puVar20 = *(int *)((int)puVar13 * 4 + *(int *)(pcVar51 + 0x7a8c8) + 0x35b4) *\n                     *(int *)(*(int *)(pcVar51 + 0x7ad64) + (int)puVar9 * 4) *\n                     *(int *)((uVar18 - 2) * 4 + *(int *)(pcVar51 + 0x7a8c8) + 0x35b4) <<\n                     (((uint)*(byte *)((int)puVar36 + -1) - (int)(uint)bVar2) - (int)puVar31 & 0x1f)\n          ;\n          puVar16[1] = 1;\n          puVar22 = (uint *)(uint)bVar2;\n          puVar49 = puVar46 + -0x90;\n        }\n        else if (puVar30 < &DAT_00000011) {\n          FUN_000216e8();\n          pcVar44 = *(code **)(puVar47 + -0xf0);\n          puVar49 = puVar46 + -0x90;\n        }\n        else if (puVar30 < &DAT_00000021) {\n          uVar18 = (uint)puVar30 >> 1;\n          uVar37 = (int)puVar9 - uVar18;\n          FUN_000216e8();\n          iVar6 = *(int *)(puVar47 + -0xf0);\n          uVar7 = (int)puVar30 - uVar18;\n          if (uVar37 < 0x23) {\n            puVar50 = (undefined1 *)puVar16[1];\n            if ((int)puVar50 < (int)*puVar16) {\n              puVar8 = (uint *)puVar16[2];\n            }\n            else {\n              puVar8 = (uint *)(**(code **)(iVar6 + -0x7a80))(puVar16,puVar50 + 1);\n              iVar6 = *(int *)(puVar47 + -0xf0);\n            }\n            iVar29 = *(int *)(iVar6 + -0x7e20);\n            iVar24 = *(int *)(iVar6 + -0x7fd4) + 0x35b4;\n            uVar37 = (**(code **)(iVar6 + -0x7f9c))\n                               (puVar8,puVar8,puVar50,\n                                *(int *)((((int)puVar9 - (int)puVar30) - 2U) * 4 + iVar24) *\n                                *(int *)(*(int *)(iVar6 + -0x7b38) + uVar37 * 4) *\n                                *(int *)((uVar7 - 2) * 4 + iVar24) <<\n                                (((uint)*(byte *)(iVar29 + (uVar37 >> 1) + -1) -\n                                 (uint)*(byte *)(iVar29 + (uVar7 >> 1) + -1)) -\n                                 (uint)*(byte *)(iVar29 + ((uint)((int)puVar9 - (int)puVar30) >> 1)\n                                                + -1) & 0x1f));\n            iVar6 = *(int *)(puVar47 + -0xf0);\n            puVar30 = (uint *)(puVar50 + (uVar37 != 0));\n            puVar8[(int)puVar50] = uVar37;\n          }\n          else {\n            *(undefined4 *)(puVar47 + -0xe4) = 0x15;\n            *(undefined1 **)(puVar47 + -0xdc) = puVar47 + -0xd8;\n            FUN_000216e8(puVar47 + -0xe4,uVar37,uVar7);\n            (**(code **)(*(int *)(puVar47 + -0xf0) + -0x7ba8))(puVar16,puVar16,puVar47 + -0xe4);\n            iVar6 = *(int *)(puVar47 + -0xf0);\n            puVar8 = (uint *)puVar16[2];\n            puVar30 = (uint *)puVar16[1];\n          }\n          pcVar51 = *(code **)(iVar6 + -0x7bb4);\n          puVar38 = (uint *)((uint)*(byte *)((uVar7 - 8) + *(int *)(iVar6 + -0x7fd4) + 0x3550) -\n                            (uint)(uVar18 != uVar7));\n          *(undefined4 *)(puVar47 + -0xf8) =\n               *(undefined4 *)((uVar7 - 8) * 4 + *(int *)(iVar6 + -0x7fd4) + 0x355c);\n          *(uint **)(puVar47 + -0xf4) = puVar38;\n          puVar31 = puVar8;\n          puVar20 = puVar8;\n          puVar22 = puVar30;\n          (*pcVar51)();\n          pcVar44 = *(code **)(puVar47 + -0xf0);\n          if (puVar8[(int)((int)puVar30 + -1)] == 0) {\n            puVar9 = puVar8 + (int)puVar30;\n            do {\n              puVar1 = puVar9 + -2;\n              puVar30 = (uint *)((int)puVar30 + -1);\n              puVar9 = puVar9 + -1;\n            } while (*puVar1 == 0);\n          }\n          puVar16[1] = (uint)puVar30;\n          puVar49 = puVar50;\n        }\n        else if ((puVar30 < (uint *)0x3e8) || (puVar30 <= (uint *)((uint)puVar9 >> 4))) {\n          FUN_0002209c();\n          pcVar44 = *(code **)(puVar47 + -0xf0);\n          puVar49 = puVar46 + -0x90;\n        }\n        else {\n          FUN_000219dc();\n          pcVar44 = *(code **)(puVar47 + -0xf0);\n          puVar49 = puVar46 + -0x90;\n        }" if (parenthesized_expression "(puVar30 < (uint *)0x2)" ( (binary_expression "puVar30 < (uint *)0x2" identifier < (cast_expression "(uint *)0x2" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          if (puVar30 == (uint *)0x0) {\n            puVar36 = (uint *)0x1;\n          }\n          *(uint **)puVar16[2] = puVar36;\n          puVar16[1] = 1;\n          puVar49 = puVar46 + -0x90;\n        }" { (if_statement "if (puVar30 == (uint *)0x0) {\n            puVar36 = (uint *)0x1;\n          }" if (parenthesized_expression "(puVar30 == (uint *)0x0)" ( (binary_expression "puVar30 == (uint *)0x0" identifier == (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n            puVar36 = (uint *)0x1;\n          }" { (expression_statement "puVar36 = (uint *)0x1;" (assignment_expression "puVar36 = (uint *)0x1" identifier = (cast_expression "(uint *)0x1" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) })) (expression_statement "*(uint **)puVar16[2] = puVar36;" (assignment_expression "*(uint **)puVar16[2] = puVar36" (pointer_expression "*(uint **)puVar16[2]" * (cast_expression "(uint **)puVar16[2]" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (subscript_expression "puVar16[2]" identifier [ number_literal ]))) = identifier) ;) (expression_statement "puVar16[1] = 1;" (assignment_expression "puVar16[1] = 1" (subscript_expression "puVar16[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar49 = puVar46 + -0x90;" (assignment_expression "puVar49 = puVar46 + -0x90" identifier = (binary_expression "puVar46 + -0x90" identifier + number_literal)) ;) }) (else_clause "else if (puVar9 < (uint *)0x23) {\n          puVar13 = (undefined1 *)((int)puVar30 + -2);\n          iVar6 = *(int *)(pcVar51 + 0x7aa7c);\n          puVar20 = (uint *)puVar16[2];\n          uVar18 = (int)puVar9 - (int)puVar30;\n          puVar36 = (uint *)(iVar6 + ((uint)puVar9 >> 1));\n          puVar30 = (uint *)(iVar6 + ((uint)puVar30 >> 1));\n          bVar2 = *(byte *)((int)puVar30 + -1);\n          puVar31 = (uint *)(uint)*(byte *)(iVar6 + (uVar18 >> 1) + -1);\n          *puVar20 = *(int *)((int)puVar13 * 4 + *(int *)(pcVar51 + 0x7a8c8) + 0x35b4) *\n                     *(int *)(*(int *)(pcVar51 + 0x7ad64) + (int)puVar9 * 4) *\n                     *(int *)((uVar18 - 2) * 4 + *(int *)(pcVar51 + 0x7a8c8) + 0x35b4) <<\n                     (((uint)*(byte *)((int)puVar36 + -1) - (int)(uint)bVar2) - (int)puVar31 & 0x1f)\n          ;\n          puVar16[1] = 1;\n          puVar22 = (uint *)(uint)bVar2;\n          puVar49 = puVar46 + -0x90;\n        }\n        else if (puVar30 < &DAT_00000011) {\n          FUN_000216e8();\n          pcVar44 = *(code **)(puVar47 + -0xf0);\n          puVar49 = puVar46 + -0x90;\n        }\n        else if (puVar30 < &DAT_00000021) {\n          uVar18 = (uint)puVar30 >> 1;\n          uVar37 = (int)puVar9 - uVar18;\n          FUN_000216e8();\n          iVar6 = *(int *)(puVar47 + -0xf0);\n          uVar7 = (int)puVar30 - uVar18;\n          if (uVar37 < 0x23) {\n            puVar50 = (undefined1 *)puVar16[1];\n            if ((int)puVar50 < (int)*puVar16) {\n              puVar8 = (uint *)puVar16[2];\n            }\n            else {\n              puVar8 = (uint *)(**(code **)(iVar6 + -0x7a80))(puVar16,puVar50 + 1);\n              iVar6 = *(int *)(puVar47 + -0xf0);\n            }\n            iVar29 = *(int *)(iVar6 + -0x7e20);\n            iVar24 = *(int *)(iVar6 + -0x7fd4) + 0x35b4;\n            uVar37 = (**(code **)(iVar6 + -0x7f9c))\n                               (puVar8,puVar8,puVar50,\n                                *(int *)((((int)puVar9 - (int)puVar30) - 2U) * 4 + iVar24) *\n                                *(int *)(*(int *)(iVar6 + -0x7b38) + uVar37 * 4) *\n                                *(int *)((uVar7 - 2) * 4 + iVar24) <<\n                                (((uint)*(byte *)(iVar29 + (uVar37 >> 1) + -1) -\n                                 (uint)*(byte *)(iVar29 + (uVar7 >> 1) + -1)) -\n                                 (uint)*(byte *)(iVar29 + ((uint)((int)puVar9 - (int)puVar30) >> 1)\n                                                + -1) & 0x1f));\n            iVar6 = *(int *)(puVar47 + -0xf0);\n            puVar30 = (uint *)(puVar50 + (uVar37 != 0));\n            puVar8[(int)puVar50] = uVar37;\n          }\n          else {\n            *(undefined4 *)(puVar47 + -0xe4) = 0x15;\n            *(undefined1 **)(puVar47 + -0xdc) = puVar47 + -0xd8;\n            FUN_000216e8(puVar47 + -0xe4,uVar37,uVar7);\n            (**(code **)(*(int *)(puVar47 + -0xf0) + -0x7ba8))(puVar16,puVar16,puVar47 + -0xe4);\n            iVar6 = *(int *)(puVar47 + -0xf0);\n            puVar8 = (uint *)puVar16[2];\n            puVar30 = (uint *)puVar16[1];\n          }\n          pcVar51 = *(code **)(iVar6 + -0x7bb4);\n          puVar38 = (uint *)((uint)*(byte *)((uVar7 - 8) + *(int *)(iVar6 + -0x7fd4) + 0x3550) -\n                            (uint)(uVar18 != uVar7));\n          *(undefined4 *)(puVar47 + -0xf8) =\n               *(undefined4 *)((uVar7 - 8) * 4 + *(int *)(iVar6 + -0x7fd4) + 0x355c);\n          *(uint **)(puVar47 + -0xf4) = puVar38;\n          puVar31 = puVar8;\n          puVar20 = puVar8;\n          puVar22 = puVar30;\n          (*pcVar51)();\n          pcVar44 = *(code **)(puVar47 + -0xf0);\n          if (puVar8[(int)((int)puVar30 + -1)] == 0) {\n            puVar9 = puVar8 + (int)puVar30;\n            do {\n              puVar1 = puVar9 + -2;\n              puVar30 = (uint *)((int)puVar30 + -1);\n              puVar9 = puVar9 + -1;\n            } while (*puVar1 == 0);\n          }\n          puVar16[1] = (uint)puVar30;\n          puVar49 = puVar50;\n        }\n        else if ((puVar30 < (uint *)0x3e8) || (puVar30 <= (uint *)((uint)puVar9 >> 4))) {\n          FUN_0002209c();\n          pcVar44 = *(code **)(puVar47 + -0xf0);\n          puVar49 = puVar46 + -0x90;\n        }\n        else {\n          FUN_000219dc();\n          pcVar44 = *(code **)(puVar47 + -0xf0);\n          puVar49 = puVar46 + -0x90;\n        }" else (if_statement "if (puVar9 < (uint *)0x23) {\n          puVar13 = (undefined1 *)((int)puVar30 + -2);\n          iVar6 = *(int *)(pcVar51 + 0x7aa7c);\n          puVar20 = (uint *)puVar16[2];\n          uVar18 = (int)puVar9 - (int)puVar30;\n          puVar36 = (uint *)(iVar6 + ((uint)puVar9 >> 1));\n          puVar30 = (uint *)(iVar6 + ((uint)puVar30 >> 1));\n          bVar2 = *(byte *)((int)puVar30 + -1);\n          puVar31 = (uint *)(uint)*(byte *)(iVar6 + (uVar18 >> 1) + -1);\n          *puVar20 = *(int *)((int)puVar13 * 4 + *(int *)(pcVar51 + 0x7a8c8) + 0x35b4) *\n                     *(int *)(*(int *)(pcVar51 + 0x7ad64) + (int)puVar9 * 4) *\n                     *(int *)((uVar18 - 2) * 4 + *(int *)(pcVar51 + 0x7a8c8) + 0x35b4) <<\n                     (((uint)*(byte *)((int)puVar36 + -1) - (int)(uint)bVar2) - (int)puVar31 & 0x1f)\n          ;\n          puVar16[1] = 1;\n          puVar22 = (uint *)(uint)bVar2;\n          puVar49 = puVar46 + -0x90;\n        }\n        else if (puVar30 < &DAT_00000011) {\n          FUN_000216e8();\n          pcVar44 = *(code **)(puVar47 + -0xf0);\n          puVar49 = puVar46 + -0x90;\n        }\n        else if (puVar30 < &DAT_00000021) {\n          uVar18 = (uint)puVar30 >> 1;\n          uVar37 = (int)puVar9 - uVar18;\n          FUN_000216e8();\n          iVar6 = *(int *)(puVar47 + -0xf0);\n          uVar7 = (int)puVar30 - uVar18;\n          if (uVar37 < 0x23) {\n            puVar50 = (undefined1 *)puVar16[1];\n            if ((int)puVar50 < (int)*puVar16) {\n              puVar8 = (uint *)puVar16[2];\n            }\n            else {\n              puVar8 = (uint *)(**(code **)(iVar6 + -0x7a80))(puVar16,puVar50 + 1);\n              iVar6 = *(int *)(puVar47 + -0xf0);\n            }\n            iVar29 = *(int *)(iVar6 + -0x7e20);\n            iVar24 = *(int *)(iVar6 + -0x7fd4) + 0x35b4;\n            uVar37 = (**(code **)(iVar6 + -0x7f9c))\n                               (puVar8,puVar8,puVar50,\n                                *(int *)((((int)puVar9 - (int)puVar30) - 2U) * 4 + iVar24) *\n                                *(int *)(*(int *)(iVar6 + -0x7b38) + uVar37 * 4) *\n                                *(int *)((uVar7 - 2) * 4 + iVar24) <<\n                                (((uint)*(byte *)(iVar29 + (uVar37 >> 1) + -1) -\n                                 (uint)*(byte *)(iVar29 + (uVar7 >> 1) + -1)) -\n                                 (uint)*(byte *)(iVar29 + ((uint)((int)puVar9 - (int)puVar30) >> 1)\n                                                + -1) & 0x1f));\n            iVar6 = *(int *)(puVar47 + -0xf0);\n            puVar30 = (uint *)(puVar50 + (uVar37 != 0));\n            puVar8[(int)puVar50] = uVar37;\n          }\n          else {\n            *(undefined4 *)(puVar47 + -0xe4) = 0x15;\n            *(undefined1 **)(puVar47 + -0xdc) = puVar47 + -0xd8;\n            FUN_000216e8(puVar47 + -0xe4,uVar37,uVar7);\n            (**(code **)(*(int *)(puVar47 + -0xf0) + -0x7ba8))(puVar16,puVar16,puVar47 + -0xe4);\n            iVar6 = *(int *)(puVar47 + -0xf0);\n            puVar8 = (uint *)puVar16[2];\n            puVar30 = (uint *)puVar16[1];\n          }\n          pcVar51 = *(code **)(iVar6 + -0x7bb4);\n          puVar38 = (uint *)((uint)*(byte *)((uVar7 - 8) + *(int *)(iVar6 + -0x7fd4) + 0x3550) -\n                            (uint)(uVar18 != uVar7));\n          *(undefined4 *)(puVar47 + -0xf8) =\n               *(undefined4 *)((uVar7 - 8) * 4 + *(int *)(iVar6 + -0x7fd4) + 0x355c);\n          *(uint **)(puVar47 + -0xf4) = puVar38;\n          puVar31 = puVar8;\n          puVar20 = puVar8;\n          puVar22 = puVar30;\n          (*pcVar51)();\n          pcVar44 = *(code **)(puVar47 + -0xf0);\n          if (puVar8[(int)((int)puVar30 + -1)] == 0) {\n            puVar9 = puVar8 + (int)puVar30;\n            do {\n              puVar1 = puVar9 + -2;\n              puVar30 = (uint *)((int)puVar30 + -1);\n              puVar9 = puVar9 + -1;\n            } while (*puVar1 == 0);\n          }\n          puVar16[1] = (uint)puVar30;\n          puVar49 = puVar50;\n        }\n        else if ((puVar30 < (uint *)0x3e8) || (puVar30 <= (uint *)((uint)puVar9 >> 4))) {\n          FUN_0002209c();\n          pcVar44 = *(code **)(puVar47 + -0xf0);\n          puVar49 = puVar46 + -0x90;\n        }\n        else {\n          FUN_000219dc();\n          pcVar44 = *(code **)(puVar47 + -0xf0);\n          puVar49 = puVar46 + -0x90;\n        }" if (parenthesized_expression "(puVar9 < (uint *)0x23)" ( (binary_expression "puVar9 < (uint *)0x23" identifier < (cast_expression "(uint *)0x23" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          puVar13 = (undefined1 *)((int)puVar30 + -2);\n          iVar6 = *(int *)(pcVar51 + 0x7aa7c);\n          puVar20 = (uint *)puVar16[2];\n          uVar18 = (int)puVar9 - (int)puVar30;\n          puVar36 = (uint *)(iVar6 + ((uint)puVar9 >> 1));\n          puVar30 = (uint *)(iVar6 + ((uint)puVar30 >> 1));\n          bVar2 = *(byte *)((int)puVar30 + -1);\n          puVar31 = (uint *)(uint)*(byte *)(iVar6 + (uVar18 >> 1) + -1);\n          *puVar20 = *(int *)((int)puVar13 * 4 + *(int *)(pcVar51 + 0x7a8c8) + 0x35b4) *\n                     *(int *)(*(int *)(pcVar51 + 0x7ad64) + (int)puVar9 * 4) *\n                     *(int *)((uVar18 - 2) * 4 + *(int *)(pcVar51 + 0x7a8c8) + 0x35b4) <<\n                     (((uint)*(byte *)((int)puVar36 + -1) - (int)(uint)bVar2) - (int)puVar31 & 0x1f)\n          ;\n          puVar16[1] = 1;\n          puVar22 = (uint *)(uint)bVar2;\n          puVar49 = puVar46 + -0x90;\n        }" { (expression_statement "puVar13 = (undefined1 *)((int)puVar30 + -2);" (assignment_expression "puVar13 = (undefined1 *)((int)puVar30 + -2)" identifier = (cast_expression "(undefined1 *)((int)puVar30 + -2)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar30 + -2)" ( (binary_expression "(int)puVar30 + -2" (cast_expression "(int)puVar30" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "iVar6 = *(int *)(pcVar51 + 0x7aa7c);" (assignment_expression "iVar6 = *(int *)(pcVar51 + 0x7aa7c)" identifier = (pointer_expression "*(int *)(pcVar51 + 0x7aa7c)" * (cast_expression "(int *)(pcVar51 + 0x7aa7c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar51 + 0x7aa7c)" ( (binary_expression "pcVar51 + 0x7aa7c" identifier + number_literal) ))))) ;) (expression_statement "puVar20 = (uint *)puVar16[2];" (assignment_expression "puVar20 = (uint *)puVar16[2]" identifier = (cast_expression "(uint *)puVar16[2]" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar16[2]" identifier [ number_literal ]))) ;) (expression_statement "uVar18 = (int)puVar9 - (int)puVar30;" (assignment_expression "uVar18 = (int)puVar9 - (int)puVar30" identifier = (binary_expression "(int)puVar9 - (int)puVar30" (cast_expression "(int)puVar9" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)puVar30" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "puVar36 = (uint *)(iVar6 + ((uint)puVar9 >> 1));" (assignment_expression "puVar36 = (uint *)(iVar6 + ((uint)puVar9 >> 1))" identifier = (cast_expression "(uint *)(iVar6 + ((uint)puVar9 >> 1))" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + ((uint)puVar9 >> 1))" ( (binary_expression "iVar6 + ((uint)puVar9 >> 1)" identifier + (parenthesized_expression "((uint)puVar9 >> 1)" ( (binary_expression "(uint)puVar9 >> 1" (cast_expression "(uint)puVar9" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) ))) )))) ;) (expression_statement "puVar30 = (uint *)(iVar6 + ((uint)puVar30 >> 1));" (assignment_expression "puVar30 = (uint *)(iVar6 + ((uint)puVar30 >> 1))" identifier = (cast_expression "(uint *)(iVar6 + ((uint)puVar30 >> 1))" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + ((uint)puVar30 >> 1))" ( (binary_expression "iVar6 + ((uint)puVar30 >> 1)" identifier + (parenthesized_expression "((uint)puVar30 >> 1)" ( (binary_expression "(uint)puVar30 >> 1" (cast_expression "(uint)puVar30" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) ))) )))) ;) (expression_statement "bVar2 = *(byte *)((int)puVar30 + -1);" (assignment_expression "bVar2 = *(byte *)((int)puVar30 + -1)" identifier = (pointer_expression "*(byte *)((int)puVar30 + -1)" * (cast_expression "(byte *)((int)puVar30 + -1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar30 + -1)" ( (binary_expression "(int)puVar30 + -1" (cast_expression "(int)puVar30" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (expression_statement "puVar31 = (uint *)(uint)*(byte *)(iVar6 + (uVar18 >> 1) + -1);" (assignment_expression "puVar31 = (uint *)(uint)*(byte *)(iVar6 + (uVar18 >> 1) + -1)" identifier = (binary_expression "(uint *)(uint)*(byte *)(iVar6 + (uVar18 >> 1) + -1)" (cast_expression "(uint *)(uint)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uint)" ( identifier ))) * (cast_expression "(byte *)(iVar6 + (uVar18 >> 1) + -1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + (uVar18 >> 1) + -1)" ( (binary_expression "iVar6 + (uVar18 >> 1) + -1" (binary_expression "iVar6 + (uVar18 >> 1)" identifier + (parenthesized_expression "(uVar18 >> 1)" ( (binary_expression "uVar18 >> 1" identifier >> number_literal) ))) + number_literal) ))))) ;) (expression_statement "*puVar20 = *(int *)((int)puVar13 * 4 + *(int *)(pcVar51 + 0x7a8c8) + 0x35b4) *\n                     *(int *)(*(int *)(pcVar51 + 0x7ad64) + (int)puVar9 * 4) *\n                     *(int *)((uVar18 - 2) * 4 + *(int *)(pcVar51 + 0x7a8c8) + 0x35b4) <<\n                     (((uint)*(byte *)((int)puVar36 + -1) - (int)(uint)bVar2) - (int)puVar31 & 0x1f)\n          ;" (assignment_expression "*puVar20 = *(int *)((int)puVar13 * 4 + *(int *)(pcVar51 + 0x7a8c8) + 0x35b4) *\n                     *(int *)(*(int *)(pcVar51 + 0x7ad64) + (int)puVar9 * 4) *\n                     *(int *)((uVar18 - 2) * 4 + *(int *)(pcVar51 + 0x7a8c8) + 0x35b4) <<\n                     (((uint)*(byte *)((int)puVar36 + -1) - (int)(uint)bVar2) - (int)puVar31 & 0x1f)" (pointer_expression "*puVar20" * identifier) = (binary_expression "*(int *)((int)puVar13 * 4 + *(int *)(pcVar51 + 0x7a8c8) + 0x35b4) *\n                     *(int *)(*(int *)(pcVar51 + 0x7ad64) + (int)puVar9 * 4) *\n                     *(int *)((uVar18 - 2) * 4 + *(int *)(pcVar51 + 0x7a8c8) + 0x35b4) <<\n                     (((uint)*(byte *)((int)puVar36 + -1) - (int)(uint)bVar2) - (int)puVar31 & 0x1f)" (binary_expression "*(int *)((int)puVar13 * 4 + *(int *)(pcVar51 + 0x7a8c8) + 0x35b4) *\n                     *(int *)(*(int *)(pcVar51 + 0x7ad64) + (int)puVar9 * 4) *\n                     *(int *)((uVar18 - 2) * 4 + *(int *)(pcVar51 + 0x7a8c8) + 0x35b4)" (binary_expression "*(int *)((int)puVar13 * 4 + *(int *)(pcVar51 + 0x7a8c8) + 0x35b4) *\n                     *(int *)(*(int *)(pcVar51 + 0x7ad64) + (int)puVar9 * 4)" (pointer_expression "*(int *)((int)puVar13 * 4 + *(int *)(pcVar51 + 0x7a8c8) + 0x35b4)" * (cast_expression "(int *)((int)puVar13 * 4 + *(int *)(pcVar51 + 0x7a8c8) + 0x35b4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar13 * 4 + *(int *)(pcVar51 + 0x7a8c8) + 0x35b4)" ( (binary_expression "(int)puVar13 * 4 + *(int *)(pcVar51 + 0x7a8c8) + 0x35b4" (binary_expression "(int)puVar13 * 4 + *(int *)(pcVar51 + 0x7a8c8)" (binary_expression "(int)puVar13 * 4" (cast_expression "(int)puVar13" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal) + (pointer_expression "*(int *)(pcVar51 + 0x7a8c8)" * (cast_expression "(int *)(pcVar51 + 0x7a8c8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar51 + 0x7a8c8)" ( (binary_expression "pcVar51 + 0x7a8c8" identifier + number_literal) ))))) + number_literal) )))) * (pointer_expression "*(int *)(*(int *)(pcVar51 + 0x7ad64) + (int)puVar9 * 4)" * (cast_expression "(int *)(*(int *)(pcVar51 + 0x7ad64) + (int)puVar9 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(pcVar51 + 0x7ad64) + (int)puVar9 * 4)" ( (binary_expression "*(int *)(pcVar51 + 0x7ad64) + (int)puVar9 * 4" (pointer_expression "*(int *)(pcVar51 + 0x7ad64)" * (cast_expression "(int *)(pcVar51 + 0x7ad64)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar51 + 0x7ad64)" ( (binary_expression "pcVar51 + 0x7ad64" identifier + number_literal) )))) + (binary_expression "(int)puVar9 * 4" (cast_expression "(int)puVar9" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal)) ))))) * (pointer_expression "*(int *)((uVar18 - 2) * 4 + *(int *)(pcVar51 + 0x7a8c8) + 0x35b4)" * (cast_expression "(int *)((uVar18 - 2) * 4 + *(int *)(pcVar51 + 0x7a8c8) + 0x35b4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((uVar18 - 2) * 4 + *(int *)(pcVar51 + 0x7a8c8) + 0x35b4)" ( (binary_expression "(uVar18 - 2) * 4 + *(int *)(pcVar51 + 0x7a8c8) + 0x35b4" (binary_expression "(uVar18 - 2) * 4 + *(int *)(pcVar51 + 0x7a8c8)" (binary_expression "(uVar18 - 2) * 4" (parenthesized_expression "(uVar18 - 2)" ( (binary_expression "uVar18 - 2" identifier - number_literal) )) * number_literal) + (pointer_expression "*(int *)(pcVar51 + 0x7a8c8)" * (cast_expression "(int *)(pcVar51 + 0x7a8c8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar51 + 0x7a8c8)" ( (binary_expression "pcVar51 + 0x7a8c8" identifier + number_literal) ))))) + number_literal) ))))) << (parenthesized_expression "(((uint)*(byte *)((int)puVar36 + -1) - (int)(uint)bVar2) - (int)puVar31 & 0x1f)" ( (binary_expression "((uint)*(byte *)((int)puVar36 + -1) - (int)(uint)bVar2) - (int)puVar31 & 0x1f" (binary_expression "((uint)*(byte *)((int)puVar36 + -1) - (int)(uint)bVar2) - (int)puVar31" (parenthesized_expression "((uint)*(byte *)((int)puVar36 + -1) - (int)(uint)bVar2)" ( (binary_expression "(uint)*(byte *)((int)puVar36 + -1) - (int)(uint)bVar2" (binary_expression "(uint)*(byte *)((int)puVar36 + -1)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)((int)puVar36 + -1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar36 + -1)" ( (binary_expression "(int)puVar36 + -1" (cast_expression "(int)puVar36" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) - (cast_expression "(int)(uint)bVar2" ( (type_descriptor "int" primitive_type) ) (cast_expression "(uint)bVar2" ( (type_descriptor "uint" type_identifier) ) identifier))) )) - (cast_expression "(int)puVar31" ( (type_descriptor "int" primitive_type) ) identifier)) & number_literal) )))) ;) (expression_statement "puVar16[1] = 1;" (assignment_expression "puVar16[1] = 1" (subscript_expression "puVar16[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar22 = (uint *)(uint)bVar2;" (assignment_expression "puVar22 = (uint *)(uint)bVar2" identifier = (cast_expression "(uint *)(uint)bVar2" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (cast_expression "(uint)bVar2" ( (type_descriptor "uint" type_identifier) ) identifier))) ;) (expression_statement "puVar49 = puVar46 + -0x90;" (assignment_expression "puVar49 = puVar46 + -0x90" identifier = (binary_expression "puVar46 + -0x90" identifier + number_literal)) ;) }) (else_clause "else if (puVar30 < &DAT_00000011) {\n          FUN_000216e8();\n          pcVar44 = *(code **)(puVar47 + -0xf0);\n          puVar49 = puVar46 + -0x90;\n        }\n        else if (puVar30 < &DAT_00000021) {\n          uVar18 = (uint)puVar30 >> 1;\n          uVar37 = (int)puVar9 - uVar18;\n          FUN_000216e8();\n          iVar6 = *(int *)(puVar47 + -0xf0);\n          uVar7 = (int)puVar30 - uVar18;\n          if (uVar37 < 0x23) {\n            puVar50 = (undefined1 *)puVar16[1];\n            if ((int)puVar50 < (int)*puVar16) {\n              puVar8 = (uint *)puVar16[2];\n            }\n            else {\n              puVar8 = (uint *)(**(code **)(iVar6 + -0x7a80))(puVar16,puVar50 + 1);\n              iVar6 = *(int *)(puVar47 + -0xf0);\n            }\n            iVar29 = *(int *)(iVar6 + -0x7e20);\n            iVar24 = *(int *)(iVar6 + -0x7fd4) + 0x35b4;\n            uVar37 = (**(code **)(iVar6 + -0x7f9c))\n                               (puVar8,puVar8,puVar50,\n                                *(int *)((((int)puVar9 - (int)puVar30) - 2U) * 4 + iVar24) *\n                                *(int *)(*(int *)(iVar6 + -0x7b38) + uVar37 * 4) *\n                                *(int *)((uVar7 - 2) * 4 + iVar24) <<\n                                (((uint)*(byte *)(iVar29 + (uVar37 >> 1) + -1) -\n                                 (uint)*(byte *)(iVar29 + (uVar7 >> 1) + -1)) -\n                                 (uint)*(byte *)(iVar29 + ((uint)((int)puVar9 - (int)puVar30) >> 1)\n                                                + -1) & 0x1f));\n            iVar6 = *(int *)(puVar47 + -0xf0);\n            puVar30 = (uint *)(puVar50 + (uVar37 != 0));\n            puVar8[(int)puVar50] = uVar37;\n          }\n          else {\n            *(undefined4 *)(puVar47 + -0xe4) = 0x15;\n            *(undefined1 **)(puVar47 + -0xdc) = puVar47 + -0xd8;\n            FUN_000216e8(puVar47 + -0xe4,uVar37,uVar7);\n            (**(code **)(*(int *)(puVar47 + -0xf0) + -0x7ba8))(puVar16,puVar16,puVar47 + -0xe4);\n            iVar6 = *(int *)(puVar47 + -0xf0);\n            puVar8 = (uint *)puVar16[2];\n            puVar30 = (uint *)puVar16[1];\n          }\n          pcVar51 = *(code **)(iVar6 + -0x7bb4);\n          puVar38 = (uint *)((uint)*(byte *)((uVar7 - 8) + *(int *)(iVar6 + -0x7fd4) + 0x3550) -\n                            (uint)(uVar18 != uVar7));\n          *(undefined4 *)(puVar47 + -0xf8) =\n               *(undefined4 *)((uVar7 - 8) * 4 + *(int *)(iVar6 + -0x7fd4) + 0x355c);\n          *(uint **)(puVar47 + -0xf4) = puVar38;\n          puVar31 = puVar8;\n          puVar20 = puVar8;\n          puVar22 = puVar30;\n          (*pcVar51)();\n          pcVar44 = *(code **)(puVar47 + -0xf0);\n          if (puVar8[(int)((int)puVar30 + -1)] == 0) {\n            puVar9 = puVar8 + (int)puVar30;\n            do {\n              puVar1 = puVar9 + -2;\n              puVar30 = (uint *)((int)puVar30 + -1);\n              puVar9 = puVar9 + -1;\n            } while (*puVar1 == 0);\n          }\n          puVar16[1] = (uint)puVar30;\n          puVar49 = puVar50;\n        }\n        else if ((puVar30 < (uint *)0x3e8) || (puVar30 <= (uint *)((uint)puVar9 >> 4))) {\n          FUN_0002209c();\n          pcVar44 = *(code **)(puVar47 + -0xf0);\n          puVar49 = puVar46 + -0x90;\n        }\n        else {\n          FUN_000219dc();\n          pcVar44 = *(code **)(puVar47 + -0xf0);\n          puVar49 = puVar46 + -0x90;\n        }" else (if_statement "if (puVar30 < &DAT_00000011) {\n          FUN_000216e8();\n          pcVar44 = *(code **)(puVar47 + -0xf0);\n          puVar49 = puVar46 + -0x90;\n        }\n        else if (puVar30 < &DAT_00000021) {\n          uVar18 = (uint)puVar30 >> 1;\n          uVar37 = (int)puVar9 - uVar18;\n          FUN_000216e8();\n          iVar6 = *(int *)(puVar47 + -0xf0);\n          uVar7 = (int)puVar30 - uVar18;\n          if (uVar37 < 0x23) {\n            puVar50 = (undefined1 *)puVar16[1];\n            if ((int)puVar50 < (int)*puVar16) {\n              puVar8 = (uint *)puVar16[2];\n            }\n            else {\n              puVar8 = (uint *)(**(code **)(iVar6 + -0x7a80))(puVar16,puVar50 + 1);\n              iVar6 = *(int *)(puVar47 + -0xf0);\n            }\n            iVar29 = *(int *)(iVar6 + -0x7e20);\n            iVar24 = *(int *)(iVar6 + -0x7fd4) + 0x35b4;\n            uVar37 = (**(code **)(iVar6 + -0x7f9c))\n                               (puVar8,puVar8,puVar50,\n                                *(int *)((((int)puVar9 - (int)puVar30) - 2U) * 4 + iVar24) *\n                                *(int *)(*(int *)(iVar6 + -0x7b38) + uVar37 * 4) *\n                                *(int *)((uVar7 - 2) * 4 + iVar24) <<\n                                (((uint)*(byte *)(iVar29 + (uVar37 >> 1) + -1) -\n                                 (uint)*(byte *)(iVar29 + (uVar7 >> 1) + -1)) -\n                                 (uint)*(byte *)(iVar29 + ((uint)((int)puVar9 - (int)puVar30) >> 1)\n                                                + -1) & 0x1f));\n            iVar6 = *(int *)(puVar47 + -0xf0);\n            puVar30 = (uint *)(puVar50 + (uVar37 != 0));\n            puVar8[(int)puVar50] = uVar37;\n          }\n          else {\n            *(undefined4 *)(puVar47 + -0xe4) = 0x15;\n            *(undefined1 **)(puVar47 + -0xdc) = puVar47 + -0xd8;\n            FUN_000216e8(puVar47 + -0xe4,uVar37,uVar7);\n            (**(code **)(*(int *)(puVar47 + -0xf0) + -0x7ba8))(puVar16,puVar16,puVar47 + -0xe4);\n            iVar6 = *(int *)(puVar47 + -0xf0);\n            puVar8 = (uint *)puVar16[2];\n            puVar30 = (uint *)puVar16[1];\n          }\n          pcVar51 = *(code **)(iVar6 + -0x7bb4);\n          puVar38 = (uint *)((uint)*(byte *)((uVar7 - 8) + *(int *)(iVar6 + -0x7fd4) + 0x3550) -\n                            (uint)(uVar18 != uVar7));\n          *(undefined4 *)(puVar47 + -0xf8) =\n               *(undefined4 *)((uVar7 - 8) * 4 + *(int *)(iVar6 + -0x7fd4) + 0x355c);\n          *(uint **)(puVar47 + -0xf4) = puVar38;\n          puVar31 = puVar8;\n          puVar20 = puVar8;\n          puVar22 = puVar30;\n          (*pcVar51)();\n          pcVar44 = *(code **)(puVar47 + -0xf0);\n          if (puVar8[(int)((int)puVar30 + -1)] == 0) {\n            puVar9 = puVar8 + (int)puVar30;\n            do {\n              puVar1 = puVar9 + -2;\n              puVar30 = (uint *)((int)puVar30 + -1);\n              puVar9 = puVar9 + -1;\n            } while (*puVar1 == 0);\n          }\n          puVar16[1] = (uint)puVar30;\n          puVar49 = puVar50;\n        }\n        else if ((puVar30 < (uint *)0x3e8) || (puVar30 <= (uint *)((uint)puVar9 >> 4))) {\n          FUN_0002209c();\n          pcVar44 = *(code **)(puVar47 + -0xf0);\n          puVar49 = puVar46 + -0x90;\n        }\n        else {\n          FUN_000219dc();\n          pcVar44 = *(code **)(puVar47 + -0xf0);\n          puVar49 = puVar46 + -0x90;\n        }" if (parenthesized_expression "(puVar30 < &DAT_00000011)" ( (binary_expression "puVar30 < &DAT_00000011" identifier < (pointer_expression "&DAT_00000011" & identifier)) )) (compound_statement "{\n          FUN_000216e8();\n          pcVar44 = *(code **)(puVar47 + -0xf0);\n          puVar49 = puVar46 + -0x90;\n        }" { (expression_statement "FUN_000216e8();" (call_expression "FUN_000216e8()" identifier (argument_list "()" ( ))) ;) (expression_statement "pcVar44 = *(code **)(puVar47 + -0xf0);" (assignment_expression "pcVar44 = *(code **)(puVar47 + -0xf0)" identifier = (pointer_expression "*(code **)(puVar47 + -0xf0)" * (cast_expression "(code **)(puVar47 + -0xf0)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar47 + -0xf0)" ( (binary_expression "puVar47 + -0xf0" identifier + number_literal) ))))) ;) (expression_statement "puVar49 = puVar46 + -0x90;" (assignment_expression "puVar49 = puVar46 + -0x90" identifier = (binary_expression "puVar46 + -0x90" identifier + number_literal)) ;) }) (else_clause "else if (puVar30 < &DAT_00000021) {\n          uVar18 = (uint)puVar30 >> 1;\n          uVar37 = (int)puVar9 - uVar18;\n          FUN_000216e8();\n          iVar6 = *(int *)(puVar47 + -0xf0);\n          uVar7 = (int)puVar30 - uVar18;\n          if (uVar37 < 0x23) {\n            puVar50 = (undefined1 *)puVar16[1];\n            if ((int)puVar50 < (int)*puVar16) {\n              puVar8 = (uint *)puVar16[2];\n            }\n            else {\n              puVar8 = (uint *)(**(code **)(iVar6 + -0x7a80))(puVar16,puVar50 + 1);\n              iVar6 = *(int *)(puVar47 + -0xf0);\n            }\n            iVar29 = *(int *)(iVar6 + -0x7e20);\n            iVar24 = *(int *)(iVar6 + -0x7fd4) + 0x35b4;\n            uVar37 = (**(code **)(iVar6 + -0x7f9c))\n                               (puVar8,puVar8,puVar50,\n                                *(int *)((((int)puVar9 - (int)puVar30) - 2U) * 4 + iVar24) *\n                                *(int *)(*(int *)(iVar6 + -0x7b38) + uVar37 * 4) *\n                                *(int *)((uVar7 - 2) * 4 + iVar24) <<\n                                (((uint)*(byte *)(iVar29 + (uVar37 >> 1) + -1) -\n                                 (uint)*(byte *)(iVar29 + (uVar7 >> 1) + -1)) -\n                                 (uint)*(byte *)(iVar29 + ((uint)((int)puVar9 - (int)puVar30) >> 1)\n                                                + -1) & 0x1f));\n            iVar6 = *(int *)(puVar47 + -0xf0);\n            puVar30 = (uint *)(puVar50 + (uVar37 != 0));\n            puVar8[(int)puVar50] = uVar37;\n          }\n          else {\n            *(undefined4 *)(puVar47 + -0xe4) = 0x15;\n            *(undefined1 **)(puVar47 + -0xdc) = puVar47 + -0xd8;\n            FUN_000216e8(puVar47 + -0xe4,uVar37,uVar7);\n            (**(code **)(*(int *)(puVar47 + -0xf0) + -0x7ba8))(puVar16,puVar16,puVar47 + -0xe4);\n            iVar6 = *(int *)(puVar47 + -0xf0);\n            puVar8 = (uint *)puVar16[2];\n            puVar30 = (uint *)puVar16[1];\n          }\n          pcVar51 = *(code **)(iVar6 + -0x7bb4);\n          puVar38 = (uint *)((uint)*(byte *)((uVar7 - 8) + *(int *)(iVar6 + -0x7fd4) + 0x3550) -\n                            (uint)(uVar18 != uVar7));\n          *(undefined4 *)(puVar47 + -0xf8) =\n               *(undefined4 *)((uVar7 - 8) * 4 + *(int *)(iVar6 + -0x7fd4) + 0x355c);\n          *(uint **)(puVar47 + -0xf4) = puVar38;\n          puVar31 = puVar8;\n          puVar20 = puVar8;\n          puVar22 = puVar30;\n          (*pcVar51)();\n          pcVar44 = *(code **)(puVar47 + -0xf0);\n          if (puVar8[(int)((int)puVar30 + -1)] == 0) {\n            puVar9 = puVar8 + (int)puVar30;\n            do {\n              puVar1 = puVar9 + -2;\n              puVar30 = (uint *)((int)puVar30 + -1);\n              puVar9 = puVar9 + -1;\n            } while (*puVar1 == 0);\n          }\n          puVar16[1] = (uint)puVar30;\n          puVar49 = puVar50;\n        }\n        else if ((puVar30 < (uint *)0x3e8) || (puVar30 <= (uint *)((uint)puVar9 >> 4))) {\n          FUN_0002209c();\n          pcVar44 = *(code **)(puVar47 + -0xf0);\n          puVar49 = puVar46 + -0x90;\n        }\n        else {\n          FUN_000219dc();\n          pcVar44 = *(code **)(puVar47 + -0xf0);\n          puVar49 = puVar46 + -0x90;\n        }" else (if_statement "if (puVar30 < &DAT_00000021) {\n          uVar18 = (uint)puVar30 >> 1;\n          uVar37 = (int)puVar9 - uVar18;\n          FUN_000216e8();\n          iVar6 = *(int *)(puVar47 + -0xf0);\n          uVar7 = (int)puVar30 - uVar18;\n          if (uVar37 < 0x23) {\n            puVar50 = (undefined1 *)puVar16[1];\n            if ((int)puVar50 < (int)*puVar16) {\n              puVar8 = (uint *)puVar16[2];\n            }\n            else {\n              puVar8 = (uint *)(**(code **)(iVar6 + -0x7a80))(puVar16,puVar50 + 1);\n              iVar6 = *(int *)(puVar47 + -0xf0);\n            }\n            iVar29 = *(int *)(iVar6 + -0x7e20);\n            iVar24 = *(int *)(iVar6 + -0x7fd4) + 0x35b4;\n            uVar37 = (**(code **)(iVar6 + -0x7f9c))\n                               (puVar8,puVar8,puVar50,\n                                *(int *)((((int)puVar9 - (int)puVar30) - 2U) * 4 + iVar24) *\n                                *(int *)(*(int *)(iVar6 + -0x7b38) + uVar37 * 4) *\n                                *(int *)((uVar7 - 2) * 4 + iVar24) <<\n                                (((uint)*(byte *)(iVar29 + (uVar37 >> 1) + -1) -\n                                 (uint)*(byte *)(iVar29 + (uVar7 >> 1) + -1)) -\n                                 (uint)*(byte *)(iVar29 + ((uint)((int)puVar9 - (int)puVar30) >> 1)\n                                                + -1) & 0x1f));\n            iVar6 = *(int *)(puVar47 + -0xf0);\n            puVar30 = (uint *)(puVar50 + (uVar37 != 0));\n            puVar8[(int)puVar50] = uVar37;\n          }\n          else {\n            *(undefined4 *)(puVar47 + -0xe4) = 0x15;\n            *(undefined1 **)(puVar47 + -0xdc) = puVar47 + -0xd8;\n            FUN_000216e8(puVar47 + -0xe4,uVar37,uVar7);\n            (**(code **)(*(int *)(puVar47 + -0xf0) + -0x7ba8))(puVar16,puVar16,puVar47 + -0xe4);\n            iVar6 = *(int *)(puVar47 + -0xf0);\n            puVar8 = (uint *)puVar16[2];\n            puVar30 = (uint *)puVar16[1];\n          }\n          pcVar51 = *(code **)(iVar6 + -0x7bb4);\n          puVar38 = (uint *)((uint)*(byte *)((uVar7 - 8) + *(int *)(iVar6 + -0x7fd4) + 0x3550) -\n                            (uint)(uVar18 != uVar7));\n          *(undefined4 *)(puVar47 + -0xf8) =\n               *(undefined4 *)((uVar7 - 8) * 4 + *(int *)(iVar6 + -0x7fd4) + 0x355c);\n          *(uint **)(puVar47 + -0xf4) = puVar38;\n          puVar31 = puVar8;\n          puVar20 = puVar8;\n          puVar22 = puVar30;\n          (*pcVar51)();\n          pcVar44 = *(code **)(puVar47 + -0xf0);\n          if (puVar8[(int)((int)puVar30 + -1)] == 0) {\n            puVar9 = puVar8 + (int)puVar30;\n            do {\n              puVar1 = puVar9 + -2;\n              puVar30 = (uint *)((int)puVar30 + -1);\n              puVar9 = puVar9 + -1;\n            } while (*puVar1 == 0);\n          }\n          puVar16[1] = (uint)puVar30;\n          puVar49 = puVar50;\n        }\n        else if ((puVar30 < (uint *)0x3e8) || (puVar30 <= (uint *)((uint)puVar9 >> 4))) {\n          FUN_0002209c();\n          pcVar44 = *(code **)(puVar47 + -0xf0);\n          puVar49 = puVar46 + -0x90;\n        }\n        else {\n          FUN_000219dc();\n          pcVar44 = *(code **)(puVar47 + -0xf0);\n          puVar49 = puVar46 + -0x90;\n        }" if (parenthesized_expression "(puVar30 < &DAT_00000021)" ( (binary_expression "puVar30 < &DAT_00000021" identifier < (pointer_expression "&DAT_00000021" & identifier)) )) (compound_statement "{\n          uVar18 = (uint)puVar30 >> 1;\n          uVar37 = (int)puVar9 - uVar18;\n          FUN_000216e8();\n          iVar6 = *(int *)(puVar47 + -0xf0);\n          uVar7 = (int)puVar30 - uVar18;\n          if (uVar37 < 0x23) {\n            puVar50 = (undefined1 *)puVar16[1];\n            if ((int)puVar50 < (int)*puVar16) {\n              puVar8 = (uint *)puVar16[2];\n            }\n            else {\n              puVar8 = (uint *)(**(code **)(iVar6 + -0x7a80))(puVar16,puVar50 + 1);\n              iVar6 = *(int *)(puVar47 + -0xf0);\n            }\n            iVar29 = *(int *)(iVar6 + -0x7e20);\n            iVar24 = *(int *)(iVar6 + -0x7fd4) + 0x35b4;\n            uVar37 = (**(code **)(iVar6 + -0x7f9c))\n                               (puVar8,puVar8,puVar50,\n                                *(int *)((((int)puVar9 - (int)puVar30) - 2U) * 4 + iVar24) *\n                                *(int *)(*(int *)(iVar6 + -0x7b38) + uVar37 * 4) *\n                                *(int *)((uVar7 - 2) * 4 + iVar24) <<\n                                (((uint)*(byte *)(iVar29 + (uVar37 >> 1) + -1) -\n                                 (uint)*(byte *)(iVar29 + (uVar7 >> 1) + -1)) -\n                                 (uint)*(byte *)(iVar29 + ((uint)((int)puVar9 - (int)puVar30) >> 1)\n                                                + -1) & 0x1f));\n            iVar6 = *(int *)(puVar47 + -0xf0);\n            puVar30 = (uint *)(puVar50 + (uVar37 != 0));\n            puVar8[(int)puVar50] = uVar37;\n          }\n          else {\n            *(undefined4 *)(puVar47 + -0xe4) = 0x15;\n            *(undefined1 **)(puVar47 + -0xdc) = puVar47 + -0xd8;\n            FUN_000216e8(puVar47 + -0xe4,uVar37,uVar7);\n            (**(code **)(*(int *)(puVar47 + -0xf0) + -0x7ba8))(puVar16,puVar16,puVar47 + -0xe4);\n            iVar6 = *(int *)(puVar47 + -0xf0);\n            puVar8 = (uint *)puVar16[2];\n            puVar30 = (uint *)puVar16[1];\n          }\n          pcVar51 = *(code **)(iVar6 + -0x7bb4);\n          puVar38 = (uint *)((uint)*(byte *)((uVar7 - 8) + *(int *)(iVar6 + -0x7fd4) + 0x3550) -\n                            (uint)(uVar18 != uVar7));\n          *(undefined4 *)(puVar47 + -0xf8) =\n               *(undefined4 *)((uVar7 - 8) * 4 + *(int *)(iVar6 + -0x7fd4) + 0x355c);\n          *(uint **)(puVar47 + -0xf4) = puVar38;\n          puVar31 = puVar8;\n          puVar20 = puVar8;\n          puVar22 = puVar30;\n          (*pcVar51)();\n          pcVar44 = *(code **)(puVar47 + -0xf0);\n          if (puVar8[(int)((int)puVar30 + -1)] == 0) {\n            puVar9 = puVar8 + (int)puVar30;\n            do {\n              puVar1 = puVar9 + -2;\n              puVar30 = (uint *)((int)puVar30 + -1);\n              puVar9 = puVar9 + -1;\n            } while (*puVar1 == 0);\n          }\n          puVar16[1] = (uint)puVar30;\n          puVar49 = puVar50;\n        }" { (expression_statement "uVar18 = (uint)puVar30 >> 1;" (assignment_expression "uVar18 = (uint)puVar30 >> 1" identifier = (binary_expression "(uint)puVar30 >> 1" (cast_expression "(uint)puVar30" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal)) ;) (expression_statement "uVar37 = (int)puVar9 - uVar18;" (assignment_expression "uVar37 = (int)puVar9 - uVar18" identifier = (binary_expression "(int)puVar9 - uVar18" (cast_expression "(int)puVar9" ( (type_descriptor "int" primitive_type) ) identifier) - identifier)) ;) (expression_statement "FUN_000216e8();" (call_expression "FUN_000216e8()" identifier (argument_list "()" ( ))) ;) (expression_statement "iVar6 = *(int *)(puVar47 + -0xf0);" (assignment_expression "iVar6 = *(int *)(puVar47 + -0xf0)" identifier = (pointer_expression "*(int *)(puVar47 + -0xf0)" * (cast_expression "(int *)(puVar47 + -0xf0)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar47 + -0xf0)" ( (binary_expression "puVar47 + -0xf0" identifier + number_literal) ))))) ;) (expression_statement "uVar7 = (int)puVar30 - uVar18;" (assignment_expression "uVar7 = (int)puVar30 - uVar18" identifier = (binary_expression "(int)puVar30 - uVar18" (cast_expression "(int)puVar30" ( (type_descriptor "int" primitive_type) ) identifier) - identifier)) ;) (if_statement "if (uVar37 < 0x23) {\n            puVar50 = (undefined1 *)puVar16[1];\n            if ((int)puVar50 < (int)*puVar16) {\n              puVar8 = (uint *)puVar16[2];\n            }\n            else {\n              puVar8 = (uint *)(**(code **)(iVar6 + -0x7a80))(puVar16,puVar50 + 1);\n              iVar6 = *(int *)(puVar47 + -0xf0);\n            }\n            iVar29 = *(int *)(iVar6 + -0x7e20);\n            iVar24 = *(int *)(iVar6 + -0x7fd4) + 0x35b4;\n            uVar37 = (**(code **)(iVar6 + -0x7f9c))\n                               (puVar8,puVar8,puVar50,\n                                *(int *)((((int)puVar9 - (int)puVar30) - 2U) * 4 + iVar24) *\n                                *(int *)(*(int *)(iVar6 + -0x7b38) + uVar37 * 4) *\n                                *(int *)((uVar7 - 2) * 4 + iVar24) <<\n                                (((uint)*(byte *)(iVar29 + (uVar37 >> 1) + -1) -\n                                 (uint)*(byte *)(iVar29 + (uVar7 >> 1) + -1)) -\n                                 (uint)*(byte *)(iVar29 + ((uint)((int)puVar9 - (int)puVar30) >> 1)\n                                                + -1) & 0x1f));\n            iVar6 = *(int *)(puVar47 + -0xf0);\n            puVar30 = (uint *)(puVar50 + (uVar37 != 0));\n            puVar8[(int)puVar50] = uVar37;\n          }\n          else {\n            *(undefined4 *)(puVar47 + -0xe4) = 0x15;\n            *(undefined1 **)(puVar47 + -0xdc) = puVar47 + -0xd8;\n            FUN_000216e8(puVar47 + -0xe4,uVar37,uVar7);\n            (**(code **)(*(int *)(puVar47 + -0xf0) + -0x7ba8))(puVar16,puVar16,puVar47 + -0xe4);\n            iVar6 = *(int *)(puVar47 + -0xf0);\n            puVar8 = (uint *)puVar16[2];\n            puVar30 = (uint *)puVar16[1];\n          }" if (parenthesized_expression "(uVar37 < 0x23)" ( (binary_expression "uVar37 < 0x23" identifier < number_literal) )) (compound_statement "{\n            puVar50 = (undefined1 *)puVar16[1];\n            if ((int)puVar50 < (int)*puVar16) {\n              puVar8 = (uint *)puVar16[2];\n            }\n            else {\n              puVar8 = (uint *)(**(code **)(iVar6 + -0x7a80))(puVar16,puVar50 + 1);\n              iVar6 = *(int *)(puVar47 + -0xf0);\n            }\n            iVar29 = *(int *)(iVar6 + -0x7e20);\n            iVar24 = *(int *)(iVar6 + -0x7fd4) + 0x35b4;\n            uVar37 = (**(code **)(iVar6 + -0x7f9c))\n                               (puVar8,puVar8,puVar50,\n                                *(int *)((((int)puVar9 - (int)puVar30) - 2U) * 4 + iVar24) *\n                                *(int *)(*(int *)(iVar6 + -0x7b38) + uVar37 * 4) *\n                                *(int *)((uVar7 - 2) * 4 + iVar24) <<\n                                (((uint)*(byte *)(iVar29 + (uVar37 >> 1) + -1) -\n                                 (uint)*(byte *)(iVar29 + (uVar7 >> 1) + -1)) -\n                                 (uint)*(byte *)(iVar29 + ((uint)((int)puVar9 - (int)puVar30) >> 1)\n                                                + -1) & 0x1f));\n            iVar6 = *(int *)(puVar47 + -0xf0);\n            puVar30 = (uint *)(puVar50 + (uVar37 != 0));\n            puVar8[(int)puVar50] = uVar37;\n          }" { (expression_statement "puVar50 = (undefined1 *)puVar16[1];" (assignment_expression "puVar50 = (undefined1 *)puVar16[1]" identifier = (cast_expression "(undefined1 *)puVar16[1]" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar16[1]" identifier [ number_literal ]))) ;) (if_statement "if ((int)puVar50 < (int)*puVar16) {\n              puVar8 = (uint *)puVar16[2];\n            }\n            else {\n              puVar8 = (uint *)(**(code **)(iVar6 + -0x7a80))(puVar16,puVar50 + 1);\n              iVar6 = *(int *)(puVar47 + -0xf0);\n            }" if (parenthesized_expression "((int)puVar50 < (int)*puVar16)" ( (binary_expression "(int)puVar50 < (int)*puVar16" (cast_expression "(int)puVar50" ( (type_descriptor "int" primitive_type) ) identifier) < (cast_expression "(int)*puVar16" ( (type_descriptor "int" primitive_type) ) (pointer_expression "*puVar16" * identifier))) )) (compound_statement "{\n              puVar8 = (uint *)puVar16[2];\n            }" { (expression_statement "puVar8 = (uint *)puVar16[2];" (assignment_expression "puVar8 = (uint *)puVar16[2]" identifier = (cast_expression "(uint *)puVar16[2]" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar16[2]" identifier [ number_literal ]))) ;) }) (else_clause "else {\n              puVar8 = (uint *)(**(code **)(iVar6 + -0x7a80))(puVar16,puVar50 + 1);\n              iVar6 = *(int *)(puVar47 + -0xf0);\n            }" else (compound_statement "{\n              puVar8 = (uint *)(**(code **)(iVar6 + -0x7a80))(puVar16,puVar50 + 1);\n              iVar6 = *(int *)(puVar47 + -0xf0);\n            }" { (expression_statement "puVar8 = (uint *)(**(code **)(iVar6 + -0x7a80))(puVar16,puVar50 + 1);" (assignment_expression "puVar8 = (uint *)(**(code **)(iVar6 + -0x7a80))(puVar16,puVar50 + 1)" identifier = (cast_expression "(uint *)(**(code **)(iVar6 + -0x7a80))(puVar16,puVar50 + 1)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(**(code **)(iVar6 + -0x7a80))(puVar16,puVar50 + 1)" (parenthesized_expression "(**(code **)(iVar6 + -0x7a80))" ( (pointer_expression "**(code **)(iVar6 + -0x7a80)" * (pointer_expression "*(code **)(iVar6 + -0x7a80)" * (cast_expression "(code **)(iVar6 + -0x7a80)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar6 + -0x7a80)" ( (binary_expression "iVar6 + -0x7a80" identifier + number_literal) ))))) )) (argument_list "(puVar16,puVar50 + 1)" ( identifier , (binary_expression "puVar50 + 1" identifier + number_literal) ))))) ;) (expression_statement "iVar6 = *(int *)(puVar47 + -0xf0);" (assignment_expression "iVar6 = *(int *)(puVar47 + -0xf0)" identifier = (pointer_expression "*(int *)(puVar47 + -0xf0)" * (cast_expression "(int *)(puVar47 + -0xf0)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar47 + -0xf0)" ( (binary_expression "puVar47 + -0xf0" identifier + number_literal) ))))) ;) }))) (expression_statement "iVar29 = *(int *)(iVar6 + -0x7e20);" (assignment_expression "iVar29 = *(int *)(iVar6 + -0x7e20)" identifier = (pointer_expression "*(int *)(iVar6 + -0x7e20)" * (cast_expression "(int *)(iVar6 + -0x7e20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + -0x7e20)" ( (binary_expression "iVar6 + -0x7e20" identifier + number_literal) ))))) ;) (expression_statement "iVar24 = *(int *)(iVar6 + -0x7fd4) + 0x35b4;" (assignment_expression "iVar24 = *(int *)(iVar6 + -0x7fd4) + 0x35b4" identifier = (binary_expression "*(int *)(iVar6 + -0x7fd4) + 0x35b4" (pointer_expression "*(int *)(iVar6 + -0x7fd4)" * (cast_expression "(int *)(iVar6 + -0x7fd4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + -0x7fd4)" ( (binary_expression "iVar6 + -0x7fd4" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "uVar37 = (**(code **)(iVar6 + -0x7f9c))\n                               (puVar8,puVar8,puVar50,\n                                *(int *)((((int)puVar9 - (int)puVar30) - 2U) * 4 + iVar24) *\n                                *(int *)(*(int *)(iVar6 + -0x7b38) + uVar37 * 4) *\n                                *(int *)((uVar7 - 2) * 4 + iVar24) <<\n                                (((uint)*(byte *)(iVar29 + (uVar37 >> 1) + -1) -\n                                 (uint)*(byte *)(iVar29 + (uVar7 >> 1) + -1)) -\n                                 (uint)*(byte *)(iVar29 + ((uint)((int)puVar9 - (int)puVar30) >> 1)\n                                                + -1) & 0x1f));" (assignment_expression "uVar37 = (**(code **)(iVar6 + -0x7f9c))\n                               (puVar8,puVar8,puVar50,\n                                *(int *)((((int)puVar9 - (int)puVar30) - 2U) * 4 + iVar24) *\n                                *(int *)(*(int *)(iVar6 + -0x7b38) + uVar37 * 4) *\n                                *(int *)((uVar7 - 2) * 4 + iVar24) <<\n                                (((uint)*(byte *)(iVar29 + (uVar37 >> 1) + -1) -\n                                 (uint)*(byte *)(iVar29 + (uVar7 >> 1) + -1)) -\n                                 (uint)*(byte *)(iVar29 + ((uint)((int)puVar9 - (int)puVar30) >> 1)\n                                                + -1) & 0x1f))" identifier = (call_expression "(**(code **)(iVar6 + -0x7f9c))\n                               (puVar8,puVar8,puVar50,\n                                *(int *)((((int)puVar9 - (int)puVar30) - 2U) * 4 + iVar24) *\n                                *(int *)(*(int *)(iVar6 + -0x7b38) + uVar37 * 4) *\n                                *(int *)((uVar7 - 2) * 4 + iVar24) <<\n                                (((uint)*(byte *)(iVar29 + (uVar37 >> 1) + -1) -\n                                 (uint)*(byte *)(iVar29 + (uVar7 >> 1) + -1)) -\n                                 (uint)*(byte *)(iVar29 + ((uint)((int)puVar9 - (int)puVar30) >> 1)\n                                                + -1) & 0x1f))" (parenthesized_expression "(**(code **)(iVar6 + -0x7f9c))" ( (pointer_expression "**(code **)(iVar6 + -0x7f9c)" * (pointer_expression "*(code **)(iVar6 + -0x7f9c)" * (cast_expression "(code **)(iVar6 + -0x7f9c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar6 + -0x7f9c)" ( (binary_expression "iVar6 + -0x7f9c" identifier + number_literal) ))))) )) (argument_list "(puVar8,puVar8,puVar50,\n                                *(int *)((((int)puVar9 - (int)puVar30) - 2U) * 4 + iVar24) *\n                                *(int *)(*(int *)(iVar6 + -0x7b38) + uVar37 * 4) *\n                                *(int *)((uVar7 - 2) * 4 + iVar24) <<\n                                (((uint)*(byte *)(iVar29 + (uVar37 >> 1) + -1) -\n                                 (uint)*(byte *)(iVar29 + (uVar7 >> 1) + -1)) -\n                                 (uint)*(byte *)(iVar29 + ((uint)((int)puVar9 - (int)puVar30) >> 1)\n                                                + -1) & 0x1f))" ( identifier , identifier , identifier , (binary_expression "*(int *)((((int)puVar9 - (int)puVar30) - 2U) * 4 + iVar24) *\n                                *(int *)(*(int *)(iVar6 + -0x7b38) + uVar37 * 4) *\n                                *(int *)((uVar7 - 2) * 4 + iVar24) <<\n                                (((uint)*(byte *)(iVar29 + (uVar37 >> 1) + -1) -\n                                 (uint)*(byte *)(iVar29 + (uVar7 >> 1) + -1)) -\n                                 (uint)*(byte *)(iVar29 + ((uint)((int)puVar9 - (int)puVar30) >> 1)\n                                                + -1) & 0x1f)" (binary_expression "*(int *)((((int)puVar9 - (int)puVar30) - 2U) * 4 + iVar24) *\n                                *(int *)(*(int *)(iVar6 + -0x7b38) + uVar37 * 4) *\n                                *(int *)((uVar7 - 2) * 4 + iVar24)" (binary_expression "*(int *)((((int)puVar9 - (int)puVar30) - 2U) * 4 + iVar24) *\n                                *(int *)(*(int *)(iVar6 + -0x7b38) + uVar37 * 4)" (pointer_expression "*(int *)((((int)puVar9 - (int)puVar30) - 2U) * 4 + iVar24)" * (cast_expression "(int *)((((int)puVar9 - (int)puVar30) - 2U) * 4 + iVar24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((((int)puVar9 - (int)puVar30) - 2U) * 4 + iVar24)" ( (binary_expression "(((int)puVar9 - (int)puVar30) - 2U) * 4 + iVar24" (binary_expression "(((int)puVar9 - (int)puVar30) - 2U) * 4" (parenthesized_expression "(((int)puVar9 - (int)puVar30) - 2U)" ( (binary_expression "((int)puVar9 - (int)puVar30) - 2U" (parenthesized_expression "((int)puVar9 - (int)puVar30)" ( (binary_expression "(int)puVar9 - (int)puVar30" (cast_expression "(int)puVar9" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)puVar30" ( (type_descriptor "int" primitive_type) ) identifier)) )) - number_literal) )) * number_literal) + identifier) )))) * (pointer_expression "*(int *)(*(int *)(iVar6 + -0x7b38) + uVar37 * 4)" * (cast_expression "(int *)(*(int *)(iVar6 + -0x7b38) + uVar37 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(iVar6 + -0x7b38) + uVar37 * 4)" ( (binary_expression "*(int *)(iVar6 + -0x7b38) + uVar37 * 4" (pointer_expression "*(int *)(iVar6 + -0x7b38)" * (cast_expression "(int *)(iVar6 + -0x7b38)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + -0x7b38)" ( (binary_expression "iVar6 + -0x7b38" identifier + number_literal) )))) + (binary_expression "uVar37 * 4" identifier * number_literal)) ))))) * (pointer_expression "*(int *)((uVar7 - 2) * 4 + iVar24)" * (cast_expression "(int *)((uVar7 - 2) * 4 + iVar24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((uVar7 - 2) * 4 + iVar24)" ( (binary_expression "(uVar7 - 2) * 4 + iVar24" (binary_expression "(uVar7 - 2) * 4" (parenthesized_expression "(uVar7 - 2)" ( (binary_expression "uVar7 - 2" identifier - number_literal) )) * number_literal) + identifier) ))))) << (parenthesized_expression "(((uint)*(byte *)(iVar29 + (uVar37 >> 1) + -1) -\n                                 (uint)*(byte *)(iVar29 + (uVar7 >> 1) + -1)) -\n                                 (uint)*(byte *)(iVar29 + ((uint)((int)puVar9 - (int)puVar30) >> 1)\n                                                + -1) & 0x1f)" ( (binary_expression "((uint)*(byte *)(iVar29 + (uVar37 >> 1) + -1) -\n                                 (uint)*(byte *)(iVar29 + (uVar7 >> 1) + -1)) -\n                                 (uint)*(byte *)(iVar29 + ((uint)((int)puVar9 - (int)puVar30) >> 1)\n                                                + -1) & 0x1f" (binary_expression "((uint)*(byte *)(iVar29 + (uVar37 >> 1) + -1) -\n                                 (uint)*(byte *)(iVar29 + (uVar7 >> 1) + -1)) -\n                                 (uint)*(byte *)(iVar29 + ((uint)((int)puVar9 - (int)puVar30) >> 1)\n                                                + -1)" (parenthesized_expression "((uint)*(byte *)(iVar29 + (uVar37 >> 1) + -1) -\n                                 (uint)*(byte *)(iVar29 + (uVar7 >> 1) + -1))" ( (binary_expression "(uint)*(byte *)(iVar29 + (uVar37 >> 1) + -1) -\n                                 (uint)*(byte *)(iVar29 + (uVar7 >> 1) + -1)" (binary_expression "(uint)*(byte *)(iVar29 + (uVar37 >> 1) + -1)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)(iVar29 + (uVar37 >> 1) + -1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar29 + (uVar37 >> 1) + -1)" ( (binary_expression "iVar29 + (uVar37 >> 1) + -1" (binary_expression "iVar29 + (uVar37 >> 1)" identifier + (parenthesized_expression "(uVar37 >> 1)" ( (binary_expression "uVar37 >> 1" identifier >> number_literal) ))) + number_literal) )))) - (binary_expression "(uint)*(byte *)(iVar29 + (uVar7 >> 1) + -1)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)(iVar29 + (uVar7 >> 1) + -1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar29 + (uVar7 >> 1) + -1)" ( (binary_expression "iVar29 + (uVar7 >> 1) + -1" (binary_expression "iVar29 + (uVar7 >> 1)" identifier + (parenthesized_expression "(uVar7 >> 1)" ( (binary_expression "uVar7 >> 1" identifier >> number_literal) ))) + number_literal) ))))) )) - (binary_expression "(uint)*(byte *)(iVar29 + ((uint)((int)puVar9 - (int)puVar30) >> 1)\n                                                + -1)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)(iVar29 + ((uint)((int)puVar9 - (int)puVar30) >> 1)\n                                                + -1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar29 + ((uint)((int)puVar9 - (int)puVar30) >> 1)\n                                                + -1)" ( (binary_expression "iVar29 + ((uint)((int)puVar9 - (int)puVar30) >> 1)\n                                                + -1" (binary_expression "iVar29 + ((uint)((int)puVar9 - (int)puVar30) >> 1)" identifier + (parenthesized_expression "((uint)((int)puVar9 - (int)puVar30) >> 1)" ( (binary_expression "(uint)((int)puVar9 - (int)puVar30) >> 1" (call_expression "(uint)((int)puVar9 - (int)puVar30)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((int)puVar9 - (int)puVar30)" ( (binary_expression "(int)puVar9 - (int)puVar30" (cast_expression "(int)puVar9" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)puVar30" ( (type_descriptor "int" primitive_type) ) identifier)) ))) >> number_literal) ))) + number_literal) ))))) & number_literal) ))) )))) ;) (expression_statement "iVar6 = *(int *)(puVar47 + -0xf0);" (assignment_expression "iVar6 = *(int *)(puVar47 + -0xf0)" identifier = (pointer_expression "*(int *)(puVar47 + -0xf0)" * (cast_expression "(int *)(puVar47 + -0xf0)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar47 + -0xf0)" ( (binary_expression "puVar47 + -0xf0" identifier + number_literal) ))))) ;) (expression_statement "puVar30 = (uint *)(puVar50 + (uVar37 != 0));" (assignment_expression "puVar30 = (uint *)(puVar50 + (uVar37 != 0))" identifier = (cast_expression "(uint *)(puVar50 + (uVar37 != 0))" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar50 + (uVar37 != 0))" ( (binary_expression "puVar50 + (uVar37 != 0)" identifier + (parenthesized_expression "(uVar37 != 0)" ( (binary_expression "uVar37 != 0" identifier != number_literal) ))) )))) ;) (expression_statement "puVar8[(int)puVar50] = uVar37;" (assignment_expression "puVar8[(int)puVar50] = uVar37" (subscript_expression "puVar8[(int)puVar50]" identifier [ (cast_expression "(int)puVar50" ( (type_descriptor "int" primitive_type) ) identifier) ]) = identifier) ;) }) (else_clause "else {\n            *(undefined4 *)(puVar47 + -0xe4) = 0x15;\n            *(undefined1 **)(puVar47 + -0xdc) = puVar47 + -0xd8;\n            FUN_000216e8(puVar47 + -0xe4,uVar37,uVar7);\n            (**(code **)(*(int *)(puVar47 + -0xf0) + -0x7ba8))(puVar16,puVar16,puVar47 + -0xe4);\n            iVar6 = *(int *)(puVar47 + -0xf0);\n            puVar8 = (uint *)puVar16[2];\n            puVar30 = (uint *)puVar16[1];\n          }" else (compound_statement "{\n            *(undefined4 *)(puVar47 + -0xe4) = 0x15;\n            *(undefined1 **)(puVar47 + -0xdc) = puVar47 + -0xd8;\n            FUN_000216e8(puVar47 + -0xe4,uVar37,uVar7);\n            (**(code **)(*(int *)(puVar47 + -0xf0) + -0x7ba8))(puVar16,puVar16,puVar47 + -0xe4);\n            iVar6 = *(int *)(puVar47 + -0xf0);\n            puVar8 = (uint *)puVar16[2];\n            puVar30 = (uint *)puVar16[1];\n          }" { (expression_statement "*(undefined4 *)(puVar47 + -0xe4) = 0x15;" (assignment_expression "*(undefined4 *)(puVar47 + -0xe4) = 0x15" (pointer_expression "*(undefined4 *)(puVar47 + -0xe4)" * (cast_expression "(undefined4 *)(puVar47 + -0xe4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar47 + -0xe4)" ( (binary_expression "puVar47 + -0xe4" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined1 **)(puVar47 + -0xdc) = puVar47 + -0xd8;" (assignment_expression "*(undefined1 **)(puVar47 + -0xdc) = puVar47 + -0xd8" (pointer_expression "*(undefined1 **)(puVar47 + -0xdc)" * (cast_expression "(undefined1 **)(puVar47 + -0xdc)" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar47 + -0xdc)" ( (binary_expression "puVar47 + -0xdc" identifier + number_literal) )))) = (binary_expression "puVar47 + -0xd8" identifier + number_literal)) ;) (expression_statement "FUN_000216e8(puVar47 + -0xe4,uVar37,uVar7);" (call_expression "FUN_000216e8(puVar47 + -0xe4,uVar37,uVar7)" identifier (argument_list "(puVar47 + -0xe4,uVar37,uVar7)" ( (binary_expression "puVar47 + -0xe4" identifier + number_literal) , identifier , identifier ))) ;) (expression_statement "(**(code **)(*(int *)(puVar47 + -0xf0) + -0x7ba8))(puVar16,puVar16,puVar47 + -0xe4);" (call_expression "(**(code **)(*(int *)(puVar47 + -0xf0) + -0x7ba8))(puVar16,puVar16,puVar47 + -0xe4)" (parenthesized_expression "(**(code **)(*(int *)(puVar47 + -0xf0) + -0x7ba8))" ( (pointer_expression "**(code **)(*(int *)(puVar47 + -0xf0) + -0x7ba8)" * (pointer_expression "*(code **)(*(int *)(puVar47 + -0xf0) + -0x7ba8)" * (cast_expression "(code **)(*(int *)(puVar47 + -0xf0) + -0x7ba8)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)(puVar47 + -0xf0) + -0x7ba8)" ( (binary_expression "*(int *)(puVar47 + -0xf0) + -0x7ba8" (pointer_expression "*(int *)(puVar47 + -0xf0)" * (cast_expression "(int *)(puVar47 + -0xf0)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar47 + -0xf0)" ( (binary_expression "puVar47 + -0xf0" identifier + number_literal) )))) + number_literal) ))))) )) (argument_list "(puVar16,puVar16,puVar47 + -0xe4)" ( identifier , identifier , (binary_expression "puVar47 + -0xe4" identifier + number_literal) ))) ;) (expression_statement "iVar6 = *(int *)(puVar47 + -0xf0);" (assignment_expression "iVar6 = *(int *)(puVar47 + -0xf0)" identifier = (pointer_expression "*(int *)(puVar47 + -0xf0)" * (cast_expression "(int *)(puVar47 + -0xf0)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar47 + -0xf0)" ( (binary_expression "puVar47 + -0xf0" identifier + number_literal) ))))) ;) (expression_statement "puVar8 = (uint *)puVar16[2];" (assignment_expression "puVar8 = (uint *)puVar16[2]" identifier = (cast_expression "(uint *)puVar16[2]" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar16[2]" identifier [ number_literal ]))) ;) (expression_statement "puVar30 = (uint *)puVar16[1];" (assignment_expression "puVar30 = (uint *)puVar16[1]" identifier = (cast_expression "(uint *)puVar16[1]" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar16[1]" identifier [ number_literal ]))) ;) }))) (expression_statement "pcVar51 = *(code **)(iVar6 + -0x7bb4);" (assignment_expression "pcVar51 = *(code **)(iVar6 + -0x7bb4)" identifier = (pointer_expression "*(code **)(iVar6 + -0x7bb4)" * (cast_expression "(code **)(iVar6 + -0x7bb4)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar6 + -0x7bb4)" ( (binary_expression "iVar6 + -0x7bb4" identifier + number_literal) ))))) ;) (expression_statement "puVar38 = (uint *)((uint)*(byte *)((uVar7 - 8) + *(int *)(iVar6 + -0x7fd4) + 0x3550) -\n                            (uint)(uVar18 != uVar7));" (assignment_expression "puVar38 = (uint *)((uint)*(byte *)((uVar7 - 8) + *(int *)(iVar6 + -0x7fd4) + 0x3550) -\n                            (uint)(uVar18 != uVar7))" identifier = (cast_expression "(uint *)((uint)*(byte *)((uVar7 - 8) + *(int *)(iVar6 + -0x7fd4) + 0x3550) -\n                            (uint)(uVar18 != uVar7))" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((uint)*(byte *)((uVar7 - 8) + *(int *)(iVar6 + -0x7fd4) + 0x3550) -\n                            (uint)(uVar18 != uVar7))" ( (binary_expression "(uint)*(byte *)((uVar7 - 8) + *(int *)(iVar6 + -0x7fd4) + 0x3550) -\n                            (uint)(uVar18 != uVar7)" (binary_expression "(uint)*(byte *)((uVar7 - 8) + *(int *)(iVar6 + -0x7fd4) + 0x3550)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)((uVar7 - 8) + *(int *)(iVar6 + -0x7fd4) + 0x3550)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((uVar7 - 8) + *(int *)(iVar6 + -0x7fd4) + 0x3550)" ( (binary_expression "(uVar7 - 8) + *(int *)(iVar6 + -0x7fd4) + 0x3550" (binary_expression "(uVar7 - 8) + *(int *)(iVar6 + -0x7fd4)" (parenthesized_expression "(uVar7 - 8)" ( (binary_expression "uVar7 - 8" identifier - number_literal) )) + (pointer_expression "*(int *)(iVar6 + -0x7fd4)" * (cast_expression "(int *)(iVar6 + -0x7fd4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + -0x7fd4)" ( (binary_expression "iVar6 + -0x7fd4" identifier + number_literal) ))))) + number_literal) )))) - (call_expression "(uint)(uVar18 != uVar7)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar18 != uVar7)" ( (binary_expression "uVar18 != uVar7" identifier != identifier) )))) )))) ;) (expression_statement "*(undefined4 *)(puVar47 + -0xf8) =\n               *(undefined4 *)((uVar7 - 8) * 4 + *(int *)(iVar6 + -0x7fd4) + 0x355c);" (assignment_expression "*(undefined4 *)(puVar47 + -0xf8) =\n               *(undefined4 *)((uVar7 - 8) * 4 + *(int *)(iVar6 + -0x7fd4) + 0x355c)" (pointer_expression "*(undefined4 *)(puVar47 + -0xf8)" * (cast_expression "(undefined4 *)(puVar47 + -0xf8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar47 + -0xf8)" ( (binary_expression "puVar47 + -0xf8" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)((uVar7 - 8) * 4 + *(int *)(iVar6 + -0x7fd4) + 0x355c)" * (cast_expression "(undefined4 *)((uVar7 - 8) * 4 + *(int *)(iVar6 + -0x7fd4) + 0x355c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((uVar7 - 8) * 4 + *(int *)(iVar6 + -0x7fd4) + 0x355c)" ( (binary_expression "(uVar7 - 8) * 4 + *(int *)(iVar6 + -0x7fd4) + 0x355c" (binary_expression "(uVar7 - 8) * 4 + *(int *)(iVar6 + -0x7fd4)" (binary_expression "(uVar7 - 8) * 4" (parenthesized_expression "(uVar7 - 8)" ( (binary_expression "uVar7 - 8" identifier - number_literal) )) * number_literal) + (pointer_expression "*(int *)(iVar6 + -0x7fd4)" * (cast_expression "(int *)(iVar6 + -0x7fd4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + -0x7fd4)" ( (binary_expression "iVar6 + -0x7fd4" identifier + number_literal) ))))) + number_literal) ))))) ;) (expression_statement "*(uint **)(puVar47 + -0xf4) = puVar38;" (assignment_expression "*(uint **)(puVar47 + -0xf4) = puVar38" (pointer_expression "*(uint **)(puVar47 + -0xf4)" * (cast_expression "(uint **)(puVar47 + -0xf4)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar47 + -0xf4)" ( (binary_expression "puVar47 + -0xf4" identifier + number_literal) )))) = identifier) ;) (expression_statement "puVar31 = puVar8;" (assignment_expression "puVar31 = puVar8" identifier = identifier) ;) (expression_statement "puVar20 = puVar8;" (assignment_expression "puVar20 = puVar8" identifier = identifier) ;) (expression_statement "puVar22 = puVar30;" (assignment_expression "puVar22 = puVar30" identifier = identifier) ;) (expression_statement "(*pcVar51)();" (call_expression "(*pcVar51)()" (parenthesized_expression "(*pcVar51)" ( (pointer_expression "*pcVar51" * identifier) )) (argument_list "()" ( ))) ;) (expression_statement "pcVar44 = *(code **)(puVar47 + -0xf0);" (assignment_expression "pcVar44 = *(code **)(puVar47 + -0xf0)" identifier = (pointer_expression "*(code **)(puVar47 + -0xf0)" * (cast_expression "(code **)(puVar47 + -0xf0)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar47 + -0xf0)" ( (binary_expression "puVar47 + -0xf0" identifier + number_literal) ))))) ;) (if_statement "if (puVar8[(int)((int)puVar30 + -1)] == 0) {\n            puVar9 = puVar8 + (int)puVar30;\n            do {\n              puVar1 = puVar9 + -2;\n              puVar30 = (uint *)((int)puVar30 + -1);\n              puVar9 = puVar9 + -1;\n            } while (*puVar1 == 0);\n          }" if (parenthesized_expression "(puVar8[(int)((int)puVar30 + -1)] == 0)" ( (binary_expression "puVar8[(int)((int)puVar30 + -1)] == 0" (subscript_expression "puVar8[(int)((int)puVar30 + -1)]" identifier [ (cast_expression "(int)((int)puVar30 + -1)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((int)puVar30 + -1)" ( (binary_expression "(int)puVar30 + -1" (cast_expression "(int)puVar30" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))) ]) == number_literal) )) (compound_statement "{\n            puVar9 = puVar8 + (int)puVar30;\n            do {\n              puVar1 = puVar9 + -2;\n              puVar30 = (uint *)((int)puVar30 + -1);\n              puVar9 = puVar9 + -1;\n            } while (*puVar1 == 0);\n          }" { (expression_statement "puVar9 = puVar8 + (int)puVar30;" (assignment_expression "puVar9 = puVar8 + (int)puVar30" identifier = (binary_expression "puVar8 + (int)puVar30" identifier + (cast_expression "(int)puVar30" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (do_statement "do {\n              puVar1 = puVar9 + -2;\n              puVar30 = (uint *)((int)puVar30 + -1);\n              puVar9 = puVar9 + -1;\n            } while (*puVar1 == 0);" do (compound_statement "{\n              puVar1 = puVar9 + -2;\n              puVar30 = (uint *)((int)puVar30 + -1);\n              puVar9 = puVar9 + -1;\n            }" { (expression_statement "puVar1 = puVar9 + -2;" (assignment_expression "puVar1 = puVar9 + -2" identifier = (binary_expression "puVar9 + -2" identifier + number_literal)) ;) (expression_statement "puVar30 = (uint *)((int)puVar30 + -1);" (assignment_expression "puVar30 = (uint *)((int)puVar30 + -1)" identifier = (cast_expression "(uint *)((int)puVar30 + -1)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar30 + -1)" ( (binary_expression "(int)puVar30 + -1" (cast_expression "(int)puVar30" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "puVar9 = puVar9 + -1;" (assignment_expression "puVar9 = puVar9 + -1" identifier = (binary_expression "puVar9 + -1" identifier + number_literal)) ;) }) while (parenthesized_expression "(*puVar1 == 0)" ( (binary_expression "*puVar1 == 0" (pointer_expression "*puVar1" * identifier) == number_literal) )) ;) })) (expression_statement "puVar16[1] = (uint)puVar30;" (assignment_expression "puVar16[1] = (uint)puVar30" (subscript_expression "puVar16[1]" identifier [ number_literal ]) = (cast_expression "(uint)puVar30" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "puVar49 = puVar50;" (assignment_expression "puVar49 = puVar50" identifier = identifier) ;) }) (else_clause "else if ((puVar30 < (uint *)0x3e8) || (puVar30 <= (uint *)((uint)puVar9 >> 4))) {\n          FUN_0002209c();\n          pcVar44 = *(code **)(puVar47 + -0xf0);\n          puVar49 = puVar46 + -0x90;\n        }\n        else {\n          FUN_000219dc();\n          pcVar44 = *(code **)(puVar47 + -0xf0);\n          puVar49 = puVar46 + -0x90;\n        }" else (if_statement "if ((puVar30 < (uint *)0x3e8) || (puVar30 <= (uint *)((uint)puVar9 >> 4))) {\n          FUN_0002209c();\n          pcVar44 = *(code **)(puVar47 + -0xf0);\n          puVar49 = puVar46 + -0x90;\n        }\n        else {\n          FUN_000219dc();\n          pcVar44 = *(code **)(puVar47 + -0xf0);\n          puVar49 = puVar46 + -0x90;\n        }" if (parenthesized_expression "((puVar30 < (uint *)0x3e8) || (puVar30 <= (uint *)((uint)puVar9 >> 4)))" ( (binary_expression "(puVar30 < (uint *)0x3e8) || (puVar30 <= (uint *)((uint)puVar9 >> 4))" (parenthesized_expression "(puVar30 < (uint *)0x3e8)" ( (binary_expression "puVar30 < (uint *)0x3e8" identifier < (cast_expression "(uint *)0x3e8" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) || (parenthesized_expression "(puVar30 <= (uint *)((uint)puVar9 >> 4))" ( (binary_expression "puVar30 <= (uint *)((uint)puVar9 >> 4)" identifier <= (cast_expression "(uint *)((uint)puVar9 >> 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((uint)puVar9 >> 4)" ( (binary_expression "(uint)puVar9 >> 4" (cast_expression "(uint)puVar9" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) )))) ))) )) (compound_statement "{\n          FUN_0002209c();\n          pcVar44 = *(code **)(puVar47 + -0xf0);\n          puVar49 = puVar46 + -0x90;\n        }" { (expression_statement "FUN_0002209c();" (call_expression "FUN_0002209c()" identifier (argument_list "()" ( ))) ;) (expression_statement "pcVar44 = *(code **)(puVar47 + -0xf0);" (assignment_expression "pcVar44 = *(code **)(puVar47 + -0xf0)" identifier = (pointer_expression "*(code **)(puVar47 + -0xf0)" * (cast_expression "(code **)(puVar47 + -0xf0)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar47 + -0xf0)" ( (binary_expression "puVar47 + -0xf0" identifier + number_literal) ))))) ;) (expression_statement "puVar49 = puVar46 + -0x90;" (assignment_expression "puVar49 = puVar46 + -0x90" identifier = (binary_expression "puVar46 + -0x90" identifier + number_literal)) ;) }) (else_clause "else {\n          FUN_000219dc();\n          pcVar44 = *(code **)(puVar47 + -0xf0);\n          puVar49 = puVar46 + -0x90;\n        }" else (compound_statement "{\n          FUN_000219dc();\n          pcVar44 = *(code **)(puVar47 + -0xf0);\n          puVar49 = puVar46 + -0x90;\n        }" { (expression_statement "FUN_000219dc();" (call_expression "FUN_000219dc()" identifier (argument_list "()" ( ))) ;) (expression_statement "pcVar44 = *(code **)(puVar47 + -0xf0);" (assignment_expression "pcVar44 = *(code **)(puVar47 + -0xf0)" identifier = (pointer_expression "*(code **)(puVar47 + -0xf0)" * (cast_expression "(code **)(puVar47 + -0xf0)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar47 + -0xf0)" ( (binary_expression "puVar47 + -0xf0" identifier + number_literal) ))))) ;) (expression_statement "puVar49 = puVar46 + -0x90;" (assignment_expression "puVar49 = puVar46 + -0x90" identifier = (binary_expression "puVar46 + -0x90" identifier + number_literal)) ;) }))))))))))) }))) (if_statement "if (*(int *)(puVar47 + -0x84) == *piVar32) {\n        return *piVar32;\n      }" if (parenthesized_expression "(*(int *)(puVar47 + -0x84) == *piVar32)" ( (binary_expression "*(int *)(puVar47 + -0x84) == *piVar32" (pointer_expression "*(int *)(puVar47 + -0x84)" * (cast_expression "(int *)(puVar47 + -0x84)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar47 + -0x84)" ( (binary_expression "puVar47 + -0x84" identifier + number_literal) )))) == (pointer_expression "*piVar32" * identifier)) )) (compound_statement "{\n        return *piVar32;\n      }" { (return_statement "return *piVar32;" return (pointer_expression "*piVar32" * identifier) ;) })) (expression_statement "pcVar51 = *(code **)(pcVar44 + -0x7b70);" (assignment_expression "pcVar51 = *(code **)(pcVar44 + -0x7b70)" identifier = (pointer_expression "*(code **)(pcVar44 + -0x7b70)" * (cast_expression "(code **)(pcVar44 + -0x7b70)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar44 + -0x7b70)" ( (binary_expression "pcVar44 + -0x7b70" identifier + number_literal) ))))) ;) (expression_statement "uVar10 = 0x22b64;" (assignment_expression "uVar10 = 0x22b64" identifier = number_literal) ;) (expression_statement "(*pcVar51)();" (call_expression "(*pcVar51)()" (parenthesized_expression "(*pcVar51)" ( (pointer_expression "*pcVar51" * identifier) )) (argument_list "()" ( ))) ;) (expression_statement "pcVar44 = pcVar51 + 0x824d0;" (assignment_expression "pcVar44 = pcVar51 + 0x824d0" identifier = (binary_expression "pcVar51 + 0x824d0" identifier + number_literal)) ;) (expression_statement "puVar48 = puVar47 + -0x160;" (assignment_expression "puVar48 = puVar47 + -0x160" identifier = (binary_expression "puVar47 + -0x160" identifier + number_literal)) ;) (expression_statement "*(uint **)(puVar47 + -0x118) = puVar16;" (assignment_expression "*(uint **)(puVar47 + -0x118) = puVar16" (pointer_expression "*(uint **)(puVar47 + -0x118)" * (cast_expression "(uint **)(puVar47 + -0x118)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar47 + -0x118)" ( (binary_expression "puVar47 + -0x118" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(uint **)(puVar47 + -0x124) = puVar30;" (assignment_expression "*(uint **)(puVar47 + -0x124) = puVar30" (pointer_expression "*(uint **)(puVar47 + -0x124)" * (cast_expression "(uint **)(puVar47 + -0x124)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar47 + -0x124)" ( (binary_expression "puVar47 + -0x124" identifier + number_literal) )))) = identifier) ;) (expression_statement "piVar34 = *(int **)(pcVar51 + 0x7a9d0);" (assignment_expression "piVar34 = *(int **)(pcVar51 + 0x7a9d0)" identifier = (pointer_expression "*(int **)(pcVar51 + 0x7a9d0)" * (cast_expression "(int **)(pcVar51 + 0x7a9d0)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar51 + 0x7a9d0)" ( (binary_expression "pcVar51 + 0x7a9d0" identifier + number_literal) ))))) ;) (expression_statement "uVar18 = puVar22[1];" (assignment_expression "uVar18 = puVar22[1]" identifier = (subscript_expression "puVar22[1]" identifier [ number_literal ])) ;) (expression_statement "*(undefined1 **)(puVar47 + -0x110) = puVar49;" (assignment_expression "*(undefined1 **)(puVar47 + -0x110) = puVar49" (pointer_expression "*(undefined1 **)(puVar47 + -0x110)" * (cast_expression "(undefined1 **)(puVar47 + -0x110)" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar47 + -0x110)" ( (binary_expression "puVar47 + -0x110" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(uint **)(puVar47 + -0x114) = puVar36;" (assignment_expression "*(uint **)(puVar47 + -0x114) = puVar36" (pointer_expression "*(uint **)(puVar47 + -0x114)" * (cast_expression "(uint **)(puVar47 + -0x114)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar47 + -0x114)" ( (binary_expression "puVar47 + -0x114" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int **)(puVar47 + -0x11c) = piVar32;" (assignment_expression "*(int **)(puVar47 + -0x11c) = piVar32" (pointer_expression "*(int **)(puVar47 + -0x11c)" * (cast_expression "(int **)(puVar47 + -0x11c)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar47 + -0x11c)" ( (binary_expression "puVar47 + -0x11c" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(uint **)(puVar47 + -0x120) = puVar8;" (assignment_expression "*(uint **)(puVar47 + -0x120) = puVar8" (pointer_expression "*(uint **)(puVar47 + -0x120)" * (cast_expression "(uint **)(puVar47 + -0x120)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar47 + -0x120)" ( (binary_expression "puVar47 + -0x120" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar47 + -0x10c) = uVar10;" (assignment_expression "*(undefined4 *)(puVar47 + -0x10c) = uVar10" (pointer_expression "*(undefined4 *)(puVar47 + -0x10c)" * (cast_expression "(undefined4 *)(puVar47 + -0x10c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar47 + -0x10c)" ( (binary_expression "puVar47 + -0x10c" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(code **)(puVar47 + -0x150) = pcVar44;" (assignment_expression "*(code **)(puVar47 + -0x150) = pcVar44" (pointer_expression "*(code **)(puVar47 + -0x150)" * (cast_expression "(code **)(puVar47 + -0x150)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar47 + -0x150)" ( (binary_expression "puVar47 + -0x150" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar47 + -0x13c) = 0;" (assignment_expression "*(undefined4 *)(puVar47 + -0x13c) = 0" (pointer_expression "*(undefined4 *)(puVar47 + -0x13c)" * (cast_expression "(undefined4 *)(puVar47 + -0x13c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar47 + -0x13c)" ( (binary_expression "puVar47 + -0x13c" identifier + number_literal) )))) = number_literal) ;) (expression_statement "puVar8 = (uint *)puVar20[1];" (assignment_expression "puVar8 = (uint *)puVar20[1]" identifier = (cast_expression "(uint *)puVar20[1]" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar20[1]" identifier [ number_literal ]))) ;) (expression_statement "*(int *)(puVar47 + -300) = *piVar34;" (assignment_expression "*(int *)(puVar47 + -300) = *piVar34" (pointer_expression "*(int *)(puVar47 + -300)" * (cast_expression "(int *)(puVar47 + -300)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar47 + -300)" ( (binary_expression "puVar47 + -300" identifier + number_literal) )))) = (pointer_expression "*piVar34" * identifier)) ;) (if_statement "if ((int)uVar18 < 0) {\n        uVar37 = uVar18 * -4;\n        *(uint *)(puVar47 + -0x138) = -uVar18;\n        if (0x7f00 < uVar37) {\n          pcVar51 = *(code **)(pcVar51 + 0x7a780);\n          goto LAB_00022c88;\n        }\nLAB_00022be4:\n        iVar6 = -(uVar37 + 7 & 0xfffffff8);\n        puVar48 = puVar47 + iVar6 + -0x160;\n        puVar13 = puVar47 + iVar6 + -0x150;\n      }\n      else {\n        uVar37 = uVar18 * 4;\n        *(uint *)(puVar47 + -0x138) = uVar18;\n        pcVar51 = *(code **)(pcVar51 + 0x7a780);\n        if (uVar37 < 0x7f01) goto LAB_00022be4;\nLAB_00022c88:\n        *(uint **)(puVar47 + -0x144) = puVar22;\n        puVar13 = (undefined1 *)(*pcVar51)(puVar47 + -0x13c,uVar37);\n        pcVar44 = *(code **)(puVar47 + -0x150);\n        puVar22 = *(uint **)(puVar47 + -0x144);\n      }" if (parenthesized_expression "((int)uVar18 < 0)" ( (binary_expression "(int)uVar18 < 0" (cast_expression "(int)uVar18" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n        uVar37 = uVar18 * -4;\n        *(uint *)(puVar47 + -0x138) = -uVar18;\n        if (0x7f00 < uVar37) {\n          pcVar51 = *(code **)(pcVar51 + 0x7a780);\n          goto LAB_00022c88;\n        }\nLAB_00022be4:\n        iVar6 = -(uVar37 + 7 & 0xfffffff8);\n        puVar48 = puVar47 + iVar6 + -0x160;\n        puVar13 = puVar47 + iVar6 + -0x150;\n      }" { (expression_statement "uVar37 = uVar18 * -4;" (assignment_expression "uVar37 = uVar18 * -4" identifier = (binary_expression "uVar18 * -4" identifier * number_literal)) ;) (expression_statement "*(uint *)(puVar47 + -0x138) = -uVar18;" (assignment_expression "*(uint *)(puVar47 + -0x138) = -uVar18" (pointer_expression "*(uint *)(puVar47 + -0x138)" * (cast_expression "(uint *)(puVar47 + -0x138)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar47 + -0x138)" ( (binary_expression "puVar47 + -0x138" identifier + number_literal) )))) = (unary_expression "-uVar18" - identifier)) ;) (if_statement "if (0x7f00 < uVar37) {\n          pcVar51 = *(code **)(pcVar51 + 0x7a780);\n          goto LAB_00022c88;\n        }" if (parenthesized_expression "(0x7f00 < uVar37)" ( (binary_expression "0x7f00 < uVar37" number_literal < identifier) )) (compound_statement "{\n          pcVar51 = *(code **)(pcVar51 + 0x7a780);\n          goto LAB_00022c88;\n        }" { (expression_statement "pcVar51 = *(code **)(pcVar51 + 0x7a780);" (assignment_expression "pcVar51 = *(code **)(pcVar51 + 0x7a780)" identifier = (pointer_expression "*(code **)(pcVar51 + 0x7a780)" * (cast_expression "(code **)(pcVar51 + 0x7a780)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar51 + 0x7a780)" ( (binary_expression "pcVar51 + 0x7a780" identifier + number_literal) ))))) ;) (goto_statement "goto LAB_00022c88;" goto statement_identifier ;) })) (labeled_statement "LAB_00022be4:\n        iVar6 = -(uVar37 + 7 & 0xfffffff8);" statement_identifier : (expression_statement "iVar6 = -(uVar37 + 7 & 0xfffffff8);" (assignment_expression "iVar6 = -(uVar37 + 7 & 0xfffffff8)" identifier = (unary_expression "-(uVar37 + 7 & 0xfffffff8)" - (parenthesized_expression "(uVar37 + 7 & 0xfffffff8)" ( (binary_expression "uVar37 + 7 & 0xfffffff8" (binary_expression "uVar37 + 7" identifier + number_literal) & number_literal) )))) ;)) (expression_statement "puVar48 = puVar47 + iVar6 + -0x160;" (assignment_expression "puVar48 = puVar47 + iVar6 + -0x160" identifier = (binary_expression "puVar47 + iVar6 + -0x160" (binary_expression "puVar47 + iVar6" identifier + identifier) + number_literal)) ;) (expression_statement "puVar13 = puVar47 + iVar6 + -0x150;" (assignment_expression "puVar13 = puVar47 + iVar6 + -0x150" identifier = (binary_expression "puVar47 + iVar6 + -0x150" (binary_expression "puVar47 + iVar6" identifier + identifier) + number_literal)) ;) }) (else_clause "else {\n        uVar37 = uVar18 * 4;\n        *(uint *)(puVar47 + -0x138) = uVar18;\n        pcVar51 = *(code **)(pcVar51 + 0x7a780);\n        if (uVar37 < 0x7f01) goto LAB_00022be4;\nLAB_00022c88:\n        *(uint **)(puVar47 + -0x144) = puVar22;\n        puVar13 = (undefined1 *)(*pcVar51)(puVar47 + -0x13c,uVar37);\n        pcVar44 = *(code **)(puVar47 + -0x150);\n        puVar22 = *(uint **)(puVar47 + -0x144);\n      }" else (compound_statement "{\n        uVar37 = uVar18 * 4;\n        *(uint *)(puVar47 + -0x138) = uVar18;\n        pcVar51 = *(code **)(pcVar51 + 0x7a780);\n        if (uVar37 < 0x7f01) goto LAB_00022be4;\nLAB_00022c88:\n        *(uint **)(puVar47 + -0x144) = puVar22;\n        puVar13 = (undefined1 *)(*pcVar51)(puVar47 + -0x13c,uVar37);\n        pcVar44 = *(code **)(puVar47 + -0x150);\n        puVar22 = *(uint **)(puVar47 + -0x144);\n      }" { (expression_statement "uVar37 = uVar18 * 4;" (assignment_expression "uVar37 = uVar18 * 4" identifier = (binary_expression "uVar18 * 4" identifier * number_literal)) ;) (expression_statement "*(uint *)(puVar47 + -0x138) = uVar18;" (assignment_expression "*(uint *)(puVar47 + -0x138) = uVar18" (pointer_expression "*(uint *)(puVar47 + -0x138)" * (cast_expression "(uint *)(puVar47 + -0x138)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar47 + -0x138)" ( (binary_expression "puVar47 + -0x138" identifier + number_literal) )))) = identifier) ;) (expression_statement "pcVar51 = *(code **)(pcVar51 + 0x7a780);" (assignment_expression "pcVar51 = *(code **)(pcVar51 + 0x7a780)" identifier = (pointer_expression "*(code **)(pcVar51 + 0x7a780)" * (cast_expression "(code **)(pcVar51 + 0x7a780)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar51 + 0x7a780)" ( (binary_expression "pcVar51 + 0x7a780" identifier + number_literal) ))))) ;) (if_statement "if (uVar37 < 0x7f01) goto LAB_00022be4;" if (parenthesized_expression "(uVar37 < 0x7f01)" ( (binary_expression "uVar37 < 0x7f01" identifier < number_literal) )) (goto_statement "goto LAB_00022be4;" goto statement_identifier ;)) (labeled_statement "LAB_00022c88:\n        *(uint **)(puVar47 + -0x144) = puVar22;" statement_identifier : (expression_statement "*(uint **)(puVar47 + -0x144) = puVar22;" (assignment_expression "*(uint **)(puVar47 + -0x144) = puVar22" (pointer_expression "*(uint **)(puVar47 + -0x144)" * (cast_expression "(uint **)(puVar47 + -0x144)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar47 + -0x144)" ( (binary_expression "puVar47 + -0x144" identifier + number_literal) )))) = identifier) ;)) (expression_statement "puVar13 = (undefined1 *)(*pcVar51)(puVar47 + -0x13c,uVar37);" (assignment_expression "puVar13 = (undefined1 *)(*pcVar51)(puVar47 + -0x13c,uVar37)" identifier = (cast_expression "(undefined1 *)(*pcVar51)(puVar47 + -0x13c,uVar37)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(*pcVar51)(puVar47 + -0x13c,uVar37)" (parenthesized_expression "(*pcVar51)" ( (pointer_expression "*pcVar51" * identifier) )) (argument_list "(puVar47 + -0x13c,uVar37)" ( (binary_expression "puVar47 + -0x13c" identifier + number_literal) , identifier ))))) ;) (expression_statement "pcVar44 = *(code **)(puVar47 + -0x150);" (assignment_expression "pcVar44 = *(code **)(puVar47 + -0x150)" identifier = (pointer_expression "*(code **)(puVar47 + -0x150)" * (cast_expression "(code **)(puVar47 + -0x150)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar47 + -0x150)" ( (binary_expression "puVar47 + -0x150" identifier + number_literal) ))))) ;) (expression_statement "puVar22 = *(uint **)(puVar47 + -0x144);" (assignment_expression "puVar22 = *(uint **)(puVar47 + -0x144)" identifier = (pointer_expression "*(uint **)(puVar47 + -0x144)" * (cast_expression "(uint **)(puVar47 + -0x144)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar47 + -0x144)" ( (binary_expression "puVar47 + -0x144" identifier + number_literal) ))))) ;) }))) (expression_statement "pcVar51 = *(code **)(pcVar44 + -0x7a68);" (assignment_expression "pcVar51 = *(code **)(pcVar44 + -0x7a68)" identifier = (pointer_expression "*(code **)(pcVar44 + -0x7a68)" * (cast_expression "(code **)(pcVar44 + -0x7a68)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar44 + -0x7a68)" ( (binary_expression "pcVar44 + -0x7a68" identifier + number_literal) ))))) ;) (expression_statement "puVar36 = (uint *)(puVar47 + -0x138);" (assignment_expression "puVar36 = (uint *)(puVar47 + -0x138)" identifier = (cast_expression "(uint *)(puVar47 + -0x138)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar47 + -0x138)" ( (binary_expression "puVar47 + -0x138" identifier + number_literal) )))) ;) (expression_statement "*(undefined1 **)(puVar47 + -0x130) = puVar13;" (assignment_expression "*(undefined1 **)(puVar47 + -0x130) = puVar13" (pointer_expression "*(undefined1 **)(puVar47 + -0x130)" * (cast_expression "(undefined1 **)(puVar47 + -0x130)" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar47 + -0x130)" ( (binary_expression "puVar47 + -0x130" identifier + number_literal) )))) = identifier) ;) (expression_statement "puVar9 = puVar20;" (assignment_expression "puVar9 = puVar20" identifier = identifier) ;) (expression_statement "(*pcVar51)(puVar31,puVar36,puVar20,puVar22);" (call_expression "(*pcVar51)(puVar31,puVar36,puVar20,puVar22)" (parenthesized_expression "(*pcVar51)" ( (pointer_expression "*pcVar51" * identifier) )) (argument_list "(puVar31,puVar36,puVar20,puVar22)" ( identifier , identifier , identifier , identifier ))) ;) (expression_statement "iVar6 = *(int *)(puVar47 + -0x150);" (assignment_expression "iVar6 = *(int *)(puVar47 + -0x150)" identifier = (pointer_expression "*(int *)(puVar47 + -0x150)" * (cast_expression "(int *)(puVar47 + -0x150)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar47 + -0x150)" ( (binary_expression "puVar47 + -0x150" identifier + number_literal) ))))) ;) (if_statement "if (((int)((uint)puVar8 ^ uVar18) < 0) || (*(int *)(puVar47 + -0x134) == 0)) {\n        piVar32 = *(int **)(puVar47 + -0x13c);\n        pcVar51 = *(code **)(iVar6 + -0x7a28);\n        if (piVar32 != (int *)0x0) goto LAB_00022cc0;\n      }\n      else {\n        puVar9 = (uint *)0x1;\n        puVar36 = puVar31;\n        (**(code **)(iVar6 + -0x7c9c))(puVar31);\n        piVar32 = *(int **)(puVar47 + -0x13c);\n        iVar6 = *(int *)(puVar47 + -0x150);\n        if (piVar32 != (int *)0x0) {\n          pcVar51 = *(code **)(iVar6 + -0x7a28);\nLAB_00022cc0:\n          (*pcVar51)();\n          iVar6 = *(int *)(puVar47 + -0x150);\n        }\n      }" if (parenthesized_expression "(((int)((uint)puVar8 ^ uVar18) < 0) || (*(int *)(puVar47 + -0x134) == 0))" ( (binary_expression "((int)((uint)puVar8 ^ uVar18) < 0) || (*(int *)(puVar47 + -0x134) == 0)" (parenthesized_expression "((int)((uint)puVar8 ^ uVar18) < 0)" ( (binary_expression "(int)((uint)puVar8 ^ uVar18) < 0" (cast_expression "(int)((uint)puVar8 ^ uVar18)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((uint)puVar8 ^ uVar18)" ( (binary_expression "(uint)puVar8 ^ uVar18" (cast_expression "(uint)puVar8" ( (type_descriptor "uint" type_identifier) ) identifier) ^ identifier) ))) < number_literal) )) || (parenthesized_expression "(*(int *)(puVar47 + -0x134) == 0)" ( (binary_expression "*(int *)(puVar47 + -0x134) == 0" (pointer_expression "*(int *)(puVar47 + -0x134)" * (cast_expression "(int *)(puVar47 + -0x134)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar47 + -0x134)" ( (binary_expression "puVar47 + -0x134" identifier + number_literal) )))) == number_literal) ))) )) (compound_statement "{\n        piVar32 = *(int **)(puVar47 + -0x13c);\n        pcVar51 = *(code **)(iVar6 + -0x7a28);\n        if (piVar32 != (int *)0x0) goto LAB_00022cc0;\n      }" { (expression_statement "piVar32 = *(int **)(puVar47 + -0x13c);" (assignment_expression "piVar32 = *(int **)(puVar47 + -0x13c)" identifier = (pointer_expression "*(int **)(puVar47 + -0x13c)" * (cast_expression "(int **)(puVar47 + -0x13c)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar47 + -0x13c)" ( (binary_expression "puVar47 + -0x13c" identifier + number_literal) ))))) ;) (expression_statement "pcVar51 = *(code **)(iVar6 + -0x7a28);" (assignment_expression "pcVar51 = *(code **)(iVar6 + -0x7a28)" identifier = (pointer_expression "*(code **)(iVar6 + -0x7a28)" * (cast_expression "(code **)(iVar6 + -0x7a28)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar6 + -0x7a28)" ( (binary_expression "iVar6 + -0x7a28" identifier + number_literal) ))))) ;) (if_statement "if (piVar32 != (int *)0x0) goto LAB_00022cc0;" if (parenthesized_expression "(piVar32 != (int *)0x0)" ( (binary_expression "piVar32 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_00022cc0;" goto statement_identifier ;)) }) (else_clause "else {\n        puVar9 = (uint *)0x1;\n        puVar36 = puVar31;\n        (**(code **)(iVar6 + -0x7c9c))(puVar31);\n        piVar32 = *(int **)(puVar47 + -0x13c);\n        iVar6 = *(int *)(puVar47 + -0x150);\n        if (piVar32 != (int *)0x0) {\n          pcVar51 = *(code **)(iVar6 + -0x7a28);\nLAB_00022cc0:\n          (*pcVar51)();\n          iVar6 = *(int *)(puVar47 + -0x150);\n        }\n      }" else (compound_statement "{\n        puVar9 = (uint *)0x1;\n        puVar36 = puVar31;\n        (**(code **)(iVar6 + -0x7c9c))(puVar31);\n        piVar32 = *(int **)(puVar47 + -0x13c);\n        iVar6 = *(int *)(puVar47 + -0x150);\n        if (piVar32 != (int *)0x0) {\n          pcVar51 = *(code **)(iVar6 + -0x7a28);\nLAB_00022cc0:\n          (*pcVar51)();\n          iVar6 = *(int *)(puVar47 + -0x150);\n        }\n      }" { (expression_statement "puVar9 = (uint *)0x1;" (assignment_expression "puVar9 = (uint *)0x1" identifier = (cast_expression "(uint *)0x1" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "puVar36 = puVar31;" (assignment_expression "puVar36 = puVar31" identifier = identifier) ;) (expression_statement "(**(code **)(iVar6 + -0x7c9c))(puVar31);" (call_expression "(**(code **)(iVar6 + -0x7c9c))(puVar31)" (parenthesized_expression "(**(code **)(iVar6 + -0x7c9c))" ( (pointer_expression "**(code **)(iVar6 + -0x7c9c)" * (pointer_expression "*(code **)(iVar6 + -0x7c9c)" * (cast_expression "(code **)(iVar6 + -0x7c9c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar6 + -0x7c9c)" ( (binary_expression "iVar6 + -0x7c9c" identifier + number_literal) ))))) )) (argument_list "(puVar31)" ( identifier ))) ;) (expression_statement "piVar32 = *(int **)(puVar47 + -0x13c);" (assignment_expression "piVar32 = *(int **)(puVar47 + -0x13c)" identifier = (pointer_expression "*(int **)(puVar47 + -0x13c)" * (cast_expression "(int **)(puVar47 + -0x13c)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar47 + -0x13c)" ( (binary_expression "puVar47 + -0x13c" identifier + number_literal) ))))) ;) (expression_statement "iVar6 = *(int *)(puVar47 + -0x150);" (assignment_expression "iVar6 = *(int *)(puVar47 + -0x150)" identifier = (pointer_expression "*(int *)(puVar47 + -0x150)" * (cast_expression "(int *)(puVar47 + -0x150)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar47 + -0x150)" ( (binary_expression "puVar47 + -0x150" identifier + number_literal) ))))) ;) (if_statement "if (piVar32 != (int *)0x0) {\n          pcVar51 = *(code **)(iVar6 + -0x7a28);\nLAB_00022cc0:\n          (*pcVar51)();\n          iVar6 = *(int *)(puVar47 + -0x150);\n        }" if (parenthesized_expression "(piVar32 != (int *)0x0)" ( (binary_expression "piVar32 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          pcVar51 = *(code **)(iVar6 + -0x7a28);\nLAB_00022cc0:\n          (*pcVar51)();\n          iVar6 = *(int *)(puVar47 + -0x150);\n        }" { (expression_statement "pcVar51 = *(code **)(iVar6 + -0x7a28);" (assignment_expression "pcVar51 = *(code **)(iVar6 + -0x7a28)" identifier = (pointer_expression "*(code **)(iVar6 + -0x7a28)" * (cast_expression "(code **)(iVar6 + -0x7a28)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar6 + -0x7a28)" ( (binary_expression "iVar6 + -0x7a28" identifier + number_literal) ))))) ;) (labeled_statement "LAB_00022cc0:\n          (*pcVar51)();" statement_identifier : (expression_statement "(*pcVar51)();" (call_expression "(*pcVar51)()" (parenthesized_expression "(*pcVar51)" ( (pointer_expression "*pcVar51" * identifier) )) (argument_list "()" ( ))) ;)) (expression_statement "iVar6 = *(int *)(puVar47 + -0x150);" (assignment_expression "iVar6 = *(int *)(puVar47 + -0x150)" identifier = (pointer_expression "*(int *)(puVar47 + -0x150)" * (cast_expression "(int *)(puVar47 + -0x150)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar47 + -0x150)" ( (binary_expression "puVar47 + -0x150" identifier + number_literal) ))))) ;) })) }))) (if_statement "if (*(int *)(puVar47 + -300) == *piVar34) {\n        return *piVar34;\n      }" if (parenthesized_expression "(*(int *)(puVar47 + -300) == *piVar34)" ( (binary_expression "*(int *)(puVar47 + -300) == *piVar34" (pointer_expression "*(int *)(puVar47 + -300)" * (cast_expression "(int *)(puVar47 + -300)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar47 + -300)" ( (binary_expression "puVar47 + -300" identifier + number_literal) )))) == (pointer_expression "*piVar34" * identifier)) )) (compound_statement "{\n        return *piVar34;\n      }" { (return_statement "return *piVar34;" return (pointer_expression "*piVar34" * identifier) ;) })) (expression_statement "pcVar51 = *(code **)(iVar6 + -0x7b70);" (assignment_expression "pcVar51 = *(code **)(iVar6 + -0x7b70)" identifier = (pointer_expression "*(code **)(iVar6 + -0x7b70)" * (cast_expression "(code **)(iVar6 + -0x7b70)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar6 + -0x7b70)" ( (binary_expression "iVar6 + -0x7b70" identifier + number_literal) ))))) ;) (expression_statement "uVar10 = 0x22cdc;" (assignment_expression "uVar10 = 0x22cdc" identifier = number_literal) ;) (expression_statement "(*pcVar51)();" (call_expression "(*pcVar51)()" (parenthesized_expression "(*pcVar51)" ( (pointer_expression "*pcVar51" * identifier) )) (argument_list "()" ( ))) ;) (expression_statement "pcVar44 = pcVar51 + 0x82360;" (assignment_expression "pcVar44 = pcVar51 + 0x82360" identifier = (binary_expression "pcVar51 + 0x82360" identifier + number_literal)) ;) (expression_statement "*(code **)(puVar48 + -0x28) = pcVar44;" (assignment_expression "*(code **)(puVar48 + -0x28) = pcVar44" (pointer_expression "*(code **)(puVar48 + -0x28)" * (cast_expression "(code **)(puVar48 + -0x28)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar48 + -0x28)" ( (binary_expression "puVar48 + -0x28" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar48 + -4) = uVar10;" (assignment_expression "*(undefined4 *)(puVar48 + -4) = uVar10" (pointer_expression "*(undefined4 *)(puVar48 + -4)" * (cast_expression "(undefined4 *)(puVar48 + -4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar48 + -4)" ( (binary_expression "puVar48 + -4" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(uint **)(puVar48 + -8) = puVar38;" (assignment_expression "*(uint **)(puVar48 + -8) = puVar38" (pointer_expression "*(uint **)(puVar48 + -8)" * (cast_expression "(uint **)(puVar48 + -8)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar48 + -8)" ( (binary_expression "puVar48 + -8" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(uint **)(puVar48 + -0xc) = puVar20;" (assignment_expression "*(uint **)(puVar48 + -0xc) = puVar20" (pointer_expression "*(uint **)(puVar48 + -0xc)" * (cast_expression "(uint **)(puVar48 + -0xc)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar48 + -0xc)" ( (binary_expression "puVar48 + -0xc" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int **)(puVar48 + -0x10) = piVar34;" (assignment_expression "*(int **)(puVar48 + -0x10) = piVar34" (pointer_expression "*(int **)(puVar48 + -0x10)" * (cast_expression "(int **)(puVar48 + -0x10)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar48 + -0x10)" ( (binary_expression "puVar48 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(uint **)(puVar48 + -0x14) = puVar31;" (assignment_expression "*(uint **)(puVar48 + -0x14) = puVar31" (pointer_expression "*(uint **)(puVar48 + -0x14)" * (cast_expression "(uint **)(puVar48 + -0x14)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar48 + -0x14)" ( (binary_expression "puVar48 + -0x14" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(uint **)(puVar48 + -0x18) = puVar8;" (assignment_expression "*(uint **)(puVar48 + -0x18) = puVar8" (pointer_expression "*(uint **)(puVar48 + -0x18)" * (cast_expression "(uint **)(puVar48 + -0x18)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar48 + -0x18)" ( (binary_expression "puVar48 + -0x18" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(uint *)(puVar48 + -0x1c) = (uint)puVar8 ^ uVar18;" (assignment_expression "*(uint *)(puVar48 + -0x1c) = (uint)puVar8 ^ uVar18" (pointer_expression "*(uint *)(puVar48 + -0x1c)" * (cast_expression "(uint *)(puVar48 + -0x1c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar48 + -0x1c)" ( (binary_expression "puVar48 + -0x1c" identifier + number_literal) )))) = (binary_expression "(uint)puVar8 ^ uVar18" (cast_expression "(uint)puVar8" ( (type_descriptor "uint" type_identifier) ) identifier) ^ identifier)) ;) (if_statement "if (puVar9 == (uint *)0x0) {\n        pcVar51 = *(code **)(pcVar51 + 0x7a900);\n        (*pcVar51)();\nLAB_00022e2c:\n        piVar32 = (int *)(*pcVar51)(piVar34,puVar31);\n        pcVar44 = *(code **)(puVar48 + -0x28);\n      }\n      else {\n        puVar8 = (uint *)puVar36[1];\n        if (puVar8 == (uint *)0x0) {\n          piVar32[1] = 0;\n          return 0;\n        }\n        puVar31 = puVar8;\n        if ((int)puVar8 < 0) {\n          puVar31 = (uint *)-(int)puVar8;\n        }\n        pcVar51 = *(code **)(pcVar51 + 0x7a8e0);\n        piVar34 = piVar32;\n        puVar20 = puVar9;\n        puVar38 = puVar36;\n        if (*piVar32 < (int)puVar31) goto LAB_00022e2c;\n        piVar32 = (int *)piVar32[2];\n      }" if (parenthesized_expression "(puVar9 == (uint *)0x0)" ( (binary_expression "puVar9 == (uint *)0x0" identifier == (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        pcVar51 = *(code **)(pcVar51 + 0x7a900);\n        (*pcVar51)();\nLAB_00022e2c:\n        piVar32 = (int *)(*pcVar51)(piVar34,puVar31);\n        pcVar44 = *(code **)(puVar48 + -0x28);\n      }" { (expression_statement "pcVar51 = *(code **)(pcVar51 + 0x7a900);" (assignment_expression "pcVar51 = *(code **)(pcVar51 + 0x7a900)" identifier = (pointer_expression "*(code **)(pcVar51 + 0x7a900)" * (cast_expression "(code **)(pcVar51 + 0x7a900)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar51 + 0x7a900)" ( (binary_expression "pcVar51 + 0x7a900" identifier + number_literal) ))))) ;) (expression_statement "(*pcVar51)();" (call_expression "(*pcVar51)()" (parenthesized_expression "(*pcVar51)" ( (pointer_expression "*pcVar51" * identifier) )) (argument_list "()" ( ))) ;) (labeled_statement "LAB_00022e2c:\n        piVar32 = (int *)(*pcVar51)(piVar34,puVar31);" statement_identifier : (expression_statement "piVar32 = (int *)(*pcVar51)(piVar34,puVar31);" (assignment_expression "piVar32 = (int *)(*pcVar51)(piVar34,puVar31)" identifier = (cast_expression "(int *)(*pcVar51)(piVar34,puVar31)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "(*pcVar51)(piVar34,puVar31)" (parenthesized_expression "(*pcVar51)" ( (pointer_expression "*pcVar51" * identifier) )) (argument_list "(piVar34,puVar31)" ( identifier , identifier ))))) ;)) (expression_statement "pcVar44 = *(code **)(puVar48 + -0x28);" (assignment_expression "pcVar44 = *(code **)(puVar48 + -0x28)" identifier = (pointer_expression "*(code **)(puVar48 + -0x28)" * (cast_expression "(code **)(puVar48 + -0x28)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar48 + -0x28)" ( (binary_expression "puVar48 + -0x28" identifier + number_literal) ))))) ;) }) (else_clause "else {\n        puVar8 = (uint *)puVar36[1];\n        if (puVar8 == (uint *)0x0) {\n          piVar32[1] = 0;\n          return 0;\n        }\n        puVar31 = puVar8;\n        if ((int)puVar8 < 0) {\n          puVar31 = (uint *)-(int)puVar8;\n        }\n        pcVar51 = *(code **)(pcVar51 + 0x7a8e0);\n        piVar34 = piVar32;\n        puVar20 = puVar9;\n        puVar38 = puVar36;\n        if (*piVar32 < (int)puVar31) goto LAB_00022e2c;\n        piVar32 = (int *)piVar32[2];\n      }" else (compound_statement "{\n        puVar8 = (uint *)puVar36[1];\n        if (puVar8 == (uint *)0x0) {\n          piVar32[1] = 0;\n          return 0;\n        }\n        puVar31 = puVar8;\n        if ((int)puVar8 < 0) {\n          puVar31 = (uint *)-(int)puVar8;\n        }\n        pcVar51 = *(code **)(pcVar51 + 0x7a8e0);\n        piVar34 = piVar32;\n        puVar20 = puVar9;\n        puVar38 = puVar36;\n        if (*piVar32 < (int)puVar31) goto LAB_00022e2c;\n        piVar32 = (int *)piVar32[2];\n      }" { (expression_statement "puVar8 = (uint *)puVar36[1];" (assignment_expression "puVar8 = (uint *)puVar36[1]" identifier = (cast_expression "(uint *)puVar36[1]" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar36[1]" identifier [ number_literal ]))) ;) (if_statement "if (puVar8 == (uint *)0x0) {\n          piVar32[1] = 0;\n          return 0;\n        }" if (parenthesized_expression "(puVar8 == (uint *)0x0)" ( (binary_expression "puVar8 == (uint *)0x0" identifier == (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          piVar32[1] = 0;\n          return 0;\n        }" { (expression_statement "piVar32[1] = 0;" (assignment_expression "piVar32[1] = 0" (subscript_expression "piVar32[1]" identifier [ number_literal ]) = number_literal) ;) (return_statement "return 0;" return number_literal ;) })) (expression_statement "puVar31 = puVar8;" (assignment_expression "puVar31 = puVar8" identifier = identifier) ;) (if_statement "if ((int)puVar8 < 0) {\n          puVar31 = (uint *)-(int)puVar8;\n        }" if (parenthesized_expression "((int)puVar8 < 0)" ( (binary_expression "(int)puVar8 < 0" (cast_expression "(int)puVar8" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n          puVar31 = (uint *)-(int)puVar8;\n        }" { (expression_statement "puVar31 = (uint *)-(int)puVar8;" (assignment_expression "puVar31 = (uint *)-(int)puVar8" identifier = (cast_expression "(uint *)-(int)puVar8" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (unary_expression "-(int)puVar8" - (cast_expression "(int)puVar8" ( (type_descriptor "int" primitive_type) ) identifier)))) ;) })) (expression_statement "pcVar51 = *(code **)(pcVar51 + 0x7a8e0);" (assignment_expression "pcVar51 = *(code **)(pcVar51 + 0x7a8e0)" identifier = (pointer_expression "*(code **)(pcVar51 + 0x7a8e0)" * (cast_expression "(code **)(pcVar51 + 0x7a8e0)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar51 + 0x7a8e0)" ( (binary_expression "pcVar51 + 0x7a8e0" identifier + number_literal) ))))) ;) (expression_statement "piVar34 = piVar32;" (assignment_expression "piVar34 = piVar32" identifier = identifier) ;) (expression_statement "puVar20 = puVar9;" (assignment_expression "puVar20 = puVar9" identifier = identifier) ;) (expression_statement "puVar38 = puVar36;" (assignment_expression "puVar38 = puVar36" identifier = identifier) ;) (if_statement "if (*piVar32 < (int)puVar31) goto LAB_00022e2c;" if (parenthesized_expression "(*piVar32 < (int)puVar31)" ( (binary_expression "*piVar32 < (int)puVar31" (pointer_expression "*piVar32" * identifier) < (cast_expression "(int)puVar31" ( (type_descriptor "int" primitive_type) ) identifier)) )) (goto_statement "goto LAB_00022e2c;" goto statement_identifier ;)) (expression_statement "piVar32 = (int *)piVar32[2];" (assignment_expression "piVar32 = (int *)piVar32[2]" identifier = (cast_expression "(int *)piVar32[2]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar32[2]" identifier [ number_literal ]))) ;) }))) (expression_statement "pcVar51 = *(code **)(pcVar44 + -0x7d98);" (assignment_expression "pcVar51 = *(code **)(pcVar44 + -0x7d98)" identifier = (pointer_expression "*(code **)(pcVar44 + -0x7d98)" * (cast_expression "(code **)(pcVar44 + -0x7d98)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar44 + -0x7d98)" ( (binary_expression "pcVar44 + -0x7d98" identifier + number_literal) ))))) ;) (expression_statement "uVar18 = puVar38[2];" (assignment_expression "uVar18 = puVar38[2]" identifier = (subscript_expression "puVar38[2]" identifier [ number_literal ])) ;) (expression_statement "*(uint **)(puVar48 + -0x30) = puVar20;" (assignment_expression "*(uint **)(puVar48 + -0x30) = puVar20" (pointer_expression "*(uint **)(puVar48 + -0x30)" * (cast_expression "(uint **)(puVar48 + -0x30)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar48 + -0x30)" ( (binary_expression "puVar48 + -0x30" identifier + number_literal) )))) = identifier) ;) (expression_statement "iVar6 = (*pcVar51)(piVar32,0,uVar18,puVar31);" (assignment_expression "iVar6 = (*pcVar51)(piVar32,0,uVar18,puVar31)" identifier = (call_expression "(*pcVar51)(piVar32,0,uVar18,puVar31)" (parenthesized_expression "(*pcVar51)" ( (pointer_expression "*pcVar51" * identifier) )) (argument_list "(piVar32,0,uVar18,puVar31)" ( identifier , number_literal , identifier , identifier )))) ;) (expression_statement "piVar17 = piVar32 + (int)puVar31 + -1;" (assignment_expression "piVar17 = piVar32 + (int)puVar31 + -1" identifier = (binary_expression "piVar32 + (int)puVar31 + -1" (binary_expression "piVar32 + (int)puVar31" identifier + (cast_expression "(int)puVar31" ( (type_descriptor "int" primitive_type) ) identifier)) + number_literal)) ;) (if_statement "if (iVar6 == 0) {\n        uVar18 = (uint)(*piVar17 == 0);\n        if (-1 < (int)puVar8) {\n          iVar24 = (int)puVar31 - uVar18;\n          goto LAB_00022d9c;\n        }\n      }\n      else {\n        if (-1 < (int)puVar8) {\n          do {\n            iVar24 = *piVar32;\n            *piVar32 = iVar24 + 1;\n            piVar32 = piVar32 + 1;\n          } while (iVar24 + 1 == 0);\n          iVar6 = (int)puVar20 - iVar6;\n          iVar24 = (int)puVar31 - (uint)(*piVar17 == 0);\n          goto LAB_00022d9c;\n        }\n        uVar18 = (uint)(*piVar17 == 0);\n      }" if (parenthesized_expression "(iVar6 == 0)" ( (binary_expression "iVar6 == 0" identifier == number_literal) )) (compound_statement "{\n        uVar18 = (uint)(*piVar17 == 0);\n        if (-1 < (int)puVar8) {\n          iVar24 = (int)puVar31 - uVar18;\n          goto LAB_00022d9c;\n        }\n      }" { (expression_statement "uVar18 = (uint)(*piVar17 == 0);" (assignment_expression "uVar18 = (uint)(*piVar17 == 0)" identifier = (call_expression "(uint)(*piVar17 == 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(*piVar17 == 0)" ( (binary_expression "*piVar17 == 0" (pointer_expression "*piVar17" * identifier) == number_literal) )))) ;) (if_statement "if (-1 < (int)puVar8) {\n          iVar24 = (int)puVar31 - uVar18;\n          goto LAB_00022d9c;\n        }" if (parenthesized_expression "(-1 < (int)puVar8)" ( (binary_expression "-1 < (int)puVar8" number_literal < (cast_expression "(int)puVar8" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n          iVar24 = (int)puVar31 - uVar18;\n          goto LAB_00022d9c;\n        }" { (expression_statement "iVar24 = (int)puVar31 - uVar18;" (assignment_expression "iVar24 = (int)puVar31 - uVar18" identifier = (binary_expression "(int)puVar31 - uVar18" (cast_expression "(int)puVar31" ( (type_descriptor "int" primitive_type) ) identifier) - identifier)) ;) (goto_statement "goto LAB_00022d9c;" goto statement_identifier ;) })) }) (else_clause "else {\n        if (-1 < (int)puVar8) {\n          do {\n            iVar24 = *piVar32;\n            *piVar32 = iVar24 + 1;\n            piVar32 = piVar32 + 1;\n          } while (iVar24 + 1 == 0);\n          iVar6 = (int)puVar20 - iVar6;\n          iVar24 = (int)puVar31 - (uint)(*piVar17 == 0);\n          goto LAB_00022d9c;\n        }\n        uVar18 = (uint)(*piVar17 == 0);\n      }" else (compound_statement "{\n        if (-1 < (int)puVar8) {\n          do {\n            iVar24 = *piVar32;\n            *piVar32 = iVar24 + 1;\n            piVar32 = piVar32 + 1;\n          } while (iVar24 + 1 == 0);\n          iVar6 = (int)puVar20 - iVar6;\n          iVar24 = (int)puVar31 - (uint)(*piVar17 == 0);\n          goto LAB_00022d9c;\n        }\n        uVar18 = (uint)(*piVar17 == 0);\n      }" { (if_statement "if (-1 < (int)puVar8) {\n          do {\n            iVar24 = *piVar32;\n            *piVar32 = iVar24 + 1;\n            piVar32 = piVar32 + 1;\n          } while (iVar24 + 1 == 0);\n          iVar6 = (int)puVar20 - iVar6;\n          iVar24 = (int)puVar31 - (uint)(*piVar17 == 0);\n          goto LAB_00022d9c;\n        }" if (parenthesized_expression "(-1 < (int)puVar8)" ( (binary_expression "-1 < (int)puVar8" number_literal < (cast_expression "(int)puVar8" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n          do {\n            iVar24 = *piVar32;\n            *piVar32 = iVar24 + 1;\n            piVar32 = piVar32 + 1;\n          } while (iVar24 + 1 == 0);\n          iVar6 = (int)puVar20 - iVar6;\n          iVar24 = (int)puVar31 - (uint)(*piVar17 == 0);\n          goto LAB_00022d9c;\n        }" { (do_statement "do {\n            iVar24 = *piVar32;\n            *piVar32 = iVar24 + 1;\n            piVar32 = piVar32 + 1;\n          } while (iVar24 + 1 == 0);" do (compound_statement "{\n            iVar24 = *piVar32;\n            *piVar32 = iVar24 + 1;\n            piVar32 = piVar32 + 1;\n          }" { (expression_statement "iVar24 = *piVar32;" (assignment_expression "iVar24 = *piVar32" identifier = (pointer_expression "*piVar32" * identifier)) ;) (expression_statement "*piVar32 = iVar24 + 1;" (assignment_expression "*piVar32 = iVar24 + 1" (pointer_expression "*piVar32" * identifier) = (binary_expression "iVar24 + 1" identifier + number_literal)) ;) (expression_statement "piVar32 = piVar32 + 1;" (assignment_expression "piVar32 = piVar32 + 1" identifier = (binary_expression "piVar32 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar24 + 1 == 0)" ( (binary_expression "iVar24 + 1 == 0" (binary_expression "iVar24 + 1" identifier + number_literal) == number_literal) )) ;) (expression_statement "iVar6 = (int)puVar20 - iVar6;" (assignment_expression "iVar6 = (int)puVar20 - iVar6" identifier = (binary_expression "(int)puVar20 - iVar6" (cast_expression "(int)puVar20" ( (type_descriptor "int" primitive_type) ) identifier) - identifier)) ;) (expression_statement "iVar24 = (int)puVar31 - (uint)(*piVar17 == 0);" (assignment_expression "iVar24 = (int)puVar31 - (uint)(*piVar17 == 0)" identifier = (binary_expression "(int)puVar31 - (uint)(*piVar17 == 0)" (cast_expression "(int)puVar31" ( (type_descriptor "int" primitive_type) ) identifier) - (call_expression "(uint)(*piVar17 == 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(*piVar17 == 0)" ( (binary_expression "*piVar17 == 0" (pointer_expression "*piVar17" * identifier) == number_literal) ))))) ;) (goto_statement "goto LAB_00022d9c;" goto statement_identifier ;) })) (expression_statement "uVar18 = (uint)(*piVar17 == 0);" (assignment_expression "uVar18 = (uint)(*piVar17 == 0)" identifier = (call_expression "(uint)(*piVar17 == 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(*piVar17 == 0)" ( (binary_expression "*piVar17 == 0" (pointer_expression "*piVar17" * identifier) == number_literal) )))) ;) }))) (expression_statement "iVar24 = uVar18 - (int)puVar31;" (assignment_expression "iVar24 = uVar18 - (int)puVar31" identifier = (binary_expression "uVar18 - (int)puVar31" identifier - (cast_expression "(int)puVar31" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (labeled_statement "LAB_00022d9c:\n      piVar34[1] = iVar24;" statement_identifier : (expression_statement "piVar34[1] = iVar24;" (assignment_expression "piVar34[1] = iVar24" (subscript_expression "piVar34[1]" identifier [ number_literal ]) = identifier) ;)) (return_statement "return iVar6;" return identifier ;) })) (expression_statement "*(int *)(puVar46 + -0x44) = iVar39;" (assignment_expression "*(int *)(puVar46 + -0x44) = iVar39" (pointer_expression "*(int *)(puVar46 + -0x44)" * (cast_expression "(int *)(puVar46 + -0x44)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar46 + -0x44)" ( (binary_expression "puVar46 + -0x44" identifier + number_literal) )))) = identifier) ;) (expression_statement "iVar6 = iVar39 + uVar7;" (assignment_expression "iVar6 = iVar39 + uVar7" identifier = (binary_expression "iVar39 + uVar7" identifier + identifier)) ;) (expression_statement "uVar18 = (**(code **)(*(int *)(puVar46 + -0x34) + (uVar7 - 1) * 4))(iVar39);" (assignment_expression "uVar18 = (**(code **)(*(int *)(puVar46 + -0x34) + (uVar7 - 1) * 4))(iVar39)" identifier = (call_expression "(**(code **)(*(int *)(puVar46 + -0x34) + (uVar7 - 1) * 4))(iVar39)" (parenthesized_expression "(**(code **)(*(int *)(puVar46 + -0x34) + (uVar7 - 1) * 4))" ( (pointer_expression "**(code **)(*(int *)(puVar46 + -0x34) + (uVar7 - 1) * 4)" * (pointer_expression "*(code **)(*(int *)(puVar46 + -0x34) + (uVar7 - 1) * 4)" * (cast_expression "(code **)(*(int *)(puVar46 + -0x34) + (uVar7 - 1) * 4)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)(puVar46 + -0x34) + (uVar7 - 1) * 4)" ( (binary_expression "*(int *)(puVar46 + -0x34) + (uVar7 - 1) * 4" (pointer_expression "*(int *)(puVar46 + -0x34)" * (cast_expression "(int *)(puVar46 + -0x34)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar46 + -0x34)" ( (binary_expression "puVar46 + -0x34" identifier + number_literal) )))) + (binary_expression "(uVar7 - 1) * 4" (parenthesized_expression "(uVar7 - 1)" ( (binary_expression "uVar7 - 1" identifier - number_literal) )) * number_literal)) ))))) )) (argument_list "(iVar39)" ( identifier )))) ;) (expression_statement "puVar43 = *(undefined **)(puVar46 + -0x78);" (assignment_expression "puVar43 = *(undefined **)(puVar46 + -0x78)" identifier = (pointer_expression "*(undefined **)(puVar46 + -0x78)" * (cast_expression "(undefined **)(puVar46 + -0x78)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar46 + -0x78)" ( (binary_expression "puVar46 + -0x78" identifier + number_literal) ))))) ;) (if_statement "if ((uVar18 & 0xff) == 0) {\n      uVar37 = uVar18 >> 8;\n      iVar24 = 6;\n      if ((uVar37 & 0xff) == 0) {\n        uVar37 = uVar18 >> 0x10;\n        iVar24 = 0xe;\n        if ((uVar37 & 0xff) == 0) {\n          uVar37 = uVar18 >> 0x18;\n          iVar24 = 0x1e;\n          if (uVar37 != 0) {\n            iVar24 = 0x16;\n          }\n        }\n      }\n      uVar37 = (uint)*(byte *)(*(int *)(puVar46 + -0x3c) + (-uVar37 & uVar37)) + iVar24;\n    }\n    else {\n      uVar37 = *(byte *)(*(int *)(puVar46 + -0x3c) + (-uVar18 & uVar18)) - 2;\n    }" if (parenthesized_expression "((uVar18 & 0xff) == 0)" ( (binary_expression "(uVar18 & 0xff) == 0" (parenthesized_expression "(uVar18 & 0xff)" ( (binary_expression "uVar18 & 0xff" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n      uVar37 = uVar18 >> 8;\n      iVar24 = 6;\n      if ((uVar37 & 0xff) == 0) {\n        uVar37 = uVar18 >> 0x10;\n        iVar24 = 0xe;\n        if ((uVar37 & 0xff) == 0) {\n          uVar37 = uVar18 >> 0x18;\n          iVar24 = 0x1e;\n          if (uVar37 != 0) {\n            iVar24 = 0x16;\n          }\n        }\n      }\n      uVar37 = (uint)*(byte *)(*(int *)(puVar46 + -0x3c) + (-uVar37 & uVar37)) + iVar24;\n    }" { (expression_statement "uVar37 = uVar18 >> 8;" (assignment_expression "uVar37 = uVar18 >> 8" identifier = (binary_expression "uVar18 >> 8" identifier >> number_literal)) ;) (expression_statement "iVar24 = 6;" (assignment_expression "iVar24 = 6" identifier = number_literal) ;) (if_statement "if ((uVar37 & 0xff) == 0) {\n        uVar37 = uVar18 >> 0x10;\n        iVar24 = 0xe;\n        if ((uVar37 & 0xff) == 0) {\n          uVar37 = uVar18 >> 0x18;\n          iVar24 = 0x1e;\n          if (uVar37 != 0) {\n            iVar24 = 0x16;\n          }\n        }\n      }" if (parenthesized_expression "((uVar37 & 0xff) == 0)" ( (binary_expression "(uVar37 & 0xff) == 0" (parenthesized_expression "(uVar37 & 0xff)" ( (binary_expression "uVar37 & 0xff" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n        uVar37 = uVar18 >> 0x10;\n        iVar24 = 0xe;\n        if ((uVar37 & 0xff) == 0) {\n          uVar37 = uVar18 >> 0x18;\n          iVar24 = 0x1e;\n          if (uVar37 != 0) {\n            iVar24 = 0x16;\n          }\n        }\n      }" { (expression_statement "uVar37 = uVar18 >> 0x10;" (assignment_expression "uVar37 = uVar18 >> 0x10" identifier = (binary_expression "uVar18 >> 0x10" identifier >> number_literal)) ;) (expression_statement "iVar24 = 0xe;" (assignment_expression "iVar24 = 0xe" identifier = number_literal) ;) (if_statement "if ((uVar37 & 0xff) == 0) {\n          uVar37 = uVar18 >> 0x18;\n          iVar24 = 0x1e;\n          if (uVar37 != 0) {\n            iVar24 = 0x16;\n          }\n        }" if (parenthesized_expression "((uVar37 & 0xff) == 0)" ( (binary_expression "(uVar37 & 0xff) == 0" (parenthesized_expression "(uVar37 & 0xff)" ( (binary_expression "uVar37 & 0xff" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n          uVar37 = uVar18 >> 0x18;\n          iVar24 = 0x1e;\n          if (uVar37 != 0) {\n            iVar24 = 0x16;\n          }\n        }" { (expression_statement "uVar37 = uVar18 >> 0x18;" (assignment_expression "uVar37 = uVar18 >> 0x18" identifier = (binary_expression "uVar18 >> 0x18" identifier >> number_literal)) ;) (expression_statement "iVar24 = 0x1e;" (assignment_expression "iVar24 = 0x1e" identifier = number_literal) ;) (if_statement "if (uVar37 != 0) {\n            iVar24 = 0x16;\n          }" if (parenthesized_expression "(uVar37 != 0)" ( (binary_expression "uVar37 != 0" identifier != number_literal) )) (compound_statement "{\n            iVar24 = 0x16;\n          }" { (expression_statement "iVar24 = 0x16;" (assignment_expression "iVar24 = 0x16" identifier = number_literal) ;) })) })) })) (expression_statement "uVar37 = (uint)*(byte *)(*(int *)(puVar46 + -0x3c) + (-uVar37 & uVar37)) + iVar24;" (assignment_expression "uVar37 = (uint)*(byte *)(*(int *)(puVar46 + -0x3c) + (-uVar37 & uVar37)) + iVar24" identifier = (binary_expression "(uint)*(byte *)(*(int *)(puVar46 + -0x3c) + (-uVar37 & uVar37)) + iVar24" (binary_expression "(uint)*(byte *)(*(int *)(puVar46 + -0x3c) + (-uVar37 & uVar37))" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)(*(int *)(puVar46 + -0x3c) + (-uVar37 & uVar37))" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(puVar46 + -0x3c) + (-uVar37 & uVar37))" ( (binary_expression "*(int *)(puVar46 + -0x3c) + (-uVar37 & uVar37)" (pointer_expression "*(int *)(puVar46 + -0x3c)" * (cast_expression "(int *)(puVar46 + -0x3c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar46 + -0x3c)" ( (binary_expression "puVar46 + -0x3c" identifier + number_literal) )))) + (parenthesized_expression "(-uVar37 & uVar37)" ( (binary_expression "-uVar37 & uVar37" (unary_expression "-uVar37" - identifier) & identifier) ))) )))) + identifier)) ;) }) (else_clause "else {\n      uVar37 = *(byte *)(*(int *)(puVar46 + -0x3c) + (-uVar18 & uVar18)) - 2;\n    }" else (compound_statement "{\n      uVar37 = *(byte *)(*(int *)(puVar46 + -0x3c) + (-uVar18 & uVar18)) - 2;\n    }" { (expression_statement "uVar37 = *(byte *)(*(int *)(puVar46 + -0x3c) + (-uVar18 & uVar18)) - 2;" (assignment_expression "uVar37 = *(byte *)(*(int *)(puVar46 + -0x3c) + (-uVar18 & uVar18)) - 2" identifier = (binary_expression "*(byte *)(*(int *)(puVar46 + -0x3c) + (-uVar18 & uVar18)) - 2" (pointer_expression "*(byte *)(*(int *)(puVar46 + -0x3c) + (-uVar18 & uVar18))" * (cast_expression "(byte *)(*(int *)(puVar46 + -0x3c) + (-uVar18 & uVar18))" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(puVar46 + -0x3c) + (-uVar18 & uVar18))" ( (binary_expression "*(int *)(puVar46 + -0x3c) + (-uVar18 & uVar18)" (pointer_expression "*(int *)(puVar46 + -0x3c)" * (cast_expression "(int *)(puVar46 + -0x3c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar46 + -0x3c)" ( (binary_expression "puVar46 + -0x3c" identifier + number_literal) )))) + (parenthesized_expression "(-uVar18 & uVar18)" ( (binary_expression "-uVar18 & uVar18" (unary_expression "-uVar18" - identifier) & identifier) ))) )))) - number_literal)) ;) }))) (expression_statement "iVar39 = *(int *)(puVar46 + -0x38);" (assignment_expression "iVar39 = *(int *)(puVar46 + -0x38)" identifier = (pointer_expression "*(int *)(puVar46 + -0x38)" * (cast_expression "(int *)(puVar46 + -0x38)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar46 + -0x38)" ( (binary_expression "puVar46 + -0x38" identifier + number_literal) ))))) ;) (expression_statement "*puVar36 = uVar18 >> (uVar37 & 0x1f);" (assignment_expression "*puVar36 = uVar18 >> (uVar37 & 0x1f)" (pointer_expression "*puVar36" * identifier) = (binary_expression "uVar18 >> (uVar37 & 0x1f)" identifier >> (parenthesized_expression "(uVar37 & 0x1f)" ( (binary_expression "uVar37 & 0x1f" identifier & number_literal) )))) ;) (expression_statement "iVar24 = *(int *)(puVar46 + -0x60);" (assignment_expression "iVar24 = *(int *)(puVar46 + -0x60)" identifier = (pointer_expression "*(int *)(puVar46 + -0x60)" * (cast_expression "(int *)(puVar46 + -0x60)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar46 + -0x60)" ( (binary_expression "puVar46 + -0x60" identifier + number_literal) ))))) ;) (expression_statement "*(uint *)(puVar46 + -0x40) =\n         *(int *)(puVar46 + -0x40) + *(byte *)(iVar39 + (uVar7 - 1)) + uVar37;" (assignment_expression "*(uint *)(puVar46 + -0x40) =\n         *(int *)(puVar46 + -0x40) + *(byte *)(iVar39 + (uVar7 - 1)) + uVar37" (pointer_expression "*(uint *)(puVar46 + -0x40)" * (cast_expression "(uint *)(puVar46 + -0x40)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar46 + -0x40)" ( (binary_expression "puVar46 + -0x40" identifier + number_literal) )))) = (binary_expression "*(int *)(puVar46 + -0x40) + *(byte *)(iVar39 + (uVar7 - 1)) + uVar37" (binary_expression "*(int *)(puVar46 + -0x40) + *(byte *)(iVar39 + (uVar7 - 1))" (pointer_expression "*(int *)(puVar46 + -0x40)" * (cast_expression "(int *)(puVar46 + -0x40)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar46 + -0x40)" ( (binary_expression "puVar46 + -0x40" identifier + number_literal) )))) + (pointer_expression "*(byte *)(iVar39 + (uVar7 - 1))" * (cast_expression "(byte *)(iVar39 + (uVar7 - 1))" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar39 + (uVar7 - 1))" ( (binary_expression "iVar39 + (uVar7 - 1)" identifier + (parenthesized_expression "(uVar7 - 1)" ( (binary_expression "uVar7 - 1" identifier - number_literal) ))) ))))) + identifier)) ;) (if_statement "if ((uint)(iVar24 - iVar6) <= uVar7) {\n      uVar7 = iVar24 - iVar6;\n    }" if (parenthesized_expression "((uint)(iVar24 - iVar6) <= uVar7)" ( (binary_expression "(uint)(iVar24 - iVar6) <= uVar7" (call_expression "(uint)(iVar24 - iVar6)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(iVar24 - iVar6)" ( (binary_expression "iVar24 - iVar6" identifier - identifier) ))) <= identifier) )) (compound_statement "{\n      uVar7 = iVar24 - iVar6;\n    }" { (expression_statement "uVar7 = iVar24 - iVar6;" (assignment_expression "uVar7 = iVar24 - iVar6" identifier = (binary_expression "iVar24 - iVar6" identifier - identifier)) ;) })) (expression_statement "iVar39 = iVar6;" (assignment_expression "iVar39 = iVar6" identifier = identifier) ;) (if_statement "if (uVar7 != 0) goto LAB_00022234;" if (parenthesized_expression "(uVar7 != 0)" ( (binary_expression "uVar7 != 0" identifier != number_literal) )) (goto_statement "goto LAB_00022234;" goto statement_identifier ;)) (labeled_statement "LAB_00022534:\n    puVar31 = (uint *)0x1;" statement_identifier : (expression_statement "puVar31 = (uint *)0x1;" (assignment_expression "puVar31 = (uint *)0x1" identifier = (cast_expression "(uint *)0x1" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;)) (expression_statement "*(uint **)(puVar46 + -0x4c) = puVar36;" (assignment_expression "*(uint **)(puVar46 + -0x4c) = puVar36" (pointer_expression "*(uint **)(puVar46 + -0x4c)" * (cast_expression "(uint **)(puVar46 + -0x4c)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar46 + -0x4c)" ( (binary_expression "puVar46 + -0x4c" identifier + number_literal) )))) = identifier) ;) }) while (parenthesized_expression "( true )" ( true )) ;)) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE 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 (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE 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 IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE 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 (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 IDENT ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT - LIT) | LIT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression (binary_expression IDENT / LIT) + LIT) )) * LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (unary_expression - (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) & LIT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression & IDENT) + IDENT)) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( (pointer_expression & IDENT) ))))) ;) }))) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT , IDENT )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT < IDENT) )) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( LIT ))) ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression (parenthesized_expression ( (binary_expression (binary_expression IDENT / IDENT) + LIT) )) * LIT) < LIT) )) (compound_statement { (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT < IDENT) )) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( LIT ))) ;) })) (expression_statement (assignment_expression IDENT = (unary_expression - (parenthesized_expression ( (binary_expression (binary_expression (binary_expression (parenthesized_expression ( (binary_expression IDENT / IDENT) )) * LIT) + LIT) & LIT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + IDENT) + LIT) )))) ;) }) (else_clause else (compound_statement { (for_statement for ( (assignment_expression IDENT = (binary_expression IDENT + LIT)) ; (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) < IDENT) ; (assignment_expression IDENT = (binary_expression IDENT + LIT)) ) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT - LIT)) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( LIT ))) ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( (pointer_expression & IDENT) , (binary_expression (parenthesized_expression ( (binary_expression (binary_expression IDENT / IDENT) + LIT) )) * LIT) ))))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }))) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( LIT ))) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression LIT / IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT >> LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - (parenthesized_expression ( (binary_expression (binary_expression IDENT >> LIT) & LIT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - (parenthesized_expression ( (binary_expression IDENT & LIT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - (parenthesized_expression ( (binary_expression (binary_expression IDENT >> LIT) & LIT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression (binary_expression IDENT >> LIT) & LIT) )) + (parenthesized_expression ( (binary_expression IDENT & LIT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression (binary_expression IDENT >> LIT) & LIT) )) + (parenthesized_expression ( (binary_expression IDENT & LIT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression (binary_expression IDENT >> LIT) & LIT) )) + (parenthesized_expression ( (binary_expression IDENT & LIT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (parenthesized_expression ( (binary_expression IDENT >> LIT) )) + IDENT) & LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (parenthesized_expression ( (binary_expression IDENT >> LIT) )) + IDENT) & LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression IDENT >> LIT) )) + IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (parenthesized_expression ( (binary_expression IDENT >> LIT) )) + IDENT) & LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression IDENT >> LIT) )) + IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression IDENT >> LIT) )) + IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression LIT << (parenthesized_expression ( (binary_expression (binary_expression (binary_expression (parenthesized_expression ( (binary_expression IDENT >> LIT) )) + IDENT) + (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (binary_expression (parenthesized_expression ( (binary_expression IDENT >> LIT) )) + IDENT) & LIT) )) - (parenthesized_expression ( (binary_expression (binary_expression (parenthesized_expression ( (binary_expression IDENT >> LIT) )) + IDENT) & LIT) ))) ))) & LIT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT < IDENT)) ;) (if_statement if (parenthesized_expression ( IDENT )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) })) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT % LIT) < (binary_expression (binary_expression IDENT % LIT) + IDENT))) ;) (if_statement if (parenthesized_expression ( IDENT )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT * LIT)) ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression LIT < IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT / LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT / LIT)) ;) }) while (parenthesized_expression ( IDENT )) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) })) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) })) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) })) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) })) }))) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression LIT << (parenthesized_expression ( (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression LIT - (parenthesized_expression ( (binary_expression IDENT - (cast_expression ( (type_descriptor TYPE) ) (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ (binary_expression IDENT >> IDENT) ])))) ))) ))) >> LIT) & LIT) ))) )) + (parenthesized_expression ( (binary_expression LIT << (parenthesized_expression ( (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression LIT - (parenthesized_expression ( (binary_expression IDENT - (cast_expression ( (type_descriptor TYPE) ) (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ (binary_expression IDENT >> IDENT) ])))) ))) ))) >> LIT) & LIT) ))) ))) )) - LIT) | LIT) )) / LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression IDENT * LIT)) ))))) )) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) + LIT) + (binary_expression IDENT * LIT))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ IDENT ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) })) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( LIT ))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( LIT ))) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT / IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT % IDENT) < (binary_expression (binary_expression IDENT % IDENT) + IDENT))) ;) (if_statement if (parenthesized_expression ( IDENT )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT * IDENT)) ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT / IDENT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) while (parenthesized_expression ( (binary_expression IDENT <= IDENT) )) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT * LIT) - (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT != IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (parenthesized_expression ( (binary_expression IDENT & LIT) )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) while (parenthesized_expression ( IDENT )) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT >> LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression LIT << (parenthesized_expression ( (binary_expression IDENT & LIT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression (binary_expression IDENT - LIT) | LIT) )) / LIT)) ;) (do_statement do (compound_statement { (while_statement while (parenthesized_expression ( BOOL )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression IDENT * LIT)) ))))) )) == LIT) )) (break_statement break ;)) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT * LIT) - (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) )))) ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (parenthesized_expression ( (binary_expression IDENT & LIT) )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (goto_statement goto statement_identifier ;)) })) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) + LIT) + (binary_expression IDENT * LIT))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( LIT ))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( LIT ))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT % IDENT) <= (binary_expression IDENT % IDENT)) )) (goto_statement goto statement_identifier ;)) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT << LIT) < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ IDENT ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT * LIT) - (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (parenthesized_expression ( (binary_expression IDENT & LIT) )))) ;) }) while (parenthesized_expression ( (binary_expression IDENT <= IDENT) )) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (parenthesized_expression ( (binary_expression (binary_expression IDENT - LIT) | LIT) )) / LIT) + LIT)) ;)) (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 LIT << (parenthesized_expression ( (binary_expression IDENT & LIT) )))) ;) (do_statement do (compound_statement { (while_statement while (parenthesized_expression ( BOOL )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression IDENT * LIT)) ))))) )) == LIT) )) (break_statement break ;)) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT * LIT) - (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) )))) ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (parenthesized_expression ( (binary_expression IDENT & LIT) )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (goto_statement goto statement_identifier ;)) })) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) + LIT) + (binary_expression IDENT * LIT))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ IDENT ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT * LIT) - (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (parenthesized_expression ( (binary_expression IDENT & LIT) )))) ;) }) while (parenthesized_expression ( (binary_expression IDENT <= IDENT) )) ;) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression (pointer_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) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ IDENT ]) = IDENT) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT ))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) })))) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( ))) ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (compound_statement { (return_statement return IDENT ;) })) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression 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 * (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 IDENT = (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) )) + LIT) )) * 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 * (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 *)) ) (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 + LIT) )))) = (pointer_expression * IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression IDENT + LIT) )) * LIT)) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) )) + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression IDENT + LIT) )) * 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 LIT < 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 = (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) ))))) ;) (goto_statement goto 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 (binary_expression IDENT + IDENT) + LIT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + IDENT) + LIT) )))) ;) (labeled_statement statement_identifier : (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 + LIT) )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression 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 = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - LIT)) ;) }) while (parenthesized_expression ( (binary_expression 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 = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (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 *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + (parenthesized_expression ( (binary_expression LIT - IDENT) )))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression (parenthesized_expression ( IDENT )) * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (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 IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (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 + LIT) )))) = (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 * IDENT) = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT - LIT) <= IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT - LIT)) ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) 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 = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;)) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression 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) )))) + (binary_expression (parenthesized_expression ( (binary_expression IDENT - LIT) )) * LIT)) ))))) )) (argument_list ( IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT >> LIT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT >> LIT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT >> LIT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) })) })) })) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (parenthesized_expression ( IDENT )) * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + (parenthesized_expression ( (binary_expression (unary_expression - IDENT) & IDENT) ))) )))) + IDENT)) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (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) )))) + (parenthesized_expression ( (binary_expression (unary_expression - IDENT) & IDENT) ))) )))) - LIT)) ;) }))) (expression_statement (assignment_expression IDENT = (binary_expression (binary_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) )))) + (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 , (binary_expression IDENT >> (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 IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT - IDENT) ))) <= IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT - IDENT)) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT != LIT) )))) )))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = 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 * (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 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 * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression IDENT + (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ))))) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = IDENT) ;) }) while (parenthesized_expression ( (binary_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) ))))) ;) (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 (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression IDENT + LIT)) ;) (labeled_statement statement_identifier : (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_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 *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (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 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 *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT <= IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression 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) )))) + (binary_expression (parenthesized_expression ( (binary_expression IDENT + LIT) )) * LIT)) ))))) )) (argument_list ( IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT >> LIT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT >> LIT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT >> LIT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) })) })) })) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (parenthesized_expression ( IDENT )) * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + (parenthesized_expression ( (binary_expression (unary_expression - IDENT) & IDENT) ))) )))) + IDENT)) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (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) )))) + (parenthesized_expression ( (binary_expression (unary_expression - IDENT) & IDENT) ))) )))) - LIT)) ;) }))) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + 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 , (binary_expression IDENT >> (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 IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT != LIT) )))) )))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) while (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 = (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 * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = 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 * 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 (parenthesized_expression ( IDENT )) * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT << LIT) )) >> LIT) ))) ))))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (binary_expression (subscript_expression IDENT [ (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + IDENT) ))) ]) < (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))))) ^ LIT) )) - (cast_expression ( (type_descriptor TYPE) ) IDENT)) ))) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT * LIT) - (binary_expression (binary_expression IDENT * IDENT) * IDENT))) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) })) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression (binary_expression (binary_expression IDENT * IDENT) * IDENT) + (binary_expression IDENT * LIT))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (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) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) - (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (subscript_expression IDENT [ (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) ))) ]) == 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 (cast_expression ( (type_descriptor TYPE) ) IDENT) <= (pointer_expression * (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 = IDENT) ;)) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression 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 IDENT + LIT) ))))) )) (argument_list ( 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 (subscript_expression IDENT [ (cast_expression ( (type_descriptor TYPE) ) IDENT) ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + (parenthesized_expression ( (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT != LIT) ))) - (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (subscript_expression IDENT [ (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != LIT) )) - LIT) ))) ))) ]) == 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 * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) < (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) (goto_statement goto statement_identifier ;)) (labeled_statement statement_identifier : (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 * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + 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 = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (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 = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) while (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT) )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) )))) ;) })) (expression_statement (assignment_expression (pointer_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) ))))) ;) (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 *)) ) (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 * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))))) )) (compound_statement { (return_statement return (pointer_expression * (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 * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (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 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 * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (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 *)) ) (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 + LIT) )))) = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) - (cast_expression ( (type_descriptor TYPE) ) IDENT)) ))) <= IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) - (cast_expression ( (type_descriptor TYPE) ) IDENT)) )))) ;) })) (expression_statement (assignment_expression IDENT = 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 { (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 *)) ) LIT)) ;) })) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (subscript_expression IDENT [ LIT ]))) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) (else_clause else (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 *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) 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 *)) ) (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) - (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) ))) )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) ))) )))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( IDENT ))) * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + (parenthesized_expression ( (binary_expression IDENT >> LIT) ))) + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT) + (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) + LIT) )))) * (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 (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) ))))) * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (binary_expression (parenthesized_expression ( (binary_expression IDENT - LIT) )) * LIT) + (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) + LIT) ))))) << (parenthesized_expression ( (binary_expression (binary_expression (parenthesized_expression ( (binary_expression (binary_expression (parenthesized_expression ( IDENT )) * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) - (cast_expression ( (type_descriptor TYPE) ) (cast_expression ( (type_descriptor TYPE) ) IDENT))) )) - (cast_expression ( (type_descriptor TYPE) ) IDENT)) & LIT) )))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) (else_clause else (if_statement if (parenthesized_expression ( (binary_expression IDENT < (pointer_expression & IDENT)) )) (compound_statement { (expression_statement (call_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 = (binary_expression IDENT + LIT)) ;) }) (else_clause else (if_statement if (parenthesized_expression ( (binary_expression IDENT < (pointer_expression & IDENT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) - IDENT)) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) - IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < (cast_expression ( (type_descriptor TYPE) ) (pointer_expression * IDENT))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( IDENT , (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 = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + 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 , (binary_expression (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) - (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) - LIT) )) * LIT) + 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)) ))))) * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (parenthesized_expression ( (binary_expression IDENT - LIT) )) * LIT) + IDENT) ))))) << (parenthesized_expression ( (binary_expression (binary_expression (parenthesized_expression ( (binary_expression (binary_expression (parenthesized_expression ( IDENT )) * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + (parenthesized_expression ( (binary_expression IDENT >> LIT) ))) + LIT) )))) - (binary_expression (parenthesized_expression ( IDENT )) * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + (parenthesized_expression ( (binary_expression IDENT >> LIT) ))) + LIT) ))))) )) - (binary_expression (parenthesized_expression ( IDENT )) * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + (parenthesized_expression ( (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) - (cast_expression ( (type_descriptor TYPE) ) IDENT)) ))) >> LIT) ))) + LIT) ))))) & 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 + (parenthesized_expression ( (binary_expression IDENT != LIT) ))) )))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ (cast_expression ( (type_descriptor TYPE) ) IDENT) ]) = IDENT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (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 (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) , 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 (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) ))))) )) (argument_list ( IDENT , IDENT , (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 *)) ) (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) }))) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (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 (binary_expression (parenthesized_expression ( IDENT )) * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (parenthesized_expression ( (binary_expression IDENT - LIT) )) + (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) + LIT) )))) - (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT != IDENT) )))) )))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (binary_expression (parenthesized_expression ( (binary_expression IDENT - LIT) )) * LIT) + (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 * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (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) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) ))) ]) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) == LIT) )) ;) })) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) (else_clause else (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT < (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) || (parenthesized_expression ( (binary_expression IDENT <= (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) )))) ))) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) (else_clause else (compound_statement { (expression_statement (call_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 = (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 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 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 = (subscript_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 * (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 *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (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) )))) = (pointer_expression * IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < LIT) )) (compound_statement { (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) )))) = (unary_expression - IDENT)) ;) (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 (binary_expression IDENT + IDENT) + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + IDENT) + LIT)) ;) }) (else_clause else (compound_statement { (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 IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (goto_statement goto statement_identifier ;)) (labeled_statement statement_identifier : (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;)) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( (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 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 * (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 + LIT) )))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (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) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) ^ IDENT) ))) < LIT) )) || (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == LIT) ))) )) (compound_statement { (expression_statement (assignment_expression 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 * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (goto_statement goto statement_identifier ;)) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) 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 IDENT + LIT) ))))) )) (argument_list ( 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) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (labeled_statement statement_identifier : (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( ))) ;)) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) })) }))) (if_statement if (parenthesized_expression ( (binary_expression (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 *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) ^ IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( ))) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( IDENT , IDENT ))))) ;)) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (return_statement return LIT ;) })) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (unary_expression - (cast_expression ( (type_descriptor TYPE) ) IDENT)))) ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) < (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) }))) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( IDENT , LIT , IDENT , IDENT )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (cast_expression ( (type_descriptor TYPE) ) IDENT)) + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (pointer_expression * IDENT) == LIT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) - IDENT)) ;) (goto_statement goto statement_identifier ;) })) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression LIT < (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) (compound_statement { (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) == LIT) )) ;) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) - IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) - (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (pointer_expression * IDENT) == LIT) ))))) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (pointer_expression * IDENT) == LIT) )))) ;) }))) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;)) (return_statement return 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 * (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) )))) + (binary_expression (parenthesized_expression ( (binary_expression IDENT - LIT) )) * LIT)) ))))) )) (argument_list ( 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) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT >> LIT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT >> LIT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT >> LIT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) })) })) })) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (parenthesized_expression ( IDENT )) * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + (parenthesized_expression ( (binary_expression (unary_expression - IDENT) & IDENT) ))) )))) + IDENT)) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (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) )))) + (parenthesized_expression ( (binary_expression (unary_expression - IDENT) & IDENT) ))) )))) - LIT)) ;) }))) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression IDENT >> (parenthesized_expression ( (binary_expression IDENT & LIT) )))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (parenthesized_expression ( (binary_expression IDENT - LIT) ))) ))))) + IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT - IDENT) ))) <= IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT - IDENT)) ;) })) (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 = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) 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) ;) }) while (parenthesized_expression ( BOOL )) ;)) })))
(function_definition "int FUN_000219dc(int param_1,uint param_2,uint param_3)\n\n{\n  uint *puVar1;\n  byte bVar2;\n  bool bVar3;\n  bool bVar4;\n  undefined *puVar5;\n  int iVar6;\n  uint uVar7;\n  uint *puVar8;\n  uint *puVar9;\n  undefined4 uVar10;\n  uint uVar11;\n  uint uVar12;\n  undefined1 *puVar13;\n  undefined *puVar14;\n  undefined4 *puVar15;\n  uint *puVar16;\n  int *piVar17;\n  uint uVar18;\n  undefined4 *puVar19;\n  uint *puVar20;\n  uint uVar21;\n  uint *puVar22;\n  uint uVar23;\n  int iVar24;\n  uint uVar25;\n  uint uVar26;\n  uint uVar27;\n  uint uVar28;\n  int iVar29;\n  uint *puVar30;\n  uint *puVar31;\n  int *piVar32;\n  int iVar33;\n  int *piVar34;\n  uint uVar35;\n  uint *puVar36;\n  uint uVar37;\n  uint *puVar38;\n  int iVar39;\n  uint uVar40;\n  int iVar41;\n  uint uVar42;\n  undefined *puVar43;\n  code *pcVar44;\n  undefined1 *puVar45;\n  undefined1 *puVar46;\n  undefined1 *puVar47;\n  undefined1 *puVar48;\n  undefined1 *puVar49;\n  undefined1 *puVar50;\n  code *pcVar51;\n  code *pcVar52;\n  uint uVar53;\n  uint uVar54;\n  undefined1 auStack_48 [16];\n  int local_30;\n  int local_2c;\n  \n  puVar5 = PTR___stack_chk_guard_0009d540;\n  puVar45 = auStack_48;\n  uVar37 = param_2 - 5 | 1;\n  local_30 = 0;\n  local_2c = *(int *)PTR___stack_chk_guard_0009d540;\n  uVar18 = (uVar37 / 0x60 + 1) * 4;\n  if (uVar18 < 0x7f01) {\n    iVar6 = -(uVar18 + 7 & 0xfffffff8);\n    puVar45 = auStack_48 + iVar6;\n    puVar13 = &stack0xffffffc8 + iVar6;\n  }\n  else {\n    puVar13 = (undefined1 *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&local_30);\n  }\n  iVar6 = (*(code *)PTR___gmp_primesieve_0009d144)(puVar13,param_2);\n  uVar7 = iVar6 + 1;\n  puVar8 = (uint *)(PTR___gmp_limbroots_table_0009d3d4 + 0x1c);\n  uVar18 = 8;\n  do {\n    uVar23 = uVar18;\n    uVar11 = *puVar8;\n    puVar8 = puVar8 + -1;\n    uVar18 = uVar23 - 1;\n  } while (uVar11 < param_2);\n  if (uVar23 == 0) {\n    trap(7);\n  }\n  puVar8 = (uint *)(PTR___gmp_limbroots_table_0009d3d4 + 0x1c);\n  uVar18 = 8;\n  if ((uVar7 / uVar23 + 1) * 4 < 0x7f01) {\n    do {\n      uVar23 = uVar18;\n      uVar11 = *puVar8;\n      puVar8 = puVar8 + -1;\n      uVar18 = uVar23 - 1;\n    } while (uVar11 < param_2);\n    if (uVar23 == 0) {\n      trap(7);\n    }\n    iVar6 = -((uVar7 / uVar23) * 4 + 0xb & 0xfffffff8);\n    puVar46 = puVar45 + iVar6;\n    puVar8 = (uint *)(puVar45 + iVar6 + 0x10);\n  }\n  else {\n    for (puVar14 = PTR___gmp_limbroots_table_0009d3d4 + 0x18; *(uint *)(puVar14 + 4) < param_2;\n        puVar14 = puVar14 + -4) {\n      uVar18 = uVar18 - 1;\n    }\n    if (uVar18 == 0) {\n      trap(7);\n    }\n    puVar8 = (uint *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)\n                               (&local_30,(uVar7 / uVar18 + 1) * 4);\n    puVar46 = puVar45;\n  }\n  uVar18 = param_2 - param_3;\n  if (param_2 == 0) {\n    trap(7);\n  }\n  uVar53 = 0xffffffff / param_2;\n  uVar40 = param_2 >> 1;\n  uVar11 = uVar18 - (uVar18 >> 1 & 0x55555555);\n  uVar23 = param_2 - (uVar40 & 0x55555555);\n  uVar7 = param_3 - (param_3 >> 1 & 0x55555555);\n  uVar26 = (uVar11 >> 2 & 0x33333333) + (uVar11 & 0x33333333);\n  uVar23 = (uVar23 >> 2 & 0x33333333) + (uVar23 & 0x33333333);\n  uVar11 = (uVar7 >> 2 & 0x33333333) + (uVar7 & 0x33333333);\n  uVar7 = (uVar26 >> 4) + uVar26 & 0xf0f0f0f;\n  uVar23 = (uVar23 >> 4) + uVar23 & 0xf0f0f0f;\n  uVar7 = (uVar7 >> 8) + uVar7;\n  uVar11 = (uVar11 >> 4) + uVar11 & 0xf0f0f0f;\n  uVar23 = (uVar23 >> 8) + uVar23;\n  uVar11 = (uVar11 >> 8) + uVar11;\n  uVar7 = 1 << ((uVar11 >> 0x10) + uVar11 +\n                (((uVar7 >> 0x10) + uVar7 & 0xff) - ((uVar23 >> 0x10) + uVar23 & 0xff)) & 0x1f);\n  bVar3 = uVar53 < uVar7;\n  if (bVar3) {\n    *puVar8 = uVar7;\n    uVar7 = 1;\n  }\n  uVar11 = 0;\n  uVar23 = param_2;\n  uVar26 = param_3;\n  do {\n    bVar4 = uVar23 % 3 < uVar26 % 3 + uVar11;\n    if (bVar4) {\n      uVar7 = uVar7 * 3;\n    }\n    uVar11 = (uint)bVar4;\n    bVar4 = 8 < uVar23;\n    uVar23 = uVar23 / 3;\n    uVar26 = uVar26 / 3;\n  } while (bVar4);\n  uVar11 = param_2 - 1;\n  if (uVar11 < 0x10000) {\n    iVar6 = 0x18;\n    if (uVar11 < 0x100) {\n      iVar6 = 0x20;\n    }\n    iVar24 = 9;\n    if (uVar11 < 0x100) {\n      iVar24 = 1;\n    }\n  }\n  else {\n    iVar6 = 8;\n    if (uVar11 < 0x1000000) {\n      iVar6 = 0x10;\n    }\n    iVar24 = 0x19;\n    if (uVar11 < 0x1000000) {\n      iVar24 = 0x11;\n    }\n  }\n  iVar29 = 0;\n  uVar28 = 1;\n  uVar42 = (((1 << ((int)(0x1f - (iVar6 - (uint)(byte)PTR___gmpn_clz_tab_0009d18c[uVar11 >> iVar24])\n                         ) >> 1 & 0x1fU)) +\n            (1 << ((int)(0x1e - (iVar6 - (uint)(byte)PTR___gmpn_clz_tab_0009d18c[uVar11 >> iVar24]))\n                   >> 1 & 0x1fU))) - 5U | 1) / 3;\n  uVar26 = uVar42 + 1;\n  uVar11 = (uint)bVar3;\n  uVar23 = 0;\n  do {\n    uVar35 = uVar23 + 1;\n    uVar21 = uVar11;\n    if ((uVar28 & *(uint *)(puVar13 + iVar29 * 4)) == 0) {\n      uVar12 = (uVar35 & 1) + 1 + uVar35 * 3;\n      if (uVar53 < uVar7) {\n        uVar21 = uVar11 + 1;\n        puVar8[uVar11] = uVar7;\n        uVar7 = 1;\n      }\n      uVar27 = 0;\n      uVar11 = param_3;\n      uVar25 = param_2;\n      do {\n        if (uVar12 == 0) {\n          trap(7);\n        }\n        if (uVar12 == 0) {\n          trap(7);\n        }\n        uVar54 = uVar25 / uVar12;\n        bVar3 = uVar25 % uVar12 < uVar11 % uVar12 + uVar27;\n        if (bVar3) {\n          uVar7 = uVar7 * uVar12;\n        }\n        uVar27 = (uint)bVar3;\n        uVar11 = uVar11 / uVar12;\n        uVar25 = uVar54;\n      } while (uVar12 <= uVar54);\n    }\n    uVar28 = uVar28 * 2 - ((int)uVar28 >> 0x1f);\n    bVar3 = uVar23 != uVar42;\n    iVar29 = iVar29 + (uVar28 & 1);\n    uVar11 = uVar21;\n    uVar23 = uVar35;\n  } while (bVar3);\n  uVar23 = uVar26 >> 5;\n  uVar11 = 1 << (uVar26 & 0x1f);\n  uVar28 = (uVar40 - 5 | 1) / 3;\n  do {\n    while( true ) {\n      uVar26 = uVar26 + 1;\n      uVar42 = uVar21;\n      if ((uVar11 & *(uint *)(puVar13 + uVar23 * 4)) == 0) break;\nLAB_00021e80:\n      uVar11 = uVar11 * 2 - ((int)uVar11 >> 0x1f);\n      uVar23 = uVar23 + (uVar11 & 1);\n      uVar21 = uVar42;\n      if (uVar28 < uVar26) goto LAB_00021f04;\n    }\n    uVar12 = (uVar26 & 1) + 1 + uVar26 * 3;\n    if (uVar12 == 0) {\n      trap(7);\n    }\n    if (uVar12 == 0) {\n      trap(7);\n    }\n    if (param_3 % uVar12 <= param_2 % uVar12) goto LAB_00021e80;\n    if (uVar53 << 1 < uVar7) {\n      uVar42 = uVar21 + 1;\n      puVar8[uVar21] = uVar7;\n      uVar7 = uVar12;\n      goto LAB_00021e80;\n    }\n    uVar11 = uVar11 * 2 - ((int)uVar11 >> 0x1f);\n    uVar7 = uVar7 * uVar12;\n    uVar23 = uVar23 + (uVar11 & 1);\n  } while (uVar26 <= uVar28);\nLAB_00021f04:\n  uVar18 = (uVar18 - 5 | 1) / 3 + 1;\n  uVar23 = uVar18 >> 5;\n  uVar37 = uVar37 / 3;\n  uVar11 = 1 << (uVar18 & 0x1f);\n  do {\n    while( true ) {\n      uVar18 = uVar18 + 1;\n      uVar26 = uVar42;\n      if ((uVar11 & *(uint *)(puVar13 + uVar23 * 4)) == 0) break;\nLAB_00021f58:\n      uVar11 = uVar11 * 2 - ((int)uVar11 >> 0x1f);\n      uVar23 = uVar23 + (uVar11 & 1);\n      uVar42 = uVar26;\n      if (uVar37 < uVar18) goto LAB_00021fb8;\n    }\n    uVar28 = (uVar18 & 1) + 1 + uVar18 * 3;\n    if ((uVar53 & 0x7fffffff) < uVar7) {\n      uVar26 = uVar42 + 1;\n      puVar8[uVar42] = uVar7;\n      uVar7 = uVar28;\n      goto LAB_00021f58;\n    }\n    uVar11 = uVar11 * 2 - ((int)uVar11 >> 0x1f);\n    uVar7 = uVar7 * uVar28;\n    uVar23 = uVar23 + (uVar11 & 1);\n  } while (uVar18 <= uVar37);\nLAB_00021fb8:\n  if (uVar26 == 0) {\n    **(uint **)(param_1 + 8) = uVar7;\n    *(undefined4 *)(param_1 + 4) = 1;\n    uVar18 = 0;\n    iVar6 = local_30;\n  }\n  else {\n    uVar18 = uVar26 + 1;\n    puVar8[uVar26] = uVar7;\n    (*(code *)PTR___gmpz_prodlimbs_0009d284)(param_1);\n    iVar6 = local_30;\n  }\n  local_30 = iVar6;\n  if (iVar6 != 0) {\n    (*(code *)PTR___gmp_tmp_reentrant_free_0009d618)();\n  }\n  iVar24 = *(int *)puVar5;\n  if (local_2c == iVar24) {\n    return iVar24;\n  }\n  pcVar51 = FUN_0002209c;\n  puVar14 = PTR___stack_chk_fail_0009d4d0;\n  (*(code *)PTR___stack_chk_fail_0009d4d0)();\n  puVar43 = puVar14 + 0x82fa4;\n  puVar47 = puVar46 + -0x90;\n  puVar50 = puVar46 + -0x90;\n  puVar49 = puVar46 + -0x90;\n  *(int *)(puVar46 + -0x24) = param_1;\n  *(undefined1 **)(puVar46 + -8) = auStack_48;\n  puVar19 = *(undefined4 **)(puVar14 + 0x7b4a4);\n  *(code **)(puVar46 + -4) = pcVar51;\n  *(int *)(puVar46 + -0x6c) = iVar6;\n  *(uint *)(puVar46 + -0xc) = uVar40;\n  *(uint *)(puVar46 + -0x10) = param_3;\n  *(uint *)(puVar46 + -0x14) = uVar37;\n  uVar37 = (((uint)puVar8 >> 5) + 1) * 3;\n  *(uint *)(puVar46 + -0x18) = uVar35;\n  *(undefined1 **)(puVar46 + -0x1c) = puVar13;\n  *(uint *)(puVar46 + -0x20) = param_2;\n  *(undefined **)(puVar46 + -0x28) = puVar5;\n  *(undefined **)(puVar46 + -0x78) = puVar43;\n  *(undefined4 **)(puVar46 + -0x70) = puVar19;\n  *(undefined4 *)(puVar46 + -0x30) = 0;\n  *(undefined4 *)(puVar46 + -0x2c) = *puVar19;\n  if (uVar37 < 0x2a) {\n    uVar37 = 0x27;\n    if (uVar18 < 0x28) {\n      uVar37 = uVar18;\n    }\n    uVar37 = (uVar37 + 1) * 4;\n  }\n  else {\n    uVar37 = ((int)uVar37 >> 1) + 0x13;\n    if (uVar18 < uVar37) {\n      uVar37 = uVar18;\n    }\n    uVar37 = (uVar37 + 1) * 4;\n    pcVar51 = *(code **)(puVar14 + 0x7b254);\n    if (0x7f00 < uVar37) {\n      *(uint *)(puVar46 + 8) = uVar18;\n      puVar38 = (uint *)(*pcVar51)(puVar46 + -0x30);\n      puVar43 = *(undefined **)(puVar46 + -0x78);\n      uVar18 = *(uint *)(puVar46 + 8);\n      goto LAB_0002214c;\n    }\n  }\n  iVar6 = -(uVar37 + 7 & 0xfffffff8);\n  puVar47 = puVar46 + iVar6 + -0x90;\n  puVar38 = (uint *)(puVar46 + iVar6 + -0x78);\nLAB_0002214c:\n  iVar24 = *(int *)(puVar43 + -0x7c6c);\n  puVar36 = (uint *)(puVar47 + -0x40);\n  puVar31 = (uint *)(iVar24 + 0x1c);\n  iVar6 = 8;\n  do {\n    iVar29 = iVar6;\n    puVar9 = (uint *)*puVar31;\n    puVar31 = puVar31 + -1;\n    iVar6 = iVar29 + -1;\n  } while (puVar9 < puVar8);\n  *(int *)(puVar46 + -0x68) = iVar29;\n  puVar31 = (uint *)(iVar24 + 0x1c);\n  uVar37 = 8;\n  do {\n    uVar7 = uVar37;\n    uVar11 = *puVar31;\n    puVar31 = puVar31 + -1;\n    uVar37 = uVar7 - 1;\n  } while (uVar11 < uVar18);\n  uVar10 = *(undefined4 *)(puVar43 + -0x7d3c);\n  iVar6 = 0x11;\n  *(undefined4 *)(puVar46 + -0x48) = 0;\n  *(undefined4 *)(puVar46 + -100) = uVar10;\n  iVar24 = *(int *)(puVar43 + -0x7e20);\n  *(undefined4 *)(puVar46 + -0x5c) = 0x3fffffff;\n  iVar29 = (int)puVar8 + (1 - uVar18);\n  *(uint *)(puVar46 + -0x40) = (uint)*(byte *)(iVar24 + 7);\n  *(undefined4 *)(puVar46 + -0x3c) = *(undefined4 *)(puVar43 + -0x7eb4);\n  *(uint *)(puVar46 + -0x60) = uVar18 + 1;\n  iVar24 = *(int *)(puVar46 + -0x60);\n  *puVar38 = 1;\n  *(undefined4 *)(puVar46 + -0x44) = 1;\n  *(int *)(puVar46 + -0x34) = *(int *)(puVar43 + -0x7fe4) + -0x31a4;\n  *(int *)(puVar46 + -0x38) = *(int *)(puVar43 + -0x7fd4) + 0x3630;\n  *puVar36 = 0x260eeeeb;\n  if (iVar24 - 0x11U <= uVar7) {\n    uVar7 = iVar24 - 0x11U;\n  }\n  puVar8 = (uint *)0x1;\n  iVar39 = iVar6;\n  if (uVar7 == 0) goto LAB_00022534;\nLAB_00022234:\n  puVar31 = (uint *)0x1;\n  iVar41 = *(int *)(puVar46 + -0x40);\n  *(uint **)(puVar46 + -0x4c) = puVar8;\n  *(uint **)(puVar46 + -0x50) = puVar38;\n  do {\n    iVar39 = iVar6 + uVar7;\n    uVar18 = (**(code **)(*(int *)(puVar46 + -0x34) + (uVar7 - 1) * 4))(iVar6);\n    if ((uVar18 & 0xff) == 0) {\n      uVar37 = uVar18 >> 8;\n      iVar6 = 6;\n      if ((uVar37 & 0xff) == 0) {\n        uVar37 = uVar18 >> 0x10;\n        iVar6 = 0xe;\n        if ((uVar37 & 0xff) == 0) {\n          uVar37 = uVar18 >> 0x18;\n          iVar6 = 0x1e;\n          if (uVar37 != 0) {\n            iVar6 = 0x16;\n          }\n        }\n      }\n      uVar37 = (uint)*(byte *)(*(int *)(puVar46 + -0x3c) + (-uVar37 & uVar37)) + iVar6;\n    }\n    else {\n      uVar37 = *(byte *)(*(int *)(puVar46 + -0x3c) + (-uVar18 & uVar18)) - 2;\n    }\n    iVar41 = iVar41 + *(byte *)(*(int *)(puVar46 + -0x38) + (uVar7 - 1)) + uVar37;\n    uVar18 = (**(code **)(*(int *)(puVar46 + -0x78) + -0x7f9c))\n                       (puVar36,puVar36,puVar31,uVar18 >> (uVar37 & 0x1f));\n    puVar43 = *(undefined **)(puVar46 + -0x78);\n    if ((uint)(iVar24 - iVar39) <= uVar7) {\n      uVar7 = iVar24 - iVar39;\n    }\n    puVar8 = puVar36 + (int)puVar31;\n    puVar31 = (uint *)((int)puVar31 + (uint)(uVar18 != 0));\n    *puVar8 = uVar18;\n    if (uVar7 == 0) {\n      puVar38 = *(uint **)(puVar46 + -0x50);\n      puVar8 = *(uint **)(puVar46 + -0x4c);\n      *(int *)(puVar46 + -0x40) = iVar41;\n      *(uint **)(puVar46 + -0x4c) = puVar36 + (int)((int)puVar31 + *(int *)(puVar46 + -0x5c));\n      goto LAB_00022340;\n    }\n    iVar6 = iVar39;\n  } while (puVar31 != (uint *)0x14);\n  puVar8 = *(uint **)(puVar46 + -0x4c);\n  puVar38 = *(uint **)(puVar46 + -0x50);\n  *(int *)(puVar46 + -0x40) = iVar41;\n  *(uint **)(puVar46 + -0x4c) = puVar36 + 0x13;\nLAB_00022340:\n  do {\n    iVar41 = iVar39 - *(int *)(puVar46 + -0x44);\n    iVar24 = *(int *)(puVar46 + -0x5c);\n    iVar6 = iVar41;\n    if (iVar41 != 0) {\n      *(uint *)(puVar46 + -0x44) = uVar7;\n      *(uint **)(puVar46 + -0x50) = puVar31;\n      *(uint **)(puVar46 + -0x54) = puVar36;\n      *(int *)(puVar46 + -0x58) = iVar39;\n      iVar6 = *(int *)(puVar46 + -0x48);\n      iVar39 = *(int *)(puVar46 + -0x68);\n      iVar24 = iVar29;\n      do {\n        iVar33 = iVar41;\n        if (iVar39 <= iVar41) {\n          iVar33 = iVar39;\n        }\n        iVar29 = iVar24 + iVar33;\n        uVar18 = (**(code **)(*(int *)(puVar46 + -0x34) + (iVar33 + -1) * 4))(iVar24);\n        if ((uVar18 & 0xff) == 0) {\n          uVar37 = uVar18 >> 8;\n          iVar24 = 6;\n          if ((uVar37 & 0xff) == 0) {\n            uVar37 = uVar18 >> 0x10;\n            iVar24 = 0xe;\n            if ((uVar37 & 0xff) == 0) {\n              uVar37 = uVar18 >> 0x18;\n              iVar24 = 0x16;\n              if (uVar37 == 0) {\n                iVar24 = 0x1e;\n              }\n            }\n          }\n          uVar37 = (uint)*(byte *)(*(int *)(puVar46 + -0x3c) + (-uVar37 & uVar37)) + iVar24;\n        }\n        else {\n          uVar37 = *(byte *)(*(int *)(puVar46 + -0x3c) + (-uVar18 & uVar18)) - 2;\n        }\n        iVar41 = iVar41 - iVar33;\n        iVar6 = iVar6 + *(byte *)(*(int *)(puVar46 + -0x38) + iVar33 + -1) + uVar37;\n        uVar18 = (**(code **)(*(int *)(puVar46 + -0x78) + -0x7f9c))\n                           (puVar38,puVar38,puVar8,uVar18 >> (uVar37 & 0x1f));\n        puVar43 = *(undefined **)(puVar46 + -0x78);\n        puVar31 = puVar38 + (int)puVar8;\n        puVar8 = (uint *)((int)puVar8 + (uint)(uVar18 != 0));\n        *puVar31 = uVar18;\n        iVar24 = iVar29;\n      } while (iVar41 != 0);\n      uVar7 = *(uint *)(puVar46 + -0x44);\n      puVar31 = *(uint **)(puVar46 + -0x50);\n      puVar36 = *(uint **)(puVar46 + -0x54);\n      iVar39 = *(int *)(puVar46 + -0x58);\n      *(int *)(puVar46 + -0x48) = iVar6;\n      iVar24 = *(int *)(puVar46 + -0x5c);\n    }\n    uVar37 = *puVar36;\n    pcVar51 = *(code **)(puVar43 + -0x7bc0);\n    uVar18 = (uint)*(byte *)(*(int *)(puVar46 + -100) + ((uVar37 << 0x18) >> 0x19));\n    puVar8 = (uint *)((int)puVar8 +\n                     ((puVar38[(int)((int)puVar8 + iVar24)] < **(uint **)(puVar46 + -0x4c) ^ 1) -\n                     (int)puVar31));\n    iVar24 = uVar18 * 2 - uVar18 * uVar18 * uVar37;\n    if ((int)puVar8 < (int)puVar31) {\n      puVar31 = puVar8;\n    }\n    *(uint **)(puVar47 + -0x48) = puVar31;\n    *(uint *)(puVar47 + -0x44) = iVar24 * iVar24 * uVar37 + iVar24 * -2;\n    puVar9 = puVar38;\n    puVar22 = puVar8;\n    (*pcVar51)(puVar38,puVar38,puVar8,puVar36);\n    iVar24 = *(int *)(puVar46 + -0x78);\n    if (uVar7 == 0) {\n      if (*(int *)(puVar46 + -0x48) == *(int *)(puVar46 + -0x40)) {\n        puVar8 = (uint *)((int)puVar8 - (uint)(puVar38[(int)((int)puVar8 + -1)] == 0));\n        pcVar51 = *(code **)(iVar24 + -0x7a80);\n        if ((int)puVar8 <= **(int **)(puVar46 + -0x6c)) goto LAB_00022600;\nLAB_00022734:\n        puVar9 = puVar8;\n        puVar19 = (undefined4 *)(*pcVar51)(*(undefined4 *)(puVar46 + -0x6c));\n        iVar24 = *(int *)(puVar46 + -0x78);\n      }\n      else {\n        puVar9 = puVar38;\n        puVar22 = puVar8;\n        uVar18 = (**(code **)(iVar24 + -0x7ad4))(puVar38);\n        iVar24 = *(int *)(puVar46 + -0x78);\n        puVar38[(int)puVar8] = uVar18;\n        puVar8 = (uint *)((int)puVar8 +\n                         ((uint)(uVar18 != 0) -\n                         (uint)(puVar38[(int)((int)puVar8 + ((uVar18 != 0) - 1))] == 0)));\n        pcVar51 = *(code **)(iVar24 + -0x7a80);\n        if (**(int **)(puVar46 + -0x6c) < (int)puVar8) goto LAB_00022734;\nLAB_00022600:\n        puVar19 = *(undefined4 **)(*(int *)(puVar46 + -0x6c) + 8);\n      }\n      *(uint **)(*(int *)(puVar46 + -0x6c) + 4) = puVar8;\n      if (puVar8 != (uint *)0x0) {\n        puVar13 = (undefined1 *)((int)puVar8 + -1);\n        puVar9 = (uint *)*puVar38;\n        if (puVar13 != (undefined1 *)0x0) {\n          puVar15 = puVar19;\n          puVar16 = puVar38 + 1;\n          do {\n            *puVar15 = puVar9;\n            puVar38 = puVar16 + 1;\n            puVar13 = puVar13 + -1;\n            puVar9 = (uint *)*puVar16;\n            puVar15 = puVar15 + 1;\n            puVar16 = puVar38;\n          } while (puVar13 != (undefined1 *)0x0);\n          puVar8 = (uint *)((int)puVar8 * 4);\n          puVar19 = (undefined4 *)((int)puVar19 + (int)(puVar8 + -1));\n        }\n        *puVar19 = puVar9;\n      }\n      puVar16 = *(uint **)(puVar46 + -0x30);\n      if (puVar16 != (uint *)0x0) {\n        (**(code **)(iVar24 + -0x7a28))();\n        iVar24 = *(int *)(puVar46 + -0x78);\n      }\n      if (*(int *)(puVar46 + -0x2c) == **(int **)(puVar46 + -0x70)) {\n        return **(int **)(puVar46 + -0x70);\n      }\n      pcVar51 = *(code **)(iVar24 + -0x7b70);\n      pcVar52 = __gmpz_bin_uiui;\n      (*pcVar51)();\n      pcVar44 = pcVar51 + 0x8289c;\n      *(uint **)(puVar47 + -0x78) = puVar31;\n      piVar32 = *(int **)(pcVar51 + 0x7ad9c);\n      *(code **)(puVar47 + -0xf0) = pcVar44;\n      *(int *)(puVar47 + -0x74) = iVar39;\n      *(code **)(puVar47 + -0x5c) = pcVar52;\n      *(undefined1 **)(puVar47 + -0x60) = puVar46 + -0x90;\n      *(int *)(puVar47 + -100) = iVar6;\n      *(int *)(puVar47 + -0x68) = iVar29;\n      *(uint **)(puVar47 + -0x6c) = puVar38;\n      *(uint **)(puVar47 + -0x70) = puVar36;\n      *(uint **)(puVar47 + -0x7c) = puVar8;\n      *(undefined4 *)(puVar47 + -0x80) = 0;\n      *(int *)(puVar47 + -0x84) = *piVar32;\n      puVar31 = puVar16;\n      puVar20 = puVar9;\n      if (puVar9 < puVar22) {\n        puVar16[1] = 0;\n        puVar30 = (uint *)0x0;\n      }\n      else {\n        puVar30 = puVar22;\n        if ((uint *)((int)puVar9 - (int)puVar22) <= puVar22) {\n          puVar30 = (uint *)((int)puVar9 - (int)puVar22);\n        }\n        puVar22 = puVar30;\n        puVar36 = puVar9;\n        if (puVar30 < (uint *)0x2) {\n          if (puVar30 == (uint *)0x0) {\n            puVar36 = (uint *)0x1;\n          }\n          *(uint **)puVar16[2] = puVar36;\n          puVar16[1] = 1;\n          puVar49 = puVar46 + -0x90;\n        }\n        else if (puVar9 < (uint *)0x23) {\n          puVar13 = (undefined1 *)((int)puVar30 + -2);\n          iVar6 = *(int *)(pcVar51 + 0x7aa7c);\n          puVar20 = (uint *)puVar16[2];\n          uVar18 = (int)puVar9 - (int)puVar30;\n          puVar36 = (uint *)(iVar6 + ((uint)puVar9 >> 1));\n          puVar30 = (uint *)(iVar6 + ((uint)puVar30 >> 1));\n          bVar2 = *(byte *)((int)puVar30 + -1);\n          puVar31 = (uint *)(uint)*(byte *)(iVar6 + (uVar18 >> 1) + -1);\n          *puVar20 = *(int *)((int)puVar13 * 4 + *(int *)(pcVar51 + 0x7a8c8) + 0x35b4) *\n                     *(int *)(*(int *)(pcVar51 + 0x7ad64) + (int)puVar9 * 4) *\n                     *(int *)((uVar18 - 2) * 4 + *(int *)(pcVar51 + 0x7a8c8) + 0x35b4) <<\n                     (((uint)*(byte *)((int)puVar36 + -1) - (int)(uint)bVar2) - (int)puVar31 & 0x1f)\n          ;\n          puVar16[1] = 1;\n          puVar22 = (uint *)(uint)bVar2;\n          puVar49 = puVar46 + -0x90;\n        }\n        else if (puVar30 < &DAT_00000011) {\n          FUN_000216e8();\n          pcVar44 = *(code **)(puVar47 + -0xf0);\n          puVar49 = puVar46 + -0x90;\n        }\n        else if (puVar30 < &DAT_00000021) {\n          uVar18 = (uint)puVar30 >> 1;\n          uVar37 = (int)puVar9 - uVar18;\n          FUN_000216e8();\n          iVar6 = *(int *)(puVar47 + -0xf0);\n          uVar7 = (int)puVar30 - uVar18;\n          if (uVar37 < 0x23) {\n            puVar50 = (undefined1 *)puVar16[1];\n            if ((int)puVar50 < (int)*puVar16) {\n              puVar8 = (uint *)puVar16[2];\n            }\n            else {\n              puVar8 = (uint *)(**(code **)(iVar6 + -0x7a80))(puVar16,puVar50 + 1);\n              iVar6 = *(int *)(puVar47 + -0xf0);\n            }\n            iVar29 = *(int *)(iVar6 + -0x7e20);\n            iVar24 = *(int *)(iVar6 + -0x7fd4) + 0x35b4;\n            uVar37 = (**(code **)(iVar6 + -0x7f9c))\n                               (puVar8,puVar8,puVar50,\n                                *(int *)((((int)puVar9 - (int)puVar30) - 2U) * 4 + iVar24) *\n                                *(int *)(*(int *)(iVar6 + -0x7b38) + uVar37 * 4) *\n                                *(int *)((uVar7 - 2) * 4 + iVar24) <<\n                                (((uint)*(byte *)(iVar29 + (uVar37 >> 1) + -1) -\n                                 (uint)*(byte *)(iVar29 + (uVar7 >> 1) + -1)) -\n                                 (uint)*(byte *)(iVar29 + ((uint)((int)puVar9 - (int)puVar30) >> 1)\n                                                + -1) & 0x1f));\n            iVar6 = *(int *)(puVar47 + -0xf0);\n            puVar30 = (uint *)(puVar50 + (uVar37 != 0));\n            puVar8[(int)puVar50] = uVar37;\n          }\n          else {\n            *(undefined4 *)(puVar47 + -0xe4) = 0x15;\n            *(undefined1 **)(puVar47 + -0xdc) = puVar47 + -0xd8;\n            FUN_000216e8(puVar47 + -0xe4,uVar37,uVar7);\n            (**(code **)(*(int *)(puVar47 + -0xf0) + -0x7ba8))(puVar16,puVar16,puVar47 + -0xe4);\n            iVar6 = *(int *)(puVar47 + -0xf0);\n            puVar8 = (uint *)puVar16[2];\n            puVar30 = (uint *)puVar16[1];\n          }\n          pcVar51 = *(code **)(iVar6 + -0x7bb4);\n          puVar38 = (uint *)((uint)*(byte *)((uVar7 - 8) + *(int *)(iVar6 + -0x7fd4) + 0x3550) -\n                            (uint)(uVar18 != uVar7));\n          *(undefined4 *)(puVar47 + -0xf8) =\n               *(undefined4 *)((uVar7 - 8) * 4 + *(int *)(iVar6 + -0x7fd4) + 0x355c);\n          *(uint **)(puVar47 + -0xf4) = puVar38;\n          puVar31 = puVar8;\n          puVar20 = puVar8;\n          puVar22 = puVar30;\n          (*pcVar51)();\n          pcVar44 = *(code **)(puVar47 + -0xf0);\n          if (puVar8[(int)((int)puVar30 + -1)] == 0) {\n            puVar9 = puVar8 + (int)puVar30;\n            do {\n              puVar1 = puVar9 + -2;\n              puVar30 = (uint *)((int)puVar30 + -1);\n              puVar9 = puVar9 + -1;\n            } while (*puVar1 == 0);\n          }\n          puVar16[1] = (uint)puVar30;\n          puVar49 = puVar50;\n        }\n        else if ((puVar30 < (uint *)0x3e8) || (puVar30 <= (uint *)((uint)puVar9 >> 4))) {\n          FUN_0002209c();\n          pcVar44 = *(code **)(puVar47 + -0xf0);\n          puVar49 = puVar46 + -0x90;\n        }\n        else {\n          FUN_000219dc();\n          pcVar44 = *(code **)(puVar47 + -0xf0);\n          puVar49 = puVar46 + -0x90;\n        }\n      }\n      if (*(int *)(puVar47 + -0x84) == *piVar32) {\n        return *piVar32;\n      }\n      pcVar51 = *(code **)(pcVar44 + -0x7b70);\n      uVar10 = 0x22b64;\n      (*pcVar51)();\n      pcVar44 = pcVar51 + 0x824d0;\n      puVar48 = puVar47 + -0x160;\n      *(uint **)(puVar47 + -0x118) = puVar16;\n      *(uint **)(puVar47 + -0x124) = puVar30;\n      piVar34 = *(int **)(pcVar51 + 0x7a9d0);\n      uVar18 = puVar22[1];\n      *(undefined1 **)(puVar47 + -0x110) = puVar49;\n      *(uint **)(puVar47 + -0x114) = puVar36;\n      *(int **)(puVar47 + -0x11c) = piVar32;\n      *(uint **)(puVar47 + -0x120) = puVar8;\n      *(undefined4 *)(puVar47 + -0x10c) = uVar10;\n      *(code **)(puVar47 + -0x150) = pcVar44;\n      *(undefined4 *)(puVar47 + -0x13c) = 0;\n      puVar8 = (uint *)puVar20[1];\n      *(int *)(puVar47 + -300) = *piVar34;\n      if ((int)uVar18 < 0) {\n        uVar37 = uVar18 * -4;\n        *(uint *)(puVar47 + -0x138) = -uVar18;\n        if (0x7f00 < uVar37) {\n          pcVar51 = *(code **)(pcVar51 + 0x7a780);\n          goto LAB_00022c88;\n        }\nLAB_00022be4:\n        iVar6 = -(uVar37 + 7 & 0xfffffff8);\n        puVar48 = puVar47 + iVar6 + -0x160;\n        puVar13 = puVar47 + iVar6 + -0x150;\n      }\n      else {\n        uVar37 = uVar18 * 4;\n        *(uint *)(puVar47 + -0x138) = uVar18;\n        pcVar51 = *(code **)(pcVar51 + 0x7a780);\n        if (uVar37 < 0x7f01) goto LAB_00022be4;\nLAB_00022c88:\n        *(uint **)(puVar47 + -0x144) = puVar22;\n        puVar13 = (undefined1 *)(*pcVar51)(puVar47 + -0x13c,uVar37);\n        pcVar44 = *(code **)(puVar47 + -0x150);\n        puVar22 = *(uint **)(puVar47 + -0x144);\n      }\n      pcVar51 = *(code **)(pcVar44 + -0x7a68);\n      puVar36 = (uint *)(puVar47 + -0x138);\n      *(undefined1 **)(puVar47 + -0x130) = puVar13;\n      puVar9 = puVar20;\n      (*pcVar51)(puVar31,puVar36,puVar20,puVar22);\n      iVar6 = *(int *)(puVar47 + -0x150);\n      if (((int)((uint)puVar8 ^ uVar18) < 0) || (*(int *)(puVar47 + -0x134) == 0)) {\n        piVar32 = *(int **)(puVar47 + -0x13c);\n        pcVar51 = *(code **)(iVar6 + -0x7a28);\n        if (piVar32 != (int *)0x0) goto LAB_00022cc0;\n      }\n      else {\n        puVar9 = (uint *)0x1;\n        puVar36 = puVar31;\n        (**(code **)(iVar6 + -0x7c9c))(puVar31);\n        piVar32 = *(int **)(puVar47 + -0x13c);\n        iVar6 = *(int *)(puVar47 + -0x150);\n        if (piVar32 != (int *)0x0) {\n          pcVar51 = *(code **)(iVar6 + -0x7a28);\nLAB_00022cc0:\n          (*pcVar51)();\n          iVar6 = *(int *)(puVar47 + -0x150);\n        }\n      }\n      if (*(int *)(puVar47 + -300) == *piVar34) {\n        return *piVar34;\n      }\n      pcVar51 = *(code **)(iVar6 + -0x7b70);\n      uVar10 = 0x22cdc;\n      (*pcVar51)();\n      pcVar44 = pcVar51 + 0x82360;\n      *(code **)(puVar48 + -0x28) = pcVar44;\n      *(undefined4 *)(puVar48 + -4) = uVar10;\n      *(uint **)(puVar48 + -8) = puVar38;\n      *(uint **)(puVar48 + -0xc) = puVar20;\n      *(int **)(puVar48 + -0x10) = piVar34;\n      *(uint **)(puVar48 + -0x14) = puVar31;\n      *(uint **)(puVar48 + -0x18) = puVar8;\n      *(uint *)(puVar48 + -0x1c) = (uint)puVar8 ^ uVar18;\n      if (puVar9 == (uint *)0x0) {\n        pcVar51 = *(code **)(pcVar51 + 0x7a900);\n        (*pcVar51)();\nLAB_00022e2c:\n        piVar32 = (int *)(*pcVar51)(piVar34,puVar31);\n        pcVar44 = *(code **)(puVar48 + -0x28);\n      }\n      else {\n        puVar8 = (uint *)puVar36[1];\n        if (puVar8 == (uint *)0x0) {\n          piVar32[1] = 0;\n          return 0;\n        }\n        puVar31 = puVar8;\n        if ((int)puVar8 < 0) {\n          puVar31 = (uint *)-(int)puVar8;\n        }\n        pcVar51 = *(code **)(pcVar51 + 0x7a8e0);\n        piVar34 = piVar32;\n        puVar20 = puVar9;\n        puVar38 = puVar36;\n        if (*piVar32 < (int)puVar31) goto LAB_00022e2c;\n        piVar32 = (int *)piVar32[2];\n      }\n      pcVar51 = *(code **)(pcVar44 + -0x7d98);\n      uVar18 = puVar38[2];\n      *(uint **)(puVar48 + -0x30) = puVar20;\n      iVar6 = (*pcVar51)(piVar32,0,uVar18,puVar31);\n      piVar17 = piVar32 + (int)puVar31 + -1;\n      if (iVar6 == 0) {\n        uVar18 = (uint)(*piVar17 == 0);\n        if (-1 < (int)puVar8) {\n          iVar24 = (int)puVar31 - uVar18;\n          goto LAB_00022d9c;\n        }\n      }\n      else {\n        if (-1 < (int)puVar8) {\n          do {\n            iVar24 = *piVar32;\n            *piVar32 = iVar24 + 1;\n            piVar32 = piVar32 + 1;\n          } while (iVar24 + 1 == 0);\n          iVar6 = (int)puVar20 - iVar6;\n          iVar24 = (int)puVar31 - (uint)(*piVar17 == 0);\n          goto LAB_00022d9c;\n        }\n        uVar18 = (uint)(*piVar17 == 0);\n      }\n      iVar24 = uVar18 - (int)puVar31;\nLAB_00022d9c:\n      piVar34[1] = iVar24;\n      return iVar6;\n    }\n    *(int *)(puVar46 + -0x44) = iVar39;\n    iVar6 = iVar39 + uVar7;\n    uVar18 = (**(code **)(*(int *)(puVar46 + -0x34) + (uVar7 - 1) * 4))(iVar39);\n    puVar43 = *(undefined **)(puVar46 + -0x78);\n    if ((uVar18 & 0xff) == 0) {\n      uVar37 = uVar18 >> 8;\n      iVar24 = 6;\n      if ((uVar37 & 0xff) == 0) {\n        uVar37 = uVar18 >> 0x10;\n        iVar24 = 0xe;\n        if ((uVar37 & 0xff) == 0) {\n          uVar37 = uVar18 >> 0x18;\n          iVar24 = 0x1e;\n          if (uVar37 != 0) {\n            iVar24 = 0x16;\n          }\n        }\n      }\n      uVar37 = (uint)*(byte *)(*(int *)(puVar46 + -0x3c) + (-uVar37 & uVar37)) + iVar24;\n    }\n    else {\n      uVar37 = *(byte *)(*(int *)(puVar46 + -0x3c) + (-uVar18 & uVar18)) - 2;\n    }\n    iVar39 = *(int *)(puVar46 + -0x38);\n    *puVar36 = uVar18 >> (uVar37 & 0x1f);\n    iVar24 = *(int *)(puVar46 + -0x60);\n    *(uint *)(puVar46 + -0x40) =\n         *(int *)(puVar46 + -0x40) + *(byte *)(iVar39 + (uVar7 - 1)) + uVar37;\n    if ((uint)(iVar24 - iVar6) <= uVar7) {\n      uVar7 = iVar24 - iVar6;\n    }\n    iVar39 = iVar6;\n    if (uVar7 != 0) goto LAB_00022234;\nLAB_00022534:\n    puVar31 = (uint *)0x1;\n    *(uint **)(puVar46 + -0x4c) = puVar36;\n  } while( true );\n}" (primitive_type "int") (function_declarator "FUN_000219dc(int param_1,uint param_2,uint param_3)" (identifier "FUN_000219dc") (parameter_list "(int param_1,uint param_2,uint param_3)" (( "(") (parameter_declaration "int param_1" (primitive_type "int") (identifier "param_1")) (, ",") (parameter_declaration "uint param_2" (type_identifier "uint") (identifier "param_2")) (, ",") (parameter_declaration "uint param_3" (type_identifier "uint") (identifier "param_3")) () ")"))) (compound_statement "{\n  uint *puVar1;\n  byte bVar2;\n  bool bVar3;\n  bool bVar4;\n  undefined *puVar5;\n  int iVar6;\n  uint uVar7;\n  uint *puVar8;\n  uint *puVar9;\n  undefined4 uVar10;\n  uint uVar11;\n  uint uVar12;\n  undefined1 *puVar13;\n  undefined *puVar14;\n  undefined4 *puVar15;\n  uint *puVar16;\n  int *piVar17;\n  uint uVar18;\n  undefined4 *puVar19;\n  uint *puVar20;\n  uint uVar21;\n  uint *puVar22;\n  uint uVar23;\n  int iVar24;\n  uint uVar25;\n  uint uVar26;\n  uint uVar27;\n  uint uVar28;\n  int iVar29;\n  uint *puVar30;\n  uint *puVar31;\n  int *piVar32;\n  int iVar33;\n  int *piVar34;\n  uint uVar35;\n  uint *puVar36;\n  uint uVar37;\n  uint *puVar38;\n  int iVar39;\n  uint uVar40;\n  int iVar41;\n  uint uVar42;\n  undefined *puVar43;\n  code *pcVar44;\n  undefined1 *puVar45;\n  undefined1 *puVar46;\n  undefined1 *puVar47;\n  undefined1 *puVar48;\n  undefined1 *puVar49;\n  undefined1 *puVar50;\n  code *pcVar51;\n  code *pcVar52;\n  uint uVar53;\n  uint uVar54;\n  undefined1 auStack_48 [16];\n  int local_30;\n  int local_2c;\n  \n  puVar5 = PTR___stack_chk_guard_0009d540;\n  puVar45 = auStack_48;\n  uVar37 = param_2 - 5 | 1;\n  local_30 = 0;\n  local_2c = *(int *)PTR___stack_chk_guard_0009d540;\n  uVar18 = (uVar37 / 0x60 + 1) * 4;\n  if (uVar18 < 0x7f01) {\n    iVar6 = -(uVar18 + 7 & 0xfffffff8);\n    puVar45 = auStack_48 + iVar6;\n    puVar13 = &stack0xffffffc8 + iVar6;\n  }\n  else {\n    puVar13 = (undefined1 *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&local_30);\n  }\n  iVar6 = (*(code *)PTR___gmp_primesieve_0009d144)(puVar13,param_2);\n  uVar7 = iVar6 + 1;\n  puVar8 = (uint *)(PTR___gmp_limbroots_table_0009d3d4 + 0x1c);\n  uVar18 = 8;\n  do {\n    uVar23 = uVar18;\n    uVar11 = *puVar8;\n    puVar8 = puVar8 + -1;\n    uVar18 = uVar23 - 1;\n  } while (uVar11 < param_2);\n  if (uVar23 == 0) {\n    trap(7);\n  }\n  puVar8 = (uint *)(PTR___gmp_limbroots_table_0009d3d4 + 0x1c);\n  uVar18 = 8;\n  if ((uVar7 / uVar23 + 1) * 4 < 0x7f01) {\n    do {\n      uVar23 = uVar18;\n      uVar11 = *puVar8;\n      puVar8 = puVar8 + -1;\n      uVar18 = uVar23 - 1;\n    } while (uVar11 < param_2);\n    if (uVar23 == 0) {\n      trap(7);\n    }\n    iVar6 = -((uVar7 / uVar23) * 4 + 0xb & 0xfffffff8);\n    puVar46 = puVar45 + iVar6;\n    puVar8 = (uint *)(puVar45 + iVar6 + 0x10);\n  }\n  else {\n    for (puVar14 = PTR___gmp_limbroots_table_0009d3d4 + 0x18; *(uint *)(puVar14 + 4) < param_2;\n        puVar14 = puVar14 + -4) {\n      uVar18 = uVar18 - 1;\n    }\n    if (uVar18 == 0) {\n      trap(7);\n    }\n    puVar8 = (uint *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)\n                               (&local_30,(uVar7 / uVar18 + 1) * 4);\n    puVar46 = puVar45;\n  }\n  uVar18 = param_2 - param_3;\n  if (param_2 == 0) {\n    trap(7);\n  }\n  uVar53 = 0xffffffff / param_2;\n  uVar40 = param_2 >> 1;\n  uVar11 = uVar18 - (uVar18 >> 1 & 0x55555555);\n  uVar23 = param_2 - (uVar40 & 0x55555555);\n  uVar7 = param_3 - (param_3 >> 1 & 0x55555555);\n  uVar26 = (uVar11 >> 2 & 0x33333333) + (uVar11 & 0x33333333);\n  uVar23 = (uVar23 >> 2 & 0x33333333) + (uVar23 & 0x33333333);\n  uVar11 = (uVar7 >> 2 & 0x33333333) + (uVar7 & 0x33333333);\n  uVar7 = (uVar26 >> 4) + uVar26 & 0xf0f0f0f;\n  uVar23 = (uVar23 >> 4) + uVar23 & 0xf0f0f0f;\n  uVar7 = (uVar7 >> 8) + uVar7;\n  uVar11 = (uVar11 >> 4) + uVar11 & 0xf0f0f0f;\n  uVar23 = (uVar23 >> 8) + uVar23;\n  uVar11 = (uVar11 >> 8) + uVar11;\n  uVar7 = 1 << ((uVar11 >> 0x10) + uVar11 +\n                (((uVar7 >> 0x10) + uVar7 & 0xff) - ((uVar23 >> 0x10) + uVar23 & 0xff)) & 0x1f);\n  bVar3 = uVar53 < uVar7;\n  if (bVar3) {\n    *puVar8 = uVar7;\n    uVar7 = 1;\n  }\n  uVar11 = 0;\n  uVar23 = param_2;\n  uVar26 = param_3;\n  do {\n    bVar4 = uVar23 % 3 < uVar26 % 3 + uVar11;\n    if (bVar4) {\n      uVar7 = uVar7 * 3;\n    }\n    uVar11 = (uint)bVar4;\n    bVar4 = 8 < uVar23;\n    uVar23 = uVar23 / 3;\n    uVar26 = uVar26 / 3;\n  } while (bVar4);\n  uVar11 = param_2 - 1;\n  if (uVar11 < 0x10000) {\n    iVar6 = 0x18;\n    if (uVar11 < 0x100) {\n      iVar6 = 0x20;\n    }\n    iVar24 = 9;\n    if (uVar11 < 0x100) {\n      iVar24 = 1;\n    }\n  }\n  else {\n    iVar6 = 8;\n    if (uVar11 < 0x1000000) {\n      iVar6 = 0x10;\n    }\n    iVar24 = 0x19;\n    if (uVar11 < 0x1000000) {\n      iVar24 = 0x11;\n    }\n  }\n  iVar29 = 0;\n  uVar28 = 1;\n  uVar42 = (((1 << ((int)(0x1f - (iVar6 - (uint)(byte)PTR___gmpn_clz_tab_0009d18c[uVar11 >> iVar24])\n                         ) >> 1 & 0x1fU)) +\n            (1 << ((int)(0x1e - (iVar6 - (uint)(byte)PTR___gmpn_clz_tab_0009d18c[uVar11 >> iVar24]))\n                   >> 1 & 0x1fU))) - 5U | 1) / 3;\n  uVar26 = uVar42 + 1;\n  uVar11 = (uint)bVar3;\n  uVar23 = 0;\n  do {\n    uVar35 = uVar23 + 1;\n    uVar21 = uVar11;\n    if ((uVar28 & *(uint *)(puVar13 + iVar29 * 4)) == 0) {\n      uVar12 = (uVar35 & 1) + 1 + uVar35 * 3;\n      if (uVar53 < uVar7) {\n        uVar21 = uVar11 + 1;\n        puVar8[uVar11] = uVar7;\n        uVar7 = 1;\n      }\n      uVar27 = 0;\n      uVar11 = param_3;\n      uVar25 = param_2;\n      do {\n        if (uVar12 == 0) {\n          trap(7);\n        }\n        if (uVar12 == 0) {\n          trap(7);\n        }\n        uVar54 = uVar25 / uVar12;\n        bVar3 = uVar25 % uVar12 < uVar11 % uVar12 + uVar27;\n        if (bVar3) {\n          uVar7 = uVar7 * uVar12;\n        }\n        uVar27 = (uint)bVar3;\n        uVar11 = uVar11 / uVar12;\n        uVar25 = uVar54;\n      } while (uVar12 <= uVar54);\n    }\n    uVar28 = uVar28 * 2 - ((int)uVar28 >> 0x1f);\n    bVar3 = uVar23 != uVar42;\n    iVar29 = iVar29 + (uVar28 & 1);\n    uVar11 = uVar21;\n    uVar23 = uVar35;\n  } while (bVar3);\n  uVar23 = uVar26 >> 5;\n  uVar11 = 1 << (uVar26 & 0x1f);\n  uVar28 = (uVar40 - 5 | 1) / 3;\n  do {\n    while( true ) {\n      uVar26 = uVar26 + 1;\n      uVar42 = uVar21;\n      if ((uVar11 & *(uint *)(puVar13 + uVar23 * 4)) == 0) break;\nLAB_00021e80:\n      uVar11 = uVar11 * 2 - ((int)uVar11 >> 0x1f);\n      uVar23 = uVar23 + (uVar11 & 1);\n      uVar21 = uVar42;\n      if (uVar28 < uVar26) goto LAB_00021f04;\n    }\n    uVar12 = (uVar26 & 1) + 1 + uVar26 * 3;\n    if (uVar12 == 0) {\n      trap(7);\n    }\n    if (uVar12 == 0) {\n      trap(7);\n    }\n    if (param_3 % uVar12 <= param_2 % uVar12) goto LAB_00021e80;\n    if (uVar53 << 1 < uVar7) {\n      uVar42 = uVar21 + 1;\n      puVar8[uVar21] = uVar7;\n      uVar7 = uVar12;\n      goto LAB_00021e80;\n    }\n    uVar11 = uVar11 * 2 - ((int)uVar11 >> 0x1f);\n    uVar7 = uVar7 * uVar12;\n    uVar23 = uVar23 + (uVar11 & 1);\n  } while (uVar26 <= uVar28);\nLAB_00021f04:\n  uVar18 = (uVar18 - 5 | 1) / 3 + 1;\n  uVar23 = uVar18 >> 5;\n  uVar37 = uVar37 / 3;\n  uVar11 = 1 << (uVar18 & 0x1f);\n  do {\n    while( true ) {\n      uVar18 = uVar18 + 1;\n      uVar26 = uVar42;\n      if ((uVar11 & *(uint *)(puVar13 + uVar23 * 4)) == 0) break;\nLAB_00021f58:\n      uVar11 = uVar11 * 2 - ((int)uVar11 >> 0x1f);\n      uVar23 = uVar23 + (uVar11 & 1);\n      uVar42 = uVar26;\n      if (uVar37 < uVar18) goto LAB_00021fb8;\n    }\n    uVar28 = (uVar18 & 1) + 1 + uVar18 * 3;\n    if ((uVar53 & 0x7fffffff) < uVar7) {\n      uVar26 = uVar42 + 1;\n      puVar8[uVar42] = uVar7;\n      uVar7 = uVar28;\n      goto LAB_00021f58;\n    }\n    uVar11 = uVar11 * 2 - ((int)uVar11 >> 0x1f);\n    uVar7 = uVar7 * uVar28;\n    uVar23 = uVar23 + (uVar11 & 1);\n  } while (uVar18 <= uVar37);\nLAB_00021fb8:\n  if (uVar26 == 0) {\n    **(uint **)(param_1 + 8) = uVar7;\n    *(undefined4 *)(param_1 + 4) = 1;\n    uVar18 = 0;\n    iVar6 = local_30;\n  }\n  else {\n    uVar18 = uVar26 + 1;\n    puVar8[uVar26] = uVar7;\n    (*(code *)PTR___gmpz_prodlimbs_0009d284)(param_1);\n    iVar6 = local_30;\n  }\n  local_30 = iVar6;\n  if (iVar6 != 0) {\n    (*(code *)PTR___gmp_tmp_reentrant_free_0009d618)();\n  }\n  iVar24 = *(int *)puVar5;\n  if (local_2c == iVar24) {\n    return iVar24;\n  }\n  pcVar51 = FUN_0002209c;\n  puVar14 = PTR___stack_chk_fail_0009d4d0;\n  (*(code *)PTR___stack_chk_fail_0009d4d0)();\n  puVar43 = puVar14 + 0x82fa4;\n  puVar47 = puVar46 + -0x90;\n  puVar50 = puVar46 + -0x90;\n  puVar49 = puVar46 + -0x90;\n  *(int *)(puVar46 + -0x24) = param_1;\n  *(undefined1 **)(puVar46 + -8) = auStack_48;\n  puVar19 = *(undefined4 **)(puVar14 + 0x7b4a4);\n  *(code **)(puVar46 + -4) = pcVar51;\n  *(int *)(puVar46 + -0x6c) = iVar6;\n  *(uint *)(puVar46 + -0xc) = uVar40;\n  *(uint *)(puVar46 + -0x10) = param_3;\n  *(uint *)(puVar46 + -0x14) = uVar37;\n  uVar37 = (((uint)puVar8 >> 5) + 1) * 3;\n  *(uint *)(puVar46 + -0x18) = uVar35;\n  *(undefined1 **)(puVar46 + -0x1c) = puVar13;\n  *(uint *)(puVar46 + -0x20) = param_2;\n  *(undefined **)(puVar46 + -0x28) = puVar5;\n  *(undefined **)(puVar46 + -0x78) = puVar43;\n  *(undefined4 **)(puVar46 + -0x70) = puVar19;\n  *(undefined4 *)(puVar46 + -0x30) = 0;\n  *(undefined4 *)(puVar46 + -0x2c) = *puVar19;\n  if (uVar37 < 0x2a) {\n    uVar37 = 0x27;\n    if (uVar18 < 0x28) {\n      uVar37 = uVar18;\n    }\n    uVar37 = (uVar37 + 1) * 4;\n  }\n  else {\n    uVar37 = ((int)uVar37 >> 1) + 0x13;\n    if (uVar18 < uVar37) {\n      uVar37 = uVar18;\n    }\n    uVar37 = (uVar37 + 1) * 4;\n    pcVar51 = *(code **)(puVar14 + 0x7b254);\n    if (0x7f00 < uVar37) {\n      *(uint *)(puVar46 + 8) = uVar18;\n      puVar38 = (uint *)(*pcVar51)(puVar46 + -0x30);\n      puVar43 = *(undefined **)(puVar46 + -0x78);\n      uVar18 = *(uint *)(puVar46 + 8);\n      goto LAB_0002214c;\n    }\n  }\n  iVar6 = -(uVar37 + 7 & 0xfffffff8);\n  puVar47 = puVar46 + iVar6 + -0x90;\n  puVar38 = (uint *)(puVar46 + iVar6 + -0x78);\nLAB_0002214c:\n  iVar24 = *(int *)(puVar43 + -0x7c6c);\n  puVar36 = (uint *)(puVar47 + -0x40);\n  puVar31 = (uint *)(iVar24 + 0x1c);\n  iVar6 = 8;\n  do {\n    iVar29 = iVar6;\n    puVar9 = (uint *)*puVar31;\n    puVar31 = puVar31 + -1;\n    iVar6 = iVar29 + -1;\n  } while (puVar9 < puVar8);\n  *(int *)(puVar46 + -0x68) = iVar29;\n  puVar31 = (uint *)(iVar24 + 0x1c);\n  uVar37 = 8;\n  do {\n    uVar7 = uVar37;\n    uVar11 = *puVar31;\n    puVar31 = puVar31 + -1;\n    uVar37 = uVar7 - 1;\n  } while (uVar11 < uVar18);\n  uVar10 = *(undefined4 *)(puVar43 + -0x7d3c);\n  iVar6 = 0x11;\n  *(undefined4 *)(puVar46 + -0x48) = 0;\n  *(undefined4 *)(puVar46 + -100) = uVar10;\n  iVar24 = *(int *)(puVar43 + -0x7e20);\n  *(undefined4 *)(puVar46 + -0x5c) = 0x3fffffff;\n  iVar29 = (int)puVar8 + (1 - uVar18);\n  *(uint *)(puVar46 + -0x40) = (uint)*(byte *)(iVar24 + 7);\n  *(undefined4 *)(puVar46 + -0x3c) = *(undefined4 *)(puVar43 + -0x7eb4);\n  *(uint *)(puVar46 + -0x60) = uVar18 + 1;\n  iVar24 = *(int *)(puVar46 + -0x60);\n  *puVar38 = 1;\n  *(undefined4 *)(puVar46 + -0x44) = 1;\n  *(int *)(puVar46 + -0x34) = *(int *)(puVar43 + -0x7fe4) + -0x31a4;\n  *(int *)(puVar46 + -0x38) = *(int *)(puVar43 + -0x7fd4) + 0x3630;\n  *puVar36 = 0x260eeeeb;\n  if (iVar24 - 0x11U <= uVar7) {\n    uVar7 = iVar24 - 0x11U;\n  }\n  puVar8 = (uint *)0x1;\n  iVar39 = iVar6;\n  if (uVar7 == 0) goto LAB_00022534;\nLAB_00022234:\n  puVar31 = (uint *)0x1;\n  iVar41 = *(int *)(puVar46 + -0x40);\n  *(uint **)(puVar46 + -0x4c) = puVar8;\n  *(uint **)(puVar46 + -0x50) = puVar38;\n  do {\n    iVar39 = iVar6 + uVar7;\n    uVar18 = (**(code **)(*(int *)(puVar46 + -0x34) + (uVar7 - 1) * 4))(iVar6);\n    if ((uVar18 & 0xff) == 0) {\n      uVar37 = uVar18 >> 8;\n      iVar6 = 6;\n      if ((uVar37 & 0xff) == 0) {\n        uVar37 = uVar18 >> 0x10;\n        iVar6 = 0xe;\n        if ((uVar37 & 0xff) == 0) {\n          uVar37 = uVar18 >> 0x18;\n          iVar6 = 0x1e;\n          if (uVar37 != 0) {\n            iVar6 = 0x16;\n          }\n        }\n      }\n      uVar37 = (uint)*(byte *)(*(int *)(puVar46 + -0x3c) + (-uVar37 & uVar37)) + iVar6;\n    }\n    else {\n      uVar37 = *(byte *)(*(int *)(puVar46 + -0x3c) + (-uVar18 & uVar18)) - 2;\n    }\n    iVar41 = iVar41 + *(byte *)(*(int *)(puVar46 + -0x38) + (uVar7 - 1)) + uVar37;\n    uVar18 = (**(code **)(*(int *)(puVar46 + -0x78) + -0x7f9c))\n                       (puVar36,puVar36,puVar31,uVar18 >> (uVar37 & 0x1f));\n    puVar43 = *(undefined **)(puVar46 + -0x78);\n    if ((uint)(iVar24 - iVar39) <= uVar7) {\n      uVar7 = iVar24 - iVar39;\n    }\n    puVar8 = puVar36 + (int)puVar31;\n    puVar31 = (uint *)((int)puVar31 + (uint)(uVar18 != 0));\n    *puVar8 = uVar18;\n    if (uVar7 == 0) {\n      puVar38 = *(uint **)(puVar46 + -0x50);\n      puVar8 = *(uint **)(puVar46 + -0x4c);\n      *(int *)(puVar46 + -0x40) = iVar41;\n      *(uint **)(puVar46 + -0x4c) = puVar36 + (int)((int)puVar31 + *(int *)(puVar46 + -0x5c));\n      goto LAB_00022340;\n    }\n    iVar6 = iVar39;\n  } while (puVar31 != (uint *)0x14);\n  puVar8 = *(uint **)(puVar46 + -0x4c);\n  puVar38 = *(uint **)(puVar46 + -0x50);\n  *(int *)(puVar46 + -0x40) = iVar41;\n  *(uint **)(puVar46 + -0x4c) = puVar36 + 0x13;\nLAB_00022340:\n  do {\n    iVar41 = iVar39 - *(int *)(puVar46 + -0x44);\n    iVar24 = *(int *)(puVar46 + -0x5c);\n    iVar6 = iVar41;\n    if (iVar41 != 0) {\n      *(uint *)(puVar46 + -0x44) = uVar7;\n      *(uint **)(puVar46 + -0x50) = puVar31;\n      *(uint **)(puVar46 + -0x54) = puVar36;\n      *(int *)(puVar46 + -0x58) = iVar39;\n      iVar6 = *(int *)(puVar46 + -0x48);\n      iVar39 = *(int *)(puVar46 + -0x68);\n      iVar24 = iVar29;\n      do {\n        iVar33 = iVar41;\n        if (iVar39 <= iVar41) {\n          iVar33 = iVar39;\n        }\n        iVar29 = iVar24 + iVar33;\n        uVar18 = (**(code **)(*(int *)(puVar46 + -0x34) + (iVar33 + -1) * 4))(iVar24);\n        if ((uVar18 & 0xff) == 0) {\n          uVar37 = uVar18 >> 8;\n          iVar24 = 6;\n          if ((uVar37 & 0xff) == 0) {\n            uVar37 = uVar18 >> 0x10;\n            iVar24 = 0xe;\n            if ((uVar37 & 0xff) == 0) {\n              uVar37 = uVar18 >> 0x18;\n              iVar24 = 0x16;\n              if (uVar37 == 0) {\n                iVar24 = 0x1e;\n              }\n            }\n          }\n          uVar37 = (uint)*(byte *)(*(int *)(puVar46 + -0x3c) + (-uVar37 & uVar37)) + iVar24;\n        }\n        else {\n          uVar37 = *(byte *)(*(int *)(puVar46 + -0x3c) + (-uVar18 & uVar18)) - 2;\n        }\n        iVar41 = iVar41 - iVar33;\n        iVar6 = iVar6 + *(byte *)(*(int *)(puVar46 + -0x38) + iVar33 + -1) + uVar37;\n        uVar18 = (**(code **)(*(int *)(puVar46 + -0x78) + -0x7f9c))\n                           (puVar38,puVar38,puVar8,uVar18 >> (uVar37 & 0x1f));\n        puVar43 = *(undefined **)(puVar46 + -0x78);\n        puVar31 = puVar38 + (int)puVar8;\n        puVar8 = (uint *)((int)puVar8 + (uint)(uVar18 != 0));\n        *puVar31 = uVar18;\n        iVar24 = iVar29;\n      } while (iVar41 != 0);\n      uVar7 = *(uint *)(puVar46 + -0x44);\n      puVar31 = *(uint **)(puVar46 + -0x50);\n      puVar36 = *(uint **)(puVar46 + -0x54);\n      iVar39 = *(int *)(puVar46 + -0x58);\n      *(int *)(puVar46 + -0x48) = iVar6;\n      iVar24 = *(int *)(puVar46 + -0x5c);\n    }\n    uVar37 = *puVar36;\n    pcVar51 = *(code **)(puVar43 + -0x7bc0);\n    uVar18 = (uint)*(byte *)(*(int *)(puVar46 + -100) + ((uVar37 << 0x18) >> 0x19));\n    puVar8 = (uint *)((int)puVar8 +\n                     ((puVar38[(int)((int)puVar8 + iVar24)] < **(uint **)(puVar46 + -0x4c) ^ 1) -\n                     (int)puVar31));\n    iVar24 = uVar18 * 2 - uVar18 * uVar18 * uVar37;\n    if ((int)puVar8 < (int)puVar31) {\n      puVar31 = puVar8;\n    }\n    *(uint **)(puVar47 + -0x48) = puVar31;\n    *(uint *)(puVar47 + -0x44) = iVar24 * iVar24 * uVar37 + iVar24 * -2;\n    puVar9 = puVar38;\n    puVar22 = puVar8;\n    (*pcVar51)(puVar38,puVar38,puVar8,puVar36);\n    iVar24 = *(int *)(puVar46 + -0x78);\n    if (uVar7 == 0) {\n      if (*(int *)(puVar46 + -0x48) == *(int *)(puVar46 + -0x40)) {\n        puVar8 = (uint *)((int)puVar8 - (uint)(puVar38[(int)((int)puVar8 + -1)] == 0));\n        pcVar51 = *(code **)(iVar24 + -0x7a80);\n        if ((int)puVar8 <= **(int **)(puVar46 + -0x6c)) goto LAB_00022600;\nLAB_00022734:\n        puVar9 = puVar8;\n        puVar19 = (undefined4 *)(*pcVar51)(*(undefined4 *)(puVar46 + -0x6c));\n        iVar24 = *(int *)(puVar46 + -0x78);\n      }\n      else {\n        puVar9 = puVar38;\n        puVar22 = puVar8;\n        uVar18 = (**(code **)(iVar24 + -0x7ad4))(puVar38);\n        iVar24 = *(int *)(puVar46 + -0x78);\n        puVar38[(int)puVar8] = uVar18;\n        puVar8 = (uint *)((int)puVar8 +\n                         ((uint)(uVar18 != 0) -\n                         (uint)(puVar38[(int)((int)puVar8 + ((uVar18 != 0) - 1))] == 0)));\n        pcVar51 = *(code **)(iVar24 + -0x7a80);\n        if (**(int **)(puVar46 + -0x6c) < (int)puVar8) goto LAB_00022734;\nLAB_00022600:\n        puVar19 = *(undefined4 **)(*(int *)(puVar46 + -0x6c) + 8);\n      }\n      *(uint **)(*(int *)(puVar46 + -0x6c) + 4) = puVar8;\n      if (puVar8 != (uint *)0x0) {\n        puVar13 = (undefined1 *)((int)puVar8 + -1);\n        puVar9 = (uint *)*puVar38;\n        if (puVar13 != (undefined1 *)0x0) {\n          puVar15 = puVar19;\n          puVar16 = puVar38 + 1;\n          do {\n            *puVar15 = puVar9;\n            puVar38 = puVar16 + 1;\n            puVar13 = puVar13 + -1;\n            puVar9 = (uint *)*puVar16;\n            puVar15 = puVar15 + 1;\n            puVar16 = puVar38;\n          } while (puVar13 != (undefined1 *)0x0);\n          puVar8 = (uint *)((int)puVar8 * 4);\n          puVar19 = (undefined4 *)((int)puVar19 + (int)(puVar8 + -1));\n        }\n        *puVar19 = puVar9;\n      }\n      puVar16 = *(uint **)(puVar46 + -0x30);\n      if (puVar16 != (uint *)0x0) {\n        (**(code **)(iVar24 + -0x7a28))();\n        iVar24 = *(int *)(puVar46 + -0x78);\n      }\n      if (*(int *)(puVar46 + -0x2c) == **(int **)(puVar46 + -0x70)) {\n        return **(int **)(puVar46 + -0x70);\n      }\n      pcVar51 = *(code **)(iVar24 + -0x7b70);\n      pcVar52 = __gmpz_bin_uiui;\n      (*pcVar51)();\n      pcVar44 = pcVar51 + 0x8289c;\n      *(uint **)(puVar47 + -0x78) = puVar31;\n      piVar32 = *(int **)(pcVar51 + 0x7ad9c);\n      *(code **)(puVar47 + -0xf0) = pcVar44;\n      *(int *)(puVar47 + -0x74) = iVar39;\n      *(code **)(puVar47 + -0x5c) = pcVar52;\n      *(undefined1 **)(puVar47 + -0x60) = puVar46 + -0x90;\n      *(int *)(puVar47 + -100) = iVar6;\n      *(int *)(puVar47 + -0x68) = iVar29;\n      *(uint **)(puVar47 + -0x6c) = puVar38;\n      *(uint **)(puVar47 + -0x70) = puVar36;\n      *(uint **)(puVar47 + -0x7c) = puVar8;\n      *(undefined4 *)(puVar47 + -0x80) = 0;\n      *(int *)(puVar47 + -0x84) = *piVar32;\n      puVar31 = puVar16;\n      puVar20 = puVar9;\n      if (puVar9 < puVar22) {\n        puVar16[1] = 0;\n        puVar30 = (uint *)0x0;\n      }\n      else {\n        puVar30 = puVar22;\n        if ((uint *)((int)puVar9 - (int)puVar22) <= puVar22) {\n          puVar30 = (uint *)((int)puVar9 - (int)puVar22);\n        }\n        puVar22 = puVar30;\n        puVar36 = puVar9;\n        if (puVar30 < (uint *)0x2) {\n          if (puVar30 == (uint *)0x0) {\n            puVar36 = (uint *)0x1;\n          }\n          *(uint **)puVar16[2] = puVar36;\n          puVar16[1] = 1;\n          puVar49 = puVar46 + -0x90;\n        }\n        else if (puVar9 < (uint *)0x23) {\n          puVar13 = (undefined1 *)((int)puVar30 + -2);\n          iVar6 = *(int *)(pcVar51 + 0x7aa7c);\n          puVar20 = (uint *)puVar16[2];\n          uVar18 = (int)puVar9 - (int)puVar30;\n          puVar36 = (uint *)(iVar6 + ((uint)puVar9 >> 1));\n          puVar30 = (uint *)(iVar6 + ((uint)puVar30 >> 1));\n          bVar2 = *(byte *)((int)puVar30 + -1);\n          puVar31 = (uint *)(uint)*(byte *)(iVar6 + (uVar18 >> 1) + -1);\n          *puVar20 = *(int *)((int)puVar13 * 4 + *(int *)(pcVar51 + 0x7a8c8) + 0x35b4) *\n                     *(int *)(*(int *)(pcVar51 + 0x7ad64) + (int)puVar9 * 4) *\n                     *(int *)((uVar18 - 2) * 4 + *(int *)(pcVar51 + 0x7a8c8) + 0x35b4) <<\n                     (((uint)*(byte *)((int)puVar36 + -1) - (int)(uint)bVar2) - (int)puVar31 & 0x1f)\n          ;\n          puVar16[1] = 1;\n          puVar22 = (uint *)(uint)bVar2;\n          puVar49 = puVar46 + -0x90;\n        }\n        else if (puVar30 < &DAT_00000011) {\n          FUN_000216e8();\n          pcVar44 = *(code **)(puVar47 + -0xf0);\n          puVar49 = puVar46 + -0x90;\n        }\n        else if (puVar30 < &DAT_00000021) {\n          uVar18 = (uint)puVar30 >> 1;\n          uVar37 = (int)puVar9 - uVar18;\n          FUN_000216e8();\n          iVar6 = *(int *)(puVar47 + -0xf0);\n          uVar7 = (int)puVar30 - uVar18;\n          if (uVar37 < 0x23) {\n            puVar50 = (undefined1 *)puVar16[1];\n            if ((int)puVar50 < (int)*puVar16) {\n              puVar8 = (uint *)puVar16[2];\n            }\n            else {\n              puVar8 = (uint *)(**(code **)(iVar6 + -0x7a80))(puVar16,puVar50 + 1);\n              iVar6 = *(int *)(puVar47 + -0xf0);\n            }\n            iVar29 = *(int *)(iVar6 + -0x7e20);\n            iVar24 = *(int *)(iVar6 + -0x7fd4) + 0x35b4;\n            uVar37 = (**(code **)(iVar6 + -0x7f9c))\n                               (puVar8,puVar8,puVar50,\n                                *(int *)((((int)puVar9 - (int)puVar30) - 2U) * 4 + iVar24) *\n                                *(int *)(*(int *)(iVar6 + -0x7b38) + uVar37 * 4) *\n                                *(int *)((uVar7 - 2) * 4 + iVar24) <<\n                                (((uint)*(byte *)(iVar29 + (uVar37 >> 1) + -1) -\n                                 (uint)*(byte *)(iVar29 + (uVar7 >> 1) + -1)) -\n                                 (uint)*(byte *)(iVar29 + ((uint)((int)puVar9 - (int)puVar30) >> 1)\n                                                + -1) & 0x1f));\n            iVar6 = *(int *)(puVar47 + -0xf0);\n            puVar30 = (uint *)(puVar50 + (uVar37 != 0));\n            puVar8[(int)puVar50] = uVar37;\n          }\n          else {\n            *(undefined4 *)(puVar47 + -0xe4) = 0x15;\n            *(undefined1 **)(puVar47 + -0xdc) = puVar47 + -0xd8;\n            FUN_000216e8(puVar47 + -0xe4,uVar37,uVar7);\n            (**(code **)(*(int *)(puVar47 + -0xf0) + -0x7ba8))(puVar16,puVar16,puVar47 + -0xe4);\n            iVar6 = *(int *)(puVar47 + -0xf0);\n            puVar8 = (uint *)puVar16[2];\n            puVar30 = (uint *)puVar16[1];\n          }\n          pcVar51 = *(code **)(iVar6 + -0x7bb4);\n          puVar38 = (uint *)((uint)*(byte *)((uVar7 - 8) + *(int *)(iVar6 + -0x7fd4) + 0x3550) -\n                            (uint)(uVar18 != uVar7));\n          *(undefined4 *)(puVar47 + -0xf8) =\n               *(undefined4 *)((uVar7 - 8) * 4 + *(int *)(iVar6 + -0x7fd4) + 0x355c);\n          *(uint **)(puVar47 + -0xf4) = puVar38;\n          puVar31 = puVar8;\n          puVar20 = puVar8;\n          puVar22 = puVar30;\n          (*pcVar51)();\n          pcVar44 = *(code **)(puVar47 + -0xf0);\n          if (puVar8[(int)((int)puVar30 + -1)] == 0) {\n            puVar9 = puVar8 + (int)puVar30;\n            do {\n              puVar1 = puVar9 + -2;\n              puVar30 = (uint *)((int)puVar30 + -1);\n              puVar9 = puVar9 + -1;\n            } while (*puVar1 == 0);\n          }\n          puVar16[1] = (uint)puVar30;\n          puVar49 = puVar50;\n        }\n        else if ((puVar30 < (uint *)0x3e8) || (puVar30 <= (uint *)((uint)puVar9 >> 4))) {\n          FUN_0002209c();\n          pcVar44 = *(code **)(puVar47 + -0xf0);\n          puVar49 = puVar46 + -0x90;\n        }\n        else {\n          FUN_000219dc();\n          pcVar44 = *(code **)(puVar47 + -0xf0);\n          puVar49 = puVar46 + -0x90;\n        }\n      }\n      if (*(int *)(puVar47 + -0x84) == *piVar32) {\n        return *piVar32;\n      }\n      pcVar51 = *(code **)(pcVar44 + -0x7b70);\n      uVar10 = 0x22b64;\n      (*pcVar51)();\n      pcVar44 = pcVar51 + 0x824d0;\n      puVar48 = puVar47 + -0x160;\n      *(uint **)(puVar47 + -0x118) = puVar16;\n      *(uint **)(puVar47 + -0x124) = puVar30;\n      piVar34 = *(int **)(pcVar51 + 0x7a9d0);\n      uVar18 = puVar22[1];\n      *(undefined1 **)(puVar47 + -0x110) = puVar49;\n      *(uint **)(puVar47 + -0x114) = puVar36;\n      *(int **)(puVar47 + -0x11c) = piVar32;\n      *(uint **)(puVar47 + -0x120) = puVar8;\n      *(undefined4 *)(puVar47 + -0x10c) = uVar10;\n      *(code **)(puVar47 + -0x150) = pcVar44;\n      *(undefined4 *)(puVar47 + -0x13c) = 0;\n      puVar8 = (uint *)puVar20[1];\n      *(int *)(puVar47 + -300) = *piVar34;\n      if ((int)uVar18 < 0) {\n        uVar37 = uVar18 * -4;\n        *(uint *)(puVar47 + -0x138) = -uVar18;\n        if (0x7f00 < uVar37) {\n          pcVar51 = *(code **)(pcVar51 + 0x7a780);\n          goto LAB_00022c88;\n        }\nLAB_00022be4:\n        iVar6 = -(uVar37 + 7 & 0xfffffff8);\n        puVar48 = puVar47 + iVar6 + -0x160;\n        puVar13 = puVar47 + iVar6 + -0x150;\n      }\n      else {\n        uVar37 = uVar18 * 4;\n        *(uint *)(puVar47 + -0x138) = uVar18;\n        pcVar51 = *(code **)(pcVar51 + 0x7a780);\n        if (uVar37 < 0x7f01) goto LAB_00022be4;\nLAB_00022c88:\n        *(uint **)(puVar47 + -0x144) = puVar22;\n        puVar13 = (undefined1 *)(*pcVar51)(puVar47 + -0x13c,uVar37);\n        pcVar44 = *(code **)(puVar47 + -0x150);\n        puVar22 = *(uint **)(puVar47 + -0x144);\n      }\n      pcVar51 = *(code **)(pcVar44 + -0x7a68);\n      puVar36 = (uint *)(puVar47 + -0x138);\n      *(undefined1 **)(puVar47 + -0x130) = puVar13;\n      puVar9 = puVar20;\n      (*pcVar51)(puVar31,puVar36,puVar20,puVar22);\n      iVar6 = *(int *)(puVar47 + -0x150);\n      if (((int)((uint)puVar8 ^ uVar18) < 0) || (*(int *)(puVar47 + -0x134) == 0)) {\n        piVar32 = *(int **)(puVar47 + -0x13c);\n        pcVar51 = *(code **)(iVar6 + -0x7a28);\n        if (piVar32 != (int *)0x0) goto LAB_00022cc0;\n      }\n      else {\n        puVar9 = (uint *)0x1;\n        puVar36 = puVar31;\n        (**(code **)(iVar6 + -0x7c9c))(puVar31);\n        piVar32 = *(int **)(puVar47 + -0x13c);\n        iVar6 = *(int *)(puVar47 + -0x150);\n        if (piVar32 != (int *)0x0) {\n          pcVar51 = *(code **)(iVar6 + -0x7a28);\nLAB_00022cc0:\n          (*pcVar51)();\n          iVar6 = *(int *)(puVar47 + -0x150);\n        }\n      }\n      if (*(int *)(puVar47 + -300) == *piVar34) {\n        return *piVar34;\n      }\n      pcVar51 = *(code **)(iVar6 + -0x7b70);\n      uVar10 = 0x22cdc;\n      (*pcVar51)();\n      pcVar44 = pcVar51 + 0x82360;\n      *(code **)(puVar48 + -0x28) = pcVar44;\n      *(undefined4 *)(puVar48 + -4) = uVar10;\n      *(uint **)(puVar48 + -8) = puVar38;\n      *(uint **)(puVar48 + -0xc) = puVar20;\n      *(int **)(puVar48 + -0x10) = piVar34;\n      *(uint **)(puVar48 + -0x14) = puVar31;\n      *(uint **)(puVar48 + -0x18) = puVar8;\n      *(uint *)(puVar48 + -0x1c) = (uint)puVar8 ^ uVar18;\n      if (puVar9 == (uint *)0x0) {\n        pcVar51 = *(code **)(pcVar51 + 0x7a900);\n        (*pcVar51)();\nLAB_00022e2c:\n        piVar32 = (int *)(*pcVar51)(piVar34,puVar31);\n        pcVar44 = *(code **)(puVar48 + -0x28);\n      }\n      else {\n        puVar8 = (uint *)puVar36[1];\n        if (puVar8 == (uint *)0x0) {\n          piVar32[1] = 0;\n          return 0;\n        }\n        puVar31 = puVar8;\n        if ((int)puVar8 < 0) {\n          puVar31 = (uint *)-(int)puVar8;\n        }\n        pcVar51 = *(code **)(pcVar51 + 0x7a8e0);\n        piVar34 = piVar32;\n        puVar20 = puVar9;\n        puVar38 = puVar36;\n        if (*piVar32 < (int)puVar31) goto LAB_00022e2c;\n        piVar32 = (int *)piVar32[2];\n      }\n      pcVar51 = *(code **)(pcVar44 + -0x7d98);\n      uVar18 = puVar38[2];\n      *(uint **)(puVar48 + -0x30) = puVar20;\n      iVar6 = (*pcVar51)(piVar32,0,uVar18,puVar31);\n      piVar17 = piVar32 + (int)puVar31 + -1;\n      if (iVar6 == 0) {\n        uVar18 = (uint)(*piVar17 == 0);\n        if (-1 < (int)puVar8) {\n          iVar24 = (int)puVar31 - uVar18;\n          goto LAB_00022d9c;\n        }\n      }\n      else {\n        if (-1 < (int)puVar8) {\n          do {\n            iVar24 = *piVar32;\n            *piVar32 = iVar24 + 1;\n            piVar32 = piVar32 + 1;\n          } while (iVar24 + 1 == 0);\n          iVar6 = (int)puVar20 - iVar6;\n          iVar24 = (int)puVar31 - (uint)(*piVar17 == 0);\n          goto LAB_00022d9c;\n        }\n        uVar18 = (uint)(*piVar17 == 0);\n      }\n      iVar24 = uVar18 - (int)puVar31;\nLAB_00022d9c:\n      piVar34[1] = iVar24;\n      return iVar6;\n    }\n    *(int *)(puVar46 + -0x44) = iVar39;\n    iVar6 = iVar39 + uVar7;\n    uVar18 = (**(code **)(*(int *)(puVar46 + -0x34) + (uVar7 - 1) * 4))(iVar39);\n    puVar43 = *(undefined **)(puVar46 + -0x78);\n    if ((uVar18 & 0xff) == 0) {\n      uVar37 = uVar18 >> 8;\n      iVar24 = 6;\n      if ((uVar37 & 0xff) == 0) {\n        uVar37 = uVar18 >> 0x10;\n        iVar24 = 0xe;\n        if ((uVar37 & 0xff) == 0) {\n          uVar37 = uVar18 >> 0x18;\n          iVar24 = 0x1e;\n          if (uVar37 != 0) {\n            iVar24 = 0x16;\n          }\n        }\n      }\n      uVar37 = (uint)*(byte *)(*(int *)(puVar46 + -0x3c) + (-uVar37 & uVar37)) + iVar24;\n    }\n    else {\n      uVar37 = *(byte *)(*(int *)(puVar46 + -0x3c) + (-uVar18 & uVar18)) - 2;\n    }\n    iVar39 = *(int *)(puVar46 + -0x38);\n    *puVar36 = uVar18 >> (uVar37 & 0x1f);\n    iVar24 = *(int *)(puVar46 + -0x60);\n    *(uint *)(puVar46 + -0x40) =\n         *(int *)(puVar46 + -0x40) + *(byte *)(iVar39 + (uVar7 - 1)) + uVar37;\n    if ((uint)(iVar24 - iVar6) <= uVar7) {\n      uVar7 = iVar24 - iVar6;\n    }\n    iVar39 = iVar6;\n    if (uVar7 != 0) goto LAB_00022234;\nLAB_00022534:\n    puVar31 = (uint *)0x1;\n    *(uint **)(puVar46 + -0x4c) = puVar36;\n  } while( true );\n}" ({ "{") (declaration "uint *puVar1;" (type_identifier "uint") (pointer_declarator "*puVar1" (* "*") (identifier "puVar1")) (; ";")) (declaration "byte bVar2;" (type_identifier "byte") (identifier "bVar2") (; ";")) (declaration "bool bVar3;" (primitive_type "bool") (identifier "bVar3") (; ";")) (declaration "bool bVar4;" (primitive_type "bool") (identifier "bVar4") (; ";")) (declaration "undefined *puVar5;" (type_identifier "undefined") (pointer_declarator "*puVar5" (* "*") (identifier "puVar5")) (; ";")) (declaration "int iVar6;" (primitive_type "int") (identifier "iVar6") (; ";")) (declaration "uint uVar7;" (type_identifier "uint") (identifier "uVar7") (; ";")) (declaration "uint *puVar8;" (type_identifier "uint") (pointer_declarator "*puVar8" (* "*") (identifier "puVar8")) (; ";")) (declaration "uint *puVar9;" (type_identifier "uint") (pointer_declarator "*puVar9" (* "*") (identifier "puVar9")) (; ";")) (declaration "undefined4 uVar10;" (type_identifier "undefined4") (identifier "uVar10") (; ";")) (declaration "uint uVar11;" (type_identifier "uint") (identifier "uVar11") (; ";")) (declaration "uint uVar12;" (type_identifier "uint") (identifier "uVar12") (; ";")) (declaration "undefined1 *puVar13;" (type_identifier "undefined1") (pointer_declarator "*puVar13" (* "*") (identifier "puVar13")) (; ";")) (declaration "undefined *puVar14;" (type_identifier "undefined") (pointer_declarator "*puVar14" (* "*") (identifier "puVar14")) (; ";")) (declaration "undefined4 *puVar15;" (type_identifier "undefined4") (pointer_declarator "*puVar15" (* "*") (identifier "puVar15")) (; ";")) (declaration "uint *puVar16;" (type_identifier "uint") (pointer_declarator "*puVar16" (* "*") (identifier "puVar16")) (; ";")) (declaration "int *piVar17;" (primitive_type "int") (pointer_declarator "*piVar17" (* "*") (identifier "piVar17")) (; ";")) (declaration "uint uVar18;" (type_identifier "uint") (identifier "uVar18") (; ";")) (declaration "undefined4 *puVar19;" (type_identifier "undefined4") (pointer_declarator "*puVar19" (* "*") (identifier "puVar19")) (; ";")) (declaration "uint *puVar20;" (type_identifier "uint") (pointer_declarator "*puVar20" (* "*") (identifier "puVar20")) (; ";")) (declaration "uint uVar21;" (type_identifier "uint") (identifier "uVar21") (; ";")) (declaration "uint *puVar22;" (type_identifier "uint") (pointer_declarator "*puVar22" (* "*") (identifier "puVar22")) (; ";")) (declaration "uint uVar23;" (type_identifier "uint") (identifier "uVar23") (; ";")) (declaration "int iVar24;" (primitive_type "int") (identifier "iVar24") (; ";")) (declaration "uint uVar25;" (type_identifier "uint") (identifier "uVar25") (; ";")) (declaration "uint uVar26;" (type_identifier "uint") (identifier "uVar26") (; ";")) (declaration "uint uVar27;" (type_identifier "uint") (identifier "uVar27") (; ";")) (declaration "uint uVar28;" (type_identifier "uint") (identifier "uVar28") (; ";")) (declaration "int iVar29;" (primitive_type "int") (identifier "iVar29") (; ";")) (declaration "uint *puVar30;" (type_identifier "uint") (pointer_declarator "*puVar30" (* "*") (identifier "puVar30")) (; ";")) (declaration "uint *puVar31;" (type_identifier "uint") (pointer_declarator "*puVar31" (* "*") (identifier "puVar31")) (; ";")) (declaration "int *piVar32;" (primitive_type "int") (pointer_declarator "*piVar32" (* "*") (identifier "piVar32")) (; ";")) (declaration "int iVar33;" (primitive_type "int") (identifier "iVar33") (; ";")) (declaration "int *piVar34;" (primitive_type "int") (pointer_declarator "*piVar34" (* "*") (identifier "piVar34")) (; ";")) (declaration "uint uVar35;" (type_identifier "uint") (identifier "uVar35") (; ";")) (declaration "uint *puVar36;" (type_identifier "uint") (pointer_declarator "*puVar36" (* "*") (identifier "puVar36")) (; ";")) (declaration "uint uVar37;" (type_identifier "uint") (identifier "uVar37") (; ";")) (declaration "uint *puVar38;" (type_identifier "uint") (pointer_declarator "*puVar38" (* "*") (identifier "puVar38")) (; ";")) (declaration "int iVar39;" (primitive_type "int") (identifier "iVar39") (; ";")) (declaration "uint uVar40;" (type_identifier "uint") (identifier "uVar40") (; ";")) (declaration "int iVar41;" (primitive_type "int") (identifier "iVar41") (; ";")) (declaration "uint uVar42;" (type_identifier "uint") (identifier "uVar42") (; ";")) (declaration "undefined *puVar43;" (type_identifier "undefined") (pointer_declarator "*puVar43" (* "*") (identifier "puVar43")) (; ";")) (declaration "code *pcVar44;" (type_identifier "code") (pointer_declarator "*pcVar44" (* "*") (identifier "pcVar44")) (; ";")) (declaration "undefined1 *puVar45;" (type_identifier "undefined1") (pointer_declarator "*puVar45" (* "*") (identifier "puVar45")) (; ";")) (declaration "undefined1 *puVar46;" (type_identifier "undefined1") (pointer_declarator "*puVar46" (* "*") (identifier "puVar46")) (; ";")) (declaration "undefined1 *puVar47;" (type_identifier "undefined1") (pointer_declarator "*puVar47" (* "*") (identifier "puVar47")) (; ";")) (declaration "undefined1 *puVar48;" (type_identifier "undefined1") (pointer_declarator "*puVar48" (* "*") (identifier "puVar48")) (; ";")) (declaration "undefined1 *puVar49;" (type_identifier "undefined1") (pointer_declarator "*puVar49" (* "*") (identifier "puVar49")) (; ";")) (declaration "undefined1 *puVar50;" (type_identifier "undefined1") (pointer_declarator "*puVar50" (* "*") (identifier "puVar50")) (; ";")) (declaration "code *pcVar51;" (type_identifier "code") (pointer_declarator "*pcVar51" (* "*") (identifier "pcVar51")) (; ";")) (declaration "code *pcVar52;" (type_identifier "code") (pointer_declarator "*pcVar52" (* "*") (identifier "pcVar52")) (; ";")) (declaration "uint uVar53;" (type_identifier "uint") (identifier "uVar53") (; ";")) (declaration "uint uVar54;" (type_identifier "uint") (identifier "uVar54") (; ";")) (declaration "undefined1 auStack_48 [16];" (type_identifier "undefined1") (array_declarator "auStack_48 [16]" (identifier "auStack_48") ([ "[") (number_literal "16") (] "]")) (; ";")) (declaration "int local_30;" (primitive_type "int") (identifier "local_30") (; ";")) (declaration "int local_2c;" (primitive_type "int") (identifier "local_2c") (; ";")) (expression_statement "puVar5 = PTR___stack_chk_guard_0009d540;" (assignment_expression "puVar5 = PTR___stack_chk_guard_0009d540" (identifier "puVar5") (= "=") (identifier "PTR___stack_chk_guard_0009d540")) (; ";")) (expression_statement "puVar45 = auStack_48;" (assignment_expression "puVar45 = auStack_48" (identifier "puVar45") (= "=") (identifier "auStack_48")) (; ";")) (expression_statement "uVar37 = param_2 - 5 | 1;" (assignment_expression "uVar37 = param_2 - 5 | 1" (identifier "uVar37") (= "=") (binary_expression "param_2 - 5 | 1" (binary_expression "param_2 - 5" (identifier "param_2") (- "-") (number_literal "5")) (| "|") (number_literal "1"))) (; ";")) (expression_statement "local_30 = 0;" (assignment_expression "local_30 = 0" (identifier "local_30") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_2c = *(int *)PTR___stack_chk_guard_0009d540;" (assignment_expression "local_2c = *(int *)PTR___stack_chk_guard_0009d540" (identifier "local_2c") (= "=") (pointer_expression "*(int *)PTR___stack_chk_guard_0009d540" (* "*") (cast_expression "(int *)PTR___stack_chk_guard_0009d540" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___stack_chk_guard_0009d540")))) (; ";")) (expression_statement "uVar18 = (uVar37 / 0x60 + 1) * 4;" (assignment_expression "uVar18 = (uVar37 / 0x60 + 1) * 4" (identifier "uVar18") (= "=") (binary_expression "(uVar37 / 0x60 + 1) * 4" (parenthesized_expression "(uVar37 / 0x60 + 1)" (( "(") (binary_expression "uVar37 / 0x60 + 1" (binary_expression "uVar37 / 0x60" (identifier "uVar37") (/ "/") (number_literal "0x60")) (+ "+") (number_literal "1")) () ")")) (* "*") (number_literal "4"))) (; ";")) (if_statement "if (uVar18 < 0x7f01) {\n    iVar6 = -(uVar18 + 7 & 0xfffffff8);\n    puVar45 = auStack_48 + iVar6;\n    puVar13 = &stack0xffffffc8 + iVar6;\n  }\n  else {\n    puVar13 = (undefined1 *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&local_30);\n  }" (if "if") (parenthesized_expression "(uVar18 < 0x7f01)" (( "(") (binary_expression "uVar18 < 0x7f01" (identifier "uVar18") (< "<") (number_literal "0x7f01")) () ")")) (compound_statement "{\n    iVar6 = -(uVar18 + 7 & 0xfffffff8);\n    puVar45 = auStack_48 + iVar6;\n    puVar13 = &stack0xffffffc8 + iVar6;\n  }" ({ "{") (expression_statement "iVar6 = -(uVar18 + 7 & 0xfffffff8);" (assignment_expression "iVar6 = -(uVar18 + 7 & 0xfffffff8)" (identifier "iVar6") (= "=") (unary_expression "-(uVar18 + 7 & 0xfffffff8)" (- "-") (parenthesized_expression "(uVar18 + 7 & 0xfffffff8)" (( "(") (binary_expression "uVar18 + 7 & 0xfffffff8" (binary_expression "uVar18 + 7" (identifier "uVar18") (+ "+") (number_literal "7")) (& "&") (number_literal "0xfffffff8")) () ")")))) (; ";")) (expression_statement "puVar45 = auStack_48 + iVar6;" (assignment_expression "puVar45 = auStack_48 + iVar6" (identifier "puVar45") (= "=") (binary_expression "auStack_48 + iVar6" (identifier "auStack_48") (+ "+") (identifier "iVar6"))) (; ";")) (expression_statement "puVar13 = &stack0xffffffc8 + iVar6;" (assignment_expression "puVar13 = &stack0xffffffc8 + iVar6" (identifier "puVar13") (= "=") (binary_expression "&stack0xffffffc8 + iVar6" (pointer_expression "&stack0xffffffc8" (& "&") (identifier "stack0xffffffc8")) (+ "+") (identifier "iVar6"))) (; ";")) (} "}")) (else_clause "else {\n    puVar13 = (undefined1 *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&local_30);\n  }" (else "else") (compound_statement "{\n    puVar13 = (undefined1 *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&local_30);\n  }" ({ "{") (expression_statement "puVar13 = (undefined1 *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&local_30);" (assignment_expression "puVar13 = (undefined1 *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&local_30)" (identifier "puVar13") (= "=") (cast_expression "(undefined1 *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&local_30)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&local_30)" (parenthesized_expression "(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)" (( "(") (pointer_expression "*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0" (* "*") (cast_expression "(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___gmp_tmp_reentrant_alloc_0009d2f0"))) () ")")) (argument_list "(&local_30)" (( "(") (pointer_expression "&local_30" (& "&") (identifier "local_30")) () ")"))))) (; ";")) (} "}")))) (expression_statement "iVar6 = (*(code *)PTR___gmp_primesieve_0009d144)(puVar13,param_2);" (assignment_expression "iVar6 = (*(code *)PTR___gmp_primesieve_0009d144)(puVar13,param_2)" (identifier "iVar6") (= "=") (call_expression "(*(code *)PTR___gmp_primesieve_0009d144)(puVar13,param_2)" (parenthesized_expression "(*(code *)PTR___gmp_primesieve_0009d144)" (( "(") (pointer_expression "*(code *)PTR___gmp_primesieve_0009d144" (* "*") (cast_expression "(code *)PTR___gmp_primesieve_0009d144" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___gmp_primesieve_0009d144"))) () ")")) (argument_list "(puVar13,param_2)" (( "(") (identifier "puVar13") (, ",") (identifier "param_2") () ")")))) (; ";")) (expression_statement "uVar7 = iVar6 + 1;" (assignment_expression "uVar7 = iVar6 + 1" (identifier "uVar7") (= "=") (binary_expression "iVar6 + 1" (identifier "iVar6") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "puVar8 = (uint *)(PTR___gmp_limbroots_table_0009d3d4 + 0x1c);" (assignment_expression "puVar8 = (uint *)(PTR___gmp_limbroots_table_0009d3d4 + 0x1c)" (identifier "puVar8") (= "=") (cast_expression "(uint *)(PTR___gmp_limbroots_table_0009d3d4 + 0x1c)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR___gmp_limbroots_table_0009d3d4 + 0x1c)" (( "(") (binary_expression "PTR___gmp_limbroots_table_0009d3d4 + 0x1c" (identifier "PTR___gmp_limbroots_table_0009d3d4") (+ "+") (number_literal "0x1c")) () ")")))) (; ";")) (expression_statement "uVar18 = 8;" (assignment_expression "uVar18 = 8" (identifier "uVar18") (= "=") (number_literal "8")) (; ";")) (do_statement "do {\n    uVar23 = uVar18;\n    uVar11 = *puVar8;\n    puVar8 = puVar8 + -1;\n    uVar18 = uVar23 - 1;\n  } while (uVar11 < param_2);" (do "do") (compound_statement "{\n    uVar23 = uVar18;\n    uVar11 = *puVar8;\n    puVar8 = puVar8 + -1;\n    uVar18 = uVar23 - 1;\n  }" ({ "{") (expression_statement "uVar23 = uVar18;" (assignment_expression "uVar23 = uVar18" (identifier "uVar23") (= "=") (identifier "uVar18")) (; ";")) (expression_statement "uVar11 = *puVar8;" (assignment_expression "uVar11 = *puVar8" (identifier "uVar11") (= "=") (pointer_expression "*puVar8" (* "*") (identifier "puVar8"))) (; ";")) (expression_statement "puVar8 = puVar8 + -1;" (assignment_expression "puVar8 = puVar8 + -1" (identifier "puVar8") (= "=") (binary_expression "puVar8 + -1" (identifier "puVar8") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "uVar18 = uVar23 - 1;" (assignment_expression "uVar18 = uVar23 - 1" (identifier "uVar18") (= "=") (binary_expression "uVar23 - 1" (identifier "uVar23") (- "-") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(uVar11 < param_2)" (( "(") (binary_expression "uVar11 < param_2" (identifier "uVar11") (< "<") (identifier "param_2")) () ")")) (; ";")) (if_statement "if (uVar23 == 0) {\n    trap(7);\n  }" (if "if") (parenthesized_expression "(uVar23 == 0)" (( "(") (binary_expression "uVar23 == 0" (identifier "uVar23") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    trap(7);\n  }" ({ "{") (expression_statement "trap(7);" (call_expression "trap(7)" (identifier "trap") (argument_list "(7)" (( "(") (number_literal "7") () ")"))) (; ";")) (} "}"))) (expression_statement "puVar8 = (uint *)(PTR___gmp_limbroots_table_0009d3d4 + 0x1c);" (assignment_expression "puVar8 = (uint *)(PTR___gmp_limbroots_table_0009d3d4 + 0x1c)" (identifier "puVar8") (= "=") (cast_expression "(uint *)(PTR___gmp_limbroots_table_0009d3d4 + 0x1c)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR___gmp_limbroots_table_0009d3d4 + 0x1c)" (( "(") (binary_expression "PTR___gmp_limbroots_table_0009d3d4 + 0x1c" (identifier "PTR___gmp_limbroots_table_0009d3d4") (+ "+") (number_literal "0x1c")) () ")")))) (; ";")) (expression_statement "uVar18 = 8;" (assignment_expression "uVar18 = 8" (identifier "uVar18") (= "=") (number_literal "8")) (; ";")) (if_statement "if ((uVar7 / uVar23 + 1) * 4 < 0x7f01) {\n    do {\n      uVar23 = uVar18;\n      uVar11 = *puVar8;\n      puVar8 = puVar8 + -1;\n      uVar18 = uVar23 - 1;\n    } while (uVar11 < param_2);\n    if (uVar23 == 0) {\n      trap(7);\n    }\n    iVar6 = -((uVar7 / uVar23) * 4 + 0xb & 0xfffffff8);\n    puVar46 = puVar45 + iVar6;\n    puVar8 = (uint *)(puVar45 + iVar6 + 0x10);\n  }\n  else {\n    for (puVar14 = PTR___gmp_limbroots_table_0009d3d4 + 0x18; *(uint *)(puVar14 + 4) < param_2;\n        puVar14 = puVar14 + -4) {\n      uVar18 = uVar18 - 1;\n    }\n    if (uVar18 == 0) {\n      trap(7);\n    }\n    puVar8 = (uint *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)\n                               (&local_30,(uVar7 / uVar18 + 1) * 4);\n    puVar46 = puVar45;\n  }" (if "if") (parenthesized_expression "((uVar7 / uVar23 + 1) * 4 < 0x7f01)" (( "(") (binary_expression "(uVar7 / uVar23 + 1) * 4 < 0x7f01" (binary_expression "(uVar7 / uVar23 + 1) * 4" (parenthesized_expression "(uVar7 / uVar23 + 1)" (( "(") (binary_expression "uVar7 / uVar23 + 1" (binary_expression "uVar7 / uVar23" (identifier "uVar7") (/ "/") (identifier "uVar23")) (+ "+") (number_literal "1")) () ")")) (* "*") (number_literal "4")) (< "<") (number_literal "0x7f01")) () ")")) (compound_statement "{\n    do {\n      uVar23 = uVar18;\n      uVar11 = *puVar8;\n      puVar8 = puVar8 + -1;\n      uVar18 = uVar23 - 1;\n    } while (uVar11 < param_2);\n    if (uVar23 == 0) {\n      trap(7);\n    }\n    iVar6 = -((uVar7 / uVar23) * 4 + 0xb & 0xfffffff8);\n    puVar46 = puVar45 + iVar6;\n    puVar8 = (uint *)(puVar45 + iVar6 + 0x10);\n  }" ({ "{") (do_statement "do {\n      uVar23 = uVar18;\n      uVar11 = *puVar8;\n      puVar8 = puVar8 + -1;\n      uVar18 = uVar23 - 1;\n    } while (uVar11 < param_2);" (do "do") (compound_statement "{\n      uVar23 = uVar18;\n      uVar11 = *puVar8;\n      puVar8 = puVar8 + -1;\n      uVar18 = uVar23 - 1;\n    }" ({ "{") (expression_statement "uVar23 = uVar18;" (assignment_expression "uVar23 = uVar18" (identifier "uVar23") (= "=") (identifier "uVar18")) (; ";")) (expression_statement "uVar11 = *puVar8;" (assignment_expression "uVar11 = *puVar8" (identifier "uVar11") (= "=") (pointer_expression "*puVar8" (* "*") (identifier "puVar8"))) (; ";")) (expression_statement "puVar8 = puVar8 + -1;" (assignment_expression "puVar8 = puVar8 + -1" (identifier "puVar8") (= "=") (binary_expression "puVar8 + -1" (identifier "puVar8") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "uVar18 = uVar23 - 1;" (assignment_expression "uVar18 = uVar23 - 1" (identifier "uVar18") (= "=") (binary_expression "uVar23 - 1" (identifier "uVar23") (- "-") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(uVar11 < param_2)" (( "(") (binary_expression "uVar11 < param_2" (identifier "uVar11") (< "<") (identifier "param_2")) () ")")) (; ";")) (if_statement "if (uVar23 == 0) {\n      trap(7);\n    }" (if "if") (parenthesized_expression "(uVar23 == 0)" (( "(") (binary_expression "uVar23 == 0" (identifier "uVar23") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      trap(7);\n    }" ({ "{") (expression_statement "trap(7);" (call_expression "trap(7)" (identifier "trap") (argument_list "(7)" (( "(") (number_literal "7") () ")"))) (; ";")) (} "}"))) (expression_statement "iVar6 = -((uVar7 / uVar23) * 4 + 0xb & 0xfffffff8);" (assignment_expression "iVar6 = -((uVar7 / uVar23) * 4 + 0xb & 0xfffffff8)" (identifier "iVar6") (= "=") (unary_expression "-((uVar7 / uVar23) * 4 + 0xb & 0xfffffff8)" (- "-") (parenthesized_expression "((uVar7 / uVar23) * 4 + 0xb & 0xfffffff8)" (( "(") (binary_expression "(uVar7 / uVar23) * 4 + 0xb & 0xfffffff8" (binary_expression "(uVar7 / uVar23) * 4 + 0xb" (binary_expression "(uVar7 / uVar23) * 4" (parenthesized_expression "(uVar7 / uVar23)" (( "(") (binary_expression "uVar7 / uVar23" (identifier "uVar7") (/ "/") (identifier "uVar23")) () ")")) (* "*") (number_literal "4")) (+ "+") (number_literal "0xb")) (& "&") (number_literal "0xfffffff8")) () ")")))) (; ";")) (expression_statement "puVar46 = puVar45 + iVar6;" (assignment_expression "puVar46 = puVar45 + iVar6" (identifier "puVar46") (= "=") (binary_expression "puVar45 + iVar6" (identifier "puVar45") (+ "+") (identifier "iVar6"))) (; ";")) (expression_statement "puVar8 = (uint *)(puVar45 + iVar6 + 0x10);" (assignment_expression "puVar8 = (uint *)(puVar45 + iVar6 + 0x10)" (identifier "puVar8") (= "=") (cast_expression "(uint *)(puVar45 + iVar6 + 0x10)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar45 + iVar6 + 0x10)" (( "(") (binary_expression "puVar45 + iVar6 + 0x10" (binary_expression "puVar45 + iVar6" (identifier "puVar45") (+ "+") (identifier "iVar6")) (+ "+") (number_literal "0x10")) () ")")))) (; ";")) (} "}")) (else_clause "else {\n    for (puVar14 = PTR___gmp_limbroots_table_0009d3d4 + 0x18; *(uint *)(puVar14 + 4) < param_2;\n        puVar14 = puVar14 + -4) {\n      uVar18 = uVar18 - 1;\n    }\n    if (uVar18 == 0) {\n      trap(7);\n    }\n    puVar8 = (uint *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)\n                               (&local_30,(uVar7 / uVar18 + 1) * 4);\n    puVar46 = puVar45;\n  }" (else "else") (compound_statement "{\n    for (puVar14 = PTR___gmp_limbroots_table_0009d3d4 + 0x18; *(uint *)(puVar14 + 4) < param_2;\n        puVar14 = puVar14 + -4) {\n      uVar18 = uVar18 - 1;\n    }\n    if (uVar18 == 0) {\n      trap(7);\n    }\n    puVar8 = (uint *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)\n                               (&local_30,(uVar7 / uVar18 + 1) * 4);\n    puVar46 = puVar45;\n  }" ({ "{") (for_statement "for (puVar14 = PTR___gmp_limbroots_table_0009d3d4 + 0x18; *(uint *)(puVar14 + 4) < param_2;\n        puVar14 = puVar14 + -4) {\n      uVar18 = uVar18 - 1;\n    }" (for "for") (( "(") (assignment_expression "puVar14 = PTR___gmp_limbroots_table_0009d3d4 + 0x18" (identifier "puVar14") (= "=") (binary_expression "PTR___gmp_limbroots_table_0009d3d4 + 0x18" (identifier "PTR___gmp_limbroots_table_0009d3d4") (+ "+") (number_literal "0x18"))) (; ";") (binary_expression "*(uint *)(puVar14 + 4) < param_2" (pointer_expression "*(uint *)(puVar14 + 4)" (* "*") (cast_expression "(uint *)(puVar14 + 4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar14 + 4)" (( "(") (binary_expression "puVar14 + 4" (identifier "puVar14") (+ "+") (number_literal "4")) () ")")))) (< "<") (identifier "param_2")) (; ";") (assignment_expression "puVar14 = puVar14 + -4" (identifier "puVar14") (= "=") (binary_expression "puVar14 + -4" (identifier "puVar14") (+ "+") (number_literal "-4"))) () ")") (compound_statement "{\n      uVar18 = uVar18 - 1;\n    }" ({ "{") (expression_statement "uVar18 = uVar18 - 1;" (assignment_expression "uVar18 = uVar18 - 1" (identifier "uVar18") (= "=") (binary_expression "uVar18 - 1" (identifier "uVar18") (- "-") (number_literal "1"))) (; ";")) (} "}"))) (if_statement "if (uVar18 == 0) {\n      trap(7);\n    }" (if "if") (parenthesized_expression "(uVar18 == 0)" (( "(") (binary_expression "uVar18 == 0" (identifier "uVar18") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      trap(7);\n    }" ({ "{") (expression_statement "trap(7);" (call_expression "trap(7)" (identifier "trap") (argument_list "(7)" (( "(") (number_literal "7") () ")"))) (; ";")) (} "}"))) (expression_statement "puVar8 = (uint *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)\n                               (&local_30,(uVar7 / uVar18 + 1) * 4);" (assignment_expression "puVar8 = (uint *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)\n                               (&local_30,(uVar7 / uVar18 + 1) * 4)" (identifier "puVar8") (= "=") (cast_expression "(uint *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)\n                               (&local_30,(uVar7 / uVar18 + 1) * 4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)\n                               (&local_30,(uVar7 / uVar18 + 1) * 4)" (parenthesized_expression "(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)" (( "(") (pointer_expression "*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0" (* "*") (cast_expression "(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___gmp_tmp_reentrant_alloc_0009d2f0"))) () ")")) (argument_list "(&local_30,(uVar7 / uVar18 + 1) * 4)" (( "(") (pointer_expression "&local_30" (& "&") (identifier "local_30")) (, ",") (binary_expression "(uVar7 / uVar18 + 1) * 4" (parenthesized_expression "(uVar7 / uVar18 + 1)" (( "(") (binary_expression "uVar7 / uVar18 + 1" (binary_expression "uVar7 / uVar18" (identifier "uVar7") (/ "/") (identifier "uVar18")) (+ "+") (number_literal "1")) () ")")) (* "*") (number_literal "4")) () ")"))))) (; ";")) (expression_statement "puVar46 = puVar45;" (assignment_expression "puVar46 = puVar45" (identifier "puVar46") (= "=") (identifier "puVar45")) (; ";")) (} "}")))) (expression_statement "uVar18 = param_2 - param_3;" (assignment_expression "uVar18 = param_2 - param_3" (identifier "uVar18") (= "=") (binary_expression "param_2 - param_3" (identifier "param_2") (- "-") (identifier "param_3"))) (; ";")) (if_statement "if (param_2 == 0) {\n    trap(7);\n  }" (if "if") (parenthesized_expression "(param_2 == 0)" (( "(") (binary_expression "param_2 == 0" (identifier "param_2") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    trap(7);\n  }" ({ "{") (expression_statement "trap(7);" (call_expression "trap(7)" (identifier "trap") (argument_list "(7)" (( "(") (number_literal "7") () ")"))) (; ";")) (} "}"))) (expression_statement "uVar53 = 0xffffffff / param_2;" (assignment_expression "uVar53 = 0xffffffff / param_2" (identifier "uVar53") (= "=") (binary_expression "0xffffffff / param_2" (number_literal "0xffffffff") (/ "/") (identifier "param_2"))) (; ";")) (expression_statement "uVar40 = param_2 >> 1;" (assignment_expression "uVar40 = param_2 >> 1" (identifier "uVar40") (= "=") (binary_expression "param_2 >> 1" (identifier "param_2") (>> ">>") (number_literal "1"))) (; ";")) (expression_statement "uVar11 = uVar18 - (uVar18 >> 1 & 0x55555555);" (assignment_expression "uVar11 = uVar18 - (uVar18 >> 1 & 0x55555555)" (identifier "uVar11") (= "=") (binary_expression "uVar18 - (uVar18 >> 1 & 0x55555555)" (identifier "uVar18") (- "-") (parenthesized_expression "(uVar18 >> 1 & 0x55555555)" (( "(") (binary_expression "uVar18 >> 1 & 0x55555555" (binary_expression "uVar18 >> 1" (identifier "uVar18") (>> ">>") (number_literal "1")) (& "&") (number_literal "0x55555555")) () ")")))) (; ";")) (expression_statement "uVar23 = param_2 - (uVar40 & 0x55555555);" (assignment_expression "uVar23 = param_2 - (uVar40 & 0x55555555)" (identifier "uVar23") (= "=") (binary_expression "param_2 - (uVar40 & 0x55555555)" (identifier "param_2") (- "-") (parenthesized_expression "(uVar40 & 0x55555555)" (( "(") (binary_expression "uVar40 & 0x55555555" (identifier "uVar40") (& "&") (number_literal "0x55555555")) () ")")))) (; ";")) (expression_statement "uVar7 = param_3 - (param_3 >> 1 & 0x55555555);" (assignment_expression "uVar7 = param_3 - (param_3 >> 1 & 0x55555555)" (identifier "uVar7") (= "=") (binary_expression "param_3 - (param_3 >> 1 & 0x55555555)" (identifier "param_3") (- "-") (parenthesized_expression "(param_3 >> 1 & 0x55555555)" (( "(") (binary_expression "param_3 >> 1 & 0x55555555" (binary_expression "param_3 >> 1" (identifier "param_3") (>> ">>") (number_literal "1")) (& "&") (number_literal "0x55555555")) () ")")))) (; ";")) (expression_statement "uVar26 = (uVar11 >> 2 & 0x33333333) + (uVar11 & 0x33333333);" (assignment_expression "uVar26 = (uVar11 >> 2 & 0x33333333) + (uVar11 & 0x33333333)" (identifier "uVar26") (= "=") (binary_expression "(uVar11 >> 2 & 0x33333333) + (uVar11 & 0x33333333)" (parenthesized_expression "(uVar11 >> 2 & 0x33333333)" (( "(") (binary_expression "uVar11 >> 2 & 0x33333333" (binary_expression "uVar11 >> 2" (identifier "uVar11") (>> ">>") (number_literal "2")) (& "&") (number_literal "0x33333333")) () ")")) (+ "+") (parenthesized_expression "(uVar11 & 0x33333333)" (( "(") (binary_expression "uVar11 & 0x33333333" (identifier "uVar11") (& "&") (number_literal "0x33333333")) () ")")))) (; ";")) (expression_statement "uVar23 = (uVar23 >> 2 & 0x33333333) + (uVar23 & 0x33333333);" (assignment_expression "uVar23 = (uVar23 >> 2 & 0x33333333) + (uVar23 & 0x33333333)" (identifier "uVar23") (= "=") (binary_expression "(uVar23 >> 2 & 0x33333333) + (uVar23 & 0x33333333)" (parenthesized_expression "(uVar23 >> 2 & 0x33333333)" (( "(") (binary_expression "uVar23 >> 2 & 0x33333333" (binary_expression "uVar23 >> 2" (identifier "uVar23") (>> ">>") (number_literal "2")) (& "&") (number_literal "0x33333333")) () ")")) (+ "+") (parenthesized_expression "(uVar23 & 0x33333333)" (( "(") (binary_expression "uVar23 & 0x33333333" (identifier "uVar23") (& "&") (number_literal "0x33333333")) () ")")))) (; ";")) (expression_statement "uVar11 = (uVar7 >> 2 & 0x33333333) + (uVar7 & 0x33333333);" (assignment_expression "uVar11 = (uVar7 >> 2 & 0x33333333) + (uVar7 & 0x33333333)" (identifier "uVar11") (= "=") (binary_expression "(uVar7 >> 2 & 0x33333333) + (uVar7 & 0x33333333)" (parenthesized_expression "(uVar7 >> 2 & 0x33333333)" (( "(") (binary_expression "uVar7 >> 2 & 0x33333333" (binary_expression "uVar7 >> 2" (identifier "uVar7") (>> ">>") (number_literal "2")) (& "&") (number_literal "0x33333333")) () ")")) (+ "+") (parenthesized_expression "(uVar7 & 0x33333333)" (( "(") (binary_expression "uVar7 & 0x33333333" (identifier "uVar7") (& "&") (number_literal "0x33333333")) () ")")))) (; ";")) (expression_statement "uVar7 = (uVar26 >> 4) + uVar26 & 0xf0f0f0f;" (assignment_expression "uVar7 = (uVar26 >> 4) + uVar26 & 0xf0f0f0f" (identifier "uVar7") (= "=") (binary_expression "(uVar26 >> 4) + uVar26 & 0xf0f0f0f" (binary_expression "(uVar26 >> 4) + uVar26" (parenthesized_expression "(uVar26 >> 4)" (( "(") (binary_expression "uVar26 >> 4" (identifier "uVar26") (>> ">>") (number_literal "4")) () ")")) (+ "+") (identifier "uVar26")) (& "&") (number_literal "0xf0f0f0f"))) (; ";")) (expression_statement "uVar23 = (uVar23 >> 4) + uVar23 & 0xf0f0f0f;" (assignment_expression "uVar23 = (uVar23 >> 4) + uVar23 & 0xf0f0f0f" (identifier "uVar23") (= "=") (binary_expression "(uVar23 >> 4) + uVar23 & 0xf0f0f0f" (binary_expression "(uVar23 >> 4) + uVar23" (parenthesized_expression "(uVar23 >> 4)" (( "(") (binary_expression "uVar23 >> 4" (identifier "uVar23") (>> ">>") (number_literal "4")) () ")")) (+ "+") (identifier "uVar23")) (& "&") (number_literal "0xf0f0f0f"))) (; ";")) (expression_statement "uVar7 = (uVar7 >> 8) + uVar7;" (assignment_expression "uVar7 = (uVar7 >> 8) + uVar7" (identifier "uVar7") (= "=") (binary_expression "(uVar7 >> 8) + uVar7" (parenthesized_expression "(uVar7 >> 8)" (( "(") (binary_expression "uVar7 >> 8" (identifier "uVar7") (>> ">>") (number_literal "8")) () ")")) (+ "+") (identifier "uVar7"))) (; ";")) (expression_statement "uVar11 = (uVar11 >> 4) + uVar11 & 0xf0f0f0f;" (assignment_expression "uVar11 = (uVar11 >> 4) + uVar11 & 0xf0f0f0f" (identifier "uVar11") (= "=") (binary_expression "(uVar11 >> 4) + uVar11 & 0xf0f0f0f" (binary_expression "(uVar11 >> 4) + uVar11" (parenthesized_expression "(uVar11 >> 4)" (( "(") (binary_expression "uVar11 >> 4" (identifier "uVar11") (>> ">>") (number_literal "4")) () ")")) (+ "+") (identifier "uVar11")) (& "&") (number_literal "0xf0f0f0f"))) (; ";")) (expression_statement "uVar23 = (uVar23 >> 8) + uVar23;" (assignment_expression "uVar23 = (uVar23 >> 8) + uVar23" (identifier "uVar23") (= "=") (binary_expression "(uVar23 >> 8) + uVar23" (parenthesized_expression "(uVar23 >> 8)" (( "(") (binary_expression "uVar23 >> 8" (identifier "uVar23") (>> ">>") (number_literal "8")) () ")")) (+ "+") (identifier "uVar23"))) (; ";")) (expression_statement "uVar11 = (uVar11 >> 8) + uVar11;" (assignment_expression "uVar11 = (uVar11 >> 8) + uVar11" (identifier "uVar11") (= "=") (binary_expression "(uVar11 >> 8) + uVar11" (parenthesized_expression "(uVar11 >> 8)" (( "(") (binary_expression "uVar11 >> 8" (identifier "uVar11") (>> ">>") (number_literal "8")) () ")")) (+ "+") (identifier "uVar11"))) (; ";")) (expression_statement "uVar7 = 1 << ((uVar11 >> 0x10) + uVar11 +\n                (((uVar7 >> 0x10) + uVar7 & 0xff) - ((uVar23 >> 0x10) + uVar23 & 0xff)) & 0x1f);" (assignment_expression "uVar7 = 1 << ((uVar11 >> 0x10) + uVar11 +\n                (((uVar7 >> 0x10) + uVar7 & 0xff) - ((uVar23 >> 0x10) + uVar23 & 0xff)) & 0x1f)" (identifier "uVar7") (= "=") (binary_expression "1 << ((uVar11 >> 0x10) + uVar11 +\n                (((uVar7 >> 0x10) + uVar7 & 0xff) - ((uVar23 >> 0x10) + uVar23 & 0xff)) & 0x1f)" (number_literal "1") (<< "<<") (parenthesized_expression "((uVar11 >> 0x10) + uVar11 +\n                (((uVar7 >> 0x10) + uVar7 & 0xff) - ((uVar23 >> 0x10) + uVar23 & 0xff)) & 0x1f)" (( "(") (binary_expression "(uVar11 >> 0x10) + uVar11 +\n                (((uVar7 >> 0x10) + uVar7 & 0xff) - ((uVar23 >> 0x10) + uVar23 & 0xff)) & 0x1f" (binary_expression "(uVar11 >> 0x10) + uVar11 +\n                (((uVar7 >> 0x10) + uVar7 & 0xff) - ((uVar23 >> 0x10) + uVar23 & 0xff))" (binary_expression "(uVar11 >> 0x10) + uVar11" (parenthesized_expression "(uVar11 >> 0x10)" (( "(") (binary_expression "uVar11 >> 0x10" (identifier "uVar11") (>> ">>") (number_literal "0x10")) () ")")) (+ "+") (identifier "uVar11")) (+ "+") (parenthesized_expression "(((uVar7 >> 0x10) + uVar7 & 0xff) - ((uVar23 >> 0x10) + uVar23 & 0xff))" (( "(") (binary_expression "((uVar7 >> 0x10) + uVar7 & 0xff) - ((uVar23 >> 0x10) + uVar23 & 0xff)" (parenthesized_expression "((uVar7 >> 0x10) + uVar7 & 0xff)" (( "(") (binary_expression "(uVar7 >> 0x10) + uVar7 & 0xff" (binary_expression "(uVar7 >> 0x10) + uVar7" (parenthesized_expression "(uVar7 >> 0x10)" (( "(") (binary_expression "uVar7 >> 0x10" (identifier "uVar7") (>> ">>") (number_literal "0x10")) () ")")) (+ "+") (identifier "uVar7")) (& "&") (number_literal "0xff")) () ")")) (- "-") (parenthesized_expression "((uVar23 >> 0x10) + uVar23 & 0xff)" (( "(") (binary_expression "(uVar23 >> 0x10) + uVar23 & 0xff" (binary_expression "(uVar23 >> 0x10) + uVar23" (parenthesized_expression "(uVar23 >> 0x10)" (( "(") (binary_expression "uVar23 >> 0x10" (identifier "uVar23") (>> ">>") (number_literal "0x10")) () ")")) (+ "+") (identifier "uVar23")) (& "&") (number_literal "0xff")) () ")"))) () ")"))) (& "&") (number_literal "0x1f")) () ")")))) (; ";")) (expression_statement "bVar3 = uVar53 < uVar7;" (assignment_expression "bVar3 = uVar53 < uVar7" (identifier "bVar3") (= "=") (binary_expression "uVar53 < uVar7" (identifier "uVar53") (< "<") (identifier "uVar7"))) (; ";")) (if_statement "if (bVar3) {\n    *puVar8 = uVar7;\n    uVar7 = 1;\n  }" (if "if") (parenthesized_expression "(bVar3)" (( "(") (identifier "bVar3") () ")")) (compound_statement "{\n    *puVar8 = uVar7;\n    uVar7 = 1;\n  }" ({ "{") (expression_statement "*puVar8 = uVar7;" (assignment_expression "*puVar8 = uVar7" (pointer_expression "*puVar8" (* "*") (identifier "puVar8")) (= "=") (identifier "uVar7")) (; ";")) (expression_statement "uVar7 = 1;" (assignment_expression "uVar7 = 1" (identifier "uVar7") (= "=") (number_literal "1")) (; ";")) (} "}"))) (expression_statement "uVar11 = 0;" (assignment_expression "uVar11 = 0" (identifier "uVar11") (= "=") (number_literal "0")) (; ";")) (expression_statement "uVar23 = param_2;" (assignment_expression "uVar23 = param_2" (identifier "uVar23") (= "=") (identifier "param_2")) (; ";")) (expression_statement "uVar26 = param_3;" (assignment_expression "uVar26 = param_3" (identifier "uVar26") (= "=") (identifier "param_3")) (; ";")) (do_statement "do {\n    bVar4 = uVar23 % 3 < uVar26 % 3 + uVar11;\n    if (bVar4) {\n      uVar7 = uVar7 * 3;\n    }\n    uVar11 = (uint)bVar4;\n    bVar4 = 8 < uVar23;\n    uVar23 = uVar23 / 3;\n    uVar26 = uVar26 / 3;\n  } while (bVar4);" (do "do") (compound_statement "{\n    bVar4 = uVar23 % 3 < uVar26 % 3 + uVar11;\n    if (bVar4) {\n      uVar7 = uVar7 * 3;\n    }\n    uVar11 = (uint)bVar4;\n    bVar4 = 8 < uVar23;\n    uVar23 = uVar23 / 3;\n    uVar26 = uVar26 / 3;\n  }" ({ "{") (expression_statement "bVar4 = uVar23 % 3 < uVar26 % 3 + uVar11;" (assignment_expression "bVar4 = uVar23 % 3 < uVar26 % 3 + uVar11" (identifier "bVar4") (= "=") (binary_expression "uVar23 % 3 < uVar26 % 3 + uVar11" (binary_expression "uVar23 % 3" (identifier "uVar23") (% "%") (number_literal "3")) (< "<") (binary_expression "uVar26 % 3 + uVar11" (binary_expression "uVar26 % 3" (identifier "uVar26") (% "%") (number_literal "3")) (+ "+") (identifier "uVar11")))) (; ";")) (if_statement "if (bVar4) {\n      uVar7 = uVar7 * 3;\n    }" (if "if") (parenthesized_expression "(bVar4)" (( "(") (identifier "bVar4") () ")")) (compound_statement "{\n      uVar7 = uVar7 * 3;\n    }" ({ "{") (expression_statement "uVar7 = uVar7 * 3;" (assignment_expression "uVar7 = uVar7 * 3" (identifier "uVar7") (= "=") (binary_expression "uVar7 * 3" (identifier "uVar7") (* "*") (number_literal "3"))) (; ";")) (} "}"))) (expression_statement "uVar11 = (uint)bVar4;" (assignment_expression "uVar11 = (uint)bVar4" (identifier "uVar11") (= "=") (cast_expression "(uint)bVar4" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar4"))) (; ";")) (expression_statement "bVar4 = 8 < uVar23;" (assignment_expression "bVar4 = 8 < uVar23" (identifier "bVar4") (= "=") (binary_expression "8 < uVar23" (number_literal "8") (< "<") (identifier "uVar23"))) (; ";")) (expression_statement "uVar23 = uVar23 / 3;" (assignment_expression "uVar23 = uVar23 / 3" (identifier "uVar23") (= "=") (binary_expression "uVar23 / 3" (identifier "uVar23") (/ "/") (number_literal "3"))) (; ";")) (expression_statement "uVar26 = uVar26 / 3;" (assignment_expression "uVar26 = uVar26 / 3" (identifier "uVar26") (= "=") (binary_expression "uVar26 / 3" (identifier "uVar26") (/ "/") (number_literal "3"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(bVar4)" (( "(") (identifier "bVar4") () ")")) (; ";")) (expression_statement "uVar11 = param_2 - 1;" (assignment_expression "uVar11 = param_2 - 1" (identifier "uVar11") (= "=") (binary_expression "param_2 - 1" (identifier "param_2") (- "-") (number_literal "1"))) (; ";")) (if_statement "if (uVar11 < 0x10000) {\n    iVar6 = 0x18;\n    if (uVar11 < 0x100) {\n      iVar6 = 0x20;\n    }\n    iVar24 = 9;\n    if (uVar11 < 0x100) {\n      iVar24 = 1;\n    }\n  }\n  else {\n    iVar6 = 8;\n    if (uVar11 < 0x1000000) {\n      iVar6 = 0x10;\n    }\n    iVar24 = 0x19;\n    if (uVar11 < 0x1000000) {\n      iVar24 = 0x11;\n    }\n  }" (if "if") (parenthesized_expression "(uVar11 < 0x10000)" (( "(") (binary_expression "uVar11 < 0x10000" (identifier "uVar11") (< "<") (number_literal "0x10000")) () ")")) (compound_statement "{\n    iVar6 = 0x18;\n    if (uVar11 < 0x100) {\n      iVar6 = 0x20;\n    }\n    iVar24 = 9;\n    if (uVar11 < 0x100) {\n      iVar24 = 1;\n    }\n  }" ({ "{") (expression_statement "iVar6 = 0x18;" (assignment_expression "iVar6 = 0x18" (identifier "iVar6") (= "=") (number_literal "0x18")) (; ";")) (if_statement "if (uVar11 < 0x100) {\n      iVar6 = 0x20;\n    }" (if "if") (parenthesized_expression "(uVar11 < 0x100)" (( "(") (binary_expression "uVar11 < 0x100" (identifier "uVar11") (< "<") (number_literal "0x100")) () ")")) (compound_statement "{\n      iVar6 = 0x20;\n    }" ({ "{") (expression_statement "iVar6 = 0x20;" (assignment_expression "iVar6 = 0x20" (identifier "iVar6") (= "=") (number_literal "0x20")) (; ";")) (} "}"))) (expression_statement "iVar24 = 9;" (assignment_expression "iVar24 = 9" (identifier "iVar24") (= "=") (number_literal "9")) (; ";")) (if_statement "if (uVar11 < 0x100) {\n      iVar24 = 1;\n    }" (if "if") (parenthesized_expression "(uVar11 < 0x100)" (( "(") (binary_expression "uVar11 < 0x100" (identifier "uVar11") (< "<") (number_literal "0x100")) () ")")) (compound_statement "{\n      iVar24 = 1;\n    }" ({ "{") (expression_statement "iVar24 = 1;" (assignment_expression "iVar24 = 1" (identifier "iVar24") (= "=") (number_literal "1")) (; ";")) (} "}"))) (} "}")) (else_clause "else {\n    iVar6 = 8;\n    if (uVar11 < 0x1000000) {\n      iVar6 = 0x10;\n    }\n    iVar24 = 0x19;\n    if (uVar11 < 0x1000000) {\n      iVar24 = 0x11;\n    }\n  }" (else "else") (compound_statement "{\n    iVar6 = 8;\n    if (uVar11 < 0x1000000) {\n      iVar6 = 0x10;\n    }\n    iVar24 = 0x19;\n    if (uVar11 < 0x1000000) {\n      iVar24 = 0x11;\n    }\n  }" ({ "{") (expression_statement "iVar6 = 8;" (assignment_expression "iVar6 = 8" (identifier "iVar6") (= "=") (number_literal "8")) (; ";")) (if_statement "if (uVar11 < 0x1000000) {\n      iVar6 = 0x10;\n    }" (if "if") (parenthesized_expression "(uVar11 < 0x1000000)" (( "(") (binary_expression "uVar11 < 0x1000000" (identifier "uVar11") (< "<") (number_literal "0x1000000")) () ")")) (compound_statement "{\n      iVar6 = 0x10;\n    }" ({ "{") (expression_statement "iVar6 = 0x10;" (assignment_expression "iVar6 = 0x10" (identifier "iVar6") (= "=") (number_literal "0x10")) (; ";")) (} "}"))) (expression_statement "iVar24 = 0x19;" (assignment_expression "iVar24 = 0x19" (identifier "iVar24") (= "=") (number_literal "0x19")) (; ";")) (if_statement "if (uVar11 < 0x1000000) {\n      iVar24 = 0x11;\n    }" (if "if") (parenthesized_expression "(uVar11 < 0x1000000)" (( "(") (binary_expression "uVar11 < 0x1000000" (identifier "uVar11") (< "<") (number_literal "0x1000000")) () ")")) (compound_statement "{\n      iVar24 = 0x11;\n    }" ({ "{") (expression_statement "iVar24 = 0x11;" (assignment_expression "iVar24 = 0x11" (identifier "iVar24") (= "=") (number_literal "0x11")) (; ";")) (} "}"))) (} "}")))) (expression_statement "iVar29 = 0;" (assignment_expression "iVar29 = 0" (identifier "iVar29") (= "=") (number_literal "0")) (; ";")) (expression_statement "uVar28 = 1;" (assignment_expression "uVar28 = 1" (identifier "uVar28") (= "=") (number_literal "1")) (; ";")) (expression_statement "uVar42 = (((1 << ((int)(0x1f - (iVar6 - (uint)(byte)PTR___gmpn_clz_tab_0009d18c[uVar11 >> iVar24])\n                         ) >> 1 & 0x1fU)) +\n            (1 << ((int)(0x1e - (iVar6 - (uint)(byte)PTR___gmpn_clz_tab_0009d18c[uVar11 >> iVar24]))\n                   >> 1 & 0x1fU))) - 5U | 1) / 3;" (assignment_expression "uVar42 = (((1 << ((int)(0x1f - (iVar6 - (uint)(byte)PTR___gmpn_clz_tab_0009d18c[uVar11 >> iVar24])\n                         ) >> 1 & 0x1fU)) +\n            (1 << ((int)(0x1e - (iVar6 - (uint)(byte)PTR___gmpn_clz_tab_0009d18c[uVar11 >> iVar24]))\n                   >> 1 & 0x1fU))) - 5U | 1) / 3" (identifier "uVar42") (= "=") (binary_expression "(((1 << ((int)(0x1f - (iVar6 - (uint)(byte)PTR___gmpn_clz_tab_0009d18c[uVar11 >> iVar24])\n                         ) >> 1 & 0x1fU)) +\n            (1 << ((int)(0x1e - (iVar6 - (uint)(byte)PTR___gmpn_clz_tab_0009d18c[uVar11 >> iVar24]))\n                   >> 1 & 0x1fU))) - 5U | 1) / 3" (parenthesized_expression "(((1 << ((int)(0x1f - (iVar6 - (uint)(byte)PTR___gmpn_clz_tab_0009d18c[uVar11 >> iVar24])\n                         ) >> 1 & 0x1fU)) +\n            (1 << ((int)(0x1e - (iVar6 - (uint)(byte)PTR___gmpn_clz_tab_0009d18c[uVar11 >> iVar24]))\n                   >> 1 & 0x1fU))) - 5U | 1)" (( "(") (binary_expression "((1 << ((int)(0x1f - (iVar6 - (uint)(byte)PTR___gmpn_clz_tab_0009d18c[uVar11 >> iVar24])\n                         ) >> 1 & 0x1fU)) +\n            (1 << ((int)(0x1e - (iVar6 - (uint)(byte)PTR___gmpn_clz_tab_0009d18c[uVar11 >> iVar24]))\n                   >> 1 & 0x1fU))) - 5U | 1" (binary_expression "((1 << ((int)(0x1f - (iVar6 - (uint)(byte)PTR___gmpn_clz_tab_0009d18c[uVar11 >> iVar24])\n                         ) >> 1 & 0x1fU)) +\n            (1 << ((int)(0x1e - (iVar6 - (uint)(byte)PTR___gmpn_clz_tab_0009d18c[uVar11 >> iVar24]))\n                   >> 1 & 0x1fU))) - 5U" (parenthesized_expression "((1 << ((int)(0x1f - (iVar6 - (uint)(byte)PTR___gmpn_clz_tab_0009d18c[uVar11 >> iVar24])\n                         ) >> 1 & 0x1fU)) +\n            (1 << ((int)(0x1e - (iVar6 - (uint)(byte)PTR___gmpn_clz_tab_0009d18c[uVar11 >> iVar24]))\n                   >> 1 & 0x1fU)))" (( "(") (binary_expression "(1 << ((int)(0x1f - (iVar6 - (uint)(byte)PTR___gmpn_clz_tab_0009d18c[uVar11 >> iVar24])\n                         ) >> 1 & 0x1fU)) +\n            (1 << ((int)(0x1e - (iVar6 - (uint)(byte)PTR___gmpn_clz_tab_0009d18c[uVar11 >> iVar24]))\n                   >> 1 & 0x1fU))" (parenthesized_expression "(1 << ((int)(0x1f - (iVar6 - (uint)(byte)PTR___gmpn_clz_tab_0009d18c[uVar11 >> iVar24])\n                         ) >> 1 & 0x1fU))" (( "(") (binary_expression "1 << ((int)(0x1f - (iVar6 - (uint)(byte)PTR___gmpn_clz_tab_0009d18c[uVar11 >> iVar24])\n                         ) >> 1 & 0x1fU)" (number_literal "1") (<< "<<") (parenthesized_expression "((int)(0x1f - (iVar6 - (uint)(byte)PTR___gmpn_clz_tab_0009d18c[uVar11 >> iVar24])\n                         ) >> 1 & 0x1fU)" (( "(") (binary_expression "(int)(0x1f - (iVar6 - (uint)(byte)PTR___gmpn_clz_tab_0009d18c[uVar11 >> iVar24])\n                         ) >> 1 & 0x1fU" (binary_expression "(int)(0x1f - (iVar6 - (uint)(byte)PTR___gmpn_clz_tab_0009d18c[uVar11 >> iVar24])\n                         ) >> 1" (cast_expression "(int)(0x1f - (iVar6 - (uint)(byte)PTR___gmpn_clz_tab_0009d18c[uVar11 >> iVar24])\n                         )" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "(0x1f - (iVar6 - (uint)(byte)PTR___gmpn_clz_tab_0009d18c[uVar11 >> iVar24])\n                         )" (( "(") (binary_expression "0x1f - (iVar6 - (uint)(byte)PTR___gmpn_clz_tab_0009d18c[uVar11 >> iVar24])" (number_literal "0x1f") (- "-") (parenthesized_expression "(iVar6 - (uint)(byte)PTR___gmpn_clz_tab_0009d18c[uVar11 >> iVar24])" (( "(") (binary_expression "iVar6 - (uint)(byte)PTR___gmpn_clz_tab_0009d18c[uVar11 >> iVar24]" (identifier "iVar6") (- "-") (cast_expression "(uint)(byte)PTR___gmpn_clz_tab_0009d18c[uVar11 >> iVar24]" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (cast_expression "(byte)PTR___gmpn_clz_tab_0009d18c[uVar11 >> iVar24]" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (subscript_expression "PTR___gmpn_clz_tab_0009d18c[uVar11 >> iVar24]" (identifier "PTR___gmpn_clz_tab_0009d18c") ([ "[") (binary_expression "uVar11 >> iVar24" (identifier "uVar11") (>> ">>") (identifier "iVar24")) (] "]"))))) () ")"))) () ")"))) (>> ">>") (number_literal "1")) (& "&") (number_literal "0x1fU")) () ")"))) () ")")) (+ "+") (parenthesized_expression "(1 << ((int)(0x1e - (iVar6 - (uint)(byte)PTR___gmpn_clz_tab_0009d18c[uVar11 >> iVar24]))\n                   >> 1 & 0x1fU))" (( "(") (binary_expression "1 << ((int)(0x1e - (iVar6 - (uint)(byte)PTR___gmpn_clz_tab_0009d18c[uVar11 >> iVar24]))\n                   >> 1 & 0x1fU)" (number_literal "1") (<< "<<") (parenthesized_expression "((int)(0x1e - (iVar6 - (uint)(byte)PTR___gmpn_clz_tab_0009d18c[uVar11 >> iVar24]))\n                   >> 1 & 0x1fU)" (( "(") (binary_expression "(int)(0x1e - (iVar6 - (uint)(byte)PTR___gmpn_clz_tab_0009d18c[uVar11 >> iVar24]))\n                   >> 1 & 0x1fU" (binary_expression "(int)(0x1e - (iVar6 - (uint)(byte)PTR___gmpn_clz_tab_0009d18c[uVar11 >> iVar24]))\n                   >> 1" (cast_expression "(int)(0x1e - (iVar6 - (uint)(byte)PTR___gmpn_clz_tab_0009d18c[uVar11 >> iVar24]))" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "(0x1e - (iVar6 - (uint)(byte)PTR___gmpn_clz_tab_0009d18c[uVar11 >> iVar24]))" (( "(") (binary_expression "0x1e - (iVar6 - (uint)(byte)PTR___gmpn_clz_tab_0009d18c[uVar11 >> iVar24])" (number_literal "0x1e") (- "-") (parenthesized_expression "(iVar6 - (uint)(byte)PTR___gmpn_clz_tab_0009d18c[uVar11 >> iVar24])" (( "(") (binary_expression "iVar6 - (uint)(byte)PTR___gmpn_clz_tab_0009d18c[uVar11 >> iVar24]" (identifier "iVar6") (- "-") (cast_expression "(uint)(byte)PTR___gmpn_clz_tab_0009d18c[uVar11 >> iVar24]" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (cast_expression "(byte)PTR___gmpn_clz_tab_0009d18c[uVar11 >> iVar24]" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (subscript_expression "PTR___gmpn_clz_tab_0009d18c[uVar11 >> iVar24]" (identifier "PTR___gmpn_clz_tab_0009d18c") ([ "[") (binary_expression "uVar11 >> iVar24" (identifier "uVar11") (>> ">>") (identifier "iVar24")) (] "]"))))) () ")"))) () ")"))) (>> ">>") (number_literal "1")) (& "&") (number_literal "0x1fU")) () ")"))) () ")"))) () ")")) (- "-") (number_literal "5U")) (| "|") (number_literal "1")) () ")")) (/ "/") (number_literal "3"))) (; ";")) (expression_statement "uVar26 = uVar42 + 1;" (assignment_expression "uVar26 = uVar42 + 1" (identifier "uVar26") (= "=") (binary_expression "uVar42 + 1" (identifier "uVar42") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "uVar11 = (uint)bVar3;" (assignment_expression "uVar11 = (uint)bVar3" (identifier "uVar11") (= "=") (cast_expression "(uint)bVar3" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar3"))) (; ";")) (expression_statement "uVar23 = 0;" (assignment_expression "uVar23 = 0" (identifier "uVar23") (= "=") (number_literal "0")) (; ";")) (do_statement "do {\n    uVar35 = uVar23 + 1;\n    uVar21 = uVar11;\n    if ((uVar28 & *(uint *)(puVar13 + iVar29 * 4)) == 0) {\n      uVar12 = (uVar35 & 1) + 1 + uVar35 * 3;\n      if (uVar53 < uVar7) {\n        uVar21 = uVar11 + 1;\n        puVar8[uVar11] = uVar7;\n        uVar7 = 1;\n      }\n      uVar27 = 0;\n      uVar11 = param_3;\n      uVar25 = param_2;\n      do {\n        if (uVar12 == 0) {\n          trap(7);\n        }\n        if (uVar12 == 0) {\n          trap(7);\n        }\n        uVar54 = uVar25 / uVar12;\n        bVar3 = uVar25 % uVar12 < uVar11 % uVar12 + uVar27;\n        if (bVar3) {\n          uVar7 = uVar7 * uVar12;\n        }\n        uVar27 = (uint)bVar3;\n        uVar11 = uVar11 / uVar12;\n        uVar25 = uVar54;\n      } while (uVar12 <= uVar54);\n    }\n    uVar28 = uVar28 * 2 - ((int)uVar28 >> 0x1f);\n    bVar3 = uVar23 != uVar42;\n    iVar29 = iVar29 + (uVar28 & 1);\n    uVar11 = uVar21;\n    uVar23 = uVar35;\n  } while (bVar3);" (do "do") (compound_statement "{\n    uVar35 = uVar23 + 1;\n    uVar21 = uVar11;\n    if ((uVar28 & *(uint *)(puVar13 + iVar29 * 4)) == 0) {\n      uVar12 = (uVar35 & 1) + 1 + uVar35 * 3;\n      if (uVar53 < uVar7) {\n        uVar21 = uVar11 + 1;\n        puVar8[uVar11] = uVar7;\n        uVar7 = 1;\n      }\n      uVar27 = 0;\n      uVar11 = param_3;\n      uVar25 = param_2;\n      do {\n        if (uVar12 == 0) {\n          trap(7);\n        }\n        if (uVar12 == 0) {\n          trap(7);\n        }\n        uVar54 = uVar25 / uVar12;\n        bVar3 = uVar25 % uVar12 < uVar11 % uVar12 + uVar27;\n        if (bVar3) {\n          uVar7 = uVar7 * uVar12;\n        }\n        uVar27 = (uint)bVar3;\n        uVar11 = uVar11 / uVar12;\n        uVar25 = uVar54;\n      } while (uVar12 <= uVar54);\n    }\n    uVar28 = uVar28 * 2 - ((int)uVar28 >> 0x1f);\n    bVar3 = uVar23 != uVar42;\n    iVar29 = iVar29 + (uVar28 & 1);\n    uVar11 = uVar21;\n    uVar23 = uVar35;\n  }" ({ "{") (expression_statement "uVar35 = uVar23 + 1;" (assignment_expression "uVar35 = uVar23 + 1" (identifier "uVar35") (= "=") (binary_expression "uVar23 + 1" (identifier "uVar23") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "uVar21 = uVar11;" (assignment_expression "uVar21 = uVar11" (identifier "uVar21") (= "=") (identifier "uVar11")) (; ";")) (if_statement "if ((uVar28 & *(uint *)(puVar13 + iVar29 * 4)) == 0) {\n      uVar12 = (uVar35 & 1) + 1 + uVar35 * 3;\n      if (uVar53 < uVar7) {\n        uVar21 = uVar11 + 1;\n        puVar8[uVar11] = uVar7;\n        uVar7 = 1;\n      }\n      uVar27 = 0;\n      uVar11 = param_3;\n      uVar25 = param_2;\n      do {\n        if (uVar12 == 0) {\n          trap(7);\n        }\n        if (uVar12 == 0) {\n          trap(7);\n        }\n        uVar54 = uVar25 / uVar12;\n        bVar3 = uVar25 % uVar12 < uVar11 % uVar12 + uVar27;\n        if (bVar3) {\n          uVar7 = uVar7 * uVar12;\n        }\n        uVar27 = (uint)bVar3;\n        uVar11 = uVar11 / uVar12;\n        uVar25 = uVar54;\n      } while (uVar12 <= uVar54);\n    }" (if "if") (parenthesized_expression "((uVar28 & *(uint *)(puVar13 + iVar29 * 4)) == 0)" (( "(") (binary_expression "(uVar28 & *(uint *)(puVar13 + iVar29 * 4)) == 0" (parenthesized_expression "(uVar28 & *(uint *)(puVar13 + iVar29 * 4))" (( "(") (binary_expression "uVar28 & *(uint *)(puVar13 + iVar29 * 4)" (identifier "uVar28") (& "&") (pointer_expression "*(uint *)(puVar13 + iVar29 * 4)" (* "*") (cast_expression "(uint *)(puVar13 + iVar29 * 4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar13 + iVar29 * 4)" (( "(") (binary_expression "puVar13 + iVar29 * 4" (identifier "puVar13") (+ "+") (binary_expression "iVar29 * 4" (identifier "iVar29") (* "*") (number_literal "4"))) () ")"))))) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      uVar12 = (uVar35 & 1) + 1 + uVar35 * 3;\n      if (uVar53 < uVar7) {\n        uVar21 = uVar11 + 1;\n        puVar8[uVar11] = uVar7;\n        uVar7 = 1;\n      }\n      uVar27 = 0;\n      uVar11 = param_3;\n      uVar25 = param_2;\n      do {\n        if (uVar12 == 0) {\n          trap(7);\n        }\n        if (uVar12 == 0) {\n          trap(7);\n        }\n        uVar54 = uVar25 / uVar12;\n        bVar3 = uVar25 % uVar12 < uVar11 % uVar12 + uVar27;\n        if (bVar3) {\n          uVar7 = uVar7 * uVar12;\n        }\n        uVar27 = (uint)bVar3;\n        uVar11 = uVar11 / uVar12;\n        uVar25 = uVar54;\n      } while (uVar12 <= uVar54);\n    }" ({ "{") (expression_statement "uVar12 = (uVar35 & 1) + 1 + uVar35 * 3;" (assignment_expression "uVar12 = (uVar35 & 1) + 1 + uVar35 * 3" (identifier "uVar12") (= "=") (binary_expression "(uVar35 & 1) + 1 + uVar35 * 3" (binary_expression "(uVar35 & 1) + 1" (parenthesized_expression "(uVar35 & 1)" (( "(") (binary_expression "uVar35 & 1" (identifier "uVar35") (& "&") (number_literal "1")) () ")")) (+ "+") (number_literal "1")) (+ "+") (binary_expression "uVar35 * 3" (identifier "uVar35") (* "*") (number_literal "3")))) (; ";")) (if_statement "if (uVar53 < uVar7) {\n        uVar21 = uVar11 + 1;\n        puVar8[uVar11] = uVar7;\n        uVar7 = 1;\n      }" (if "if") (parenthesized_expression "(uVar53 < uVar7)" (( "(") (binary_expression "uVar53 < uVar7" (identifier "uVar53") (< "<") (identifier "uVar7")) () ")")) (compound_statement "{\n        uVar21 = uVar11 + 1;\n        puVar8[uVar11] = uVar7;\n        uVar7 = 1;\n      }" ({ "{") (expression_statement "uVar21 = uVar11 + 1;" (assignment_expression "uVar21 = uVar11 + 1" (identifier "uVar21") (= "=") (binary_expression "uVar11 + 1" (identifier "uVar11") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "puVar8[uVar11] = uVar7;" (assignment_expression "puVar8[uVar11] = uVar7" (subscript_expression "puVar8[uVar11]" (identifier "puVar8") ([ "[") (identifier "uVar11") (] "]")) (= "=") (identifier "uVar7")) (; ";")) (expression_statement "uVar7 = 1;" (assignment_expression "uVar7 = 1" (identifier "uVar7") (= "=") (number_literal "1")) (; ";")) (} "}"))) (expression_statement "uVar27 = 0;" (assignment_expression "uVar27 = 0" (identifier "uVar27") (= "=") (number_literal "0")) (; ";")) (expression_statement "uVar11 = param_3;" (assignment_expression "uVar11 = param_3" (identifier "uVar11") (= "=") (identifier "param_3")) (; ";")) (expression_statement "uVar25 = param_2;" (assignment_expression "uVar25 = param_2" (identifier "uVar25") (= "=") (identifier "param_2")) (; ";")) (do_statement "do {\n        if (uVar12 == 0) {\n          trap(7);\n        }\n        if (uVar12 == 0) {\n          trap(7);\n        }\n        uVar54 = uVar25 / uVar12;\n        bVar3 = uVar25 % uVar12 < uVar11 % uVar12 + uVar27;\n        if (bVar3) {\n          uVar7 = uVar7 * uVar12;\n        }\n        uVar27 = (uint)bVar3;\n        uVar11 = uVar11 / uVar12;\n        uVar25 = uVar54;\n      } while (uVar12 <= uVar54);" (do "do") (compound_statement "{\n        if (uVar12 == 0) {\n          trap(7);\n        }\n        if (uVar12 == 0) {\n          trap(7);\n        }\n        uVar54 = uVar25 / uVar12;\n        bVar3 = uVar25 % uVar12 < uVar11 % uVar12 + uVar27;\n        if (bVar3) {\n          uVar7 = uVar7 * uVar12;\n        }\n        uVar27 = (uint)bVar3;\n        uVar11 = uVar11 / uVar12;\n        uVar25 = uVar54;\n      }" ({ "{") (if_statement "if (uVar12 == 0) {\n          trap(7);\n        }" (if "if") (parenthesized_expression "(uVar12 == 0)" (( "(") (binary_expression "uVar12 == 0" (identifier "uVar12") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n          trap(7);\n        }" ({ "{") (expression_statement "trap(7);" (call_expression "trap(7)" (identifier "trap") (argument_list "(7)" (( "(") (number_literal "7") () ")"))) (; ";")) (} "}"))) (if_statement "if (uVar12 == 0) {\n          trap(7);\n        }" (if "if") (parenthesized_expression "(uVar12 == 0)" (( "(") (binary_expression "uVar12 == 0" (identifier "uVar12") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n          trap(7);\n        }" ({ "{") (expression_statement "trap(7);" (call_expression "trap(7)" (identifier "trap") (argument_list "(7)" (( "(") (number_literal "7") () ")"))) (; ";")) (} "}"))) (expression_statement "uVar54 = uVar25 / uVar12;" (assignment_expression "uVar54 = uVar25 / uVar12" (identifier "uVar54") (= "=") (binary_expression "uVar25 / uVar12" (identifier "uVar25") (/ "/") (identifier "uVar12"))) (; ";")) (expression_statement "bVar3 = uVar25 % uVar12 < uVar11 % uVar12 + uVar27;" (assignment_expression "bVar3 = uVar25 % uVar12 < uVar11 % uVar12 + uVar27" (identifier "bVar3") (= "=") (binary_expression "uVar25 % uVar12 < uVar11 % uVar12 + uVar27" (binary_expression "uVar25 % uVar12" (identifier "uVar25") (% "%") (identifier "uVar12")) (< "<") (binary_expression "uVar11 % uVar12 + uVar27" (binary_expression "uVar11 % uVar12" (identifier "uVar11") (% "%") (identifier "uVar12")) (+ "+") (identifier "uVar27")))) (; ";")) (if_statement "if (bVar3) {\n          uVar7 = uVar7 * uVar12;\n        }" (if "if") (parenthesized_expression "(bVar3)" (( "(") (identifier "bVar3") () ")")) (compound_statement "{\n          uVar7 = uVar7 * uVar12;\n        }" ({ "{") (expression_statement "uVar7 = uVar7 * uVar12;" (assignment_expression "uVar7 = uVar7 * uVar12" (identifier "uVar7") (= "=") (binary_expression "uVar7 * uVar12" (identifier "uVar7") (* "*") (identifier "uVar12"))) (; ";")) (} "}"))) (expression_statement "uVar27 = (uint)bVar3;" (assignment_expression "uVar27 = (uint)bVar3" (identifier "uVar27") (= "=") (cast_expression "(uint)bVar3" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar3"))) (; ";")) (expression_statement "uVar11 = uVar11 / uVar12;" (assignment_expression "uVar11 = uVar11 / uVar12" (identifier "uVar11") (= "=") (binary_expression "uVar11 / uVar12" (identifier "uVar11") (/ "/") (identifier "uVar12"))) (; ";")) (expression_statement "uVar25 = uVar54;" (assignment_expression "uVar25 = uVar54" (identifier "uVar25") (= "=") (identifier "uVar54")) (; ";")) (} "}")) (while "while") (parenthesized_expression "(uVar12 <= uVar54)" (( "(") (binary_expression "uVar12 <= uVar54" (identifier "uVar12") (<= "<=") (identifier "uVar54")) () ")")) (; ";")) (} "}"))) (expression_statement "uVar28 = uVar28 * 2 - ((int)uVar28 >> 0x1f);" (assignment_expression "uVar28 = uVar28 * 2 - ((int)uVar28 >> 0x1f)" (identifier "uVar28") (= "=") (binary_expression "uVar28 * 2 - ((int)uVar28 >> 0x1f)" (binary_expression "uVar28 * 2" (identifier "uVar28") (* "*") (number_literal "2")) (- "-") (parenthesized_expression "((int)uVar28 >> 0x1f)" (( "(") (binary_expression "(int)uVar28 >> 0x1f" (cast_expression "(int)uVar28" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar28")) (>> ">>") (number_literal "0x1f")) () ")")))) (; ";")) (expression_statement "bVar3 = uVar23 != uVar42;" (assignment_expression "bVar3 = uVar23 != uVar42" (identifier "bVar3") (= "=") (binary_expression "uVar23 != uVar42" (identifier "uVar23") (!= "!=") (identifier "uVar42"))) (; ";")) (expression_statement "iVar29 = iVar29 + (uVar28 & 1);" (assignment_expression "iVar29 = iVar29 + (uVar28 & 1)" (identifier "iVar29") (= "=") (binary_expression "iVar29 + (uVar28 & 1)" (identifier "iVar29") (+ "+") (parenthesized_expression "(uVar28 & 1)" (( "(") (binary_expression "uVar28 & 1" (identifier "uVar28") (& "&") (number_literal "1")) () ")")))) (; ";")) (expression_statement "uVar11 = uVar21;" (assignment_expression "uVar11 = uVar21" (identifier "uVar11") (= "=") (identifier "uVar21")) (; ";")) (expression_statement "uVar23 = uVar35;" (assignment_expression "uVar23 = uVar35" (identifier "uVar23") (= "=") (identifier "uVar35")) (; ";")) (} "}")) (while "while") (parenthesized_expression "(bVar3)" (( "(") (identifier "bVar3") () ")")) (; ";")) (expression_statement "uVar23 = uVar26 >> 5;" (assignment_expression "uVar23 = uVar26 >> 5" (identifier "uVar23") (= "=") (binary_expression "uVar26 >> 5" (identifier "uVar26") (>> ">>") (number_literal "5"))) (; ";")) (expression_statement "uVar11 = 1 << (uVar26 & 0x1f);" (assignment_expression "uVar11 = 1 << (uVar26 & 0x1f)" (identifier "uVar11") (= "=") (binary_expression "1 << (uVar26 & 0x1f)" (number_literal "1") (<< "<<") (parenthesized_expression "(uVar26 & 0x1f)" (( "(") (binary_expression "uVar26 & 0x1f" (identifier "uVar26") (& "&") (number_literal "0x1f")) () ")")))) (; ";")) (expression_statement "uVar28 = (uVar40 - 5 | 1) / 3;" (assignment_expression "uVar28 = (uVar40 - 5 | 1) / 3" (identifier "uVar28") (= "=") (binary_expression "(uVar40 - 5 | 1) / 3" (parenthesized_expression "(uVar40 - 5 | 1)" (( "(") (binary_expression "uVar40 - 5 | 1" (binary_expression "uVar40 - 5" (identifier "uVar40") (- "-") (number_literal "5")) (| "|") (number_literal "1")) () ")")) (/ "/") (number_literal "3"))) (; ";")) (do_statement "do {\n    while( true ) {\n      uVar26 = uVar26 + 1;\n      uVar42 = uVar21;\n      if ((uVar11 & *(uint *)(puVar13 + uVar23 * 4)) == 0) break;\nLAB_00021e80:\n      uVar11 = uVar11 * 2 - ((int)uVar11 >> 0x1f);\n      uVar23 = uVar23 + (uVar11 & 1);\n      uVar21 = uVar42;\n      if (uVar28 < uVar26) goto LAB_00021f04;\n    }\n    uVar12 = (uVar26 & 1) + 1 + uVar26 * 3;\n    if (uVar12 == 0) {\n      trap(7);\n    }\n    if (uVar12 == 0) {\n      trap(7);\n    }\n    if (param_3 % uVar12 <= param_2 % uVar12) goto LAB_00021e80;\n    if (uVar53 << 1 < uVar7) {\n      uVar42 = uVar21 + 1;\n      puVar8[uVar21] = uVar7;\n      uVar7 = uVar12;\n      goto LAB_00021e80;\n    }\n    uVar11 = uVar11 * 2 - ((int)uVar11 >> 0x1f);\n    uVar7 = uVar7 * uVar12;\n    uVar23 = uVar23 + (uVar11 & 1);\n  } while (uVar26 <= uVar28);" (do "do") (compound_statement "{\n    while( true ) {\n      uVar26 = uVar26 + 1;\n      uVar42 = uVar21;\n      if ((uVar11 & *(uint *)(puVar13 + uVar23 * 4)) == 0) break;\nLAB_00021e80:\n      uVar11 = uVar11 * 2 - ((int)uVar11 >> 0x1f);\n      uVar23 = uVar23 + (uVar11 & 1);\n      uVar21 = uVar42;\n      if (uVar28 < uVar26) goto LAB_00021f04;\n    }\n    uVar12 = (uVar26 & 1) + 1 + uVar26 * 3;\n    if (uVar12 == 0) {\n      trap(7);\n    }\n    if (uVar12 == 0) {\n      trap(7);\n    }\n    if (param_3 % uVar12 <= param_2 % uVar12) goto LAB_00021e80;\n    if (uVar53 << 1 < uVar7) {\n      uVar42 = uVar21 + 1;\n      puVar8[uVar21] = uVar7;\n      uVar7 = uVar12;\n      goto LAB_00021e80;\n    }\n    uVar11 = uVar11 * 2 - ((int)uVar11 >> 0x1f);\n    uVar7 = uVar7 * uVar12;\n    uVar23 = uVar23 + (uVar11 & 1);\n  }" ({ "{") (while_statement "while( true ) {\n      uVar26 = uVar26 + 1;\n      uVar42 = uVar21;\n      if ((uVar11 & *(uint *)(puVar13 + uVar23 * 4)) == 0) break;\nLAB_00021e80:\n      uVar11 = uVar11 * 2 - ((int)uVar11 >> 0x1f);\n      uVar23 = uVar23 + (uVar11 & 1);\n      uVar21 = uVar42;\n      if (uVar28 < uVar26) goto LAB_00021f04;\n    }" (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (compound_statement "{\n      uVar26 = uVar26 + 1;\n      uVar42 = uVar21;\n      if ((uVar11 & *(uint *)(puVar13 + uVar23 * 4)) == 0) break;\nLAB_00021e80:\n      uVar11 = uVar11 * 2 - ((int)uVar11 >> 0x1f);\n      uVar23 = uVar23 + (uVar11 & 1);\n      uVar21 = uVar42;\n      if (uVar28 < uVar26) goto LAB_00021f04;\n    }" ({ "{") (expression_statement "uVar26 = uVar26 + 1;" (assignment_expression "uVar26 = uVar26 + 1" (identifier "uVar26") (= "=") (binary_expression "uVar26 + 1" (identifier "uVar26") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "uVar42 = uVar21;" (assignment_expression "uVar42 = uVar21" (identifier "uVar42") (= "=") (identifier "uVar21")) (; ";")) (if_statement "if ((uVar11 & *(uint *)(puVar13 + uVar23 * 4)) == 0) break;" (if "if") (parenthesized_expression "((uVar11 & *(uint *)(puVar13 + uVar23 * 4)) == 0)" (( "(") (binary_expression "(uVar11 & *(uint *)(puVar13 + uVar23 * 4)) == 0" (parenthesized_expression "(uVar11 & *(uint *)(puVar13 + uVar23 * 4))" (( "(") (binary_expression "uVar11 & *(uint *)(puVar13 + uVar23 * 4)" (identifier "uVar11") (& "&") (pointer_expression "*(uint *)(puVar13 + uVar23 * 4)" (* "*") (cast_expression "(uint *)(puVar13 + uVar23 * 4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar13 + uVar23 * 4)" (( "(") (binary_expression "puVar13 + uVar23 * 4" (identifier "puVar13") (+ "+") (binary_expression "uVar23 * 4" (identifier "uVar23") (* "*") (number_literal "4"))) () ")"))))) () ")")) (== "==") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (labeled_statement "LAB_00021e80:\n      uVar11 = uVar11 * 2 - ((int)uVar11 >> 0x1f);" (statement_identifier "LAB_00021e80") (: ":") (expression_statement "uVar11 = uVar11 * 2 - ((int)uVar11 >> 0x1f);" (assignment_expression "uVar11 = uVar11 * 2 - ((int)uVar11 >> 0x1f)" (identifier "uVar11") (= "=") (binary_expression "uVar11 * 2 - ((int)uVar11 >> 0x1f)" (binary_expression "uVar11 * 2" (identifier "uVar11") (* "*") (number_literal "2")) (- "-") (parenthesized_expression "((int)uVar11 >> 0x1f)" (( "(") (binary_expression "(int)uVar11 >> 0x1f" (cast_expression "(int)uVar11" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar11")) (>> ">>") (number_literal "0x1f")) () ")")))) (; ";"))) (expression_statement "uVar23 = uVar23 + (uVar11 & 1);" (assignment_expression "uVar23 = uVar23 + (uVar11 & 1)" (identifier "uVar23") (= "=") (binary_expression "uVar23 + (uVar11 & 1)" (identifier "uVar23") (+ "+") (parenthesized_expression "(uVar11 & 1)" (( "(") (binary_expression "uVar11 & 1" (identifier "uVar11") (& "&") (number_literal "1")) () ")")))) (; ";")) (expression_statement "uVar21 = uVar42;" (assignment_expression "uVar21 = uVar42" (identifier "uVar21") (= "=") (identifier "uVar42")) (; ";")) (if_statement "if (uVar28 < uVar26) goto LAB_00021f04;" (if "if") (parenthesized_expression "(uVar28 < uVar26)" (( "(") (binary_expression "uVar28 < uVar26" (identifier "uVar28") (< "<") (identifier "uVar26")) () ")")) (goto_statement "goto LAB_00021f04;" (goto "goto") (statement_identifier "LAB_00021f04") (; ";"))) (} "}"))) (expression_statement "uVar12 = (uVar26 & 1) + 1 + uVar26 * 3;" (assignment_expression "uVar12 = (uVar26 & 1) + 1 + uVar26 * 3" (identifier "uVar12") (= "=") (binary_expression "(uVar26 & 1) + 1 + uVar26 * 3" (binary_expression "(uVar26 & 1) + 1" (parenthesized_expression "(uVar26 & 1)" (( "(") (binary_expression "uVar26 & 1" (identifier "uVar26") (& "&") (number_literal "1")) () ")")) (+ "+") (number_literal "1")) (+ "+") (binary_expression "uVar26 * 3" (identifier "uVar26") (* "*") (number_literal "3")))) (; ";")) (if_statement "if (uVar12 == 0) {\n      trap(7);\n    }" (if "if") (parenthesized_expression "(uVar12 == 0)" (( "(") (binary_expression "uVar12 == 0" (identifier "uVar12") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      trap(7);\n    }" ({ "{") (expression_statement "trap(7);" (call_expression "trap(7)" (identifier "trap") (argument_list "(7)" (( "(") (number_literal "7") () ")"))) (; ";")) (} "}"))) (if_statement "if (uVar12 == 0) {\n      trap(7);\n    }" (if "if") (parenthesized_expression "(uVar12 == 0)" (( "(") (binary_expression "uVar12 == 0" (identifier "uVar12") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      trap(7);\n    }" ({ "{") (expression_statement "trap(7);" (call_expression "trap(7)" (identifier "trap") (argument_list "(7)" (( "(") (number_literal "7") () ")"))) (; ";")) (} "}"))) (if_statement "if (param_3 % uVar12 <= param_2 % uVar12) goto LAB_00021e80;" (if "if") (parenthesized_expression "(param_3 % uVar12 <= param_2 % uVar12)" (( "(") (binary_expression "param_3 % uVar12 <= param_2 % uVar12" (binary_expression "param_3 % uVar12" (identifier "param_3") (% "%") (identifier "uVar12")) (<= "<=") (binary_expression "param_2 % uVar12" (identifier "param_2") (% "%") (identifier "uVar12"))) () ")")) (goto_statement "goto LAB_00021e80;" (goto "goto") (statement_identifier "LAB_00021e80") (; ";"))) (if_statement "if (uVar53 << 1 < uVar7) {\n      uVar42 = uVar21 + 1;\n      puVar8[uVar21] = uVar7;\n      uVar7 = uVar12;\n      goto LAB_00021e80;\n    }" (if "if") (parenthesized_expression "(uVar53 << 1 < uVar7)" (( "(") (binary_expression "uVar53 << 1 < uVar7" (binary_expression "uVar53 << 1" (identifier "uVar53") (<< "<<") (number_literal "1")) (< "<") (identifier "uVar7")) () ")")) (compound_statement "{\n      uVar42 = uVar21 + 1;\n      puVar8[uVar21] = uVar7;\n      uVar7 = uVar12;\n      goto LAB_00021e80;\n    }" ({ "{") (expression_statement "uVar42 = uVar21 + 1;" (assignment_expression "uVar42 = uVar21 + 1" (identifier "uVar42") (= "=") (binary_expression "uVar21 + 1" (identifier "uVar21") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "puVar8[uVar21] = uVar7;" (assignment_expression "puVar8[uVar21] = uVar7" (subscript_expression "puVar8[uVar21]" (identifier "puVar8") ([ "[") (identifier "uVar21") (] "]")) (= "=") (identifier "uVar7")) (; ";")) (expression_statement "uVar7 = uVar12;" (assignment_expression "uVar7 = uVar12" (identifier "uVar7") (= "=") (identifier "uVar12")) (; ";")) (goto_statement "goto LAB_00021e80;" (goto "goto") (statement_identifier "LAB_00021e80") (; ";")) (} "}"))) (expression_statement "uVar11 = uVar11 * 2 - ((int)uVar11 >> 0x1f);" (assignment_expression "uVar11 = uVar11 * 2 - ((int)uVar11 >> 0x1f)" (identifier "uVar11") (= "=") (binary_expression "uVar11 * 2 - ((int)uVar11 >> 0x1f)" (binary_expression "uVar11 * 2" (identifier "uVar11") (* "*") (number_literal "2")) (- "-") (parenthesized_expression "((int)uVar11 >> 0x1f)" (( "(") (binary_expression "(int)uVar11 >> 0x1f" (cast_expression "(int)uVar11" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar11")) (>> ">>") (number_literal "0x1f")) () ")")))) (; ";")) (expression_statement "uVar7 = uVar7 * uVar12;" (assignment_expression "uVar7 = uVar7 * uVar12" (identifier "uVar7") (= "=") (binary_expression "uVar7 * uVar12" (identifier "uVar7") (* "*") (identifier "uVar12"))) (; ";")) (expression_statement "uVar23 = uVar23 + (uVar11 & 1);" (assignment_expression "uVar23 = uVar23 + (uVar11 & 1)" (identifier "uVar23") (= "=") (binary_expression "uVar23 + (uVar11 & 1)" (identifier "uVar23") (+ "+") (parenthesized_expression "(uVar11 & 1)" (( "(") (binary_expression "uVar11 & 1" (identifier "uVar11") (& "&") (number_literal "1")) () ")")))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(uVar26 <= uVar28)" (( "(") (binary_expression "uVar26 <= uVar28" (identifier "uVar26") (<= "<=") (identifier "uVar28")) () ")")) (; ";")) (labeled_statement "LAB_00021f04:\n  uVar18 = (uVar18 - 5 | 1) / 3 + 1;" (statement_identifier "LAB_00021f04") (: ":") (expression_statement "uVar18 = (uVar18 - 5 | 1) / 3 + 1;" (assignment_expression "uVar18 = (uVar18 - 5 | 1) / 3 + 1" (identifier "uVar18") (= "=") (binary_expression "(uVar18 - 5 | 1) / 3 + 1" (binary_expression "(uVar18 - 5 | 1) / 3" (parenthesized_expression "(uVar18 - 5 | 1)" (( "(") (binary_expression "uVar18 - 5 | 1" (binary_expression "uVar18 - 5" (identifier "uVar18") (- "-") (number_literal "5")) (| "|") (number_literal "1")) () ")")) (/ "/") (number_literal "3")) (+ "+") (number_literal "1"))) (; ";"))) (expression_statement "uVar23 = uVar18 >> 5;" (assignment_expression "uVar23 = uVar18 >> 5" (identifier "uVar23") (= "=") (binary_expression "uVar18 >> 5" (identifier "uVar18") (>> ">>") (number_literal "5"))) (; ";")) (expression_statement "uVar37 = uVar37 / 3;" (assignment_expression "uVar37 = uVar37 / 3" (identifier "uVar37") (= "=") (binary_expression "uVar37 / 3" (identifier "uVar37") (/ "/") (number_literal "3"))) (; ";")) (expression_statement "uVar11 = 1 << (uVar18 & 0x1f);" (assignment_expression "uVar11 = 1 << (uVar18 & 0x1f)" (identifier "uVar11") (= "=") (binary_expression "1 << (uVar18 & 0x1f)" (number_literal "1") (<< "<<") (parenthesized_expression "(uVar18 & 0x1f)" (( "(") (binary_expression "uVar18 & 0x1f" (identifier "uVar18") (& "&") (number_literal "0x1f")) () ")")))) (; ";")) (do_statement "do {\n    while( true ) {\n      uVar18 = uVar18 + 1;\n      uVar26 = uVar42;\n      if ((uVar11 & *(uint *)(puVar13 + uVar23 * 4)) == 0) break;\nLAB_00021f58:\n      uVar11 = uVar11 * 2 - ((int)uVar11 >> 0x1f);\n      uVar23 = uVar23 + (uVar11 & 1);\n      uVar42 = uVar26;\n      if (uVar37 < uVar18) goto LAB_00021fb8;\n    }\n    uVar28 = (uVar18 & 1) + 1 + uVar18 * 3;\n    if ((uVar53 & 0x7fffffff) < uVar7) {\n      uVar26 = uVar42 + 1;\n      puVar8[uVar42] = uVar7;\n      uVar7 = uVar28;\n      goto LAB_00021f58;\n    }\n    uVar11 = uVar11 * 2 - ((int)uVar11 >> 0x1f);\n    uVar7 = uVar7 * uVar28;\n    uVar23 = uVar23 + (uVar11 & 1);\n  } while (uVar18 <= uVar37);" (do "do") (compound_statement "{\n    while( true ) {\n      uVar18 = uVar18 + 1;\n      uVar26 = uVar42;\n      if ((uVar11 & *(uint *)(puVar13 + uVar23 * 4)) == 0) break;\nLAB_00021f58:\n      uVar11 = uVar11 * 2 - ((int)uVar11 >> 0x1f);\n      uVar23 = uVar23 + (uVar11 & 1);\n      uVar42 = uVar26;\n      if (uVar37 < uVar18) goto LAB_00021fb8;\n    }\n    uVar28 = (uVar18 & 1) + 1 + uVar18 * 3;\n    if ((uVar53 & 0x7fffffff) < uVar7) {\n      uVar26 = uVar42 + 1;\n      puVar8[uVar42] = uVar7;\n      uVar7 = uVar28;\n      goto LAB_00021f58;\n    }\n    uVar11 = uVar11 * 2 - ((int)uVar11 >> 0x1f);\n    uVar7 = uVar7 * uVar28;\n    uVar23 = uVar23 + (uVar11 & 1);\n  }" ({ "{") (while_statement "while( true ) {\n      uVar18 = uVar18 + 1;\n      uVar26 = uVar42;\n      if ((uVar11 & *(uint *)(puVar13 + uVar23 * 4)) == 0) break;\nLAB_00021f58:\n      uVar11 = uVar11 * 2 - ((int)uVar11 >> 0x1f);\n      uVar23 = uVar23 + (uVar11 & 1);\n      uVar42 = uVar26;\n      if (uVar37 < uVar18) goto LAB_00021fb8;\n    }" (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (compound_statement "{\n      uVar18 = uVar18 + 1;\n      uVar26 = uVar42;\n      if ((uVar11 & *(uint *)(puVar13 + uVar23 * 4)) == 0) break;\nLAB_00021f58:\n      uVar11 = uVar11 * 2 - ((int)uVar11 >> 0x1f);\n      uVar23 = uVar23 + (uVar11 & 1);\n      uVar42 = uVar26;\n      if (uVar37 < uVar18) goto LAB_00021fb8;\n    }" ({ "{") (expression_statement "uVar18 = uVar18 + 1;" (assignment_expression "uVar18 = uVar18 + 1" (identifier "uVar18") (= "=") (binary_expression "uVar18 + 1" (identifier "uVar18") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "uVar26 = uVar42;" (assignment_expression "uVar26 = uVar42" (identifier "uVar26") (= "=") (identifier "uVar42")) (; ";")) (if_statement "if ((uVar11 & *(uint *)(puVar13 + uVar23 * 4)) == 0) break;" (if "if") (parenthesized_expression "((uVar11 & *(uint *)(puVar13 + uVar23 * 4)) == 0)" (( "(") (binary_expression "(uVar11 & *(uint *)(puVar13 + uVar23 * 4)) == 0" (parenthesized_expression "(uVar11 & *(uint *)(puVar13 + uVar23 * 4))" (( "(") (binary_expression "uVar11 & *(uint *)(puVar13 + uVar23 * 4)" (identifier "uVar11") (& "&") (pointer_expression "*(uint *)(puVar13 + uVar23 * 4)" (* "*") (cast_expression "(uint *)(puVar13 + uVar23 * 4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar13 + uVar23 * 4)" (( "(") (binary_expression "puVar13 + uVar23 * 4" (identifier "puVar13") (+ "+") (binary_expression "uVar23 * 4" (identifier "uVar23") (* "*") (number_literal "4"))) () ")"))))) () ")")) (== "==") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (labeled_statement "LAB_00021f58:\n      uVar11 = uVar11 * 2 - ((int)uVar11 >> 0x1f);" (statement_identifier "LAB_00021f58") (: ":") (expression_statement "uVar11 = uVar11 * 2 - ((int)uVar11 >> 0x1f);" (assignment_expression "uVar11 = uVar11 * 2 - ((int)uVar11 >> 0x1f)" (identifier "uVar11") (= "=") (binary_expression "uVar11 * 2 - ((int)uVar11 >> 0x1f)" (binary_expression "uVar11 * 2" (identifier "uVar11") (* "*") (number_literal "2")) (- "-") (parenthesized_expression "((int)uVar11 >> 0x1f)" (( "(") (binary_expression "(int)uVar11 >> 0x1f" (cast_expression "(int)uVar11" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar11")) (>> ">>") (number_literal "0x1f")) () ")")))) (; ";"))) (expression_statement "uVar23 = uVar23 + (uVar11 & 1);" (assignment_expression "uVar23 = uVar23 + (uVar11 & 1)" (identifier "uVar23") (= "=") (binary_expression "uVar23 + (uVar11 & 1)" (identifier "uVar23") (+ "+") (parenthesized_expression "(uVar11 & 1)" (( "(") (binary_expression "uVar11 & 1" (identifier "uVar11") (& "&") (number_literal "1")) () ")")))) (; ";")) (expression_statement "uVar42 = uVar26;" (assignment_expression "uVar42 = uVar26" (identifier "uVar42") (= "=") (identifier "uVar26")) (; ";")) (if_statement "if (uVar37 < uVar18) goto LAB_00021fb8;" (if "if") (parenthesized_expression "(uVar37 < uVar18)" (( "(") (binary_expression "uVar37 < uVar18" (identifier "uVar37") (< "<") (identifier "uVar18")) () ")")) (goto_statement "goto LAB_00021fb8;" (goto "goto") (statement_identifier "LAB_00021fb8") (; ";"))) (} "}"))) (expression_statement "uVar28 = (uVar18 & 1) + 1 + uVar18 * 3;" (assignment_expression "uVar28 = (uVar18 & 1) + 1 + uVar18 * 3" (identifier "uVar28") (= "=") (binary_expression "(uVar18 & 1) + 1 + uVar18 * 3" (binary_expression "(uVar18 & 1) + 1" (parenthesized_expression "(uVar18 & 1)" (( "(") (binary_expression "uVar18 & 1" (identifier "uVar18") (& "&") (number_literal "1")) () ")")) (+ "+") (number_literal "1")) (+ "+") (binary_expression "uVar18 * 3" (identifier "uVar18") (* "*") (number_literal "3")))) (; ";")) (if_statement "if ((uVar53 & 0x7fffffff) < uVar7) {\n      uVar26 = uVar42 + 1;\n      puVar8[uVar42] = uVar7;\n      uVar7 = uVar28;\n      goto LAB_00021f58;\n    }" (if "if") (parenthesized_expression "((uVar53 & 0x7fffffff) < uVar7)" (( "(") (binary_expression "(uVar53 & 0x7fffffff) < uVar7" (parenthesized_expression "(uVar53 & 0x7fffffff)" (( "(") (binary_expression "uVar53 & 0x7fffffff" (identifier "uVar53") (& "&") (number_literal "0x7fffffff")) () ")")) (< "<") (identifier "uVar7")) () ")")) (compound_statement "{\n      uVar26 = uVar42 + 1;\n      puVar8[uVar42] = uVar7;\n      uVar7 = uVar28;\n      goto LAB_00021f58;\n    }" ({ "{") (expression_statement "uVar26 = uVar42 + 1;" (assignment_expression "uVar26 = uVar42 + 1" (identifier "uVar26") (= "=") (binary_expression "uVar42 + 1" (identifier "uVar42") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "puVar8[uVar42] = uVar7;" (assignment_expression "puVar8[uVar42] = uVar7" (subscript_expression "puVar8[uVar42]" (identifier "puVar8") ([ "[") (identifier "uVar42") (] "]")) (= "=") (identifier "uVar7")) (; ";")) (expression_statement "uVar7 = uVar28;" (assignment_expression "uVar7 = uVar28" (identifier "uVar7") (= "=") (identifier "uVar28")) (; ";")) (goto_statement "goto LAB_00021f58;" (goto "goto") (statement_identifier "LAB_00021f58") (; ";")) (} "}"))) (expression_statement "uVar11 = uVar11 * 2 - ((int)uVar11 >> 0x1f);" (assignment_expression "uVar11 = uVar11 * 2 - ((int)uVar11 >> 0x1f)" (identifier "uVar11") (= "=") (binary_expression "uVar11 * 2 - ((int)uVar11 >> 0x1f)" (binary_expression "uVar11 * 2" (identifier "uVar11") (* "*") (number_literal "2")) (- "-") (parenthesized_expression "((int)uVar11 >> 0x1f)" (( "(") (binary_expression "(int)uVar11 >> 0x1f" (cast_expression "(int)uVar11" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar11")) (>> ">>") (number_literal "0x1f")) () ")")))) (; ";")) (expression_statement "uVar7 = uVar7 * uVar28;" (assignment_expression "uVar7 = uVar7 * uVar28" (identifier "uVar7") (= "=") (binary_expression "uVar7 * uVar28" (identifier "uVar7") (* "*") (identifier "uVar28"))) (; ";")) (expression_statement "uVar23 = uVar23 + (uVar11 & 1);" (assignment_expression "uVar23 = uVar23 + (uVar11 & 1)" (identifier "uVar23") (= "=") (binary_expression "uVar23 + (uVar11 & 1)" (identifier "uVar23") (+ "+") (parenthesized_expression "(uVar11 & 1)" (( "(") (binary_expression "uVar11 & 1" (identifier "uVar11") (& "&") (number_literal "1")) () ")")))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(uVar18 <= uVar37)" (( "(") (binary_expression "uVar18 <= uVar37" (identifier "uVar18") (<= "<=") (identifier "uVar37")) () ")")) (; ";")) (labeled_statement "LAB_00021fb8:\n  if (uVar26 == 0) {\n    **(uint **)(param_1 + 8) = uVar7;\n    *(undefined4 *)(param_1 + 4) = 1;\n    uVar18 = 0;\n    iVar6 = local_30;\n  }\n  else {\n    uVar18 = uVar26 + 1;\n    puVar8[uVar26] = uVar7;\n    (*(code *)PTR___gmpz_prodlimbs_0009d284)(param_1);\n    iVar6 = local_30;\n  }" (statement_identifier "LAB_00021fb8") (: ":") (if_statement "if (uVar26 == 0) {\n    **(uint **)(param_1 + 8) = uVar7;\n    *(undefined4 *)(param_1 + 4) = 1;\n    uVar18 = 0;\n    iVar6 = local_30;\n  }\n  else {\n    uVar18 = uVar26 + 1;\n    puVar8[uVar26] = uVar7;\n    (*(code *)PTR___gmpz_prodlimbs_0009d284)(param_1);\n    iVar6 = local_30;\n  }" (if "if") (parenthesized_expression "(uVar26 == 0)" (( "(") (binary_expression "uVar26 == 0" (identifier "uVar26") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    **(uint **)(param_1 + 8) = uVar7;\n    *(undefined4 *)(param_1 + 4) = 1;\n    uVar18 = 0;\n    iVar6 = local_30;\n  }" ({ "{") (expression_statement "**(uint **)(param_1 + 8) = uVar7;" (assignment_expression "**(uint **)(param_1 + 8) = uVar7" (pointer_expression "**(uint **)(param_1 + 8)" (* "*") (pointer_expression "*(uint **)(param_1 + 8)" (* "*") (cast_expression "(uint **)(param_1 + 8)" (( "(") (type_descriptor "uint **" (type_identifier "uint") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 8)" (( "(") (binary_expression "param_1 + 8" (identifier "param_1") (+ "+") (number_literal "8")) () ")"))))) (= "=") (identifier "uVar7")) (; ";")) (expression_statement "*(undefined4 *)(param_1 + 4) = 1;" (assignment_expression "*(undefined4 *)(param_1 + 4) = 1" (pointer_expression "*(undefined4 *)(param_1 + 4)" (* "*") (cast_expression "(undefined4 *)(param_1 + 4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 4)" (( "(") (binary_expression "param_1 + 4" (identifier "param_1") (+ "+") (number_literal "4")) () ")")))) (= "=") (number_literal "1")) (; ";")) (expression_statement "uVar18 = 0;" (assignment_expression "uVar18 = 0" (identifier "uVar18") (= "=") (number_literal "0")) (; ";")) (expression_statement "iVar6 = local_30;" (assignment_expression "iVar6 = local_30" (identifier "iVar6") (= "=") (identifier "local_30")) (; ";")) (} "}")) (else_clause "else {\n    uVar18 = uVar26 + 1;\n    puVar8[uVar26] = uVar7;\n    (*(code *)PTR___gmpz_prodlimbs_0009d284)(param_1);\n    iVar6 = local_30;\n  }" (else "else") (compound_statement "{\n    uVar18 = uVar26 + 1;\n    puVar8[uVar26] = uVar7;\n    (*(code *)PTR___gmpz_prodlimbs_0009d284)(param_1);\n    iVar6 = local_30;\n  }" ({ "{") (expression_statement "uVar18 = uVar26 + 1;" (assignment_expression "uVar18 = uVar26 + 1" (identifier "uVar18") (= "=") (binary_expression "uVar26 + 1" (identifier "uVar26") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "puVar8[uVar26] = uVar7;" (assignment_expression "puVar8[uVar26] = uVar7" (subscript_expression "puVar8[uVar26]" (identifier "puVar8") ([ "[") (identifier "uVar26") (] "]")) (= "=") (identifier "uVar7")) (; ";")) (expression_statement "(*(code *)PTR___gmpz_prodlimbs_0009d284)(param_1);" (call_expression "(*(code *)PTR___gmpz_prodlimbs_0009d284)(param_1)" (parenthesized_expression "(*(code *)PTR___gmpz_prodlimbs_0009d284)" (( "(") (pointer_expression "*(code *)PTR___gmpz_prodlimbs_0009d284" (* "*") (cast_expression "(code *)PTR___gmpz_prodlimbs_0009d284" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___gmpz_prodlimbs_0009d284"))) () ")")) (argument_list "(param_1)" (( "(") (identifier "param_1") () ")"))) (; ";")) (expression_statement "iVar6 = local_30;" (assignment_expression "iVar6 = local_30" (identifier "iVar6") (= "=") (identifier "local_30")) (; ";")) (} "}"))))) (expression_statement "local_30 = iVar6;" (assignment_expression "local_30 = iVar6" (identifier "local_30") (= "=") (identifier "iVar6")) (; ";")) (if_statement "if (iVar6 != 0) {\n    (*(code *)PTR___gmp_tmp_reentrant_free_0009d618)();\n  }" (if "if") (parenthesized_expression "(iVar6 != 0)" (( "(") (binary_expression "iVar6 != 0" (identifier "iVar6") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    (*(code *)PTR___gmp_tmp_reentrant_free_0009d618)();\n  }" ({ "{") (expression_statement "(*(code *)PTR___gmp_tmp_reentrant_free_0009d618)();" (call_expression "(*(code *)PTR___gmp_tmp_reentrant_free_0009d618)()" (parenthesized_expression "(*(code *)PTR___gmp_tmp_reentrant_free_0009d618)" (( "(") (pointer_expression "*(code *)PTR___gmp_tmp_reentrant_free_0009d618" (* "*") (cast_expression "(code *)PTR___gmp_tmp_reentrant_free_0009d618" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___gmp_tmp_reentrant_free_0009d618"))) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (expression_statement "iVar24 = *(int *)puVar5;" (assignment_expression "iVar24 = *(int *)puVar5" (identifier "iVar24") (= "=") (pointer_expression "*(int *)puVar5" (* "*") (cast_expression "(int *)puVar5" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "puVar5")))) (; ";")) (if_statement "if (local_2c == iVar24) {\n    return iVar24;\n  }" (if "if") (parenthesized_expression "(local_2c == iVar24)" (( "(") (binary_expression "local_2c == iVar24" (identifier "local_2c") (== "==") (identifier "iVar24")) () ")")) (compound_statement "{\n    return iVar24;\n  }" ({ "{") (return_statement "return iVar24;" (return "return") (identifier "iVar24") (; ";")) (} "}"))) (expression_statement "pcVar51 = FUN_0002209c;" (assignment_expression "pcVar51 = FUN_0002209c" (identifier "pcVar51") (= "=") (identifier "FUN_0002209c")) (; ";")) (expression_statement "puVar14 = PTR___stack_chk_fail_0009d4d0;" (assignment_expression "puVar14 = PTR___stack_chk_fail_0009d4d0" (identifier "puVar14") (= "=") (identifier "PTR___stack_chk_fail_0009d4d0")) (; ";")) (expression_statement "(*(code *)PTR___stack_chk_fail_0009d4d0)();" (call_expression "(*(code *)PTR___stack_chk_fail_0009d4d0)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_0009d4d0)" (( "(") (pointer_expression "*(code *)PTR___stack_chk_fail_0009d4d0" (* "*") (cast_expression "(code *)PTR___stack_chk_fail_0009d4d0" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___stack_chk_fail_0009d4d0"))) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "puVar43 = puVar14 + 0x82fa4;" (assignment_expression "puVar43 = puVar14 + 0x82fa4" (identifier "puVar43") (= "=") (binary_expression "puVar14 + 0x82fa4" (identifier "puVar14") (+ "+") (number_literal "0x82fa4"))) (; ";")) (expression_statement "puVar47 = puVar46 + -0x90;" (assignment_expression "puVar47 = puVar46 + -0x90" (identifier "puVar47") (= "=") (binary_expression "puVar46 + -0x90" (identifier "puVar46") (+ "+") (number_literal "-0x90"))) (; ";")) (expression_statement "puVar50 = puVar46 + -0x90;" (assignment_expression "puVar50 = puVar46 + -0x90" (identifier "puVar50") (= "=") (binary_expression "puVar46 + -0x90" (identifier "puVar46") (+ "+") (number_literal "-0x90"))) (; ";")) (expression_statement "puVar49 = puVar46 + -0x90;" (assignment_expression "puVar49 = puVar46 + -0x90" (identifier "puVar49") (= "=") (binary_expression "puVar46 + -0x90" (identifier "puVar46") (+ "+") (number_literal "-0x90"))) (; ";")) (expression_statement "*(int *)(puVar46 + -0x24) = param_1;" (assignment_expression "*(int *)(puVar46 + -0x24) = param_1" (pointer_expression "*(int *)(puVar46 + -0x24)" (* "*") (cast_expression "(int *)(puVar46 + -0x24)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar46 + -0x24)" (( "(") (binary_expression "puVar46 + -0x24" (identifier "puVar46") (+ "+") (number_literal "-0x24")) () ")")))) (= "=") (identifier "param_1")) (; ";")) (expression_statement "*(undefined1 **)(puVar46 + -8) = auStack_48;" (assignment_expression "*(undefined1 **)(puVar46 + -8) = auStack_48" (pointer_expression "*(undefined1 **)(puVar46 + -8)" (* "*") (cast_expression "(undefined1 **)(puVar46 + -8)" (( "(") (type_descriptor "undefined1 **" (type_identifier "undefined1") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar46 + -8)" (( "(") (binary_expression "puVar46 + -8" (identifier "puVar46") (+ "+") (number_literal "-8")) () ")")))) (= "=") (identifier "auStack_48")) (; ";")) (expression_statement "puVar19 = *(undefined4 **)(puVar14 + 0x7b4a4);" (assignment_expression "puVar19 = *(undefined4 **)(puVar14 + 0x7b4a4)" (identifier "puVar19") (= "=") (pointer_expression "*(undefined4 **)(puVar14 + 0x7b4a4)" (* "*") (cast_expression "(undefined4 **)(puVar14 + 0x7b4a4)" (( "(") (type_descriptor "undefined4 **" (type_identifier "undefined4") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar14 + 0x7b4a4)" (( "(") (binary_expression "puVar14 + 0x7b4a4" (identifier "puVar14") (+ "+") (number_literal "0x7b4a4")) () ")"))))) (; ";")) (expression_statement "*(code **)(puVar46 + -4) = pcVar51;" (assignment_expression "*(code **)(puVar46 + -4) = pcVar51" (pointer_expression "*(code **)(puVar46 + -4)" (* "*") (cast_expression "(code **)(puVar46 + -4)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar46 + -4)" (( "(") (binary_expression "puVar46 + -4" (identifier "puVar46") (+ "+") (number_literal "-4")) () ")")))) (= "=") (identifier "pcVar51")) (; ";")) (expression_statement "*(int *)(puVar46 + -0x6c) = iVar6;" (assignment_expression "*(int *)(puVar46 + -0x6c) = iVar6" (pointer_expression "*(int *)(puVar46 + -0x6c)" (* "*") (cast_expression "(int *)(puVar46 + -0x6c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar46 + -0x6c)" (( "(") (binary_expression "puVar46 + -0x6c" (identifier "puVar46") (+ "+") (number_literal "-0x6c")) () ")")))) (= "=") (identifier "iVar6")) (; ";")) (expression_statement "*(uint *)(puVar46 + -0xc) = uVar40;" (assignment_expression "*(uint *)(puVar46 + -0xc) = uVar40" (pointer_expression "*(uint *)(puVar46 + -0xc)" (* "*") (cast_expression "(uint *)(puVar46 + -0xc)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar46 + -0xc)" (( "(") (binary_expression "puVar46 + -0xc" (identifier "puVar46") (+ "+") (number_literal "-0xc")) () ")")))) (= "=") (identifier "uVar40")) (; ";")) (expression_statement "*(uint *)(puVar46 + -0x10) = param_3;" (assignment_expression "*(uint *)(puVar46 + -0x10) = param_3" (pointer_expression "*(uint *)(puVar46 + -0x10)" (* "*") (cast_expression "(uint *)(puVar46 + -0x10)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar46 + -0x10)" (( "(") (binary_expression "puVar46 + -0x10" (identifier "puVar46") (+ "+") (number_literal "-0x10")) () ")")))) (= "=") (identifier "param_3")) (; ";")) (expression_statement "*(uint *)(puVar46 + -0x14) = uVar37;" (assignment_expression "*(uint *)(puVar46 + -0x14) = uVar37" (pointer_expression "*(uint *)(puVar46 + -0x14)" (* "*") (cast_expression "(uint *)(puVar46 + -0x14)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar46 + -0x14)" (( "(") (binary_expression "puVar46 + -0x14" (identifier "puVar46") (+ "+") (number_literal "-0x14")) () ")")))) (= "=") (identifier "uVar37")) (; ";")) (expression_statement "uVar37 = (((uint)puVar8 >> 5) + 1) * 3;" (assignment_expression "uVar37 = (((uint)puVar8 >> 5) + 1) * 3" (identifier "uVar37") (= "=") (binary_expression "(((uint)puVar8 >> 5) + 1) * 3" (parenthesized_expression "(((uint)puVar8 >> 5) + 1)" (( "(") (binary_expression "((uint)puVar8 >> 5) + 1" (parenthesized_expression "((uint)puVar8 >> 5)" (( "(") (binary_expression "(uint)puVar8 >> 5" (cast_expression "(uint)puVar8" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "puVar8")) (>> ">>") (number_literal "5")) () ")")) (+ "+") (number_literal "1")) () ")")) (* "*") (number_literal "3"))) (; ";")) (expression_statement "*(uint *)(puVar46 + -0x18) = uVar35;" (assignment_expression "*(uint *)(puVar46 + -0x18) = uVar35" (pointer_expression "*(uint *)(puVar46 + -0x18)" (* "*") (cast_expression "(uint *)(puVar46 + -0x18)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar46 + -0x18)" (( "(") (binary_expression "puVar46 + -0x18" (identifier "puVar46") (+ "+") (number_literal "-0x18")) () ")")))) (= "=") (identifier "uVar35")) (; ";")) (expression_statement "*(undefined1 **)(puVar46 + -0x1c) = puVar13;" (assignment_expression "*(undefined1 **)(puVar46 + -0x1c) = puVar13" (pointer_expression "*(undefined1 **)(puVar46 + -0x1c)" (* "*") (cast_expression "(undefined1 **)(puVar46 + -0x1c)" (( "(") (type_descriptor "undefined1 **" (type_identifier "undefined1") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar46 + -0x1c)" (( "(") (binary_expression "puVar46 + -0x1c" (identifier "puVar46") (+ "+") (number_literal "-0x1c")) () ")")))) (= "=") (identifier "puVar13")) (; ";")) (expression_statement "*(uint *)(puVar46 + -0x20) = param_2;" (assignment_expression "*(uint *)(puVar46 + -0x20) = param_2" (pointer_expression "*(uint *)(puVar46 + -0x20)" (* "*") (cast_expression "(uint *)(puVar46 + -0x20)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar46 + -0x20)" (( "(") (binary_expression "puVar46 + -0x20" (identifier "puVar46") (+ "+") (number_literal "-0x20")) () ")")))) (= "=") (identifier "param_2")) (; ";")) (expression_statement "*(undefined **)(puVar46 + -0x28) = puVar5;" (assignment_expression "*(undefined **)(puVar46 + -0x28) = puVar5" (pointer_expression "*(undefined **)(puVar46 + -0x28)" (* "*") (cast_expression "(undefined **)(puVar46 + -0x28)" (( "(") (type_descriptor "undefined **" (type_identifier "undefined") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar46 + -0x28)" (( "(") (binary_expression "puVar46 + -0x28" (identifier "puVar46") (+ "+") (number_literal "-0x28")) () ")")))) (= "=") (identifier "puVar5")) (; ";")) (expression_statement "*(undefined **)(puVar46 + -0x78) = puVar43;" (assignment_expression "*(undefined **)(puVar46 + -0x78) = puVar43" (pointer_expression "*(undefined **)(puVar46 + -0x78)" (* "*") (cast_expression "(undefined **)(puVar46 + -0x78)" (( "(") (type_descriptor "undefined **" (type_identifier "undefined") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar46 + -0x78)" (( "(") (binary_expression "puVar46 + -0x78" (identifier "puVar46") (+ "+") (number_literal "-0x78")) () ")")))) (= "=") (identifier "puVar43")) (; ";")) (expression_statement "*(undefined4 **)(puVar46 + -0x70) = puVar19;" (assignment_expression "*(undefined4 **)(puVar46 + -0x70) = puVar19" (pointer_expression "*(undefined4 **)(puVar46 + -0x70)" (* "*") (cast_expression "(undefined4 **)(puVar46 + -0x70)" (( "(") (type_descriptor "undefined4 **" (type_identifier "undefined4") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar46 + -0x70)" (( "(") (binary_expression "puVar46 + -0x70" (identifier "puVar46") (+ "+") (number_literal "-0x70")) () ")")))) (= "=") (identifier "puVar19")) (; ";")) (expression_statement "*(undefined4 *)(puVar46 + -0x30) = 0;" (assignment_expression "*(undefined4 *)(puVar46 + -0x30) = 0" (pointer_expression "*(undefined4 *)(puVar46 + -0x30)" (* "*") (cast_expression "(undefined4 *)(puVar46 + -0x30)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar46 + -0x30)" (( "(") (binary_expression "puVar46 + -0x30" (identifier "puVar46") (+ "+") (number_literal "-0x30")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(undefined4 *)(puVar46 + -0x2c) = *puVar19;" (assignment_expression "*(undefined4 *)(puVar46 + -0x2c) = *puVar19" (pointer_expression "*(undefined4 *)(puVar46 + -0x2c)" (* "*") (cast_expression "(undefined4 *)(puVar46 + -0x2c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar46 + -0x2c)" (( "(") (binary_expression "puVar46 + -0x2c" (identifier "puVar46") (+ "+") (number_literal "-0x2c")) () ")")))) (= "=") (pointer_expression "*puVar19" (* "*") (identifier "puVar19"))) (; ";")) (if_statement "if (uVar37 < 0x2a) {\n    uVar37 = 0x27;\n    if (uVar18 < 0x28) {\n      uVar37 = uVar18;\n    }\n    uVar37 = (uVar37 + 1) * 4;\n  }\n  else {\n    uVar37 = ((int)uVar37 >> 1) + 0x13;\n    if (uVar18 < uVar37) {\n      uVar37 = uVar18;\n    }\n    uVar37 = (uVar37 + 1) * 4;\n    pcVar51 = *(code **)(puVar14 + 0x7b254);\n    if (0x7f00 < uVar37) {\n      *(uint *)(puVar46 + 8) = uVar18;\n      puVar38 = (uint *)(*pcVar51)(puVar46 + -0x30);\n      puVar43 = *(undefined **)(puVar46 + -0x78);\n      uVar18 = *(uint *)(puVar46 + 8);\n      goto LAB_0002214c;\n    }\n  }" (if "if") (parenthesized_expression "(uVar37 < 0x2a)" (( "(") (binary_expression "uVar37 < 0x2a" (identifier "uVar37") (< "<") (number_literal "0x2a")) () ")")) (compound_statement "{\n    uVar37 = 0x27;\n    if (uVar18 < 0x28) {\n      uVar37 = uVar18;\n    }\n    uVar37 = (uVar37 + 1) * 4;\n  }" ({ "{") (expression_statement "uVar37 = 0x27;" (assignment_expression "uVar37 = 0x27" (identifier "uVar37") (= "=") (number_literal "0x27")) (; ";")) (if_statement "if (uVar18 < 0x28) {\n      uVar37 = uVar18;\n    }" (if "if") (parenthesized_expression "(uVar18 < 0x28)" (( "(") (binary_expression "uVar18 < 0x28" (identifier "uVar18") (< "<") (number_literal "0x28")) () ")")) (compound_statement "{\n      uVar37 = uVar18;\n    }" ({ "{") (expression_statement "uVar37 = uVar18;" (assignment_expression "uVar37 = uVar18" (identifier "uVar37") (= "=") (identifier "uVar18")) (; ";")) (} "}"))) (expression_statement "uVar37 = (uVar37 + 1) * 4;" (assignment_expression "uVar37 = (uVar37 + 1) * 4" (identifier "uVar37") (= "=") (binary_expression "(uVar37 + 1) * 4" (parenthesized_expression "(uVar37 + 1)" (( "(") (binary_expression "uVar37 + 1" (identifier "uVar37") (+ "+") (number_literal "1")) () ")")) (* "*") (number_literal "4"))) (; ";")) (} "}")) (else_clause "else {\n    uVar37 = ((int)uVar37 >> 1) + 0x13;\n    if (uVar18 < uVar37) {\n      uVar37 = uVar18;\n    }\n    uVar37 = (uVar37 + 1) * 4;\n    pcVar51 = *(code **)(puVar14 + 0x7b254);\n    if (0x7f00 < uVar37) {\n      *(uint *)(puVar46 + 8) = uVar18;\n      puVar38 = (uint *)(*pcVar51)(puVar46 + -0x30);\n      puVar43 = *(undefined **)(puVar46 + -0x78);\n      uVar18 = *(uint *)(puVar46 + 8);\n      goto LAB_0002214c;\n    }\n  }" (else "else") (compound_statement "{\n    uVar37 = ((int)uVar37 >> 1) + 0x13;\n    if (uVar18 < uVar37) {\n      uVar37 = uVar18;\n    }\n    uVar37 = (uVar37 + 1) * 4;\n    pcVar51 = *(code **)(puVar14 + 0x7b254);\n    if (0x7f00 < uVar37) {\n      *(uint *)(puVar46 + 8) = uVar18;\n      puVar38 = (uint *)(*pcVar51)(puVar46 + -0x30);\n      puVar43 = *(undefined **)(puVar46 + -0x78);\n      uVar18 = *(uint *)(puVar46 + 8);\n      goto LAB_0002214c;\n    }\n  }" ({ "{") (expression_statement "uVar37 = ((int)uVar37 >> 1) + 0x13;" (assignment_expression "uVar37 = ((int)uVar37 >> 1) + 0x13" (identifier "uVar37") (= "=") (binary_expression "((int)uVar37 >> 1) + 0x13" (parenthesized_expression "((int)uVar37 >> 1)" (( "(") (binary_expression "(int)uVar37 >> 1" (cast_expression "(int)uVar37" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar37")) (>> ">>") (number_literal "1")) () ")")) (+ "+") (number_literal "0x13"))) (; ";")) (if_statement "if (uVar18 < uVar37) {\n      uVar37 = uVar18;\n    }" (if "if") (parenthesized_expression "(uVar18 < uVar37)" (( "(") (binary_expression "uVar18 < uVar37" (identifier "uVar18") (< "<") (identifier "uVar37")) () ")")) (compound_statement "{\n      uVar37 = uVar18;\n    }" ({ "{") (expression_statement "uVar37 = uVar18;" (assignment_expression "uVar37 = uVar18" (identifier "uVar37") (= "=") (identifier "uVar18")) (; ";")) (} "}"))) (expression_statement "uVar37 = (uVar37 + 1) * 4;" (assignment_expression "uVar37 = (uVar37 + 1) * 4" (identifier "uVar37") (= "=") (binary_expression "(uVar37 + 1) * 4" (parenthesized_expression "(uVar37 + 1)" (( "(") (binary_expression "uVar37 + 1" (identifier "uVar37") (+ "+") (number_literal "1")) () ")")) (* "*") (number_literal "4"))) (; ";")) (expression_statement "pcVar51 = *(code **)(puVar14 + 0x7b254);" (assignment_expression "pcVar51 = *(code **)(puVar14 + 0x7b254)" (identifier "pcVar51") (= "=") (pointer_expression "*(code **)(puVar14 + 0x7b254)" (* "*") (cast_expression "(code **)(puVar14 + 0x7b254)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar14 + 0x7b254)" (( "(") (binary_expression "puVar14 + 0x7b254" (identifier "puVar14") (+ "+") (number_literal "0x7b254")) () ")"))))) (; ";")) (if_statement "if (0x7f00 < uVar37) {\n      *(uint *)(puVar46 + 8) = uVar18;\n      puVar38 = (uint *)(*pcVar51)(puVar46 + -0x30);\n      puVar43 = *(undefined **)(puVar46 + -0x78);\n      uVar18 = *(uint *)(puVar46 + 8);\n      goto LAB_0002214c;\n    }" (if "if") (parenthesized_expression "(0x7f00 < uVar37)" (( "(") (binary_expression "0x7f00 < uVar37" (number_literal "0x7f00") (< "<") (identifier "uVar37")) () ")")) (compound_statement "{\n      *(uint *)(puVar46 + 8) = uVar18;\n      puVar38 = (uint *)(*pcVar51)(puVar46 + -0x30);\n      puVar43 = *(undefined **)(puVar46 + -0x78);\n      uVar18 = *(uint *)(puVar46 + 8);\n      goto LAB_0002214c;\n    }" ({ "{") (expression_statement "*(uint *)(puVar46 + 8) = uVar18;" (assignment_expression "*(uint *)(puVar46 + 8) = uVar18" (pointer_expression "*(uint *)(puVar46 + 8)" (* "*") (cast_expression "(uint *)(puVar46 + 8)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar46 + 8)" (( "(") (binary_expression "puVar46 + 8" (identifier "puVar46") (+ "+") (number_literal "8")) () ")")))) (= "=") (identifier "uVar18")) (; ";")) (expression_statement "puVar38 = (uint *)(*pcVar51)(puVar46 + -0x30);" (assignment_expression "puVar38 = (uint *)(*pcVar51)(puVar46 + -0x30)" (identifier "puVar38") (= "=") (cast_expression "(uint *)(*pcVar51)(puVar46 + -0x30)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "(*pcVar51)(puVar46 + -0x30)" (parenthesized_expression "(*pcVar51)" (( "(") (pointer_expression "*pcVar51" (* "*") (identifier "pcVar51")) () ")")) (argument_list "(puVar46 + -0x30)" (( "(") (binary_expression "puVar46 + -0x30" (identifier "puVar46") (+ "+") (number_literal "-0x30")) () ")"))))) (; ";")) (expression_statement "puVar43 = *(undefined **)(puVar46 + -0x78);" (assignment_expression "puVar43 = *(undefined **)(puVar46 + -0x78)" (identifier "puVar43") (= "=") (pointer_expression "*(undefined **)(puVar46 + -0x78)" (* "*") (cast_expression "(undefined **)(puVar46 + -0x78)" (( "(") (type_descriptor "undefined **" (type_identifier "undefined") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar46 + -0x78)" (( "(") (binary_expression "puVar46 + -0x78" (identifier "puVar46") (+ "+") (number_literal "-0x78")) () ")"))))) (; ";")) (expression_statement "uVar18 = *(uint *)(puVar46 + 8);" (assignment_expression "uVar18 = *(uint *)(puVar46 + 8)" (identifier "uVar18") (= "=") (pointer_expression "*(uint *)(puVar46 + 8)" (* "*") (cast_expression "(uint *)(puVar46 + 8)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar46 + 8)" (( "(") (binary_expression "puVar46 + 8" (identifier "puVar46") (+ "+") (number_literal "8")) () ")"))))) (; ";")) (goto_statement "goto LAB_0002214c;" (goto "goto") (statement_identifier "LAB_0002214c") (; ";")) (} "}"))) (} "}")))) (expression_statement "iVar6 = -(uVar37 + 7 & 0xfffffff8);" (assignment_expression "iVar6 = -(uVar37 + 7 & 0xfffffff8)" (identifier "iVar6") (= "=") (unary_expression "-(uVar37 + 7 & 0xfffffff8)" (- "-") (parenthesized_expression "(uVar37 + 7 & 0xfffffff8)" (( "(") (binary_expression "uVar37 + 7 & 0xfffffff8" (binary_expression "uVar37 + 7" (identifier "uVar37") (+ "+") (number_literal "7")) (& "&") (number_literal "0xfffffff8")) () ")")))) (; ";")) (expression_statement "puVar47 = puVar46 + iVar6 + -0x90;" (assignment_expression "puVar47 = puVar46 + iVar6 + -0x90" (identifier "puVar47") (= "=") (binary_expression "puVar46 + iVar6 + -0x90" (binary_expression "puVar46 + iVar6" (identifier "puVar46") (+ "+") (identifier "iVar6")) (+ "+") (number_literal "-0x90"))) (; ";")) (expression_statement "puVar38 = (uint *)(puVar46 + iVar6 + -0x78);" (assignment_expression "puVar38 = (uint *)(puVar46 + iVar6 + -0x78)" (identifier "puVar38") (= "=") (cast_expression "(uint *)(puVar46 + iVar6 + -0x78)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar46 + iVar6 + -0x78)" (( "(") (binary_expression "puVar46 + iVar6 + -0x78" (binary_expression "puVar46 + iVar6" (identifier "puVar46") (+ "+") (identifier "iVar6")) (+ "+") (number_literal "-0x78")) () ")")))) (; ";")) (labeled_statement "LAB_0002214c:\n  iVar24 = *(int *)(puVar43 + -0x7c6c);" (statement_identifier "LAB_0002214c") (: ":") (expression_statement "iVar24 = *(int *)(puVar43 + -0x7c6c);" (assignment_expression "iVar24 = *(int *)(puVar43 + -0x7c6c)" (identifier "iVar24") (= "=") (pointer_expression "*(int *)(puVar43 + -0x7c6c)" (* "*") (cast_expression "(int *)(puVar43 + -0x7c6c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar43 + -0x7c6c)" (( "(") (binary_expression "puVar43 + -0x7c6c" (identifier "puVar43") (+ "+") (number_literal "-0x7c6c")) () ")"))))) (; ";"))) (expression_statement "puVar36 = (uint *)(puVar47 + -0x40);" (assignment_expression "puVar36 = (uint *)(puVar47 + -0x40)" (identifier "puVar36") (= "=") (cast_expression "(uint *)(puVar47 + -0x40)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar47 + -0x40)" (( "(") (binary_expression "puVar47 + -0x40" (identifier "puVar47") (+ "+") (number_literal "-0x40")) () ")")))) (; ";")) (expression_statement "puVar31 = (uint *)(iVar24 + 0x1c);" (assignment_expression "puVar31 = (uint *)(iVar24 + 0x1c)" (identifier "puVar31") (= "=") (cast_expression "(uint *)(iVar24 + 0x1c)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar24 + 0x1c)" (( "(") (binary_expression "iVar24 + 0x1c" (identifier "iVar24") (+ "+") (number_literal "0x1c")) () ")")))) (; ";")) (expression_statement "iVar6 = 8;" (assignment_expression "iVar6 = 8" (identifier "iVar6") (= "=") (number_literal "8")) (; ";")) (do_statement "do {\n    iVar29 = iVar6;\n    puVar9 = (uint *)*puVar31;\n    puVar31 = puVar31 + -1;\n    iVar6 = iVar29 + -1;\n  } while (puVar9 < puVar8);" (do "do") (compound_statement "{\n    iVar29 = iVar6;\n    puVar9 = (uint *)*puVar31;\n    puVar31 = puVar31 + -1;\n    iVar6 = iVar29 + -1;\n  }" ({ "{") (expression_statement "iVar29 = iVar6;" (assignment_expression "iVar29 = iVar6" (identifier "iVar29") (= "=") (identifier "iVar6")) (; ";")) (expression_statement "puVar9 = (uint *)*puVar31;" (assignment_expression "puVar9 = (uint *)*puVar31" (identifier "puVar9") (= "=") (cast_expression "(uint *)*puVar31" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*puVar31" (* "*") (identifier "puVar31")))) (; ";")) (expression_statement "puVar31 = puVar31 + -1;" (assignment_expression "puVar31 = puVar31 + -1" (identifier "puVar31") (= "=") (binary_expression "puVar31 + -1" (identifier "puVar31") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "iVar6 = iVar29 + -1;" (assignment_expression "iVar6 = iVar29 + -1" (identifier "iVar6") (= "=") (binary_expression "iVar29 + -1" (identifier "iVar29") (+ "+") (number_literal "-1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(puVar9 < puVar8)" (( "(") (binary_expression "puVar9 < puVar8" (identifier "puVar9") (< "<") (identifier "puVar8")) () ")")) (; ";")) (expression_statement "*(int *)(puVar46 + -0x68) = iVar29;" (assignment_expression "*(int *)(puVar46 + -0x68) = iVar29" (pointer_expression "*(int *)(puVar46 + -0x68)" (* "*") (cast_expression "(int *)(puVar46 + -0x68)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar46 + -0x68)" (( "(") (binary_expression "puVar46 + -0x68" (identifier "puVar46") (+ "+") (number_literal "-0x68")) () ")")))) (= "=") (identifier "iVar29")) (; ";")) (expression_statement "puVar31 = (uint *)(iVar24 + 0x1c);" (assignment_expression "puVar31 = (uint *)(iVar24 + 0x1c)" (identifier "puVar31") (= "=") (cast_expression "(uint *)(iVar24 + 0x1c)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar24 + 0x1c)" (( "(") (binary_expression "iVar24 + 0x1c" (identifier "iVar24") (+ "+") (number_literal "0x1c")) () ")")))) (; ";")) (expression_statement "uVar37 = 8;" (assignment_expression "uVar37 = 8" (identifier "uVar37") (= "=") (number_literal "8")) (; ";")) (do_statement "do {\n    uVar7 = uVar37;\n    uVar11 = *puVar31;\n    puVar31 = puVar31 + -1;\n    uVar37 = uVar7 - 1;\n  } while (uVar11 < uVar18);" (do "do") (compound_statement "{\n    uVar7 = uVar37;\n    uVar11 = *puVar31;\n    puVar31 = puVar31 + -1;\n    uVar37 = uVar7 - 1;\n  }" ({ "{") (expression_statement "uVar7 = uVar37;" (assignment_expression "uVar7 = uVar37" (identifier "uVar7") (= "=") (identifier "uVar37")) (; ";")) (expression_statement "uVar11 = *puVar31;" (assignment_expression "uVar11 = *puVar31" (identifier "uVar11") (= "=") (pointer_expression "*puVar31" (* "*") (identifier "puVar31"))) (; ";")) (expression_statement "puVar31 = puVar31 + -1;" (assignment_expression "puVar31 = puVar31 + -1" (identifier "puVar31") (= "=") (binary_expression "puVar31 + -1" (identifier "puVar31") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "uVar37 = uVar7 - 1;" (assignment_expression "uVar37 = uVar7 - 1" (identifier "uVar37") (= "=") (binary_expression "uVar7 - 1" (identifier "uVar7") (- "-") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(uVar11 < uVar18)" (( "(") (binary_expression "uVar11 < uVar18" (identifier "uVar11") (< "<") (identifier "uVar18")) () ")")) (; ";")) (expression_statement "uVar10 = *(undefined4 *)(puVar43 + -0x7d3c);" (assignment_expression "uVar10 = *(undefined4 *)(puVar43 + -0x7d3c)" (identifier "uVar10") (= "=") (pointer_expression "*(undefined4 *)(puVar43 + -0x7d3c)" (* "*") (cast_expression "(undefined4 *)(puVar43 + -0x7d3c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar43 + -0x7d3c)" (( "(") (binary_expression "puVar43 + -0x7d3c" (identifier "puVar43") (+ "+") (number_literal "-0x7d3c")) () ")"))))) (; ";")) (expression_statement "iVar6 = 0x11;" (assignment_expression "iVar6 = 0x11" (identifier "iVar6") (= "=") (number_literal "0x11")) (; ";")) (expression_statement "*(undefined4 *)(puVar46 + -0x48) = 0;" (assignment_expression "*(undefined4 *)(puVar46 + -0x48) = 0" (pointer_expression "*(undefined4 *)(puVar46 + -0x48)" (* "*") (cast_expression "(undefined4 *)(puVar46 + -0x48)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar46 + -0x48)" (( "(") (binary_expression "puVar46 + -0x48" (identifier "puVar46") (+ "+") (number_literal "-0x48")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(undefined4 *)(puVar46 + -100) = uVar10;" (assignment_expression "*(undefined4 *)(puVar46 + -100) = uVar10" (pointer_expression "*(undefined4 *)(puVar46 + -100)" (* "*") (cast_expression "(undefined4 *)(puVar46 + -100)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar46 + -100)" (( "(") (binary_expression "puVar46 + -100" (identifier "puVar46") (+ "+") (number_literal "-100")) () ")")))) (= "=") (identifier "uVar10")) (; ";")) (expression_statement "iVar24 = *(int *)(puVar43 + -0x7e20);" (assignment_expression "iVar24 = *(int *)(puVar43 + -0x7e20)" (identifier "iVar24") (= "=") (pointer_expression "*(int *)(puVar43 + -0x7e20)" (* "*") (cast_expression "(int *)(puVar43 + -0x7e20)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar43 + -0x7e20)" (( "(") (binary_expression "puVar43 + -0x7e20" (identifier "puVar43") (+ "+") (number_literal "-0x7e20")) () ")"))))) (; ";")) (expression_statement "*(undefined4 *)(puVar46 + -0x5c) = 0x3fffffff;" (assignment_expression "*(undefined4 *)(puVar46 + -0x5c) = 0x3fffffff" (pointer_expression "*(undefined4 *)(puVar46 + -0x5c)" (* "*") (cast_expression "(undefined4 *)(puVar46 + -0x5c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar46 + -0x5c)" (( "(") (binary_expression "puVar46 + -0x5c" (identifier "puVar46") (+ "+") (number_literal "-0x5c")) () ")")))) (= "=") (number_literal "0x3fffffff")) (; ";")) (expression_statement "iVar29 = (int)puVar8 + (1 - uVar18);" (assignment_expression "iVar29 = (int)puVar8 + (1 - uVar18)" (identifier "iVar29") (= "=") (binary_expression "(int)puVar8 + (1 - uVar18)" (cast_expression "(int)puVar8" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar8")) (+ "+") (parenthesized_expression "(1 - uVar18)" (( "(") (binary_expression "1 - uVar18" (number_literal "1") (- "-") (identifier "uVar18")) () ")")))) (; ";")) (expression_statement "*(uint *)(puVar46 + -0x40) = (uint)*(byte *)(iVar24 + 7);" (assignment_expression "*(uint *)(puVar46 + -0x40) = (uint)*(byte *)(iVar24 + 7)" (pointer_expression "*(uint *)(puVar46 + -0x40)" (* "*") (cast_expression "(uint *)(puVar46 + -0x40)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar46 + -0x40)" (( "(") (binary_expression "puVar46 + -0x40" (identifier "puVar46") (+ "+") (number_literal "-0x40")) () ")")))) (= "=") (binary_expression "(uint)*(byte *)(iVar24 + 7)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (cast_expression "(byte *)(iVar24 + 7)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar24 + 7)" (( "(") (binary_expression "iVar24 + 7" (identifier "iVar24") (+ "+") (number_literal "7")) () ")"))))) (; ";")) (expression_statement "*(undefined4 *)(puVar46 + -0x3c) = *(undefined4 *)(puVar43 + -0x7eb4);" (assignment_expression "*(undefined4 *)(puVar46 + -0x3c) = *(undefined4 *)(puVar43 + -0x7eb4)" (pointer_expression "*(undefined4 *)(puVar46 + -0x3c)" (* "*") (cast_expression "(undefined4 *)(puVar46 + -0x3c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar46 + -0x3c)" (( "(") (binary_expression "puVar46 + -0x3c" (identifier "puVar46") (+ "+") (number_literal "-0x3c")) () ")")))) (= "=") (pointer_expression "*(undefined4 *)(puVar43 + -0x7eb4)" (* "*") (cast_expression "(undefined4 *)(puVar43 + -0x7eb4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar43 + -0x7eb4)" (( "(") (binary_expression "puVar43 + -0x7eb4" (identifier "puVar43") (+ "+") (number_literal "-0x7eb4")) () ")"))))) (; ";")) (expression_statement "*(uint *)(puVar46 + -0x60) = uVar18 + 1;" (assignment_expression "*(uint *)(puVar46 + -0x60) = uVar18 + 1" (pointer_expression "*(uint *)(puVar46 + -0x60)" (* "*") (cast_expression "(uint *)(puVar46 + -0x60)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar46 + -0x60)" (( "(") (binary_expression "puVar46 + -0x60" (identifier "puVar46") (+ "+") (number_literal "-0x60")) () ")")))) (= "=") (binary_expression "uVar18 + 1" (identifier "uVar18") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "iVar24 = *(int *)(puVar46 + -0x60);" (assignment_expression "iVar24 = *(int *)(puVar46 + -0x60)" (identifier "iVar24") (= "=") (pointer_expression "*(int *)(puVar46 + -0x60)" (* "*") (cast_expression "(int *)(puVar46 + -0x60)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar46 + -0x60)" (( "(") (binary_expression "puVar46 + -0x60" (identifier "puVar46") (+ "+") (number_literal "-0x60")) () ")"))))) (; ";")) (expression_statement "*puVar38 = 1;" (assignment_expression "*puVar38 = 1" (pointer_expression "*puVar38" (* "*") (identifier "puVar38")) (= "=") (number_literal "1")) (; ";")) (expression_statement "*(undefined4 *)(puVar46 + -0x44) = 1;" (assignment_expression "*(undefined4 *)(puVar46 + -0x44) = 1" (pointer_expression "*(undefined4 *)(puVar46 + -0x44)" (* "*") (cast_expression "(undefined4 *)(puVar46 + -0x44)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar46 + -0x44)" (( "(") (binary_expression "puVar46 + -0x44" (identifier "puVar46") (+ "+") (number_literal "-0x44")) () ")")))) (= "=") (number_literal "1")) (; ";")) (expression_statement "*(int *)(puVar46 + -0x34) = *(int *)(puVar43 + -0x7fe4) + -0x31a4;" (assignment_expression "*(int *)(puVar46 + -0x34) = *(int *)(puVar43 + -0x7fe4) + -0x31a4" (pointer_expression "*(int *)(puVar46 + -0x34)" (* "*") (cast_expression "(int *)(puVar46 + -0x34)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar46 + -0x34)" (( "(") (binary_expression "puVar46 + -0x34" (identifier "puVar46") (+ "+") (number_literal "-0x34")) () ")")))) (= "=") (binary_expression "*(int *)(puVar43 + -0x7fe4) + -0x31a4" (pointer_expression "*(int *)(puVar43 + -0x7fe4)" (* "*") (cast_expression "(int *)(puVar43 + -0x7fe4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar43 + -0x7fe4)" (( "(") (binary_expression "puVar43 + -0x7fe4" (identifier "puVar43") (+ "+") (number_literal "-0x7fe4")) () ")")))) (+ "+") (number_literal "-0x31a4"))) (; ";")) (expression_statement "*(int *)(puVar46 + -0x38) = *(int *)(puVar43 + -0x7fd4) + 0x3630;" (assignment_expression "*(int *)(puVar46 + -0x38) = *(int *)(puVar43 + -0x7fd4) + 0x3630" (pointer_expression "*(int *)(puVar46 + -0x38)" (* "*") (cast_expression "(int *)(puVar46 + -0x38)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar46 + -0x38)" (( "(") (binary_expression "puVar46 + -0x38" (identifier "puVar46") (+ "+") (number_literal "-0x38")) () ")")))) (= "=") (binary_expression "*(int *)(puVar43 + -0x7fd4) + 0x3630" (pointer_expression "*(int *)(puVar43 + -0x7fd4)" (* "*") (cast_expression "(int *)(puVar43 + -0x7fd4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar43 + -0x7fd4)" (( "(") (binary_expression "puVar43 + -0x7fd4" (identifier "puVar43") (+ "+") (number_literal "-0x7fd4")) () ")")))) (+ "+") (number_literal "0x3630"))) (; ";")) (expression_statement "*puVar36 = 0x260eeeeb;" (assignment_expression "*puVar36 = 0x260eeeeb" (pointer_expression "*puVar36" (* "*") (identifier "puVar36")) (= "=") (number_literal "0x260eeeeb")) (; ";")) (if_statement "if (iVar24 - 0x11U <= uVar7) {\n    uVar7 = iVar24 - 0x11U;\n  }" (if "if") (parenthesized_expression "(iVar24 - 0x11U <= uVar7)" (( "(") (binary_expression "iVar24 - 0x11U <= uVar7" (binary_expression "iVar24 - 0x11U" (identifier "iVar24") (- "-") (number_literal "0x11U")) (<= "<=") (identifier "uVar7")) () ")")) (compound_statement "{\n    uVar7 = iVar24 - 0x11U;\n  }" ({ "{") (expression_statement "uVar7 = iVar24 - 0x11U;" (assignment_expression "uVar7 = iVar24 - 0x11U" (identifier "uVar7") (= "=") (binary_expression "iVar24 - 0x11U" (identifier "iVar24") (- "-") (number_literal "0x11U"))) (; ";")) (} "}"))) (expression_statement "puVar8 = (uint *)0x1;" (assignment_expression "puVar8 = (uint *)0x1" (identifier "puVar8") (= "=") (cast_expression "(uint *)0x1" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x1"))) (; ";")) (expression_statement "iVar39 = iVar6;" (assignment_expression "iVar39 = iVar6" (identifier "iVar39") (= "=") (identifier "iVar6")) (; ";")) (if_statement "if (uVar7 == 0) goto LAB_00022534;" (if "if") (parenthesized_expression "(uVar7 == 0)" (( "(") (binary_expression "uVar7 == 0" (identifier "uVar7") (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_00022534;" (goto "goto") (statement_identifier "LAB_00022534") (; ";"))) (labeled_statement "LAB_00022234:\n  puVar31 = (uint *)0x1;" (statement_identifier "LAB_00022234") (: ":") (expression_statement "puVar31 = (uint *)0x1;" (assignment_expression "puVar31 = (uint *)0x1" (identifier "puVar31") (= "=") (cast_expression "(uint *)0x1" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x1"))) (; ";"))) (expression_statement "iVar41 = *(int *)(puVar46 + -0x40);" (assignment_expression "iVar41 = *(int *)(puVar46 + -0x40)" (identifier "iVar41") (= "=") (pointer_expression "*(int *)(puVar46 + -0x40)" (* "*") (cast_expression "(int *)(puVar46 + -0x40)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar46 + -0x40)" (( "(") (binary_expression "puVar46 + -0x40" (identifier "puVar46") (+ "+") (number_literal "-0x40")) () ")"))))) (; ";")) (expression_statement "*(uint **)(puVar46 + -0x4c) = puVar8;" (assignment_expression "*(uint **)(puVar46 + -0x4c) = puVar8" (pointer_expression "*(uint **)(puVar46 + -0x4c)" (* "*") (cast_expression "(uint **)(puVar46 + -0x4c)" (( "(") (type_descriptor "uint **" (type_identifier "uint") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar46 + -0x4c)" (( "(") (binary_expression "puVar46 + -0x4c" (identifier "puVar46") (+ "+") (number_literal "-0x4c")) () ")")))) (= "=") (identifier "puVar8")) (; ";")) (expression_statement "*(uint **)(puVar46 + -0x50) = puVar38;" (assignment_expression "*(uint **)(puVar46 + -0x50) = puVar38" (pointer_expression "*(uint **)(puVar46 + -0x50)" (* "*") (cast_expression "(uint **)(puVar46 + -0x50)" (( "(") (type_descriptor "uint **" (type_identifier "uint") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar46 + -0x50)" (( "(") (binary_expression "puVar46 + -0x50" (identifier "puVar46") (+ "+") (number_literal "-0x50")) () ")")))) (= "=") (identifier "puVar38")) (; ";")) (do_statement "do {\n    iVar39 = iVar6 + uVar7;\n    uVar18 = (**(code **)(*(int *)(puVar46 + -0x34) + (uVar7 - 1) * 4))(iVar6);\n    if ((uVar18 & 0xff) == 0) {\n      uVar37 = uVar18 >> 8;\n      iVar6 = 6;\n      if ((uVar37 & 0xff) == 0) {\n        uVar37 = uVar18 >> 0x10;\n        iVar6 = 0xe;\n        if ((uVar37 & 0xff) == 0) {\n          uVar37 = uVar18 >> 0x18;\n          iVar6 = 0x1e;\n          if (uVar37 != 0) {\n            iVar6 = 0x16;\n          }\n        }\n      }\n      uVar37 = (uint)*(byte *)(*(int *)(puVar46 + -0x3c) + (-uVar37 & uVar37)) + iVar6;\n    }\n    else {\n      uVar37 = *(byte *)(*(int *)(puVar46 + -0x3c) + (-uVar18 & uVar18)) - 2;\n    }\n    iVar41 = iVar41 + *(byte *)(*(int *)(puVar46 + -0x38) + (uVar7 - 1)) + uVar37;\n    uVar18 = (**(code **)(*(int *)(puVar46 + -0x78) + -0x7f9c))\n                       (puVar36,puVar36,puVar31,uVar18 >> (uVar37 & 0x1f));\n    puVar43 = *(undefined **)(puVar46 + -0x78);\n    if ((uint)(iVar24 - iVar39) <= uVar7) {\n      uVar7 = iVar24 - iVar39;\n    }\n    puVar8 = puVar36 + (int)puVar31;\n    puVar31 = (uint *)((int)puVar31 + (uint)(uVar18 != 0));\n    *puVar8 = uVar18;\n    if (uVar7 == 0) {\n      puVar38 = *(uint **)(puVar46 + -0x50);\n      puVar8 = *(uint **)(puVar46 + -0x4c);\n      *(int *)(puVar46 + -0x40) = iVar41;\n      *(uint **)(puVar46 + -0x4c) = puVar36 + (int)((int)puVar31 + *(int *)(puVar46 + -0x5c));\n      goto LAB_00022340;\n    }\n    iVar6 = iVar39;\n  } while (puVar31 != (uint *)0x14);" (do "do") (compound_statement "{\n    iVar39 = iVar6 + uVar7;\n    uVar18 = (**(code **)(*(int *)(puVar46 + -0x34) + (uVar7 - 1) * 4))(iVar6);\n    if ((uVar18 & 0xff) == 0) {\n      uVar37 = uVar18 >> 8;\n      iVar6 = 6;\n      if ((uVar37 & 0xff) == 0) {\n        uVar37 = uVar18 >> 0x10;\n        iVar6 = 0xe;\n        if ((uVar37 & 0xff) == 0) {\n          uVar37 = uVar18 >> 0x18;\n          iVar6 = 0x1e;\n          if (uVar37 != 0) {\n            iVar6 = 0x16;\n          }\n        }\n      }\n      uVar37 = (uint)*(byte *)(*(int *)(puVar46 + -0x3c) + (-uVar37 & uVar37)) + iVar6;\n    }\n    else {\n      uVar37 = *(byte *)(*(int *)(puVar46 + -0x3c) + (-uVar18 & uVar18)) - 2;\n    }\n    iVar41 = iVar41 + *(byte *)(*(int *)(puVar46 + -0x38) + (uVar7 - 1)) + uVar37;\n    uVar18 = (**(code **)(*(int *)(puVar46 + -0x78) + -0x7f9c))\n                       (puVar36,puVar36,puVar31,uVar18 >> (uVar37 & 0x1f));\n    puVar43 = *(undefined **)(puVar46 + -0x78);\n    if ((uint)(iVar24 - iVar39) <= uVar7) {\n      uVar7 = iVar24 - iVar39;\n    }\n    puVar8 = puVar36 + (int)puVar31;\n    puVar31 = (uint *)((int)puVar31 + (uint)(uVar18 != 0));\n    *puVar8 = uVar18;\n    if (uVar7 == 0) {\n      puVar38 = *(uint **)(puVar46 + -0x50);\n      puVar8 = *(uint **)(puVar46 + -0x4c);\n      *(int *)(puVar46 + -0x40) = iVar41;\n      *(uint **)(puVar46 + -0x4c) = puVar36 + (int)((int)puVar31 + *(int *)(puVar46 + -0x5c));\n      goto LAB_00022340;\n    }\n    iVar6 = iVar39;\n  }" ({ "{") (expression_statement "iVar39 = iVar6 + uVar7;" (assignment_expression "iVar39 = iVar6 + uVar7" (identifier "iVar39") (= "=") (binary_expression "iVar6 + uVar7" (identifier "iVar6") (+ "+") (identifier "uVar7"))) (; ";")) (expression_statement "uVar18 = (**(code **)(*(int *)(puVar46 + -0x34) + (uVar7 - 1) * 4))(iVar6);" (assignment_expression "uVar18 = (**(code **)(*(int *)(puVar46 + -0x34) + (uVar7 - 1) * 4))(iVar6)" (identifier "uVar18") (= "=") (call_expression "(**(code **)(*(int *)(puVar46 + -0x34) + (uVar7 - 1) * 4))(iVar6)" (parenthesized_expression "(**(code **)(*(int *)(puVar46 + -0x34) + (uVar7 - 1) * 4))" (( "(") (pointer_expression "**(code **)(*(int *)(puVar46 + -0x34) + (uVar7 - 1) * 4)" (* "*") (pointer_expression "*(code **)(*(int *)(puVar46 + -0x34) + (uVar7 - 1) * 4)" (* "*") (cast_expression "(code **)(*(int *)(puVar46 + -0x34) + (uVar7 - 1) * 4)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*(int *)(puVar46 + -0x34) + (uVar7 - 1) * 4)" (( "(") (binary_expression "*(int *)(puVar46 + -0x34) + (uVar7 - 1) * 4" (pointer_expression "*(int *)(puVar46 + -0x34)" (* "*") (cast_expression "(int *)(puVar46 + -0x34)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar46 + -0x34)" (( "(") (binary_expression "puVar46 + -0x34" (identifier "puVar46") (+ "+") (number_literal "-0x34")) () ")")))) (+ "+") (binary_expression "(uVar7 - 1) * 4" (parenthesized_expression "(uVar7 - 1)" (( "(") (binary_expression "uVar7 - 1" (identifier "uVar7") (- "-") (number_literal "1")) () ")")) (* "*") (number_literal "4"))) () ")"))))) () ")")) (argument_list "(iVar6)" (( "(") (identifier "iVar6") () ")")))) (; ";")) (if_statement "if ((uVar18 & 0xff) == 0) {\n      uVar37 = uVar18 >> 8;\n      iVar6 = 6;\n      if ((uVar37 & 0xff) == 0) {\n        uVar37 = uVar18 >> 0x10;\n        iVar6 = 0xe;\n        if ((uVar37 & 0xff) == 0) {\n          uVar37 = uVar18 >> 0x18;\n          iVar6 = 0x1e;\n          if (uVar37 != 0) {\n            iVar6 = 0x16;\n          }\n        }\n      }\n      uVar37 = (uint)*(byte *)(*(int *)(puVar46 + -0x3c) + (-uVar37 & uVar37)) + iVar6;\n    }\n    else {\n      uVar37 = *(byte *)(*(int *)(puVar46 + -0x3c) + (-uVar18 & uVar18)) - 2;\n    }" (if "if") (parenthesized_expression "((uVar18 & 0xff) == 0)" (( "(") (binary_expression "(uVar18 & 0xff) == 0" (parenthesized_expression "(uVar18 & 0xff)" (( "(") (binary_expression "uVar18 & 0xff" (identifier "uVar18") (& "&") (number_literal "0xff")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      uVar37 = uVar18 >> 8;\n      iVar6 = 6;\n      if ((uVar37 & 0xff) == 0) {\n        uVar37 = uVar18 >> 0x10;\n        iVar6 = 0xe;\n        if ((uVar37 & 0xff) == 0) {\n          uVar37 = uVar18 >> 0x18;\n          iVar6 = 0x1e;\n          if (uVar37 != 0) {\n            iVar6 = 0x16;\n          }\n        }\n      }\n      uVar37 = (uint)*(byte *)(*(int *)(puVar46 + -0x3c) + (-uVar37 & uVar37)) + iVar6;\n    }" ({ "{") (expression_statement "uVar37 = uVar18 >> 8;" (assignment_expression "uVar37 = uVar18 >> 8" (identifier "uVar37") (= "=") (binary_expression "uVar18 >> 8" (identifier "uVar18") (>> ">>") (number_literal "8"))) (; ";")) (expression_statement "iVar6 = 6;" (assignment_expression "iVar6 = 6" (identifier "iVar6") (= "=") (number_literal "6")) (; ";")) (if_statement "if ((uVar37 & 0xff) == 0) {\n        uVar37 = uVar18 >> 0x10;\n        iVar6 = 0xe;\n        if ((uVar37 & 0xff) == 0) {\n          uVar37 = uVar18 >> 0x18;\n          iVar6 = 0x1e;\n          if (uVar37 != 0) {\n            iVar6 = 0x16;\n          }\n        }\n      }" (if "if") (parenthesized_expression "((uVar37 & 0xff) == 0)" (( "(") (binary_expression "(uVar37 & 0xff) == 0" (parenthesized_expression "(uVar37 & 0xff)" (( "(") (binary_expression "uVar37 & 0xff" (identifier "uVar37") (& "&") (number_literal "0xff")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n        uVar37 = uVar18 >> 0x10;\n        iVar6 = 0xe;\n        if ((uVar37 & 0xff) == 0) {\n          uVar37 = uVar18 >> 0x18;\n          iVar6 = 0x1e;\n          if (uVar37 != 0) {\n            iVar6 = 0x16;\n          }\n        }\n      }" ({ "{") (expression_statement "uVar37 = uVar18 >> 0x10;" (assignment_expression "uVar37 = uVar18 >> 0x10" (identifier "uVar37") (= "=") (binary_expression "uVar18 >> 0x10" (identifier "uVar18") (>> ">>") (number_literal "0x10"))) (; ";")) (expression_statement "iVar6 = 0xe;" (assignment_expression "iVar6 = 0xe" (identifier "iVar6") (= "=") (number_literal "0xe")) (; ";")) (if_statement "if ((uVar37 & 0xff) == 0) {\n          uVar37 = uVar18 >> 0x18;\n          iVar6 = 0x1e;\n          if (uVar37 != 0) {\n            iVar6 = 0x16;\n          }\n        }" (if "if") (parenthesized_expression "((uVar37 & 0xff) == 0)" (( "(") (binary_expression "(uVar37 & 0xff) == 0" (parenthesized_expression "(uVar37 & 0xff)" (( "(") (binary_expression "uVar37 & 0xff" (identifier "uVar37") (& "&") (number_literal "0xff")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n          uVar37 = uVar18 >> 0x18;\n          iVar6 = 0x1e;\n          if (uVar37 != 0) {\n            iVar6 = 0x16;\n          }\n        }" ({ "{") (expression_statement "uVar37 = uVar18 >> 0x18;" (assignment_expression "uVar37 = uVar18 >> 0x18" (identifier "uVar37") (= "=") (binary_expression "uVar18 >> 0x18" (identifier "uVar18") (>> ">>") (number_literal "0x18"))) (; ";")) (expression_statement "iVar6 = 0x1e;" (assignment_expression "iVar6 = 0x1e" (identifier "iVar6") (= "=") (number_literal "0x1e")) (; ";")) (if_statement "if (uVar37 != 0) {\n            iVar6 = 0x16;\n          }" (if "if") (parenthesized_expression "(uVar37 != 0)" (( "(") (binary_expression "uVar37 != 0" (identifier "uVar37") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n            iVar6 = 0x16;\n          }" ({ "{") (expression_statement "iVar6 = 0x16;" (assignment_expression "iVar6 = 0x16" (identifier "iVar6") (= "=") (number_literal "0x16")) (; ";")) (} "}"))) (} "}"))) (} "}"))) (expression_statement "uVar37 = (uint)*(byte *)(*(int *)(puVar46 + -0x3c) + (-uVar37 & uVar37)) + iVar6;" (assignment_expression "uVar37 = (uint)*(byte *)(*(int *)(puVar46 + -0x3c) + (-uVar37 & uVar37)) + iVar6" (identifier "uVar37") (= "=") (binary_expression "(uint)*(byte *)(*(int *)(puVar46 + -0x3c) + (-uVar37 & uVar37)) + iVar6" (binary_expression "(uint)*(byte *)(*(int *)(puVar46 + -0x3c) + (-uVar37 & uVar37))" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (cast_expression "(byte *)(*(int *)(puVar46 + -0x3c) + (-uVar37 & uVar37))" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(puVar46 + -0x3c) + (-uVar37 & uVar37))" (( "(") (binary_expression "*(int *)(puVar46 + -0x3c) + (-uVar37 & uVar37)" (pointer_expression "*(int *)(puVar46 + -0x3c)" (* "*") (cast_expression "(int *)(puVar46 + -0x3c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar46 + -0x3c)" (( "(") (binary_expression "puVar46 + -0x3c" (identifier "puVar46") (+ "+") (number_literal "-0x3c")) () ")")))) (+ "+") (parenthesized_expression "(-uVar37 & uVar37)" (( "(") (binary_expression "-uVar37 & uVar37" (unary_expression "-uVar37" (- "-") (identifier "uVar37")) (& "&") (identifier "uVar37")) () ")"))) () ")")))) (+ "+") (identifier "iVar6"))) (; ";")) (} "}")) (else_clause "else {\n      uVar37 = *(byte *)(*(int *)(puVar46 + -0x3c) + (-uVar18 & uVar18)) - 2;\n    }" (else "else") (compound_statement "{\n      uVar37 = *(byte *)(*(int *)(puVar46 + -0x3c) + (-uVar18 & uVar18)) - 2;\n    }" ({ "{") (expression_statement "uVar37 = *(byte *)(*(int *)(puVar46 + -0x3c) + (-uVar18 & uVar18)) - 2;" (assignment_expression "uVar37 = *(byte *)(*(int *)(puVar46 + -0x3c) + (-uVar18 & uVar18)) - 2" (identifier "uVar37") (= "=") (binary_expression "*(byte *)(*(int *)(puVar46 + -0x3c) + (-uVar18 & uVar18)) - 2" (pointer_expression "*(byte *)(*(int *)(puVar46 + -0x3c) + (-uVar18 & uVar18))" (* "*") (cast_expression "(byte *)(*(int *)(puVar46 + -0x3c) + (-uVar18 & uVar18))" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(puVar46 + -0x3c) + (-uVar18 & uVar18))" (( "(") (binary_expression "*(int *)(puVar46 + -0x3c) + (-uVar18 & uVar18)" (pointer_expression "*(int *)(puVar46 + -0x3c)" (* "*") (cast_expression "(int *)(puVar46 + -0x3c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar46 + -0x3c)" (( "(") (binary_expression "puVar46 + -0x3c" (identifier "puVar46") (+ "+") (number_literal "-0x3c")) () ")")))) (+ "+") (parenthesized_expression "(-uVar18 & uVar18)" (( "(") (binary_expression "-uVar18 & uVar18" (unary_expression "-uVar18" (- "-") (identifier "uVar18")) (& "&") (identifier "uVar18")) () ")"))) () ")")))) (- "-") (number_literal "2"))) (; ";")) (} "}")))) (expression_statement "iVar41 = iVar41 + *(byte *)(*(int *)(puVar46 + -0x38) + (uVar7 - 1)) + uVar37;" (assignment_expression "iVar41 = iVar41 + *(byte *)(*(int *)(puVar46 + -0x38) + (uVar7 - 1)) + uVar37" (identifier "iVar41") (= "=") (binary_expression "iVar41 + *(byte *)(*(int *)(puVar46 + -0x38) + (uVar7 - 1)) + uVar37" (binary_expression "iVar41 + *(byte *)(*(int *)(puVar46 + -0x38) + (uVar7 - 1))" (identifier "iVar41") (+ "+") (pointer_expression "*(byte *)(*(int *)(puVar46 + -0x38) + (uVar7 - 1))" (* "*") (cast_expression "(byte *)(*(int *)(puVar46 + -0x38) + (uVar7 - 1))" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(puVar46 + -0x38) + (uVar7 - 1))" (( "(") (binary_expression "*(int *)(puVar46 + -0x38) + (uVar7 - 1)" (pointer_expression "*(int *)(puVar46 + -0x38)" (* "*") (cast_expression "(int *)(puVar46 + -0x38)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar46 + -0x38)" (( "(") (binary_expression "puVar46 + -0x38" (identifier "puVar46") (+ "+") (number_literal "-0x38")) () ")")))) (+ "+") (parenthesized_expression "(uVar7 - 1)" (( "(") (binary_expression "uVar7 - 1" (identifier "uVar7") (- "-") (number_literal "1")) () ")"))) () ")"))))) (+ "+") (identifier "uVar37"))) (; ";")) (expression_statement "uVar18 = (**(code **)(*(int *)(puVar46 + -0x78) + -0x7f9c))\n                       (puVar36,puVar36,puVar31,uVar18 >> (uVar37 & 0x1f));" (assignment_expression "uVar18 = (**(code **)(*(int *)(puVar46 + -0x78) + -0x7f9c))\n                       (puVar36,puVar36,puVar31,uVar18 >> (uVar37 & 0x1f))" (identifier "uVar18") (= "=") (call_expression "(**(code **)(*(int *)(puVar46 + -0x78) + -0x7f9c))\n                       (puVar36,puVar36,puVar31,uVar18 >> (uVar37 & 0x1f))" (parenthesized_expression "(**(code **)(*(int *)(puVar46 + -0x78) + -0x7f9c))" (( "(") (pointer_expression "**(code **)(*(int *)(puVar46 + -0x78) + -0x7f9c)" (* "*") (pointer_expression "*(code **)(*(int *)(puVar46 + -0x78) + -0x7f9c)" (* "*") (cast_expression "(code **)(*(int *)(puVar46 + -0x78) + -0x7f9c)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*(int *)(puVar46 + -0x78) + -0x7f9c)" (( "(") (binary_expression "*(int *)(puVar46 + -0x78) + -0x7f9c" (pointer_expression "*(int *)(puVar46 + -0x78)" (* "*") (cast_expression "(int *)(puVar46 + -0x78)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar46 + -0x78)" (( "(") (binary_expression "puVar46 + -0x78" (identifier "puVar46") (+ "+") (number_literal "-0x78")) () ")")))) (+ "+") (number_literal "-0x7f9c")) () ")"))))) () ")")) (argument_list "(puVar36,puVar36,puVar31,uVar18 >> (uVar37 & 0x1f))" (( "(") (identifier "puVar36") (, ",") (identifier "puVar36") (, ",") (identifier "puVar31") (, ",") (binary_expression "uVar18 >> (uVar37 & 0x1f)" (identifier "uVar18") (>> ">>") (parenthesized_expression "(uVar37 & 0x1f)" (( "(") (binary_expression "uVar37 & 0x1f" (identifier "uVar37") (& "&") (number_literal "0x1f")) () ")"))) () ")")))) (; ";")) (expression_statement "puVar43 = *(undefined **)(puVar46 + -0x78);" (assignment_expression "puVar43 = *(undefined **)(puVar46 + -0x78)" (identifier "puVar43") (= "=") (pointer_expression "*(undefined **)(puVar46 + -0x78)" (* "*") (cast_expression "(undefined **)(puVar46 + -0x78)" (( "(") (type_descriptor "undefined **" (type_identifier "undefined") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar46 + -0x78)" (( "(") (binary_expression "puVar46 + -0x78" (identifier "puVar46") (+ "+") (number_literal "-0x78")) () ")"))))) (; ";")) (if_statement "if ((uint)(iVar24 - iVar39) <= uVar7) {\n      uVar7 = iVar24 - iVar39;\n    }" (if "if") (parenthesized_expression "((uint)(iVar24 - iVar39) <= uVar7)" (( "(") (binary_expression "(uint)(iVar24 - iVar39) <= uVar7" (call_expression "(uint)(iVar24 - iVar39)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(iVar24 - iVar39)" (( "(") (binary_expression "iVar24 - iVar39" (identifier "iVar24") (- "-") (identifier "iVar39")) () ")"))) (<= "<=") (identifier "uVar7")) () ")")) (compound_statement "{\n      uVar7 = iVar24 - iVar39;\n    }" ({ "{") (expression_statement "uVar7 = iVar24 - iVar39;" (assignment_expression "uVar7 = iVar24 - iVar39" (identifier "uVar7") (= "=") (binary_expression "iVar24 - iVar39" (identifier "iVar24") (- "-") (identifier "iVar39"))) (; ";")) (} "}"))) (expression_statement "puVar8 = puVar36 + (int)puVar31;" (assignment_expression "puVar8 = puVar36 + (int)puVar31" (identifier "puVar8") (= "=") (binary_expression "puVar36 + (int)puVar31" (identifier "puVar36") (+ "+") (cast_expression "(int)puVar31" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar31")))) (; ";")) (expression_statement "puVar31 = (uint *)((int)puVar31 + (uint)(uVar18 != 0));" (assignment_expression "puVar31 = (uint *)((int)puVar31 + (uint)(uVar18 != 0))" (identifier "puVar31") (= "=") (cast_expression "(uint *)((int)puVar31 + (uint)(uVar18 != 0))" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar31 + (uint)(uVar18 != 0))" (( "(") (binary_expression "(int)puVar31 + (uint)(uVar18 != 0)" (cast_expression "(int)puVar31" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar31")) (+ "+") (call_expression "(uint)(uVar18 != 0)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(uVar18 != 0)" (( "(") (binary_expression "uVar18 != 0" (identifier "uVar18") (!= "!=") (number_literal "0")) () ")")))) () ")")))) (; ";")) (expression_statement "*puVar8 = uVar18;" (assignment_expression "*puVar8 = uVar18" (pointer_expression "*puVar8" (* "*") (identifier "puVar8")) (= "=") (identifier "uVar18")) (; ";")) (if_statement "if (uVar7 == 0) {\n      puVar38 = *(uint **)(puVar46 + -0x50);\n      puVar8 = *(uint **)(puVar46 + -0x4c);\n      *(int *)(puVar46 + -0x40) = iVar41;\n      *(uint **)(puVar46 + -0x4c) = puVar36 + (int)((int)puVar31 + *(int *)(puVar46 + -0x5c));\n      goto LAB_00022340;\n    }" (if "if") (parenthesized_expression "(uVar7 == 0)" (( "(") (binary_expression "uVar7 == 0" (identifier "uVar7") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      puVar38 = *(uint **)(puVar46 + -0x50);\n      puVar8 = *(uint **)(puVar46 + -0x4c);\n      *(int *)(puVar46 + -0x40) = iVar41;\n      *(uint **)(puVar46 + -0x4c) = puVar36 + (int)((int)puVar31 + *(int *)(puVar46 + -0x5c));\n      goto LAB_00022340;\n    }" ({ "{") (expression_statement "puVar38 = *(uint **)(puVar46 + -0x50);" (assignment_expression "puVar38 = *(uint **)(puVar46 + -0x50)" (identifier "puVar38") (= "=") (pointer_expression "*(uint **)(puVar46 + -0x50)" (* "*") (cast_expression "(uint **)(puVar46 + -0x50)" (( "(") (type_descriptor "uint **" (type_identifier "uint") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar46 + -0x50)" (( "(") (binary_expression "puVar46 + -0x50" (identifier "puVar46") (+ "+") (number_literal "-0x50")) () ")"))))) (; ";")) (expression_statement "puVar8 = *(uint **)(puVar46 + -0x4c);" (assignment_expression "puVar8 = *(uint **)(puVar46 + -0x4c)" (identifier "puVar8") (= "=") (pointer_expression "*(uint **)(puVar46 + -0x4c)" (* "*") (cast_expression "(uint **)(puVar46 + -0x4c)" (( "(") (type_descriptor "uint **" (type_identifier "uint") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar46 + -0x4c)" (( "(") (binary_expression "puVar46 + -0x4c" (identifier "puVar46") (+ "+") (number_literal "-0x4c")) () ")"))))) (; ";")) (expression_statement "*(int *)(puVar46 + -0x40) = iVar41;" (assignment_expression "*(int *)(puVar46 + -0x40) = iVar41" (pointer_expression "*(int *)(puVar46 + -0x40)" (* "*") (cast_expression "(int *)(puVar46 + -0x40)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar46 + -0x40)" (( "(") (binary_expression "puVar46 + -0x40" (identifier "puVar46") (+ "+") (number_literal "-0x40")) () ")")))) (= "=") (identifier "iVar41")) (; ";")) (expression_statement "*(uint **)(puVar46 + -0x4c) = puVar36 + (int)((int)puVar31 + *(int *)(puVar46 + -0x5c));" (assignment_expression "*(uint **)(puVar46 + -0x4c) = puVar36 + (int)((int)puVar31 + *(int *)(puVar46 + -0x5c))" (pointer_expression "*(uint **)(puVar46 + -0x4c)" (* "*") (cast_expression "(uint **)(puVar46 + -0x4c)" (( "(") (type_descriptor "uint **" (type_identifier "uint") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar46 + -0x4c)" (( "(") (binary_expression "puVar46 + -0x4c" (identifier "puVar46") (+ "+") (number_literal "-0x4c")) () ")")))) (= "=") (binary_expression "puVar36 + (int)((int)puVar31 + *(int *)(puVar46 + -0x5c))" (identifier "puVar36") (+ "+") (cast_expression "(int)((int)puVar31 + *(int *)(puVar46 + -0x5c))" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "((int)puVar31 + *(int *)(puVar46 + -0x5c))" (( "(") (binary_expression "(int)puVar31 + *(int *)(puVar46 + -0x5c)" (cast_expression "(int)puVar31" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar31")) (+ "+") (pointer_expression "*(int *)(puVar46 + -0x5c)" (* "*") (cast_expression "(int *)(puVar46 + -0x5c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar46 + -0x5c)" (( "(") (binary_expression "puVar46 + -0x5c" (identifier "puVar46") (+ "+") (number_literal "-0x5c")) () ")"))))) () ")"))))) (; ";")) (goto_statement "goto LAB_00022340;" (goto "goto") (statement_identifier "LAB_00022340") (; ";")) (} "}"))) (expression_statement "iVar6 = iVar39;" (assignment_expression "iVar6 = iVar39" (identifier "iVar6") (= "=") (identifier "iVar39")) (; ";")) (} "}")) (while "while") (parenthesized_expression "(puVar31 != (uint *)0x14)" (( "(") (binary_expression "puVar31 != (uint *)0x14" (identifier "puVar31") (!= "!=") (cast_expression "(uint *)0x14" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x14"))) () ")")) (; ";")) (expression_statement "puVar8 = *(uint **)(puVar46 + -0x4c);" (assignment_expression "puVar8 = *(uint **)(puVar46 + -0x4c)" (identifier "puVar8") (= "=") (pointer_expression "*(uint **)(puVar46 + -0x4c)" (* "*") (cast_expression "(uint **)(puVar46 + -0x4c)" (( "(") (type_descriptor "uint **" (type_identifier "uint") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar46 + -0x4c)" (( "(") (binary_expression "puVar46 + -0x4c" (identifier "puVar46") (+ "+") (number_literal "-0x4c")) () ")"))))) (; ";")) (expression_statement "puVar38 = *(uint **)(puVar46 + -0x50);" (assignment_expression "puVar38 = *(uint **)(puVar46 + -0x50)" (identifier "puVar38") (= "=") (pointer_expression "*(uint **)(puVar46 + -0x50)" (* "*") (cast_expression "(uint **)(puVar46 + -0x50)" (( "(") (type_descriptor "uint **" (type_identifier "uint") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar46 + -0x50)" (( "(") (binary_expression "puVar46 + -0x50" (identifier "puVar46") (+ "+") (number_literal "-0x50")) () ")"))))) (; ";")) (expression_statement "*(int *)(puVar46 + -0x40) = iVar41;" (assignment_expression "*(int *)(puVar46 + -0x40) = iVar41" (pointer_expression "*(int *)(puVar46 + -0x40)" (* "*") (cast_expression "(int *)(puVar46 + -0x40)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar46 + -0x40)" (( "(") (binary_expression "puVar46 + -0x40" (identifier "puVar46") (+ "+") (number_literal "-0x40")) () ")")))) (= "=") (identifier "iVar41")) (; ";")) (expression_statement "*(uint **)(puVar46 + -0x4c) = puVar36 + 0x13;" (assignment_expression "*(uint **)(puVar46 + -0x4c) = puVar36 + 0x13" (pointer_expression "*(uint **)(puVar46 + -0x4c)" (* "*") (cast_expression "(uint **)(puVar46 + -0x4c)" (( "(") (type_descriptor "uint **" (type_identifier "uint") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar46 + -0x4c)" (( "(") (binary_expression "puVar46 + -0x4c" (identifier "puVar46") (+ "+") (number_literal "-0x4c")) () ")")))) (= "=") (binary_expression "puVar36 + 0x13" (identifier "puVar36") (+ "+") (number_literal "0x13"))) (; ";")) (labeled_statement "LAB_00022340:\n  do {\n    iVar41 = iVar39 - *(int *)(puVar46 + -0x44);\n    iVar24 = *(int *)(puVar46 + -0x5c);\n    iVar6 = iVar41;\n    if (iVar41 != 0) {\n      *(uint *)(puVar46 + -0x44) = uVar7;\n      *(uint **)(puVar46 + -0x50) = puVar31;\n      *(uint **)(puVar46 + -0x54) = puVar36;\n      *(int *)(puVar46 + -0x58) = iVar39;\n      iVar6 = *(int *)(puVar46 + -0x48);\n      iVar39 = *(int *)(puVar46 + -0x68);\n      iVar24 = iVar29;\n      do {\n        iVar33 = iVar41;\n        if (iVar39 <= iVar41) {\n          iVar33 = iVar39;\n        }\n        iVar29 = iVar24 + iVar33;\n        uVar18 = (**(code **)(*(int *)(puVar46 + -0x34) + (iVar33 + -1) * 4))(iVar24);\n        if ((uVar18 & 0xff) == 0) {\n          uVar37 = uVar18 >> 8;\n          iVar24 = 6;\n          if ((uVar37 & 0xff) == 0) {\n            uVar37 = uVar18 >> 0x10;\n            iVar24 = 0xe;\n            if ((uVar37 & 0xff) == 0) {\n              uVar37 = uVar18 >> 0x18;\n              iVar24 = 0x16;\n              if (uVar37 == 0) {\n                iVar24 = 0x1e;\n              }\n            }\n          }\n          uVar37 = (uint)*(byte *)(*(int *)(puVar46 + -0x3c) + (-uVar37 & uVar37)) + iVar24;\n        }\n        else {\n          uVar37 = *(byte *)(*(int *)(puVar46 + -0x3c) + (-uVar18 & uVar18)) - 2;\n        }\n        iVar41 = iVar41 - iVar33;\n        iVar6 = iVar6 + *(byte *)(*(int *)(puVar46 + -0x38) + iVar33 + -1) + uVar37;\n        uVar18 = (**(code **)(*(int *)(puVar46 + -0x78) + -0x7f9c))\n                           (puVar38,puVar38,puVar8,uVar18 >> (uVar37 & 0x1f));\n        puVar43 = *(undefined **)(puVar46 + -0x78);\n        puVar31 = puVar38 + (int)puVar8;\n        puVar8 = (uint *)((int)puVar8 + (uint)(uVar18 != 0));\n        *puVar31 = uVar18;\n        iVar24 = iVar29;\n      } while (iVar41 != 0);\n      uVar7 = *(uint *)(puVar46 + -0x44);\n      puVar31 = *(uint **)(puVar46 + -0x50);\n      puVar36 = *(uint **)(puVar46 + -0x54);\n      iVar39 = *(int *)(puVar46 + -0x58);\n      *(int *)(puVar46 + -0x48) = iVar6;\n      iVar24 = *(int *)(puVar46 + -0x5c);\n    }\n    uVar37 = *puVar36;\n    pcVar51 = *(code **)(puVar43 + -0x7bc0);\n    uVar18 = (uint)*(byte *)(*(int *)(puVar46 + -100) + ((uVar37 << 0x18) >> 0x19));\n    puVar8 = (uint *)((int)puVar8 +\n                     ((puVar38[(int)((int)puVar8 + iVar24)] < **(uint **)(puVar46 + -0x4c) ^ 1) -\n                     (int)puVar31));\n    iVar24 = uVar18 * 2 - uVar18 * uVar18 * uVar37;\n    if ((int)puVar8 < (int)puVar31) {\n      puVar31 = puVar8;\n    }\n    *(uint **)(puVar47 + -0x48) = puVar31;\n    *(uint *)(puVar47 + -0x44) = iVar24 * iVar24 * uVar37 + iVar24 * -2;\n    puVar9 = puVar38;\n    puVar22 = puVar8;\n    (*pcVar51)(puVar38,puVar38,puVar8,puVar36);\n    iVar24 = *(int *)(puVar46 + -0x78);\n    if (uVar7 == 0) {\n      if (*(int *)(puVar46 + -0x48) == *(int *)(puVar46 + -0x40)) {\n        puVar8 = (uint *)((int)puVar8 - (uint)(puVar38[(int)((int)puVar8 + -1)] == 0));\n        pcVar51 = *(code **)(iVar24 + -0x7a80);\n        if ((int)puVar8 <= **(int **)(puVar46 + -0x6c)) goto LAB_00022600;\nLAB_00022734:\n        puVar9 = puVar8;\n        puVar19 = (undefined4 *)(*pcVar51)(*(undefined4 *)(puVar46 + -0x6c));\n        iVar24 = *(int *)(puVar46 + -0x78);\n      }\n      else {\n        puVar9 = puVar38;\n        puVar22 = puVar8;\n        uVar18 = (**(code **)(iVar24 + -0x7ad4))(puVar38);\n        iVar24 = *(int *)(puVar46 + -0x78);\n        puVar38[(int)puVar8] = uVar18;\n        puVar8 = (uint *)((int)puVar8 +\n                         ((uint)(uVar18 != 0) -\n                         (uint)(puVar38[(int)((int)puVar8 + ((uVar18 != 0) - 1))] == 0)));\n        pcVar51 = *(code **)(iVar24 + -0x7a80);\n        if (**(int **)(puVar46 + -0x6c) < (int)puVar8) goto LAB_00022734;\nLAB_00022600:\n        puVar19 = *(undefined4 **)(*(int *)(puVar46 + -0x6c) + 8);\n      }\n      *(uint **)(*(int *)(puVar46 + -0x6c) + 4) = puVar8;\n      if (puVar8 != (uint *)0x0) {\n        puVar13 = (undefined1 *)((int)puVar8 + -1);\n        puVar9 = (uint *)*puVar38;\n        if (puVar13 != (undefined1 *)0x0) {\n          puVar15 = puVar19;\n          puVar16 = puVar38 + 1;\n          do {\n            *puVar15 = puVar9;\n            puVar38 = puVar16 + 1;\n            puVar13 = puVar13 + -1;\n            puVar9 = (uint *)*puVar16;\n            puVar15 = puVar15 + 1;\n            puVar16 = puVar38;\n          } while (puVar13 != (undefined1 *)0x0);\n          puVar8 = (uint *)((int)puVar8 * 4);\n          puVar19 = (undefined4 *)((int)puVar19 + (int)(puVar8 + -1));\n        }\n        *puVar19 = puVar9;\n      }\n      puVar16 = *(uint **)(puVar46 + -0x30);\n      if (puVar16 != (uint *)0x0) {\n        (**(code **)(iVar24 + -0x7a28))();\n        iVar24 = *(int *)(puVar46 + -0x78);\n      }\n      if (*(int *)(puVar46 + -0x2c) == **(int **)(puVar46 + -0x70)) {\n        return **(int **)(puVar46 + -0x70);\n      }\n      pcVar51 = *(code **)(iVar24 + -0x7b70);\n      pcVar52 = __gmpz_bin_uiui;\n      (*pcVar51)();\n      pcVar44 = pcVar51 + 0x8289c;\n      *(uint **)(puVar47 + -0x78) = puVar31;\n      piVar32 = *(int **)(pcVar51 + 0x7ad9c);\n      *(code **)(puVar47 + -0xf0) = pcVar44;\n      *(int *)(puVar47 + -0x74) = iVar39;\n      *(code **)(puVar47 + -0x5c) = pcVar52;\n      *(undefined1 **)(puVar47 + -0x60) = puVar46 + -0x90;\n      *(int *)(puVar47 + -100) = iVar6;\n      *(int *)(puVar47 + -0x68) = iVar29;\n      *(uint **)(puVar47 + -0x6c) = puVar38;\n      *(uint **)(puVar47 + -0x70) = puVar36;\n      *(uint **)(puVar47 + -0x7c) = puVar8;\n      *(undefined4 *)(puVar47 + -0x80) = 0;\n      *(int *)(puVar47 + -0x84) = *piVar32;\n      puVar31 = puVar16;\n      puVar20 = puVar9;\n      if (puVar9 < puVar22) {\n        puVar16[1] = 0;\n        puVar30 = (uint *)0x0;\n      }\n      else {\n        puVar30 = puVar22;\n        if ((uint *)((int)puVar9 - (int)puVar22) <= puVar22) {\n          puVar30 = (uint *)((int)puVar9 - (int)puVar22);\n        }\n        puVar22 = puVar30;\n        puVar36 = puVar9;\n        if (puVar30 < (uint *)0x2) {\n          if (puVar30 == (uint *)0x0) {\n            puVar36 = (uint *)0x1;\n          }\n          *(uint **)puVar16[2] = puVar36;\n          puVar16[1] = 1;\n          puVar49 = puVar46 + -0x90;\n        }\n        else if (puVar9 < (uint *)0x23) {\n          puVar13 = (undefined1 *)((int)puVar30 + -2);\n          iVar6 = *(int *)(pcVar51 + 0x7aa7c);\n          puVar20 = (uint *)puVar16[2];\n          uVar18 = (int)puVar9 - (int)puVar30;\n          puVar36 = (uint *)(iVar6 + ((uint)puVar9 >> 1));\n          puVar30 = (uint *)(iVar6 + ((uint)puVar30 >> 1));\n          bVar2 = *(byte *)((int)puVar30 + -1);\n          puVar31 = (uint *)(uint)*(byte *)(iVar6 + (uVar18 >> 1) + -1);\n          *puVar20 = *(int *)((int)puVar13 * 4 + *(int *)(pcVar51 + 0x7a8c8) + 0x35b4) *\n                     *(int *)(*(int *)(pcVar51 + 0x7ad64) + (int)puVar9 * 4) *\n                     *(int *)((uVar18 - 2) * 4 + *(int *)(pcVar51 + 0x7a8c8) + 0x35b4) <<\n                     (((uint)*(byte *)((int)puVar36 + -1) - (int)(uint)bVar2) - (int)puVar31 & 0x1f)\n          ;\n          puVar16[1] = 1;\n          puVar22 = (uint *)(uint)bVar2;\n          puVar49 = puVar46 + -0x90;\n        }\n        else if (puVar30 < &DAT_00000011) {\n          FUN_000216e8();\n          pcVar44 = *(code **)(puVar47 + -0xf0);\n          puVar49 = puVar46 + -0x90;\n        }\n        else if (puVar30 < &DAT_00000021) {\n          uVar18 = (uint)puVar30 >> 1;\n          uVar37 = (int)puVar9 - uVar18;\n          FUN_000216e8();\n          iVar6 = *(int *)(puVar47 + -0xf0);\n          uVar7 = (int)puVar30 - uVar18;\n          if (uVar37 < 0x23) {\n            puVar50 = (undefined1 *)puVar16[1];\n            if ((int)puVar50 < (int)*puVar16) {\n              puVar8 = (uint *)puVar16[2];\n            }\n            else {\n              puVar8 = (uint *)(**(code **)(iVar6 + -0x7a80))(puVar16,puVar50 + 1);\n              iVar6 = *(int *)(puVar47 + -0xf0);\n            }\n            iVar29 = *(int *)(iVar6 + -0x7e20);\n            iVar24 = *(int *)(iVar6 + -0x7fd4) + 0x35b4;\n            uVar37 = (**(code **)(iVar6 + -0x7f9c))\n                               (puVar8,puVar8,puVar50,\n                                *(int *)((((int)puVar9 - (int)puVar30) - 2U) * 4 + iVar24) *\n                                *(int *)(*(int *)(iVar6 + -0x7b38) + uVar37 * 4) *\n                                *(int *)((uVar7 - 2) * 4 + iVar24) <<\n                                (((uint)*(byte *)(iVar29 + (uVar37 >> 1) + -1) -\n                                 (uint)*(byte *)(iVar29 + (uVar7 >> 1) + -1)) -\n                                 (uint)*(byte *)(iVar29 + ((uint)((int)puVar9 - (int)puVar30) >> 1)\n                                                + -1) & 0x1f));\n            iVar6 = *(int *)(puVar47 + -0xf0);\n            puVar30 = (uint *)(puVar50 + (uVar37 != 0));\n            puVar8[(int)puVar50] = uVar37;\n          }\n          else {\n            *(undefined4 *)(puVar47 + -0xe4) = 0x15;\n            *(undefined1 **)(puVar47 + -0xdc) = puVar47 + -0xd8;\n            FUN_000216e8(puVar47 + -0xe4,uVar37,uVar7);\n            (**(code **)(*(int *)(puVar47 + -0xf0) + -0x7ba8))(puVar16,puVar16,puVar47 + -0xe4);\n            iVar6 = *(int *)(puVar47 + -0xf0);\n            puVar8 = (uint *)puVar16[2];\n            puVar30 = (uint *)puVar16[1];\n          }\n          pcVar51 = *(code **)(iVar6 + -0x7bb4);\n          puVar38 = (uint *)((uint)*(byte *)((uVar7 - 8) + *(int *)(iVar6 + -0x7fd4) + 0x3550) -\n                            (uint)(uVar18 != uVar7));\n          *(undefined4 *)(puVar47 + -0xf8) =\n               *(undefined4 *)((uVar7 - 8) * 4 + *(int *)(iVar6 + -0x7fd4) + 0x355c);\n          *(uint **)(puVar47 + -0xf4) = puVar38;\n          puVar31 = puVar8;\n          puVar20 = puVar8;\n          puVar22 = puVar30;\n          (*pcVar51)();\n          pcVar44 = *(code **)(puVar47 + -0xf0);\n          if (puVar8[(int)((int)puVar30 + -1)] == 0) {\n            puVar9 = puVar8 + (int)puVar30;\n            do {\n              puVar1 = puVar9 + -2;\n              puVar30 = (uint *)((int)puVar30 + -1);\n              puVar9 = puVar9 + -1;\n            } while (*puVar1 == 0);\n          }\n          puVar16[1] = (uint)puVar30;\n          puVar49 = puVar50;\n        }\n        else if ((puVar30 < (uint *)0x3e8) || (puVar30 <= (uint *)((uint)puVar9 >> 4))) {\n          FUN_0002209c();\n          pcVar44 = *(code **)(puVar47 + -0xf0);\n          puVar49 = puVar46 + -0x90;\n        }\n        else {\n          FUN_000219dc();\n          pcVar44 = *(code **)(puVar47 + -0xf0);\n          puVar49 = puVar46 + -0x90;\n        }\n      }\n      if (*(int *)(puVar47 + -0x84) == *piVar32) {\n        return *piVar32;\n      }\n      pcVar51 = *(code **)(pcVar44 + -0x7b70);\n      uVar10 = 0x22b64;\n      (*pcVar51)();\n      pcVar44 = pcVar51 + 0x824d0;\n      puVar48 = puVar47 + -0x160;\n      *(uint **)(puVar47 + -0x118) = puVar16;\n      *(uint **)(puVar47 + -0x124) = puVar30;\n      piVar34 = *(int **)(pcVar51 + 0x7a9d0);\n      uVar18 = puVar22[1];\n      *(undefined1 **)(puVar47 + -0x110) = puVar49;\n      *(uint **)(puVar47 + -0x114) = puVar36;\n      *(int **)(puVar47 + -0x11c) = piVar32;\n      *(uint **)(puVar47 + -0x120) = puVar8;\n      *(undefined4 *)(puVar47 + -0x10c) = uVar10;\n      *(code **)(puVar47 + -0x150) = pcVar44;\n      *(undefined4 *)(puVar47 + -0x13c) = 0;\n      puVar8 = (uint *)puVar20[1];\n      *(int *)(puVar47 + -300) = *piVar34;\n      if ((int)uVar18 < 0) {\n        uVar37 = uVar18 * -4;\n        *(uint *)(puVar47 + -0x138) = -uVar18;\n        if (0x7f00 < uVar37) {\n          pcVar51 = *(code **)(pcVar51 + 0x7a780);\n          goto LAB_00022c88;\n        }\nLAB_00022be4:\n        iVar6 = -(uVar37 + 7 & 0xfffffff8);\n        puVar48 = puVar47 + iVar6 + -0x160;\n        puVar13 = puVar47 + iVar6 + -0x150;\n      }\n      else {\n        uVar37 = uVar18 * 4;\n        *(uint *)(puVar47 + -0x138) = uVar18;\n        pcVar51 = *(code **)(pcVar51 + 0x7a780);\n        if (uVar37 < 0x7f01) goto LAB_00022be4;\nLAB_00022c88:\n        *(uint **)(puVar47 + -0x144) = puVar22;\n        puVar13 = (undefined1 *)(*pcVar51)(puVar47 + -0x13c,uVar37);\n        pcVar44 = *(code **)(puVar47 + -0x150);\n        puVar22 = *(uint **)(puVar47 + -0x144);\n      }\n      pcVar51 = *(code **)(pcVar44 + -0x7a68);\n      puVar36 = (uint *)(puVar47 + -0x138);\n      *(undefined1 **)(puVar47 + -0x130) = puVar13;\n      puVar9 = puVar20;\n      (*pcVar51)(puVar31,puVar36,puVar20,puVar22);\n      iVar6 = *(int *)(puVar47 + -0x150);\n      if (((int)((uint)puVar8 ^ uVar18) < 0) || (*(int *)(puVar47 + -0x134) == 0)) {\n        piVar32 = *(int **)(puVar47 + -0x13c);\n        pcVar51 = *(code **)(iVar6 + -0x7a28);\n        if (piVar32 != (int *)0x0) goto LAB_00022cc0;\n      }\n      else {\n        puVar9 = (uint *)0x1;\n        puVar36 = puVar31;\n        (**(code **)(iVar6 + -0x7c9c))(puVar31);\n        piVar32 = *(int **)(puVar47 + -0x13c);\n        iVar6 = *(int *)(puVar47 + -0x150);\n        if (piVar32 != (int *)0x0) {\n          pcVar51 = *(code **)(iVar6 + -0x7a28);\nLAB_00022cc0:\n          (*pcVar51)();\n          iVar6 = *(int *)(puVar47 + -0x150);\n        }\n      }\n      if (*(int *)(puVar47 + -300) == *piVar34) {\n        return *piVar34;\n      }\n      pcVar51 = *(code **)(iVar6 + -0x7b70);\n      uVar10 = 0x22cdc;\n      (*pcVar51)();\n      pcVar44 = pcVar51 + 0x82360;\n      *(code **)(puVar48 + -0x28) = pcVar44;\n      *(undefined4 *)(puVar48 + -4) = uVar10;\n      *(uint **)(puVar48 + -8) = puVar38;\n      *(uint **)(puVar48 + -0xc) = puVar20;\n      *(int **)(puVar48 + -0x10) = piVar34;\n      *(uint **)(puVar48 + -0x14) = puVar31;\n      *(uint **)(puVar48 + -0x18) = puVar8;\n      *(uint *)(puVar48 + -0x1c) = (uint)puVar8 ^ uVar18;\n      if (puVar9 == (uint *)0x0) {\n        pcVar51 = *(code **)(pcVar51 + 0x7a900);\n        (*pcVar51)();\nLAB_00022e2c:\n        piVar32 = (int *)(*pcVar51)(piVar34,puVar31);\n        pcVar44 = *(code **)(puVar48 + -0x28);\n      }\n      else {\n        puVar8 = (uint *)puVar36[1];\n        if (puVar8 == (uint *)0x0) {\n          piVar32[1] = 0;\n          return 0;\n        }\n        puVar31 = puVar8;\n        if ((int)puVar8 < 0) {\n          puVar31 = (uint *)-(int)puVar8;\n        }\n        pcVar51 = *(code **)(pcVar51 + 0x7a8e0);\n        piVar34 = piVar32;\n        puVar20 = puVar9;\n        puVar38 = puVar36;\n        if (*piVar32 < (int)puVar31) goto LAB_00022e2c;\n        piVar32 = (int *)piVar32[2];\n      }\n      pcVar51 = *(code **)(pcVar44 + -0x7d98);\n      uVar18 = puVar38[2];\n      *(uint **)(puVar48 + -0x30) = puVar20;\n      iVar6 = (*pcVar51)(piVar32,0,uVar18,puVar31);\n      piVar17 = piVar32 + (int)puVar31 + -1;\n      if (iVar6 == 0) {\n        uVar18 = (uint)(*piVar17 == 0);\n        if (-1 < (int)puVar8) {\n          iVar24 = (int)puVar31 - uVar18;\n          goto LAB_00022d9c;\n        }\n      }\n      else {\n        if (-1 < (int)puVar8) {\n          do {\n            iVar24 = *piVar32;\n            *piVar32 = iVar24 + 1;\n            piVar32 = piVar32 + 1;\n          } while (iVar24 + 1 == 0);\n          iVar6 = (int)puVar20 - iVar6;\n          iVar24 = (int)puVar31 - (uint)(*piVar17 == 0);\n          goto LAB_00022d9c;\n        }\n        uVar18 = (uint)(*piVar17 == 0);\n      }\n      iVar24 = uVar18 - (int)puVar31;\nLAB_00022d9c:\n      piVar34[1] = iVar24;\n      return iVar6;\n    }\n    *(int *)(puVar46 + -0x44) = iVar39;\n    iVar6 = iVar39 + uVar7;\n    uVar18 = (**(code **)(*(int *)(puVar46 + -0x34) + (uVar7 - 1) * 4))(iVar39);\n    puVar43 = *(undefined **)(puVar46 + -0x78);\n    if ((uVar18 & 0xff) == 0) {\n      uVar37 = uVar18 >> 8;\n      iVar24 = 6;\n      if ((uVar37 & 0xff) == 0) {\n        uVar37 = uVar18 >> 0x10;\n        iVar24 = 0xe;\n        if ((uVar37 & 0xff) == 0) {\n          uVar37 = uVar18 >> 0x18;\n          iVar24 = 0x1e;\n          if (uVar37 != 0) {\n            iVar24 = 0x16;\n          }\n        }\n      }\n      uVar37 = (uint)*(byte *)(*(int *)(puVar46 + -0x3c) + (-uVar37 & uVar37)) + iVar24;\n    }\n    else {\n      uVar37 = *(byte *)(*(int *)(puVar46 + -0x3c) + (-uVar18 & uVar18)) - 2;\n    }\n    iVar39 = *(int *)(puVar46 + -0x38);\n    *puVar36 = uVar18 >> (uVar37 & 0x1f);\n    iVar24 = *(int *)(puVar46 + -0x60);\n    *(uint *)(puVar46 + -0x40) =\n         *(int *)(puVar46 + -0x40) + *(byte *)(iVar39 + (uVar7 - 1)) + uVar37;\n    if ((uint)(iVar24 - iVar6) <= uVar7) {\n      uVar7 = iVar24 - iVar6;\n    }\n    iVar39 = iVar6;\n    if (uVar7 != 0) goto LAB_00022234;\nLAB_00022534:\n    puVar31 = (uint *)0x1;\n    *(uint **)(puVar46 + -0x4c) = puVar36;\n  } while( true );" (statement_identifier "LAB_00022340") (: ":") (do_statement "do {\n    iVar41 = iVar39 - *(int *)(puVar46 + -0x44);\n    iVar24 = *(int *)(puVar46 + -0x5c);\n    iVar6 = iVar41;\n    if (iVar41 != 0) {\n      *(uint *)(puVar46 + -0x44) = uVar7;\n      *(uint **)(puVar46 + -0x50) = puVar31;\n      *(uint **)(puVar46 + -0x54) = puVar36;\n      *(int *)(puVar46 + -0x58) = iVar39;\n      iVar6 = *(int *)(puVar46 + -0x48);\n      iVar39 = *(int *)(puVar46 + -0x68);\n      iVar24 = iVar29;\n      do {\n        iVar33 = iVar41;\n        if (iVar39 <= iVar41) {\n          iVar33 = iVar39;\n        }\n        iVar29 = iVar24 + iVar33;\n        uVar18 = (**(code **)(*(int *)(puVar46 + -0x34) + (iVar33 + -1) * 4))(iVar24);\n        if ((uVar18 & 0xff) == 0) {\n          uVar37 = uVar18 >> 8;\n          iVar24 = 6;\n          if ((uVar37 & 0xff) == 0) {\n            uVar37 = uVar18 >> 0x10;\n            iVar24 = 0xe;\n            if ((uVar37 & 0xff) == 0) {\n              uVar37 = uVar18 >> 0x18;\n              iVar24 = 0x16;\n              if (uVar37 == 0) {\n                iVar24 = 0x1e;\n              }\n            }\n          }\n          uVar37 = (uint)*(byte *)(*(int *)(puVar46 + -0x3c) + (-uVar37 & uVar37)) + iVar24;\n        }\n        else {\n          uVar37 = *(byte *)(*(int *)(puVar46 + -0x3c) + (-uVar18 & uVar18)) - 2;\n        }\n        iVar41 = iVar41 - iVar33;\n        iVar6 = iVar6 + *(byte *)(*(int *)(puVar46 + -0x38) + iVar33 + -1) + uVar37;\n        uVar18 = (**(code **)(*(int *)(puVar46 + -0x78) + -0x7f9c))\n                           (puVar38,puVar38,puVar8,uVar18 >> (uVar37 & 0x1f));\n        puVar43 = *(undefined **)(puVar46 + -0x78);\n        puVar31 = puVar38 + (int)puVar8;\n        puVar8 = (uint *)((int)puVar8 + (uint)(uVar18 != 0));\n        *puVar31 = uVar18;\n        iVar24 = iVar29;\n      } while (iVar41 != 0);\n      uVar7 = *(uint *)(puVar46 + -0x44);\n      puVar31 = *(uint **)(puVar46 + -0x50);\n      puVar36 = *(uint **)(puVar46 + -0x54);\n      iVar39 = *(int *)(puVar46 + -0x58);\n      *(int *)(puVar46 + -0x48) = iVar6;\n      iVar24 = *(int *)(puVar46 + -0x5c);\n    }\n    uVar37 = *puVar36;\n    pcVar51 = *(code **)(puVar43 + -0x7bc0);\n    uVar18 = (uint)*(byte *)(*(int *)(puVar46 + -100) + ((uVar37 << 0x18) >> 0x19));\n    puVar8 = (uint *)((int)puVar8 +\n                     ((puVar38[(int)((int)puVar8 + iVar24)] < **(uint **)(puVar46 + -0x4c) ^ 1) -\n                     (int)puVar31));\n    iVar24 = uVar18 * 2 - uVar18 * uVar18 * uVar37;\n    if ((int)puVar8 < (int)puVar31) {\n      puVar31 = puVar8;\n    }\n    *(uint **)(puVar47 + -0x48) = puVar31;\n    *(uint *)(puVar47 + -0x44) = iVar24 * iVar24 * uVar37 + iVar24 * -2;\n    puVar9 = puVar38;\n    puVar22 = puVar8;\n    (*pcVar51)(puVar38,puVar38,puVar8,puVar36);\n    iVar24 = *(int *)(puVar46 + -0x78);\n    if (uVar7 == 0) {\n      if (*(int *)(puVar46 + -0x48) == *(int *)(puVar46 + -0x40)) {\n        puVar8 = (uint *)((int)puVar8 - (uint)(puVar38[(int)((int)puVar8 + -1)] == 0));\n        pcVar51 = *(code **)(iVar24 + -0x7a80);\n        if ((int)puVar8 <= **(int **)(puVar46 + -0x6c)) goto LAB_00022600;\nLAB_00022734:\n        puVar9 = puVar8;\n        puVar19 = (undefined4 *)(*pcVar51)(*(undefined4 *)(puVar46 + -0x6c));\n        iVar24 = *(int *)(puVar46 + -0x78);\n      }\n      else {\n        puVar9 = puVar38;\n        puVar22 = puVar8;\n        uVar18 = (**(code **)(iVar24 + -0x7ad4))(puVar38);\n        iVar24 = *(int *)(puVar46 + -0x78);\n        puVar38[(int)puVar8] = uVar18;\n        puVar8 = (uint *)((int)puVar8 +\n                         ((uint)(uVar18 != 0) -\n                         (uint)(puVar38[(int)((int)puVar8 + ((uVar18 != 0) - 1))] == 0)));\n        pcVar51 = *(code **)(iVar24 + -0x7a80);\n        if (**(int **)(puVar46 + -0x6c) < (int)puVar8) goto LAB_00022734;\nLAB_00022600:\n        puVar19 = *(undefined4 **)(*(int *)(puVar46 + -0x6c) + 8);\n      }\n      *(uint **)(*(int *)(puVar46 + -0x6c) + 4) = puVar8;\n      if (puVar8 != (uint *)0x0) {\n        puVar13 = (undefined1 *)((int)puVar8 + -1);\n        puVar9 = (uint *)*puVar38;\n        if (puVar13 != (undefined1 *)0x0) {\n          puVar15 = puVar19;\n          puVar16 = puVar38 + 1;\n          do {\n            *puVar15 = puVar9;\n            puVar38 = puVar16 + 1;\n            puVar13 = puVar13 + -1;\n            puVar9 = (uint *)*puVar16;\n            puVar15 = puVar15 + 1;\n            puVar16 = puVar38;\n          } while (puVar13 != (undefined1 *)0x0);\n          puVar8 = (uint *)((int)puVar8 * 4);\n          puVar19 = (undefined4 *)((int)puVar19 + (int)(puVar8 + -1));\n        }\n        *puVar19 = puVar9;\n      }\n      puVar16 = *(uint **)(puVar46 + -0x30);\n      if (puVar16 != (uint *)0x0) {\n        (**(code **)(iVar24 + -0x7a28))();\n        iVar24 = *(int *)(puVar46 + -0x78);\n      }\n      if (*(int *)(puVar46 + -0x2c) == **(int **)(puVar46 + -0x70)) {\n        return **(int **)(puVar46 + -0x70);\n      }\n      pcVar51 = *(code **)(iVar24 + -0x7b70);\n      pcVar52 = __gmpz_bin_uiui;\n      (*pcVar51)();\n      pcVar44 = pcVar51 + 0x8289c;\n      *(uint **)(puVar47 + -0x78) = puVar31;\n      piVar32 = *(int **)(pcVar51 + 0x7ad9c);\n      *(code **)(puVar47 + -0xf0) = pcVar44;\n      *(int *)(puVar47 + -0x74) = iVar39;\n      *(code **)(puVar47 + -0x5c) = pcVar52;\n      *(undefined1 **)(puVar47 + -0x60) = puVar46 + -0x90;\n      *(int *)(puVar47 + -100) = iVar6;\n      *(int *)(puVar47 + -0x68) = iVar29;\n      *(uint **)(puVar47 + -0x6c) = puVar38;\n      *(uint **)(puVar47 + -0x70) = puVar36;\n      *(uint **)(puVar47 + -0x7c) = puVar8;\n      *(undefined4 *)(puVar47 + -0x80) = 0;\n      *(int *)(puVar47 + -0x84) = *piVar32;\n      puVar31 = puVar16;\n      puVar20 = puVar9;\n      if (puVar9 < puVar22) {\n        puVar16[1] = 0;\n        puVar30 = (uint *)0x0;\n      }\n      else {\n        puVar30 = puVar22;\n        if ((uint *)((int)puVar9 - (int)puVar22) <= puVar22) {\n          puVar30 = (uint *)((int)puVar9 - (int)puVar22);\n        }\n        puVar22 = puVar30;\n        puVar36 = puVar9;\n        if (puVar30 < (uint *)0x2) {\n          if (puVar30 == (uint *)0x0) {\n            puVar36 = (uint *)0x1;\n          }\n          *(uint **)puVar16[2] = puVar36;\n          puVar16[1] = 1;\n          puVar49 = puVar46 + -0x90;\n        }\n        else if (puVar9 < (uint *)0x23) {\n          puVar13 = (undefined1 *)((int)puVar30 + -2);\n          iVar6 = *(int *)(pcVar51 + 0x7aa7c);\n          puVar20 = (uint *)puVar16[2];\n          uVar18 = (int)puVar9 - (int)puVar30;\n          puVar36 = (uint *)(iVar6 + ((uint)puVar9 >> 1));\n          puVar30 = (uint *)(iVar6 + ((uint)puVar30 >> 1));\n          bVar2 = *(byte *)((int)puVar30 + -1);\n          puVar31 = (uint *)(uint)*(byte *)(iVar6 + (uVar18 >> 1) + -1);\n          *puVar20 = *(int *)((int)puVar13 * 4 + *(int *)(pcVar51 + 0x7a8c8) + 0x35b4) *\n                     *(int *)(*(int *)(pcVar51 + 0x7ad64) + (int)puVar9 * 4) *\n                     *(int *)((uVar18 - 2) * 4 + *(int *)(pcVar51 + 0x7a8c8) + 0x35b4) <<\n                     (((uint)*(byte *)((int)puVar36 + -1) - (int)(uint)bVar2) - (int)puVar31 & 0x1f)\n          ;\n          puVar16[1] = 1;\n          puVar22 = (uint *)(uint)bVar2;\n          puVar49 = puVar46 + -0x90;\n        }\n        else if (puVar30 < &DAT_00000011) {\n          FUN_000216e8();\n          pcVar44 = *(code **)(puVar47 + -0xf0);\n          puVar49 = puVar46 + -0x90;\n        }\n        else if (puVar30 < &DAT_00000021) {\n          uVar18 = (uint)puVar30 >> 1;\n          uVar37 = (int)puVar9 - uVar18;\n          FUN_000216e8();\n          iVar6 = *(int *)(puVar47 + -0xf0);\n          uVar7 = (int)puVar30 - uVar18;\n          if (uVar37 < 0x23) {\n            puVar50 = (undefined1 *)puVar16[1];\n            if ((int)puVar50 < (int)*puVar16) {\n              puVar8 = (uint *)puVar16[2];\n            }\n            else {\n              puVar8 = (uint *)(**(code **)(iVar6 + -0x7a80))(puVar16,puVar50 + 1);\n              iVar6 = *(int *)(puVar47 + -0xf0);\n            }\n            iVar29 = *(int *)(iVar6 + -0x7e20);\n            iVar24 = *(int *)(iVar6 + -0x7fd4) + 0x35b4;\n            uVar37 = (**(code **)(iVar6 + -0x7f9c))\n                               (puVar8,puVar8,puVar50,\n                                *(int *)((((int)puVar9 - (int)puVar30) - 2U) * 4 + iVar24) *\n                                *(int *)(*(int *)(iVar6 + -0x7b38) + uVar37 * 4) *\n                                *(int *)((uVar7 - 2) * 4 + iVar24) <<\n                                (((uint)*(byte *)(iVar29 + (uVar37 >> 1) + -1) -\n                                 (uint)*(byte *)(iVar29 + (uVar7 >> 1) + -1)) -\n                                 (uint)*(byte *)(iVar29 + ((uint)((int)puVar9 - (int)puVar30) >> 1)\n                                                + -1) & 0x1f));\n            iVar6 = *(int *)(puVar47 + -0xf0);\n            puVar30 = (uint *)(puVar50 + (uVar37 != 0));\n            puVar8[(int)puVar50] = uVar37;\n          }\n          else {\n            *(undefined4 *)(puVar47 + -0xe4) = 0x15;\n            *(undefined1 **)(puVar47 + -0xdc) = puVar47 + -0xd8;\n            FUN_000216e8(puVar47 + -0xe4,uVar37,uVar7);\n            (**(code **)(*(int *)(puVar47 + -0xf0) + -0x7ba8))(puVar16,puVar16,puVar47 + -0xe4);\n            iVar6 = *(int *)(puVar47 + -0xf0);\n            puVar8 = (uint *)puVar16[2];\n            puVar30 = (uint *)puVar16[1];\n          }\n          pcVar51 = *(code **)(iVar6 + -0x7bb4);\n          puVar38 = (uint *)((uint)*(byte *)((uVar7 - 8) + *(int *)(iVar6 + -0x7fd4) + 0x3550) -\n                            (uint)(uVar18 != uVar7));\n          *(undefined4 *)(puVar47 + -0xf8) =\n               *(undefined4 *)((uVar7 - 8) * 4 + *(int *)(iVar6 + -0x7fd4) + 0x355c);\n          *(uint **)(puVar47 + -0xf4) = puVar38;\n          puVar31 = puVar8;\n          puVar20 = puVar8;\n          puVar22 = puVar30;\n          (*pcVar51)();\n          pcVar44 = *(code **)(puVar47 + -0xf0);\n          if (puVar8[(int)((int)puVar30 + -1)] == 0) {\n            puVar9 = puVar8 + (int)puVar30;\n            do {\n              puVar1 = puVar9 + -2;\n              puVar30 = (uint *)((int)puVar30 + -1);\n              puVar9 = puVar9 + -1;\n            } while (*puVar1 == 0);\n          }\n          puVar16[1] = (uint)puVar30;\n          puVar49 = puVar50;\n        }\n        else if ((puVar30 < (uint *)0x3e8) || (puVar30 <= (uint *)((uint)puVar9 >> 4))) {\n          FUN_0002209c();\n          pcVar44 = *(code **)(puVar47 + -0xf0);\n          puVar49 = puVar46 + -0x90;\n        }\n        else {\n          FUN_000219dc();\n          pcVar44 = *(code **)(puVar47 + -0xf0);\n          puVar49 = puVar46 + -0x90;\n        }\n      }\n      if (*(int *)(puVar47 + -0x84) == *piVar32) {\n        return *piVar32;\n      }\n      pcVar51 = *(code **)(pcVar44 + -0x7b70);\n      uVar10 = 0x22b64;\n      (*pcVar51)();\n      pcVar44 = pcVar51 + 0x824d0;\n      puVar48 = puVar47 + -0x160;\n      *(uint **)(puVar47 + -0x118) = puVar16;\n      *(uint **)(puVar47 + -0x124) = puVar30;\n      piVar34 = *(int **)(pcVar51 + 0x7a9d0);\n      uVar18 = puVar22[1];\n      *(undefined1 **)(puVar47 + -0x110) = puVar49;\n      *(uint **)(puVar47 + -0x114) = puVar36;\n      *(int **)(puVar47 + -0x11c) = piVar32;\n      *(uint **)(puVar47 + -0x120) = puVar8;\n      *(undefined4 *)(puVar47 + -0x10c) = uVar10;\n      *(code **)(puVar47 + -0x150) = pcVar44;\n      *(undefined4 *)(puVar47 + -0x13c) = 0;\n      puVar8 = (uint *)puVar20[1];\n      *(int *)(puVar47 + -300) = *piVar34;\n      if ((int)uVar18 < 0) {\n        uVar37 = uVar18 * -4;\n        *(uint *)(puVar47 + -0x138) = -uVar18;\n        if (0x7f00 < uVar37) {\n          pcVar51 = *(code **)(pcVar51 + 0x7a780);\n          goto LAB_00022c88;\n        }\nLAB_00022be4:\n        iVar6 = -(uVar37 + 7 & 0xfffffff8);\n        puVar48 = puVar47 + iVar6 + -0x160;\n        puVar13 = puVar47 + iVar6 + -0x150;\n      }\n      else {\n        uVar37 = uVar18 * 4;\n        *(uint *)(puVar47 + -0x138) = uVar18;\n        pcVar51 = *(code **)(pcVar51 + 0x7a780);\n        if (uVar37 < 0x7f01) goto LAB_00022be4;\nLAB_00022c88:\n        *(uint **)(puVar47 + -0x144) = puVar22;\n        puVar13 = (undefined1 *)(*pcVar51)(puVar47 + -0x13c,uVar37);\n        pcVar44 = *(code **)(puVar47 + -0x150);\n        puVar22 = *(uint **)(puVar47 + -0x144);\n      }\n      pcVar51 = *(code **)(pcVar44 + -0x7a68);\n      puVar36 = (uint *)(puVar47 + -0x138);\n      *(undefined1 **)(puVar47 + -0x130) = puVar13;\n      puVar9 = puVar20;\n      (*pcVar51)(puVar31,puVar36,puVar20,puVar22);\n      iVar6 = *(int *)(puVar47 + -0x150);\n      if (((int)((uint)puVar8 ^ uVar18) < 0) || (*(int *)(puVar47 + -0x134) == 0)) {\n        piVar32 = *(int **)(puVar47 + -0x13c);\n        pcVar51 = *(code **)(iVar6 + -0x7a28);\n        if (piVar32 != (int *)0x0) goto LAB_00022cc0;\n      }\n      else {\n        puVar9 = (uint *)0x1;\n        puVar36 = puVar31;\n        (**(code **)(iVar6 + -0x7c9c))(puVar31);\n        piVar32 = *(int **)(puVar47 + -0x13c);\n        iVar6 = *(int *)(puVar47 + -0x150);\n        if (piVar32 != (int *)0x0) {\n          pcVar51 = *(code **)(iVar6 + -0x7a28);\nLAB_00022cc0:\n          (*pcVar51)();\n          iVar6 = *(int *)(puVar47 + -0x150);\n        }\n      }\n      if (*(int *)(puVar47 + -300) == *piVar34) {\n        return *piVar34;\n      }\n      pcVar51 = *(code **)(iVar6 + -0x7b70);\n      uVar10 = 0x22cdc;\n      (*pcVar51)();\n      pcVar44 = pcVar51 + 0x82360;\n      *(code **)(puVar48 + -0x28) = pcVar44;\n      *(undefined4 *)(puVar48 + -4) = uVar10;\n      *(uint **)(puVar48 + -8) = puVar38;\n      *(uint **)(puVar48 + -0xc) = puVar20;\n      *(int **)(puVar48 + -0x10) = piVar34;\n      *(uint **)(puVar48 + -0x14) = puVar31;\n      *(uint **)(puVar48 + -0x18) = puVar8;\n      *(uint *)(puVar48 + -0x1c) = (uint)puVar8 ^ uVar18;\n      if (puVar9 == (uint *)0x0) {\n        pcVar51 = *(code **)(pcVar51 + 0x7a900);\n        (*pcVar51)();\nLAB_00022e2c:\n        piVar32 = (int *)(*pcVar51)(piVar34,puVar31);\n        pcVar44 = *(code **)(puVar48 + -0x28);\n      }\n      else {\n        puVar8 = (uint *)puVar36[1];\n        if (puVar8 == (uint *)0x0) {\n          piVar32[1] = 0;\n          return 0;\n        }\n        puVar31 = puVar8;\n        if ((int)puVar8 < 0) {\n          puVar31 = (uint *)-(int)puVar8;\n        }\n        pcVar51 = *(code **)(pcVar51 + 0x7a8e0);\n        piVar34 = piVar32;\n        puVar20 = puVar9;\n        puVar38 = puVar36;\n        if (*piVar32 < (int)puVar31) goto LAB_00022e2c;\n        piVar32 = (int *)piVar32[2];\n      }\n      pcVar51 = *(code **)(pcVar44 + -0x7d98);\n      uVar18 = puVar38[2];\n      *(uint **)(puVar48 + -0x30) = puVar20;\n      iVar6 = (*pcVar51)(piVar32,0,uVar18,puVar31);\n      piVar17 = piVar32 + (int)puVar31 + -1;\n      if (iVar6 == 0) {\n        uVar18 = (uint)(*piVar17 == 0);\n        if (-1 < (int)puVar8) {\n          iVar24 = (int)puVar31 - uVar18;\n          goto LAB_00022d9c;\n        }\n      }\n      else {\n        if (-1 < (int)puVar8) {\n          do {\n            iVar24 = *piVar32;\n            *piVar32 = iVar24 + 1;\n            piVar32 = piVar32 + 1;\n          } while (iVar24 + 1 == 0);\n          iVar6 = (int)puVar20 - iVar6;\n          iVar24 = (int)puVar31 - (uint)(*piVar17 == 0);\n          goto LAB_00022d9c;\n        }\n        uVar18 = (uint)(*piVar17 == 0);\n      }\n      iVar24 = uVar18 - (int)puVar31;\nLAB_00022d9c:\n      piVar34[1] = iVar24;\n      return iVar6;\n    }\n    *(int *)(puVar46 + -0x44) = iVar39;\n    iVar6 = iVar39 + uVar7;\n    uVar18 = (**(code **)(*(int *)(puVar46 + -0x34) + (uVar7 - 1) * 4))(iVar39);\n    puVar43 = *(undefined **)(puVar46 + -0x78);\n    if ((uVar18 & 0xff) == 0) {\n      uVar37 = uVar18 >> 8;\n      iVar24 = 6;\n      if ((uVar37 & 0xff) == 0) {\n        uVar37 = uVar18 >> 0x10;\n        iVar24 = 0xe;\n        if ((uVar37 & 0xff) == 0) {\n          uVar37 = uVar18 >> 0x18;\n          iVar24 = 0x1e;\n          if (uVar37 != 0) {\n            iVar24 = 0x16;\n          }\n        }\n      }\n      uVar37 = (uint)*(byte *)(*(int *)(puVar46 + -0x3c) + (-uVar37 & uVar37)) + iVar24;\n    }\n    else {\n      uVar37 = *(byte *)(*(int *)(puVar46 + -0x3c) + (-uVar18 & uVar18)) - 2;\n    }\n    iVar39 = *(int *)(puVar46 + -0x38);\n    *puVar36 = uVar18 >> (uVar37 & 0x1f);\n    iVar24 = *(int *)(puVar46 + -0x60);\n    *(uint *)(puVar46 + -0x40) =\n         *(int *)(puVar46 + -0x40) + *(byte *)(iVar39 + (uVar7 - 1)) + uVar37;\n    if ((uint)(iVar24 - iVar6) <= uVar7) {\n      uVar7 = iVar24 - iVar6;\n    }\n    iVar39 = iVar6;\n    if (uVar7 != 0) goto LAB_00022234;\nLAB_00022534:\n    puVar31 = (uint *)0x1;\n    *(uint **)(puVar46 + -0x4c) = puVar36;\n  } while( true );" (do "do") (compound_statement "{\n    iVar41 = iVar39 - *(int *)(puVar46 + -0x44);\n    iVar24 = *(int *)(puVar46 + -0x5c);\n    iVar6 = iVar41;\n    if (iVar41 != 0) {\n      *(uint *)(puVar46 + -0x44) = uVar7;\n      *(uint **)(puVar46 + -0x50) = puVar31;\n      *(uint **)(puVar46 + -0x54) = puVar36;\n      *(int *)(puVar46 + -0x58) = iVar39;\n      iVar6 = *(int *)(puVar46 + -0x48);\n      iVar39 = *(int *)(puVar46 + -0x68);\n      iVar24 = iVar29;\n      do {\n        iVar33 = iVar41;\n        if (iVar39 <= iVar41) {\n          iVar33 = iVar39;\n        }\n        iVar29 = iVar24 + iVar33;\n        uVar18 = (**(code **)(*(int *)(puVar46 + -0x34) + (iVar33 + -1) * 4))(iVar24);\n        if ((uVar18 & 0xff) == 0) {\n          uVar37 = uVar18 >> 8;\n          iVar24 = 6;\n          if ((uVar37 & 0xff) == 0) {\n            uVar37 = uVar18 >> 0x10;\n            iVar24 = 0xe;\n            if ((uVar37 & 0xff) == 0) {\n              uVar37 = uVar18 >> 0x18;\n              iVar24 = 0x16;\n              if (uVar37 == 0) {\n                iVar24 = 0x1e;\n              }\n            }\n          }\n          uVar37 = (uint)*(byte *)(*(int *)(puVar46 + -0x3c) + (-uVar37 & uVar37)) + iVar24;\n        }\n        else {\n          uVar37 = *(byte *)(*(int *)(puVar46 + -0x3c) + (-uVar18 & uVar18)) - 2;\n        }\n        iVar41 = iVar41 - iVar33;\n        iVar6 = iVar6 + *(byte *)(*(int *)(puVar46 + -0x38) + iVar33 + -1) + uVar37;\n        uVar18 = (**(code **)(*(int *)(puVar46 + -0x78) + -0x7f9c))\n                           (puVar38,puVar38,puVar8,uVar18 >> (uVar37 & 0x1f));\n        puVar43 = *(undefined **)(puVar46 + -0x78);\n        puVar31 = puVar38 + (int)puVar8;\n        puVar8 = (uint *)((int)puVar8 + (uint)(uVar18 != 0));\n        *puVar31 = uVar18;\n        iVar24 = iVar29;\n      } while (iVar41 != 0);\n      uVar7 = *(uint *)(puVar46 + -0x44);\n      puVar31 = *(uint **)(puVar46 + -0x50);\n      puVar36 = *(uint **)(puVar46 + -0x54);\n      iVar39 = *(int *)(puVar46 + -0x58);\n      *(int *)(puVar46 + -0x48) = iVar6;\n      iVar24 = *(int *)(puVar46 + -0x5c);\n    }\n    uVar37 = *puVar36;\n    pcVar51 = *(code **)(puVar43 + -0x7bc0);\n    uVar18 = (uint)*(byte *)(*(int *)(puVar46 + -100) + ((uVar37 << 0x18) >> 0x19));\n    puVar8 = (uint *)((int)puVar8 +\n                     ((puVar38[(int)((int)puVar8 + iVar24)] < **(uint **)(puVar46 + -0x4c) ^ 1) -\n                     (int)puVar31));\n    iVar24 = uVar18 * 2 - uVar18 * uVar18 * uVar37;\n    if ((int)puVar8 < (int)puVar31) {\n      puVar31 = puVar8;\n    }\n    *(uint **)(puVar47 + -0x48) = puVar31;\n    *(uint *)(puVar47 + -0x44) = iVar24 * iVar24 * uVar37 + iVar24 * -2;\n    puVar9 = puVar38;\n    puVar22 = puVar8;\n    (*pcVar51)(puVar38,puVar38,puVar8,puVar36);\n    iVar24 = *(int *)(puVar46 + -0x78);\n    if (uVar7 == 0) {\n      if (*(int *)(puVar46 + -0x48) == *(int *)(puVar46 + -0x40)) {\n        puVar8 = (uint *)((int)puVar8 - (uint)(puVar38[(int)((int)puVar8 + -1)] == 0));\n        pcVar51 = *(code **)(iVar24 + -0x7a80);\n        if ((int)puVar8 <= **(int **)(puVar46 + -0x6c)) goto LAB_00022600;\nLAB_00022734:\n        puVar9 = puVar8;\n        puVar19 = (undefined4 *)(*pcVar51)(*(undefined4 *)(puVar46 + -0x6c));\n        iVar24 = *(int *)(puVar46 + -0x78);\n      }\n      else {\n        puVar9 = puVar38;\n        puVar22 = puVar8;\n        uVar18 = (**(code **)(iVar24 + -0x7ad4))(puVar38);\n        iVar24 = *(int *)(puVar46 + -0x78);\n        puVar38[(int)puVar8] = uVar18;\n        puVar8 = (uint *)((int)puVar8 +\n                         ((uint)(uVar18 != 0) -\n                         (uint)(puVar38[(int)((int)puVar8 + ((uVar18 != 0) - 1))] == 0)));\n        pcVar51 = *(code **)(iVar24 + -0x7a80);\n        if (**(int **)(puVar46 + -0x6c) < (int)puVar8) goto LAB_00022734;\nLAB_00022600:\n        puVar19 = *(undefined4 **)(*(int *)(puVar46 + -0x6c) + 8);\n      }\n      *(uint **)(*(int *)(puVar46 + -0x6c) + 4) = puVar8;\n      if (puVar8 != (uint *)0x0) {\n        puVar13 = (undefined1 *)((int)puVar8 + -1);\n        puVar9 = (uint *)*puVar38;\n        if (puVar13 != (undefined1 *)0x0) {\n          puVar15 = puVar19;\n          puVar16 = puVar38 + 1;\n          do {\n            *puVar15 = puVar9;\n            puVar38 = puVar16 + 1;\n            puVar13 = puVar13 + -1;\n            puVar9 = (uint *)*puVar16;\n            puVar15 = puVar15 + 1;\n            puVar16 = puVar38;\n          } while (puVar13 != (undefined1 *)0x0);\n          puVar8 = (uint *)((int)puVar8 * 4);\n          puVar19 = (undefined4 *)((int)puVar19 + (int)(puVar8 + -1));\n        }\n        *puVar19 = puVar9;\n      }\n      puVar16 = *(uint **)(puVar46 + -0x30);\n      if (puVar16 != (uint *)0x0) {\n        (**(code **)(iVar24 + -0x7a28))();\n        iVar24 = *(int *)(puVar46 + -0x78);\n      }\n      if (*(int *)(puVar46 + -0x2c) == **(int **)(puVar46 + -0x70)) {\n        return **(int **)(puVar46 + -0x70);\n      }\n      pcVar51 = *(code **)(iVar24 + -0x7b70);\n      pcVar52 = __gmpz_bin_uiui;\n      (*pcVar51)();\n      pcVar44 = pcVar51 + 0x8289c;\n      *(uint **)(puVar47 + -0x78) = puVar31;\n      piVar32 = *(int **)(pcVar51 + 0x7ad9c);\n      *(code **)(puVar47 + -0xf0) = pcVar44;\n      *(int *)(puVar47 + -0x74) = iVar39;\n      *(code **)(puVar47 + -0x5c) = pcVar52;\n      *(undefined1 **)(puVar47 + -0x60) = puVar46 + -0x90;\n      *(int *)(puVar47 + -100) = iVar6;\n      *(int *)(puVar47 + -0x68) = iVar29;\n      *(uint **)(puVar47 + -0x6c) = puVar38;\n      *(uint **)(puVar47 + -0x70) = puVar36;\n      *(uint **)(puVar47 + -0x7c) = puVar8;\n      *(undefined4 *)(puVar47 + -0x80) = 0;\n      *(int *)(puVar47 + -0x84) = *piVar32;\n      puVar31 = puVar16;\n      puVar20 = puVar9;\n      if (puVar9 < puVar22) {\n        puVar16[1] = 0;\n        puVar30 = (uint *)0x0;\n      }\n      else {\n        puVar30 = puVar22;\n        if ((uint *)((int)puVar9 - (int)puVar22) <= puVar22) {\n          puVar30 = (uint *)((int)puVar9 - (int)puVar22);\n        }\n        puVar22 = puVar30;\n        puVar36 = puVar9;\n        if (puVar30 < (uint *)0x2) {\n          if (puVar30 == (uint *)0x0) {\n            puVar36 = (uint *)0x1;\n          }\n          *(uint **)puVar16[2] = puVar36;\n          puVar16[1] = 1;\n          puVar49 = puVar46 + -0x90;\n        }\n        else if (puVar9 < (uint *)0x23) {\n          puVar13 = (undefined1 *)((int)puVar30 + -2);\n          iVar6 = *(int *)(pcVar51 + 0x7aa7c);\n          puVar20 = (uint *)puVar16[2];\n          uVar18 = (int)puVar9 - (int)puVar30;\n          puVar36 = (uint *)(iVar6 + ((uint)puVar9 >> 1));\n          puVar30 = (uint *)(iVar6 + ((uint)puVar30 >> 1));\n          bVar2 = *(byte *)((int)puVar30 + -1);\n          puVar31 = (uint *)(uint)*(byte *)(iVar6 + (uVar18 >> 1) + -1);\n          *puVar20 = *(int *)((int)puVar13 * 4 + *(int *)(pcVar51 + 0x7a8c8) + 0x35b4) *\n                     *(int *)(*(int *)(pcVar51 + 0x7ad64) + (int)puVar9 * 4) *\n                     *(int *)((uVar18 - 2) * 4 + *(int *)(pcVar51 + 0x7a8c8) + 0x35b4) <<\n                     (((uint)*(byte *)((int)puVar36 + -1) - (int)(uint)bVar2) - (int)puVar31 & 0x1f)\n          ;\n          puVar16[1] = 1;\n          puVar22 = (uint *)(uint)bVar2;\n          puVar49 = puVar46 + -0x90;\n        }\n        else if (puVar30 < &DAT_00000011) {\n          FUN_000216e8();\n          pcVar44 = *(code **)(puVar47 + -0xf0);\n          puVar49 = puVar46 + -0x90;\n        }\n        else if (puVar30 < &DAT_00000021) {\n          uVar18 = (uint)puVar30 >> 1;\n          uVar37 = (int)puVar9 - uVar18;\n          FUN_000216e8();\n          iVar6 = *(int *)(puVar47 + -0xf0);\n          uVar7 = (int)puVar30 - uVar18;\n          if (uVar37 < 0x23) {\n            puVar50 = (undefined1 *)puVar16[1];\n            if ((int)puVar50 < (int)*puVar16) {\n              puVar8 = (uint *)puVar16[2];\n            }\n            else {\n              puVar8 = (uint *)(**(code **)(iVar6 + -0x7a80))(puVar16,puVar50 + 1);\n              iVar6 = *(int *)(puVar47 + -0xf0);\n            }\n            iVar29 = *(int *)(iVar6 + -0x7e20);\n            iVar24 = *(int *)(iVar6 + -0x7fd4) + 0x35b4;\n            uVar37 = (**(code **)(iVar6 + -0x7f9c))\n                               (puVar8,puVar8,puVar50,\n                                *(int *)((((int)puVar9 - (int)puVar30) - 2U) * 4 + iVar24) *\n                                *(int *)(*(int *)(iVar6 + -0x7b38) + uVar37 * 4) *\n                                *(int *)((uVar7 - 2) * 4 + iVar24) <<\n                                (((uint)*(byte *)(iVar29 + (uVar37 >> 1) + -1) -\n                                 (uint)*(byte *)(iVar29 + (uVar7 >> 1) + -1)) -\n                                 (uint)*(byte *)(iVar29 + ((uint)((int)puVar9 - (int)puVar30) >> 1)\n                                                + -1) & 0x1f));\n            iVar6 = *(int *)(puVar47 + -0xf0);\n            puVar30 = (uint *)(puVar50 + (uVar37 != 0));\n            puVar8[(int)puVar50] = uVar37;\n          }\n          else {\n            *(undefined4 *)(puVar47 + -0xe4) = 0x15;\n            *(undefined1 **)(puVar47 + -0xdc) = puVar47 + -0xd8;\n            FUN_000216e8(puVar47 + -0xe4,uVar37,uVar7);\n            (**(code **)(*(int *)(puVar47 + -0xf0) + -0x7ba8))(puVar16,puVar16,puVar47 + -0xe4);\n            iVar6 = *(int *)(puVar47 + -0xf0);\n            puVar8 = (uint *)puVar16[2];\n            puVar30 = (uint *)puVar16[1];\n          }\n          pcVar51 = *(code **)(iVar6 + -0x7bb4);\n          puVar38 = (uint *)((uint)*(byte *)((uVar7 - 8) + *(int *)(iVar6 + -0x7fd4) + 0x3550) -\n                            (uint)(uVar18 != uVar7));\n          *(undefined4 *)(puVar47 + -0xf8) =\n               *(undefined4 *)((uVar7 - 8) * 4 + *(int *)(iVar6 + -0x7fd4) + 0x355c);\n          *(uint **)(puVar47 + -0xf4) = puVar38;\n          puVar31 = puVar8;\n          puVar20 = puVar8;\n          puVar22 = puVar30;\n          (*pcVar51)();\n          pcVar44 = *(code **)(puVar47 + -0xf0);\n          if (puVar8[(int)((int)puVar30 + -1)] == 0) {\n            puVar9 = puVar8 + (int)puVar30;\n            do {\n              puVar1 = puVar9 + -2;\n              puVar30 = (uint *)((int)puVar30 + -1);\n              puVar9 = puVar9 + -1;\n            } while (*puVar1 == 0);\n          }\n          puVar16[1] = (uint)puVar30;\n          puVar49 = puVar50;\n        }\n        else if ((puVar30 < (uint *)0x3e8) || (puVar30 <= (uint *)((uint)puVar9 >> 4))) {\n          FUN_0002209c();\n          pcVar44 = *(code **)(puVar47 + -0xf0);\n          puVar49 = puVar46 + -0x90;\n        }\n        else {\n          FUN_000219dc();\n          pcVar44 = *(code **)(puVar47 + -0xf0);\n          puVar49 = puVar46 + -0x90;\n        }\n      }\n      if (*(int *)(puVar47 + -0x84) == *piVar32) {\n        return *piVar32;\n      }\n      pcVar51 = *(code **)(pcVar44 + -0x7b70);\n      uVar10 = 0x22b64;\n      (*pcVar51)();\n      pcVar44 = pcVar51 + 0x824d0;\n      puVar48 = puVar47 + -0x160;\n      *(uint **)(puVar47 + -0x118) = puVar16;\n      *(uint **)(puVar47 + -0x124) = puVar30;\n      piVar34 = *(int **)(pcVar51 + 0x7a9d0);\n      uVar18 = puVar22[1];\n      *(undefined1 **)(puVar47 + -0x110) = puVar49;\n      *(uint **)(puVar47 + -0x114) = puVar36;\n      *(int **)(puVar47 + -0x11c) = piVar32;\n      *(uint **)(puVar47 + -0x120) = puVar8;\n      *(undefined4 *)(puVar47 + -0x10c) = uVar10;\n      *(code **)(puVar47 + -0x150) = pcVar44;\n      *(undefined4 *)(puVar47 + -0x13c) = 0;\n      puVar8 = (uint *)puVar20[1];\n      *(int *)(puVar47 + -300) = *piVar34;\n      if ((int)uVar18 < 0) {\n        uVar37 = uVar18 * -4;\n        *(uint *)(puVar47 + -0x138) = -uVar18;\n        if (0x7f00 < uVar37) {\n          pcVar51 = *(code **)(pcVar51 + 0x7a780);\n          goto LAB_00022c88;\n        }\nLAB_00022be4:\n        iVar6 = -(uVar37 + 7 & 0xfffffff8);\n        puVar48 = puVar47 + iVar6 + -0x160;\n        puVar13 = puVar47 + iVar6 + -0x150;\n      }\n      else {\n        uVar37 = uVar18 * 4;\n        *(uint *)(puVar47 + -0x138) = uVar18;\n        pcVar51 = *(code **)(pcVar51 + 0x7a780);\n        if (uVar37 < 0x7f01) goto LAB_00022be4;\nLAB_00022c88:\n        *(uint **)(puVar47 + -0x144) = puVar22;\n        puVar13 = (undefined1 *)(*pcVar51)(puVar47 + -0x13c,uVar37);\n        pcVar44 = *(code **)(puVar47 + -0x150);\n        puVar22 = *(uint **)(puVar47 + -0x144);\n      }\n      pcVar51 = *(code **)(pcVar44 + -0x7a68);\n      puVar36 = (uint *)(puVar47 + -0x138);\n      *(undefined1 **)(puVar47 + -0x130) = puVar13;\n      puVar9 = puVar20;\n      (*pcVar51)(puVar31,puVar36,puVar20,puVar22);\n      iVar6 = *(int *)(puVar47 + -0x150);\n      if (((int)((uint)puVar8 ^ uVar18) < 0) || (*(int *)(puVar47 + -0x134) == 0)) {\n        piVar32 = *(int **)(puVar47 + -0x13c);\n        pcVar51 = *(code **)(iVar6 + -0x7a28);\n        if (piVar32 != (int *)0x0) goto LAB_00022cc0;\n      }\n      else {\n        puVar9 = (uint *)0x1;\n        puVar36 = puVar31;\n        (**(code **)(iVar6 + -0x7c9c))(puVar31);\n        piVar32 = *(int **)(puVar47 + -0x13c);\n        iVar6 = *(int *)(puVar47 + -0x150);\n        if (piVar32 != (int *)0x0) {\n          pcVar51 = *(code **)(iVar6 + -0x7a28);\nLAB_00022cc0:\n          (*pcVar51)();\n          iVar6 = *(int *)(puVar47 + -0x150);\n        }\n      }\n      if (*(int *)(puVar47 + -300) == *piVar34) {\n        return *piVar34;\n      }\n      pcVar51 = *(code **)(iVar6 + -0x7b70);\n      uVar10 = 0x22cdc;\n      (*pcVar51)();\n      pcVar44 = pcVar51 + 0x82360;\n      *(code **)(puVar48 + -0x28) = pcVar44;\n      *(undefined4 *)(puVar48 + -4) = uVar10;\n      *(uint **)(puVar48 + -8) = puVar38;\n      *(uint **)(puVar48 + -0xc) = puVar20;\n      *(int **)(puVar48 + -0x10) = piVar34;\n      *(uint **)(puVar48 + -0x14) = puVar31;\n      *(uint **)(puVar48 + -0x18) = puVar8;\n      *(uint *)(puVar48 + -0x1c) = (uint)puVar8 ^ uVar18;\n      if (puVar9 == (uint *)0x0) {\n        pcVar51 = *(code **)(pcVar51 + 0x7a900);\n        (*pcVar51)();\nLAB_00022e2c:\n        piVar32 = (int *)(*pcVar51)(piVar34,puVar31);\n        pcVar44 = *(code **)(puVar48 + -0x28);\n      }\n      else {\n        puVar8 = (uint *)puVar36[1];\n        if (puVar8 == (uint *)0x0) {\n          piVar32[1] = 0;\n          return 0;\n        }\n        puVar31 = puVar8;\n        if ((int)puVar8 < 0) {\n          puVar31 = (uint *)-(int)puVar8;\n        }\n        pcVar51 = *(code **)(pcVar51 + 0x7a8e0);\n        piVar34 = piVar32;\n        puVar20 = puVar9;\n        puVar38 = puVar36;\n        if (*piVar32 < (int)puVar31) goto LAB_00022e2c;\n        piVar32 = (int *)piVar32[2];\n      }\n      pcVar51 = *(code **)(pcVar44 + -0x7d98);\n      uVar18 = puVar38[2];\n      *(uint **)(puVar48 + -0x30) = puVar20;\n      iVar6 = (*pcVar51)(piVar32,0,uVar18,puVar31);\n      piVar17 = piVar32 + (int)puVar31 + -1;\n      if (iVar6 == 0) {\n        uVar18 = (uint)(*piVar17 == 0);\n        if (-1 < (int)puVar8) {\n          iVar24 = (int)puVar31 - uVar18;\n          goto LAB_00022d9c;\n        }\n      }\n      else {\n        if (-1 < (int)puVar8) {\n          do {\n            iVar24 = *piVar32;\n            *piVar32 = iVar24 + 1;\n            piVar32 = piVar32 + 1;\n          } while (iVar24 + 1 == 0);\n          iVar6 = (int)puVar20 - iVar6;\n          iVar24 = (int)puVar31 - (uint)(*piVar17 == 0);\n          goto LAB_00022d9c;\n        }\n        uVar18 = (uint)(*piVar17 == 0);\n      }\n      iVar24 = uVar18 - (int)puVar31;\nLAB_00022d9c:\n      piVar34[1] = iVar24;\n      return iVar6;\n    }\n    *(int *)(puVar46 + -0x44) = iVar39;\n    iVar6 = iVar39 + uVar7;\n    uVar18 = (**(code **)(*(int *)(puVar46 + -0x34) + (uVar7 - 1) * 4))(iVar39);\n    puVar43 = *(undefined **)(puVar46 + -0x78);\n    if ((uVar18 & 0xff) == 0) {\n      uVar37 = uVar18 >> 8;\n      iVar24 = 6;\n      if ((uVar37 & 0xff) == 0) {\n        uVar37 = uVar18 >> 0x10;\n        iVar24 = 0xe;\n        if ((uVar37 & 0xff) == 0) {\n          uVar37 = uVar18 >> 0x18;\n          iVar24 = 0x1e;\n          if (uVar37 != 0) {\n            iVar24 = 0x16;\n          }\n        }\n      }\n      uVar37 = (uint)*(byte *)(*(int *)(puVar46 + -0x3c) + (-uVar37 & uVar37)) + iVar24;\n    }\n    else {\n      uVar37 = *(byte *)(*(int *)(puVar46 + -0x3c) + (-uVar18 & uVar18)) - 2;\n    }\n    iVar39 = *(int *)(puVar46 + -0x38);\n    *puVar36 = uVar18 >> (uVar37 & 0x1f);\n    iVar24 = *(int *)(puVar46 + -0x60);\n    *(uint *)(puVar46 + -0x40) =\n         *(int *)(puVar46 + -0x40) + *(byte *)(iVar39 + (uVar7 - 1)) + uVar37;\n    if ((uint)(iVar24 - iVar6) <= uVar7) {\n      uVar7 = iVar24 - iVar6;\n    }\n    iVar39 = iVar6;\n    if (uVar7 != 0) goto LAB_00022234;\nLAB_00022534:\n    puVar31 = (uint *)0x1;\n    *(uint **)(puVar46 + -0x4c) = puVar36;\n  }" ({ "{") (expression_statement "iVar41 = iVar39 - *(int *)(puVar46 + -0x44);" (assignment_expression "iVar41 = iVar39 - *(int *)(puVar46 + -0x44)" (identifier "iVar41") (= "=") (binary_expression "iVar39 - *(int *)(puVar46 + -0x44)" (identifier "iVar39") (- "-") (pointer_expression "*(int *)(puVar46 + -0x44)" (* "*") (cast_expression "(int *)(puVar46 + -0x44)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar46 + -0x44)" (( "(") (binary_expression "puVar46 + -0x44" (identifier "puVar46") (+ "+") (number_literal "-0x44")) () ")")))))) (; ";")) (expression_statement "iVar24 = *(int *)(puVar46 + -0x5c);" (assignment_expression "iVar24 = *(int *)(puVar46 + -0x5c)" (identifier "iVar24") (= "=") (pointer_expression "*(int *)(puVar46 + -0x5c)" (* "*") (cast_expression "(int *)(puVar46 + -0x5c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar46 + -0x5c)" (( "(") (binary_expression "puVar46 + -0x5c" (identifier "puVar46") (+ "+") (number_literal "-0x5c")) () ")"))))) (; ";")) (expression_statement "iVar6 = iVar41;" (assignment_expression "iVar6 = iVar41" (identifier "iVar6") (= "=") (identifier "iVar41")) (; ";")) (if_statement "if (iVar41 != 0) {\n      *(uint *)(puVar46 + -0x44) = uVar7;\n      *(uint **)(puVar46 + -0x50) = puVar31;\n      *(uint **)(puVar46 + -0x54) = puVar36;\n      *(int *)(puVar46 + -0x58) = iVar39;\n      iVar6 = *(int *)(puVar46 + -0x48);\n      iVar39 = *(int *)(puVar46 + -0x68);\n      iVar24 = iVar29;\n      do {\n        iVar33 = iVar41;\n        if (iVar39 <= iVar41) {\n          iVar33 = iVar39;\n        }\n        iVar29 = iVar24 + iVar33;\n        uVar18 = (**(code **)(*(int *)(puVar46 + -0x34) + (iVar33 + -1) * 4))(iVar24);\n        if ((uVar18 & 0xff) == 0) {\n          uVar37 = uVar18 >> 8;\n          iVar24 = 6;\n          if ((uVar37 & 0xff) == 0) {\n            uVar37 = uVar18 >> 0x10;\n            iVar24 = 0xe;\n            if ((uVar37 & 0xff) == 0) {\n              uVar37 = uVar18 >> 0x18;\n              iVar24 = 0x16;\n              if (uVar37 == 0) {\n                iVar24 = 0x1e;\n              }\n            }\n          }\n          uVar37 = (uint)*(byte *)(*(int *)(puVar46 + -0x3c) + (-uVar37 & uVar37)) + iVar24;\n        }\n        else {\n          uVar37 = *(byte *)(*(int *)(puVar46 + -0x3c) + (-uVar18 & uVar18)) - 2;\n        }\n        iVar41 = iVar41 - iVar33;\n        iVar6 = iVar6 + *(byte *)(*(int *)(puVar46 + -0x38) + iVar33 + -1) + uVar37;\n        uVar18 = (**(code **)(*(int *)(puVar46 + -0x78) + -0x7f9c))\n                           (puVar38,puVar38,puVar8,uVar18 >> (uVar37 & 0x1f));\n        puVar43 = *(undefined **)(puVar46 + -0x78);\n        puVar31 = puVar38 + (int)puVar8;\n        puVar8 = (uint *)((int)puVar8 + (uint)(uVar18 != 0));\n        *puVar31 = uVar18;\n        iVar24 = iVar29;\n      } while (iVar41 != 0);\n      uVar7 = *(uint *)(puVar46 + -0x44);\n      puVar31 = *(uint **)(puVar46 + -0x50);\n      puVar36 = *(uint **)(puVar46 + -0x54);\n      iVar39 = *(int *)(puVar46 + -0x58);\n      *(int *)(puVar46 + -0x48) = iVar6;\n      iVar24 = *(int *)(puVar46 + -0x5c);\n    }" (if "if") (parenthesized_expression "(iVar41 != 0)" (( "(") (binary_expression "iVar41 != 0" (identifier "iVar41") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      *(uint *)(puVar46 + -0x44) = uVar7;\n      *(uint **)(puVar46 + -0x50) = puVar31;\n      *(uint **)(puVar46 + -0x54) = puVar36;\n      *(int *)(puVar46 + -0x58) = iVar39;\n      iVar6 = *(int *)(puVar46 + -0x48);\n      iVar39 = *(int *)(puVar46 + -0x68);\n      iVar24 = iVar29;\n      do {\n        iVar33 = iVar41;\n        if (iVar39 <= iVar41) {\n          iVar33 = iVar39;\n        }\n        iVar29 = iVar24 + iVar33;\n        uVar18 = (**(code **)(*(int *)(puVar46 + -0x34) + (iVar33 + -1) * 4))(iVar24);\n        if ((uVar18 & 0xff) == 0) {\n          uVar37 = uVar18 >> 8;\n          iVar24 = 6;\n          if ((uVar37 & 0xff) == 0) {\n            uVar37 = uVar18 >> 0x10;\n            iVar24 = 0xe;\n            if ((uVar37 & 0xff) == 0) {\n              uVar37 = uVar18 >> 0x18;\n              iVar24 = 0x16;\n              if (uVar37 == 0) {\n                iVar24 = 0x1e;\n              }\n            }\n          }\n          uVar37 = (uint)*(byte *)(*(int *)(puVar46 + -0x3c) + (-uVar37 & uVar37)) + iVar24;\n        }\n        else {\n          uVar37 = *(byte *)(*(int *)(puVar46 + -0x3c) + (-uVar18 & uVar18)) - 2;\n        }\n        iVar41 = iVar41 - iVar33;\n        iVar6 = iVar6 + *(byte *)(*(int *)(puVar46 + -0x38) + iVar33 + -1) + uVar37;\n        uVar18 = (**(code **)(*(int *)(puVar46 + -0x78) + -0x7f9c))\n                           (puVar38,puVar38,puVar8,uVar18 >> (uVar37 & 0x1f));\n        puVar43 = *(undefined **)(puVar46 + -0x78);\n        puVar31 = puVar38 + (int)puVar8;\n        puVar8 = (uint *)((int)puVar8 + (uint)(uVar18 != 0));\n        *puVar31 = uVar18;\n        iVar24 = iVar29;\n      } while (iVar41 != 0);\n      uVar7 = *(uint *)(puVar46 + -0x44);\n      puVar31 = *(uint **)(puVar46 + -0x50);\n      puVar36 = *(uint **)(puVar46 + -0x54);\n      iVar39 = *(int *)(puVar46 + -0x58);\n      *(int *)(puVar46 + -0x48) = iVar6;\n      iVar24 = *(int *)(puVar46 + -0x5c);\n    }" ({ "{") (expression_statement "*(uint *)(puVar46 + -0x44) = uVar7;" (assignment_expression "*(uint *)(puVar46 + -0x44) = uVar7" (pointer_expression "*(uint *)(puVar46 + -0x44)" (* "*") (cast_expression "(uint *)(puVar46 + -0x44)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar46 + -0x44)" (( "(") (binary_expression "puVar46 + -0x44" (identifier "puVar46") (+ "+") (number_literal "-0x44")) () ")")))) (= "=") (identifier "uVar7")) (; ";")) (expression_statement "*(uint **)(puVar46 + -0x50) = puVar31;" (assignment_expression "*(uint **)(puVar46 + -0x50) = puVar31" (pointer_expression "*(uint **)(puVar46 + -0x50)" (* "*") (cast_expression "(uint **)(puVar46 + -0x50)" (( "(") (type_descriptor "uint **" (type_identifier "uint") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar46 + -0x50)" (( "(") (binary_expression "puVar46 + -0x50" (identifier "puVar46") (+ "+") (number_literal "-0x50")) () ")")))) (= "=") (identifier "puVar31")) (; ";")) (expression_statement "*(uint **)(puVar46 + -0x54) = puVar36;" (assignment_expression "*(uint **)(puVar46 + -0x54) = puVar36" (pointer_expression "*(uint **)(puVar46 + -0x54)" (* "*") (cast_expression "(uint **)(puVar46 + -0x54)" (( "(") (type_descriptor "uint **" (type_identifier "uint") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar46 + -0x54)" (( "(") (binary_expression "puVar46 + -0x54" (identifier "puVar46") (+ "+") (number_literal "-0x54")) () ")")))) (= "=") (identifier "puVar36")) (; ";")) (expression_statement "*(int *)(puVar46 + -0x58) = iVar39;" (assignment_expression "*(int *)(puVar46 + -0x58) = iVar39" (pointer_expression "*(int *)(puVar46 + -0x58)" (* "*") (cast_expression "(int *)(puVar46 + -0x58)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar46 + -0x58)" (( "(") (binary_expression "puVar46 + -0x58" (identifier "puVar46") (+ "+") (number_literal "-0x58")) () ")")))) (= "=") (identifier "iVar39")) (; ";")) (expression_statement "iVar6 = *(int *)(puVar46 + -0x48);" (assignment_expression "iVar6 = *(int *)(puVar46 + -0x48)" (identifier "iVar6") (= "=") (pointer_expression "*(int *)(puVar46 + -0x48)" (* "*") (cast_expression "(int *)(puVar46 + -0x48)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar46 + -0x48)" (( "(") (binary_expression "puVar46 + -0x48" (identifier "puVar46") (+ "+") (number_literal "-0x48")) () ")"))))) (; ";")) (expression_statement "iVar39 = *(int *)(puVar46 + -0x68);" (assignment_expression "iVar39 = *(int *)(puVar46 + -0x68)" (identifier "iVar39") (= "=") (pointer_expression "*(int *)(puVar46 + -0x68)" (* "*") (cast_expression "(int *)(puVar46 + -0x68)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar46 + -0x68)" (( "(") (binary_expression "puVar46 + -0x68" (identifier "puVar46") (+ "+") (number_literal "-0x68")) () ")"))))) (; ";")) (expression_statement "iVar24 = iVar29;" (assignment_expression "iVar24 = iVar29" (identifier "iVar24") (= "=") (identifier "iVar29")) (; ";")) (do_statement "do {\n        iVar33 = iVar41;\n        if (iVar39 <= iVar41) {\n          iVar33 = iVar39;\n        }\n        iVar29 = iVar24 + iVar33;\n        uVar18 = (**(code **)(*(int *)(puVar46 + -0x34) + (iVar33 + -1) * 4))(iVar24);\n        if ((uVar18 & 0xff) == 0) {\n          uVar37 = uVar18 >> 8;\n          iVar24 = 6;\n          if ((uVar37 & 0xff) == 0) {\n            uVar37 = uVar18 >> 0x10;\n            iVar24 = 0xe;\n            if ((uVar37 & 0xff) == 0) {\n              uVar37 = uVar18 >> 0x18;\n              iVar24 = 0x16;\n              if (uVar37 == 0) {\n                iVar24 = 0x1e;\n              }\n            }\n          }\n          uVar37 = (uint)*(byte *)(*(int *)(puVar46 + -0x3c) + (-uVar37 & uVar37)) + iVar24;\n        }\n        else {\n          uVar37 = *(byte *)(*(int *)(puVar46 + -0x3c) + (-uVar18 & uVar18)) - 2;\n        }\n        iVar41 = iVar41 - iVar33;\n        iVar6 = iVar6 + *(byte *)(*(int *)(puVar46 + -0x38) + iVar33 + -1) + uVar37;\n        uVar18 = (**(code **)(*(int *)(puVar46 + -0x78) + -0x7f9c))\n                           (puVar38,puVar38,puVar8,uVar18 >> (uVar37 & 0x1f));\n        puVar43 = *(undefined **)(puVar46 + -0x78);\n        puVar31 = puVar38 + (int)puVar8;\n        puVar8 = (uint *)((int)puVar8 + (uint)(uVar18 != 0));\n        *puVar31 = uVar18;\n        iVar24 = iVar29;\n      } while (iVar41 != 0);" (do "do") (compound_statement "{\n        iVar33 = iVar41;\n        if (iVar39 <= iVar41) {\n          iVar33 = iVar39;\n        }\n        iVar29 = iVar24 + iVar33;\n        uVar18 = (**(code **)(*(int *)(puVar46 + -0x34) + (iVar33 + -1) * 4))(iVar24);\n        if ((uVar18 & 0xff) == 0) {\n          uVar37 = uVar18 >> 8;\n          iVar24 = 6;\n          if ((uVar37 & 0xff) == 0) {\n            uVar37 = uVar18 >> 0x10;\n            iVar24 = 0xe;\n            if ((uVar37 & 0xff) == 0) {\n              uVar37 = uVar18 >> 0x18;\n              iVar24 = 0x16;\n              if (uVar37 == 0) {\n                iVar24 = 0x1e;\n              }\n            }\n          }\n          uVar37 = (uint)*(byte *)(*(int *)(puVar46 + -0x3c) + (-uVar37 & uVar37)) + iVar24;\n        }\n        else {\n          uVar37 = *(byte *)(*(int *)(puVar46 + -0x3c) + (-uVar18 & uVar18)) - 2;\n        }\n        iVar41 = iVar41 - iVar33;\n        iVar6 = iVar6 + *(byte *)(*(int *)(puVar46 + -0x38) + iVar33 + -1) + uVar37;\n        uVar18 = (**(code **)(*(int *)(puVar46 + -0x78) + -0x7f9c))\n                           (puVar38,puVar38,puVar8,uVar18 >> (uVar37 & 0x1f));\n        puVar43 = *(undefined **)(puVar46 + -0x78);\n        puVar31 = puVar38 + (int)puVar8;\n        puVar8 = (uint *)((int)puVar8 + (uint)(uVar18 != 0));\n        *puVar31 = uVar18;\n        iVar24 = iVar29;\n      }" ({ "{") (expression_statement "iVar33 = iVar41;" (assignment_expression "iVar33 = iVar41" (identifier "iVar33") (= "=") (identifier "iVar41")) (; ";")) (if_statement "if (iVar39 <= iVar41) {\n          iVar33 = iVar39;\n        }" (if "if") (parenthesized_expression "(iVar39 <= iVar41)" (( "(") (binary_expression "iVar39 <= iVar41" (identifier "iVar39") (<= "<=") (identifier "iVar41")) () ")")) (compound_statement "{\n          iVar33 = iVar39;\n        }" ({ "{") (expression_statement "iVar33 = iVar39;" (assignment_expression "iVar33 = iVar39" (identifier "iVar33") (= "=") (identifier "iVar39")) (; ";")) (} "}"))) (expression_statement "iVar29 = iVar24 + iVar33;" (assignment_expression "iVar29 = iVar24 + iVar33" (identifier "iVar29") (= "=") (binary_expression "iVar24 + iVar33" (identifier "iVar24") (+ "+") (identifier "iVar33"))) (; ";")) (expression_statement "uVar18 = (**(code **)(*(int *)(puVar46 + -0x34) + (iVar33 + -1) * 4))(iVar24);" (assignment_expression "uVar18 = (**(code **)(*(int *)(puVar46 + -0x34) + (iVar33 + -1) * 4))(iVar24)" (identifier "uVar18") (= "=") (call_expression "(**(code **)(*(int *)(puVar46 + -0x34) + (iVar33 + -1) * 4))(iVar24)" (parenthesized_expression "(**(code **)(*(int *)(puVar46 + -0x34) + (iVar33 + -1) * 4))" (( "(") (pointer_expression "**(code **)(*(int *)(puVar46 + -0x34) + (iVar33 + -1) * 4)" (* "*") (pointer_expression "*(code **)(*(int *)(puVar46 + -0x34) + (iVar33 + -1) * 4)" (* "*") (cast_expression "(code **)(*(int *)(puVar46 + -0x34) + (iVar33 + -1) * 4)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*(int *)(puVar46 + -0x34) + (iVar33 + -1) * 4)" (( "(") (binary_expression "*(int *)(puVar46 + -0x34) + (iVar33 + -1) * 4" (pointer_expression "*(int *)(puVar46 + -0x34)" (* "*") (cast_expression "(int *)(puVar46 + -0x34)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar46 + -0x34)" (( "(") (binary_expression "puVar46 + -0x34" (identifier "puVar46") (+ "+") (number_literal "-0x34")) () ")")))) (+ "+") (binary_expression "(iVar33 + -1) * 4" (parenthesized_expression "(iVar33 + -1)" (( "(") (binary_expression "iVar33 + -1" (identifier "iVar33") (+ "+") (number_literal "-1")) () ")")) (* "*") (number_literal "4"))) () ")"))))) () ")")) (argument_list "(iVar24)" (( "(") (identifier "iVar24") () ")")))) (; ";")) (if_statement "if ((uVar18 & 0xff) == 0) {\n          uVar37 = uVar18 >> 8;\n          iVar24 = 6;\n          if ((uVar37 & 0xff) == 0) {\n            uVar37 = uVar18 >> 0x10;\n            iVar24 = 0xe;\n            if ((uVar37 & 0xff) == 0) {\n              uVar37 = uVar18 >> 0x18;\n              iVar24 = 0x16;\n              if (uVar37 == 0) {\n                iVar24 = 0x1e;\n              }\n            }\n          }\n          uVar37 = (uint)*(byte *)(*(int *)(puVar46 + -0x3c) + (-uVar37 & uVar37)) + iVar24;\n        }\n        else {\n          uVar37 = *(byte *)(*(int *)(puVar46 + -0x3c) + (-uVar18 & uVar18)) - 2;\n        }" (if "if") (parenthesized_expression "((uVar18 & 0xff) == 0)" (( "(") (binary_expression "(uVar18 & 0xff) == 0" (parenthesized_expression "(uVar18 & 0xff)" (( "(") (binary_expression "uVar18 & 0xff" (identifier "uVar18") (& "&") (number_literal "0xff")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n          uVar37 = uVar18 >> 8;\n          iVar24 = 6;\n          if ((uVar37 & 0xff) == 0) {\n            uVar37 = uVar18 >> 0x10;\n            iVar24 = 0xe;\n            if ((uVar37 & 0xff) == 0) {\n              uVar37 = uVar18 >> 0x18;\n              iVar24 = 0x16;\n              if (uVar37 == 0) {\n                iVar24 = 0x1e;\n              }\n            }\n          }\n          uVar37 = (uint)*(byte *)(*(int *)(puVar46 + -0x3c) + (-uVar37 & uVar37)) + iVar24;\n        }" ({ "{") (expression_statement "uVar37 = uVar18 >> 8;" (assignment_expression "uVar37 = uVar18 >> 8" (identifier "uVar37") (= "=") (binary_expression "uVar18 >> 8" (identifier "uVar18") (>> ">>") (number_literal "8"))) (; ";")) (expression_statement "iVar24 = 6;" (assignment_expression "iVar24 = 6" (identifier "iVar24") (= "=") (number_literal "6")) (; ";")) (if_statement "if ((uVar37 & 0xff) == 0) {\n            uVar37 = uVar18 >> 0x10;\n            iVar24 = 0xe;\n            if ((uVar37 & 0xff) == 0) {\n              uVar37 = uVar18 >> 0x18;\n              iVar24 = 0x16;\n              if (uVar37 == 0) {\n                iVar24 = 0x1e;\n              }\n            }\n          }" (if "if") (parenthesized_expression "((uVar37 & 0xff) == 0)" (( "(") (binary_expression "(uVar37 & 0xff) == 0" (parenthesized_expression "(uVar37 & 0xff)" (( "(") (binary_expression "uVar37 & 0xff" (identifier "uVar37") (& "&") (number_literal "0xff")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n            uVar37 = uVar18 >> 0x10;\n            iVar24 = 0xe;\n            if ((uVar37 & 0xff) == 0) {\n              uVar37 = uVar18 >> 0x18;\n              iVar24 = 0x16;\n              if (uVar37 == 0) {\n                iVar24 = 0x1e;\n              }\n            }\n          }" ({ "{") (expression_statement "uVar37 = uVar18 >> 0x10;" (assignment_expression "uVar37 = uVar18 >> 0x10" (identifier "uVar37") (= "=") (binary_expression "uVar18 >> 0x10" (identifier "uVar18") (>> ">>") (number_literal "0x10"))) (; ";")) (expression_statement "iVar24 = 0xe;" (assignment_expression "iVar24 = 0xe" (identifier "iVar24") (= "=") (number_literal "0xe")) (; ";")) (if_statement "if ((uVar37 & 0xff) == 0) {\n              uVar37 = uVar18 >> 0x18;\n              iVar24 = 0x16;\n              if (uVar37 == 0) {\n                iVar24 = 0x1e;\n              }\n            }" (if "if") (parenthesized_expression "((uVar37 & 0xff) == 0)" (( "(") (binary_expression "(uVar37 & 0xff) == 0" (parenthesized_expression "(uVar37 & 0xff)" (( "(") (binary_expression "uVar37 & 0xff" (identifier "uVar37") (& "&") (number_literal "0xff")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n              uVar37 = uVar18 >> 0x18;\n              iVar24 = 0x16;\n              if (uVar37 == 0) {\n                iVar24 = 0x1e;\n              }\n            }" ({ "{") (expression_statement "uVar37 = uVar18 >> 0x18;" (assignment_expression "uVar37 = uVar18 >> 0x18" (identifier "uVar37") (= "=") (binary_expression "uVar18 >> 0x18" (identifier "uVar18") (>> ">>") (number_literal "0x18"))) (; ";")) (expression_statement "iVar24 = 0x16;" (assignment_expression "iVar24 = 0x16" (identifier "iVar24") (= "=") (number_literal "0x16")) (; ";")) (if_statement "if (uVar37 == 0) {\n                iVar24 = 0x1e;\n              }" (if "if") (parenthesized_expression "(uVar37 == 0)" (( "(") (binary_expression "uVar37 == 0" (identifier "uVar37") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                iVar24 = 0x1e;\n              }" ({ "{") (expression_statement "iVar24 = 0x1e;" (assignment_expression "iVar24 = 0x1e" (identifier "iVar24") (= "=") (number_literal "0x1e")) (; ";")) (} "}"))) (} "}"))) (} "}"))) (expression_statement "uVar37 = (uint)*(byte *)(*(int *)(puVar46 + -0x3c) + (-uVar37 & uVar37)) + iVar24;" (assignment_expression "uVar37 = (uint)*(byte *)(*(int *)(puVar46 + -0x3c) + (-uVar37 & uVar37)) + iVar24" (identifier "uVar37") (= "=") (binary_expression "(uint)*(byte *)(*(int *)(puVar46 + -0x3c) + (-uVar37 & uVar37)) + iVar24" (binary_expression "(uint)*(byte *)(*(int *)(puVar46 + -0x3c) + (-uVar37 & uVar37))" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (cast_expression "(byte *)(*(int *)(puVar46 + -0x3c) + (-uVar37 & uVar37))" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(puVar46 + -0x3c) + (-uVar37 & uVar37))" (( "(") (binary_expression "*(int *)(puVar46 + -0x3c) + (-uVar37 & uVar37)" (pointer_expression "*(int *)(puVar46 + -0x3c)" (* "*") (cast_expression "(int *)(puVar46 + -0x3c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar46 + -0x3c)" (( "(") (binary_expression "puVar46 + -0x3c" (identifier "puVar46") (+ "+") (number_literal "-0x3c")) () ")")))) (+ "+") (parenthesized_expression "(-uVar37 & uVar37)" (( "(") (binary_expression "-uVar37 & uVar37" (unary_expression "-uVar37" (- "-") (identifier "uVar37")) (& "&") (identifier "uVar37")) () ")"))) () ")")))) (+ "+") (identifier "iVar24"))) (; ";")) (} "}")) (else_clause "else {\n          uVar37 = *(byte *)(*(int *)(puVar46 + -0x3c) + (-uVar18 & uVar18)) - 2;\n        }" (else "else") (compound_statement "{\n          uVar37 = *(byte *)(*(int *)(puVar46 + -0x3c) + (-uVar18 & uVar18)) - 2;\n        }" ({ "{") (expression_statement "uVar37 = *(byte *)(*(int *)(puVar46 + -0x3c) + (-uVar18 & uVar18)) - 2;" (assignment_expression "uVar37 = *(byte *)(*(int *)(puVar46 + -0x3c) + (-uVar18 & uVar18)) - 2" (identifier "uVar37") (= "=") (binary_expression "*(byte *)(*(int *)(puVar46 + -0x3c) + (-uVar18 & uVar18)) - 2" (pointer_expression "*(byte *)(*(int *)(puVar46 + -0x3c) + (-uVar18 & uVar18))" (* "*") (cast_expression "(byte *)(*(int *)(puVar46 + -0x3c) + (-uVar18 & uVar18))" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(puVar46 + -0x3c) + (-uVar18 & uVar18))" (( "(") (binary_expression "*(int *)(puVar46 + -0x3c) + (-uVar18 & uVar18)" (pointer_expression "*(int *)(puVar46 + -0x3c)" (* "*") (cast_expression "(int *)(puVar46 + -0x3c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar46 + -0x3c)" (( "(") (binary_expression "puVar46 + -0x3c" (identifier "puVar46") (+ "+") (number_literal "-0x3c")) () ")")))) (+ "+") (parenthesized_expression "(-uVar18 & uVar18)" (( "(") (binary_expression "-uVar18 & uVar18" (unary_expression "-uVar18" (- "-") (identifier "uVar18")) (& "&") (identifier "uVar18")) () ")"))) () ")")))) (- "-") (number_literal "2"))) (; ";")) (} "}")))) (expression_statement "iVar41 = iVar41 - iVar33;" (assignment_expression "iVar41 = iVar41 - iVar33" (identifier "iVar41") (= "=") (binary_expression "iVar41 - iVar33" (identifier "iVar41") (- "-") (identifier "iVar33"))) (; ";")) (expression_statement "iVar6 = iVar6 + *(byte *)(*(int *)(puVar46 + -0x38) + iVar33 + -1) + uVar37;" (assignment_expression "iVar6 = iVar6 + *(byte *)(*(int *)(puVar46 + -0x38) + iVar33 + -1) + uVar37" (identifier "iVar6") (= "=") (binary_expression "iVar6 + *(byte *)(*(int *)(puVar46 + -0x38) + iVar33 + -1) + uVar37" (binary_expression "iVar6 + *(byte *)(*(int *)(puVar46 + -0x38) + iVar33 + -1)" (identifier "iVar6") (+ "+") (pointer_expression "*(byte *)(*(int *)(puVar46 + -0x38) + iVar33 + -1)" (* "*") (cast_expression "(byte *)(*(int *)(puVar46 + -0x38) + iVar33 + -1)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(puVar46 + -0x38) + iVar33 + -1)" (( "(") (binary_expression "*(int *)(puVar46 + -0x38) + iVar33 + -1" (binary_expression "*(int *)(puVar46 + -0x38) + iVar33" (pointer_expression "*(int *)(puVar46 + -0x38)" (* "*") (cast_expression "(int *)(puVar46 + -0x38)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar46 + -0x38)" (( "(") (binary_expression "puVar46 + -0x38" (identifier "puVar46") (+ "+") (number_literal "-0x38")) () ")")))) (+ "+") (identifier "iVar33")) (+ "+") (number_literal "-1")) () ")"))))) (+ "+") (identifier "uVar37"))) (; ";")) (expression_statement "uVar18 = (**(code **)(*(int *)(puVar46 + -0x78) + -0x7f9c))\n                           (puVar38,puVar38,puVar8,uVar18 >> (uVar37 & 0x1f));" (assignment_expression "uVar18 = (**(code **)(*(int *)(puVar46 + -0x78) + -0x7f9c))\n                           (puVar38,puVar38,puVar8,uVar18 >> (uVar37 & 0x1f))" (identifier "uVar18") (= "=") (call_expression "(**(code **)(*(int *)(puVar46 + -0x78) + -0x7f9c))\n                           (puVar38,puVar38,puVar8,uVar18 >> (uVar37 & 0x1f))" (parenthesized_expression "(**(code **)(*(int *)(puVar46 + -0x78) + -0x7f9c))" (( "(") (pointer_expression "**(code **)(*(int *)(puVar46 + -0x78) + -0x7f9c)" (* "*") (pointer_expression "*(code **)(*(int *)(puVar46 + -0x78) + -0x7f9c)" (* "*") (cast_expression "(code **)(*(int *)(puVar46 + -0x78) + -0x7f9c)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*(int *)(puVar46 + -0x78) + -0x7f9c)" (( "(") (binary_expression "*(int *)(puVar46 + -0x78) + -0x7f9c" (pointer_expression "*(int *)(puVar46 + -0x78)" (* "*") (cast_expression "(int *)(puVar46 + -0x78)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar46 + -0x78)" (( "(") (binary_expression "puVar46 + -0x78" (identifier "puVar46") (+ "+") (number_literal "-0x78")) () ")")))) (+ "+") (number_literal "-0x7f9c")) () ")"))))) () ")")) (argument_list "(puVar38,puVar38,puVar8,uVar18 >> (uVar37 & 0x1f))" (( "(") (identifier "puVar38") (, ",") (identifier "puVar38") (, ",") (identifier "puVar8") (, ",") (binary_expression "uVar18 >> (uVar37 & 0x1f)" (identifier "uVar18") (>> ">>") (parenthesized_expression "(uVar37 & 0x1f)" (( "(") (binary_expression "uVar37 & 0x1f" (identifier "uVar37") (& "&") (number_literal "0x1f")) () ")"))) () ")")))) (; ";")) (expression_statement "puVar43 = *(undefined **)(puVar46 + -0x78);" (assignment_expression "puVar43 = *(undefined **)(puVar46 + -0x78)" (identifier "puVar43") (= "=") (pointer_expression "*(undefined **)(puVar46 + -0x78)" (* "*") (cast_expression "(undefined **)(puVar46 + -0x78)" (( "(") (type_descriptor "undefined **" (type_identifier "undefined") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar46 + -0x78)" (( "(") (binary_expression "puVar46 + -0x78" (identifier "puVar46") (+ "+") (number_literal "-0x78")) () ")"))))) (; ";")) (expression_statement "puVar31 = puVar38 + (int)puVar8;" (assignment_expression "puVar31 = puVar38 + (int)puVar8" (identifier "puVar31") (= "=") (binary_expression "puVar38 + (int)puVar8" (identifier "puVar38") (+ "+") (cast_expression "(int)puVar8" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar8")))) (; ";")) (expression_statement "puVar8 = (uint *)((int)puVar8 + (uint)(uVar18 != 0));" (assignment_expression "puVar8 = (uint *)((int)puVar8 + (uint)(uVar18 != 0))" (identifier "puVar8") (= "=") (cast_expression "(uint *)((int)puVar8 + (uint)(uVar18 != 0))" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar8 + (uint)(uVar18 != 0))" (( "(") (binary_expression "(int)puVar8 + (uint)(uVar18 != 0)" (cast_expression "(int)puVar8" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar8")) (+ "+") (call_expression "(uint)(uVar18 != 0)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(uVar18 != 0)" (( "(") (binary_expression "uVar18 != 0" (identifier "uVar18") (!= "!=") (number_literal "0")) () ")")))) () ")")))) (; ";")) (expression_statement "*puVar31 = uVar18;" (assignment_expression "*puVar31 = uVar18" (pointer_expression "*puVar31" (* "*") (identifier "puVar31")) (= "=") (identifier "uVar18")) (; ";")) (expression_statement "iVar24 = iVar29;" (assignment_expression "iVar24 = iVar29" (identifier "iVar24") (= "=") (identifier "iVar29")) (; ";")) (} "}")) (while "while") (parenthesized_expression "(iVar41 != 0)" (( "(") (binary_expression "iVar41 != 0" (identifier "iVar41") (!= "!=") (number_literal "0")) () ")")) (; ";")) (expression_statement "uVar7 = *(uint *)(puVar46 + -0x44);" (assignment_expression "uVar7 = *(uint *)(puVar46 + -0x44)" (identifier "uVar7") (= "=") (pointer_expression "*(uint *)(puVar46 + -0x44)" (* "*") (cast_expression "(uint *)(puVar46 + -0x44)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar46 + -0x44)" (( "(") (binary_expression "puVar46 + -0x44" (identifier "puVar46") (+ "+") (number_literal "-0x44")) () ")"))))) (; ";")) (expression_statement "puVar31 = *(uint **)(puVar46 + -0x50);" (assignment_expression "puVar31 = *(uint **)(puVar46 + -0x50)" (identifier "puVar31") (= "=") (pointer_expression "*(uint **)(puVar46 + -0x50)" (* "*") (cast_expression "(uint **)(puVar46 + -0x50)" (( "(") (type_descriptor "uint **" (type_identifier "uint") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar46 + -0x50)" (( "(") (binary_expression "puVar46 + -0x50" (identifier "puVar46") (+ "+") (number_literal "-0x50")) () ")"))))) (; ";")) (expression_statement "puVar36 = *(uint **)(puVar46 + -0x54);" (assignment_expression "puVar36 = *(uint **)(puVar46 + -0x54)" (identifier "puVar36") (= "=") (pointer_expression "*(uint **)(puVar46 + -0x54)" (* "*") (cast_expression "(uint **)(puVar46 + -0x54)" (( "(") (type_descriptor "uint **" (type_identifier "uint") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar46 + -0x54)" (( "(") (binary_expression "puVar46 + -0x54" (identifier "puVar46") (+ "+") (number_literal "-0x54")) () ")"))))) (; ";")) (expression_statement "iVar39 = *(int *)(puVar46 + -0x58);" (assignment_expression "iVar39 = *(int *)(puVar46 + -0x58)" (identifier "iVar39") (= "=") (pointer_expression "*(int *)(puVar46 + -0x58)" (* "*") (cast_expression "(int *)(puVar46 + -0x58)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar46 + -0x58)" (( "(") (binary_expression "puVar46 + -0x58" (identifier "puVar46") (+ "+") (number_literal "-0x58")) () ")"))))) (; ";")) (expression_statement "*(int *)(puVar46 + -0x48) = iVar6;" (assignment_expression "*(int *)(puVar46 + -0x48) = iVar6" (pointer_expression "*(int *)(puVar46 + -0x48)" (* "*") (cast_expression "(int *)(puVar46 + -0x48)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar46 + -0x48)" (( "(") (binary_expression "puVar46 + -0x48" (identifier "puVar46") (+ "+") (number_literal "-0x48")) () ")")))) (= "=") (identifier "iVar6")) (; ";")) (expression_statement "iVar24 = *(int *)(puVar46 + -0x5c);" (assignment_expression "iVar24 = *(int *)(puVar46 + -0x5c)" (identifier "iVar24") (= "=") (pointer_expression "*(int *)(puVar46 + -0x5c)" (* "*") (cast_expression "(int *)(puVar46 + -0x5c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar46 + -0x5c)" (( "(") (binary_expression "puVar46 + -0x5c" (identifier "puVar46") (+ "+") (number_literal "-0x5c")) () ")"))))) (; ";")) (} "}"))) (expression_statement "uVar37 = *puVar36;" (assignment_expression "uVar37 = *puVar36" (identifier "uVar37") (= "=") (pointer_expression "*puVar36" (* "*") (identifier "puVar36"))) (; ";")) (expression_statement "pcVar51 = *(code **)(puVar43 + -0x7bc0);" (assignment_expression "pcVar51 = *(code **)(puVar43 + -0x7bc0)" (identifier "pcVar51") (= "=") (pointer_expression "*(code **)(puVar43 + -0x7bc0)" (* "*") (cast_expression "(code **)(puVar43 + -0x7bc0)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar43 + -0x7bc0)" (( "(") (binary_expression "puVar43 + -0x7bc0" (identifier "puVar43") (+ "+") (number_literal "-0x7bc0")) () ")"))))) (; ";")) (expression_statement "uVar18 = (uint)*(byte *)(*(int *)(puVar46 + -100) + ((uVar37 << 0x18) >> 0x19));" (assignment_expression "uVar18 = (uint)*(byte *)(*(int *)(puVar46 + -100) + ((uVar37 << 0x18) >> 0x19))" (identifier "uVar18") (= "=") (binary_expression "(uint)*(byte *)(*(int *)(puVar46 + -100) + ((uVar37 << 0x18) >> 0x19))" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (cast_expression "(byte *)(*(int *)(puVar46 + -100) + ((uVar37 << 0x18) >> 0x19))" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(puVar46 + -100) + ((uVar37 << 0x18) >> 0x19))" (( "(") (binary_expression "*(int *)(puVar46 + -100) + ((uVar37 << 0x18) >> 0x19)" (pointer_expression "*(int *)(puVar46 + -100)" (* "*") (cast_expression "(int *)(puVar46 + -100)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar46 + -100)" (( "(") (binary_expression "puVar46 + -100" (identifier "puVar46") (+ "+") (number_literal "-100")) () ")")))) (+ "+") (parenthesized_expression "((uVar37 << 0x18) >> 0x19)" (( "(") (binary_expression "(uVar37 << 0x18) >> 0x19" (parenthesized_expression "(uVar37 << 0x18)" (( "(") (binary_expression "uVar37 << 0x18" (identifier "uVar37") (<< "<<") (number_literal "0x18")) () ")")) (>> ">>") (number_literal "0x19")) () ")"))) () ")"))))) (; ";")) (expression_statement "puVar8 = (uint *)((int)puVar8 +\n                     ((puVar38[(int)((int)puVar8 + iVar24)] < **(uint **)(puVar46 + -0x4c) ^ 1) -\n                     (int)puVar31));" (assignment_expression "puVar8 = (uint *)((int)puVar8 +\n                     ((puVar38[(int)((int)puVar8 + iVar24)] < **(uint **)(puVar46 + -0x4c) ^ 1) -\n                     (int)puVar31))" (identifier "puVar8") (= "=") (cast_expression "(uint *)((int)puVar8 +\n                     ((puVar38[(int)((int)puVar8 + iVar24)] < **(uint **)(puVar46 + -0x4c) ^ 1) -\n                     (int)puVar31))" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar8 +\n                     ((puVar38[(int)((int)puVar8 + iVar24)] < **(uint **)(puVar46 + -0x4c) ^ 1) -\n                     (int)puVar31))" (( "(") (binary_expression "(int)puVar8 +\n                     ((puVar38[(int)((int)puVar8 + iVar24)] < **(uint **)(puVar46 + -0x4c) ^ 1) -\n                     (int)puVar31)" (cast_expression "(int)puVar8" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar8")) (+ "+") (parenthesized_expression "((puVar38[(int)((int)puVar8 + iVar24)] < **(uint **)(puVar46 + -0x4c) ^ 1) -\n                     (int)puVar31)" (( "(") (binary_expression "(puVar38[(int)((int)puVar8 + iVar24)] < **(uint **)(puVar46 + -0x4c) ^ 1) -\n                     (int)puVar31" (parenthesized_expression "(puVar38[(int)((int)puVar8 + iVar24)] < **(uint **)(puVar46 + -0x4c) ^ 1)" (( "(") (binary_expression "puVar38[(int)((int)puVar8 + iVar24)] < **(uint **)(puVar46 + -0x4c) ^ 1" (binary_expression "puVar38[(int)((int)puVar8 + iVar24)] < **(uint **)(puVar46 + -0x4c)" (subscript_expression "puVar38[(int)((int)puVar8 + iVar24)]" (identifier "puVar38") ([ "[") (cast_expression "(int)((int)puVar8 + iVar24)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "((int)puVar8 + iVar24)" (( "(") (binary_expression "(int)puVar8 + iVar24" (cast_expression "(int)puVar8" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar8")) (+ "+") (identifier "iVar24")) () ")"))) (] "]")) (< "<") (pointer_expression "**(uint **)(puVar46 + -0x4c)" (* "*") (pointer_expression "*(uint **)(puVar46 + -0x4c)" (* "*") (cast_expression "(uint **)(puVar46 + -0x4c)" (( "(") (type_descriptor "uint **" (type_identifier "uint") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar46 + -0x4c)" (( "(") (binary_expression "puVar46 + -0x4c" (identifier "puVar46") (+ "+") (number_literal "-0x4c")) () ")")))))) (^ "^") (number_literal "1")) () ")")) (- "-") (cast_expression "(int)puVar31" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar31"))) () ")"))) () ")")))) (; ";")) (expression_statement "iVar24 = uVar18 * 2 - uVar18 * uVar18 * uVar37;" (assignment_expression "iVar24 = uVar18 * 2 - uVar18 * uVar18 * uVar37" (identifier "iVar24") (= "=") (binary_expression "uVar18 * 2 - uVar18 * uVar18 * uVar37" (binary_expression "uVar18 * 2" (identifier "uVar18") (* "*") (number_literal "2")) (- "-") (binary_expression "uVar18 * uVar18 * uVar37" (binary_expression "uVar18 * uVar18" (identifier "uVar18") (* "*") (identifier "uVar18")) (* "*") (identifier "uVar37")))) (; ";")) (if_statement "if ((int)puVar8 < (int)puVar31) {\n      puVar31 = puVar8;\n    }" (if "if") (parenthesized_expression "((int)puVar8 < (int)puVar31)" (( "(") (binary_expression "(int)puVar8 < (int)puVar31" (cast_expression "(int)puVar8" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar8")) (< "<") (cast_expression "(int)puVar31" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar31"))) () ")")) (compound_statement "{\n      puVar31 = puVar8;\n    }" ({ "{") (expression_statement "puVar31 = puVar8;" (assignment_expression "puVar31 = puVar8" (identifier "puVar31") (= "=") (identifier "puVar8")) (; ";")) (} "}"))) (expression_statement "*(uint **)(puVar47 + -0x48) = puVar31;" (assignment_expression "*(uint **)(puVar47 + -0x48) = puVar31" (pointer_expression "*(uint **)(puVar47 + -0x48)" (* "*") (cast_expression "(uint **)(puVar47 + -0x48)" (( "(") (type_descriptor "uint **" (type_identifier "uint") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar47 + -0x48)" (( "(") (binary_expression "puVar47 + -0x48" (identifier "puVar47") (+ "+") (number_literal "-0x48")) () ")")))) (= "=") (identifier "puVar31")) (; ";")) (expression_statement "*(uint *)(puVar47 + -0x44) = iVar24 * iVar24 * uVar37 + iVar24 * -2;" (assignment_expression "*(uint *)(puVar47 + -0x44) = iVar24 * iVar24 * uVar37 + iVar24 * -2" (pointer_expression "*(uint *)(puVar47 + -0x44)" (* "*") (cast_expression "(uint *)(puVar47 + -0x44)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar47 + -0x44)" (( "(") (binary_expression "puVar47 + -0x44" (identifier "puVar47") (+ "+") (number_literal "-0x44")) () ")")))) (= "=") (binary_expression "iVar24 * iVar24 * uVar37 + iVar24 * -2" (binary_expression "iVar24 * iVar24 * uVar37" (binary_expression "iVar24 * iVar24" (identifier "iVar24") (* "*") (identifier "iVar24")) (* "*") (identifier "uVar37")) (+ "+") (binary_expression "iVar24 * -2" (identifier "iVar24") (* "*") (number_literal "-2")))) (; ";")) (expression_statement "puVar9 = puVar38;" (assignment_expression "puVar9 = puVar38" (identifier "puVar9") (= "=") (identifier "puVar38")) (; ";")) (expression_statement "puVar22 = puVar8;" (assignment_expression "puVar22 = puVar8" (identifier "puVar22") (= "=") (identifier "puVar8")) (; ";")) (expression_statement "(*pcVar51)(puVar38,puVar38,puVar8,puVar36);" (call_expression "(*pcVar51)(puVar38,puVar38,puVar8,puVar36)" (parenthesized_expression "(*pcVar51)" (( "(") (pointer_expression "*pcVar51" (* "*") (identifier "pcVar51")) () ")")) (argument_list "(puVar38,puVar38,puVar8,puVar36)" (( "(") (identifier "puVar38") (, ",") (identifier "puVar38") (, ",") (identifier "puVar8") (, ",") (identifier "puVar36") () ")"))) (; ";")) (expression_statement "iVar24 = *(int *)(puVar46 + -0x78);" (assignment_expression "iVar24 = *(int *)(puVar46 + -0x78)" (identifier "iVar24") (= "=") (pointer_expression "*(int *)(puVar46 + -0x78)" (* "*") (cast_expression "(int *)(puVar46 + -0x78)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar46 + -0x78)" (( "(") (binary_expression "puVar46 + -0x78" (identifier "puVar46") (+ "+") (number_literal "-0x78")) () ")"))))) (; ";")) (if_statement "if (uVar7 == 0) {\n      if (*(int *)(puVar46 + -0x48) == *(int *)(puVar46 + -0x40)) {\n        puVar8 = (uint *)((int)puVar8 - (uint)(puVar38[(int)((int)puVar8 + -1)] == 0));\n        pcVar51 = *(code **)(iVar24 + -0x7a80);\n        if ((int)puVar8 <= **(int **)(puVar46 + -0x6c)) goto LAB_00022600;\nLAB_00022734:\n        puVar9 = puVar8;\n        puVar19 = (undefined4 *)(*pcVar51)(*(undefined4 *)(puVar46 + -0x6c));\n        iVar24 = *(int *)(puVar46 + -0x78);\n      }\n      else {\n        puVar9 = puVar38;\n        puVar22 = puVar8;\n        uVar18 = (**(code **)(iVar24 + -0x7ad4))(puVar38);\n        iVar24 = *(int *)(puVar46 + -0x78);\n        puVar38[(int)puVar8] = uVar18;\n        puVar8 = (uint *)((int)puVar8 +\n                         ((uint)(uVar18 != 0) -\n                         (uint)(puVar38[(int)((int)puVar8 + ((uVar18 != 0) - 1))] == 0)));\n        pcVar51 = *(code **)(iVar24 + -0x7a80);\n        if (**(int **)(puVar46 + -0x6c) < (int)puVar8) goto LAB_00022734;\nLAB_00022600:\n        puVar19 = *(undefined4 **)(*(int *)(puVar46 + -0x6c) + 8);\n      }\n      *(uint **)(*(int *)(puVar46 + -0x6c) + 4) = puVar8;\n      if (puVar8 != (uint *)0x0) {\n        puVar13 = (undefined1 *)((int)puVar8 + -1);\n        puVar9 = (uint *)*puVar38;\n        if (puVar13 != (undefined1 *)0x0) {\n          puVar15 = puVar19;\n          puVar16 = puVar38 + 1;\n          do {\n            *puVar15 = puVar9;\n            puVar38 = puVar16 + 1;\n            puVar13 = puVar13 + -1;\n            puVar9 = (uint *)*puVar16;\n            puVar15 = puVar15 + 1;\n            puVar16 = puVar38;\n          } while (puVar13 != (undefined1 *)0x0);\n          puVar8 = (uint *)((int)puVar8 * 4);\n          puVar19 = (undefined4 *)((int)puVar19 + (int)(puVar8 + -1));\n        }\n        *puVar19 = puVar9;\n      }\n      puVar16 = *(uint **)(puVar46 + -0x30);\n      if (puVar16 != (uint *)0x0) {\n        (**(code **)(iVar24 + -0x7a28))();\n        iVar24 = *(int *)(puVar46 + -0x78);\n      }\n      if (*(int *)(puVar46 + -0x2c) == **(int **)(puVar46 + -0x70)) {\n        return **(int **)(puVar46 + -0x70);\n      }\n      pcVar51 = *(code **)(iVar24 + -0x7b70);\n      pcVar52 = __gmpz_bin_uiui;\n      (*pcVar51)();\n      pcVar44 = pcVar51 + 0x8289c;\n      *(uint **)(puVar47 + -0x78) = puVar31;\n      piVar32 = *(int **)(pcVar51 + 0x7ad9c);\n      *(code **)(puVar47 + -0xf0) = pcVar44;\n      *(int *)(puVar47 + -0x74) = iVar39;\n      *(code **)(puVar47 + -0x5c) = pcVar52;\n      *(undefined1 **)(puVar47 + -0x60) = puVar46 + -0x90;\n      *(int *)(puVar47 + -100) = iVar6;\n      *(int *)(puVar47 + -0x68) = iVar29;\n      *(uint **)(puVar47 + -0x6c) = puVar38;\n      *(uint **)(puVar47 + -0x70) = puVar36;\n      *(uint **)(puVar47 + -0x7c) = puVar8;\n      *(undefined4 *)(puVar47 + -0x80) = 0;\n      *(int *)(puVar47 + -0x84) = *piVar32;\n      puVar31 = puVar16;\n      puVar20 = puVar9;\n      if (puVar9 < puVar22) {\n        puVar16[1] = 0;\n        puVar30 = (uint *)0x0;\n      }\n      else {\n        puVar30 = puVar22;\n        if ((uint *)((int)puVar9 - (int)puVar22) <= puVar22) {\n          puVar30 = (uint *)((int)puVar9 - (int)puVar22);\n        }\n        puVar22 = puVar30;\n        puVar36 = puVar9;\n        if (puVar30 < (uint *)0x2) {\n          if (puVar30 == (uint *)0x0) {\n            puVar36 = (uint *)0x1;\n          }\n          *(uint **)puVar16[2] = puVar36;\n          puVar16[1] = 1;\n          puVar49 = puVar46 + -0x90;\n        }\n        else if (puVar9 < (uint *)0x23) {\n          puVar13 = (undefined1 *)((int)puVar30 + -2);\n          iVar6 = *(int *)(pcVar51 + 0x7aa7c);\n          puVar20 = (uint *)puVar16[2];\n          uVar18 = (int)puVar9 - (int)puVar30;\n          puVar36 = (uint *)(iVar6 + ((uint)puVar9 >> 1));\n          puVar30 = (uint *)(iVar6 + ((uint)puVar30 >> 1));\n          bVar2 = *(byte *)((int)puVar30 + -1);\n          puVar31 = (uint *)(uint)*(byte *)(iVar6 + (uVar18 >> 1) + -1);\n          *puVar20 = *(int *)((int)puVar13 * 4 + *(int *)(pcVar51 + 0x7a8c8) + 0x35b4) *\n                     *(int *)(*(int *)(pcVar51 + 0x7ad64) + (int)puVar9 * 4) *\n                     *(int *)((uVar18 - 2) * 4 + *(int *)(pcVar51 + 0x7a8c8) + 0x35b4) <<\n                     (((uint)*(byte *)((int)puVar36 + -1) - (int)(uint)bVar2) - (int)puVar31 & 0x1f)\n          ;\n          puVar16[1] = 1;\n          puVar22 = (uint *)(uint)bVar2;\n          puVar49 = puVar46 + -0x90;\n        }\n        else if (puVar30 < &DAT_00000011) {\n          FUN_000216e8();\n          pcVar44 = *(code **)(puVar47 + -0xf0);\n          puVar49 = puVar46 + -0x90;\n        }\n        else if (puVar30 < &DAT_00000021) {\n          uVar18 = (uint)puVar30 >> 1;\n          uVar37 = (int)puVar9 - uVar18;\n          FUN_000216e8();\n          iVar6 = *(int *)(puVar47 + -0xf0);\n          uVar7 = (int)puVar30 - uVar18;\n          if (uVar37 < 0x23) {\n            puVar50 = (undefined1 *)puVar16[1];\n            if ((int)puVar50 < (int)*puVar16) {\n              puVar8 = (uint *)puVar16[2];\n            }\n            else {\n              puVar8 = (uint *)(**(code **)(iVar6 + -0x7a80))(puVar16,puVar50 + 1);\n              iVar6 = *(int *)(puVar47 + -0xf0);\n            }\n            iVar29 = *(int *)(iVar6 + -0x7e20);\n            iVar24 = *(int *)(iVar6 + -0x7fd4) + 0x35b4;\n            uVar37 = (**(code **)(iVar6 + -0x7f9c))\n                               (puVar8,puVar8,puVar50,\n                                *(int *)((((int)puVar9 - (int)puVar30) - 2U) * 4 + iVar24) *\n                                *(int *)(*(int *)(iVar6 + -0x7b38) + uVar37 * 4) *\n                                *(int *)((uVar7 - 2) * 4 + iVar24) <<\n                                (((uint)*(byte *)(iVar29 + (uVar37 >> 1) + -1) -\n                                 (uint)*(byte *)(iVar29 + (uVar7 >> 1) + -1)) -\n                                 (uint)*(byte *)(iVar29 + ((uint)((int)puVar9 - (int)puVar30) >> 1)\n                                                + -1) & 0x1f));\n            iVar6 = *(int *)(puVar47 + -0xf0);\n            puVar30 = (uint *)(puVar50 + (uVar37 != 0));\n            puVar8[(int)puVar50] = uVar37;\n          }\n          else {\n            *(undefined4 *)(puVar47 + -0xe4) = 0x15;\n            *(undefined1 **)(puVar47 + -0xdc) = puVar47 + -0xd8;\n            FUN_000216e8(puVar47 + -0xe4,uVar37,uVar7);\n            (**(code **)(*(int *)(puVar47 + -0xf0) + -0x7ba8))(puVar16,puVar16,puVar47 + -0xe4);\n            iVar6 = *(int *)(puVar47 + -0xf0);\n            puVar8 = (uint *)puVar16[2];\n            puVar30 = (uint *)puVar16[1];\n          }\n          pcVar51 = *(code **)(iVar6 + -0x7bb4);\n          puVar38 = (uint *)((uint)*(byte *)((uVar7 - 8) + *(int *)(iVar6 + -0x7fd4) + 0x3550) -\n                            (uint)(uVar18 != uVar7));\n          *(undefined4 *)(puVar47 + -0xf8) =\n               *(undefined4 *)((uVar7 - 8) * 4 + *(int *)(iVar6 + -0x7fd4) + 0x355c);\n          *(uint **)(puVar47 + -0xf4) = puVar38;\n          puVar31 = puVar8;\n          puVar20 = puVar8;\n          puVar22 = puVar30;\n          (*pcVar51)();\n          pcVar44 = *(code **)(puVar47 + -0xf0);\n          if (puVar8[(int)((int)puVar30 + -1)] == 0) {\n            puVar9 = puVar8 + (int)puVar30;\n            do {\n              puVar1 = puVar9 + -2;\n              puVar30 = (uint *)((int)puVar30 + -1);\n              puVar9 = puVar9 + -1;\n            } while (*puVar1 == 0);\n          }\n          puVar16[1] = (uint)puVar30;\n          puVar49 = puVar50;\n        }\n        else if ((puVar30 < (uint *)0x3e8) || (puVar30 <= (uint *)((uint)puVar9 >> 4))) {\n          FUN_0002209c();\n          pcVar44 = *(code **)(puVar47 + -0xf0);\n          puVar49 = puVar46 + -0x90;\n        }\n        else {\n          FUN_000219dc();\n          pcVar44 = *(code **)(puVar47 + -0xf0);\n          puVar49 = puVar46 + -0x90;\n        }\n      }\n      if (*(int *)(puVar47 + -0x84) == *piVar32) {\n        return *piVar32;\n      }\n      pcVar51 = *(code **)(pcVar44 + -0x7b70);\n      uVar10 = 0x22b64;\n      (*pcVar51)();\n      pcVar44 = pcVar51 + 0x824d0;\n      puVar48 = puVar47 + -0x160;\n      *(uint **)(puVar47 + -0x118) = puVar16;\n      *(uint **)(puVar47 + -0x124) = puVar30;\n      piVar34 = *(int **)(pcVar51 + 0x7a9d0);\n      uVar18 = puVar22[1];\n      *(undefined1 **)(puVar47 + -0x110) = puVar49;\n      *(uint **)(puVar47 + -0x114) = puVar36;\n      *(int **)(puVar47 + -0x11c) = piVar32;\n      *(uint **)(puVar47 + -0x120) = puVar8;\n      *(undefined4 *)(puVar47 + -0x10c) = uVar10;\n      *(code **)(puVar47 + -0x150) = pcVar44;\n      *(undefined4 *)(puVar47 + -0x13c) = 0;\n      puVar8 = (uint *)puVar20[1];\n      *(int *)(puVar47 + -300) = *piVar34;\n      if ((int)uVar18 < 0) {\n        uVar37 = uVar18 * -4;\n        *(uint *)(puVar47 + -0x138) = -uVar18;\n        if (0x7f00 < uVar37) {\n          pcVar51 = *(code **)(pcVar51 + 0x7a780);\n          goto LAB_00022c88;\n        }\nLAB_00022be4:\n        iVar6 = -(uVar37 + 7 & 0xfffffff8);\n        puVar48 = puVar47 + iVar6 + -0x160;\n        puVar13 = puVar47 + iVar6 + -0x150;\n      }\n      else {\n        uVar37 = uVar18 * 4;\n        *(uint *)(puVar47 + -0x138) = uVar18;\n        pcVar51 = *(code **)(pcVar51 + 0x7a780);\n        if (uVar37 < 0x7f01) goto LAB_00022be4;\nLAB_00022c88:\n        *(uint **)(puVar47 + -0x144) = puVar22;\n        puVar13 = (undefined1 *)(*pcVar51)(puVar47 + -0x13c,uVar37);\n        pcVar44 = *(code **)(puVar47 + -0x150);\n        puVar22 = *(uint **)(puVar47 + -0x144);\n      }\n      pcVar51 = *(code **)(pcVar44 + -0x7a68);\n      puVar36 = (uint *)(puVar47 + -0x138);\n      *(undefined1 **)(puVar47 + -0x130) = puVar13;\n      puVar9 = puVar20;\n      (*pcVar51)(puVar31,puVar36,puVar20,puVar22);\n      iVar6 = *(int *)(puVar47 + -0x150);\n      if (((int)((uint)puVar8 ^ uVar18) < 0) || (*(int *)(puVar47 + -0x134) == 0)) {\n        piVar32 = *(int **)(puVar47 + -0x13c);\n        pcVar51 = *(code **)(iVar6 + -0x7a28);\n        if (piVar32 != (int *)0x0) goto LAB_00022cc0;\n      }\n      else {\n        puVar9 = (uint *)0x1;\n        puVar36 = puVar31;\n        (**(code **)(iVar6 + -0x7c9c))(puVar31);\n        piVar32 = *(int **)(puVar47 + -0x13c);\n        iVar6 = *(int *)(puVar47 + -0x150);\n        if (piVar32 != (int *)0x0) {\n          pcVar51 = *(code **)(iVar6 + -0x7a28);\nLAB_00022cc0:\n          (*pcVar51)();\n          iVar6 = *(int *)(puVar47 + -0x150);\n        }\n      }\n      if (*(int *)(puVar47 + -300) == *piVar34) {\n        return *piVar34;\n      }\n      pcVar51 = *(code **)(iVar6 + -0x7b70);\n      uVar10 = 0x22cdc;\n      (*pcVar51)();\n      pcVar44 = pcVar51 + 0x82360;\n      *(code **)(puVar48 + -0x28) = pcVar44;\n      *(undefined4 *)(puVar48 + -4) = uVar10;\n      *(uint **)(puVar48 + -8) = puVar38;\n      *(uint **)(puVar48 + -0xc) = puVar20;\n      *(int **)(puVar48 + -0x10) = piVar34;\n      *(uint **)(puVar48 + -0x14) = puVar31;\n      *(uint **)(puVar48 + -0x18) = puVar8;\n      *(uint *)(puVar48 + -0x1c) = (uint)puVar8 ^ uVar18;\n      if (puVar9 == (uint *)0x0) {\n        pcVar51 = *(code **)(pcVar51 + 0x7a900);\n        (*pcVar51)();\nLAB_00022e2c:\n        piVar32 = (int *)(*pcVar51)(piVar34,puVar31);\n        pcVar44 = *(code **)(puVar48 + -0x28);\n      }\n      else {\n        puVar8 = (uint *)puVar36[1];\n        if (puVar8 == (uint *)0x0) {\n          piVar32[1] = 0;\n          return 0;\n        }\n        puVar31 = puVar8;\n        if ((int)puVar8 < 0) {\n          puVar31 = (uint *)-(int)puVar8;\n        }\n        pcVar51 = *(code **)(pcVar51 + 0x7a8e0);\n        piVar34 = piVar32;\n        puVar20 = puVar9;\n        puVar38 = puVar36;\n        if (*piVar32 < (int)puVar31) goto LAB_00022e2c;\n        piVar32 = (int *)piVar32[2];\n      }\n      pcVar51 = *(code **)(pcVar44 + -0x7d98);\n      uVar18 = puVar38[2];\n      *(uint **)(puVar48 + -0x30) = puVar20;\n      iVar6 = (*pcVar51)(piVar32,0,uVar18,puVar31);\n      piVar17 = piVar32 + (int)puVar31 + -1;\n      if (iVar6 == 0) {\n        uVar18 = (uint)(*piVar17 == 0);\n        if (-1 < (int)puVar8) {\n          iVar24 = (int)puVar31 - uVar18;\n          goto LAB_00022d9c;\n        }\n      }\n      else {\n        if (-1 < (int)puVar8) {\n          do {\n            iVar24 = *piVar32;\n            *piVar32 = iVar24 + 1;\n            piVar32 = piVar32 + 1;\n          } while (iVar24 + 1 == 0);\n          iVar6 = (int)puVar20 - iVar6;\n          iVar24 = (int)puVar31 - (uint)(*piVar17 == 0);\n          goto LAB_00022d9c;\n        }\n        uVar18 = (uint)(*piVar17 == 0);\n      }\n      iVar24 = uVar18 - (int)puVar31;\nLAB_00022d9c:\n      piVar34[1] = iVar24;\n      return iVar6;\n    }" (if "if") (parenthesized_expression "(uVar7 == 0)" (( "(") (binary_expression "uVar7 == 0" (identifier "uVar7") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      if (*(int *)(puVar46 + -0x48) == *(int *)(puVar46 + -0x40)) {\n        puVar8 = (uint *)((int)puVar8 - (uint)(puVar38[(int)((int)puVar8 + -1)] == 0));\n        pcVar51 = *(code **)(iVar24 + -0x7a80);\n        if ((int)puVar8 <= **(int **)(puVar46 + -0x6c)) goto LAB_00022600;\nLAB_00022734:\n        puVar9 = puVar8;\n        puVar19 = (undefined4 *)(*pcVar51)(*(undefined4 *)(puVar46 + -0x6c));\n        iVar24 = *(int *)(puVar46 + -0x78);\n      }\n      else {\n        puVar9 = puVar38;\n        puVar22 = puVar8;\n        uVar18 = (**(code **)(iVar24 + -0x7ad4))(puVar38);\n        iVar24 = *(int *)(puVar46 + -0x78);\n        puVar38[(int)puVar8] = uVar18;\n        puVar8 = (uint *)((int)puVar8 +\n                         ((uint)(uVar18 != 0) -\n                         (uint)(puVar38[(int)((int)puVar8 + ((uVar18 != 0) - 1))] == 0)));\n        pcVar51 = *(code **)(iVar24 + -0x7a80);\n        if (**(int **)(puVar46 + -0x6c) < (int)puVar8) goto LAB_00022734;\nLAB_00022600:\n        puVar19 = *(undefined4 **)(*(int *)(puVar46 + -0x6c) + 8);\n      }\n      *(uint **)(*(int *)(puVar46 + -0x6c) + 4) = puVar8;\n      if (puVar8 != (uint *)0x0) {\n        puVar13 = (undefined1 *)((int)puVar8 + -1);\n        puVar9 = (uint *)*puVar38;\n        if (puVar13 != (undefined1 *)0x0) {\n          puVar15 = puVar19;\n          puVar16 = puVar38 + 1;\n          do {\n            *puVar15 = puVar9;\n            puVar38 = puVar16 + 1;\n            puVar13 = puVar13 + -1;\n            puVar9 = (uint *)*puVar16;\n            puVar15 = puVar15 + 1;\n            puVar16 = puVar38;\n          } while (puVar13 != (undefined1 *)0x0);\n          puVar8 = (uint *)((int)puVar8 * 4);\n          puVar19 = (undefined4 *)((int)puVar19 + (int)(puVar8 + -1));\n        }\n        *puVar19 = puVar9;\n      }\n      puVar16 = *(uint **)(puVar46 + -0x30);\n      if (puVar16 != (uint *)0x0) {\n        (**(code **)(iVar24 + -0x7a28))();\n        iVar24 = *(int *)(puVar46 + -0x78);\n      }\n      if (*(int *)(puVar46 + -0x2c) == **(int **)(puVar46 + -0x70)) {\n        return **(int **)(puVar46 + -0x70);\n      }\n      pcVar51 = *(code **)(iVar24 + -0x7b70);\n      pcVar52 = __gmpz_bin_uiui;\n      (*pcVar51)();\n      pcVar44 = pcVar51 + 0x8289c;\n      *(uint **)(puVar47 + -0x78) = puVar31;\n      piVar32 = *(int **)(pcVar51 + 0x7ad9c);\n      *(code **)(puVar47 + -0xf0) = pcVar44;\n      *(int *)(puVar47 + -0x74) = iVar39;\n      *(code **)(puVar47 + -0x5c) = pcVar52;\n      *(undefined1 **)(puVar47 + -0x60) = puVar46 + -0x90;\n      *(int *)(puVar47 + -100) = iVar6;\n      *(int *)(puVar47 + -0x68) = iVar29;\n      *(uint **)(puVar47 + -0x6c) = puVar38;\n      *(uint **)(puVar47 + -0x70) = puVar36;\n      *(uint **)(puVar47 + -0x7c) = puVar8;\n      *(undefined4 *)(puVar47 + -0x80) = 0;\n      *(int *)(puVar47 + -0x84) = *piVar32;\n      puVar31 = puVar16;\n      puVar20 = puVar9;\n      if (puVar9 < puVar22) {\n        puVar16[1] = 0;\n        puVar30 = (uint *)0x0;\n      }\n      else {\n        puVar30 = puVar22;\n        if ((uint *)((int)puVar9 - (int)puVar22) <= puVar22) {\n          puVar30 = (uint *)((int)puVar9 - (int)puVar22);\n        }\n        puVar22 = puVar30;\n        puVar36 = puVar9;\n        if (puVar30 < (uint *)0x2) {\n          if (puVar30 == (uint *)0x0) {\n            puVar36 = (uint *)0x1;\n          }\n          *(uint **)puVar16[2] = puVar36;\n          puVar16[1] = 1;\n          puVar49 = puVar46 + -0x90;\n        }\n        else if (puVar9 < (uint *)0x23) {\n          puVar13 = (undefined1 *)((int)puVar30 + -2);\n          iVar6 = *(int *)(pcVar51 + 0x7aa7c);\n          puVar20 = (uint *)puVar16[2];\n          uVar18 = (int)puVar9 - (int)puVar30;\n          puVar36 = (uint *)(iVar6 + ((uint)puVar9 >> 1));\n          puVar30 = (uint *)(iVar6 + ((uint)puVar30 >> 1));\n          bVar2 = *(byte *)((int)puVar30 + -1);\n          puVar31 = (uint *)(uint)*(byte *)(iVar6 + (uVar18 >> 1) + -1);\n          *puVar20 = *(int *)((int)puVar13 * 4 + *(int *)(pcVar51 + 0x7a8c8) + 0x35b4) *\n                     *(int *)(*(int *)(pcVar51 + 0x7ad64) + (int)puVar9 * 4) *\n                     *(int *)((uVar18 - 2) * 4 + *(int *)(pcVar51 + 0x7a8c8) + 0x35b4) <<\n                     (((uint)*(byte *)((int)puVar36 + -1) - (int)(uint)bVar2) - (int)puVar31 & 0x1f)\n          ;\n          puVar16[1] = 1;\n          puVar22 = (uint *)(uint)bVar2;\n          puVar49 = puVar46 + -0x90;\n        }\n        else if (puVar30 < &DAT_00000011) {\n          FUN_000216e8();\n          pcVar44 = *(code **)(puVar47 + -0xf0);\n          puVar49 = puVar46 + -0x90;\n        }\n        else if (puVar30 < &DAT_00000021) {\n          uVar18 = (uint)puVar30 >> 1;\n          uVar37 = (int)puVar9 - uVar18;\n          FUN_000216e8();\n          iVar6 = *(int *)(puVar47 + -0xf0);\n          uVar7 = (int)puVar30 - uVar18;\n          if (uVar37 < 0x23) {\n            puVar50 = (undefined1 *)puVar16[1];\n            if ((int)puVar50 < (int)*puVar16) {\n              puVar8 = (uint *)puVar16[2];\n            }\n            else {\n              puVar8 = (uint *)(**(code **)(iVar6 + -0x7a80))(puVar16,puVar50 + 1);\n              iVar6 = *(int *)(puVar47 + -0xf0);\n            }\n            iVar29 = *(int *)(iVar6 + -0x7e20);\n            iVar24 = *(int *)(iVar6 + -0x7fd4) + 0x35b4;\n            uVar37 = (**(code **)(iVar6 + -0x7f9c))\n                               (puVar8,puVar8,puVar50,\n                                *(int *)((((int)puVar9 - (int)puVar30) - 2U) * 4 + iVar24) *\n                                *(int *)(*(int *)(iVar6 + -0x7b38) + uVar37 * 4) *\n                                *(int *)((uVar7 - 2) * 4 + iVar24) <<\n                                (((uint)*(byte *)(iVar29 + (uVar37 >> 1) + -1) -\n                                 (uint)*(byte *)(iVar29 + (uVar7 >> 1) + -1)) -\n                                 (uint)*(byte *)(iVar29 + ((uint)((int)puVar9 - (int)puVar30) >> 1)\n                                                + -1) & 0x1f));\n            iVar6 = *(int *)(puVar47 + -0xf0);\n            puVar30 = (uint *)(puVar50 + (uVar37 != 0));\n            puVar8[(int)puVar50] = uVar37;\n          }\n          else {\n            *(undefined4 *)(puVar47 + -0xe4) = 0x15;\n            *(undefined1 **)(puVar47 + -0xdc) = puVar47 + -0xd8;\n            FUN_000216e8(puVar47 + -0xe4,uVar37,uVar7);\n            (**(code **)(*(int *)(puVar47 + -0xf0) + -0x7ba8))(puVar16,puVar16,puVar47 + -0xe4);\n            iVar6 = *(int *)(puVar47 + -0xf0);\n            puVar8 = (uint *)puVar16[2];\n            puVar30 = (uint *)puVar16[1];\n          }\n          pcVar51 = *(code **)(iVar6 + -0x7bb4);\n          puVar38 = (uint *)((uint)*(byte *)((uVar7 - 8) + *(int *)(iVar6 + -0x7fd4) + 0x3550) -\n                            (uint)(uVar18 != uVar7));\n          *(undefined4 *)(puVar47 + -0xf8) =\n               *(undefined4 *)((uVar7 - 8) * 4 + *(int *)(iVar6 + -0x7fd4) + 0x355c);\n          *(uint **)(puVar47 + -0xf4) = puVar38;\n          puVar31 = puVar8;\n          puVar20 = puVar8;\n          puVar22 = puVar30;\n          (*pcVar51)();\n          pcVar44 = *(code **)(puVar47 + -0xf0);\n          if (puVar8[(int)((int)puVar30 + -1)] == 0) {\n            puVar9 = puVar8 + (int)puVar30;\n            do {\n              puVar1 = puVar9 + -2;\n              puVar30 = (uint *)((int)puVar30 + -1);\n              puVar9 = puVar9 + -1;\n            } while (*puVar1 == 0);\n          }\n          puVar16[1] = (uint)puVar30;\n          puVar49 = puVar50;\n        }\n        else if ((puVar30 < (uint *)0x3e8) || (puVar30 <= (uint *)((uint)puVar9 >> 4))) {\n          FUN_0002209c();\n          pcVar44 = *(code **)(puVar47 + -0xf0);\n          puVar49 = puVar46 + -0x90;\n        }\n        else {\n          FUN_000219dc();\n          pcVar44 = *(code **)(puVar47 + -0xf0);\n          puVar49 = puVar46 + -0x90;\n        }\n      }\n      if (*(int *)(puVar47 + -0x84) == *piVar32) {\n        return *piVar32;\n      }\n      pcVar51 = *(code **)(pcVar44 + -0x7b70);\n      uVar10 = 0x22b64;\n      (*pcVar51)();\n      pcVar44 = pcVar51 + 0x824d0;\n      puVar48 = puVar47 + -0x160;\n      *(uint **)(puVar47 + -0x118) = puVar16;\n      *(uint **)(puVar47 + -0x124) = puVar30;\n      piVar34 = *(int **)(pcVar51 + 0x7a9d0);\n      uVar18 = puVar22[1];\n      *(undefined1 **)(puVar47 + -0x110) = puVar49;\n      *(uint **)(puVar47 + -0x114) = puVar36;\n      *(int **)(puVar47 + -0x11c) = piVar32;\n      *(uint **)(puVar47 + -0x120) = puVar8;\n      *(undefined4 *)(puVar47 + -0x10c) = uVar10;\n      *(code **)(puVar47 + -0x150) = pcVar44;\n      *(undefined4 *)(puVar47 + -0x13c) = 0;\n      puVar8 = (uint *)puVar20[1];\n      *(int *)(puVar47 + -300) = *piVar34;\n      if ((int)uVar18 < 0) {\n        uVar37 = uVar18 * -4;\n        *(uint *)(puVar47 + -0x138) = -uVar18;\n        if (0x7f00 < uVar37) {\n          pcVar51 = *(code **)(pcVar51 + 0x7a780);\n          goto LAB_00022c88;\n        }\nLAB_00022be4:\n        iVar6 = -(uVar37 + 7 & 0xfffffff8);\n        puVar48 = puVar47 + iVar6 + -0x160;\n        puVar13 = puVar47 + iVar6 + -0x150;\n      }\n      else {\n        uVar37 = uVar18 * 4;\n        *(uint *)(puVar47 + -0x138) = uVar18;\n        pcVar51 = *(code **)(pcVar51 + 0x7a780);\n        if (uVar37 < 0x7f01) goto LAB_00022be4;\nLAB_00022c88:\n        *(uint **)(puVar47 + -0x144) = puVar22;\n        puVar13 = (undefined1 *)(*pcVar51)(puVar47 + -0x13c,uVar37);\n        pcVar44 = *(code **)(puVar47 + -0x150);\n        puVar22 = *(uint **)(puVar47 + -0x144);\n      }\n      pcVar51 = *(code **)(pcVar44 + -0x7a68);\n      puVar36 = (uint *)(puVar47 + -0x138);\n      *(undefined1 **)(puVar47 + -0x130) = puVar13;\n      puVar9 = puVar20;\n      (*pcVar51)(puVar31,puVar36,puVar20,puVar22);\n      iVar6 = *(int *)(puVar47 + -0x150);\n      if (((int)((uint)puVar8 ^ uVar18) < 0) || (*(int *)(puVar47 + -0x134) == 0)) {\n        piVar32 = *(int **)(puVar47 + -0x13c);\n        pcVar51 = *(code **)(iVar6 + -0x7a28);\n        if (piVar32 != (int *)0x0) goto LAB_00022cc0;\n      }\n      else {\n        puVar9 = (uint *)0x1;\n        puVar36 = puVar31;\n        (**(code **)(iVar6 + -0x7c9c))(puVar31);\n        piVar32 = *(int **)(puVar47 + -0x13c);\n        iVar6 = *(int *)(puVar47 + -0x150);\n        if (piVar32 != (int *)0x0) {\n          pcVar51 = *(code **)(iVar6 + -0x7a28);\nLAB_00022cc0:\n          (*pcVar51)();\n          iVar6 = *(int *)(puVar47 + -0x150);\n        }\n      }\n      if (*(int *)(puVar47 + -300) == *piVar34) {\n        return *piVar34;\n      }\n      pcVar51 = *(code **)(iVar6 + -0x7b70);\n      uVar10 = 0x22cdc;\n      (*pcVar51)();\n      pcVar44 = pcVar51 + 0x82360;\n      *(code **)(puVar48 + -0x28) = pcVar44;\n      *(undefined4 *)(puVar48 + -4) = uVar10;\n      *(uint **)(puVar48 + -8) = puVar38;\n      *(uint **)(puVar48 + -0xc) = puVar20;\n      *(int **)(puVar48 + -0x10) = piVar34;\n      *(uint **)(puVar48 + -0x14) = puVar31;\n      *(uint **)(puVar48 + -0x18) = puVar8;\n      *(uint *)(puVar48 + -0x1c) = (uint)puVar8 ^ uVar18;\n      if (puVar9 == (uint *)0x0) {\n        pcVar51 = *(code **)(pcVar51 + 0x7a900);\n        (*pcVar51)();\nLAB_00022e2c:\n        piVar32 = (int *)(*pcVar51)(piVar34,puVar31);\n        pcVar44 = *(code **)(puVar48 + -0x28);\n      }\n      else {\n        puVar8 = (uint *)puVar36[1];\n        if (puVar8 == (uint *)0x0) {\n          piVar32[1] = 0;\n          return 0;\n        }\n        puVar31 = puVar8;\n        if ((int)puVar8 < 0) {\n          puVar31 = (uint *)-(int)puVar8;\n        }\n        pcVar51 = *(code **)(pcVar51 + 0x7a8e0);\n        piVar34 = piVar32;\n        puVar20 = puVar9;\n        puVar38 = puVar36;\n        if (*piVar32 < (int)puVar31) goto LAB_00022e2c;\n        piVar32 = (int *)piVar32[2];\n      }\n      pcVar51 = *(code **)(pcVar44 + -0x7d98);\n      uVar18 = puVar38[2];\n      *(uint **)(puVar48 + -0x30) = puVar20;\n      iVar6 = (*pcVar51)(piVar32,0,uVar18,puVar31);\n      piVar17 = piVar32 + (int)puVar31 + -1;\n      if (iVar6 == 0) {\n        uVar18 = (uint)(*piVar17 == 0);\n        if (-1 < (int)puVar8) {\n          iVar24 = (int)puVar31 - uVar18;\n          goto LAB_00022d9c;\n        }\n      }\n      else {\n        if (-1 < (int)puVar8) {\n          do {\n            iVar24 = *piVar32;\n            *piVar32 = iVar24 + 1;\n            piVar32 = piVar32 + 1;\n          } while (iVar24 + 1 == 0);\n          iVar6 = (int)puVar20 - iVar6;\n          iVar24 = (int)puVar31 - (uint)(*piVar17 == 0);\n          goto LAB_00022d9c;\n        }\n        uVar18 = (uint)(*piVar17 == 0);\n      }\n      iVar24 = uVar18 - (int)puVar31;\nLAB_00022d9c:\n      piVar34[1] = iVar24;\n      return iVar6;\n    }" ({ "{") (if_statement "if (*(int *)(puVar46 + -0x48) == *(int *)(puVar46 + -0x40)) {\n        puVar8 = (uint *)((int)puVar8 - (uint)(puVar38[(int)((int)puVar8 + -1)] == 0));\n        pcVar51 = *(code **)(iVar24 + -0x7a80);\n        if ((int)puVar8 <= **(int **)(puVar46 + -0x6c)) goto LAB_00022600;\nLAB_00022734:\n        puVar9 = puVar8;\n        puVar19 = (undefined4 *)(*pcVar51)(*(undefined4 *)(puVar46 + -0x6c));\n        iVar24 = *(int *)(puVar46 + -0x78);\n      }\n      else {\n        puVar9 = puVar38;\n        puVar22 = puVar8;\n        uVar18 = (**(code **)(iVar24 + -0x7ad4))(puVar38);\n        iVar24 = *(int *)(puVar46 + -0x78);\n        puVar38[(int)puVar8] = uVar18;\n        puVar8 = (uint *)((int)puVar8 +\n                         ((uint)(uVar18 != 0) -\n                         (uint)(puVar38[(int)((int)puVar8 + ((uVar18 != 0) - 1))] == 0)));\n        pcVar51 = *(code **)(iVar24 + -0x7a80);\n        if (**(int **)(puVar46 + -0x6c) < (int)puVar8) goto LAB_00022734;\nLAB_00022600:\n        puVar19 = *(undefined4 **)(*(int *)(puVar46 + -0x6c) + 8);\n      }" (if "if") (parenthesized_expression "(*(int *)(puVar46 + -0x48) == *(int *)(puVar46 + -0x40))" (( "(") (binary_expression "*(int *)(puVar46 + -0x48) == *(int *)(puVar46 + -0x40)" (pointer_expression "*(int *)(puVar46 + -0x48)" (* "*") (cast_expression "(int *)(puVar46 + -0x48)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar46 + -0x48)" (( "(") (binary_expression "puVar46 + -0x48" (identifier "puVar46") (+ "+") (number_literal "-0x48")) () ")")))) (== "==") (pointer_expression "*(int *)(puVar46 + -0x40)" (* "*") (cast_expression "(int *)(puVar46 + -0x40)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar46 + -0x40)" (( "(") (binary_expression "puVar46 + -0x40" (identifier "puVar46") (+ "+") (number_literal "-0x40")) () ")"))))) () ")")) (compound_statement "{\n        puVar8 = (uint *)((int)puVar8 - (uint)(puVar38[(int)((int)puVar8 + -1)] == 0));\n        pcVar51 = *(code **)(iVar24 + -0x7a80);\n        if ((int)puVar8 <= **(int **)(puVar46 + -0x6c)) goto LAB_00022600;\nLAB_00022734:\n        puVar9 = puVar8;\n        puVar19 = (undefined4 *)(*pcVar51)(*(undefined4 *)(puVar46 + -0x6c));\n        iVar24 = *(int *)(puVar46 + -0x78);\n      }" ({ "{") (expression_statement "puVar8 = (uint *)((int)puVar8 - (uint)(puVar38[(int)((int)puVar8 + -1)] == 0));" (assignment_expression "puVar8 = (uint *)((int)puVar8 - (uint)(puVar38[(int)((int)puVar8 + -1)] == 0))" (identifier "puVar8") (= "=") (cast_expression "(uint *)((int)puVar8 - (uint)(puVar38[(int)((int)puVar8 + -1)] == 0))" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar8 - (uint)(puVar38[(int)((int)puVar8 + -1)] == 0))" (( "(") (binary_expression "(int)puVar8 - (uint)(puVar38[(int)((int)puVar8 + -1)] == 0)" (cast_expression "(int)puVar8" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar8")) (- "-") (call_expression "(uint)(puVar38[(int)((int)puVar8 + -1)] == 0)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(puVar38[(int)((int)puVar8 + -1)] == 0)" (( "(") (binary_expression "puVar38[(int)((int)puVar8 + -1)] == 0" (subscript_expression "puVar38[(int)((int)puVar8 + -1)]" (identifier "puVar38") ([ "[") (cast_expression "(int)((int)puVar8 + -1)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "((int)puVar8 + -1)" (( "(") (binary_expression "(int)puVar8 + -1" (cast_expression "(int)puVar8" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar8")) (+ "+") (number_literal "-1")) () ")"))) (] "]")) (== "==") (number_literal "0")) () ")")))) () ")")))) (; ";")) (expression_statement "pcVar51 = *(code **)(iVar24 + -0x7a80);" (assignment_expression "pcVar51 = *(code **)(iVar24 + -0x7a80)" (identifier "pcVar51") (= "=") (pointer_expression "*(code **)(iVar24 + -0x7a80)" (* "*") (cast_expression "(code **)(iVar24 + -0x7a80)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar24 + -0x7a80)" (( "(") (binary_expression "iVar24 + -0x7a80" (identifier "iVar24") (+ "+") (number_literal "-0x7a80")) () ")"))))) (; ";")) (if_statement "if ((int)puVar8 <= **(int **)(puVar46 + -0x6c)) goto LAB_00022600;" (if "if") (parenthesized_expression "((int)puVar8 <= **(int **)(puVar46 + -0x6c))" (( "(") (binary_expression "(int)puVar8 <= **(int **)(puVar46 + -0x6c)" (cast_expression "(int)puVar8" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar8")) (<= "<=") (pointer_expression "**(int **)(puVar46 + -0x6c)" (* "*") (pointer_expression "*(int **)(puVar46 + -0x6c)" (* "*") (cast_expression "(int **)(puVar46 + -0x6c)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar46 + -0x6c)" (( "(") (binary_expression "puVar46 + -0x6c" (identifier "puVar46") (+ "+") (number_literal "-0x6c")) () ")")))))) () ")")) (goto_statement "goto LAB_00022600;" (goto "goto") (statement_identifier "LAB_00022600") (; ";"))) (labeled_statement "LAB_00022734:\n        puVar9 = puVar8;" (statement_identifier "LAB_00022734") (: ":") (expression_statement "puVar9 = puVar8;" (assignment_expression "puVar9 = puVar8" (identifier "puVar9") (= "=") (identifier "puVar8")) (; ";"))) (expression_statement "puVar19 = (undefined4 *)(*pcVar51)(*(undefined4 *)(puVar46 + -0x6c));" (assignment_expression "puVar19 = (undefined4 *)(*pcVar51)(*(undefined4 *)(puVar46 + -0x6c))" (identifier "puVar19") (= "=") (cast_expression "(undefined4 *)(*pcVar51)(*(undefined4 *)(puVar46 + -0x6c))" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "(*pcVar51)(*(undefined4 *)(puVar46 + -0x6c))" (parenthesized_expression "(*pcVar51)" (( "(") (pointer_expression "*pcVar51" (* "*") (identifier "pcVar51")) () ")")) (argument_list "(*(undefined4 *)(puVar46 + -0x6c))" (( "(") (pointer_expression "*(undefined4 *)(puVar46 + -0x6c)" (* "*") (cast_expression "(undefined4 *)(puVar46 + -0x6c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar46 + -0x6c)" (( "(") (binary_expression "puVar46 + -0x6c" (identifier "puVar46") (+ "+") (number_literal "-0x6c")) () ")")))) () ")"))))) (; ";")) (expression_statement "iVar24 = *(int *)(puVar46 + -0x78);" (assignment_expression "iVar24 = *(int *)(puVar46 + -0x78)" (identifier "iVar24") (= "=") (pointer_expression "*(int *)(puVar46 + -0x78)" (* "*") (cast_expression "(int *)(puVar46 + -0x78)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar46 + -0x78)" (( "(") (binary_expression "puVar46 + -0x78" (identifier "puVar46") (+ "+") (number_literal "-0x78")) () ")"))))) (; ";")) (} "}")) (else_clause "else {\n        puVar9 = puVar38;\n        puVar22 = puVar8;\n        uVar18 = (**(code **)(iVar24 + -0x7ad4))(puVar38);\n        iVar24 = *(int *)(puVar46 + -0x78);\n        puVar38[(int)puVar8] = uVar18;\n        puVar8 = (uint *)((int)puVar8 +\n                         ((uint)(uVar18 != 0) -\n                         (uint)(puVar38[(int)((int)puVar8 + ((uVar18 != 0) - 1))] == 0)));\n        pcVar51 = *(code **)(iVar24 + -0x7a80);\n        if (**(int **)(puVar46 + -0x6c) < (int)puVar8) goto LAB_00022734;\nLAB_00022600:\n        puVar19 = *(undefined4 **)(*(int *)(puVar46 + -0x6c) + 8);\n      }" (else "else") (compound_statement "{\n        puVar9 = puVar38;\n        puVar22 = puVar8;\n        uVar18 = (**(code **)(iVar24 + -0x7ad4))(puVar38);\n        iVar24 = *(int *)(puVar46 + -0x78);\n        puVar38[(int)puVar8] = uVar18;\n        puVar8 = (uint *)((int)puVar8 +\n                         ((uint)(uVar18 != 0) -\n                         (uint)(puVar38[(int)((int)puVar8 + ((uVar18 != 0) - 1))] == 0)));\n        pcVar51 = *(code **)(iVar24 + -0x7a80);\n        if (**(int **)(puVar46 + -0x6c) < (int)puVar8) goto LAB_00022734;\nLAB_00022600:\n        puVar19 = *(undefined4 **)(*(int *)(puVar46 + -0x6c) + 8);\n      }" ({ "{") (expression_statement "puVar9 = puVar38;" (assignment_expression "puVar9 = puVar38" (identifier "puVar9") (= "=") (identifier "puVar38")) (; ";")) (expression_statement "puVar22 = puVar8;" (assignment_expression "puVar22 = puVar8" (identifier "puVar22") (= "=") (identifier "puVar8")) (; ";")) (expression_statement "uVar18 = (**(code **)(iVar24 + -0x7ad4))(puVar38);" (assignment_expression "uVar18 = (**(code **)(iVar24 + -0x7ad4))(puVar38)" (identifier "uVar18") (= "=") (call_expression "(**(code **)(iVar24 + -0x7ad4))(puVar38)" (parenthesized_expression "(**(code **)(iVar24 + -0x7ad4))" (( "(") (pointer_expression "**(code **)(iVar24 + -0x7ad4)" (* "*") (pointer_expression "*(code **)(iVar24 + -0x7ad4)" (* "*") (cast_expression "(code **)(iVar24 + -0x7ad4)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar24 + -0x7ad4)" (( "(") (binary_expression "iVar24 + -0x7ad4" (identifier "iVar24") (+ "+") (number_literal "-0x7ad4")) () ")"))))) () ")")) (argument_list "(puVar38)" (( "(") (identifier "puVar38") () ")")))) (; ";")) (expression_statement "iVar24 = *(int *)(puVar46 + -0x78);" (assignment_expression "iVar24 = *(int *)(puVar46 + -0x78)" (identifier "iVar24") (= "=") (pointer_expression "*(int *)(puVar46 + -0x78)" (* "*") (cast_expression "(int *)(puVar46 + -0x78)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar46 + -0x78)" (( "(") (binary_expression "puVar46 + -0x78" (identifier "puVar46") (+ "+") (number_literal "-0x78")) () ")"))))) (; ";")) (expression_statement "puVar38[(int)puVar8] = uVar18;" (assignment_expression "puVar38[(int)puVar8] = uVar18" (subscript_expression "puVar38[(int)puVar8]" (identifier "puVar38") ([ "[") (cast_expression "(int)puVar8" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar8")) (] "]")) (= "=") (identifier "uVar18")) (; ";")) (expression_statement "puVar8 = (uint *)((int)puVar8 +\n                         ((uint)(uVar18 != 0) -\n                         (uint)(puVar38[(int)((int)puVar8 + ((uVar18 != 0) - 1))] == 0)));" (assignment_expression "puVar8 = (uint *)((int)puVar8 +\n                         ((uint)(uVar18 != 0) -\n                         (uint)(puVar38[(int)((int)puVar8 + ((uVar18 != 0) - 1))] == 0)))" (identifier "puVar8") (= "=") (cast_expression "(uint *)((int)puVar8 +\n                         ((uint)(uVar18 != 0) -\n                         (uint)(puVar38[(int)((int)puVar8 + ((uVar18 != 0) - 1))] == 0)))" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar8 +\n                         ((uint)(uVar18 != 0) -\n                         (uint)(puVar38[(int)((int)puVar8 + ((uVar18 != 0) - 1))] == 0)))" (( "(") (binary_expression "(int)puVar8 +\n                         ((uint)(uVar18 != 0) -\n                         (uint)(puVar38[(int)((int)puVar8 + ((uVar18 != 0) - 1))] == 0))" (cast_expression "(int)puVar8" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar8")) (+ "+") (parenthesized_expression "((uint)(uVar18 != 0) -\n                         (uint)(puVar38[(int)((int)puVar8 + ((uVar18 != 0) - 1))] == 0))" (( "(") (binary_expression "(uint)(uVar18 != 0) -\n                         (uint)(puVar38[(int)((int)puVar8 + ((uVar18 != 0) - 1))] == 0)" (call_expression "(uint)(uVar18 != 0)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(uVar18 != 0)" (( "(") (binary_expression "uVar18 != 0" (identifier "uVar18") (!= "!=") (number_literal "0")) () ")"))) (- "-") (call_expression "(uint)(puVar38[(int)((int)puVar8 + ((uVar18 != 0) - 1))] == 0)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(puVar38[(int)((int)puVar8 + ((uVar18 != 0) - 1))] == 0)" (( "(") (binary_expression "puVar38[(int)((int)puVar8 + ((uVar18 != 0) - 1))] == 0" (subscript_expression "puVar38[(int)((int)puVar8 + ((uVar18 != 0) - 1))]" (identifier "puVar38") ([ "[") (cast_expression "(int)((int)puVar8 + ((uVar18 != 0) - 1))" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "((int)puVar8 + ((uVar18 != 0) - 1))" (( "(") (binary_expression "(int)puVar8 + ((uVar18 != 0) - 1)" (cast_expression "(int)puVar8" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar8")) (+ "+") (parenthesized_expression "((uVar18 != 0) - 1)" (( "(") (binary_expression "(uVar18 != 0) - 1" (parenthesized_expression "(uVar18 != 0)" (( "(") (binary_expression "uVar18 != 0" (identifier "uVar18") (!= "!=") (number_literal "0")) () ")")) (- "-") (number_literal "1")) () ")"))) () ")"))) (] "]")) (== "==") (number_literal "0")) () ")")))) () ")"))) () ")")))) (; ";")) (expression_statement "pcVar51 = *(code **)(iVar24 + -0x7a80);" (assignment_expression "pcVar51 = *(code **)(iVar24 + -0x7a80)" (identifier "pcVar51") (= "=") (pointer_expression "*(code **)(iVar24 + -0x7a80)" (* "*") (cast_expression "(code **)(iVar24 + -0x7a80)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar24 + -0x7a80)" (( "(") (binary_expression "iVar24 + -0x7a80" (identifier "iVar24") (+ "+") (number_literal "-0x7a80")) () ")"))))) (; ";")) (if_statement "if (**(int **)(puVar46 + -0x6c) < (int)puVar8) goto LAB_00022734;" (if "if") (parenthesized_expression "(**(int **)(puVar46 + -0x6c) < (int)puVar8)" (( "(") (binary_expression "**(int **)(puVar46 + -0x6c) < (int)puVar8" (pointer_expression "**(int **)(puVar46 + -0x6c)" (* "*") (pointer_expression "*(int **)(puVar46 + -0x6c)" (* "*") (cast_expression "(int **)(puVar46 + -0x6c)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar46 + -0x6c)" (( "(") (binary_expression "puVar46 + -0x6c" (identifier "puVar46") (+ "+") (number_literal "-0x6c")) () ")"))))) (< "<") (cast_expression "(int)puVar8" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar8"))) () ")")) (goto_statement "goto LAB_00022734;" (goto "goto") (statement_identifier "LAB_00022734") (; ";"))) (labeled_statement "LAB_00022600:\n        puVar19 = *(undefined4 **)(*(int *)(puVar46 + -0x6c) + 8);" (statement_identifier "LAB_00022600") (: ":") (expression_statement "puVar19 = *(undefined4 **)(*(int *)(puVar46 + -0x6c) + 8);" (assignment_expression "puVar19 = *(undefined4 **)(*(int *)(puVar46 + -0x6c) + 8)" (identifier "puVar19") (= "=") (pointer_expression "*(undefined4 **)(*(int *)(puVar46 + -0x6c) + 8)" (* "*") (cast_expression "(undefined4 **)(*(int *)(puVar46 + -0x6c) + 8)" (( "(") (type_descriptor "undefined4 **" (type_identifier "undefined4") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*(int *)(puVar46 + -0x6c) + 8)" (( "(") (binary_expression "*(int *)(puVar46 + -0x6c) + 8" (pointer_expression "*(int *)(puVar46 + -0x6c)" (* "*") (cast_expression "(int *)(puVar46 + -0x6c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar46 + -0x6c)" (( "(") (binary_expression "puVar46 + -0x6c" (identifier "puVar46") (+ "+") (number_literal "-0x6c")) () ")")))) (+ "+") (number_literal "8")) () ")"))))) (; ";"))) (} "}")))) (expression_statement "*(uint **)(*(int *)(puVar46 + -0x6c) + 4) = puVar8;" (assignment_expression "*(uint **)(*(int *)(puVar46 + -0x6c) + 4) = puVar8" (pointer_expression "*(uint **)(*(int *)(puVar46 + -0x6c) + 4)" (* "*") (cast_expression "(uint **)(*(int *)(puVar46 + -0x6c) + 4)" (( "(") (type_descriptor "uint **" (type_identifier "uint") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*(int *)(puVar46 + -0x6c) + 4)" (( "(") (binary_expression "*(int *)(puVar46 + -0x6c) + 4" (pointer_expression "*(int *)(puVar46 + -0x6c)" (* "*") (cast_expression "(int *)(puVar46 + -0x6c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar46 + -0x6c)" (( "(") (binary_expression "puVar46 + -0x6c" (identifier "puVar46") (+ "+") (number_literal "-0x6c")) () ")")))) (+ "+") (number_literal "4")) () ")")))) (= "=") (identifier "puVar8")) (; ";")) (if_statement "if (puVar8 != (uint *)0x0) {\n        puVar13 = (undefined1 *)((int)puVar8 + -1);\n        puVar9 = (uint *)*puVar38;\n        if (puVar13 != (undefined1 *)0x0) {\n          puVar15 = puVar19;\n          puVar16 = puVar38 + 1;\n          do {\n            *puVar15 = puVar9;\n            puVar38 = puVar16 + 1;\n            puVar13 = puVar13 + -1;\n            puVar9 = (uint *)*puVar16;\n            puVar15 = puVar15 + 1;\n            puVar16 = puVar38;\n          } while (puVar13 != (undefined1 *)0x0);\n          puVar8 = (uint *)((int)puVar8 * 4);\n          puVar19 = (undefined4 *)((int)puVar19 + (int)(puVar8 + -1));\n        }\n        *puVar19 = puVar9;\n      }" (if "if") (parenthesized_expression "(puVar8 != (uint *)0x0)" (( "(") (binary_expression "puVar8 != (uint *)0x0" (identifier "puVar8") (!= "!=") (cast_expression "(uint *)0x0" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n        puVar13 = (undefined1 *)((int)puVar8 + -1);\n        puVar9 = (uint *)*puVar38;\n        if (puVar13 != (undefined1 *)0x0) {\n          puVar15 = puVar19;\n          puVar16 = puVar38 + 1;\n          do {\n            *puVar15 = puVar9;\n            puVar38 = puVar16 + 1;\n            puVar13 = puVar13 + -1;\n            puVar9 = (uint *)*puVar16;\n            puVar15 = puVar15 + 1;\n            puVar16 = puVar38;\n          } while (puVar13 != (undefined1 *)0x0);\n          puVar8 = (uint *)((int)puVar8 * 4);\n          puVar19 = (undefined4 *)((int)puVar19 + (int)(puVar8 + -1));\n        }\n        *puVar19 = puVar9;\n      }" ({ "{") (expression_statement "puVar13 = (undefined1 *)((int)puVar8 + -1);" (assignment_expression "puVar13 = (undefined1 *)((int)puVar8 + -1)" (identifier "puVar13") (= "=") (cast_expression "(undefined1 *)((int)puVar8 + -1)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar8 + -1)" (( "(") (binary_expression "(int)puVar8 + -1" (cast_expression "(int)puVar8" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar8")) (+ "+") (number_literal "-1")) () ")")))) (; ";")) (expression_statement "puVar9 = (uint *)*puVar38;" (assignment_expression "puVar9 = (uint *)*puVar38" (identifier "puVar9") (= "=") (cast_expression "(uint *)*puVar38" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*puVar38" (* "*") (identifier "puVar38")))) (; ";")) (if_statement "if (puVar13 != (undefined1 *)0x0) {\n          puVar15 = puVar19;\n          puVar16 = puVar38 + 1;\n          do {\n            *puVar15 = puVar9;\n            puVar38 = puVar16 + 1;\n            puVar13 = puVar13 + -1;\n            puVar9 = (uint *)*puVar16;\n            puVar15 = puVar15 + 1;\n            puVar16 = puVar38;\n          } while (puVar13 != (undefined1 *)0x0);\n          puVar8 = (uint *)((int)puVar8 * 4);\n          puVar19 = (undefined4 *)((int)puVar19 + (int)(puVar8 + -1));\n        }" (if "if") (parenthesized_expression "(puVar13 != (undefined1 *)0x0)" (( "(") (binary_expression "puVar13 != (undefined1 *)0x0" (identifier "puVar13") (!= "!=") (cast_expression "(undefined1 *)0x0" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n          puVar15 = puVar19;\n          puVar16 = puVar38 + 1;\n          do {\n            *puVar15 = puVar9;\n            puVar38 = puVar16 + 1;\n            puVar13 = puVar13 + -1;\n            puVar9 = (uint *)*puVar16;\n            puVar15 = puVar15 + 1;\n            puVar16 = puVar38;\n          } while (puVar13 != (undefined1 *)0x0);\n          puVar8 = (uint *)((int)puVar8 * 4);\n          puVar19 = (undefined4 *)((int)puVar19 + (int)(puVar8 + -1));\n        }" ({ "{") (expression_statement "puVar15 = puVar19;" (assignment_expression "puVar15 = puVar19" (identifier "puVar15") (= "=") (identifier "puVar19")) (; ";")) (expression_statement "puVar16 = puVar38 + 1;" (assignment_expression "puVar16 = puVar38 + 1" (identifier "puVar16") (= "=") (binary_expression "puVar38 + 1" (identifier "puVar38") (+ "+") (number_literal "1"))) (; ";")) (do_statement "do {\n            *puVar15 = puVar9;\n            puVar38 = puVar16 + 1;\n            puVar13 = puVar13 + -1;\n            puVar9 = (uint *)*puVar16;\n            puVar15 = puVar15 + 1;\n            puVar16 = puVar38;\n          } while (puVar13 != (undefined1 *)0x0);" (do "do") (compound_statement "{\n            *puVar15 = puVar9;\n            puVar38 = puVar16 + 1;\n            puVar13 = puVar13 + -1;\n            puVar9 = (uint *)*puVar16;\n            puVar15 = puVar15 + 1;\n            puVar16 = puVar38;\n          }" ({ "{") (expression_statement "*puVar15 = puVar9;" (assignment_expression "*puVar15 = puVar9" (pointer_expression "*puVar15" (* "*") (identifier "puVar15")) (= "=") (identifier "puVar9")) (; ";")) (expression_statement "puVar38 = puVar16 + 1;" (assignment_expression "puVar38 = puVar16 + 1" (identifier "puVar38") (= "=") (binary_expression "puVar16 + 1" (identifier "puVar16") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "puVar13 = puVar13 + -1;" (assignment_expression "puVar13 = puVar13 + -1" (identifier "puVar13") (= "=") (binary_expression "puVar13 + -1" (identifier "puVar13") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "puVar9 = (uint *)*puVar16;" (assignment_expression "puVar9 = (uint *)*puVar16" (identifier "puVar9") (= "=") (cast_expression "(uint *)*puVar16" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*puVar16" (* "*") (identifier "puVar16")))) (; ";")) (expression_statement "puVar15 = puVar15 + 1;" (assignment_expression "puVar15 = puVar15 + 1" (identifier "puVar15") (= "=") (binary_expression "puVar15 + 1" (identifier "puVar15") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "puVar16 = puVar38;" (assignment_expression "puVar16 = puVar38" (identifier "puVar16") (= "=") (identifier "puVar38")) (; ";")) (} "}")) (while "while") (parenthesized_expression "(puVar13 != (undefined1 *)0x0)" (( "(") (binary_expression "puVar13 != (undefined1 *)0x0" (identifier "puVar13") (!= "!=") (cast_expression "(undefined1 *)0x0" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (; ";")) (expression_statement "puVar8 = (uint *)((int)puVar8 * 4);" (assignment_expression "puVar8 = (uint *)((int)puVar8 * 4)" (identifier "puVar8") (= "=") (cast_expression "(uint *)((int)puVar8 * 4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar8 * 4)" (( "(") (binary_expression "(int)puVar8 * 4" (cast_expression "(int)puVar8" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar8")) (* "*") (number_literal "4")) () ")")))) (; ";")) (expression_statement "puVar19 = (undefined4 *)((int)puVar19 + (int)(puVar8 + -1));" (assignment_expression "puVar19 = (undefined4 *)((int)puVar19 + (int)(puVar8 + -1))" (identifier "puVar19") (= "=") (cast_expression "(undefined4 *)((int)puVar19 + (int)(puVar8 + -1))" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar19 + (int)(puVar8 + -1))" (( "(") (binary_expression "(int)puVar19 + (int)(puVar8 + -1)" (cast_expression "(int)puVar19" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar19")) (+ "+") (cast_expression "(int)(puVar8 + -1)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "(puVar8 + -1)" (( "(") (binary_expression "puVar8 + -1" (identifier "puVar8") (+ "+") (number_literal "-1")) () ")")))) () ")")))) (; ";")) (} "}"))) (expression_statement "*puVar19 = puVar9;" (assignment_expression "*puVar19 = puVar9" (pointer_expression "*puVar19" (* "*") (identifier "puVar19")) (= "=") (identifier "puVar9")) (; ";")) (} "}"))) (expression_statement "puVar16 = *(uint **)(puVar46 + -0x30);" (assignment_expression "puVar16 = *(uint **)(puVar46 + -0x30)" (identifier "puVar16") (= "=") (pointer_expression "*(uint **)(puVar46 + -0x30)" (* "*") (cast_expression "(uint **)(puVar46 + -0x30)" (( "(") (type_descriptor "uint **" (type_identifier "uint") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar46 + -0x30)" (( "(") (binary_expression "puVar46 + -0x30" (identifier "puVar46") (+ "+") (number_literal "-0x30")) () ")"))))) (; ";")) (if_statement "if (puVar16 != (uint *)0x0) {\n        (**(code **)(iVar24 + -0x7a28))();\n        iVar24 = *(int *)(puVar46 + -0x78);\n      }" (if "if") (parenthesized_expression "(puVar16 != (uint *)0x0)" (( "(") (binary_expression "puVar16 != (uint *)0x0" (identifier "puVar16") (!= "!=") (cast_expression "(uint *)0x0" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n        (**(code **)(iVar24 + -0x7a28))();\n        iVar24 = *(int *)(puVar46 + -0x78);\n      }" ({ "{") (expression_statement "(**(code **)(iVar24 + -0x7a28))();" (call_expression "(**(code **)(iVar24 + -0x7a28))()" (parenthesized_expression "(**(code **)(iVar24 + -0x7a28))" (( "(") (pointer_expression "**(code **)(iVar24 + -0x7a28)" (* "*") (pointer_expression "*(code **)(iVar24 + -0x7a28)" (* "*") (cast_expression "(code **)(iVar24 + -0x7a28)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar24 + -0x7a28)" (( "(") (binary_expression "iVar24 + -0x7a28" (identifier "iVar24") (+ "+") (number_literal "-0x7a28")) () ")"))))) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "iVar24 = *(int *)(puVar46 + -0x78);" (assignment_expression "iVar24 = *(int *)(puVar46 + -0x78)" (identifier "iVar24") (= "=") (pointer_expression "*(int *)(puVar46 + -0x78)" (* "*") (cast_expression "(int *)(puVar46 + -0x78)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar46 + -0x78)" (( "(") (binary_expression "puVar46 + -0x78" (identifier "puVar46") (+ "+") (number_literal "-0x78")) () ")"))))) (; ";")) (} "}"))) (if_statement "if (*(int *)(puVar46 + -0x2c) == **(int **)(puVar46 + -0x70)) {\n        return **(int **)(puVar46 + -0x70);\n      }" (if "if") (parenthesized_expression "(*(int *)(puVar46 + -0x2c) == **(int **)(puVar46 + -0x70))" (( "(") (binary_expression "*(int *)(puVar46 + -0x2c) == **(int **)(puVar46 + -0x70)" (pointer_expression "*(int *)(puVar46 + -0x2c)" (* "*") (cast_expression "(int *)(puVar46 + -0x2c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar46 + -0x2c)" (( "(") (binary_expression "puVar46 + -0x2c" (identifier "puVar46") (+ "+") (number_literal "-0x2c")) () ")")))) (== "==") (pointer_expression "**(int **)(puVar46 + -0x70)" (* "*") (pointer_expression "*(int **)(puVar46 + -0x70)" (* "*") (cast_expression "(int **)(puVar46 + -0x70)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar46 + -0x70)" (( "(") (binary_expression "puVar46 + -0x70" (identifier "puVar46") (+ "+") (number_literal "-0x70")) () ")")))))) () ")")) (compound_statement "{\n        return **(int **)(puVar46 + -0x70);\n      }" ({ "{") (return_statement "return **(int **)(puVar46 + -0x70);" (return "return") (pointer_expression "**(int **)(puVar46 + -0x70)" (* "*") (pointer_expression "*(int **)(puVar46 + -0x70)" (* "*") (cast_expression "(int **)(puVar46 + -0x70)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar46 + -0x70)" (( "(") (binary_expression "puVar46 + -0x70" (identifier "puVar46") (+ "+") (number_literal "-0x70")) () ")"))))) (; ";")) (} "}"))) (expression_statement "pcVar51 = *(code **)(iVar24 + -0x7b70);" (assignment_expression "pcVar51 = *(code **)(iVar24 + -0x7b70)" (identifier "pcVar51") (= "=") (pointer_expression "*(code **)(iVar24 + -0x7b70)" (* "*") (cast_expression "(code **)(iVar24 + -0x7b70)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar24 + -0x7b70)" (( "(") (binary_expression "iVar24 + -0x7b70" (identifier "iVar24") (+ "+") (number_literal "-0x7b70")) () ")"))))) (; ";")) (expression_statement "pcVar52 = __gmpz_bin_uiui;" (assignment_expression "pcVar52 = __gmpz_bin_uiui" (identifier "pcVar52") (= "=") (identifier "__gmpz_bin_uiui")) (; ";")) (expression_statement "(*pcVar51)();" (call_expression "(*pcVar51)()" (parenthesized_expression "(*pcVar51)" (( "(") (pointer_expression "*pcVar51" (* "*") (identifier "pcVar51")) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "pcVar44 = pcVar51 + 0x8289c;" (assignment_expression "pcVar44 = pcVar51 + 0x8289c" (identifier "pcVar44") (= "=") (binary_expression "pcVar51 + 0x8289c" (identifier "pcVar51") (+ "+") (number_literal "0x8289c"))) (; ";")) (expression_statement "*(uint **)(puVar47 + -0x78) = puVar31;" (assignment_expression "*(uint **)(puVar47 + -0x78) = puVar31" (pointer_expression "*(uint **)(puVar47 + -0x78)" (* "*") (cast_expression "(uint **)(puVar47 + -0x78)" (( "(") (type_descriptor "uint **" (type_identifier "uint") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar47 + -0x78)" (( "(") (binary_expression "puVar47 + -0x78" (identifier "puVar47") (+ "+") (number_literal "-0x78")) () ")")))) (= "=") (identifier "puVar31")) (; ";")) (expression_statement "piVar32 = *(int **)(pcVar51 + 0x7ad9c);" (assignment_expression "piVar32 = *(int **)(pcVar51 + 0x7ad9c)" (identifier "piVar32") (= "=") (pointer_expression "*(int **)(pcVar51 + 0x7ad9c)" (* "*") (cast_expression "(int **)(pcVar51 + 0x7ad9c)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(pcVar51 + 0x7ad9c)" (( "(") (binary_expression "pcVar51 + 0x7ad9c" (identifier "pcVar51") (+ "+") (number_literal "0x7ad9c")) () ")"))))) (; ";")) (expression_statement "*(code **)(puVar47 + -0xf0) = pcVar44;" (assignment_expression "*(code **)(puVar47 + -0xf0) = pcVar44" (pointer_expression "*(code **)(puVar47 + -0xf0)" (* "*") (cast_expression "(code **)(puVar47 + -0xf0)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar47 + -0xf0)" (( "(") (binary_expression "puVar47 + -0xf0" (identifier "puVar47") (+ "+") (number_literal "-0xf0")) () ")")))) (= "=") (identifier "pcVar44")) (; ";")) (expression_statement "*(int *)(puVar47 + -0x74) = iVar39;" (assignment_expression "*(int *)(puVar47 + -0x74) = iVar39" (pointer_expression "*(int *)(puVar47 + -0x74)" (* "*") (cast_expression "(int *)(puVar47 + -0x74)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar47 + -0x74)" (( "(") (binary_expression "puVar47 + -0x74" (identifier "puVar47") (+ "+") (number_literal "-0x74")) () ")")))) (= "=") (identifier "iVar39")) (; ";")) (expression_statement "*(code **)(puVar47 + -0x5c) = pcVar52;" (assignment_expression "*(code **)(puVar47 + -0x5c) = pcVar52" (pointer_expression "*(code **)(puVar47 + -0x5c)" (* "*") (cast_expression "(code **)(puVar47 + -0x5c)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar47 + -0x5c)" (( "(") (binary_expression "puVar47 + -0x5c" (identifier "puVar47") (+ "+") (number_literal "-0x5c")) () ")")))) (= "=") (identifier "pcVar52")) (; ";")) (expression_statement "*(undefined1 **)(puVar47 + -0x60) = puVar46 + -0x90;" (assignment_expression "*(undefined1 **)(puVar47 + -0x60) = puVar46 + -0x90" (pointer_expression "*(undefined1 **)(puVar47 + -0x60)" (* "*") (cast_expression "(undefined1 **)(puVar47 + -0x60)" (( "(") (type_descriptor "undefined1 **" (type_identifier "undefined1") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar47 + -0x60)" (( "(") (binary_expression "puVar47 + -0x60" (identifier "puVar47") (+ "+") (number_literal "-0x60")) () ")")))) (= "=") (binary_expression "puVar46 + -0x90" (identifier "puVar46") (+ "+") (number_literal "-0x90"))) (; ";")) (expression_statement "*(int *)(puVar47 + -100) = iVar6;" (assignment_expression "*(int *)(puVar47 + -100) = iVar6" (pointer_expression "*(int *)(puVar47 + -100)" (* "*") (cast_expression "(int *)(puVar47 + -100)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar47 + -100)" (( "(") (binary_expression "puVar47 + -100" (identifier "puVar47") (+ "+") (number_literal "-100")) () ")")))) (= "=") (identifier "iVar6")) (; ";")) (expression_statement "*(int *)(puVar47 + -0x68) = iVar29;" (assignment_expression "*(int *)(puVar47 + -0x68) = iVar29" (pointer_expression "*(int *)(puVar47 + -0x68)" (* "*") (cast_expression "(int *)(puVar47 + -0x68)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar47 + -0x68)" (( "(") (binary_expression "puVar47 + -0x68" (identifier "puVar47") (+ "+") (number_literal "-0x68")) () ")")))) (= "=") (identifier "iVar29")) (; ";")) (expression_statement "*(uint **)(puVar47 + -0x6c) = puVar38;" (assignment_expression "*(uint **)(puVar47 + -0x6c) = puVar38" (pointer_expression "*(uint **)(puVar47 + -0x6c)" (* "*") (cast_expression "(uint **)(puVar47 + -0x6c)" (( "(") (type_descriptor "uint **" (type_identifier "uint") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar47 + -0x6c)" (( "(") (binary_expression "puVar47 + -0x6c" (identifier "puVar47") (+ "+") (number_literal "-0x6c")) () ")")))) (= "=") (identifier "puVar38")) (; ";")) (expression_statement "*(uint **)(puVar47 + -0x70) = puVar36;" (assignment_expression "*(uint **)(puVar47 + -0x70) = puVar36" (pointer_expression "*(uint **)(puVar47 + -0x70)" (* "*") (cast_expression "(uint **)(puVar47 + -0x70)" (( "(") (type_descriptor "uint **" (type_identifier "uint") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar47 + -0x70)" (( "(") (binary_expression "puVar47 + -0x70" (identifier "puVar47") (+ "+") (number_literal "-0x70")) () ")")))) (= "=") (identifier "puVar36")) (; ";")) (expression_statement "*(uint **)(puVar47 + -0x7c) = puVar8;" (assignment_expression "*(uint **)(puVar47 + -0x7c) = puVar8" (pointer_expression "*(uint **)(puVar47 + -0x7c)" (* "*") (cast_expression "(uint **)(puVar47 + -0x7c)" (( "(") (type_descriptor "uint **" (type_identifier "uint") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar47 + -0x7c)" (( "(") (binary_expression "puVar47 + -0x7c" (identifier "puVar47") (+ "+") (number_literal "-0x7c")) () ")")))) (= "=") (identifier "puVar8")) (; ";")) (expression_statement "*(undefined4 *)(puVar47 + -0x80) = 0;" (assignment_expression "*(undefined4 *)(puVar47 + -0x80) = 0" (pointer_expression "*(undefined4 *)(puVar47 + -0x80)" (* "*") (cast_expression "(undefined4 *)(puVar47 + -0x80)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar47 + -0x80)" (( "(") (binary_expression "puVar47 + -0x80" (identifier "puVar47") (+ "+") (number_literal "-0x80")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(int *)(puVar47 + -0x84) = *piVar32;" (assignment_expression "*(int *)(puVar47 + -0x84) = *piVar32" (pointer_expression "*(int *)(puVar47 + -0x84)" (* "*") (cast_expression "(int *)(puVar47 + -0x84)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar47 + -0x84)" (( "(") (binary_expression "puVar47 + -0x84" (identifier "puVar47") (+ "+") (number_literal "-0x84")) () ")")))) (= "=") (pointer_expression "*piVar32" (* "*") (identifier "piVar32"))) (; ";")) (expression_statement "puVar31 = puVar16;" (assignment_expression "puVar31 = puVar16" (identifier "puVar31") (= "=") (identifier "puVar16")) (; ";")) (expression_statement "puVar20 = puVar9;" (assignment_expression "puVar20 = puVar9" (identifier "puVar20") (= "=") (identifier "puVar9")) (; ";")) (if_statement "if (puVar9 < puVar22) {\n        puVar16[1] = 0;\n        puVar30 = (uint *)0x0;\n      }\n      else {\n        puVar30 = puVar22;\n        if ((uint *)((int)puVar9 - (int)puVar22) <= puVar22) {\n          puVar30 = (uint *)((int)puVar9 - (int)puVar22);\n        }\n        puVar22 = puVar30;\n        puVar36 = puVar9;\n        if (puVar30 < (uint *)0x2) {\n          if (puVar30 == (uint *)0x0) {\n            puVar36 = (uint *)0x1;\n          }\n          *(uint **)puVar16[2] = puVar36;\n          puVar16[1] = 1;\n          puVar49 = puVar46 + -0x90;\n        }\n        else if (puVar9 < (uint *)0x23) {\n          puVar13 = (undefined1 *)((int)puVar30 + -2);\n          iVar6 = *(int *)(pcVar51 + 0x7aa7c);\n          puVar20 = (uint *)puVar16[2];\n          uVar18 = (int)puVar9 - (int)puVar30;\n          puVar36 = (uint *)(iVar6 + ((uint)puVar9 >> 1));\n          puVar30 = (uint *)(iVar6 + ((uint)puVar30 >> 1));\n          bVar2 = *(byte *)((int)puVar30 + -1);\n          puVar31 = (uint *)(uint)*(byte *)(iVar6 + (uVar18 >> 1) + -1);\n          *puVar20 = *(int *)((int)puVar13 * 4 + *(int *)(pcVar51 + 0x7a8c8) + 0x35b4) *\n                     *(int *)(*(int *)(pcVar51 + 0x7ad64) + (int)puVar9 * 4) *\n                     *(int *)((uVar18 - 2) * 4 + *(int *)(pcVar51 + 0x7a8c8) + 0x35b4) <<\n                     (((uint)*(byte *)((int)puVar36 + -1) - (int)(uint)bVar2) - (int)puVar31 & 0x1f)\n          ;\n          puVar16[1] = 1;\n          puVar22 = (uint *)(uint)bVar2;\n          puVar49 = puVar46 + -0x90;\n        }\n        else if (puVar30 < &DAT_00000011) {\n          FUN_000216e8();\n          pcVar44 = *(code **)(puVar47 + -0xf0);\n          puVar49 = puVar46 + -0x90;\n        }\n        else if (puVar30 < &DAT_00000021) {\n          uVar18 = (uint)puVar30 >> 1;\n          uVar37 = (int)puVar9 - uVar18;\n          FUN_000216e8();\n          iVar6 = *(int *)(puVar47 + -0xf0);\n          uVar7 = (int)puVar30 - uVar18;\n          if (uVar37 < 0x23) {\n            puVar50 = (undefined1 *)puVar16[1];\n            if ((int)puVar50 < (int)*puVar16) {\n              puVar8 = (uint *)puVar16[2];\n            }\n            else {\n              puVar8 = (uint *)(**(code **)(iVar6 + -0x7a80))(puVar16,puVar50 + 1);\n              iVar6 = *(int *)(puVar47 + -0xf0);\n            }\n            iVar29 = *(int *)(iVar6 + -0x7e20);\n            iVar24 = *(int *)(iVar6 + -0x7fd4) + 0x35b4;\n            uVar37 = (**(code **)(iVar6 + -0x7f9c))\n                               (puVar8,puVar8,puVar50,\n                                *(int *)((((int)puVar9 - (int)puVar30) - 2U) * 4 + iVar24) *\n                                *(int *)(*(int *)(iVar6 + -0x7b38) + uVar37 * 4) *\n                                *(int *)((uVar7 - 2) * 4 + iVar24) <<\n                                (((uint)*(byte *)(iVar29 + (uVar37 >> 1) + -1) -\n                                 (uint)*(byte *)(iVar29 + (uVar7 >> 1) + -1)) -\n                                 (uint)*(byte *)(iVar29 + ((uint)((int)puVar9 - (int)puVar30) >> 1)\n                                                + -1) & 0x1f));\n            iVar6 = *(int *)(puVar47 + -0xf0);\n            puVar30 = (uint *)(puVar50 + (uVar37 != 0));\n            puVar8[(int)puVar50] = uVar37;\n          }\n          else {\n            *(undefined4 *)(puVar47 + -0xe4) = 0x15;\n            *(undefined1 **)(puVar47 + -0xdc) = puVar47 + -0xd8;\n            FUN_000216e8(puVar47 + -0xe4,uVar37,uVar7);\n            (**(code **)(*(int *)(puVar47 + -0xf0) + -0x7ba8))(puVar16,puVar16,puVar47 + -0xe4);\n            iVar6 = *(int *)(puVar47 + -0xf0);\n            puVar8 = (uint *)puVar16[2];\n            puVar30 = (uint *)puVar16[1];\n          }\n          pcVar51 = *(code **)(iVar6 + -0x7bb4);\n          puVar38 = (uint *)((uint)*(byte *)((uVar7 - 8) + *(int *)(iVar6 + -0x7fd4) + 0x3550) -\n                            (uint)(uVar18 != uVar7));\n          *(undefined4 *)(puVar47 + -0xf8) =\n               *(undefined4 *)((uVar7 - 8) * 4 + *(int *)(iVar6 + -0x7fd4) + 0x355c);\n          *(uint **)(puVar47 + -0xf4) = puVar38;\n          puVar31 = puVar8;\n          puVar20 = puVar8;\n          puVar22 = puVar30;\n          (*pcVar51)();\n          pcVar44 = *(code **)(puVar47 + -0xf0);\n          if (puVar8[(int)((int)puVar30 + -1)] == 0) {\n            puVar9 = puVar8 + (int)puVar30;\n            do {\n              puVar1 = puVar9 + -2;\n              puVar30 = (uint *)((int)puVar30 + -1);\n              puVar9 = puVar9 + -1;\n            } while (*puVar1 == 0);\n          }\n          puVar16[1] = (uint)puVar30;\n          puVar49 = puVar50;\n        }\n        else if ((puVar30 < (uint *)0x3e8) || (puVar30 <= (uint *)((uint)puVar9 >> 4))) {\n          FUN_0002209c();\n          pcVar44 = *(code **)(puVar47 + -0xf0);\n          puVar49 = puVar46 + -0x90;\n        }\n        else {\n          FUN_000219dc();\n          pcVar44 = *(code **)(puVar47 + -0xf0);\n          puVar49 = puVar46 + -0x90;\n        }\n      }" (if "if") (parenthesized_expression "(puVar9 < puVar22)" (( "(") (binary_expression "puVar9 < puVar22" (identifier "puVar9") (< "<") (identifier "puVar22")) () ")")) (compound_statement "{\n        puVar16[1] = 0;\n        puVar30 = (uint *)0x0;\n      }" ({ "{") (expression_statement "puVar16[1] = 0;" (assignment_expression "puVar16[1] = 0" (subscript_expression "puVar16[1]" (identifier "puVar16") ([ "[") (number_literal "1") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar30 = (uint *)0x0;" (assignment_expression "puVar30 = (uint *)0x0" (identifier "puVar30") (= "=") (cast_expression "(uint *)0x0" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (} "}")) (else_clause "else {\n        puVar30 = puVar22;\n        if ((uint *)((int)puVar9 - (int)puVar22) <= puVar22) {\n          puVar30 = (uint *)((int)puVar9 - (int)puVar22);\n        }\n        puVar22 = puVar30;\n        puVar36 = puVar9;\n        if (puVar30 < (uint *)0x2) {\n          if (puVar30 == (uint *)0x0) {\n            puVar36 = (uint *)0x1;\n          }\n          *(uint **)puVar16[2] = puVar36;\n          puVar16[1] = 1;\n          puVar49 = puVar46 + -0x90;\n        }\n        else if (puVar9 < (uint *)0x23) {\n          puVar13 = (undefined1 *)((int)puVar30 + -2);\n          iVar6 = *(int *)(pcVar51 + 0x7aa7c);\n          puVar20 = (uint *)puVar16[2];\n          uVar18 = (int)puVar9 - (int)puVar30;\n          puVar36 = (uint *)(iVar6 + ((uint)puVar9 >> 1));\n          puVar30 = (uint *)(iVar6 + ((uint)puVar30 >> 1));\n          bVar2 = *(byte *)((int)puVar30 + -1);\n          puVar31 = (uint *)(uint)*(byte *)(iVar6 + (uVar18 >> 1) + -1);\n          *puVar20 = *(int *)((int)puVar13 * 4 + *(int *)(pcVar51 + 0x7a8c8) + 0x35b4) *\n                     *(int *)(*(int *)(pcVar51 + 0x7ad64) + (int)puVar9 * 4) *\n                     *(int *)((uVar18 - 2) * 4 + *(int *)(pcVar51 + 0x7a8c8) + 0x35b4) <<\n                     (((uint)*(byte *)((int)puVar36 + -1) - (int)(uint)bVar2) - (int)puVar31 & 0x1f)\n          ;\n          puVar16[1] = 1;\n          puVar22 = (uint *)(uint)bVar2;\n          puVar49 = puVar46 + -0x90;\n        }\n        else if (puVar30 < &DAT_00000011) {\n          FUN_000216e8();\n          pcVar44 = *(code **)(puVar47 + -0xf0);\n          puVar49 = puVar46 + -0x90;\n        }\n        else if (puVar30 < &DAT_00000021) {\n          uVar18 = (uint)puVar30 >> 1;\n          uVar37 = (int)puVar9 - uVar18;\n          FUN_000216e8();\n          iVar6 = *(int *)(puVar47 + -0xf0);\n          uVar7 = (int)puVar30 - uVar18;\n          if (uVar37 < 0x23) {\n            puVar50 = (undefined1 *)puVar16[1];\n            if ((int)puVar50 < (int)*puVar16) {\n              puVar8 = (uint *)puVar16[2];\n            }\n            else {\n              puVar8 = (uint *)(**(code **)(iVar6 + -0x7a80))(puVar16,puVar50 + 1);\n              iVar6 = *(int *)(puVar47 + -0xf0);\n            }\n            iVar29 = *(int *)(iVar6 + -0x7e20);\n            iVar24 = *(int *)(iVar6 + -0x7fd4) + 0x35b4;\n            uVar37 = (**(code **)(iVar6 + -0x7f9c))\n                               (puVar8,puVar8,puVar50,\n                                *(int *)((((int)puVar9 - (int)puVar30) - 2U) * 4 + iVar24) *\n                                *(int *)(*(int *)(iVar6 + -0x7b38) + uVar37 * 4) *\n                                *(int *)((uVar7 - 2) * 4 + iVar24) <<\n                                (((uint)*(byte *)(iVar29 + (uVar37 >> 1) + -1) -\n                                 (uint)*(byte *)(iVar29 + (uVar7 >> 1) + -1)) -\n                                 (uint)*(byte *)(iVar29 + ((uint)((int)puVar9 - (int)puVar30) >> 1)\n                                                + -1) & 0x1f));\n            iVar6 = *(int *)(puVar47 + -0xf0);\n            puVar30 = (uint *)(puVar50 + (uVar37 != 0));\n            puVar8[(int)puVar50] = uVar37;\n          }\n          else {\n            *(undefined4 *)(puVar47 + -0xe4) = 0x15;\n            *(undefined1 **)(puVar47 + -0xdc) = puVar47 + -0xd8;\n            FUN_000216e8(puVar47 + -0xe4,uVar37,uVar7);\n            (**(code **)(*(int *)(puVar47 + -0xf0) + -0x7ba8))(puVar16,puVar16,puVar47 + -0xe4);\n            iVar6 = *(int *)(puVar47 + -0xf0);\n            puVar8 = (uint *)puVar16[2];\n            puVar30 = (uint *)puVar16[1];\n          }\n          pcVar51 = *(code **)(iVar6 + -0x7bb4);\n          puVar38 = (uint *)((uint)*(byte *)((uVar7 - 8) + *(int *)(iVar6 + -0x7fd4) + 0x3550) -\n                            (uint)(uVar18 != uVar7));\n          *(undefined4 *)(puVar47 + -0xf8) =\n               *(undefined4 *)((uVar7 - 8) * 4 + *(int *)(iVar6 + -0x7fd4) + 0x355c);\n          *(uint **)(puVar47 + -0xf4) = puVar38;\n          puVar31 = puVar8;\n          puVar20 = puVar8;\n          puVar22 = puVar30;\n          (*pcVar51)();\n          pcVar44 = *(code **)(puVar47 + -0xf0);\n          if (puVar8[(int)((int)puVar30 + -1)] == 0) {\n            puVar9 = puVar8 + (int)puVar30;\n            do {\n              puVar1 = puVar9 + -2;\n              puVar30 = (uint *)((int)puVar30 + -1);\n              puVar9 = puVar9 + -1;\n            } while (*puVar1 == 0);\n          }\n          puVar16[1] = (uint)puVar30;\n          puVar49 = puVar50;\n        }\n        else if ((puVar30 < (uint *)0x3e8) || (puVar30 <= (uint *)((uint)puVar9 >> 4))) {\n          FUN_0002209c();\n          pcVar44 = *(code **)(puVar47 + -0xf0);\n          puVar49 = puVar46 + -0x90;\n        }\n        else {\n          FUN_000219dc();\n          pcVar44 = *(code **)(puVar47 + -0xf0);\n          puVar49 = puVar46 + -0x90;\n        }\n      }" (else "else") (compound_statement "{\n        puVar30 = puVar22;\n        if ((uint *)((int)puVar9 - (int)puVar22) <= puVar22) {\n          puVar30 = (uint *)((int)puVar9 - (int)puVar22);\n        }\n        puVar22 = puVar30;\n        puVar36 = puVar9;\n        if (puVar30 < (uint *)0x2) {\n          if (puVar30 == (uint *)0x0) {\n            puVar36 = (uint *)0x1;\n          }\n          *(uint **)puVar16[2] = puVar36;\n          puVar16[1] = 1;\n          puVar49 = puVar46 + -0x90;\n        }\n        else if (puVar9 < (uint *)0x23) {\n          puVar13 = (undefined1 *)((int)puVar30 + -2);\n          iVar6 = *(int *)(pcVar51 + 0x7aa7c);\n          puVar20 = (uint *)puVar16[2];\n          uVar18 = (int)puVar9 - (int)puVar30;\n          puVar36 = (uint *)(iVar6 + ((uint)puVar9 >> 1));\n          puVar30 = (uint *)(iVar6 + ((uint)puVar30 >> 1));\n          bVar2 = *(byte *)((int)puVar30 + -1);\n          puVar31 = (uint *)(uint)*(byte *)(iVar6 + (uVar18 >> 1) + -1);\n          *puVar20 = *(int *)((int)puVar13 * 4 + *(int *)(pcVar51 + 0x7a8c8) + 0x35b4) *\n                     *(int *)(*(int *)(pcVar51 + 0x7ad64) + (int)puVar9 * 4) *\n                     *(int *)((uVar18 - 2) * 4 + *(int *)(pcVar51 + 0x7a8c8) + 0x35b4) <<\n                     (((uint)*(byte *)((int)puVar36 + -1) - (int)(uint)bVar2) - (int)puVar31 & 0x1f)\n          ;\n          puVar16[1] = 1;\n          puVar22 = (uint *)(uint)bVar2;\n          puVar49 = puVar46 + -0x90;\n        }\n        else if (puVar30 < &DAT_00000011) {\n          FUN_000216e8();\n          pcVar44 = *(code **)(puVar47 + -0xf0);\n          puVar49 = puVar46 + -0x90;\n        }\n        else if (puVar30 < &DAT_00000021) {\n          uVar18 = (uint)puVar30 >> 1;\n          uVar37 = (int)puVar9 - uVar18;\n          FUN_000216e8();\n          iVar6 = *(int *)(puVar47 + -0xf0);\n          uVar7 = (int)puVar30 - uVar18;\n          if (uVar37 < 0x23) {\n            puVar50 = (undefined1 *)puVar16[1];\n            if ((int)puVar50 < (int)*puVar16) {\n              puVar8 = (uint *)puVar16[2];\n            }\n            else {\n              puVar8 = (uint *)(**(code **)(iVar6 + -0x7a80))(puVar16,puVar50 + 1);\n              iVar6 = *(int *)(puVar47 + -0xf0);\n            }\n            iVar29 = *(int *)(iVar6 + -0x7e20);\n            iVar24 = *(int *)(iVar6 + -0x7fd4) + 0x35b4;\n            uVar37 = (**(code **)(iVar6 + -0x7f9c))\n                               (puVar8,puVar8,puVar50,\n                                *(int *)((((int)puVar9 - (int)puVar30) - 2U) * 4 + iVar24) *\n                                *(int *)(*(int *)(iVar6 + -0x7b38) + uVar37 * 4) *\n                                *(int *)((uVar7 - 2) * 4 + iVar24) <<\n                                (((uint)*(byte *)(iVar29 + (uVar37 >> 1) + -1) -\n                                 (uint)*(byte *)(iVar29 + (uVar7 >> 1) + -1)) -\n                                 (uint)*(byte *)(iVar29 + ((uint)((int)puVar9 - (int)puVar30) >> 1)\n                                                + -1) & 0x1f));\n            iVar6 = *(int *)(puVar47 + -0xf0);\n            puVar30 = (uint *)(puVar50 + (uVar37 != 0));\n            puVar8[(int)puVar50] = uVar37;\n          }\n          else {\n            *(undefined4 *)(puVar47 + -0xe4) = 0x15;\n            *(undefined1 **)(puVar47 + -0xdc) = puVar47 + -0xd8;\n            FUN_000216e8(puVar47 + -0xe4,uVar37,uVar7);\n            (**(code **)(*(int *)(puVar47 + -0xf0) + -0x7ba8))(puVar16,puVar16,puVar47 + -0xe4);\n            iVar6 = *(int *)(puVar47 + -0xf0);\n            puVar8 = (uint *)puVar16[2];\n            puVar30 = (uint *)puVar16[1];\n          }\n          pcVar51 = *(code **)(iVar6 + -0x7bb4);\n          puVar38 = (uint *)((uint)*(byte *)((uVar7 - 8) + *(int *)(iVar6 + -0x7fd4) + 0x3550) -\n                            (uint)(uVar18 != uVar7));\n          *(undefined4 *)(puVar47 + -0xf8) =\n               *(undefined4 *)((uVar7 - 8) * 4 + *(int *)(iVar6 + -0x7fd4) + 0x355c);\n          *(uint **)(puVar47 + -0xf4) = puVar38;\n          puVar31 = puVar8;\n          puVar20 = puVar8;\n          puVar22 = puVar30;\n          (*pcVar51)();\n          pcVar44 = *(code **)(puVar47 + -0xf0);\n          if (puVar8[(int)((int)puVar30 + -1)] == 0) {\n            puVar9 = puVar8 + (int)puVar30;\n            do {\n              puVar1 = puVar9 + -2;\n              puVar30 = (uint *)((int)puVar30 + -1);\n              puVar9 = puVar9 + -1;\n            } while (*puVar1 == 0);\n          }\n          puVar16[1] = (uint)puVar30;\n          puVar49 = puVar50;\n        }\n        else if ((puVar30 < (uint *)0x3e8) || (puVar30 <= (uint *)((uint)puVar9 >> 4))) {\n          FUN_0002209c();\n          pcVar44 = *(code **)(puVar47 + -0xf0);\n          puVar49 = puVar46 + -0x90;\n        }\n        else {\n          FUN_000219dc();\n          pcVar44 = *(code **)(puVar47 + -0xf0);\n          puVar49 = puVar46 + -0x90;\n        }\n      }" ({ "{") (expression_statement "puVar30 = puVar22;" (assignment_expression "puVar30 = puVar22" (identifier "puVar30") (= "=") (identifier "puVar22")) (; ";")) (if_statement "if ((uint *)((int)puVar9 - (int)puVar22) <= puVar22) {\n          puVar30 = (uint *)((int)puVar9 - (int)puVar22);\n        }" (if "if") (parenthesized_expression "((uint *)((int)puVar9 - (int)puVar22) <= puVar22)" (( "(") (binary_expression "(uint *)((int)puVar9 - (int)puVar22) <= puVar22" (cast_expression "(uint *)((int)puVar9 - (int)puVar22)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar9 - (int)puVar22)" (( "(") (binary_expression "(int)puVar9 - (int)puVar22" (cast_expression "(int)puVar9" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar9")) (- "-") (cast_expression "(int)puVar22" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar22"))) () ")"))) (<= "<=") (identifier "puVar22")) () ")")) (compound_statement "{\n          puVar30 = (uint *)((int)puVar9 - (int)puVar22);\n        }" ({ "{") (expression_statement "puVar30 = (uint *)((int)puVar9 - (int)puVar22);" (assignment_expression "puVar30 = (uint *)((int)puVar9 - (int)puVar22)" (identifier "puVar30") (= "=") (cast_expression "(uint *)((int)puVar9 - (int)puVar22)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar9 - (int)puVar22)" (( "(") (binary_expression "(int)puVar9 - (int)puVar22" (cast_expression "(int)puVar9" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar9")) (- "-") (cast_expression "(int)puVar22" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar22"))) () ")")))) (; ";")) (} "}"))) (expression_statement "puVar22 = puVar30;" (assignment_expression "puVar22 = puVar30" (identifier "puVar22") (= "=") (identifier "puVar30")) (; ";")) (expression_statement "puVar36 = puVar9;" (assignment_expression "puVar36 = puVar9" (identifier "puVar36") (= "=") (identifier "puVar9")) (; ";")) (if_statement "if (puVar30 < (uint *)0x2) {\n          if (puVar30 == (uint *)0x0) {\n            puVar36 = (uint *)0x1;\n          }\n          *(uint **)puVar16[2] = puVar36;\n          puVar16[1] = 1;\n          puVar49 = puVar46 + -0x90;\n        }\n        else if (puVar9 < (uint *)0x23) {\n          puVar13 = (undefined1 *)((int)puVar30 + -2);\n          iVar6 = *(int *)(pcVar51 + 0x7aa7c);\n          puVar20 = (uint *)puVar16[2];\n          uVar18 = (int)puVar9 - (int)puVar30;\n          puVar36 = (uint *)(iVar6 + ((uint)puVar9 >> 1));\n          puVar30 = (uint *)(iVar6 + ((uint)puVar30 >> 1));\n          bVar2 = *(byte *)((int)puVar30 + -1);\n          puVar31 = (uint *)(uint)*(byte *)(iVar6 + (uVar18 >> 1) + -1);\n          *puVar20 = *(int *)((int)puVar13 * 4 + *(int *)(pcVar51 + 0x7a8c8) + 0x35b4) *\n                     *(int *)(*(int *)(pcVar51 + 0x7ad64) + (int)puVar9 * 4) *\n                     *(int *)((uVar18 - 2) * 4 + *(int *)(pcVar51 + 0x7a8c8) + 0x35b4) <<\n                     (((uint)*(byte *)((int)puVar36 + -1) - (int)(uint)bVar2) - (int)puVar31 & 0x1f)\n          ;\n          puVar16[1] = 1;\n          puVar22 = (uint *)(uint)bVar2;\n          puVar49 = puVar46 + -0x90;\n        }\n        else if (puVar30 < &DAT_00000011) {\n          FUN_000216e8();\n          pcVar44 = *(code **)(puVar47 + -0xf0);\n          puVar49 = puVar46 + -0x90;\n        }\n        else if (puVar30 < &DAT_00000021) {\n          uVar18 = (uint)puVar30 >> 1;\n          uVar37 = (int)puVar9 - uVar18;\n          FUN_000216e8();\n          iVar6 = *(int *)(puVar47 + -0xf0);\n          uVar7 = (int)puVar30 - uVar18;\n          if (uVar37 < 0x23) {\n            puVar50 = (undefined1 *)puVar16[1];\n            if ((int)puVar50 < (int)*puVar16) {\n              puVar8 = (uint *)puVar16[2];\n            }\n            else {\n              puVar8 = (uint *)(**(code **)(iVar6 + -0x7a80))(puVar16,puVar50 + 1);\n              iVar6 = *(int *)(puVar47 + -0xf0);\n            }\n            iVar29 = *(int *)(iVar6 + -0x7e20);\n            iVar24 = *(int *)(iVar6 + -0x7fd4) + 0x35b4;\n            uVar37 = (**(code **)(iVar6 + -0x7f9c))\n                               (puVar8,puVar8,puVar50,\n                                *(int *)((((int)puVar9 - (int)puVar30) - 2U) * 4 + iVar24) *\n                                *(int *)(*(int *)(iVar6 + -0x7b38) + uVar37 * 4) *\n                                *(int *)((uVar7 - 2) * 4 + iVar24) <<\n                                (((uint)*(byte *)(iVar29 + (uVar37 >> 1) + -1) -\n                                 (uint)*(byte *)(iVar29 + (uVar7 >> 1) + -1)) -\n                                 (uint)*(byte *)(iVar29 + ((uint)((int)puVar9 - (int)puVar30) >> 1)\n                                                + -1) & 0x1f));\n            iVar6 = *(int *)(puVar47 + -0xf0);\n            puVar30 = (uint *)(puVar50 + (uVar37 != 0));\n            puVar8[(int)puVar50] = uVar37;\n          }\n          else {\n            *(undefined4 *)(puVar47 + -0xe4) = 0x15;\n            *(undefined1 **)(puVar47 + -0xdc) = puVar47 + -0xd8;\n            FUN_000216e8(puVar47 + -0xe4,uVar37,uVar7);\n            (**(code **)(*(int *)(puVar47 + -0xf0) + -0x7ba8))(puVar16,puVar16,puVar47 + -0xe4);\n            iVar6 = *(int *)(puVar47 + -0xf0);\n            puVar8 = (uint *)puVar16[2];\n            puVar30 = (uint *)puVar16[1];\n          }\n          pcVar51 = *(code **)(iVar6 + -0x7bb4);\n          puVar38 = (uint *)((uint)*(byte *)((uVar7 - 8) + *(int *)(iVar6 + -0x7fd4) + 0x3550) -\n                            (uint)(uVar18 != uVar7));\n          *(undefined4 *)(puVar47 + -0xf8) =\n               *(undefined4 *)((uVar7 - 8) * 4 + *(int *)(iVar6 + -0x7fd4) + 0x355c);\n          *(uint **)(puVar47 + -0xf4) = puVar38;\n          puVar31 = puVar8;\n          puVar20 = puVar8;\n          puVar22 = puVar30;\n          (*pcVar51)();\n          pcVar44 = *(code **)(puVar47 + -0xf0);\n          if (puVar8[(int)((int)puVar30 + -1)] == 0) {\n            puVar9 = puVar8 + (int)puVar30;\n            do {\n              puVar1 = puVar9 + -2;\n              puVar30 = (uint *)((int)puVar30 + -1);\n              puVar9 = puVar9 + -1;\n            } while (*puVar1 == 0);\n          }\n          puVar16[1] = (uint)puVar30;\n          puVar49 = puVar50;\n        }\n        else if ((puVar30 < (uint *)0x3e8) || (puVar30 <= (uint *)((uint)puVar9 >> 4))) {\n          FUN_0002209c();\n          pcVar44 = *(code **)(puVar47 + -0xf0);\n          puVar49 = puVar46 + -0x90;\n        }\n        else {\n          FUN_000219dc();\n          pcVar44 = *(code **)(puVar47 + -0xf0);\n          puVar49 = puVar46 + -0x90;\n        }" (if "if") (parenthesized_expression "(puVar30 < (uint *)0x2)" (( "(") (binary_expression "puVar30 < (uint *)0x2" (identifier "puVar30") (< "<") (cast_expression "(uint *)0x2" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x2"))) () ")")) (compound_statement "{\n          if (puVar30 == (uint *)0x0) {\n            puVar36 = (uint *)0x1;\n          }\n          *(uint **)puVar16[2] = puVar36;\n          puVar16[1] = 1;\n          puVar49 = puVar46 + -0x90;\n        }" ({ "{") (if_statement "if (puVar30 == (uint *)0x0) {\n            puVar36 = (uint *)0x1;\n          }" (if "if") (parenthesized_expression "(puVar30 == (uint *)0x0)" (( "(") (binary_expression "puVar30 == (uint *)0x0" (identifier "puVar30") (== "==") (cast_expression "(uint *)0x0" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n            puVar36 = (uint *)0x1;\n          }" ({ "{") (expression_statement "puVar36 = (uint *)0x1;" (assignment_expression "puVar36 = (uint *)0x1" (identifier "puVar36") (= "=") (cast_expression "(uint *)0x1" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x1"))) (; ";")) (} "}"))) (expression_statement "*(uint **)puVar16[2] = puVar36;" (assignment_expression "*(uint **)puVar16[2] = puVar36" (pointer_expression "*(uint **)puVar16[2]" (* "*") (cast_expression "(uint **)puVar16[2]" (( "(") (type_descriptor "uint **" (type_identifier "uint") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (subscript_expression "puVar16[2]" (identifier "puVar16") ([ "[") (number_literal "2") (] "]")))) (= "=") (identifier "puVar36")) (; ";")) (expression_statement "puVar16[1] = 1;" (assignment_expression "puVar16[1] = 1" (subscript_expression "puVar16[1]" (identifier "puVar16") ([ "[") (number_literal "1") (] "]")) (= "=") (number_literal "1")) (; ";")) (expression_statement "puVar49 = puVar46 + -0x90;" (assignment_expression "puVar49 = puVar46 + -0x90" (identifier "puVar49") (= "=") (binary_expression "puVar46 + -0x90" (identifier "puVar46") (+ "+") (number_literal "-0x90"))) (; ";")) (} "}")) (else_clause "else if (puVar9 < (uint *)0x23) {\n          puVar13 = (undefined1 *)((int)puVar30 + -2);\n          iVar6 = *(int *)(pcVar51 + 0x7aa7c);\n          puVar20 = (uint *)puVar16[2];\n          uVar18 = (int)puVar9 - (int)puVar30;\n          puVar36 = (uint *)(iVar6 + ((uint)puVar9 >> 1));\n          puVar30 = (uint *)(iVar6 + ((uint)puVar30 >> 1));\n          bVar2 = *(byte *)((int)puVar30 + -1);\n          puVar31 = (uint *)(uint)*(byte *)(iVar6 + (uVar18 >> 1) + -1);\n          *puVar20 = *(int *)((int)puVar13 * 4 + *(int *)(pcVar51 + 0x7a8c8) + 0x35b4) *\n                     *(int *)(*(int *)(pcVar51 + 0x7ad64) + (int)puVar9 * 4) *\n                     *(int *)((uVar18 - 2) * 4 + *(int *)(pcVar51 + 0x7a8c8) + 0x35b4) <<\n                     (((uint)*(byte *)((int)puVar36 + -1) - (int)(uint)bVar2) - (int)puVar31 & 0x1f)\n          ;\n          puVar16[1] = 1;\n          puVar22 = (uint *)(uint)bVar2;\n          puVar49 = puVar46 + -0x90;\n        }\n        else if (puVar30 < &DAT_00000011) {\n          FUN_000216e8();\n          pcVar44 = *(code **)(puVar47 + -0xf0);\n          puVar49 = puVar46 + -0x90;\n        }\n        else if (puVar30 < &DAT_00000021) {\n          uVar18 = (uint)puVar30 >> 1;\n          uVar37 = (int)puVar9 - uVar18;\n          FUN_000216e8();\n          iVar6 = *(int *)(puVar47 + -0xf0);\n          uVar7 = (int)puVar30 - uVar18;\n          if (uVar37 < 0x23) {\n            puVar50 = (undefined1 *)puVar16[1];\n            if ((int)puVar50 < (int)*puVar16) {\n              puVar8 = (uint *)puVar16[2];\n            }\n            else {\n              puVar8 = (uint *)(**(code **)(iVar6 + -0x7a80))(puVar16,puVar50 + 1);\n              iVar6 = *(int *)(puVar47 + -0xf0);\n            }\n            iVar29 = *(int *)(iVar6 + -0x7e20);\n            iVar24 = *(int *)(iVar6 + -0x7fd4) + 0x35b4;\n            uVar37 = (**(code **)(iVar6 + -0x7f9c))\n                               (puVar8,puVar8,puVar50,\n                                *(int *)((((int)puVar9 - (int)puVar30) - 2U) * 4 + iVar24) *\n                                *(int *)(*(int *)(iVar6 + -0x7b38) + uVar37 * 4) *\n                                *(int *)((uVar7 - 2) * 4 + iVar24) <<\n                                (((uint)*(byte *)(iVar29 + (uVar37 >> 1) + -1) -\n                                 (uint)*(byte *)(iVar29 + (uVar7 >> 1) + -1)) -\n                                 (uint)*(byte *)(iVar29 + ((uint)((int)puVar9 - (int)puVar30) >> 1)\n                                                + -1) & 0x1f));\n            iVar6 = *(int *)(puVar47 + -0xf0);\n            puVar30 = (uint *)(puVar50 + (uVar37 != 0));\n            puVar8[(int)puVar50] = uVar37;\n          }\n          else {\n            *(undefined4 *)(puVar47 + -0xe4) = 0x15;\n            *(undefined1 **)(puVar47 + -0xdc) = puVar47 + -0xd8;\n            FUN_000216e8(puVar47 + -0xe4,uVar37,uVar7);\n            (**(code **)(*(int *)(puVar47 + -0xf0) + -0x7ba8))(puVar16,puVar16,puVar47 + -0xe4);\n            iVar6 = *(int *)(puVar47 + -0xf0);\n            puVar8 = (uint *)puVar16[2];\n            puVar30 = (uint *)puVar16[1];\n          }\n          pcVar51 = *(code **)(iVar6 + -0x7bb4);\n          puVar38 = (uint *)((uint)*(byte *)((uVar7 - 8) + *(int *)(iVar6 + -0x7fd4) + 0x3550) -\n                            (uint)(uVar18 != uVar7));\n          *(undefined4 *)(puVar47 + -0xf8) =\n               *(undefined4 *)((uVar7 - 8) * 4 + *(int *)(iVar6 + -0x7fd4) + 0x355c);\n          *(uint **)(puVar47 + -0xf4) = puVar38;\n          puVar31 = puVar8;\n          puVar20 = puVar8;\n          puVar22 = puVar30;\n          (*pcVar51)();\n          pcVar44 = *(code **)(puVar47 + -0xf0);\n          if (puVar8[(int)((int)puVar30 + -1)] == 0) {\n            puVar9 = puVar8 + (int)puVar30;\n            do {\n              puVar1 = puVar9 + -2;\n              puVar30 = (uint *)((int)puVar30 + -1);\n              puVar9 = puVar9 + -1;\n            } while (*puVar1 == 0);\n          }\n          puVar16[1] = (uint)puVar30;\n          puVar49 = puVar50;\n        }\n        else if ((puVar30 < (uint *)0x3e8) || (puVar30 <= (uint *)((uint)puVar9 >> 4))) {\n          FUN_0002209c();\n          pcVar44 = *(code **)(puVar47 + -0xf0);\n          puVar49 = puVar46 + -0x90;\n        }\n        else {\n          FUN_000219dc();\n          pcVar44 = *(code **)(puVar47 + -0xf0);\n          puVar49 = puVar46 + -0x90;\n        }" (else "else") (if_statement "if (puVar9 < (uint *)0x23) {\n          puVar13 = (undefined1 *)((int)puVar30 + -2);\n          iVar6 = *(int *)(pcVar51 + 0x7aa7c);\n          puVar20 = (uint *)puVar16[2];\n          uVar18 = (int)puVar9 - (int)puVar30;\n          puVar36 = (uint *)(iVar6 + ((uint)puVar9 >> 1));\n          puVar30 = (uint *)(iVar6 + ((uint)puVar30 >> 1));\n          bVar2 = *(byte *)((int)puVar30 + -1);\n          puVar31 = (uint *)(uint)*(byte *)(iVar6 + (uVar18 >> 1) + -1);\n          *puVar20 = *(int *)((int)puVar13 * 4 + *(int *)(pcVar51 + 0x7a8c8) + 0x35b4) *\n                     *(int *)(*(int *)(pcVar51 + 0x7ad64) + (int)puVar9 * 4) *\n                     *(int *)((uVar18 - 2) * 4 + *(int *)(pcVar51 + 0x7a8c8) + 0x35b4) <<\n                     (((uint)*(byte *)((int)puVar36 + -1) - (int)(uint)bVar2) - (int)puVar31 & 0x1f)\n          ;\n          puVar16[1] = 1;\n          puVar22 = (uint *)(uint)bVar2;\n          puVar49 = puVar46 + -0x90;\n        }\n        else if (puVar30 < &DAT_00000011) {\n          FUN_000216e8();\n          pcVar44 = *(code **)(puVar47 + -0xf0);\n          puVar49 = puVar46 + -0x90;\n        }\n        else if (puVar30 < &DAT_00000021) {\n          uVar18 = (uint)puVar30 >> 1;\n          uVar37 = (int)puVar9 - uVar18;\n          FUN_000216e8();\n          iVar6 = *(int *)(puVar47 + -0xf0);\n          uVar7 = (int)puVar30 - uVar18;\n          if (uVar37 < 0x23) {\n            puVar50 = (undefined1 *)puVar16[1];\n            if ((int)puVar50 < (int)*puVar16) {\n              puVar8 = (uint *)puVar16[2];\n            }\n            else {\n              puVar8 = (uint *)(**(code **)(iVar6 + -0x7a80))(puVar16,puVar50 + 1);\n              iVar6 = *(int *)(puVar47 + -0xf0);\n            }\n            iVar29 = *(int *)(iVar6 + -0x7e20);\n            iVar24 = *(int *)(iVar6 + -0x7fd4) + 0x35b4;\n            uVar37 = (**(code **)(iVar6 + -0x7f9c))\n                               (puVar8,puVar8,puVar50,\n                                *(int *)((((int)puVar9 - (int)puVar30) - 2U) * 4 + iVar24) *\n                                *(int *)(*(int *)(iVar6 + -0x7b38) + uVar37 * 4) *\n                                *(int *)((uVar7 - 2) * 4 + iVar24) <<\n                                (((uint)*(byte *)(iVar29 + (uVar37 >> 1) + -1) -\n                                 (uint)*(byte *)(iVar29 + (uVar7 >> 1) + -1)) -\n                                 (uint)*(byte *)(iVar29 + ((uint)((int)puVar9 - (int)puVar30) >> 1)\n                                                + -1) & 0x1f));\n            iVar6 = *(int *)(puVar47 + -0xf0);\n            puVar30 = (uint *)(puVar50 + (uVar37 != 0));\n            puVar8[(int)puVar50] = uVar37;\n          }\n          else {\n            *(undefined4 *)(puVar47 + -0xe4) = 0x15;\n            *(undefined1 **)(puVar47 + -0xdc) = puVar47 + -0xd8;\n            FUN_000216e8(puVar47 + -0xe4,uVar37,uVar7);\n            (**(code **)(*(int *)(puVar47 + -0xf0) + -0x7ba8))(puVar16,puVar16,puVar47 + -0xe4);\n            iVar6 = *(int *)(puVar47 + -0xf0);\n            puVar8 = (uint *)puVar16[2];\n            puVar30 = (uint *)puVar16[1];\n          }\n          pcVar51 = *(code **)(iVar6 + -0x7bb4);\n          puVar38 = (uint *)((uint)*(byte *)((uVar7 - 8) + *(int *)(iVar6 + -0x7fd4) + 0x3550) -\n                            (uint)(uVar18 != uVar7));\n          *(undefined4 *)(puVar47 + -0xf8) =\n               *(undefined4 *)((uVar7 - 8) * 4 + *(int *)(iVar6 + -0x7fd4) + 0x355c);\n          *(uint **)(puVar47 + -0xf4) = puVar38;\n          puVar31 = puVar8;\n          puVar20 = puVar8;\n          puVar22 = puVar30;\n          (*pcVar51)();\n          pcVar44 = *(code **)(puVar47 + -0xf0);\n          if (puVar8[(int)((int)puVar30 + -1)] == 0) {\n            puVar9 = puVar8 + (int)puVar30;\n            do {\n              puVar1 = puVar9 + -2;\n              puVar30 = (uint *)((int)puVar30 + -1);\n              puVar9 = puVar9 + -1;\n            } while (*puVar1 == 0);\n          }\n          puVar16[1] = (uint)puVar30;\n          puVar49 = puVar50;\n        }\n        else if ((puVar30 < (uint *)0x3e8) || (puVar30 <= (uint *)((uint)puVar9 >> 4))) {\n          FUN_0002209c();\n          pcVar44 = *(code **)(puVar47 + -0xf0);\n          puVar49 = puVar46 + -0x90;\n        }\n        else {\n          FUN_000219dc();\n          pcVar44 = *(code **)(puVar47 + -0xf0);\n          puVar49 = puVar46 + -0x90;\n        }" (if "if") (parenthesized_expression "(puVar9 < (uint *)0x23)" (( "(") (binary_expression "puVar9 < (uint *)0x23" (identifier "puVar9") (< "<") (cast_expression "(uint *)0x23" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x23"))) () ")")) (compound_statement "{\n          puVar13 = (undefined1 *)((int)puVar30 + -2);\n          iVar6 = *(int *)(pcVar51 + 0x7aa7c);\n          puVar20 = (uint *)puVar16[2];\n          uVar18 = (int)puVar9 - (int)puVar30;\n          puVar36 = (uint *)(iVar6 + ((uint)puVar9 >> 1));\n          puVar30 = (uint *)(iVar6 + ((uint)puVar30 >> 1));\n          bVar2 = *(byte *)((int)puVar30 + -1);\n          puVar31 = (uint *)(uint)*(byte *)(iVar6 + (uVar18 >> 1) + -1);\n          *puVar20 = *(int *)((int)puVar13 * 4 + *(int *)(pcVar51 + 0x7a8c8) + 0x35b4) *\n                     *(int *)(*(int *)(pcVar51 + 0x7ad64) + (int)puVar9 * 4) *\n                     *(int *)((uVar18 - 2) * 4 + *(int *)(pcVar51 + 0x7a8c8) + 0x35b4) <<\n                     (((uint)*(byte *)((int)puVar36 + -1) - (int)(uint)bVar2) - (int)puVar31 & 0x1f)\n          ;\n          puVar16[1] = 1;\n          puVar22 = (uint *)(uint)bVar2;\n          puVar49 = puVar46 + -0x90;\n        }" ({ "{") (expression_statement "puVar13 = (undefined1 *)((int)puVar30 + -2);" (assignment_expression "puVar13 = (undefined1 *)((int)puVar30 + -2)" (identifier "puVar13") (= "=") (cast_expression "(undefined1 *)((int)puVar30 + -2)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar30 + -2)" (( "(") (binary_expression "(int)puVar30 + -2" (cast_expression "(int)puVar30" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar30")) (+ "+") (number_literal "-2")) () ")")))) (; ";")) (expression_statement "iVar6 = *(int *)(pcVar51 + 0x7aa7c);" (assignment_expression "iVar6 = *(int *)(pcVar51 + 0x7aa7c)" (identifier "iVar6") (= "=") (pointer_expression "*(int *)(pcVar51 + 0x7aa7c)" (* "*") (cast_expression "(int *)(pcVar51 + 0x7aa7c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(pcVar51 + 0x7aa7c)" (( "(") (binary_expression "pcVar51 + 0x7aa7c" (identifier "pcVar51") (+ "+") (number_literal "0x7aa7c")) () ")"))))) (; ";")) (expression_statement "puVar20 = (uint *)puVar16[2];" (assignment_expression "puVar20 = (uint *)puVar16[2]" (identifier "puVar20") (= "=") (cast_expression "(uint *)puVar16[2]" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "puVar16[2]" (identifier "puVar16") ([ "[") (number_literal "2") (] "]")))) (; ";")) (expression_statement "uVar18 = (int)puVar9 - (int)puVar30;" (assignment_expression "uVar18 = (int)puVar9 - (int)puVar30" (identifier "uVar18") (= "=") (binary_expression "(int)puVar9 - (int)puVar30" (cast_expression "(int)puVar9" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar9")) (- "-") (cast_expression "(int)puVar30" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar30")))) (; ";")) (expression_statement "puVar36 = (uint *)(iVar6 + ((uint)puVar9 >> 1));" (assignment_expression "puVar36 = (uint *)(iVar6 + ((uint)puVar9 >> 1))" (identifier "puVar36") (= "=") (cast_expression "(uint *)(iVar6 + ((uint)puVar9 >> 1))" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar6 + ((uint)puVar9 >> 1))" (( "(") (binary_expression "iVar6 + ((uint)puVar9 >> 1)" (identifier "iVar6") (+ "+") (parenthesized_expression "((uint)puVar9 >> 1)" (( "(") (binary_expression "(uint)puVar9 >> 1" (cast_expression "(uint)puVar9" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "puVar9")) (>> ">>") (number_literal "1")) () ")"))) () ")")))) (; ";")) (expression_statement "puVar30 = (uint *)(iVar6 + ((uint)puVar30 >> 1));" (assignment_expression "puVar30 = (uint *)(iVar6 + ((uint)puVar30 >> 1))" (identifier "puVar30") (= "=") (cast_expression "(uint *)(iVar6 + ((uint)puVar30 >> 1))" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar6 + ((uint)puVar30 >> 1))" (( "(") (binary_expression "iVar6 + ((uint)puVar30 >> 1)" (identifier "iVar6") (+ "+") (parenthesized_expression "((uint)puVar30 >> 1)" (( "(") (binary_expression "(uint)puVar30 >> 1" (cast_expression "(uint)puVar30" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "puVar30")) (>> ">>") (number_literal "1")) () ")"))) () ")")))) (; ";")) (expression_statement "bVar2 = *(byte *)((int)puVar30 + -1);" (assignment_expression "bVar2 = *(byte *)((int)puVar30 + -1)" (identifier "bVar2") (= "=") (pointer_expression "*(byte *)((int)puVar30 + -1)" (* "*") (cast_expression "(byte *)((int)puVar30 + -1)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar30 + -1)" (( "(") (binary_expression "(int)puVar30 + -1" (cast_expression "(int)puVar30" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar30")) (+ "+") (number_literal "-1")) () ")"))))) (; ";")) (expression_statement "puVar31 = (uint *)(uint)*(byte *)(iVar6 + (uVar18 >> 1) + -1);" (assignment_expression "puVar31 = (uint *)(uint)*(byte *)(iVar6 + (uVar18 >> 1) + -1)" (identifier "puVar31") (= "=") (binary_expression "(uint *)(uint)*(byte *)(iVar6 + (uVar18 >> 1) + -1)" (cast_expression "(uint *)(uint)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")"))) (* "*") (cast_expression "(byte *)(iVar6 + (uVar18 >> 1) + -1)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar6 + (uVar18 >> 1) + -1)" (( "(") (binary_expression "iVar6 + (uVar18 >> 1) + -1" (binary_expression "iVar6 + (uVar18 >> 1)" (identifier "iVar6") (+ "+") (parenthesized_expression "(uVar18 >> 1)" (( "(") (binary_expression "uVar18 >> 1" (identifier "uVar18") (>> ">>") (number_literal "1")) () ")"))) (+ "+") (number_literal "-1")) () ")"))))) (; ";")) (expression_statement "*puVar20 = *(int *)((int)puVar13 * 4 + *(int *)(pcVar51 + 0x7a8c8) + 0x35b4) *\n                     *(int *)(*(int *)(pcVar51 + 0x7ad64) + (int)puVar9 * 4) *\n                     *(int *)((uVar18 - 2) * 4 + *(int *)(pcVar51 + 0x7a8c8) + 0x35b4) <<\n                     (((uint)*(byte *)((int)puVar36 + -1) - (int)(uint)bVar2) - (int)puVar31 & 0x1f)\n          ;" (assignment_expression "*puVar20 = *(int *)((int)puVar13 * 4 + *(int *)(pcVar51 + 0x7a8c8) + 0x35b4) *\n                     *(int *)(*(int *)(pcVar51 + 0x7ad64) + (int)puVar9 * 4) *\n                     *(int *)((uVar18 - 2) * 4 + *(int *)(pcVar51 + 0x7a8c8) + 0x35b4) <<\n                     (((uint)*(byte *)((int)puVar36 + -1) - (int)(uint)bVar2) - (int)puVar31 & 0x1f)" (pointer_expression "*puVar20" (* "*") (identifier "puVar20")) (= "=") (binary_expression "*(int *)((int)puVar13 * 4 + *(int *)(pcVar51 + 0x7a8c8) + 0x35b4) *\n                     *(int *)(*(int *)(pcVar51 + 0x7ad64) + (int)puVar9 * 4) *\n                     *(int *)((uVar18 - 2) * 4 + *(int *)(pcVar51 + 0x7a8c8) + 0x35b4) <<\n                     (((uint)*(byte *)((int)puVar36 + -1) - (int)(uint)bVar2) - (int)puVar31 & 0x1f)" (binary_expression "*(int *)((int)puVar13 * 4 + *(int *)(pcVar51 + 0x7a8c8) + 0x35b4) *\n                     *(int *)(*(int *)(pcVar51 + 0x7ad64) + (int)puVar9 * 4) *\n                     *(int *)((uVar18 - 2) * 4 + *(int *)(pcVar51 + 0x7a8c8) + 0x35b4)" (binary_expression "*(int *)((int)puVar13 * 4 + *(int *)(pcVar51 + 0x7a8c8) + 0x35b4) *\n                     *(int *)(*(int *)(pcVar51 + 0x7ad64) + (int)puVar9 * 4)" (pointer_expression "*(int *)((int)puVar13 * 4 + *(int *)(pcVar51 + 0x7a8c8) + 0x35b4)" (* "*") (cast_expression "(int *)((int)puVar13 * 4 + *(int *)(pcVar51 + 0x7a8c8) + 0x35b4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar13 * 4 + *(int *)(pcVar51 + 0x7a8c8) + 0x35b4)" (( "(") (binary_expression "(int)puVar13 * 4 + *(int *)(pcVar51 + 0x7a8c8) + 0x35b4" (binary_expression "(int)puVar13 * 4 + *(int *)(pcVar51 + 0x7a8c8)" (binary_expression "(int)puVar13 * 4" (cast_expression "(int)puVar13" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar13")) (* "*") (number_literal "4")) (+ "+") (pointer_expression "*(int *)(pcVar51 + 0x7a8c8)" (* "*") (cast_expression "(int *)(pcVar51 + 0x7a8c8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(pcVar51 + 0x7a8c8)" (( "(") (binary_expression "pcVar51 + 0x7a8c8" (identifier "pcVar51") (+ "+") (number_literal "0x7a8c8")) () ")"))))) (+ "+") (number_literal "0x35b4")) () ")")))) (* "*") (pointer_expression "*(int *)(*(int *)(pcVar51 + 0x7ad64) + (int)puVar9 * 4)" (* "*") (cast_expression "(int *)(*(int *)(pcVar51 + 0x7ad64) + (int)puVar9 * 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(pcVar51 + 0x7ad64) + (int)puVar9 * 4)" (( "(") (binary_expression "*(int *)(pcVar51 + 0x7ad64) + (int)puVar9 * 4" (pointer_expression "*(int *)(pcVar51 + 0x7ad64)" (* "*") (cast_expression "(int *)(pcVar51 + 0x7ad64)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(pcVar51 + 0x7ad64)" (( "(") (binary_expression "pcVar51 + 0x7ad64" (identifier "pcVar51") (+ "+") (number_literal "0x7ad64")) () ")")))) (+ "+") (binary_expression "(int)puVar9 * 4" (cast_expression "(int)puVar9" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar9")) (* "*") (number_literal "4"))) () ")"))))) (* "*") (pointer_expression "*(int *)((uVar18 - 2) * 4 + *(int *)(pcVar51 + 0x7a8c8) + 0x35b4)" (* "*") (cast_expression "(int *)((uVar18 - 2) * 4 + *(int *)(pcVar51 + 0x7a8c8) + 0x35b4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((uVar18 - 2) * 4 + *(int *)(pcVar51 + 0x7a8c8) + 0x35b4)" (( "(") (binary_expression "(uVar18 - 2) * 4 + *(int *)(pcVar51 + 0x7a8c8) + 0x35b4" (binary_expression "(uVar18 - 2) * 4 + *(int *)(pcVar51 + 0x7a8c8)" (binary_expression "(uVar18 - 2) * 4" (parenthesized_expression "(uVar18 - 2)" (( "(") (binary_expression "uVar18 - 2" (identifier "uVar18") (- "-") (number_literal "2")) () ")")) (* "*") (number_literal "4")) (+ "+") (pointer_expression "*(int *)(pcVar51 + 0x7a8c8)" (* "*") (cast_expression "(int *)(pcVar51 + 0x7a8c8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(pcVar51 + 0x7a8c8)" (( "(") (binary_expression "pcVar51 + 0x7a8c8" (identifier "pcVar51") (+ "+") (number_literal "0x7a8c8")) () ")"))))) (+ "+") (number_literal "0x35b4")) () ")"))))) (<< "<<") (parenthesized_expression "(((uint)*(byte *)((int)puVar36 + -1) - (int)(uint)bVar2) - (int)puVar31 & 0x1f)" (( "(") (binary_expression "((uint)*(byte *)((int)puVar36 + -1) - (int)(uint)bVar2) - (int)puVar31 & 0x1f" (binary_expression "((uint)*(byte *)((int)puVar36 + -1) - (int)(uint)bVar2) - (int)puVar31" (parenthesized_expression "((uint)*(byte *)((int)puVar36 + -1) - (int)(uint)bVar2)" (( "(") (binary_expression "(uint)*(byte *)((int)puVar36 + -1) - (int)(uint)bVar2" (binary_expression "(uint)*(byte *)((int)puVar36 + -1)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (cast_expression "(byte *)((int)puVar36 + -1)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar36 + -1)" (( "(") (binary_expression "(int)puVar36 + -1" (cast_expression "(int)puVar36" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar36")) (+ "+") (number_literal "-1")) () ")")))) (- "-") (cast_expression "(int)(uint)bVar2" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (cast_expression "(uint)bVar2" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar2")))) () ")")) (- "-") (cast_expression "(int)puVar31" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar31"))) (& "&") (number_literal "0x1f")) () ")")))) (; ";")) (expression_statement "puVar16[1] = 1;" (assignment_expression "puVar16[1] = 1" (subscript_expression "puVar16[1]" (identifier "puVar16") ([ "[") (number_literal "1") (] "]")) (= "=") (number_literal "1")) (; ";")) (expression_statement "puVar22 = (uint *)(uint)bVar2;" (assignment_expression "puVar22 = (uint *)(uint)bVar2" (identifier "puVar22") (= "=") (cast_expression "(uint *)(uint)bVar2" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (cast_expression "(uint)bVar2" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar2")))) (; ";")) (expression_statement "puVar49 = puVar46 + -0x90;" (assignment_expression "puVar49 = puVar46 + -0x90" (identifier "puVar49") (= "=") (binary_expression "puVar46 + -0x90" (identifier "puVar46") (+ "+") (number_literal "-0x90"))) (; ";")) (} "}")) (else_clause "else if (puVar30 < &DAT_00000011) {\n          FUN_000216e8();\n          pcVar44 = *(code **)(puVar47 + -0xf0);\n          puVar49 = puVar46 + -0x90;\n        }\n        else if (puVar30 < &DAT_00000021) {\n          uVar18 = (uint)puVar30 >> 1;\n          uVar37 = (int)puVar9 - uVar18;\n          FUN_000216e8();\n          iVar6 = *(int *)(puVar47 + -0xf0);\n          uVar7 = (int)puVar30 - uVar18;\n          if (uVar37 < 0x23) {\n            puVar50 = (undefined1 *)puVar16[1];\n            if ((int)puVar50 < (int)*puVar16) {\n              puVar8 = (uint *)puVar16[2];\n            }\n            else {\n              puVar8 = (uint *)(**(code **)(iVar6 + -0x7a80))(puVar16,puVar50 + 1);\n              iVar6 = *(int *)(puVar47 + -0xf0);\n            }\n            iVar29 = *(int *)(iVar6 + -0x7e20);\n            iVar24 = *(int *)(iVar6 + -0x7fd4) + 0x35b4;\n            uVar37 = (**(code **)(iVar6 + -0x7f9c))\n                               (puVar8,puVar8,puVar50,\n                                *(int *)((((int)puVar9 - (int)puVar30) - 2U) * 4 + iVar24) *\n                                *(int *)(*(int *)(iVar6 + -0x7b38) + uVar37 * 4) *\n                                *(int *)((uVar7 - 2) * 4 + iVar24) <<\n                                (((uint)*(byte *)(iVar29 + (uVar37 >> 1) + -1) -\n                                 (uint)*(byte *)(iVar29 + (uVar7 >> 1) + -1)) -\n                                 (uint)*(byte *)(iVar29 + ((uint)((int)puVar9 - (int)puVar30) >> 1)\n                                                + -1) & 0x1f));\n            iVar6 = *(int *)(puVar47 + -0xf0);\n            puVar30 = (uint *)(puVar50 + (uVar37 != 0));\n            puVar8[(int)puVar50] = uVar37;\n          }\n          else {\n            *(undefined4 *)(puVar47 + -0xe4) = 0x15;\n            *(undefined1 **)(puVar47 + -0xdc) = puVar47 + -0xd8;\n            FUN_000216e8(puVar47 + -0xe4,uVar37,uVar7);\n            (**(code **)(*(int *)(puVar47 + -0xf0) + -0x7ba8))(puVar16,puVar16,puVar47 + -0xe4);\n            iVar6 = *(int *)(puVar47 + -0xf0);\n            puVar8 = (uint *)puVar16[2];\n            puVar30 = (uint *)puVar16[1];\n          }\n          pcVar51 = *(code **)(iVar6 + -0x7bb4);\n          puVar38 = (uint *)((uint)*(byte *)((uVar7 - 8) + *(int *)(iVar6 + -0x7fd4) + 0x3550) -\n                            (uint)(uVar18 != uVar7));\n          *(undefined4 *)(puVar47 + -0xf8) =\n               *(undefined4 *)((uVar7 - 8) * 4 + *(int *)(iVar6 + -0x7fd4) + 0x355c);\n          *(uint **)(puVar47 + -0xf4) = puVar38;\n          puVar31 = puVar8;\n          puVar20 = puVar8;\n          puVar22 = puVar30;\n          (*pcVar51)();\n          pcVar44 = *(code **)(puVar47 + -0xf0);\n          if (puVar8[(int)((int)puVar30 + -1)] == 0) {\n            puVar9 = puVar8 + (int)puVar30;\n            do {\n              puVar1 = puVar9 + -2;\n              puVar30 = (uint *)((int)puVar30 + -1);\n              puVar9 = puVar9 + -1;\n            } while (*puVar1 == 0);\n          }\n          puVar16[1] = (uint)puVar30;\n          puVar49 = puVar50;\n        }\n        else if ((puVar30 < (uint *)0x3e8) || (puVar30 <= (uint *)((uint)puVar9 >> 4))) {\n          FUN_0002209c();\n          pcVar44 = *(code **)(puVar47 + -0xf0);\n          puVar49 = puVar46 + -0x90;\n        }\n        else {\n          FUN_000219dc();\n          pcVar44 = *(code **)(puVar47 + -0xf0);\n          puVar49 = puVar46 + -0x90;\n        }" (else "else") (if_statement "if (puVar30 < &DAT_00000011) {\n          FUN_000216e8();\n          pcVar44 = *(code **)(puVar47 + -0xf0);\n          puVar49 = puVar46 + -0x90;\n        }\n        else if (puVar30 < &DAT_00000021) {\n          uVar18 = (uint)puVar30 >> 1;\n          uVar37 = (int)puVar9 - uVar18;\n          FUN_000216e8();\n          iVar6 = *(int *)(puVar47 + -0xf0);\n          uVar7 = (int)puVar30 - uVar18;\n          if (uVar37 < 0x23) {\n            puVar50 = (undefined1 *)puVar16[1];\n            if ((int)puVar50 < (int)*puVar16) {\n              puVar8 = (uint *)puVar16[2];\n            }\n            else {\n              puVar8 = (uint *)(**(code **)(iVar6 + -0x7a80))(puVar16,puVar50 + 1);\n              iVar6 = *(int *)(puVar47 + -0xf0);\n            }\n            iVar29 = *(int *)(iVar6 + -0x7e20);\n            iVar24 = *(int *)(iVar6 + -0x7fd4) + 0x35b4;\n            uVar37 = (**(code **)(iVar6 + -0x7f9c))\n                               (puVar8,puVar8,puVar50,\n                                *(int *)((((int)puVar9 - (int)puVar30) - 2U) * 4 + iVar24) *\n                                *(int *)(*(int *)(iVar6 + -0x7b38) + uVar37 * 4) *\n                                *(int *)((uVar7 - 2) * 4 + iVar24) <<\n                                (((uint)*(byte *)(iVar29 + (uVar37 >> 1) + -1) -\n                                 (uint)*(byte *)(iVar29 + (uVar7 >> 1) + -1)) -\n                                 (uint)*(byte *)(iVar29 + ((uint)((int)puVar9 - (int)puVar30) >> 1)\n                                                + -1) & 0x1f));\n            iVar6 = *(int *)(puVar47 + -0xf0);\n            puVar30 = (uint *)(puVar50 + (uVar37 != 0));\n            puVar8[(int)puVar50] = uVar37;\n          }\n          else {\n            *(undefined4 *)(puVar47 + -0xe4) = 0x15;\n            *(undefined1 **)(puVar47 + -0xdc) = puVar47 + -0xd8;\n            FUN_000216e8(puVar47 + -0xe4,uVar37,uVar7);\n            (**(code **)(*(int *)(puVar47 + -0xf0) + -0x7ba8))(puVar16,puVar16,puVar47 + -0xe4);\n            iVar6 = *(int *)(puVar47 + -0xf0);\n            puVar8 = (uint *)puVar16[2];\n            puVar30 = (uint *)puVar16[1];\n          }\n          pcVar51 = *(code **)(iVar6 + -0x7bb4);\n          puVar38 = (uint *)((uint)*(byte *)((uVar7 - 8) + *(int *)(iVar6 + -0x7fd4) + 0x3550) -\n                            (uint)(uVar18 != uVar7));\n          *(undefined4 *)(puVar47 + -0xf8) =\n               *(undefined4 *)((uVar7 - 8) * 4 + *(int *)(iVar6 + -0x7fd4) + 0x355c);\n          *(uint **)(puVar47 + -0xf4) = puVar38;\n          puVar31 = puVar8;\n          puVar20 = puVar8;\n          puVar22 = puVar30;\n          (*pcVar51)();\n          pcVar44 = *(code **)(puVar47 + -0xf0);\n          if (puVar8[(int)((int)puVar30 + -1)] == 0) {\n            puVar9 = puVar8 + (int)puVar30;\n            do {\n              puVar1 = puVar9 + -2;\n              puVar30 = (uint *)((int)puVar30 + -1);\n              puVar9 = puVar9 + -1;\n            } while (*puVar1 == 0);\n          }\n          puVar16[1] = (uint)puVar30;\n          puVar49 = puVar50;\n        }\n        else if ((puVar30 < (uint *)0x3e8) || (puVar30 <= (uint *)((uint)puVar9 >> 4))) {\n          FUN_0002209c();\n          pcVar44 = *(code **)(puVar47 + -0xf0);\n          puVar49 = puVar46 + -0x90;\n        }\n        else {\n          FUN_000219dc();\n          pcVar44 = *(code **)(puVar47 + -0xf0);\n          puVar49 = puVar46 + -0x90;\n        }" (if "if") (parenthesized_expression "(puVar30 < &DAT_00000011)" (( "(") (binary_expression "puVar30 < &DAT_00000011" (identifier "puVar30") (< "<") (pointer_expression "&DAT_00000011" (& "&") (identifier "DAT_00000011"))) () ")")) (compound_statement "{\n          FUN_000216e8();\n          pcVar44 = *(code **)(puVar47 + -0xf0);\n          puVar49 = puVar46 + -0x90;\n        }" ({ "{") (expression_statement "FUN_000216e8();" (call_expression "FUN_000216e8()" (identifier "FUN_000216e8") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "pcVar44 = *(code **)(puVar47 + -0xf0);" (assignment_expression "pcVar44 = *(code **)(puVar47 + -0xf0)" (identifier "pcVar44") (= "=") (pointer_expression "*(code **)(puVar47 + -0xf0)" (* "*") (cast_expression "(code **)(puVar47 + -0xf0)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar47 + -0xf0)" (( "(") (binary_expression "puVar47 + -0xf0" (identifier "puVar47") (+ "+") (number_literal "-0xf0")) () ")"))))) (; ";")) (expression_statement "puVar49 = puVar46 + -0x90;" (assignment_expression "puVar49 = puVar46 + -0x90" (identifier "puVar49") (= "=") (binary_expression "puVar46 + -0x90" (identifier "puVar46") (+ "+") (number_literal "-0x90"))) (; ";")) (} "}")) (else_clause "else if (puVar30 < &DAT_00000021) {\n          uVar18 = (uint)puVar30 >> 1;\n          uVar37 = (int)puVar9 - uVar18;\n          FUN_000216e8();\n          iVar6 = *(int *)(puVar47 + -0xf0);\n          uVar7 = (int)puVar30 - uVar18;\n          if (uVar37 < 0x23) {\n            puVar50 = (undefined1 *)puVar16[1];\n            if ((int)puVar50 < (int)*puVar16) {\n              puVar8 = (uint *)puVar16[2];\n            }\n            else {\n              puVar8 = (uint *)(**(code **)(iVar6 + -0x7a80))(puVar16,puVar50 + 1);\n              iVar6 = *(int *)(puVar47 + -0xf0);\n            }\n            iVar29 = *(int *)(iVar6 + -0x7e20);\n            iVar24 = *(int *)(iVar6 + -0x7fd4) + 0x35b4;\n            uVar37 = (**(code **)(iVar6 + -0x7f9c))\n                               (puVar8,puVar8,puVar50,\n                                *(int *)((((int)puVar9 - (int)puVar30) - 2U) * 4 + iVar24) *\n                                *(int *)(*(int *)(iVar6 + -0x7b38) + uVar37 * 4) *\n                                *(int *)((uVar7 - 2) * 4 + iVar24) <<\n                                (((uint)*(byte *)(iVar29 + (uVar37 >> 1) + -1) -\n                                 (uint)*(byte *)(iVar29 + (uVar7 >> 1) + -1)) -\n                                 (uint)*(byte *)(iVar29 + ((uint)((int)puVar9 - (int)puVar30) >> 1)\n                                                + -1) & 0x1f));\n            iVar6 = *(int *)(puVar47 + -0xf0);\n            puVar30 = (uint *)(puVar50 + (uVar37 != 0));\n            puVar8[(int)puVar50] = uVar37;\n          }\n          else {\n            *(undefined4 *)(puVar47 + -0xe4) = 0x15;\n            *(undefined1 **)(puVar47 + -0xdc) = puVar47 + -0xd8;\n            FUN_000216e8(puVar47 + -0xe4,uVar37,uVar7);\n            (**(code **)(*(int *)(puVar47 + -0xf0) + -0x7ba8))(puVar16,puVar16,puVar47 + -0xe4);\n            iVar6 = *(int *)(puVar47 + -0xf0);\n            puVar8 = (uint *)puVar16[2];\n            puVar30 = (uint *)puVar16[1];\n          }\n          pcVar51 = *(code **)(iVar6 + -0x7bb4);\n          puVar38 = (uint *)((uint)*(byte *)((uVar7 - 8) + *(int *)(iVar6 + -0x7fd4) + 0x3550) -\n                            (uint)(uVar18 != uVar7));\n          *(undefined4 *)(puVar47 + -0xf8) =\n               *(undefined4 *)((uVar7 - 8) * 4 + *(int *)(iVar6 + -0x7fd4) + 0x355c);\n          *(uint **)(puVar47 + -0xf4) = puVar38;\n          puVar31 = puVar8;\n          puVar20 = puVar8;\n          puVar22 = puVar30;\n          (*pcVar51)();\n          pcVar44 = *(code **)(puVar47 + -0xf0);\n          if (puVar8[(int)((int)puVar30 + -1)] == 0) {\n            puVar9 = puVar8 + (int)puVar30;\n            do {\n              puVar1 = puVar9 + -2;\n              puVar30 = (uint *)((int)puVar30 + -1);\n              puVar9 = puVar9 + -1;\n            } while (*puVar1 == 0);\n          }\n          puVar16[1] = (uint)puVar30;\n          puVar49 = puVar50;\n        }\n        else if ((puVar30 < (uint *)0x3e8) || (puVar30 <= (uint *)((uint)puVar9 >> 4))) {\n          FUN_0002209c();\n          pcVar44 = *(code **)(puVar47 + -0xf0);\n          puVar49 = puVar46 + -0x90;\n        }\n        else {\n          FUN_000219dc();\n          pcVar44 = *(code **)(puVar47 + -0xf0);\n          puVar49 = puVar46 + -0x90;\n        }" (else "else") (if_statement "if (puVar30 < &DAT_00000021) {\n          uVar18 = (uint)puVar30 >> 1;\n          uVar37 = (int)puVar9 - uVar18;\n          FUN_000216e8();\n          iVar6 = *(int *)(puVar47 + -0xf0);\n          uVar7 = (int)puVar30 - uVar18;\n          if (uVar37 < 0x23) {\n            puVar50 = (undefined1 *)puVar16[1];\n            if ((int)puVar50 < (int)*puVar16) {\n              puVar8 = (uint *)puVar16[2];\n            }\n            else {\n              puVar8 = (uint *)(**(code **)(iVar6 + -0x7a80))(puVar16,puVar50 + 1);\n              iVar6 = *(int *)(puVar47 + -0xf0);\n            }\n            iVar29 = *(int *)(iVar6 + -0x7e20);\n            iVar24 = *(int *)(iVar6 + -0x7fd4) + 0x35b4;\n            uVar37 = (**(code **)(iVar6 + -0x7f9c))\n                               (puVar8,puVar8,puVar50,\n                                *(int *)((((int)puVar9 - (int)puVar30) - 2U) * 4 + iVar24) *\n                                *(int *)(*(int *)(iVar6 + -0x7b38) + uVar37 * 4) *\n                                *(int *)((uVar7 - 2) * 4 + iVar24) <<\n                                (((uint)*(byte *)(iVar29 + (uVar37 >> 1) + -1) -\n                                 (uint)*(byte *)(iVar29 + (uVar7 >> 1) + -1)) -\n                                 (uint)*(byte *)(iVar29 + ((uint)((int)puVar9 - (int)puVar30) >> 1)\n                                                + -1) & 0x1f));\n            iVar6 = *(int *)(puVar47 + -0xf0);\n            puVar30 = (uint *)(puVar50 + (uVar37 != 0));\n            puVar8[(int)puVar50] = uVar37;\n          }\n          else {\n            *(undefined4 *)(puVar47 + -0xe4) = 0x15;\n            *(undefined1 **)(puVar47 + -0xdc) = puVar47 + -0xd8;\n            FUN_000216e8(puVar47 + -0xe4,uVar37,uVar7);\n            (**(code **)(*(int *)(puVar47 + -0xf0) + -0x7ba8))(puVar16,puVar16,puVar47 + -0xe4);\n            iVar6 = *(int *)(puVar47 + -0xf0);\n            puVar8 = (uint *)puVar16[2];\n            puVar30 = (uint *)puVar16[1];\n          }\n          pcVar51 = *(code **)(iVar6 + -0x7bb4);\n          puVar38 = (uint *)((uint)*(byte *)((uVar7 - 8) + *(int *)(iVar6 + -0x7fd4) + 0x3550) -\n                            (uint)(uVar18 != uVar7));\n          *(undefined4 *)(puVar47 + -0xf8) =\n               *(undefined4 *)((uVar7 - 8) * 4 + *(int *)(iVar6 + -0x7fd4) + 0x355c);\n          *(uint **)(puVar47 + -0xf4) = puVar38;\n          puVar31 = puVar8;\n          puVar20 = puVar8;\n          puVar22 = puVar30;\n          (*pcVar51)();\n          pcVar44 = *(code **)(puVar47 + -0xf0);\n          if (puVar8[(int)((int)puVar30 + -1)] == 0) {\n            puVar9 = puVar8 + (int)puVar30;\n            do {\n              puVar1 = puVar9 + -2;\n              puVar30 = (uint *)((int)puVar30 + -1);\n              puVar9 = puVar9 + -1;\n            } while (*puVar1 == 0);\n          }\n          puVar16[1] = (uint)puVar30;\n          puVar49 = puVar50;\n        }\n        else if ((puVar30 < (uint *)0x3e8) || (puVar30 <= (uint *)((uint)puVar9 >> 4))) {\n          FUN_0002209c();\n          pcVar44 = *(code **)(puVar47 + -0xf0);\n          puVar49 = puVar46 + -0x90;\n        }\n        else {\n          FUN_000219dc();\n          pcVar44 = *(code **)(puVar47 + -0xf0);\n          puVar49 = puVar46 + -0x90;\n        }" (if "if") (parenthesized_expression "(puVar30 < &DAT_00000021)" (( "(") (binary_expression "puVar30 < &DAT_00000021" (identifier "puVar30") (< "<") (pointer_expression "&DAT_00000021" (& "&") (identifier "DAT_00000021"))) () ")")) (compound_statement "{\n          uVar18 = (uint)puVar30 >> 1;\n          uVar37 = (int)puVar9 - uVar18;\n          FUN_000216e8();\n          iVar6 = *(int *)(puVar47 + -0xf0);\n          uVar7 = (int)puVar30 - uVar18;\n          if (uVar37 < 0x23) {\n            puVar50 = (undefined1 *)puVar16[1];\n            if ((int)puVar50 < (int)*puVar16) {\n              puVar8 = (uint *)puVar16[2];\n            }\n            else {\n              puVar8 = (uint *)(**(code **)(iVar6 + -0x7a80))(puVar16,puVar50 + 1);\n              iVar6 = *(int *)(puVar47 + -0xf0);\n            }\n            iVar29 = *(int *)(iVar6 + -0x7e20);\n            iVar24 = *(int *)(iVar6 + -0x7fd4) + 0x35b4;\n            uVar37 = (**(code **)(iVar6 + -0x7f9c))\n                               (puVar8,puVar8,puVar50,\n                                *(int *)((((int)puVar9 - (int)puVar30) - 2U) * 4 + iVar24) *\n                                *(int *)(*(int *)(iVar6 + -0x7b38) + uVar37 * 4) *\n                                *(int *)((uVar7 - 2) * 4 + iVar24) <<\n                                (((uint)*(byte *)(iVar29 + (uVar37 >> 1) + -1) -\n                                 (uint)*(byte *)(iVar29 + (uVar7 >> 1) + -1)) -\n                                 (uint)*(byte *)(iVar29 + ((uint)((int)puVar9 - (int)puVar30) >> 1)\n                                                + -1) & 0x1f));\n            iVar6 = *(int *)(puVar47 + -0xf0);\n            puVar30 = (uint *)(puVar50 + (uVar37 != 0));\n            puVar8[(int)puVar50] = uVar37;\n          }\n          else {\n            *(undefined4 *)(puVar47 + -0xe4) = 0x15;\n            *(undefined1 **)(puVar47 + -0xdc) = puVar47 + -0xd8;\n            FUN_000216e8(puVar47 + -0xe4,uVar37,uVar7);\n            (**(code **)(*(int *)(puVar47 + -0xf0) + -0x7ba8))(puVar16,puVar16,puVar47 + -0xe4);\n            iVar6 = *(int *)(puVar47 + -0xf0);\n            puVar8 = (uint *)puVar16[2];\n            puVar30 = (uint *)puVar16[1];\n          }\n          pcVar51 = *(code **)(iVar6 + -0x7bb4);\n          puVar38 = (uint *)((uint)*(byte *)((uVar7 - 8) + *(int *)(iVar6 + -0x7fd4) + 0x3550) -\n                            (uint)(uVar18 != uVar7));\n          *(undefined4 *)(puVar47 + -0xf8) =\n               *(undefined4 *)((uVar7 - 8) * 4 + *(int *)(iVar6 + -0x7fd4) + 0x355c);\n          *(uint **)(puVar47 + -0xf4) = puVar38;\n          puVar31 = puVar8;\n          puVar20 = puVar8;\n          puVar22 = puVar30;\n          (*pcVar51)();\n          pcVar44 = *(code **)(puVar47 + -0xf0);\n          if (puVar8[(int)((int)puVar30 + -1)] == 0) {\n            puVar9 = puVar8 + (int)puVar30;\n            do {\n              puVar1 = puVar9 + -2;\n              puVar30 = (uint *)((int)puVar30 + -1);\n              puVar9 = puVar9 + -1;\n            } while (*puVar1 == 0);\n          }\n          puVar16[1] = (uint)puVar30;\n          puVar49 = puVar50;\n        }" ({ "{") (expression_statement "uVar18 = (uint)puVar30 >> 1;" (assignment_expression "uVar18 = (uint)puVar30 >> 1" (identifier "uVar18") (= "=") (binary_expression "(uint)puVar30 >> 1" (cast_expression "(uint)puVar30" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "puVar30")) (>> ">>") (number_literal "1"))) (; ";")) (expression_statement "uVar37 = (int)puVar9 - uVar18;" (assignment_expression "uVar37 = (int)puVar9 - uVar18" (identifier "uVar37") (= "=") (binary_expression "(int)puVar9 - uVar18" (cast_expression "(int)puVar9" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar9")) (- "-") (identifier "uVar18"))) (; ";")) (expression_statement "FUN_000216e8();" (call_expression "FUN_000216e8()" (identifier "FUN_000216e8") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "iVar6 = *(int *)(puVar47 + -0xf0);" (assignment_expression "iVar6 = *(int *)(puVar47 + -0xf0)" (identifier "iVar6") (= "=") (pointer_expression "*(int *)(puVar47 + -0xf0)" (* "*") (cast_expression "(int *)(puVar47 + -0xf0)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar47 + -0xf0)" (( "(") (binary_expression "puVar47 + -0xf0" (identifier "puVar47") (+ "+") (number_literal "-0xf0")) () ")"))))) (; ";")) (expression_statement "uVar7 = (int)puVar30 - uVar18;" (assignment_expression "uVar7 = (int)puVar30 - uVar18" (identifier "uVar7") (= "=") (binary_expression "(int)puVar30 - uVar18" (cast_expression "(int)puVar30" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar30")) (- "-") (identifier "uVar18"))) (; ";")) (if_statement "if (uVar37 < 0x23) {\n            puVar50 = (undefined1 *)puVar16[1];\n            if ((int)puVar50 < (int)*puVar16) {\n              puVar8 = (uint *)puVar16[2];\n            }\n            else {\n              puVar8 = (uint *)(**(code **)(iVar6 + -0x7a80))(puVar16,puVar50 + 1);\n              iVar6 = *(int *)(puVar47 + -0xf0);\n            }\n            iVar29 = *(int *)(iVar6 + -0x7e20);\n            iVar24 = *(int *)(iVar6 + -0x7fd4) + 0x35b4;\n            uVar37 = (**(code **)(iVar6 + -0x7f9c))\n                               (puVar8,puVar8,puVar50,\n                                *(int *)((((int)puVar9 - (int)puVar30) - 2U) * 4 + iVar24) *\n                                *(int *)(*(int *)(iVar6 + -0x7b38) + uVar37 * 4) *\n                                *(int *)((uVar7 - 2) * 4 + iVar24) <<\n                                (((uint)*(byte *)(iVar29 + (uVar37 >> 1) + -1) -\n                                 (uint)*(byte *)(iVar29 + (uVar7 >> 1) + -1)) -\n                                 (uint)*(byte *)(iVar29 + ((uint)((int)puVar9 - (int)puVar30) >> 1)\n                                                + -1) & 0x1f));\n            iVar6 = *(int *)(puVar47 + -0xf0);\n            puVar30 = (uint *)(puVar50 + (uVar37 != 0));\n            puVar8[(int)puVar50] = uVar37;\n          }\n          else {\n            *(undefined4 *)(puVar47 + -0xe4) = 0x15;\n            *(undefined1 **)(puVar47 + -0xdc) = puVar47 + -0xd8;\n            FUN_000216e8(puVar47 + -0xe4,uVar37,uVar7);\n            (**(code **)(*(int *)(puVar47 + -0xf0) + -0x7ba8))(puVar16,puVar16,puVar47 + -0xe4);\n            iVar6 = *(int *)(puVar47 + -0xf0);\n            puVar8 = (uint *)puVar16[2];\n            puVar30 = (uint *)puVar16[1];\n          }" (if "if") (parenthesized_expression "(uVar37 < 0x23)" (( "(") (binary_expression "uVar37 < 0x23" (identifier "uVar37") (< "<") (number_literal "0x23")) () ")")) (compound_statement "{\n            puVar50 = (undefined1 *)puVar16[1];\n            if ((int)puVar50 < (int)*puVar16) {\n              puVar8 = (uint *)puVar16[2];\n            }\n            else {\n              puVar8 = (uint *)(**(code **)(iVar6 + -0x7a80))(puVar16,puVar50 + 1);\n              iVar6 = *(int *)(puVar47 + -0xf0);\n            }\n            iVar29 = *(int *)(iVar6 + -0x7e20);\n            iVar24 = *(int *)(iVar6 + -0x7fd4) + 0x35b4;\n            uVar37 = (**(code **)(iVar6 + -0x7f9c))\n                               (puVar8,puVar8,puVar50,\n                                *(int *)((((int)puVar9 - (int)puVar30) - 2U) * 4 + iVar24) *\n                                *(int *)(*(int *)(iVar6 + -0x7b38) + uVar37 * 4) *\n                                *(int *)((uVar7 - 2) * 4 + iVar24) <<\n                                (((uint)*(byte *)(iVar29 + (uVar37 >> 1) + -1) -\n                                 (uint)*(byte *)(iVar29 + (uVar7 >> 1) + -1)) -\n                                 (uint)*(byte *)(iVar29 + ((uint)((int)puVar9 - (int)puVar30) >> 1)\n                                                + -1) & 0x1f));\n            iVar6 = *(int *)(puVar47 + -0xf0);\n            puVar30 = (uint *)(puVar50 + (uVar37 != 0));\n            puVar8[(int)puVar50] = uVar37;\n          }" ({ "{") (expression_statement "puVar50 = (undefined1 *)puVar16[1];" (assignment_expression "puVar50 = (undefined1 *)puVar16[1]" (identifier "puVar50") (= "=") (cast_expression "(undefined1 *)puVar16[1]" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "puVar16[1]" (identifier "puVar16") ([ "[") (number_literal "1") (] "]")))) (; ";")) (if_statement "if ((int)puVar50 < (int)*puVar16) {\n              puVar8 = (uint *)puVar16[2];\n            }\n            else {\n              puVar8 = (uint *)(**(code **)(iVar6 + -0x7a80))(puVar16,puVar50 + 1);\n              iVar6 = *(int *)(puVar47 + -0xf0);\n            }" (if "if") (parenthesized_expression "((int)puVar50 < (int)*puVar16)" (( "(") (binary_expression "(int)puVar50 < (int)*puVar16" (cast_expression "(int)puVar50" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar50")) (< "<") (cast_expression "(int)*puVar16" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (pointer_expression "*puVar16" (* "*") (identifier "puVar16")))) () ")")) (compound_statement "{\n              puVar8 = (uint *)puVar16[2];\n            }" ({ "{") (expression_statement "puVar8 = (uint *)puVar16[2];" (assignment_expression "puVar8 = (uint *)puVar16[2]" (identifier "puVar8") (= "=") (cast_expression "(uint *)puVar16[2]" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "puVar16[2]" (identifier "puVar16") ([ "[") (number_literal "2") (] "]")))) (; ";")) (} "}")) (else_clause "else {\n              puVar8 = (uint *)(**(code **)(iVar6 + -0x7a80))(puVar16,puVar50 + 1);\n              iVar6 = *(int *)(puVar47 + -0xf0);\n            }" (else "else") (compound_statement "{\n              puVar8 = (uint *)(**(code **)(iVar6 + -0x7a80))(puVar16,puVar50 + 1);\n              iVar6 = *(int *)(puVar47 + -0xf0);\n            }" ({ "{") (expression_statement "puVar8 = (uint *)(**(code **)(iVar6 + -0x7a80))(puVar16,puVar50 + 1);" (assignment_expression "puVar8 = (uint *)(**(code **)(iVar6 + -0x7a80))(puVar16,puVar50 + 1)" (identifier "puVar8") (= "=") (cast_expression "(uint *)(**(code **)(iVar6 + -0x7a80))(puVar16,puVar50 + 1)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "(**(code **)(iVar6 + -0x7a80))(puVar16,puVar50 + 1)" (parenthesized_expression "(**(code **)(iVar6 + -0x7a80))" (( "(") (pointer_expression "**(code **)(iVar6 + -0x7a80)" (* "*") (pointer_expression "*(code **)(iVar6 + -0x7a80)" (* "*") (cast_expression "(code **)(iVar6 + -0x7a80)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar6 + -0x7a80)" (( "(") (binary_expression "iVar6 + -0x7a80" (identifier "iVar6") (+ "+") (number_literal "-0x7a80")) () ")"))))) () ")")) (argument_list "(puVar16,puVar50 + 1)" (( "(") (identifier "puVar16") (, ",") (binary_expression "puVar50 + 1" (identifier "puVar50") (+ "+") (number_literal "1")) () ")"))))) (; ";")) (expression_statement "iVar6 = *(int *)(puVar47 + -0xf0);" (assignment_expression "iVar6 = *(int *)(puVar47 + -0xf0)" (identifier "iVar6") (= "=") (pointer_expression "*(int *)(puVar47 + -0xf0)" (* "*") (cast_expression "(int *)(puVar47 + -0xf0)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar47 + -0xf0)" (( "(") (binary_expression "puVar47 + -0xf0" (identifier "puVar47") (+ "+") (number_literal "-0xf0")) () ")"))))) (; ";")) (} "}")))) (expression_statement "iVar29 = *(int *)(iVar6 + -0x7e20);" (assignment_expression "iVar29 = *(int *)(iVar6 + -0x7e20)" (identifier "iVar29") (= "=") (pointer_expression "*(int *)(iVar6 + -0x7e20)" (* "*") (cast_expression "(int *)(iVar6 + -0x7e20)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar6 + -0x7e20)" (( "(") (binary_expression "iVar6 + -0x7e20" (identifier "iVar6") (+ "+") (number_literal "-0x7e20")) () ")"))))) (; ";")) (expression_statement "iVar24 = *(int *)(iVar6 + -0x7fd4) + 0x35b4;" (assignment_expression "iVar24 = *(int *)(iVar6 + -0x7fd4) + 0x35b4" (identifier "iVar24") (= "=") (binary_expression "*(int *)(iVar6 + -0x7fd4) + 0x35b4" (pointer_expression "*(int *)(iVar6 + -0x7fd4)" (* "*") (cast_expression "(int *)(iVar6 + -0x7fd4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar6 + -0x7fd4)" (( "(") (binary_expression "iVar6 + -0x7fd4" (identifier "iVar6") (+ "+") (number_literal "-0x7fd4")) () ")")))) (+ "+") (number_literal "0x35b4"))) (; ";")) (expression_statement "uVar37 = (**(code **)(iVar6 + -0x7f9c))\n                               (puVar8,puVar8,puVar50,\n                                *(int *)((((int)puVar9 - (int)puVar30) - 2U) * 4 + iVar24) *\n                                *(int *)(*(int *)(iVar6 + -0x7b38) + uVar37 * 4) *\n                                *(int *)((uVar7 - 2) * 4 + iVar24) <<\n                                (((uint)*(byte *)(iVar29 + (uVar37 >> 1) + -1) -\n                                 (uint)*(byte *)(iVar29 + (uVar7 >> 1) + -1)) -\n                                 (uint)*(byte *)(iVar29 + ((uint)((int)puVar9 - (int)puVar30) >> 1)\n                                                + -1) & 0x1f));" (assignment_expression "uVar37 = (**(code **)(iVar6 + -0x7f9c))\n                               (puVar8,puVar8,puVar50,\n                                *(int *)((((int)puVar9 - (int)puVar30) - 2U) * 4 + iVar24) *\n                                *(int *)(*(int *)(iVar6 + -0x7b38) + uVar37 * 4) *\n                                *(int *)((uVar7 - 2) * 4 + iVar24) <<\n                                (((uint)*(byte *)(iVar29 + (uVar37 >> 1) + -1) -\n                                 (uint)*(byte *)(iVar29 + (uVar7 >> 1) + -1)) -\n                                 (uint)*(byte *)(iVar29 + ((uint)((int)puVar9 - (int)puVar30) >> 1)\n                                                + -1) & 0x1f))" (identifier "uVar37") (= "=") (call_expression "(**(code **)(iVar6 + -0x7f9c))\n                               (puVar8,puVar8,puVar50,\n                                *(int *)((((int)puVar9 - (int)puVar30) - 2U) * 4 + iVar24) *\n                                *(int *)(*(int *)(iVar6 + -0x7b38) + uVar37 * 4) *\n                                *(int *)((uVar7 - 2) * 4 + iVar24) <<\n                                (((uint)*(byte *)(iVar29 + (uVar37 >> 1) + -1) -\n                                 (uint)*(byte *)(iVar29 + (uVar7 >> 1) + -1)) -\n                                 (uint)*(byte *)(iVar29 + ((uint)((int)puVar9 - (int)puVar30) >> 1)\n                                                + -1) & 0x1f))" (parenthesized_expression "(**(code **)(iVar6 + -0x7f9c))" (( "(") (pointer_expression "**(code **)(iVar6 + -0x7f9c)" (* "*") (pointer_expression "*(code **)(iVar6 + -0x7f9c)" (* "*") (cast_expression "(code **)(iVar6 + -0x7f9c)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar6 + -0x7f9c)" (( "(") (binary_expression "iVar6 + -0x7f9c" (identifier "iVar6") (+ "+") (number_literal "-0x7f9c")) () ")"))))) () ")")) (argument_list "(puVar8,puVar8,puVar50,\n                                *(int *)((((int)puVar9 - (int)puVar30) - 2U) * 4 + iVar24) *\n                                *(int *)(*(int *)(iVar6 + -0x7b38) + uVar37 * 4) *\n                                *(int *)((uVar7 - 2) * 4 + iVar24) <<\n                                (((uint)*(byte *)(iVar29 + (uVar37 >> 1) + -1) -\n                                 (uint)*(byte *)(iVar29 + (uVar7 >> 1) + -1)) -\n                                 (uint)*(byte *)(iVar29 + ((uint)((int)puVar9 - (int)puVar30) >> 1)\n                                                + -1) & 0x1f))" (( "(") (identifier "puVar8") (, ",") (identifier "puVar8") (, ",") (identifier "puVar50") (, ",") (binary_expression "*(int *)((((int)puVar9 - (int)puVar30) - 2U) * 4 + iVar24) *\n                                *(int *)(*(int *)(iVar6 + -0x7b38) + uVar37 * 4) *\n                                *(int *)((uVar7 - 2) * 4 + iVar24) <<\n                                (((uint)*(byte *)(iVar29 + (uVar37 >> 1) + -1) -\n                                 (uint)*(byte *)(iVar29 + (uVar7 >> 1) + -1)) -\n                                 (uint)*(byte *)(iVar29 + ((uint)((int)puVar9 - (int)puVar30) >> 1)\n                                                + -1) & 0x1f)" (binary_expression "*(int *)((((int)puVar9 - (int)puVar30) - 2U) * 4 + iVar24) *\n                                *(int *)(*(int *)(iVar6 + -0x7b38) + uVar37 * 4) *\n                                *(int *)((uVar7 - 2) * 4 + iVar24)" (binary_expression "*(int *)((((int)puVar9 - (int)puVar30) - 2U) * 4 + iVar24) *\n                                *(int *)(*(int *)(iVar6 + -0x7b38) + uVar37 * 4)" (pointer_expression "*(int *)((((int)puVar9 - (int)puVar30) - 2U) * 4 + iVar24)" (* "*") (cast_expression "(int *)((((int)puVar9 - (int)puVar30) - 2U) * 4 + iVar24)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((((int)puVar9 - (int)puVar30) - 2U) * 4 + iVar24)" (( "(") (binary_expression "(((int)puVar9 - (int)puVar30) - 2U) * 4 + iVar24" (binary_expression "(((int)puVar9 - (int)puVar30) - 2U) * 4" (parenthesized_expression "(((int)puVar9 - (int)puVar30) - 2U)" (( "(") (binary_expression "((int)puVar9 - (int)puVar30) - 2U" (parenthesized_expression "((int)puVar9 - (int)puVar30)" (( "(") (binary_expression "(int)puVar9 - (int)puVar30" (cast_expression "(int)puVar9" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar9")) (- "-") (cast_expression "(int)puVar30" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar30"))) () ")")) (- "-") (number_literal "2U")) () ")")) (* "*") (number_literal "4")) (+ "+") (identifier "iVar24")) () ")")))) (* "*") (pointer_expression "*(int *)(*(int *)(iVar6 + -0x7b38) + uVar37 * 4)" (* "*") (cast_expression "(int *)(*(int *)(iVar6 + -0x7b38) + uVar37 * 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(iVar6 + -0x7b38) + uVar37 * 4)" (( "(") (binary_expression "*(int *)(iVar6 + -0x7b38) + uVar37 * 4" (pointer_expression "*(int *)(iVar6 + -0x7b38)" (* "*") (cast_expression "(int *)(iVar6 + -0x7b38)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar6 + -0x7b38)" (( "(") (binary_expression "iVar6 + -0x7b38" (identifier "iVar6") (+ "+") (number_literal "-0x7b38")) () ")")))) (+ "+") (binary_expression "uVar37 * 4" (identifier "uVar37") (* "*") (number_literal "4"))) () ")"))))) (* "*") (pointer_expression "*(int *)((uVar7 - 2) * 4 + iVar24)" (* "*") (cast_expression "(int *)((uVar7 - 2) * 4 + iVar24)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((uVar7 - 2) * 4 + iVar24)" (( "(") (binary_expression "(uVar7 - 2) * 4 + iVar24" (binary_expression "(uVar7 - 2) * 4" (parenthesized_expression "(uVar7 - 2)" (( "(") (binary_expression "uVar7 - 2" (identifier "uVar7") (- "-") (number_literal "2")) () ")")) (* "*") (number_literal "4")) (+ "+") (identifier "iVar24")) () ")"))))) (<< "<<") (parenthesized_expression "(((uint)*(byte *)(iVar29 + (uVar37 >> 1) + -1) -\n                                 (uint)*(byte *)(iVar29 + (uVar7 >> 1) + -1)) -\n                                 (uint)*(byte *)(iVar29 + ((uint)((int)puVar9 - (int)puVar30) >> 1)\n                                                + -1) & 0x1f)" (( "(") (binary_expression "((uint)*(byte *)(iVar29 + (uVar37 >> 1) + -1) -\n                                 (uint)*(byte *)(iVar29 + (uVar7 >> 1) + -1)) -\n                                 (uint)*(byte *)(iVar29 + ((uint)((int)puVar9 - (int)puVar30) >> 1)\n                                                + -1) & 0x1f" (binary_expression "((uint)*(byte *)(iVar29 + (uVar37 >> 1) + -1) -\n                                 (uint)*(byte *)(iVar29 + (uVar7 >> 1) + -1)) -\n                                 (uint)*(byte *)(iVar29 + ((uint)((int)puVar9 - (int)puVar30) >> 1)\n                                                + -1)" (parenthesized_expression "((uint)*(byte *)(iVar29 + (uVar37 >> 1) + -1) -\n                                 (uint)*(byte *)(iVar29 + (uVar7 >> 1) + -1))" (( "(") (binary_expression "(uint)*(byte *)(iVar29 + (uVar37 >> 1) + -1) -\n                                 (uint)*(byte *)(iVar29 + (uVar7 >> 1) + -1)" (binary_expression "(uint)*(byte *)(iVar29 + (uVar37 >> 1) + -1)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (cast_expression "(byte *)(iVar29 + (uVar37 >> 1) + -1)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar29 + (uVar37 >> 1) + -1)" (( "(") (binary_expression "iVar29 + (uVar37 >> 1) + -1" (binary_expression "iVar29 + (uVar37 >> 1)" (identifier "iVar29") (+ "+") (parenthesized_expression "(uVar37 >> 1)" (( "(") (binary_expression "uVar37 >> 1" (identifier "uVar37") (>> ">>") (number_literal "1")) () ")"))) (+ "+") (number_literal "-1")) () ")")))) (- "-") (binary_expression "(uint)*(byte *)(iVar29 + (uVar7 >> 1) + -1)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (cast_expression "(byte *)(iVar29 + (uVar7 >> 1) + -1)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar29 + (uVar7 >> 1) + -1)" (( "(") (binary_expression "iVar29 + (uVar7 >> 1) + -1" (binary_expression "iVar29 + (uVar7 >> 1)" (identifier "iVar29") (+ "+") (parenthesized_expression "(uVar7 >> 1)" (( "(") (binary_expression "uVar7 >> 1" (identifier "uVar7") (>> ">>") (number_literal "1")) () ")"))) (+ "+") (number_literal "-1")) () ")"))))) () ")")) (- "-") (binary_expression "(uint)*(byte *)(iVar29 + ((uint)((int)puVar9 - (int)puVar30) >> 1)\n                                                + -1)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (cast_expression "(byte *)(iVar29 + ((uint)((int)puVar9 - (int)puVar30) >> 1)\n                                                + -1)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar29 + ((uint)((int)puVar9 - (int)puVar30) >> 1)\n                                                + -1)" (( "(") (binary_expression "iVar29 + ((uint)((int)puVar9 - (int)puVar30) >> 1)\n                                                + -1" (binary_expression "iVar29 + ((uint)((int)puVar9 - (int)puVar30) >> 1)" (identifier "iVar29") (+ "+") (parenthesized_expression "((uint)((int)puVar9 - (int)puVar30) >> 1)" (( "(") (binary_expression "(uint)((int)puVar9 - (int)puVar30) >> 1" (call_expression "(uint)((int)puVar9 - (int)puVar30)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "((int)puVar9 - (int)puVar30)" (( "(") (binary_expression "(int)puVar9 - (int)puVar30" (cast_expression "(int)puVar9" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar9")) (- "-") (cast_expression "(int)puVar30" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar30"))) () ")"))) (>> ">>") (number_literal "1")) () ")"))) (+ "+") (number_literal "-1")) () ")"))))) (& "&") (number_literal "0x1f")) () ")"))) () ")")))) (; ";")) (expression_statement "iVar6 = *(int *)(puVar47 + -0xf0);" (assignment_expression "iVar6 = *(int *)(puVar47 + -0xf0)" (identifier "iVar6") (= "=") (pointer_expression "*(int *)(puVar47 + -0xf0)" (* "*") (cast_expression "(int *)(puVar47 + -0xf0)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar47 + -0xf0)" (( "(") (binary_expression "puVar47 + -0xf0" (identifier "puVar47") (+ "+") (number_literal "-0xf0")) () ")"))))) (; ";")) (expression_statement "puVar30 = (uint *)(puVar50 + (uVar37 != 0));" (assignment_expression "puVar30 = (uint *)(puVar50 + (uVar37 != 0))" (identifier "puVar30") (= "=") (cast_expression "(uint *)(puVar50 + (uVar37 != 0))" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar50 + (uVar37 != 0))" (( "(") (binary_expression "puVar50 + (uVar37 != 0)" (identifier "puVar50") (+ "+") (parenthesized_expression "(uVar37 != 0)" (( "(") (binary_expression "uVar37 != 0" (identifier "uVar37") (!= "!=") (number_literal "0")) () ")"))) () ")")))) (; ";")) (expression_statement "puVar8[(int)puVar50] = uVar37;" (assignment_expression "puVar8[(int)puVar50] = uVar37" (subscript_expression "puVar8[(int)puVar50]" (identifier "puVar8") ([ "[") (cast_expression "(int)puVar50" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar50")) (] "]")) (= "=") (identifier "uVar37")) (; ";")) (} "}")) (else_clause "else {\n            *(undefined4 *)(puVar47 + -0xe4) = 0x15;\n            *(undefined1 **)(puVar47 + -0xdc) = puVar47 + -0xd8;\n            FUN_000216e8(puVar47 + -0xe4,uVar37,uVar7);\n            (**(code **)(*(int *)(puVar47 + -0xf0) + -0x7ba8))(puVar16,puVar16,puVar47 + -0xe4);\n            iVar6 = *(int *)(puVar47 + -0xf0);\n            puVar8 = (uint *)puVar16[2];\n            puVar30 = (uint *)puVar16[1];\n          }" (else "else") (compound_statement "{\n            *(undefined4 *)(puVar47 + -0xe4) = 0x15;\n            *(undefined1 **)(puVar47 + -0xdc) = puVar47 + -0xd8;\n            FUN_000216e8(puVar47 + -0xe4,uVar37,uVar7);\n            (**(code **)(*(int *)(puVar47 + -0xf0) + -0x7ba8))(puVar16,puVar16,puVar47 + -0xe4);\n            iVar6 = *(int *)(puVar47 + -0xf0);\n            puVar8 = (uint *)puVar16[2];\n            puVar30 = (uint *)puVar16[1];\n          }" ({ "{") (expression_statement "*(undefined4 *)(puVar47 + -0xe4) = 0x15;" (assignment_expression "*(undefined4 *)(puVar47 + -0xe4) = 0x15" (pointer_expression "*(undefined4 *)(puVar47 + -0xe4)" (* "*") (cast_expression "(undefined4 *)(puVar47 + -0xe4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar47 + -0xe4)" (( "(") (binary_expression "puVar47 + -0xe4" (identifier "puVar47") (+ "+") (number_literal "-0xe4")) () ")")))) (= "=") (number_literal "0x15")) (; ";")) (expression_statement "*(undefined1 **)(puVar47 + -0xdc) = puVar47 + -0xd8;" (assignment_expression "*(undefined1 **)(puVar47 + -0xdc) = puVar47 + -0xd8" (pointer_expression "*(undefined1 **)(puVar47 + -0xdc)" (* "*") (cast_expression "(undefined1 **)(puVar47 + -0xdc)" (( "(") (type_descriptor "undefined1 **" (type_identifier "undefined1") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar47 + -0xdc)" (( "(") (binary_expression "puVar47 + -0xdc" (identifier "puVar47") (+ "+") (number_literal "-0xdc")) () ")")))) (= "=") (binary_expression "puVar47 + -0xd8" (identifier "puVar47") (+ "+") (number_literal "-0xd8"))) (; ";")) (expression_statement "FUN_000216e8(puVar47 + -0xe4,uVar37,uVar7);" (call_expression "FUN_000216e8(puVar47 + -0xe4,uVar37,uVar7)" (identifier "FUN_000216e8") (argument_list "(puVar47 + -0xe4,uVar37,uVar7)" (( "(") (binary_expression "puVar47 + -0xe4" (identifier "puVar47") (+ "+") (number_literal "-0xe4")) (, ",") (identifier "uVar37") (, ",") (identifier "uVar7") () ")"))) (; ";")) (expression_statement "(**(code **)(*(int *)(puVar47 + -0xf0) + -0x7ba8))(puVar16,puVar16,puVar47 + -0xe4);" (call_expression "(**(code **)(*(int *)(puVar47 + -0xf0) + -0x7ba8))(puVar16,puVar16,puVar47 + -0xe4)" (parenthesized_expression "(**(code **)(*(int *)(puVar47 + -0xf0) + -0x7ba8))" (( "(") (pointer_expression "**(code **)(*(int *)(puVar47 + -0xf0) + -0x7ba8)" (* "*") (pointer_expression "*(code **)(*(int *)(puVar47 + -0xf0) + -0x7ba8)" (* "*") (cast_expression "(code **)(*(int *)(puVar47 + -0xf0) + -0x7ba8)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*(int *)(puVar47 + -0xf0) + -0x7ba8)" (( "(") (binary_expression "*(int *)(puVar47 + -0xf0) + -0x7ba8" (pointer_expression "*(int *)(puVar47 + -0xf0)" (* "*") (cast_expression "(int *)(puVar47 + -0xf0)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar47 + -0xf0)" (( "(") (binary_expression "puVar47 + -0xf0" (identifier "puVar47") (+ "+") (number_literal "-0xf0")) () ")")))) (+ "+") (number_literal "-0x7ba8")) () ")"))))) () ")")) (argument_list "(puVar16,puVar16,puVar47 + -0xe4)" (( "(") (identifier "puVar16") (, ",") (identifier "puVar16") (, ",") (binary_expression "puVar47 + -0xe4" (identifier "puVar47") (+ "+") (number_literal "-0xe4")) () ")"))) (; ";")) (expression_statement "iVar6 = *(int *)(puVar47 + -0xf0);" (assignment_expression "iVar6 = *(int *)(puVar47 + -0xf0)" (identifier "iVar6") (= "=") (pointer_expression "*(int *)(puVar47 + -0xf0)" (* "*") (cast_expression "(int *)(puVar47 + -0xf0)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar47 + -0xf0)" (( "(") (binary_expression "puVar47 + -0xf0" (identifier "puVar47") (+ "+") (number_literal "-0xf0")) () ")"))))) (; ";")) (expression_statement "puVar8 = (uint *)puVar16[2];" (assignment_expression "puVar8 = (uint *)puVar16[2]" (identifier "puVar8") (= "=") (cast_expression "(uint *)puVar16[2]" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "puVar16[2]" (identifier "puVar16") ([ "[") (number_literal "2") (] "]")))) (; ";")) (expression_statement "puVar30 = (uint *)puVar16[1];" (assignment_expression "puVar30 = (uint *)puVar16[1]" (identifier "puVar30") (= "=") (cast_expression "(uint *)puVar16[1]" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "puVar16[1]" (identifier "puVar16") ([ "[") (number_literal "1") (] "]")))) (; ";")) (} "}")))) (expression_statement "pcVar51 = *(code **)(iVar6 + -0x7bb4);" (assignment_expression "pcVar51 = *(code **)(iVar6 + -0x7bb4)" (identifier "pcVar51") (= "=") (pointer_expression "*(code **)(iVar6 + -0x7bb4)" (* "*") (cast_expression "(code **)(iVar6 + -0x7bb4)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar6 + -0x7bb4)" (( "(") (binary_expression "iVar6 + -0x7bb4" (identifier "iVar6") (+ "+") (number_literal "-0x7bb4")) () ")"))))) (; ";")) (expression_statement "puVar38 = (uint *)((uint)*(byte *)((uVar7 - 8) + *(int *)(iVar6 + -0x7fd4) + 0x3550) -\n                            (uint)(uVar18 != uVar7));" (assignment_expression "puVar38 = (uint *)((uint)*(byte *)((uVar7 - 8) + *(int *)(iVar6 + -0x7fd4) + 0x3550) -\n                            (uint)(uVar18 != uVar7))" (identifier "puVar38") (= "=") (cast_expression "(uint *)((uint)*(byte *)((uVar7 - 8) + *(int *)(iVar6 + -0x7fd4) + 0x3550) -\n                            (uint)(uVar18 != uVar7))" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((uint)*(byte *)((uVar7 - 8) + *(int *)(iVar6 + -0x7fd4) + 0x3550) -\n                            (uint)(uVar18 != uVar7))" (( "(") (binary_expression "(uint)*(byte *)((uVar7 - 8) + *(int *)(iVar6 + -0x7fd4) + 0x3550) -\n                            (uint)(uVar18 != uVar7)" (binary_expression "(uint)*(byte *)((uVar7 - 8) + *(int *)(iVar6 + -0x7fd4) + 0x3550)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (cast_expression "(byte *)((uVar7 - 8) + *(int *)(iVar6 + -0x7fd4) + 0x3550)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((uVar7 - 8) + *(int *)(iVar6 + -0x7fd4) + 0x3550)" (( "(") (binary_expression "(uVar7 - 8) + *(int *)(iVar6 + -0x7fd4) + 0x3550" (binary_expression "(uVar7 - 8) + *(int *)(iVar6 + -0x7fd4)" (parenthesized_expression "(uVar7 - 8)" (( "(") (binary_expression "uVar7 - 8" (identifier "uVar7") (- "-") (number_literal "8")) () ")")) (+ "+") (pointer_expression "*(int *)(iVar6 + -0x7fd4)" (* "*") (cast_expression "(int *)(iVar6 + -0x7fd4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar6 + -0x7fd4)" (( "(") (binary_expression "iVar6 + -0x7fd4" (identifier "iVar6") (+ "+") (number_literal "-0x7fd4")) () ")"))))) (+ "+") (number_literal "0x3550")) () ")")))) (- "-") (call_expression "(uint)(uVar18 != uVar7)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(uVar18 != uVar7)" (( "(") (binary_expression "uVar18 != uVar7" (identifier "uVar18") (!= "!=") (identifier "uVar7")) () ")")))) () ")")))) (; ";")) (expression_statement "*(undefined4 *)(puVar47 + -0xf8) =\n               *(undefined4 *)((uVar7 - 8) * 4 + *(int *)(iVar6 + -0x7fd4) + 0x355c);" (assignment_expression "*(undefined4 *)(puVar47 + -0xf8) =\n               *(undefined4 *)((uVar7 - 8) * 4 + *(int *)(iVar6 + -0x7fd4) + 0x355c)" (pointer_expression "*(undefined4 *)(puVar47 + -0xf8)" (* "*") (cast_expression "(undefined4 *)(puVar47 + -0xf8)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar47 + -0xf8)" (( "(") (binary_expression "puVar47 + -0xf8" (identifier "puVar47") (+ "+") (number_literal "-0xf8")) () ")")))) (= "=") (pointer_expression "*(undefined4 *)((uVar7 - 8) * 4 + *(int *)(iVar6 + -0x7fd4) + 0x355c)" (* "*") (cast_expression "(undefined4 *)((uVar7 - 8) * 4 + *(int *)(iVar6 + -0x7fd4) + 0x355c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((uVar7 - 8) * 4 + *(int *)(iVar6 + -0x7fd4) + 0x355c)" (( "(") (binary_expression "(uVar7 - 8) * 4 + *(int *)(iVar6 + -0x7fd4) + 0x355c" (binary_expression "(uVar7 - 8) * 4 + *(int *)(iVar6 + -0x7fd4)" (binary_expression "(uVar7 - 8) * 4" (parenthesized_expression "(uVar7 - 8)" (( "(") (binary_expression "uVar7 - 8" (identifier "uVar7") (- "-") (number_literal "8")) () ")")) (* "*") (number_literal "4")) (+ "+") (pointer_expression "*(int *)(iVar6 + -0x7fd4)" (* "*") (cast_expression "(int *)(iVar6 + -0x7fd4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar6 + -0x7fd4)" (( "(") (binary_expression "iVar6 + -0x7fd4" (identifier "iVar6") (+ "+") (number_literal "-0x7fd4")) () ")"))))) (+ "+") (number_literal "0x355c")) () ")"))))) (; ";")) (expression_statement "*(uint **)(puVar47 + -0xf4) = puVar38;" (assignment_expression "*(uint **)(puVar47 + -0xf4) = puVar38" (pointer_expression "*(uint **)(puVar47 + -0xf4)" (* "*") (cast_expression "(uint **)(puVar47 + -0xf4)" (( "(") (type_descriptor "uint **" (type_identifier "uint") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar47 + -0xf4)" (( "(") (binary_expression "puVar47 + -0xf4" (identifier "puVar47") (+ "+") (number_literal "-0xf4")) () ")")))) (= "=") (identifier "puVar38")) (; ";")) (expression_statement "puVar31 = puVar8;" (assignment_expression "puVar31 = puVar8" (identifier "puVar31") (= "=") (identifier "puVar8")) (; ";")) (expression_statement "puVar20 = puVar8;" (assignment_expression "puVar20 = puVar8" (identifier "puVar20") (= "=") (identifier "puVar8")) (; ";")) (expression_statement "puVar22 = puVar30;" (assignment_expression "puVar22 = puVar30" (identifier "puVar22") (= "=") (identifier "puVar30")) (; ";")) (expression_statement "(*pcVar51)();" (call_expression "(*pcVar51)()" (parenthesized_expression "(*pcVar51)" (( "(") (pointer_expression "*pcVar51" (* "*") (identifier "pcVar51")) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "pcVar44 = *(code **)(puVar47 + -0xf0);" (assignment_expression "pcVar44 = *(code **)(puVar47 + -0xf0)" (identifier "pcVar44") (= "=") (pointer_expression "*(code **)(puVar47 + -0xf0)" (* "*") (cast_expression "(code **)(puVar47 + -0xf0)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar47 + -0xf0)" (( "(") (binary_expression "puVar47 + -0xf0" (identifier "puVar47") (+ "+") (number_literal "-0xf0")) () ")"))))) (; ";")) (if_statement "if (puVar8[(int)((int)puVar30 + -1)] == 0) {\n            puVar9 = puVar8 + (int)puVar30;\n            do {\n              puVar1 = puVar9 + -2;\n              puVar30 = (uint *)((int)puVar30 + -1);\n              puVar9 = puVar9 + -1;\n            } while (*puVar1 == 0);\n          }" (if "if") (parenthesized_expression "(puVar8[(int)((int)puVar30 + -1)] == 0)" (( "(") (binary_expression "puVar8[(int)((int)puVar30 + -1)] == 0" (subscript_expression "puVar8[(int)((int)puVar30 + -1)]" (identifier "puVar8") ([ "[") (cast_expression "(int)((int)puVar30 + -1)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "((int)puVar30 + -1)" (( "(") (binary_expression "(int)puVar30 + -1" (cast_expression "(int)puVar30" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar30")) (+ "+") (number_literal "-1")) () ")"))) (] "]")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n            puVar9 = puVar8 + (int)puVar30;\n            do {\n              puVar1 = puVar9 + -2;\n              puVar30 = (uint *)((int)puVar30 + -1);\n              puVar9 = puVar9 + -1;\n            } while (*puVar1 == 0);\n          }" ({ "{") (expression_statement "puVar9 = puVar8 + (int)puVar30;" (assignment_expression "puVar9 = puVar8 + (int)puVar30" (identifier "puVar9") (= "=") (binary_expression "puVar8 + (int)puVar30" (identifier "puVar8") (+ "+") (cast_expression "(int)puVar30" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar30")))) (; ";")) (do_statement "do {\n              puVar1 = puVar9 + -2;\n              puVar30 = (uint *)((int)puVar30 + -1);\n              puVar9 = puVar9 + -1;\n            } while (*puVar1 == 0);" (do "do") (compound_statement "{\n              puVar1 = puVar9 + -2;\n              puVar30 = (uint *)((int)puVar30 + -1);\n              puVar9 = puVar9 + -1;\n            }" ({ "{") (expression_statement "puVar1 = puVar9 + -2;" (assignment_expression "puVar1 = puVar9 + -2" (identifier "puVar1") (= "=") (binary_expression "puVar9 + -2" (identifier "puVar9") (+ "+") (number_literal "-2"))) (; ";")) (expression_statement "puVar30 = (uint *)((int)puVar30 + -1);" (assignment_expression "puVar30 = (uint *)((int)puVar30 + -1)" (identifier "puVar30") (= "=") (cast_expression "(uint *)((int)puVar30 + -1)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar30 + -1)" (( "(") (binary_expression "(int)puVar30 + -1" (cast_expression "(int)puVar30" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar30")) (+ "+") (number_literal "-1")) () ")")))) (; ";")) (expression_statement "puVar9 = puVar9 + -1;" (assignment_expression "puVar9 = puVar9 + -1" (identifier "puVar9") (= "=") (binary_expression "puVar9 + -1" (identifier "puVar9") (+ "+") (number_literal "-1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(*puVar1 == 0)" (( "(") (binary_expression "*puVar1 == 0" (pointer_expression "*puVar1" (* "*") (identifier "puVar1")) (== "==") (number_literal "0")) () ")")) (; ";")) (} "}"))) (expression_statement "puVar16[1] = (uint)puVar30;" (assignment_expression "puVar16[1] = (uint)puVar30" (subscript_expression "puVar16[1]" (identifier "puVar16") ([ "[") (number_literal "1") (] "]")) (= "=") (cast_expression "(uint)puVar30" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "puVar30"))) (; ";")) (expression_statement "puVar49 = puVar50;" (assignment_expression "puVar49 = puVar50" (identifier "puVar49") (= "=") (identifier "puVar50")) (; ";")) (} "}")) (else_clause "else if ((puVar30 < (uint *)0x3e8) || (puVar30 <= (uint *)((uint)puVar9 >> 4))) {\n          FUN_0002209c();\n          pcVar44 = *(code **)(puVar47 + -0xf0);\n          puVar49 = puVar46 + -0x90;\n        }\n        else {\n          FUN_000219dc();\n          pcVar44 = *(code **)(puVar47 + -0xf0);\n          puVar49 = puVar46 + -0x90;\n        }" (else "else") (if_statement "if ((puVar30 < (uint *)0x3e8) || (puVar30 <= (uint *)((uint)puVar9 >> 4))) {\n          FUN_0002209c();\n          pcVar44 = *(code **)(puVar47 + -0xf0);\n          puVar49 = puVar46 + -0x90;\n        }\n        else {\n          FUN_000219dc();\n          pcVar44 = *(code **)(puVar47 + -0xf0);\n          puVar49 = puVar46 + -0x90;\n        }" (if "if") (parenthesized_expression "((puVar30 < (uint *)0x3e8) || (puVar30 <= (uint *)((uint)puVar9 >> 4)))" (( "(") (binary_expression "(puVar30 < (uint *)0x3e8) || (puVar30 <= (uint *)((uint)puVar9 >> 4))" (parenthesized_expression "(puVar30 < (uint *)0x3e8)" (( "(") (binary_expression "puVar30 < (uint *)0x3e8" (identifier "puVar30") (< "<") (cast_expression "(uint *)0x3e8" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x3e8"))) () ")")) (|| "||") (parenthesized_expression "(puVar30 <= (uint *)((uint)puVar9 >> 4))" (( "(") (binary_expression "puVar30 <= (uint *)((uint)puVar9 >> 4)" (identifier "puVar30") (<= "<=") (cast_expression "(uint *)((uint)puVar9 >> 4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((uint)puVar9 >> 4)" (( "(") (binary_expression "(uint)puVar9 >> 4" (cast_expression "(uint)puVar9" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "puVar9")) (>> ">>") (number_literal "4")) () ")")))) () ")"))) () ")")) (compound_statement "{\n          FUN_0002209c();\n          pcVar44 = *(code **)(puVar47 + -0xf0);\n          puVar49 = puVar46 + -0x90;\n        }" ({ "{") (expression_statement "FUN_0002209c();" (call_expression "FUN_0002209c()" (identifier "FUN_0002209c") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "pcVar44 = *(code **)(puVar47 + -0xf0);" (assignment_expression "pcVar44 = *(code **)(puVar47 + -0xf0)" (identifier "pcVar44") (= "=") (pointer_expression "*(code **)(puVar47 + -0xf0)" (* "*") (cast_expression "(code **)(puVar47 + -0xf0)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar47 + -0xf0)" (( "(") (binary_expression "puVar47 + -0xf0" (identifier "puVar47") (+ "+") (number_literal "-0xf0")) () ")"))))) (; ";")) (expression_statement "puVar49 = puVar46 + -0x90;" (assignment_expression "puVar49 = puVar46 + -0x90" (identifier "puVar49") (= "=") (binary_expression "puVar46 + -0x90" (identifier "puVar46") (+ "+") (number_literal "-0x90"))) (; ";")) (} "}")) (else_clause "else {\n          FUN_000219dc();\n          pcVar44 = *(code **)(puVar47 + -0xf0);\n          puVar49 = puVar46 + -0x90;\n        }" (else "else") (compound_statement "{\n          FUN_000219dc();\n          pcVar44 = *(code **)(puVar47 + -0xf0);\n          puVar49 = puVar46 + -0x90;\n        }" ({ "{") (expression_statement "FUN_000219dc();" (call_expression "FUN_000219dc()" (identifier "FUN_000219dc") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "pcVar44 = *(code **)(puVar47 + -0xf0);" (assignment_expression "pcVar44 = *(code **)(puVar47 + -0xf0)" (identifier "pcVar44") (= "=") (pointer_expression "*(code **)(puVar47 + -0xf0)" (* "*") (cast_expression "(code **)(puVar47 + -0xf0)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar47 + -0xf0)" (( "(") (binary_expression "puVar47 + -0xf0" (identifier "puVar47") (+ "+") (number_literal "-0xf0")) () ")"))))) (; ";")) (expression_statement "puVar49 = puVar46 + -0x90;" (assignment_expression "puVar49 = puVar46 + -0x90" (identifier "puVar49") (= "=") (binary_expression "puVar46 + -0x90" (identifier "puVar46") (+ "+") (number_literal "-0x90"))) (; ";")) (} "}")))))))))))) (} "}")))) (if_statement "if (*(int *)(puVar47 + -0x84) == *piVar32) {\n        return *piVar32;\n      }" (if "if") (parenthesized_expression "(*(int *)(puVar47 + -0x84) == *piVar32)" (( "(") (binary_expression "*(int *)(puVar47 + -0x84) == *piVar32" (pointer_expression "*(int *)(puVar47 + -0x84)" (* "*") (cast_expression "(int *)(puVar47 + -0x84)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar47 + -0x84)" (( "(") (binary_expression "puVar47 + -0x84" (identifier "puVar47") (+ "+") (number_literal "-0x84")) () ")")))) (== "==") (pointer_expression "*piVar32" (* "*") (identifier "piVar32"))) () ")")) (compound_statement "{\n        return *piVar32;\n      }" ({ "{") (return_statement "return *piVar32;" (return "return") (pointer_expression "*piVar32" (* "*") (identifier "piVar32")) (; ";")) (} "}"))) (expression_statement "pcVar51 = *(code **)(pcVar44 + -0x7b70);" (assignment_expression "pcVar51 = *(code **)(pcVar44 + -0x7b70)" (identifier "pcVar51") (= "=") (pointer_expression "*(code **)(pcVar44 + -0x7b70)" (* "*") (cast_expression "(code **)(pcVar44 + -0x7b70)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(pcVar44 + -0x7b70)" (( "(") (binary_expression "pcVar44 + -0x7b70" (identifier "pcVar44") (+ "+") (number_literal "-0x7b70")) () ")"))))) (; ";")) (expression_statement "uVar10 = 0x22b64;" (assignment_expression "uVar10 = 0x22b64" (identifier "uVar10") (= "=") (number_literal "0x22b64")) (; ";")) (expression_statement "(*pcVar51)();" (call_expression "(*pcVar51)()" (parenthesized_expression "(*pcVar51)" (( "(") (pointer_expression "*pcVar51" (* "*") (identifier "pcVar51")) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "pcVar44 = pcVar51 + 0x824d0;" (assignment_expression "pcVar44 = pcVar51 + 0x824d0" (identifier "pcVar44") (= "=") (binary_expression "pcVar51 + 0x824d0" (identifier "pcVar51") (+ "+") (number_literal "0x824d0"))) (; ";")) (expression_statement "puVar48 = puVar47 + -0x160;" (assignment_expression "puVar48 = puVar47 + -0x160" (identifier "puVar48") (= "=") (binary_expression "puVar47 + -0x160" (identifier "puVar47") (+ "+") (number_literal "-0x160"))) (; ";")) (expression_statement "*(uint **)(puVar47 + -0x118) = puVar16;" (assignment_expression "*(uint **)(puVar47 + -0x118) = puVar16" (pointer_expression "*(uint **)(puVar47 + -0x118)" (* "*") (cast_expression "(uint **)(puVar47 + -0x118)" (( "(") (type_descriptor "uint **" (type_identifier "uint") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar47 + -0x118)" (( "(") (binary_expression "puVar47 + -0x118" (identifier "puVar47") (+ "+") (number_literal "-0x118")) () ")")))) (= "=") (identifier "puVar16")) (; ";")) (expression_statement "*(uint **)(puVar47 + -0x124) = puVar30;" (assignment_expression "*(uint **)(puVar47 + -0x124) = puVar30" (pointer_expression "*(uint **)(puVar47 + -0x124)" (* "*") (cast_expression "(uint **)(puVar47 + -0x124)" (( "(") (type_descriptor "uint **" (type_identifier "uint") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar47 + -0x124)" (( "(") (binary_expression "puVar47 + -0x124" (identifier "puVar47") (+ "+") (number_literal "-0x124")) () ")")))) (= "=") (identifier "puVar30")) (; ";")) (expression_statement "piVar34 = *(int **)(pcVar51 + 0x7a9d0);" (assignment_expression "piVar34 = *(int **)(pcVar51 + 0x7a9d0)" (identifier "piVar34") (= "=") (pointer_expression "*(int **)(pcVar51 + 0x7a9d0)" (* "*") (cast_expression "(int **)(pcVar51 + 0x7a9d0)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(pcVar51 + 0x7a9d0)" (( "(") (binary_expression "pcVar51 + 0x7a9d0" (identifier "pcVar51") (+ "+") (number_literal "0x7a9d0")) () ")"))))) (; ";")) (expression_statement "uVar18 = puVar22[1];" (assignment_expression "uVar18 = puVar22[1]" (identifier "uVar18") (= "=") (subscript_expression "puVar22[1]" (identifier "puVar22") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "*(undefined1 **)(puVar47 + -0x110) = puVar49;" (assignment_expression "*(undefined1 **)(puVar47 + -0x110) = puVar49" (pointer_expression "*(undefined1 **)(puVar47 + -0x110)" (* "*") (cast_expression "(undefined1 **)(puVar47 + -0x110)" (( "(") (type_descriptor "undefined1 **" (type_identifier "undefined1") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar47 + -0x110)" (( "(") (binary_expression "puVar47 + -0x110" (identifier "puVar47") (+ "+") (number_literal "-0x110")) () ")")))) (= "=") (identifier "puVar49")) (; ";")) (expression_statement "*(uint **)(puVar47 + -0x114) = puVar36;" (assignment_expression "*(uint **)(puVar47 + -0x114) = puVar36" (pointer_expression "*(uint **)(puVar47 + -0x114)" (* "*") (cast_expression "(uint **)(puVar47 + -0x114)" (( "(") (type_descriptor "uint **" (type_identifier "uint") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar47 + -0x114)" (( "(") (binary_expression "puVar47 + -0x114" (identifier "puVar47") (+ "+") (number_literal "-0x114")) () ")")))) (= "=") (identifier "puVar36")) (; ";")) (expression_statement "*(int **)(puVar47 + -0x11c) = piVar32;" (assignment_expression "*(int **)(puVar47 + -0x11c) = piVar32" (pointer_expression "*(int **)(puVar47 + -0x11c)" (* "*") (cast_expression "(int **)(puVar47 + -0x11c)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar47 + -0x11c)" (( "(") (binary_expression "puVar47 + -0x11c" (identifier "puVar47") (+ "+") (number_literal "-0x11c")) () ")")))) (= "=") (identifier "piVar32")) (; ";")) (expression_statement "*(uint **)(puVar47 + -0x120) = puVar8;" (assignment_expression "*(uint **)(puVar47 + -0x120) = puVar8" (pointer_expression "*(uint **)(puVar47 + -0x120)" (* "*") (cast_expression "(uint **)(puVar47 + -0x120)" (( "(") (type_descriptor "uint **" (type_identifier "uint") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar47 + -0x120)" (( "(") (binary_expression "puVar47 + -0x120" (identifier "puVar47") (+ "+") (number_literal "-0x120")) () ")")))) (= "=") (identifier "puVar8")) (; ";")) (expression_statement "*(undefined4 *)(puVar47 + -0x10c) = uVar10;" (assignment_expression "*(undefined4 *)(puVar47 + -0x10c) = uVar10" (pointer_expression "*(undefined4 *)(puVar47 + -0x10c)" (* "*") (cast_expression "(undefined4 *)(puVar47 + -0x10c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar47 + -0x10c)" (( "(") (binary_expression "puVar47 + -0x10c" (identifier "puVar47") (+ "+") (number_literal "-0x10c")) () ")")))) (= "=") (identifier "uVar10")) (; ";")) (expression_statement "*(code **)(puVar47 + -0x150) = pcVar44;" (assignment_expression "*(code **)(puVar47 + -0x150) = pcVar44" (pointer_expression "*(code **)(puVar47 + -0x150)" (* "*") (cast_expression "(code **)(puVar47 + -0x150)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar47 + -0x150)" (( "(") (binary_expression "puVar47 + -0x150" (identifier "puVar47") (+ "+") (number_literal "-0x150")) () ")")))) (= "=") (identifier "pcVar44")) (; ";")) (expression_statement "*(undefined4 *)(puVar47 + -0x13c) = 0;" (assignment_expression "*(undefined4 *)(puVar47 + -0x13c) = 0" (pointer_expression "*(undefined4 *)(puVar47 + -0x13c)" (* "*") (cast_expression "(undefined4 *)(puVar47 + -0x13c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar47 + -0x13c)" (( "(") (binary_expression "puVar47 + -0x13c" (identifier "puVar47") (+ "+") (number_literal "-0x13c")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar8 = (uint *)puVar20[1];" (assignment_expression "puVar8 = (uint *)puVar20[1]" (identifier "puVar8") (= "=") (cast_expression "(uint *)puVar20[1]" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "puVar20[1]" (identifier "puVar20") ([ "[") (number_literal "1") (] "]")))) (; ";")) (expression_statement "*(int *)(puVar47 + -300) = *piVar34;" (assignment_expression "*(int *)(puVar47 + -300) = *piVar34" (pointer_expression "*(int *)(puVar47 + -300)" (* "*") (cast_expression "(int *)(puVar47 + -300)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar47 + -300)" (( "(") (binary_expression "puVar47 + -300" (identifier "puVar47") (+ "+") (number_literal "-300")) () ")")))) (= "=") (pointer_expression "*piVar34" (* "*") (identifier "piVar34"))) (; ";")) (if_statement "if ((int)uVar18 < 0) {\n        uVar37 = uVar18 * -4;\n        *(uint *)(puVar47 + -0x138) = -uVar18;\n        if (0x7f00 < uVar37) {\n          pcVar51 = *(code **)(pcVar51 + 0x7a780);\n          goto LAB_00022c88;\n        }\nLAB_00022be4:\n        iVar6 = -(uVar37 + 7 & 0xfffffff8);\n        puVar48 = puVar47 + iVar6 + -0x160;\n        puVar13 = puVar47 + iVar6 + -0x150;\n      }\n      else {\n        uVar37 = uVar18 * 4;\n        *(uint *)(puVar47 + -0x138) = uVar18;\n        pcVar51 = *(code **)(pcVar51 + 0x7a780);\n        if (uVar37 < 0x7f01) goto LAB_00022be4;\nLAB_00022c88:\n        *(uint **)(puVar47 + -0x144) = puVar22;\n        puVar13 = (undefined1 *)(*pcVar51)(puVar47 + -0x13c,uVar37);\n        pcVar44 = *(code **)(puVar47 + -0x150);\n        puVar22 = *(uint **)(puVar47 + -0x144);\n      }" (if "if") (parenthesized_expression "((int)uVar18 < 0)" (( "(") (binary_expression "(int)uVar18 < 0" (cast_expression "(int)uVar18" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar18")) (< "<") (number_literal "0")) () ")")) (compound_statement "{\n        uVar37 = uVar18 * -4;\n        *(uint *)(puVar47 + -0x138) = -uVar18;\n        if (0x7f00 < uVar37) {\n          pcVar51 = *(code **)(pcVar51 + 0x7a780);\n          goto LAB_00022c88;\n        }\nLAB_00022be4:\n        iVar6 = -(uVar37 + 7 & 0xfffffff8);\n        puVar48 = puVar47 + iVar6 + -0x160;\n        puVar13 = puVar47 + iVar6 + -0x150;\n      }" ({ "{") (expression_statement "uVar37 = uVar18 * -4;" (assignment_expression "uVar37 = uVar18 * -4" (identifier "uVar37") (= "=") (binary_expression "uVar18 * -4" (identifier "uVar18") (* "*") (number_literal "-4"))) (; ";")) (expression_statement "*(uint *)(puVar47 + -0x138) = -uVar18;" (assignment_expression "*(uint *)(puVar47 + -0x138) = -uVar18" (pointer_expression "*(uint *)(puVar47 + -0x138)" (* "*") (cast_expression "(uint *)(puVar47 + -0x138)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar47 + -0x138)" (( "(") (binary_expression "puVar47 + -0x138" (identifier "puVar47") (+ "+") (number_literal "-0x138")) () ")")))) (= "=") (unary_expression "-uVar18" (- "-") (identifier "uVar18"))) (; ";")) (if_statement "if (0x7f00 < uVar37) {\n          pcVar51 = *(code **)(pcVar51 + 0x7a780);\n          goto LAB_00022c88;\n        }" (if "if") (parenthesized_expression "(0x7f00 < uVar37)" (( "(") (binary_expression "0x7f00 < uVar37" (number_literal "0x7f00") (< "<") (identifier "uVar37")) () ")")) (compound_statement "{\n          pcVar51 = *(code **)(pcVar51 + 0x7a780);\n          goto LAB_00022c88;\n        }" ({ "{") (expression_statement "pcVar51 = *(code **)(pcVar51 + 0x7a780);" (assignment_expression "pcVar51 = *(code **)(pcVar51 + 0x7a780)" (identifier "pcVar51") (= "=") (pointer_expression "*(code **)(pcVar51 + 0x7a780)" (* "*") (cast_expression "(code **)(pcVar51 + 0x7a780)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(pcVar51 + 0x7a780)" (( "(") (binary_expression "pcVar51 + 0x7a780" (identifier "pcVar51") (+ "+") (number_literal "0x7a780")) () ")"))))) (; ";")) (goto_statement "goto LAB_00022c88;" (goto "goto") (statement_identifier "LAB_00022c88") (; ";")) (} "}"))) (labeled_statement "LAB_00022be4:\n        iVar6 = -(uVar37 + 7 & 0xfffffff8);" (statement_identifier "LAB_00022be4") (: ":") (expression_statement "iVar6 = -(uVar37 + 7 & 0xfffffff8);" (assignment_expression "iVar6 = -(uVar37 + 7 & 0xfffffff8)" (identifier "iVar6") (= "=") (unary_expression "-(uVar37 + 7 & 0xfffffff8)" (- "-") (parenthesized_expression "(uVar37 + 7 & 0xfffffff8)" (( "(") (binary_expression "uVar37 + 7 & 0xfffffff8" (binary_expression "uVar37 + 7" (identifier "uVar37") (+ "+") (number_literal "7")) (& "&") (number_literal "0xfffffff8")) () ")")))) (; ";"))) (expression_statement "puVar48 = puVar47 + iVar6 + -0x160;" (assignment_expression "puVar48 = puVar47 + iVar6 + -0x160" (identifier "puVar48") (= "=") (binary_expression "puVar47 + iVar6 + -0x160" (binary_expression "puVar47 + iVar6" (identifier "puVar47") (+ "+") (identifier "iVar6")) (+ "+") (number_literal "-0x160"))) (; ";")) (expression_statement "puVar13 = puVar47 + iVar6 + -0x150;" (assignment_expression "puVar13 = puVar47 + iVar6 + -0x150" (identifier "puVar13") (= "=") (binary_expression "puVar47 + iVar6 + -0x150" (binary_expression "puVar47 + iVar6" (identifier "puVar47") (+ "+") (identifier "iVar6")) (+ "+") (number_literal "-0x150"))) (; ";")) (} "}")) (else_clause "else {\n        uVar37 = uVar18 * 4;\n        *(uint *)(puVar47 + -0x138) = uVar18;\n        pcVar51 = *(code **)(pcVar51 + 0x7a780);\n        if (uVar37 < 0x7f01) goto LAB_00022be4;\nLAB_00022c88:\n        *(uint **)(puVar47 + -0x144) = puVar22;\n        puVar13 = (undefined1 *)(*pcVar51)(puVar47 + -0x13c,uVar37);\n        pcVar44 = *(code **)(puVar47 + -0x150);\n        puVar22 = *(uint **)(puVar47 + -0x144);\n      }" (else "else") (compound_statement "{\n        uVar37 = uVar18 * 4;\n        *(uint *)(puVar47 + -0x138) = uVar18;\n        pcVar51 = *(code **)(pcVar51 + 0x7a780);\n        if (uVar37 < 0x7f01) goto LAB_00022be4;\nLAB_00022c88:\n        *(uint **)(puVar47 + -0x144) = puVar22;\n        puVar13 = (undefined1 *)(*pcVar51)(puVar47 + -0x13c,uVar37);\n        pcVar44 = *(code **)(puVar47 + -0x150);\n        puVar22 = *(uint **)(puVar47 + -0x144);\n      }" ({ "{") (expression_statement "uVar37 = uVar18 * 4;" (assignment_expression "uVar37 = uVar18 * 4" (identifier "uVar37") (= "=") (binary_expression "uVar18 * 4" (identifier "uVar18") (* "*") (number_literal "4"))) (; ";")) (expression_statement "*(uint *)(puVar47 + -0x138) = uVar18;" (assignment_expression "*(uint *)(puVar47 + -0x138) = uVar18" (pointer_expression "*(uint *)(puVar47 + -0x138)" (* "*") (cast_expression "(uint *)(puVar47 + -0x138)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar47 + -0x138)" (( "(") (binary_expression "puVar47 + -0x138" (identifier "puVar47") (+ "+") (number_literal "-0x138")) () ")")))) (= "=") (identifier "uVar18")) (; ";")) (expression_statement "pcVar51 = *(code **)(pcVar51 + 0x7a780);" (assignment_expression "pcVar51 = *(code **)(pcVar51 + 0x7a780)" (identifier "pcVar51") (= "=") (pointer_expression "*(code **)(pcVar51 + 0x7a780)" (* "*") (cast_expression "(code **)(pcVar51 + 0x7a780)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(pcVar51 + 0x7a780)" (( "(") (binary_expression "pcVar51 + 0x7a780" (identifier "pcVar51") (+ "+") (number_literal "0x7a780")) () ")"))))) (; ";")) (if_statement "if (uVar37 < 0x7f01) goto LAB_00022be4;" (if "if") (parenthesized_expression "(uVar37 < 0x7f01)" (( "(") (binary_expression "uVar37 < 0x7f01" (identifier "uVar37") (< "<") (number_literal "0x7f01")) () ")")) (goto_statement "goto LAB_00022be4;" (goto "goto") (statement_identifier "LAB_00022be4") (; ";"))) (labeled_statement "LAB_00022c88:\n        *(uint **)(puVar47 + -0x144) = puVar22;" (statement_identifier "LAB_00022c88") (: ":") (expression_statement "*(uint **)(puVar47 + -0x144) = puVar22;" (assignment_expression "*(uint **)(puVar47 + -0x144) = puVar22" (pointer_expression "*(uint **)(puVar47 + -0x144)" (* "*") (cast_expression "(uint **)(puVar47 + -0x144)" (( "(") (type_descriptor "uint **" (type_identifier "uint") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar47 + -0x144)" (( "(") (binary_expression "puVar47 + -0x144" (identifier "puVar47") (+ "+") (number_literal "-0x144")) () ")")))) (= "=") (identifier "puVar22")) (; ";"))) (expression_statement "puVar13 = (undefined1 *)(*pcVar51)(puVar47 + -0x13c,uVar37);" (assignment_expression "puVar13 = (undefined1 *)(*pcVar51)(puVar47 + -0x13c,uVar37)" (identifier "puVar13") (= "=") (cast_expression "(undefined1 *)(*pcVar51)(puVar47 + -0x13c,uVar37)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "(*pcVar51)(puVar47 + -0x13c,uVar37)" (parenthesized_expression "(*pcVar51)" (( "(") (pointer_expression "*pcVar51" (* "*") (identifier "pcVar51")) () ")")) (argument_list "(puVar47 + -0x13c,uVar37)" (( "(") (binary_expression "puVar47 + -0x13c" (identifier "puVar47") (+ "+") (number_literal "-0x13c")) (, ",") (identifier "uVar37") () ")"))))) (; ";")) (expression_statement "pcVar44 = *(code **)(puVar47 + -0x150);" (assignment_expression "pcVar44 = *(code **)(puVar47 + -0x150)" (identifier "pcVar44") (= "=") (pointer_expression "*(code **)(puVar47 + -0x150)" (* "*") (cast_expression "(code **)(puVar47 + -0x150)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar47 + -0x150)" (( "(") (binary_expression "puVar47 + -0x150" (identifier "puVar47") (+ "+") (number_literal "-0x150")) () ")"))))) (; ";")) (expression_statement "puVar22 = *(uint **)(puVar47 + -0x144);" (assignment_expression "puVar22 = *(uint **)(puVar47 + -0x144)" (identifier "puVar22") (= "=") (pointer_expression "*(uint **)(puVar47 + -0x144)" (* "*") (cast_expression "(uint **)(puVar47 + -0x144)" (( "(") (type_descriptor "uint **" (type_identifier "uint") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar47 + -0x144)" (( "(") (binary_expression "puVar47 + -0x144" (identifier "puVar47") (+ "+") (number_literal "-0x144")) () ")"))))) (; ";")) (} "}")))) (expression_statement "pcVar51 = *(code **)(pcVar44 + -0x7a68);" (assignment_expression "pcVar51 = *(code **)(pcVar44 + -0x7a68)" (identifier "pcVar51") (= "=") (pointer_expression "*(code **)(pcVar44 + -0x7a68)" (* "*") (cast_expression "(code **)(pcVar44 + -0x7a68)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(pcVar44 + -0x7a68)" (( "(") (binary_expression "pcVar44 + -0x7a68" (identifier "pcVar44") (+ "+") (number_literal "-0x7a68")) () ")"))))) (; ";")) (expression_statement "puVar36 = (uint *)(puVar47 + -0x138);" (assignment_expression "puVar36 = (uint *)(puVar47 + -0x138)" (identifier "puVar36") (= "=") (cast_expression "(uint *)(puVar47 + -0x138)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar47 + -0x138)" (( "(") (binary_expression "puVar47 + -0x138" (identifier "puVar47") (+ "+") (number_literal "-0x138")) () ")")))) (; ";")) (expression_statement "*(undefined1 **)(puVar47 + -0x130) = puVar13;" (assignment_expression "*(undefined1 **)(puVar47 + -0x130) = puVar13" (pointer_expression "*(undefined1 **)(puVar47 + -0x130)" (* "*") (cast_expression "(undefined1 **)(puVar47 + -0x130)" (( "(") (type_descriptor "undefined1 **" (type_identifier "undefined1") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar47 + -0x130)" (( "(") (binary_expression "puVar47 + -0x130" (identifier "puVar47") (+ "+") (number_literal "-0x130")) () ")")))) (= "=") (identifier "puVar13")) (; ";")) (expression_statement "puVar9 = puVar20;" (assignment_expression "puVar9 = puVar20" (identifier "puVar9") (= "=") (identifier "puVar20")) (; ";")) (expression_statement "(*pcVar51)(puVar31,puVar36,puVar20,puVar22);" (call_expression "(*pcVar51)(puVar31,puVar36,puVar20,puVar22)" (parenthesized_expression "(*pcVar51)" (( "(") (pointer_expression "*pcVar51" (* "*") (identifier "pcVar51")) () ")")) (argument_list "(puVar31,puVar36,puVar20,puVar22)" (( "(") (identifier "puVar31") (, ",") (identifier "puVar36") (, ",") (identifier "puVar20") (, ",") (identifier "puVar22") () ")"))) (; ";")) (expression_statement "iVar6 = *(int *)(puVar47 + -0x150);" (assignment_expression "iVar6 = *(int *)(puVar47 + -0x150)" (identifier "iVar6") (= "=") (pointer_expression "*(int *)(puVar47 + -0x150)" (* "*") (cast_expression "(int *)(puVar47 + -0x150)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar47 + -0x150)" (( "(") (binary_expression "puVar47 + -0x150" (identifier "puVar47") (+ "+") (number_literal "-0x150")) () ")"))))) (; ";")) (if_statement "if (((int)((uint)puVar8 ^ uVar18) < 0) || (*(int *)(puVar47 + -0x134) == 0)) {\n        piVar32 = *(int **)(puVar47 + -0x13c);\n        pcVar51 = *(code **)(iVar6 + -0x7a28);\n        if (piVar32 != (int *)0x0) goto LAB_00022cc0;\n      }\n      else {\n        puVar9 = (uint *)0x1;\n        puVar36 = puVar31;\n        (**(code **)(iVar6 + -0x7c9c))(puVar31);\n        piVar32 = *(int **)(puVar47 + -0x13c);\n        iVar6 = *(int *)(puVar47 + -0x150);\n        if (piVar32 != (int *)0x0) {\n          pcVar51 = *(code **)(iVar6 + -0x7a28);\nLAB_00022cc0:\n          (*pcVar51)();\n          iVar6 = *(int *)(puVar47 + -0x150);\n        }\n      }" (if "if") (parenthesized_expression "(((int)((uint)puVar8 ^ uVar18) < 0) || (*(int *)(puVar47 + -0x134) == 0))" (( "(") (binary_expression "((int)((uint)puVar8 ^ uVar18) < 0) || (*(int *)(puVar47 + -0x134) == 0)" (parenthesized_expression "((int)((uint)puVar8 ^ uVar18) < 0)" (( "(") (binary_expression "(int)((uint)puVar8 ^ uVar18) < 0" (cast_expression "(int)((uint)puVar8 ^ uVar18)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "((uint)puVar8 ^ uVar18)" (( "(") (binary_expression "(uint)puVar8 ^ uVar18" (cast_expression "(uint)puVar8" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "puVar8")) (^ "^") (identifier "uVar18")) () ")"))) (< "<") (number_literal "0")) () ")")) (|| "||") (parenthesized_expression "(*(int *)(puVar47 + -0x134) == 0)" (( "(") (binary_expression "*(int *)(puVar47 + -0x134) == 0" (pointer_expression "*(int *)(puVar47 + -0x134)" (* "*") (cast_expression "(int *)(puVar47 + -0x134)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar47 + -0x134)" (( "(") (binary_expression "puVar47 + -0x134" (identifier "puVar47") (+ "+") (number_literal "-0x134")) () ")")))) (== "==") (number_literal "0")) () ")"))) () ")")) (compound_statement "{\n        piVar32 = *(int **)(puVar47 + -0x13c);\n        pcVar51 = *(code **)(iVar6 + -0x7a28);\n        if (piVar32 != (int *)0x0) goto LAB_00022cc0;\n      }" ({ "{") (expression_statement "piVar32 = *(int **)(puVar47 + -0x13c);" (assignment_expression "piVar32 = *(int **)(puVar47 + -0x13c)" (identifier "piVar32") (= "=") (pointer_expression "*(int **)(puVar47 + -0x13c)" (* "*") (cast_expression "(int **)(puVar47 + -0x13c)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar47 + -0x13c)" (( "(") (binary_expression "puVar47 + -0x13c" (identifier "puVar47") (+ "+") (number_literal "-0x13c")) () ")"))))) (; ";")) (expression_statement "pcVar51 = *(code **)(iVar6 + -0x7a28);" (assignment_expression "pcVar51 = *(code **)(iVar6 + -0x7a28)" (identifier "pcVar51") (= "=") (pointer_expression "*(code **)(iVar6 + -0x7a28)" (* "*") (cast_expression "(code **)(iVar6 + -0x7a28)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar6 + -0x7a28)" (( "(") (binary_expression "iVar6 + -0x7a28" (identifier "iVar6") (+ "+") (number_literal "-0x7a28")) () ")"))))) (; ";")) (if_statement "if (piVar32 != (int *)0x0) goto LAB_00022cc0;" (if "if") (parenthesized_expression "(piVar32 != (int *)0x0)" (( "(") (binary_expression "piVar32 != (int *)0x0" (identifier "piVar32") (!= "!=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (goto_statement "goto LAB_00022cc0;" (goto "goto") (statement_identifier "LAB_00022cc0") (; ";"))) (} "}")) (else_clause "else {\n        puVar9 = (uint *)0x1;\n        puVar36 = puVar31;\n        (**(code **)(iVar6 + -0x7c9c))(puVar31);\n        piVar32 = *(int **)(puVar47 + -0x13c);\n        iVar6 = *(int *)(puVar47 + -0x150);\n        if (piVar32 != (int *)0x0) {\n          pcVar51 = *(code **)(iVar6 + -0x7a28);\nLAB_00022cc0:\n          (*pcVar51)();\n          iVar6 = *(int *)(puVar47 + -0x150);\n        }\n      }" (else "else") (compound_statement "{\n        puVar9 = (uint *)0x1;\n        puVar36 = puVar31;\n        (**(code **)(iVar6 + -0x7c9c))(puVar31);\n        piVar32 = *(int **)(puVar47 + -0x13c);\n        iVar6 = *(int *)(puVar47 + -0x150);\n        if (piVar32 != (int *)0x0) {\n          pcVar51 = *(code **)(iVar6 + -0x7a28);\nLAB_00022cc0:\n          (*pcVar51)();\n          iVar6 = *(int *)(puVar47 + -0x150);\n        }\n      }" ({ "{") (expression_statement "puVar9 = (uint *)0x1;" (assignment_expression "puVar9 = (uint *)0x1" (identifier "puVar9") (= "=") (cast_expression "(uint *)0x1" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x1"))) (; ";")) (expression_statement "puVar36 = puVar31;" (assignment_expression "puVar36 = puVar31" (identifier "puVar36") (= "=") (identifier "puVar31")) (; ";")) (expression_statement "(**(code **)(iVar6 + -0x7c9c))(puVar31);" (call_expression "(**(code **)(iVar6 + -0x7c9c))(puVar31)" (parenthesized_expression "(**(code **)(iVar6 + -0x7c9c))" (( "(") (pointer_expression "**(code **)(iVar6 + -0x7c9c)" (* "*") (pointer_expression "*(code **)(iVar6 + -0x7c9c)" (* "*") (cast_expression "(code **)(iVar6 + -0x7c9c)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar6 + -0x7c9c)" (( "(") (binary_expression "iVar6 + -0x7c9c" (identifier "iVar6") (+ "+") (number_literal "-0x7c9c")) () ")"))))) () ")")) (argument_list "(puVar31)" (( "(") (identifier "puVar31") () ")"))) (; ";")) (expression_statement "piVar32 = *(int **)(puVar47 + -0x13c);" (assignment_expression "piVar32 = *(int **)(puVar47 + -0x13c)" (identifier "piVar32") (= "=") (pointer_expression "*(int **)(puVar47 + -0x13c)" (* "*") (cast_expression "(int **)(puVar47 + -0x13c)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar47 + -0x13c)" (( "(") (binary_expression "puVar47 + -0x13c" (identifier "puVar47") (+ "+") (number_literal "-0x13c")) () ")"))))) (; ";")) (expression_statement "iVar6 = *(int *)(puVar47 + -0x150);" (assignment_expression "iVar6 = *(int *)(puVar47 + -0x150)" (identifier "iVar6") (= "=") (pointer_expression "*(int *)(puVar47 + -0x150)" (* "*") (cast_expression "(int *)(puVar47 + -0x150)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar47 + -0x150)" (( "(") (binary_expression "puVar47 + -0x150" (identifier "puVar47") (+ "+") (number_literal "-0x150")) () ")"))))) (; ";")) (if_statement "if (piVar32 != (int *)0x0) {\n          pcVar51 = *(code **)(iVar6 + -0x7a28);\nLAB_00022cc0:\n          (*pcVar51)();\n          iVar6 = *(int *)(puVar47 + -0x150);\n        }" (if "if") (parenthesized_expression "(piVar32 != (int *)0x0)" (( "(") (binary_expression "piVar32 != (int *)0x0" (identifier "piVar32") (!= "!=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n          pcVar51 = *(code **)(iVar6 + -0x7a28);\nLAB_00022cc0:\n          (*pcVar51)();\n          iVar6 = *(int *)(puVar47 + -0x150);\n        }" ({ "{") (expression_statement "pcVar51 = *(code **)(iVar6 + -0x7a28);" (assignment_expression "pcVar51 = *(code **)(iVar6 + -0x7a28)" (identifier "pcVar51") (= "=") (pointer_expression "*(code **)(iVar6 + -0x7a28)" (* "*") (cast_expression "(code **)(iVar6 + -0x7a28)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar6 + -0x7a28)" (( "(") (binary_expression "iVar6 + -0x7a28" (identifier "iVar6") (+ "+") (number_literal "-0x7a28")) () ")"))))) (; ";")) (labeled_statement "LAB_00022cc0:\n          (*pcVar51)();" (statement_identifier "LAB_00022cc0") (: ":") (expression_statement "(*pcVar51)();" (call_expression "(*pcVar51)()" (parenthesized_expression "(*pcVar51)" (( "(") (pointer_expression "*pcVar51" (* "*") (identifier "pcVar51")) () ")")) (argument_list "()" (( "(") () ")"))) (; ";"))) (expression_statement "iVar6 = *(int *)(puVar47 + -0x150);" (assignment_expression "iVar6 = *(int *)(puVar47 + -0x150)" (identifier "iVar6") (= "=") (pointer_expression "*(int *)(puVar47 + -0x150)" (* "*") (cast_expression "(int *)(puVar47 + -0x150)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar47 + -0x150)" (( "(") (binary_expression "puVar47 + -0x150" (identifier "puVar47") (+ "+") (number_literal "-0x150")) () ")"))))) (; ";")) (} "}"))) (} "}")))) (if_statement "if (*(int *)(puVar47 + -300) == *piVar34) {\n        return *piVar34;\n      }" (if "if") (parenthesized_expression "(*(int *)(puVar47 + -300) == *piVar34)" (( "(") (binary_expression "*(int *)(puVar47 + -300) == *piVar34" (pointer_expression "*(int *)(puVar47 + -300)" (* "*") (cast_expression "(int *)(puVar47 + -300)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar47 + -300)" (( "(") (binary_expression "puVar47 + -300" (identifier "puVar47") (+ "+") (number_literal "-300")) () ")")))) (== "==") (pointer_expression "*piVar34" (* "*") (identifier "piVar34"))) () ")")) (compound_statement "{\n        return *piVar34;\n      }" ({ "{") (return_statement "return *piVar34;" (return "return") (pointer_expression "*piVar34" (* "*") (identifier "piVar34")) (; ";")) (} "}"))) (expression_statement "pcVar51 = *(code **)(iVar6 + -0x7b70);" (assignment_expression "pcVar51 = *(code **)(iVar6 + -0x7b70)" (identifier "pcVar51") (= "=") (pointer_expression "*(code **)(iVar6 + -0x7b70)" (* "*") (cast_expression "(code **)(iVar6 + -0x7b70)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar6 + -0x7b70)" (( "(") (binary_expression "iVar6 + -0x7b70" (identifier "iVar6") (+ "+") (number_literal "-0x7b70")) () ")"))))) (; ";")) (expression_statement "uVar10 = 0x22cdc;" (assignment_expression "uVar10 = 0x22cdc" (identifier "uVar10") (= "=") (number_literal "0x22cdc")) (; ";")) (expression_statement "(*pcVar51)();" (call_expression "(*pcVar51)()" (parenthesized_expression "(*pcVar51)" (( "(") (pointer_expression "*pcVar51" (* "*") (identifier "pcVar51")) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "pcVar44 = pcVar51 + 0x82360;" (assignment_expression "pcVar44 = pcVar51 + 0x82360" (identifier "pcVar44") (= "=") (binary_expression "pcVar51 + 0x82360" (identifier "pcVar51") (+ "+") (number_literal "0x82360"))) (; ";")) (expression_statement "*(code **)(puVar48 + -0x28) = pcVar44;" (assignment_expression "*(code **)(puVar48 + -0x28) = pcVar44" (pointer_expression "*(code **)(puVar48 + -0x28)" (* "*") (cast_expression "(code **)(puVar48 + -0x28)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar48 + -0x28)" (( "(") (binary_expression "puVar48 + -0x28" (identifier "puVar48") (+ "+") (number_literal "-0x28")) () ")")))) (= "=") (identifier "pcVar44")) (; ";")) (expression_statement "*(undefined4 *)(puVar48 + -4) = uVar10;" (assignment_expression "*(undefined4 *)(puVar48 + -4) = uVar10" (pointer_expression "*(undefined4 *)(puVar48 + -4)" (* "*") (cast_expression "(undefined4 *)(puVar48 + -4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar48 + -4)" (( "(") (binary_expression "puVar48 + -4" (identifier "puVar48") (+ "+") (number_literal "-4")) () ")")))) (= "=") (identifier "uVar10")) (; ";")) (expression_statement "*(uint **)(puVar48 + -8) = puVar38;" (assignment_expression "*(uint **)(puVar48 + -8) = puVar38" (pointer_expression "*(uint **)(puVar48 + -8)" (* "*") (cast_expression "(uint **)(puVar48 + -8)" (( "(") (type_descriptor "uint **" (type_identifier "uint") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar48 + -8)" (( "(") (binary_expression "puVar48 + -8" (identifier "puVar48") (+ "+") (number_literal "-8")) () ")")))) (= "=") (identifier "puVar38")) (; ";")) (expression_statement "*(uint **)(puVar48 + -0xc) = puVar20;" (assignment_expression "*(uint **)(puVar48 + -0xc) = puVar20" (pointer_expression "*(uint **)(puVar48 + -0xc)" (* "*") (cast_expression "(uint **)(puVar48 + -0xc)" (( "(") (type_descriptor "uint **" (type_identifier "uint") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar48 + -0xc)" (( "(") (binary_expression "puVar48 + -0xc" (identifier "puVar48") (+ "+") (number_literal "-0xc")) () ")")))) (= "=") (identifier "puVar20")) (; ";")) (expression_statement "*(int **)(puVar48 + -0x10) = piVar34;" (assignment_expression "*(int **)(puVar48 + -0x10) = piVar34" (pointer_expression "*(int **)(puVar48 + -0x10)" (* "*") (cast_expression "(int **)(puVar48 + -0x10)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar48 + -0x10)" (( "(") (binary_expression "puVar48 + -0x10" (identifier "puVar48") (+ "+") (number_literal "-0x10")) () ")")))) (= "=") (identifier "piVar34")) (; ";")) (expression_statement "*(uint **)(puVar48 + -0x14) = puVar31;" (assignment_expression "*(uint **)(puVar48 + -0x14) = puVar31" (pointer_expression "*(uint **)(puVar48 + -0x14)" (* "*") (cast_expression "(uint **)(puVar48 + -0x14)" (( "(") (type_descriptor "uint **" (type_identifier "uint") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar48 + -0x14)" (( "(") (binary_expression "puVar48 + -0x14" (identifier "puVar48") (+ "+") (number_literal "-0x14")) () ")")))) (= "=") (identifier "puVar31")) (; ";")) (expression_statement "*(uint **)(puVar48 + -0x18) = puVar8;" (assignment_expression "*(uint **)(puVar48 + -0x18) = puVar8" (pointer_expression "*(uint **)(puVar48 + -0x18)" (* "*") (cast_expression "(uint **)(puVar48 + -0x18)" (( "(") (type_descriptor "uint **" (type_identifier "uint") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar48 + -0x18)" (( "(") (binary_expression "puVar48 + -0x18" (identifier "puVar48") (+ "+") (number_literal "-0x18")) () ")")))) (= "=") (identifier "puVar8")) (; ";")) (expression_statement "*(uint *)(puVar48 + -0x1c) = (uint)puVar8 ^ uVar18;" (assignment_expression "*(uint *)(puVar48 + -0x1c) = (uint)puVar8 ^ uVar18" (pointer_expression "*(uint *)(puVar48 + -0x1c)" (* "*") (cast_expression "(uint *)(puVar48 + -0x1c)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar48 + -0x1c)" (( "(") (binary_expression "puVar48 + -0x1c" (identifier "puVar48") (+ "+") (number_literal "-0x1c")) () ")")))) (= "=") (binary_expression "(uint)puVar8 ^ uVar18" (cast_expression "(uint)puVar8" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "puVar8")) (^ "^") (identifier "uVar18"))) (; ";")) (if_statement "if (puVar9 == (uint *)0x0) {\n        pcVar51 = *(code **)(pcVar51 + 0x7a900);\n        (*pcVar51)();\nLAB_00022e2c:\n        piVar32 = (int *)(*pcVar51)(piVar34,puVar31);\n        pcVar44 = *(code **)(puVar48 + -0x28);\n      }\n      else {\n        puVar8 = (uint *)puVar36[1];\n        if (puVar8 == (uint *)0x0) {\n          piVar32[1] = 0;\n          return 0;\n        }\n        puVar31 = puVar8;\n        if ((int)puVar8 < 0) {\n          puVar31 = (uint *)-(int)puVar8;\n        }\n        pcVar51 = *(code **)(pcVar51 + 0x7a8e0);\n        piVar34 = piVar32;\n        puVar20 = puVar9;\n        puVar38 = puVar36;\n        if (*piVar32 < (int)puVar31) goto LAB_00022e2c;\n        piVar32 = (int *)piVar32[2];\n      }" (if "if") (parenthesized_expression "(puVar9 == (uint *)0x0)" (( "(") (binary_expression "puVar9 == (uint *)0x0" (identifier "puVar9") (== "==") (cast_expression "(uint *)0x0" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n        pcVar51 = *(code **)(pcVar51 + 0x7a900);\n        (*pcVar51)();\nLAB_00022e2c:\n        piVar32 = (int *)(*pcVar51)(piVar34,puVar31);\n        pcVar44 = *(code **)(puVar48 + -0x28);\n      }" ({ "{") (expression_statement "pcVar51 = *(code **)(pcVar51 + 0x7a900);" (assignment_expression "pcVar51 = *(code **)(pcVar51 + 0x7a900)" (identifier "pcVar51") (= "=") (pointer_expression "*(code **)(pcVar51 + 0x7a900)" (* "*") (cast_expression "(code **)(pcVar51 + 0x7a900)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(pcVar51 + 0x7a900)" (( "(") (binary_expression "pcVar51 + 0x7a900" (identifier "pcVar51") (+ "+") (number_literal "0x7a900")) () ")"))))) (; ";")) (expression_statement "(*pcVar51)();" (call_expression "(*pcVar51)()" (parenthesized_expression "(*pcVar51)" (( "(") (pointer_expression "*pcVar51" (* "*") (identifier "pcVar51")) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (labeled_statement "LAB_00022e2c:\n        piVar32 = (int *)(*pcVar51)(piVar34,puVar31);" (statement_identifier "LAB_00022e2c") (: ":") (expression_statement "piVar32 = (int *)(*pcVar51)(piVar34,puVar31);" (assignment_expression "piVar32 = (int *)(*pcVar51)(piVar34,puVar31)" (identifier "piVar32") (= "=") (cast_expression "(int *)(*pcVar51)(piVar34,puVar31)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "(*pcVar51)(piVar34,puVar31)" (parenthesized_expression "(*pcVar51)" (( "(") (pointer_expression "*pcVar51" (* "*") (identifier "pcVar51")) () ")")) (argument_list "(piVar34,puVar31)" (( "(") (identifier "piVar34") (, ",") (identifier "puVar31") () ")"))))) (; ";"))) (expression_statement "pcVar44 = *(code **)(puVar48 + -0x28);" (assignment_expression "pcVar44 = *(code **)(puVar48 + -0x28)" (identifier "pcVar44") (= "=") (pointer_expression "*(code **)(puVar48 + -0x28)" (* "*") (cast_expression "(code **)(puVar48 + -0x28)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar48 + -0x28)" (( "(") (binary_expression "puVar48 + -0x28" (identifier "puVar48") (+ "+") (number_literal "-0x28")) () ")"))))) (; ";")) (} "}")) (else_clause "else {\n        puVar8 = (uint *)puVar36[1];\n        if (puVar8 == (uint *)0x0) {\n          piVar32[1] = 0;\n          return 0;\n        }\n        puVar31 = puVar8;\n        if ((int)puVar8 < 0) {\n          puVar31 = (uint *)-(int)puVar8;\n        }\n        pcVar51 = *(code **)(pcVar51 + 0x7a8e0);\n        piVar34 = piVar32;\n        puVar20 = puVar9;\n        puVar38 = puVar36;\n        if (*piVar32 < (int)puVar31) goto LAB_00022e2c;\n        piVar32 = (int *)piVar32[2];\n      }" (else "else") (compound_statement "{\n        puVar8 = (uint *)puVar36[1];\n        if (puVar8 == (uint *)0x0) {\n          piVar32[1] = 0;\n          return 0;\n        }\n        puVar31 = puVar8;\n        if ((int)puVar8 < 0) {\n          puVar31 = (uint *)-(int)puVar8;\n        }\n        pcVar51 = *(code **)(pcVar51 + 0x7a8e0);\n        piVar34 = piVar32;\n        puVar20 = puVar9;\n        puVar38 = puVar36;\n        if (*piVar32 < (int)puVar31) goto LAB_00022e2c;\n        piVar32 = (int *)piVar32[2];\n      }" ({ "{") (expression_statement "puVar8 = (uint *)puVar36[1];" (assignment_expression "puVar8 = (uint *)puVar36[1]" (identifier "puVar8") (= "=") (cast_expression "(uint *)puVar36[1]" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "puVar36[1]" (identifier "puVar36") ([ "[") (number_literal "1") (] "]")))) (; ";")) (if_statement "if (puVar8 == (uint *)0x0) {\n          piVar32[1] = 0;\n          return 0;\n        }" (if "if") (parenthesized_expression "(puVar8 == (uint *)0x0)" (( "(") (binary_expression "puVar8 == (uint *)0x0" (identifier "puVar8") (== "==") (cast_expression "(uint *)0x0" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n          piVar32[1] = 0;\n          return 0;\n        }" ({ "{") (expression_statement "piVar32[1] = 0;" (assignment_expression "piVar32[1] = 0" (subscript_expression "piVar32[1]" (identifier "piVar32") ([ "[") (number_literal "1") (] "]")) (= "=") (number_literal "0")) (; ";")) (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (expression_statement "puVar31 = puVar8;" (assignment_expression "puVar31 = puVar8" (identifier "puVar31") (= "=") (identifier "puVar8")) (; ";")) (if_statement "if ((int)puVar8 < 0) {\n          puVar31 = (uint *)-(int)puVar8;\n        }" (if "if") (parenthesized_expression "((int)puVar8 < 0)" (( "(") (binary_expression "(int)puVar8 < 0" (cast_expression "(int)puVar8" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar8")) (< "<") (number_literal "0")) () ")")) (compound_statement "{\n          puVar31 = (uint *)-(int)puVar8;\n        }" ({ "{") (expression_statement "puVar31 = (uint *)-(int)puVar8;" (assignment_expression "puVar31 = (uint *)-(int)puVar8" (identifier "puVar31") (= "=") (cast_expression "(uint *)-(int)puVar8" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (unary_expression "-(int)puVar8" (- "-") (cast_expression "(int)puVar8" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar8"))))) (; ";")) (} "}"))) (expression_statement "pcVar51 = *(code **)(pcVar51 + 0x7a8e0);" (assignment_expression "pcVar51 = *(code **)(pcVar51 + 0x7a8e0)" (identifier "pcVar51") (= "=") (pointer_expression "*(code **)(pcVar51 + 0x7a8e0)" (* "*") (cast_expression "(code **)(pcVar51 + 0x7a8e0)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(pcVar51 + 0x7a8e0)" (( "(") (binary_expression "pcVar51 + 0x7a8e0" (identifier "pcVar51") (+ "+") (number_literal "0x7a8e0")) () ")"))))) (; ";")) (expression_statement "piVar34 = piVar32;" (assignment_expression "piVar34 = piVar32" (identifier "piVar34") (= "=") (identifier "piVar32")) (; ";")) (expression_statement "puVar20 = puVar9;" (assignment_expression "puVar20 = puVar9" (identifier "puVar20") (= "=") (identifier "puVar9")) (; ";")) (expression_statement "puVar38 = puVar36;" (assignment_expression "puVar38 = puVar36" (identifier "puVar38") (= "=") (identifier "puVar36")) (; ";")) (if_statement "if (*piVar32 < (int)puVar31) goto LAB_00022e2c;" (if "if") (parenthesized_expression "(*piVar32 < (int)puVar31)" (( "(") (binary_expression "*piVar32 < (int)puVar31" (pointer_expression "*piVar32" (* "*") (identifier "piVar32")) (< "<") (cast_expression "(int)puVar31" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar31"))) () ")")) (goto_statement "goto LAB_00022e2c;" (goto "goto") (statement_identifier "LAB_00022e2c") (; ";"))) (expression_statement "piVar32 = (int *)piVar32[2];" (assignment_expression "piVar32 = (int *)piVar32[2]" (identifier "piVar32") (= "=") (cast_expression "(int *)piVar32[2]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "piVar32[2]" (identifier "piVar32") ([ "[") (number_literal "2") (] "]")))) (; ";")) (} "}")))) (expression_statement "pcVar51 = *(code **)(pcVar44 + -0x7d98);" (assignment_expression "pcVar51 = *(code **)(pcVar44 + -0x7d98)" (identifier "pcVar51") (= "=") (pointer_expression "*(code **)(pcVar44 + -0x7d98)" (* "*") (cast_expression "(code **)(pcVar44 + -0x7d98)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(pcVar44 + -0x7d98)" (( "(") (binary_expression "pcVar44 + -0x7d98" (identifier "pcVar44") (+ "+") (number_literal "-0x7d98")) () ")"))))) (; ";")) (expression_statement "uVar18 = puVar38[2];" (assignment_expression "uVar18 = puVar38[2]" (identifier "uVar18") (= "=") (subscript_expression "puVar38[2]" (identifier "puVar38") ([ "[") (number_literal "2") (] "]"))) (; ";")) (expression_statement "*(uint **)(puVar48 + -0x30) = puVar20;" (assignment_expression "*(uint **)(puVar48 + -0x30) = puVar20" (pointer_expression "*(uint **)(puVar48 + -0x30)" (* "*") (cast_expression "(uint **)(puVar48 + -0x30)" (( "(") (type_descriptor "uint **" (type_identifier "uint") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar48 + -0x30)" (( "(") (binary_expression "puVar48 + -0x30" (identifier "puVar48") (+ "+") (number_literal "-0x30")) () ")")))) (= "=") (identifier "puVar20")) (; ";")) (expression_statement "iVar6 = (*pcVar51)(piVar32,0,uVar18,puVar31);" (assignment_expression "iVar6 = (*pcVar51)(piVar32,0,uVar18,puVar31)" (identifier "iVar6") (= "=") (call_expression "(*pcVar51)(piVar32,0,uVar18,puVar31)" (parenthesized_expression "(*pcVar51)" (( "(") (pointer_expression "*pcVar51" (* "*") (identifier "pcVar51")) () ")")) (argument_list "(piVar32,0,uVar18,puVar31)" (( "(") (identifier "piVar32") (, ",") (number_literal "0") (, ",") (identifier "uVar18") (, ",") (identifier "puVar31") () ")")))) (; ";")) (expression_statement "piVar17 = piVar32 + (int)puVar31 + -1;" (assignment_expression "piVar17 = piVar32 + (int)puVar31 + -1" (identifier "piVar17") (= "=") (binary_expression "piVar32 + (int)puVar31 + -1" (binary_expression "piVar32 + (int)puVar31" (identifier "piVar32") (+ "+") (cast_expression "(int)puVar31" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar31"))) (+ "+") (number_literal "-1"))) (; ";")) (if_statement "if (iVar6 == 0) {\n        uVar18 = (uint)(*piVar17 == 0);\n        if (-1 < (int)puVar8) {\n          iVar24 = (int)puVar31 - uVar18;\n          goto LAB_00022d9c;\n        }\n      }\n      else {\n        if (-1 < (int)puVar8) {\n          do {\n            iVar24 = *piVar32;\n            *piVar32 = iVar24 + 1;\n            piVar32 = piVar32 + 1;\n          } while (iVar24 + 1 == 0);\n          iVar6 = (int)puVar20 - iVar6;\n          iVar24 = (int)puVar31 - (uint)(*piVar17 == 0);\n          goto LAB_00022d9c;\n        }\n        uVar18 = (uint)(*piVar17 == 0);\n      }" (if "if") (parenthesized_expression "(iVar6 == 0)" (( "(") (binary_expression "iVar6 == 0" (identifier "iVar6") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n        uVar18 = (uint)(*piVar17 == 0);\n        if (-1 < (int)puVar8) {\n          iVar24 = (int)puVar31 - uVar18;\n          goto LAB_00022d9c;\n        }\n      }" ({ "{") (expression_statement "uVar18 = (uint)(*piVar17 == 0);" (assignment_expression "uVar18 = (uint)(*piVar17 == 0)" (identifier "uVar18") (= "=") (call_expression "(uint)(*piVar17 == 0)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(*piVar17 == 0)" (( "(") (binary_expression "*piVar17 == 0" (pointer_expression "*piVar17" (* "*") (identifier "piVar17")) (== "==") (number_literal "0")) () ")")))) (; ";")) (if_statement "if (-1 < (int)puVar8) {\n          iVar24 = (int)puVar31 - uVar18;\n          goto LAB_00022d9c;\n        }" (if "if") (parenthesized_expression "(-1 < (int)puVar8)" (( "(") (binary_expression "-1 < (int)puVar8" (number_literal "-1") (< "<") (cast_expression "(int)puVar8" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar8"))) () ")")) (compound_statement "{\n          iVar24 = (int)puVar31 - uVar18;\n          goto LAB_00022d9c;\n        }" ({ "{") (expression_statement "iVar24 = (int)puVar31 - uVar18;" (assignment_expression "iVar24 = (int)puVar31 - uVar18" (identifier "iVar24") (= "=") (binary_expression "(int)puVar31 - uVar18" (cast_expression "(int)puVar31" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar31")) (- "-") (identifier "uVar18"))) (; ";")) (goto_statement "goto LAB_00022d9c;" (goto "goto") (statement_identifier "LAB_00022d9c") (; ";")) (} "}"))) (} "}")) (else_clause "else {\n        if (-1 < (int)puVar8) {\n          do {\n            iVar24 = *piVar32;\n            *piVar32 = iVar24 + 1;\n            piVar32 = piVar32 + 1;\n          } while (iVar24 + 1 == 0);\n          iVar6 = (int)puVar20 - iVar6;\n          iVar24 = (int)puVar31 - (uint)(*piVar17 == 0);\n          goto LAB_00022d9c;\n        }\n        uVar18 = (uint)(*piVar17 == 0);\n      }" (else "else") (compound_statement "{\n        if (-1 < (int)puVar8) {\n          do {\n            iVar24 = *piVar32;\n            *piVar32 = iVar24 + 1;\n            piVar32 = piVar32 + 1;\n          } while (iVar24 + 1 == 0);\n          iVar6 = (int)puVar20 - iVar6;\n          iVar24 = (int)puVar31 - (uint)(*piVar17 == 0);\n          goto LAB_00022d9c;\n        }\n        uVar18 = (uint)(*piVar17 == 0);\n      }" ({ "{") (if_statement "if (-1 < (int)puVar8) {\n          do {\n            iVar24 = *piVar32;\n            *piVar32 = iVar24 + 1;\n            piVar32 = piVar32 + 1;\n          } while (iVar24 + 1 == 0);\n          iVar6 = (int)puVar20 - iVar6;\n          iVar24 = (int)puVar31 - (uint)(*piVar17 == 0);\n          goto LAB_00022d9c;\n        }" (if "if") (parenthesized_expression "(-1 < (int)puVar8)" (( "(") (binary_expression "-1 < (int)puVar8" (number_literal "-1") (< "<") (cast_expression "(int)puVar8" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar8"))) () ")")) (compound_statement "{\n          do {\n            iVar24 = *piVar32;\n            *piVar32 = iVar24 + 1;\n            piVar32 = piVar32 + 1;\n          } while (iVar24 + 1 == 0);\n          iVar6 = (int)puVar20 - iVar6;\n          iVar24 = (int)puVar31 - (uint)(*piVar17 == 0);\n          goto LAB_00022d9c;\n        }" ({ "{") (do_statement "do {\n            iVar24 = *piVar32;\n            *piVar32 = iVar24 + 1;\n            piVar32 = piVar32 + 1;\n          } while (iVar24 + 1 == 0);" (do "do") (compound_statement "{\n            iVar24 = *piVar32;\n            *piVar32 = iVar24 + 1;\n            piVar32 = piVar32 + 1;\n          }" ({ "{") (expression_statement "iVar24 = *piVar32;" (assignment_expression "iVar24 = *piVar32" (identifier "iVar24") (= "=") (pointer_expression "*piVar32" (* "*") (identifier "piVar32"))) (; ";")) (expression_statement "*piVar32 = iVar24 + 1;" (assignment_expression "*piVar32 = iVar24 + 1" (pointer_expression "*piVar32" (* "*") (identifier "piVar32")) (= "=") (binary_expression "iVar24 + 1" (identifier "iVar24") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "piVar32 = piVar32 + 1;" (assignment_expression "piVar32 = piVar32 + 1" (identifier "piVar32") (= "=") (binary_expression "piVar32 + 1" (identifier "piVar32") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(iVar24 + 1 == 0)" (( "(") (binary_expression "iVar24 + 1 == 0" (binary_expression "iVar24 + 1" (identifier "iVar24") (+ "+") (number_literal "1")) (== "==") (number_literal "0")) () ")")) (; ";")) (expression_statement "iVar6 = (int)puVar20 - iVar6;" (assignment_expression "iVar6 = (int)puVar20 - iVar6" (identifier "iVar6") (= "=") (binary_expression "(int)puVar20 - iVar6" (cast_expression "(int)puVar20" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar20")) (- "-") (identifier "iVar6"))) (; ";")) (expression_statement "iVar24 = (int)puVar31 - (uint)(*piVar17 == 0);" (assignment_expression "iVar24 = (int)puVar31 - (uint)(*piVar17 == 0)" (identifier "iVar24") (= "=") (binary_expression "(int)puVar31 - (uint)(*piVar17 == 0)" (cast_expression "(int)puVar31" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar31")) (- "-") (call_expression "(uint)(*piVar17 == 0)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(*piVar17 == 0)" (( "(") (binary_expression "*piVar17 == 0" (pointer_expression "*piVar17" (* "*") (identifier "piVar17")) (== "==") (number_literal "0")) () ")"))))) (; ";")) (goto_statement "goto LAB_00022d9c;" (goto "goto") (statement_identifier "LAB_00022d9c") (; ";")) (} "}"))) (expression_statement "uVar18 = (uint)(*piVar17 == 0);" (assignment_expression "uVar18 = (uint)(*piVar17 == 0)" (identifier "uVar18") (= "=") (call_expression "(uint)(*piVar17 == 0)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(*piVar17 == 0)" (( "(") (binary_expression "*piVar17 == 0" (pointer_expression "*piVar17" (* "*") (identifier "piVar17")) (== "==") (number_literal "0")) () ")")))) (; ";")) (} "}")))) (expression_statement "iVar24 = uVar18 - (int)puVar31;" (assignment_expression "iVar24 = uVar18 - (int)puVar31" (identifier "iVar24") (= "=") (binary_expression "uVar18 - (int)puVar31" (identifier "uVar18") (- "-") (cast_expression "(int)puVar31" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar31")))) (; ";")) (labeled_statement "LAB_00022d9c:\n      piVar34[1] = iVar24;" (statement_identifier "LAB_00022d9c") (: ":") (expression_statement "piVar34[1] = iVar24;" (assignment_expression "piVar34[1] = iVar24" (subscript_expression "piVar34[1]" (identifier "piVar34") ([ "[") (number_literal "1") (] "]")) (= "=") (identifier "iVar24")) (; ";"))) (return_statement "return iVar6;" (return "return") (identifier "iVar6") (; ";")) (} "}"))) (expression_statement "*(int *)(puVar46 + -0x44) = iVar39;" (assignment_expression "*(int *)(puVar46 + -0x44) = iVar39" (pointer_expression "*(int *)(puVar46 + -0x44)" (* "*") (cast_expression "(int *)(puVar46 + -0x44)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar46 + -0x44)" (( "(") (binary_expression "puVar46 + -0x44" (identifier "puVar46") (+ "+") (number_literal "-0x44")) () ")")))) (= "=") (identifier "iVar39")) (; ";")) (expression_statement "iVar6 = iVar39 + uVar7;" (assignment_expression "iVar6 = iVar39 + uVar7" (identifier "iVar6") (= "=") (binary_expression "iVar39 + uVar7" (identifier "iVar39") (+ "+") (identifier "uVar7"))) (; ";")) (expression_statement "uVar18 = (**(code **)(*(int *)(puVar46 + -0x34) + (uVar7 - 1) * 4))(iVar39);" (assignment_expression "uVar18 = (**(code **)(*(int *)(puVar46 + -0x34) + (uVar7 - 1) * 4))(iVar39)" (identifier "uVar18") (= "=") (call_expression "(**(code **)(*(int *)(puVar46 + -0x34) + (uVar7 - 1) * 4))(iVar39)" (parenthesized_expression "(**(code **)(*(int *)(puVar46 + -0x34) + (uVar7 - 1) * 4))" (( "(") (pointer_expression "**(code **)(*(int *)(puVar46 + -0x34) + (uVar7 - 1) * 4)" (* "*") (pointer_expression "*(code **)(*(int *)(puVar46 + -0x34) + (uVar7 - 1) * 4)" (* "*") (cast_expression "(code **)(*(int *)(puVar46 + -0x34) + (uVar7 - 1) * 4)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*(int *)(puVar46 + -0x34) + (uVar7 - 1) * 4)" (( "(") (binary_expression "*(int *)(puVar46 + -0x34) + (uVar7 - 1) * 4" (pointer_expression "*(int *)(puVar46 + -0x34)" (* "*") (cast_expression "(int *)(puVar46 + -0x34)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar46 + -0x34)" (( "(") (binary_expression "puVar46 + -0x34" (identifier "puVar46") (+ "+") (number_literal "-0x34")) () ")")))) (+ "+") (binary_expression "(uVar7 - 1) * 4" (parenthesized_expression "(uVar7 - 1)" (( "(") (binary_expression "uVar7 - 1" (identifier "uVar7") (- "-") (number_literal "1")) () ")")) (* "*") (number_literal "4"))) () ")"))))) () ")")) (argument_list "(iVar39)" (( "(") (identifier "iVar39") () ")")))) (; ";")) (expression_statement "puVar43 = *(undefined **)(puVar46 + -0x78);" (assignment_expression "puVar43 = *(undefined **)(puVar46 + -0x78)" (identifier "puVar43") (= "=") (pointer_expression "*(undefined **)(puVar46 + -0x78)" (* "*") (cast_expression "(undefined **)(puVar46 + -0x78)" (( "(") (type_descriptor "undefined **" (type_identifier "undefined") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar46 + -0x78)" (( "(") (binary_expression "puVar46 + -0x78" (identifier "puVar46") (+ "+") (number_literal "-0x78")) () ")"))))) (; ";")) (if_statement "if ((uVar18 & 0xff) == 0) {\n      uVar37 = uVar18 >> 8;\n      iVar24 = 6;\n      if ((uVar37 & 0xff) == 0) {\n        uVar37 = uVar18 >> 0x10;\n        iVar24 = 0xe;\n        if ((uVar37 & 0xff) == 0) {\n          uVar37 = uVar18 >> 0x18;\n          iVar24 = 0x1e;\n          if (uVar37 != 0) {\n            iVar24 = 0x16;\n          }\n        }\n      }\n      uVar37 = (uint)*(byte *)(*(int *)(puVar46 + -0x3c) + (-uVar37 & uVar37)) + iVar24;\n    }\n    else {\n      uVar37 = *(byte *)(*(int *)(puVar46 + -0x3c) + (-uVar18 & uVar18)) - 2;\n    }" (if "if") (parenthesized_expression "((uVar18 & 0xff) == 0)" (( "(") (binary_expression "(uVar18 & 0xff) == 0" (parenthesized_expression "(uVar18 & 0xff)" (( "(") (binary_expression "uVar18 & 0xff" (identifier "uVar18") (& "&") (number_literal "0xff")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      uVar37 = uVar18 >> 8;\n      iVar24 = 6;\n      if ((uVar37 & 0xff) == 0) {\n        uVar37 = uVar18 >> 0x10;\n        iVar24 = 0xe;\n        if ((uVar37 & 0xff) == 0) {\n          uVar37 = uVar18 >> 0x18;\n          iVar24 = 0x1e;\n          if (uVar37 != 0) {\n            iVar24 = 0x16;\n          }\n        }\n      }\n      uVar37 = (uint)*(byte *)(*(int *)(puVar46 + -0x3c) + (-uVar37 & uVar37)) + iVar24;\n    }" ({ "{") (expression_statement "uVar37 = uVar18 >> 8;" (assignment_expression "uVar37 = uVar18 >> 8" (identifier "uVar37") (= "=") (binary_expression "uVar18 >> 8" (identifier "uVar18") (>> ">>") (number_literal "8"))) (; ";")) (expression_statement "iVar24 = 6;" (assignment_expression "iVar24 = 6" (identifier "iVar24") (= "=") (number_literal "6")) (; ";")) (if_statement "if ((uVar37 & 0xff) == 0) {\n        uVar37 = uVar18 >> 0x10;\n        iVar24 = 0xe;\n        if ((uVar37 & 0xff) == 0) {\n          uVar37 = uVar18 >> 0x18;\n          iVar24 = 0x1e;\n          if (uVar37 != 0) {\n            iVar24 = 0x16;\n          }\n        }\n      }" (if "if") (parenthesized_expression "((uVar37 & 0xff) == 0)" (( "(") (binary_expression "(uVar37 & 0xff) == 0" (parenthesized_expression "(uVar37 & 0xff)" (( "(") (binary_expression "uVar37 & 0xff" (identifier "uVar37") (& "&") (number_literal "0xff")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n        uVar37 = uVar18 >> 0x10;\n        iVar24 = 0xe;\n        if ((uVar37 & 0xff) == 0) {\n          uVar37 = uVar18 >> 0x18;\n          iVar24 = 0x1e;\n          if (uVar37 != 0) {\n            iVar24 = 0x16;\n          }\n        }\n      }" ({ "{") (expression_statement "uVar37 = uVar18 >> 0x10;" (assignment_expression "uVar37 = uVar18 >> 0x10" (identifier "uVar37") (= "=") (binary_expression "uVar18 >> 0x10" (identifier "uVar18") (>> ">>") (number_literal "0x10"))) (; ";")) (expression_statement "iVar24 = 0xe;" (assignment_expression "iVar24 = 0xe" (identifier "iVar24") (= "=") (number_literal "0xe")) (; ";")) (if_statement "if ((uVar37 & 0xff) == 0) {\n          uVar37 = uVar18 >> 0x18;\n          iVar24 = 0x1e;\n          if (uVar37 != 0) {\n            iVar24 = 0x16;\n          }\n        }" (if "if") (parenthesized_expression "((uVar37 & 0xff) == 0)" (( "(") (binary_expression "(uVar37 & 0xff) == 0" (parenthesized_expression "(uVar37 & 0xff)" (( "(") (binary_expression "uVar37 & 0xff" (identifier "uVar37") (& "&") (number_literal "0xff")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n          uVar37 = uVar18 >> 0x18;\n          iVar24 = 0x1e;\n          if (uVar37 != 0) {\n            iVar24 = 0x16;\n          }\n        }" ({ "{") (expression_statement "uVar37 = uVar18 >> 0x18;" (assignment_expression "uVar37 = uVar18 >> 0x18" (identifier "uVar37") (= "=") (binary_expression "uVar18 >> 0x18" (identifier "uVar18") (>> ">>") (number_literal "0x18"))) (; ";")) (expression_statement "iVar24 = 0x1e;" (assignment_expression "iVar24 = 0x1e" (identifier "iVar24") (= "=") (number_literal "0x1e")) (; ";")) (if_statement "if (uVar37 != 0) {\n            iVar24 = 0x16;\n          }" (if "if") (parenthesized_expression "(uVar37 != 0)" (( "(") (binary_expression "uVar37 != 0" (identifier "uVar37") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n            iVar24 = 0x16;\n          }" ({ "{") (expression_statement "iVar24 = 0x16;" (assignment_expression "iVar24 = 0x16" (identifier "iVar24") (= "=") (number_literal "0x16")) (; ";")) (} "}"))) (} "}"))) (} "}"))) (expression_statement "uVar37 = (uint)*(byte *)(*(int *)(puVar46 + -0x3c) + (-uVar37 & uVar37)) + iVar24;" (assignment_expression "uVar37 = (uint)*(byte *)(*(int *)(puVar46 + -0x3c) + (-uVar37 & uVar37)) + iVar24" (identifier "uVar37") (= "=") (binary_expression "(uint)*(byte *)(*(int *)(puVar46 + -0x3c) + (-uVar37 & uVar37)) + iVar24" (binary_expression "(uint)*(byte *)(*(int *)(puVar46 + -0x3c) + (-uVar37 & uVar37))" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (cast_expression "(byte *)(*(int *)(puVar46 + -0x3c) + (-uVar37 & uVar37))" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(puVar46 + -0x3c) + (-uVar37 & uVar37))" (( "(") (binary_expression "*(int *)(puVar46 + -0x3c) + (-uVar37 & uVar37)" (pointer_expression "*(int *)(puVar46 + -0x3c)" (* "*") (cast_expression "(int *)(puVar46 + -0x3c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar46 + -0x3c)" (( "(") (binary_expression "puVar46 + -0x3c" (identifier "puVar46") (+ "+") (number_literal "-0x3c")) () ")")))) (+ "+") (parenthesized_expression "(-uVar37 & uVar37)" (( "(") (binary_expression "-uVar37 & uVar37" (unary_expression "-uVar37" (- "-") (identifier "uVar37")) (& "&") (identifier "uVar37")) () ")"))) () ")")))) (+ "+") (identifier "iVar24"))) (; ";")) (} "}")) (else_clause "else {\n      uVar37 = *(byte *)(*(int *)(puVar46 + -0x3c) + (-uVar18 & uVar18)) - 2;\n    }" (else "else") (compound_statement "{\n      uVar37 = *(byte *)(*(int *)(puVar46 + -0x3c) + (-uVar18 & uVar18)) - 2;\n    }" ({ "{") (expression_statement "uVar37 = *(byte *)(*(int *)(puVar46 + -0x3c) + (-uVar18 & uVar18)) - 2;" (assignment_expression "uVar37 = *(byte *)(*(int *)(puVar46 + -0x3c) + (-uVar18 & uVar18)) - 2" (identifier "uVar37") (= "=") (binary_expression "*(byte *)(*(int *)(puVar46 + -0x3c) + (-uVar18 & uVar18)) - 2" (pointer_expression "*(byte *)(*(int *)(puVar46 + -0x3c) + (-uVar18 & uVar18))" (* "*") (cast_expression "(byte *)(*(int *)(puVar46 + -0x3c) + (-uVar18 & uVar18))" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(puVar46 + -0x3c) + (-uVar18 & uVar18))" (( "(") (binary_expression "*(int *)(puVar46 + -0x3c) + (-uVar18 & uVar18)" (pointer_expression "*(int *)(puVar46 + -0x3c)" (* "*") (cast_expression "(int *)(puVar46 + -0x3c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar46 + -0x3c)" (( "(") (binary_expression "puVar46 + -0x3c" (identifier "puVar46") (+ "+") (number_literal "-0x3c")) () ")")))) (+ "+") (parenthesized_expression "(-uVar18 & uVar18)" (( "(") (binary_expression "-uVar18 & uVar18" (unary_expression "-uVar18" (- "-") (identifier "uVar18")) (& "&") (identifier "uVar18")) () ")"))) () ")")))) (- "-") (number_literal "2"))) (; ";")) (} "}")))) (expression_statement "iVar39 = *(int *)(puVar46 + -0x38);" (assignment_expression "iVar39 = *(int *)(puVar46 + -0x38)" (identifier "iVar39") (= "=") (pointer_expression "*(int *)(puVar46 + -0x38)" (* "*") (cast_expression "(int *)(puVar46 + -0x38)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar46 + -0x38)" (( "(") (binary_expression "puVar46 + -0x38" (identifier "puVar46") (+ "+") (number_literal "-0x38")) () ")"))))) (; ";")) (expression_statement "*puVar36 = uVar18 >> (uVar37 & 0x1f);" (assignment_expression "*puVar36 = uVar18 >> (uVar37 & 0x1f)" (pointer_expression "*puVar36" (* "*") (identifier "puVar36")) (= "=") (binary_expression "uVar18 >> (uVar37 & 0x1f)" (identifier "uVar18") (>> ">>") (parenthesized_expression "(uVar37 & 0x1f)" (( "(") (binary_expression "uVar37 & 0x1f" (identifier "uVar37") (& "&") (number_literal "0x1f")) () ")")))) (; ";")) (expression_statement "iVar24 = *(int *)(puVar46 + -0x60);" (assignment_expression "iVar24 = *(int *)(puVar46 + -0x60)" (identifier "iVar24") (= "=") (pointer_expression "*(int *)(puVar46 + -0x60)" (* "*") (cast_expression "(int *)(puVar46 + -0x60)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar46 + -0x60)" (( "(") (binary_expression "puVar46 + -0x60" (identifier "puVar46") (+ "+") (number_literal "-0x60")) () ")"))))) (; ";")) (expression_statement "*(uint *)(puVar46 + -0x40) =\n         *(int *)(puVar46 + -0x40) + *(byte *)(iVar39 + (uVar7 - 1)) + uVar37;" (assignment_expression "*(uint *)(puVar46 + -0x40) =\n         *(int *)(puVar46 + -0x40) + *(byte *)(iVar39 + (uVar7 - 1)) + uVar37" (pointer_expression "*(uint *)(puVar46 + -0x40)" (* "*") (cast_expression "(uint *)(puVar46 + -0x40)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar46 + -0x40)" (( "(") (binary_expression "puVar46 + -0x40" (identifier "puVar46") (+ "+") (number_literal "-0x40")) () ")")))) (= "=") (binary_expression "*(int *)(puVar46 + -0x40) + *(byte *)(iVar39 + (uVar7 - 1)) + uVar37" (binary_expression "*(int *)(puVar46 + -0x40) + *(byte *)(iVar39 + (uVar7 - 1))" (pointer_expression "*(int *)(puVar46 + -0x40)" (* "*") (cast_expression "(int *)(puVar46 + -0x40)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar46 + -0x40)" (( "(") (binary_expression "puVar46 + -0x40" (identifier "puVar46") (+ "+") (number_literal "-0x40")) () ")")))) (+ "+") (pointer_expression "*(byte *)(iVar39 + (uVar7 - 1))" (* "*") (cast_expression "(byte *)(iVar39 + (uVar7 - 1))" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar39 + (uVar7 - 1))" (( "(") (binary_expression "iVar39 + (uVar7 - 1)" (identifier "iVar39") (+ "+") (parenthesized_expression "(uVar7 - 1)" (( "(") (binary_expression "uVar7 - 1" (identifier "uVar7") (- "-") (number_literal "1")) () ")"))) () ")"))))) (+ "+") (identifier "uVar37"))) (; ";")) (if_statement "if ((uint)(iVar24 - iVar6) <= uVar7) {\n      uVar7 = iVar24 - iVar6;\n    }" (if "if") (parenthesized_expression "((uint)(iVar24 - iVar6) <= uVar7)" (( "(") (binary_expression "(uint)(iVar24 - iVar6) <= uVar7" (call_expression "(uint)(iVar24 - iVar6)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(iVar24 - iVar6)" (( "(") (binary_expression "iVar24 - iVar6" (identifier "iVar24") (- "-") (identifier "iVar6")) () ")"))) (<= "<=") (identifier "uVar7")) () ")")) (compound_statement "{\n      uVar7 = iVar24 - iVar6;\n    }" ({ "{") (expression_statement "uVar7 = iVar24 - iVar6;" (assignment_expression "uVar7 = iVar24 - iVar6" (identifier "uVar7") (= "=") (binary_expression "iVar24 - iVar6" (identifier "iVar24") (- "-") (identifier "iVar6"))) (; ";")) (} "}"))) (expression_statement "iVar39 = iVar6;" (assignment_expression "iVar39 = iVar6" (identifier "iVar39") (= "=") (identifier "iVar6")) (; ";")) (if_statement "if (uVar7 != 0) goto LAB_00022234;" (if "if") (parenthesized_expression "(uVar7 != 0)" (( "(") (binary_expression "uVar7 != 0" (identifier "uVar7") (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_00022234;" (goto "goto") (statement_identifier "LAB_00022234") (; ";"))) (labeled_statement "LAB_00022534:\n    puVar31 = (uint *)0x1;" (statement_identifier "LAB_00022534") (: ":") (expression_statement "puVar31 = (uint *)0x1;" (assignment_expression "puVar31 = (uint *)0x1" (identifier "puVar31") (= "=") (cast_expression "(uint *)0x1" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x1"))) (; ";"))) (expression_statement "*(uint **)(puVar46 + -0x4c) = puVar36;" (assignment_expression "*(uint **)(puVar46 + -0x4c) = puVar36" (pointer_expression "*(uint **)(puVar46 + -0x4c)" (* "*") (cast_expression "(uint **)(puVar46 + -0x4c)" (( "(") (type_descriptor "uint **" (type_identifier "uint") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar46 + -0x4c)" (( "(") (binary_expression "puVar46 + -0x4c" (identifier "puVar46") (+ "+") (number_literal "-0x4c")) () ")")))) (= "=") (identifier "puVar36")) (; ";")) (} "}")) (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (; ";"))) (} "}")))
(translation_unit (function_definition type: (primitive_type) declarator: (function_declarator declarator: (identifier) parameters: (parameter_list (parameter_declaration type: (primitive_type) declarator: (identifier)) (parameter_declaration type: (type_identifier) declarator: (identifier)) (parameter_declaration type: (type_identifier) declarator: (identifier)))) body: (compound_statement (declaration type: (type_identifier) 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: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (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: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) 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: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) 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: (type_identifier) 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: (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: (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: (identifier)) (declaration type: (type_identifier) declarator: (array_declarator declarator: (identifier) size: (number_literal))) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (number_literal))) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (unary_expression argument: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (pointer_expression argument: (identifier)) right: (identifier))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list (pointer_expression argument: (identifier)))))))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list (identifier) (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (do_statement body: (compound_statement (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: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (if_statement condition: (parenthesized_expression (binary_expression left: (binary_expression left: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (identifier)) right: (number_literal))) right: (number_literal)) right: (number_literal))) consequence: (compound_statement (do_statement body: (compound_statement (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: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (unary_expression argument: (parenthesized_expression (binary_expression left: (binary_expression left: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) right: (number_literal)) right: (number_literal)) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (identifier)) right: (number_literal))))))) alternative: (else_clause (compound_statement (for_statement initializer: (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))) condition: (binary_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)) update: (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))) body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list (pointer_expression argument: (identifier)) (binary_expression left: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (identifier)) right: (number_literal))) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (number_literal) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (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: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (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: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (number_literal))) right: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (number_literal))) right: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (number_literal))) right: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (identifier)) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (identifier)) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (identifier)) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (number_literal) right: (parenthesized_expression (binary_expression left: (binary_expression left: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (identifier)) right: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (identifier)) right: (number_literal))) right: (parenthesized_expression (binary_expression left: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (identifier)) right: (number_literal)))))) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier)))) (if_statement condition: (parenthesized_expression (identifier)) consequence: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (identifier))))) (if_statement condition: (parenthesized_expression (identifier)) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (number_literal) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) condition: (parenthesized_expression (identifier))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal)))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal)))))))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (parenthesized_expression (binary_expression left: (binary_expression left: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (number_literal) right: (parenthesized_expression (binary_expression left: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (parenthesized_expression (binary_expression left: (number_literal) right: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (cast_expression type: (type_descriptor type: (type_identifier)) value: (subscript_expression argument: (identifier) index: (binary_expression left: (identifier) right: (identifier)))))))))) right: (number_literal)) right: (number_literal))))) right: (parenthesized_expression (binary_expression left: (number_literal) right: (parenthesized_expression (binary_expression left: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (parenthesized_expression (binary_expression left: (number_literal) right: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (cast_expression type: (type_descriptor type: (type_identifier)) value: (subscript_expression argument: (identifier) index: (binary_expression left: (identifier) right: (identifier)))))))))) right: (number_literal)) right: (number_literal))))))) right: (number_literal)) right: (number_literal))) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_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: (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: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal)) right: (binary_expression left: (identifier) right: (number_literal))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (identifier)) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (do_statement body: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (number_literal)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (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: (binary_expression left: (identifier) right: (identifier)) right: (binary_expression left: (binary_expression left: (identifier) right: (identifier)) right: (identifier))))) (if_statement condition: (parenthesized_expression (identifier)) consequence: (compound_statement (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)) value: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (identifier)))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier)))) condition: (parenthesized_expression (identifier))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (number_literal) right: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (number_literal))) right: (number_literal)))) (do_statement body: (compound_statement (while_statement condition: (parenthesized_expression (true)) body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_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: (binary_expression left: (identifier) right: (number_literal)))))))) right: (number_literal))) consequence: (break_statement)) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (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: (identifier))) consequence: (goto_statement label: (statement_identifier))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal)) right: (binary_expression left: (identifier) right: (number_literal))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (number_literal)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (number_literal)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (identifier)) right: (binary_expression left: (identifier) right: (identifier)))) consequence: (goto_statement label: (statement_identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (identifier)) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (goto_statement label: (statement_identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier)))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (number_literal))) right: (number_literal)) 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: (identifier) right: (binary_expression left: (number_literal) right: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) (do_statement body: (compound_statement (while_statement condition: (parenthesized_expression (true)) body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_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: (binary_expression left: (identifier) right: (number_literal)))))))) right: (number_literal))) consequence: (break_statement)) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (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: (identifier))) consequence: (goto_statement label: (statement_identifier))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal)) right: (binary_expression left: (identifier) right: (number_literal))))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (identifier)) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (goto_statement label: (statement_identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier)))) (labeled_statement label: (statement_identifier) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (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)))))) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (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: (subscript_expression argument: (identifier) index: (identifier)) right: (identifier))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (return_statement (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (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: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (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: (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: (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: (identifier) right: (binary_expression left: (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))) 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 declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (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: (number_literal))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (pointer_expression argument: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) 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))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (number_literal) 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: (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))))))) (goto_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: (binary_expression left: (identifier) right: (identifier)) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (identifier)) right: (number_literal)))))) (labeled_statement label: (statement_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: (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: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (pointer_expression argument: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) condition: (parenthesized_expression (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: (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: (number_literal))) (do_statement body: (compound_statement (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: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (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))))))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (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)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (parenthesized_expression (binary_expression left: (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: (binary_expression left: (parenthesized_expression (identifier)) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (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: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (number_literal))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (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: (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: (number_literal))))) 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: (number_literal)))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (number_literal))) (if_statement condition: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) (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: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (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))) (do_statement body: (compound_statement (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: (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: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal)))))))) arguments: (argument_list (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))))))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (parenthesized_expression (identifier)) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (parenthesized_expression (binary_expression left: (unary_expression argument: (identifier)) right: (identifier))))))) right: (identifier))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (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: (parenthesized_expression (binary_expression left: (unary_expression argument: (identifier)) right: (identifier))))))) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_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: (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) (binary_expression left: (identifier) right: (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: (identifier) 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: (identifier)))) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (identifier) right: (number_literal))))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (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 declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (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: (cast_expression type: (type_descriptor type: (primitive_type)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (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))))))))))) (goto_statement label: (statement_identifier)))) (expression_statement (assignment_expression left: (identifier) right: (identifier)))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (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 declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (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)))) (labeled_statement label: (statement_identifier) (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_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: (primitive_type) 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: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator 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: (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: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) 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: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal)))))))) arguments: (argument_list (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))))))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (parenthesized_expression (identifier)) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (parenthesized_expression (binary_expression left: (unary_expression argument: (identifier)) right: (identifier))))))) right: (identifier))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (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: (parenthesized_expression (binary_expression left: (unary_expression argument: (identifier)) right: (identifier))))))) 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: (binary_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: (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)) 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) (binary_expression left: (identifier) right: (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: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (identifier) right: (number_literal))))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier)))) condition: (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: (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 declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (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: (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: (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: (binary_expression left: (parenthesized_expression (identifier)) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal))))))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (binary_expression left: (subscript_expression argument: (identifier) index: (cast_expression type: (type_descriptor type: (primitive_type)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (identifier))))) right: (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))))))) right: (number_literal))) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier))))))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (binary_expression left: (binary_expression left: (identifier) right: (identifier)) right: (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (identifier))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (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: (binary_expression left: (binary_expression left: (identifier) right: (identifier)) right: (identifier)) right: (binary_expression left: (identifier) right: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (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))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (subscript_expression argument: (identifier) index: (cast_expression type: (type_descriptor type: (primitive_type)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))))) right: (number_literal))))))))) (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: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))) 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: (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 (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))) alternative: (else_clause (compound_statement (expression_statement (assignment_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: (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))))) (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: (subscript_expression argument: (identifier) index: (cast_expression type: (type_descriptor type: (primitive_type)) value: (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: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (parenthesized_expression (binary_expression left: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (identifier) right: (number_literal)))) right: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (subscript_expression argument: (identifier) index: (cast_expression type: (type_descriptor type: (primitive_type)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal))))))) 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))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))) consequence: (goto_statement label: (statement_identifier))) (labeled_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: (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: (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))))) 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: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (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: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (do_statement body: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (pointer_expression argument: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (identifier)))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) 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: (identifier) right: (number_literal))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (compound_statement (expression_statement (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: (primitive_type) 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: (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)))))))) consequence: (compound_statement (return_statement (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (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: (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: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (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 declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (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)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier))))) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier))))))))) (expression_statement (assignment_expression left: (identifier) right: (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: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (compound_statement (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: (type_identifier) declarator: (abstract_pointer_declarator)) value: (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: (subscript_expression argument: (identifier) index: (number_literal)))) right: (identifier))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) alternative: (else_clause (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: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (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: (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: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (number_literal)))))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (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: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (identifier))) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (binary_expression left: (binary_expression left: (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: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal)) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) right: (number_literal))))) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (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: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))))))) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (binary_expression left: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal)) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) right: (number_literal)))))) right: (parenthesized_expression (binary_expression left: (binary_expression left: (parenthesized_expression (binary_expression left: (binary_expression left: (parenthesized_expression (identifier)) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))))) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier))))) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier))) right: (number_literal)))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) alternative: (else_clause (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (pointer_expression argument: (identifier)))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator 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: (number_literal))))) alternative: (else_clause (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (pointer_expression argument: (identifier)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (identifier)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (subscript_expression argument: (identifier) index: (number_literal))))) (if_statement condition: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (pointer_expression argument: (identifier))))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (subscript_expression argument: (identifier) index: (number_literal)))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (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) (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))))) (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: (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: (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) (binary_expression left: (binary_expression left: (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: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))) right: (number_literal))) right: (number_literal)) right: (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: (identifier) right: (number_literal))))))) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal)) right: (identifier)))))) right: (parenthesized_expression (binary_expression left: (binary_expression left: (parenthesized_expression (binary_expression left: (binary_expression left: (parenthesized_expression (identifier)) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))) right: (number_literal))))) right: (binary_expression left: (parenthesized_expression (identifier)) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))) right: (number_literal))))))) right: (binary_expression left: (parenthesized_expression (identifier)) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (parenthesized_expression (binary_expression left: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier))))) right: (number_literal)))) right: (number_literal)))))) right: (number_literal)))))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (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: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier))) right: (identifier)))) alternative: (else_clause (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: (number_literal))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (binary_expression left: (identifier) right: (number_literal)) (identifier) (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: (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) (binary_expression left: (identifier) right: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (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: (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 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: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (binary_expression left: (parenthesized_expression (identifier)) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) right: (number_literal))))) right: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (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: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (binary_expression left: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal)) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) 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: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (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))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (cast_expression type: (type_descriptor type: (primitive_type)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))))) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier))))) (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal)))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (identifier)))) alternative: (else_clause (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) right: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (number_literal)))))))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator 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: (number_literal))))) alternative: (else_clause (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator 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: (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: (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: (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: (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 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: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (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: (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: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (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: (unary_expression argument: (identifier)))) (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: (binary_expression left: (identifier) right: (identifier)) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (identifier) right: (identifier)) right: (number_literal))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (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: (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: (identifier) right: (number_literal))) consequence: (goto_statement label: (statement_identifier))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (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)) (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: (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 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: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (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))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (identifier)))) right: (number_literal))) 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: (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 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: (identifier) right: (number_literal))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (goto_statement label: (statement_identifier)))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (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: (identifier) right: (number_literal))))))) arguments: (argument_list (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: (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: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (labeled_statement label: (statement_identifier) (expression_statement (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: (primitive_type) 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)) 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 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: (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: (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) 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: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (identifier))) arguments: (argument_list))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (call_expression function: (parenthesized_expression (pointer_expression argument: (identifier))) arguments: (argument_list (identifier) (identifier))))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (subscript_expression argument: (identifier) index: (number_literal))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (compound_statement (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (return_statement (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (unary_expression argument: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (subscript_expression argument: (identifier) index: (number_literal)))))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (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 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) (number_literal) (identifier) (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier))) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (number_literal) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (identifier)))) (goto_statement label: (statement_identifier))))) alternative: (else_clause (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (number_literal) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))) consequence: (compound_statement (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) condition: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal))))))) (goto_statement label: (statement_identifier)))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal))))))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier))))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier)))) (return_statement (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: (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: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal)))))))) arguments: (argument_list (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))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))))))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (parenthesized_expression (identifier)) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (parenthesized_expression (binary_expression left: (unary_expression argument: (identifier)) right: (identifier))))))) right: (identifier))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (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: (parenthesized_expression (binary_expression left: (unary_expression argument: (identifier)) right: (identifier))))))) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (binary_expression left: (identifier) right: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (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: (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))) right: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (identifier) right: (identifier)))) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier)))))) (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: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (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)))) condition: (parenthesized_expression (true)))))))

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

{
  uint *puVar1;
  byte bVar2;
  bool bVar3;
  bool bVar4;
  undefined *puVar5;
  int iVar6;
  uint uVar7;
  uint *puVar8;
  uint *puVar9;
  undefined4 uVar10;
  uint uVar11;
  uint uVar12;
  undefined1 *puVar13;
  undefined *puVar14;
  undefined4 *puVar15;
  uint *puVar16;
  int *piVar17;
  uint uVar18;
  undefined4 *puVar19;
  uint *puVar20;
  uint uVar21;
  uint *puVar22;
  uint uVar23;
  int iVar24;
  uint uVar25;
  uint uVar26;
  uint uVar27;
  uint uVar28;
  int iVar29;
  uint *puVar30;
  uint *puVar31;
  int *piVar32;
  int iVar33;
  int *piVar34;
  uint uVar35;
  uint *puVar36;
  uint uVar37;
  uint *puVar38;
  int iVar39;
  uint uVar40;
  int iVar41;
  uint uVar42;
  undefined *puVar43;
  code *pcVar44;
  undefined1 *puVar45;
  undefined1 *puVar46;
  undefined1 *puVar47;
  undefined1 *puVar48;
  undefined1 *puVar49;
  undefined1 *puVar50;
  code *pcVar51;
  code *pcVar52;
  uint uVar53;
  uint uVar54;
  undefined1 auStack_48 [16];
  int local_30;
  int local_2c;
  
  puVar5 = PTR___stack_chk_guard_0009d540;
  puVar45 = auStack_48;
  uVar37 = param_2 - 5 | 1;
  local_30 = 0;
  local_2c = *(int *)PTR___stack_chk_guard_0009d540;
  uVar18 = (uVar37 / 0x60 + 1) * 4;
  if (uVar18 < 0x7f01) {
    iVar6 = -(uVar18 + 7 & 0xfffffff8);
    puVar45 = auStack_48 + iVar6;
    puVar13 = &stack0xffffffc8 + iVar6;
  }
  else {
    puVar13 = (undefined1 *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&local_30);
  }
  iVar6 = (*(code *)PTR___gmp_primesieve_0009d144)(puVar13,param_2);
  uVar7 = iVar6 + 1;
  puVar8 = (uint *)(PTR___gmp_limbroots_table_0009d3d4 + 0x1c);
  uVar18 = 8;
  do {
    uVar23 = uVar18;
    uVar11 = *puVar8;
    puVar8 = puVar8 + -1;
    uVar18 = uVar23 - 1;
  } while (uVar11 < param_2);
  if (uVar23 == 0) {
    trap(7);
  }
  puVar8 = (uint *)(PTR___gmp_limbroots_table_0009d3d4 + 0x1c);
  uVar18 = 8;
  if ((uVar7 / uVar23 + 1) * 4 < 0x7f01) {
    do {
      uVar23 = uVar18;
      uVar11 = *puVar8;
      puVar8 = puVar8 + -1;
      uVar18 = uVar23 - 1;
    } while (uVar11 < param_2);
    if (uVar23 == 0) {
      trap(7);
    }
    iVar6 = -((uVar7 / uVar23) * 4 + 0xb & 0xfffffff8);
    puVar46 = puVar45 + iVar6;
    puVar8 = (uint *)(puVar45 + iVar6 + 0x10);
  }
  else {
    for (puVar14 = PTR___gmp_limbroots_table_0009d3d4 + 0x18; *(uint *)(puVar14 + 4) < param_2;
        puVar14 = puVar14 + -4) {
      uVar18 = uVar18 - 1;
    }
    if (uVar18 == 0) {
      trap(7);
    }
    puVar8 = (uint *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)
                               (&local_30,(uVar7 / uVar18 + 1) * 4);
    puVar46 = puVar45;
  }
  uVar18 = param_2 - param_3;
  if (param_2 == 0) {
    trap(7);
  }
  uVar53 = 0xffffffff / param_2;
  uVar40 = param_2 >> 1;
  uVar11 = uVar18 - (uVar18 >> 1 & 0x55555555);
  uVar23 = param_2 - (uVar40 & 0x55555555);
  uVar7 = param_3 - (param_3 >> 1 & 0x55555555);
  uVar26 = (uVar11 >> 2 & 0x33333333) + (uVar11 & 0x33333333);
  uVar23 = (uVar23 >> 2 & 0x33333333) + (uVar23 & 0x33333333);
  uVar11 = (uVar7 >> 2 & 0x33333333) + (uVar7 & 0x33333333);
  uVar7 = (uVar26 >> 4) + uVar26 & 0xf0f0f0f;
  uVar23 = (uVar23 >> 4) + uVar23 & 0xf0f0f0f;
  uVar7 = (uVar7 >> 8) + uVar7;
  uVar11 = (uVar11 >> 4) + uVar11 & 0xf0f0f0f;
  uVar23 = (uVar23 >> 8) + uVar23;
  uVar11 = (uVar11 >> 8) + uVar11;
  uVar7 = 1 << ((uVar11 >> 0x10) + uVar11 +
                (((uVar7 >> 0x10) + uVar7 & 0xff) - ((uVar23 >> 0x10) + uVar23 & 0xff)) & 0x1f);
  bVar3 = uVar53 < uVar7;
  if (bVar3) {
    *puVar8 = uVar7;
    uVar7 = 1;
  }
  uVar11 = 0;
  uVar23 = param_2;
  uVar26 = param_3;
  do {
    bVar4 = uVar23 % 3 < uVar26 % 3 + uVar11;
    if (bVar4) {
      uVar7 = uVar7 * 3;
    }
    uVar11 = (uint)bVar4;
    bVar4 = 8 < uVar23;
    uVar23 = uVar23 / 3;
    uVar26 = uVar26 / 3;
  } while (bVar4);
  uVar11 = param_2 - 1;
  if (uVar11 < 0x10000) {
    iVar6 = 0x18;
    if (uVar11 < 0x100) {
      iVar6 = 0x20;
    }
    iVar24 = 9;
    if (uVar11 < 0x100) {
      iVar24 = 1;
    }
  }
  else {
    iVar6 = 8;
    if (uVar11 < 0x1000000) {
      iVar6 = 0x10;
    }
    iVar24 = 0x19;
    if (uVar11 < 0x1000000) {
      iVar24 = 0x11;
    }
  }
  iVar29 = 0;
  uVar28 = 1;
  uVar42 = (((1 << ((int)(0x1f - (iVar6 - (uint)(byte)PTR___gmpn_clz_tab_0009d18c[uVar11 >> iVar24])
                         ) >> 1 & 0x1fU)) +
            (1 << ((int)(0x1e - (iVar6 - (uint)(byte)PTR___gmpn_clz_tab_0009d18c[uVar11 >> iVar24]))
                   >> 1 & 0x1fU))) - 5U | 1) / 3;
  uVar26 = uVar42 + 1;
  uVar11 = (uint)bVar3;
  uVar23 = 0;
  do {
    uVar35 = uVar23 + 1;
    uVar21 = uVar11;
    if ((uVar28 & *(uint *)(puVar13 + iVar29 * 4)) == 0) {
      uVar12 = (uVar35 & 1) + 1 + uVar35 * 3;
      if (uVar53 < uVar7) {
        uVar21 = uVar11 + 1;
        puVar8[uVar11] = uVar7;
        uVar7 = 1;
      }
      uVar27 = 0;
      uVar11 = param_3;
      uVar25 = param_2;
      do {
        if (uVar12 == 0) {
          trap(7);
        }
        if (uVar12 == 0) {
          trap(7);
        }
        uVar54 = uVar25 / uVar12;
        bVar3 = uVar25 % uVar12 < uVar11 % uVar12 + uVar27;
        if (bVar3) {
          uVar7 = uVar7 * uVar12;
        }
        uVar27 = (uint)bVar3;
        uVar11 = uVar11 / uVar12;
        uVar25 = uVar54;
      } while (uVar12 <= uVar54);
    }
    uVar28 = uVar28 * 2 - ((int)uVar28 >> 0x1f);
    bVar3 = uVar23 != uVar42;
    iVar29 = iVar29 + (uVar28 & 1);
    uVar11 = uVar21;
    uVar23 = uVar35;
  } while (bVar3);
  uVar23 = uVar26 >> 5;
  uVar11 = 1 << (uVar26 & 0x1f);
  uVar28 = (uVar40 - 5 | 1) / 3;
  do {
    while( true ) {
      uVar26 = uVar26 + 1;
      uVar42 = uVar21;
      if ((uVar11 & *(uint *)(puVar13 + uVar23 * 4)) == 0) break;
LAB_00021e80:
      uVar11 = uVar11 * 2 - ((int)uVar11 >> 0x1f);
      uVar23 = uVar23 + (uVar11 & 1);
      uVar21 = uVar42;
      if (uVar28 < uVar26) goto LAB_00021f04;
    }
    uVar12 = (uVar26 & 1) + 1 + uVar26 * 3;
    if (uVar12 == 0) {
      trap(7);
    }
    if (uVar12 == 0) {
      trap(7);
    }
    if (param_3 % uVar12 <= param_2 % uVar12) goto LAB_00021e80;
    if (uVar53 << 1 < uVar7) {
      uVar42 = uVar21 + 1;
      puVar8[uVar21] = uVar7;
      uVar7 = uVar12;
      goto LAB_00021e80;
    }
    uVar11 = uVar11 * 2 - ((int)uVar11 >> 0x1f);
    uVar7 = uVar7 * uVar12;
    uVar23 = uVar23 + (uVar11 & 1);
  } while (uVar26 <= uVar28);
LAB_00021f04:
  uVar18 = (uVar18 - 5 | 1) / 3 + 1;
  uVar23 = uVar18 >> 5;
  uVar37 = uVar37 / 3;
  uVar11 = 1 << (uVar18 & 0x1f);
  do {
    while( true ) {
      uVar18 = uVar18 + 1;
      uVar26 = uVar42;
      if ((uVar11 & *(uint *)(puVar13 + uVar23 * 4)) == 0) break;
LAB_00021f58:
      uVar11 = uVar11 * 2 - ((int)uVar11 >> 0x1f);
      uVar23 = uVar23 + (uVar11 & 1);
      uVar42 = uVar26;
      if (uVar37 < uVar18) goto LAB_00021fb8;
    }
    uVar28 = (uVar18 & 1) + 1 + uVar18 * 3;
    if ((uVar53 & 0x7fffffff) < uVar7) {
      uVar26 = uVar42 + 1;
      puVar8[uVar42] = uVar7;
      uVar7 = uVar28;
      goto LAB_00021f58;
    }
    uVar11 = uVar11 * 2 - ((int)uVar11 >> 0x1f);
    uVar7 = uVar7 * uVar28;
    uVar23 = uVar23 + (uVar11 & 1);
  } while (uVar18 <= uVar37);
LAB_00021fb8:
  if (uVar26 == 0) {
    **(uint **)(param_1 + 8) = uVar7;
    *(undefined4 *)(param_1 + 4) = 1;
    uVar18 = 0;
    iVar6 = local_30;
  }
  else {
    uVar18 = uVar26 + 1;
    puVar8[uVar26] = uVar7;
    (*(code *)PTR___gmpz_prodlimbs_0009d284)(param_1);
    iVar6 = local_30;
  }
  local_30 = iVar6;
  if (iVar6 != 0) {
    (*(code *)PTR___gmp_tmp_reentrant_free_0009d618)();
  }
  iVar24 = *(int *)puVar5;
  if (local_2c == iVar24) {
    return iVar24;
  }
  pcVar51 = FUN_0002209c;
  puVar14 = PTR___stack_chk_fail_0009d4d0;
  (*(code *)PTR___stack_chk_fail_0009d4d0)();
  puVar43 = puVar14 + 0x82fa4;
  puVar47 = puVar46 + -0x90;
  puVar50 = puVar46 + -0x90;
  puVar49 = puVar46 + -0x90;
  *(int *)(puVar46 + -0x24) = param_1;
  *(undefined1 **)(puVar46 + -8) = auStack_48;
  puVar19 = *(undefined4 **)(puVar14 + 0x7b4a4);
  *(code **)(puVar46 + -4) = pcVar51;
  *(int *)(puVar46 + -0x6c) = iVar6;
  *(uint *)(puVar46 + -0xc) = uVar40;
  *(uint *)(puVar46 + -0x10) = param_3;
  *(uint *)(puVar46 + -0x14) = uVar37;
  uVar37 = (((uint)puVar8 >> 5) + 1) * 3;
  *(uint *)(puVar46 + -0x18) = uVar35;
  *(undefined1 **)(puVar46 + -0x1c) = puVar13;
  *(uint *)(puVar46 + -0x20) = param_2;
  *(undefined **)(puVar46 + -0x28) = puVar5;
  *(undefined **)(puVar46 + -0x78) = puVar43;
  *(undefined4 **)(puVar46 + -0x70) = puVar19;
  *(undefined4 *)(puVar46 + -0x30) = 0;
  *(undefined4 *)(puVar46 + -0x2c) = *puVar19;
  if (uVar37 < 0x2a) {
    uVar37 = 0x27;
    if (uVar18 < 0x28) {
      uVar37 = uVar18;
    }
    uVar37 = (uVar37 + 1) * 4;
  }
  else {
    uVar37 = ((int)uVar37 >> 1) + 0x13;
    if (uVar18 < uVar37) {
      uVar37 = uVar18;
    }
    uVar37 = (uVar37 + 1) * 4;
    pcVar51 = *(code **)(puVar14 + 0x7b254);
    if (0x7f00 < uVar37) {
      *(uint *)(puVar46 + 8) = uVar18;
      puVar38 = (uint *)(*pcVar51)(puVar46 + -0x30);
      puVar43 = *(undefined **)(puVar46 + -0x78);
      uVar18 = *(uint *)(puVar46 + 8);
      goto LAB_0002214c;
    }
  }
  iVar6 = -(uVar37 + 7 & 0xfffffff8);
  puVar47 = puVar46 + iVar6 + -0x90;
  puVar38 = (uint *)(puVar46 + iVar6 + -0x78);
LAB_0002214c:
  iVar24 = *(int *)(puVar43 + -0x7c6c);
  puVar36 = (uint *)(puVar47 + -0x40);
  puVar31 = (uint *)(iVar24 + 0x1c);
  iVar6 = 8;
  do {
    iVar29 = iVar6;
    puVar9 = (uint *)*puVar31;
    puVar31 = puVar31 + -1;
    iVar6 = iVar29 + -1;
  } while (puVar9 < puVar8);
  *(int *)(puVar46 + -0x68) = iVar29;
  puVar31 = (uint *)(iVar24 + 0x1c);
  uVar37 = 8;
  do {
    uVar7 = uVar37;
    uVar11 = *puVar31;
    puVar31 = puVar31 + -1;
    uVar37 = uVar7 - 1;
  } while (uVar11 < uVar18);
  uVar10 = *(undefined4 *)(puVar43 + -0x7d3c);
  iVar6 = 0x11;
  *(undefined4 *)(puVar46 + -0x48) = 0;
  *(undefined4 *)(puVar46 + -100) = uVar10;
  iVar24 = *(int *)(puVar43 + -0x7e20);
  *(undefined4 *)(puVar46 + -0x5c) = 0x3fffffff;
  iVar29 = (int)puVar8 + (1 - uVar18);
  *(uint *)(puVar46 + -0x40) = (uint)*(byte *)(iVar24 + 7);
  *(undefined4 *)(puVar46 + -0x3c) = *(undefined4 *)(puVar43 + -0x7eb4);
  *(uint *)(puVar46 + -0x60) = uVar18 + 1;
  iVar24 = *(int *)(puVar46 + -0x60);
  *puVar38 = 1;
  *(undefined4 *)(puVar46 + -0x44) = 1;
  *(int *)(puVar46 + -0x34) = *(int *)(puVar43 + -0x7fe4) + -0x31a4;
  *(int *)(puVar46 + -0x38) = *(int *)(puVar43 + -0x7fd4) + 0x3630;
  *puVar36 = 0x260eeeeb;
  if (iVar24 - 0x11U <= uVar7) {
    uVar7 = iVar24 - 0x11U;
  }
  puVar8 = (uint *)0x1;
  iVar39 = iVar6;
  if (uVar7 == 0) goto LAB_00022534;
LAB_00022234:
  puVar31 = (uint *)0x1;
  iVar41 = *(int *)(puVar46 + -0x40);
  *(uint **)(puVar46 + -0x4c) = puVar8;
  *(uint **)(puVar46 + -0x50) = puVar38;
  do {
    iVar39 = iVar6 + uVar7;
    uVar18 = (**(code **)(*(int *)(puVar46 + -0x34) + (uVar7 - 1) * 4))(iVar6);
    if ((uVar18 & 0xff) == 0) {
      uVar37 = uVar18 >> 8;
      iVar6 = 6;
      if ((uVar37 & 0xff) == 0) {
        uVar37 = uVar18 >> 0x10;
        iVar6 = 0xe;
        if ((uVar37 & 0xff) == 0) {
          uVar37 = uVar18 >> 0x18;
          iVar6 = 0x1e;
          if (uVar37 != 0) {
            iVar6 = 0x16;
          }
        }
      }
      uVar37 = (uint)*(byte *)(*(int *)(puVar46 + -0x3c) + (-uVar37 & uVar37)) + iVar6;
    }
    else {
      uVar37 = *(byte *)(*(int *)(puVar46 + -0x3c) + (-uVar18 & uVar18)) - 2;
    }
    iVar41 = iVar41 + *(byte *)(*(int *)(puVar46 + -0x38) + (uVar7 - 1)) + uVar37;
    uVar18 = (**(code **)(*(int *)(puVar46 + -0x78) + -0x7f9c))
                       (puVar36,puVar36,puVar31,uVar18 >> (uVar37 & 0x1f));
    puVar43 = *(undefined **)(puVar46 + -0x78);
    if ((uint)(iVar24 - iVar39) <= uVar7) {
      uVar7 = iVar24 - iVar39;
    }
    puVar8 = puVar36 + (int)puVar31;
    puVar31 = (uint *)((int)puVar31 + (uint)(uVar18 != 0));
    *puVar8 = uVar18;
    if (uVar7 == 0) {
      puVar38 = *(uint **)(puVar46 + -0x50);
      puVar8 = *(uint **)(puVar46 + -0x4c);
      *(int *)(puVar46 + -0x40) = iVar41;
      *(uint **)(puVar46 + -0x4c) = puVar36 + (int)((int)puVar31 + *(int *)(puVar46 + -0x5c));
      goto LAB_00022340;
    }
    iVar6 = iVar39;
  } while (puVar31 != (uint *)0x14);
  puVar8 = *(uint **)(puVar46 + -0x4c);
  puVar38 = *(uint **)(puVar46 + -0x50);
  *(int *)(puVar46 + -0x40) = iVar41;
  *(uint **)(puVar46 + -0x4c) = puVar36 + 0x13;
LAB_00022340:
  do {
    iVar41 = iVar39 - *(int *)(puVar46 + -0x44);
    iVar24 = *(int *)(puVar46 + -0x5c);
    iVar6 = iVar41;
    if (iVar41 != 0) {
      *(uint *)(puVar46 + -0x44) = uVar7;
      *(uint **)(puVar46 + -0x50) = puVar31;
      *(uint **)(puVar46 + -0x54) = puVar36;
      *(int *)(puVar46 + -0x58) = iVar39;
      iVar6 = *(int *)(puVar46 + -0x48);
      iVar39 = *(int *)(puVar46 + -0x68);
      iVar24 = iVar29;
      do {
        iVar33 = iVar41;
        if (iVar39 <= iVar41) {
          iVar33 = iVar39;
        }
        iVar29 = iVar24 + iVar33;
        uVar18 = (**(code **)(*(int *)(puVar46 + -0x34) + (iVar33 + -1) * 4))(iVar24);
        if ((uVar18 & 0xff) == 0) {
          uVar37 = uVar18 >> 8;
          iVar24 = 6;
          if ((uVar37 & 0xff) == 0) {
            uVar37 = uVar18 >> 0x10;
            iVar24 = 0xe;
            if ((uVar37 & 0xff) == 0) {
              uVar37 = uVar18 >> 0x18;
              iVar24 = 0x16;
              if (uVar37 == 0) {
                iVar24 = 0x1e;
              }
            }
          }
          uVar37 = (uint)*(byte *)(*(int *)(puVar46 + -0x3c) + (-uVar37 & uVar37)) + iVar24;
        }
        else {
          uVar37 = *(byte *)(*(int *)(puVar46 + -0x3c) + (-uVar18 & uVar18)) - 2;
        }
        iVar41 = iVar41 - iVar33;
        iVar6 = iVar6 + *(byte *)(*(int *)(puVar46 + -0x38) + iVar33 + -1) + uVar37;
        uVar18 = (**(code **)(*(int *)(puVar46 + -0x78) + -0x7f9c))
                           (puVar38,puVar38,puVar8,uVar18 >> (uVar37 & 0x1f));
        puVar43 = *(undefined **)(puVar46 + -0x78);
        puVar31 = puVar38 + (int)puVar8;
        puVar8 = (uint *)((int)puVar8 + (uint)(uVar18 != 0));
        *puVar31 = uVar18;
        iVar24 = iVar29;
      } while (iVar41 != 0);
      uVar7 = *(uint *)(puVar46 + -0x44);
      puVar31 = *(uint **)(puVar46 + -0x50);
      puVar36 = *(uint **)(puVar46 + -0x54);
      iVar39 = *(int *)(puVar46 + -0x58);
      *(int *)(puVar46 + -0x48) = iVar6;
      iVar24 = *(int *)(puVar46 + -0x5c);
    }
    uVar37 = *puVar36;
    pcVar51 = *(code **)(puVar43 + -0x7bc0);
    uVar18 = (uint)*(byte *)(*(int *)(puVar46 + -100) + ((uVar37 << 0x18) >> 0x19));
    puVar8 = (uint *)((int)puVar8 +
                     ((puVar38[(int)((int)puVar8 + iVar24)] < **(uint **)(puVar46 + -0x4c) ^ 1) -
                     (int)puVar31));
    iVar24 = uVar18 * 2 - uVar18 * uVar18 * uVar37;
    if ((int)puVar8 < (int)puVar31) {
      puVar31 = puVar8;
    }
    *(uint **)(puVar47 + -0x48) = puVar31;
    *(uint *)(puVar47 + -0x44) = iVar24 * iVar24 * uVar37 + iVar24 * -2;
    puVar9 = puVar38;
    puVar22 = puVar8;
    (*pcVar51)(puVar38,puVar38,puVar8,puVar36);
    iVar24 = *(int *)(puVar46 + -0x78);
    if (uVar7 == 0) {
      if (*(int *)(puVar46 + -0x48) == *(int *)(puVar46 + -0x40)) {
        puVar8 = (uint *)((int)puVar8 - (uint)(puVar38[(int)((int)puVar8 + -1)] == 0));
        pcVar51 = *(code **)(iVar24 + -0x7a80);
        if ((int)puVar8 <= **(int **)(puVar46 + -0x6c)) goto LAB_00022600;
LAB_00022734:
        puVar9 = puVar8;
        puVar19 = (undefined4 *)(*pcVar51)(*(undefined4 *)(puVar46 + -0x6c));
        iVar24 = *(int *)(puVar46 + -0x78);
      }
      else {
        puVar9 = puVar38;
        puVar22 = puVar8;
        uVar18 = (**(code **)(iVar24 + -0x7ad4))(puVar38);
        iVar24 = *(int *)(puVar46 + -0x78);
        puVar38[(int)puVar8] = uVar18;
        puVar8 = (uint *)((int)puVar8 +
                         ((uint)(uVar18 != 0) -
                         (uint)(puVar38[(int)((int)puVar8 + ((uVar18 != 0) - 1))] == 0)));
        pcVar51 = *(code **)(iVar24 + -0x7a80);
        if (**(int **)(puVar46 + -0x6c) < (int)puVar8) goto LAB_00022734;
LAB_00022600:
        puVar19 = *(undefined4 **)(*(int *)(puVar46 + -0x6c) + 8);
      }
      *(uint **)(*(int *)(puVar46 + -0x6c) + 4) = puVar8;
      if (puVar8 != (uint *)0x0) {
        puVar13 = (undefined1 *)((int)puVar8 + -1);
        puVar9 = (uint *)*puVar38;
        if (puVar13 != (undefined1 *)0x0) {
          puVar15 = puVar19;
          puVar16 = puVar38 + 1;
          do {
            *puVar15 = puVar9;
            puVar38 = puVar16 + 1;
            puVar13 = puVar13 + -1;
            puVar9 = (uint *)*puVar16;
            puVar15 = puVar15 + 1;
            puVar16 = puVar38;
          } while (puVar13 != (undefined1 *)0x0);
          puVar8 = (uint *)((int)puVar8 * 4);
          puVar19 = (undefined4 *)((int)puVar19 + (int)(puVar8 + -1));
        }
        *puVar19 = puVar9;
      }
      puVar16 = *(uint **)(puVar46 + -0x30);
      if (puVar16 != (uint *)0x0) {
        (**(code **)(iVar24 + -0x7a28))();
        iVar24 = *(int *)(puVar46 + -0x78);
      }
      if (*(int *)(puVar46 + -0x2c) == **(int **)(puVar46 + -0x70)) {
        return **(int **)(puVar46 + -0x70);
      }
      pcVar51 = *(code **)(iVar24 + -0x7b70);
      pcVar52 = __gmpz_bin_uiui;
      (*pcVar51)();
      pcVar44 = pcVar51 + 0x8289c;
      *(uint **)(puVar47 + -0x78) = puVar31;
      piVar32 = *(int **)(pcVar51 + 0x7ad9c);
      *(code **)(puVar47 + -0xf0) = pcVar44;
      *(int *)(puVar47 + -0x74) = iVar39;
      *(code **)(puVar47 + -0x5c) = pcVar52;
      *(undefined1 **)(puVar47 + -0x60) = puVar46 + -0x90;
      *(int *)(puVar47 + -100) = iVar6;
      *(int *)(puVar47 + -0x68) = iVar29;
      *(uint **)(puVar47 + -0x6c) = puVar38;
      *(uint **)(puVar47 + -0x70) = puVar36;
      *(uint **)(puVar47 + -0x7c) = puVar8;
      *(undefined4 *)(puVar47 + -0x80) = 0;
      *(int *)(puVar47 + -0x84) = *piVar32;
      puVar31 = puVar16;
      puVar20 = puVar9;
      if (puVar9 < puVar22) {
        puVar16[1] = 0;
        puVar30 = (uint *)0x0;
      }
      else {
        puVar30 = puVar22;
        if ((uint *)((int)puVar9 - (int)puVar22) <= puVar22) {
          puVar30 = (uint *)((int)puVar9 - (int)puVar22);
        }
        puVar22 = puVar30;
        puVar36 = puVar9;
        if (puVar30 < (uint *)0x2) {
          if (puVar30 == (uint *)0x0) {
            puVar36 = (uint *)0x1;
          }
          *(uint **)puVar16[2] = puVar36;
          puVar16[1] = 1;
          puVar49 = puVar46 + -0x90;
        }
        else if (puVar9 < (uint *)0x23) {
          puVar13 = (undefined1 *)((int)puVar30 + -2);
          iVar6 = *(int *)(pcVar51 + 0x7aa7c);
          puVar20 = (uint *)puVar16[2];
          uVar18 = (int)puVar9 - (int)puVar30;
          puVar36 = (uint *)(iVar6 + ((uint)puVar9 >> 1));
          puVar30 = (uint *)(iVar6 + ((uint)puVar30 >> 1));
          bVar2 = *(byte *)((int)puVar30 + -1);
          puVar31 = (uint *)(uint)*(byte *)(iVar6 + (uVar18 >> 1) + -1);
          *puVar20 = *(int *)((int)puVar13 * 4 + *(int *)(pcVar51 + 0x7a8c8) + 0x35b4) *
                     *(int *)(*(int *)(pcVar51 + 0x7ad64) + (int)puVar9 * 4) *
                     *(int *)((uVar18 - 2) * 4 + *(int *)(pcVar51 + 0x7a8c8) + 0x35b4) <<
                     (((uint)*(byte *)((int)puVar36 + -1) - (int)(uint)bVar2) - (int)puVar31 & 0x1f)
          ;
          puVar16[1] = 1;
          puVar22 = (uint *)(uint)bVar2;
          puVar49 = puVar46 + -0x90;
        }
        else if (puVar30 < &DAT_00000011) {
          FUN_000216e8();
          pcVar44 = *(code **)(puVar47 + -0xf0);
          puVar49 = puVar46 + -0x90;
        }
        else if (puVar30 < &DAT_00000021) {
          uVar18 = (uint)puVar30 >> 1;
          uVar37 = (int)puVar9 - uVar18;
          FUN_000216e8();
          iVar6 = *(int *)(puVar47 + -0xf0);
          uVar7 = (int)puVar30 - uVar18;
          if (uVar37 < 0x23) {
            puVar50 = (undefined1 *)puVar16[1];
            if ((int)puVar50 < (int)*puVar16) {
              puVar8 = (uint *)puVar16[2];
            }
            else {
              puVar8 = (uint *)(**(code **)(iVar6 + -0x7a80))(puVar16,puVar50 + 1);
              iVar6 = *(int *)(puVar47 + -0xf0);
            }
            iVar29 = *(int *)(iVar6 + -0x7e20);
            iVar24 = *(int *)(iVar6 + -0x7fd4) + 0x35b4;
            uVar37 = (**(code **)(iVar6 + -0x7f9c))
                               (puVar8,puVar8,puVar50,
                                *(int *)((((int)puVar9 - (int)puVar30) - 2U) * 4 + iVar24) *
                                *(int *)(*(int *)(iVar6 + -0x7b38) + uVar37 * 4) *
                                *(int *)((uVar7 - 2) * 4 + iVar24) <<
                                (((uint)*(byte *)(iVar29 + (uVar37 >> 1) + -1) -
                                 (uint)*(byte *)(iVar29 + (uVar7 >> 1) + -1)) -
                                 (uint)*(byte *)(iVar29 + ((uint)((int)puVar9 - (int)puVar30) >> 1)
                                                + -1) & 0x1f));
            iVar6 = *(int *)(puVar47 + -0xf0);
            puVar30 = (uint *)(puVar50 + (uVar37 != 0));
            puVar8[(int)puVar50] = uVar37;
          }
          else {
            *(undefined4 *)(puVar47 + -0xe4) = 0x15;
            *(undefined1 **)(puVar47 + -0xdc) = puVar47 + -0xd8;
            FUN_000216e8(puVar47 + -0xe4,uVar37,uVar7);
            (**(code **)(*(int *)(puVar47 + -0xf0) + -0x7ba8))(puVar16,puVar16,puVar47 + -0xe4);
            iVar6 = *(int *)(puVar47 + -0xf0);
            puVar8 = (uint *)puVar16[2];
            puVar30 = (uint *)puVar16[1];
          }
          pcVar51 = *(code **)(iVar6 + -0x7bb4);
          puVar38 = (uint *)((uint)*(byte *)((uVar7 - 8) + *(int *)(iVar6 + -0x7fd4) + 0x3550) -
                            (uint)(uVar18 != uVar7));
          *(undefined4 *)(puVar47 + -0xf8) =
               *(undefined4 *)((uVar7 - 8) * 4 + *(int *)(iVar6 + -0x7fd4) + 0x355c);
          *(uint **)(puVar47 + -0xf4) = puVar38;
          puVar31 = puVar8;
          puVar20 = puVar8;
          puVar22 = puVar30;
          (*pcVar51)();
          pcVar44 = *(code **)(puVar47 + -0xf0);
          if (puVar8[(int)((int)puVar30 + -1)] == 0) {
            puVar9 = puVar8 + (int)puVar30;
            do {
              puVar1 = puVar9 + -2;
              puVar30 = (uint *)((int)puVar30 + -1);
              puVar9 = puVar9 + -1;
            } while (*puVar1 == 0);
          }
          puVar16[1] = (uint)puVar30;
          puVar49 = puVar50;
        }
        else if ((puVar30 < (uint *)0x3e8) || (puVar30 <= (uint *)((uint)puVar9 >> 4))) {
          FUN_0002209c();
          pcVar44 = *(code **)(puVar47 + -0xf0);
          puVar49 = puVar46 + -0x90;
        }
        else {
          MASKED();
          pcVar44 = *(code **)(puVar47 + -0xf0);
          puVar49 = puVar46 + -0x90;
        }
      }
      if (*(int *)(puVar47 + -0x84) == *piVar32) {
        return *piVar32;
      }
      pcVar51 = *(code **)(pcVar44 + -0x7b70);
      uVar10 = 0x22b64;
      (*pcVar51)();
      pcVar44 = pcVar51 + 0x824d0;
      puVar48 = puVar47 + -0x160;
      *(uint **)(puVar47 + -0x118) = puVar16;
      *(uint **)(puVar47 + -0x124) = puVar30;
      piVar34 = *(int **)(pcVar51 + 0x7a9d0);
      uVar18 = puVar22[1];
      *(undefined1 **)(puVar47 + -0x110) = puVar49;
      *(uint **)(puVar47 + -0x114) = puVar36;
      *(int **)(puVar47 + -0x11c) = piVar32;
      *(uint **)(puVar47 + -0x120) = puVar8;
      *(undefined4 *)(puVar47 + -0x10c) = uVar10;
      *(code **)(puVar47 + -0x150) = pcVar44;
      *(undefined4 *)(puVar47 + -0x13c) = 0;
      puVar8 = (uint *)puVar20[1];
      *(int *)(puVar47 + -300) = *piVar34;
      if ((int)uVar18 < 0) {
        uVar37 = uVar18 * -4;
        *(uint *)(puVar47 + -0x138) = -uVar18;
        if (0x7f00 < uVar37) {
          pcVar51 = *(code **)(pcVar51 + 0x7a780);
          goto LAB_00022c88;
        }
LAB_00022be4:
        iVar6 = -(uVar37 + 7 & 0xfffffff8);
        puVar48 = puVar47 + iVar6 + -0x160;
        puVar13 = puVar47 + iVar6 + -0x150;
      }
      else {
        uVar37 = uVar18 * 4;
        *(uint *)(puVar47 + -0x138) = uVar18;
        pcVar51 = *(code **)(pcVar51 + 0x7a780);
        if (uVar37 < 0x7f01) goto LAB_00022be4;
LAB_00022c88:
        *(uint **)(puVar47 + -0x144) = puVar22;
        puVar13 = (undefined1 *)(*pcVar51)(puVar47 + -0x13c,uVar37);
        pcVar44 = *(code **)(puVar47 + -0x150);
        puVar22 = *(uint **)(puVar47 + -0x144);
      }
      pcVar51 = *(code **)(pcVar44 + -0x7a68);
      puVar36 = (uint *)(puVar47 + -0x138);
      *(undefined1 **)(puVar47 + -0x130) = puVar13;
      puVar9 = puVar20;
      (*pcVar51)(puVar31,puVar36,puVar20,puVar22);
      iVar6 = *(int *)(puVar47 + -0x150);
      if (((int)((uint)puVar8 ^ uVar18) < 0) || (*(int *)(puVar47 + -0x134) == 0)) {
        piVar32 = *(int **)(puVar47 + -0x13c);
        pcVar51 = *(code **)(iVar6 + -0x7a28);
        if (piVar32 != (int *)0x0) goto LAB_00022cc0;
      }
      else {
        puVar9 = (uint *)0x1;
        puVar36 = puVar31;
        (**(code **)(iVar6 + -0x7c9c))(puVar31);
        piVar32 = *(int **)(puVar47 + -0x13c);
        iVar6 = *(int *)(puVar47 + -0x150);
        if (piVar32 != (int *)0x0) {
          pcVar51 = *(code **)(iVar6 + -0x7a28);
LAB_00022cc0:
          (*pcVar51)();
          iVar6 = *(int *)(puVar47 + -0x150);
        }
      }
      if (*(int *)(puVar47 + -300) == *piVar34) {
        return *piVar34;
      }
      pcVar51 = *(code **)(iVar6 + -0x7b70);
      uVar10 = 0x22cdc;
      (*pcVar51)();
      pcVar44 = pcVar51 + 0x82360;
      *(code **)(puVar48 + -0x28) = pcVar44;
      *(undefined4 *)(puVar48 + -4) = uVar10;
      *(uint **)(puVar48 + -8) = puVar38;
      *(uint **)(puVar48 + -0xc) = puVar20;
      *(int **)(puVar48 + -0x10) = piVar34;
      *(uint **)(puVar48 + -0x14) = puVar31;
      *(uint **)(puVar48 + -0x18) = puVar8;
      *(uint *)(puVar48 + -0x1c) = (uint)puVar8 ^ uVar18;
      if (puVar9 == (uint *)0x0) {
        pcVar51 = *(code **)(pcVar51 + 0x7a900);
        (*pcVar51)();
LAB_00022e2c:
        piVar32 = (int *)(*pcVar51)(piVar34,puVar31);
        pcVar44 = *(code **)(puVar48 + -0x28);
      }
      else {
        puVar8 = (uint *)puVar36[1];
        if (puVar8 == (uint *)0x0) {
          piVar32[1] = 0;
          return 0;
        }
        puVar31 = puVar8;
        if ((int)puVar8 < 0) {
          puVar31 = (uint *)-(int)puVar8;
        }
        pcVar51 = *(code **)(pcVar51 + 0x7a8e0);
        piVar34 = piVar32;
        puVar20 = puVar9;
        puVar38 = puVar36;
        if (*piVar32 < (int)puVar31) goto LAB_00022e2c;
        piVar32 = (int *)piVar32[2];
      }
      pcVar51 = *(code **)(pcVar44 + -0x7d98);
      uVar18 = puVar38[2];
      *(uint **)(puVar48 + -0x30) = puVar20;
      iVar6 = (*pcVar51)(piVar32,0,uVar18,puVar31);
      piVar17 = piVar32 + (int)puVar31 + -1;
      if (iVar6 == 0) {
        uVar18 = (uint)(*piVar17 == 0);
        if (-1 < (int)puVar8) {
          iVar24 = (int)puVar31 - uVar18;
          goto LAB_00022d9c;
        }
      }
      else {
        if (-1 < (int)puVar8) {
          do {
            iVar24 = *piVar32;
            *piVar32 = iVar24 + 1;
            piVar32 = piVar32 + 1;
          } while (iVar24 + 1 == 0);
          iVar6 = (int)puVar20 - iVar6;
          iVar24 = (int)puVar31 - (uint)(*piVar17 == 0);
          goto LAB_00022d9c;
        }
        uVar18 = (uint)(*piVar17 == 0);
      }
      iVar24 = uVar18 - (int)puVar31;
LAB_00022d9c:
      piVar34[1] = iVar24;
      return iVar6;
    }
    *(int *)(puVar46 + -0x44) = iVar39;
    iVar6 = iVar39 + uVar7;
    uVar18 = (**(code **)(*(int *)(puVar46 + -0x34) + (uVar7 - 1) * 4))(iVar39);
    puVar43 = *(undefined **)(puVar46 + -0x78);
    if ((uVar18 & 0xff) == 0) {
      uVar37 = uVar18 >> 8;
      iVar24 = 6;
      if ((uVar37 & 0xff) == 0) {
        uVar37 = uVar18 >> 0x10;
        iVar24 = 0xe;
        if ((uVar37 & 0xff) == 0) {
          uVar37 = uVar18 >> 0x18;
          iVar24 = 0x1e;
          if (uVar37 != 0) {
            iVar24 = 0x16;
          }
        }
      }
      uVar37 = (uint)*(byte *)(*(int *)(puVar46 + -0x3c) + (-uVar37 & uVar37)) + iVar24;
    }
    else {
      uVar37 = *(byte *)(*(int *)(puVar46 + -0x3c) + (-uVar18 & uVar18)) - 2;
    }
    iVar39 = *(int *)(puVar46 + -0x38);
    *puVar36 = uVar18 >> (uVar37 & 0x1f);
    iVar24 = *(int *)(puVar46 + -0x60);
    *(uint *)(puVar46 + -0x40) =
         *(int *)(puVar46 + -0x40) + *(byte *)(iVar39 + (uVar7 - 1)) + uVar37;
    if ((uint)(iVar24 - iVar6) <= uVar7) {
      uVar7 = iVar24 - iVar6;
    }
    iVar39 = iVar6;
    if (uVar7 != 0) goto LAB_00022234;
LAB_00022534:
    puVar31 = (uint *)0x1;
    *(uint **)(puVar46 + -0x4c) = puVar36;
  } while( true );
}

