
mp_size_t mpn_rootrem_internal
                    (mp_ptr rootp,mp_ptr remp,mp_srcptr up,mp_size_t un,mp_limb_t k,int approx)

{
  int iVar1;
  byte bVar2;
  code *pcVar3;
  int iVar4;
  mp_ptr pmVar5;
  uint uVar6;
  mp_size_t mVar7;
  mp_ptr pmVar8;
  int iVar9;
  uint *puVar10;
  int *piVar11;
  int *piVar12;
  int *extraout_ECX;
  int iVar13;
  uint uVar14;
  uint *puVar15;
  uint uVar16;
  undefined1 *puVar17;
  int iVar18;
  int unaff_EDI;
  int in_GS_OFFSET;
  ushort in_FPUControlWord;
  undefined8 uVar19;
  undefined1 auStack_13c [8];
  int local_134;
  uint uStack_130;
  uint *puStack_12c;
  int local_128;
  int *local_124;
  int *piStack_120;
  uint *puStack_11c;
  int iStack_118;
  int iStack_114;
  int iStack_110;
  int iStack_10c;
  int iStack_108;
  int iStack_104;
  uint uStack_100;
  mp_bitcnt_t *pmStack_fc;
  int *local_f8;
  uint uStack_f4;
  mp_ptr pmStack_f0;
  uint uStack_ec;
  uint uStack_e8;
  uint uStack_e4;
  int iStack_e0;
  int iStack_dc;
  mp_ptr pmStack_d8;
  int *piStack_d4;
  int iStack_d0;
  int iStack_cc;
  undefined4 uStack_c8;
  int local_c4;
  uint *local_c0;
  int iStack_bc;
  ushort uStack_b8;
  ushort uStack_b6;
  tmp_reentrant_t *__tmp_marker;
  mp_bitcnt_t sizes [33];
  
  uVar19 = __x86_get_pc_thunk_di();
  local_124 = (int *)((ulonglong)uVar19 >> 0x20);
  local_c0 = (uint *)uVar19;
  puVar17 = auStack_13c;
  local_f8 = extraout_ECX;
  local_c4 = unaff_EDI + 0x4fbe7;
  iVar1 = *(int *)(in_GS_OFFSET + 0x14);
  local_134 = (int)rootp + 0x3fffffff;
  uVar14 = extraout_ECX[local_134];
  local_128 = local_134 * 4;
  uVar6 = 0x1f;
  if (uVar14 != 0) {
    for (; uVar14 >> uVar6 == 0; uVar6 = uVar6 - 1) {
    }
  }
  iVar13 = (uVar6 ^ 0x1f) + 1;
  pmVar5 = (mp_ptr)((int)rootp * 0x20 - iVar13);
  if (pmVar5 < remp) {
    *local_c0 = 1;
    if (local_124 == (int *)0x0) {
      iVar13 = *extraout_ECX + -1;
    }
    else {
      iVar13 = *extraout_ECX;
      *local_124 = iVar13 + -1;
      if (iVar13 == 0) {
        if (1 < (int)rootp) {
          iVar13 = extraout_ECX[1];
          local_124[1] = iVar13 + -1;
          if (iVar13 == 0) {
            if (rootp == (mp_ptr)0x2) goto LAB_0004ef98;
            iVar13 = extraout_ECX[2];
            pmVar5 = (mp_ptr)0x3;
            local_124[2] = iVar13 + -1;
            while (iVar13 == 0) {
              if (rootp == pmVar5) goto LAB_0004ef98;
              iVar13 = extraout_ECX[(int)pmVar5];
              local_124[(int)pmVar5] = iVar13 + -1;
              pmVar5 = (mp_ptr)((int)pmVar5 + 1);
            }
          }
          else {
            pmVar5 = (mp_ptr)0x2;
          }
          if ((extraout_ECX != local_124) && ((int)pmVar5 < (int)rootp)) {
            piVar12 = extraout_ECX + (int)pmVar5;
            piVar11 = local_124 + (int)pmVar5;
            do {
              iVar13 = *piVar12;
              piVar12 = piVar12 + 1;
              *piVar11 = iVar13;
              piVar11 = piVar11 + 1;
            } while (extraout_ECX + (int)(rootp + 0x10000000) != piVar12);
          }
        }
      }
      else if ((extraout_ECX != local_124) && (1 < (int)rootp)) {
        piVar12 = extraout_ECX + 1;
        piVar11 = local_124;
        do {
          piVar11 = piVar11 + 1;
          iVar13 = *piVar12;
          piVar12 = piVar12 + 1;
          *piVar11 = iVar13;
        } while (extraout_ECX + (int)(rootp + 0x10000000) != piVar12);
      }
LAB_0004ef98:
      iVar13 = local_124[local_134];
    }
    pmStack_d8 = (mp_ptr)((int)rootp - (uint)(iVar13 == 0));
    goto LAB_0004e9ee;
  }
  if (iVar13 == 0x20) {
    uVar14 = extraout_ECX[(int)rootp + 0x3ffffffe];
  }
  else {
    uVar14 = (uint)extraout_ECX[(int)rootp + (-1 - (uint)(rootp != (mp_ptr)0x1))] >>
             (0x20 - (byte)iVar13 & 0x1f) | uVar14 << ((byte)iVar13 & 0x1f);
  }
  uVar14 = (uint)*(byte *)(unaff_EDI + 0x32bc7 + (uVar14 >> 0x18));
  if (pmVar5 < (mp_ptr)0x1000000) {
    uVar6 = ((int)pmVar5 * 0x100 | uVar14) / (uint)remp;
    uVar14 = uVar6 & 0xff;
    uStack_e8 = uVar6 >> 8;
  }
  else {
    uStack_e8 = (uint)pmVar5 / (uint)remp;
    uVar14 = ((uint)pmVar5 % (uint)remp << 8 | uVar14) / (uint)remp;
  }
  iVar13 = uStack_e8 * (int)remp;
  bVar2 = *(byte *)(unaff_EDI + 0x32ac7 + uVar14);
  uStack_ec = (int)remp - 1U;
  uVar14 = 3;
  for (uVar6 = (int)remp - 1U >> 2; uVar6 != 0; uVar6 = uVar6 >> 1) {
    uVar14 = uVar14 + 1;
  }
  iVar18 = 0;
  pmStack_fc = sizes;
  sizes[0] = uStack_e8;
  if (8 < uStack_e8) {
    iVar4 = 0;
    do {
      while (iVar18 = iVar4, uVar14 < uStack_e8) {
        uStack_e8 = uStack_e8 + uVar14 >> 1;
        sizes[iVar18 + 1] = uStack_e8;
        iVar4 = iVar18 + 1;
        if (uStack_e8 < 9) goto LAB_0004e56d;
      }
      uStack_e8 = uStack_e8 - 1;
      sizes[iVar18 + 1] = uStack_e8;
      iVar4 = iVar18 + 1;
    } while (uStack_e8 != 8);
    uStack_e8 = 8;
LAB_0004e56d:
    iVar18 = iVar18 + 1;
  }
  __tmp_marker = (tmp_reentrant_t *)0x0;
  uStack_f4 = iVar13 - uStack_e8;
  *local_c0 = (bVar2 | 0x100) >> (8U - (char)uStack_e8 & 0x1f);
  uStack_b6 = in_FPUControlWord;
  uStack_c8 = 0;
  uStack_b8 = in_FPUControlWord | 0xc00;
  iStack_bc = (int)ROUND((double)remp * *(double *)(unaff_EDI + 0x32cc7) *
                         (double)*(float *)(&UNK_00032ccf + unaff_EDI));
  iStack_cc = (int)rootp + iStack_bc + 2;
  uVar14 = ((int)rootp + iStack_cc * 2 + 1) * 4;
  if (uVar14 < 0x7f01) {
    iVar13 = -(uVar14 + 0x1b & 0xfffffff0);
    puVar17 = auStack_13c + iVar13;
    piStack_120 = (int *)((int)&uStack_130 + iVar13);
  }
  else {
    piStack_120 = (int *)__gmp_tmp_reentrant_alloc(&__tmp_marker,uVar14);
    puVar17 = auStack_13c;
  }
  iVar13 = (int)piStack_120 + local_128 + 8;
  iStack_d0 = iVar13 + iStack_cc * 4;
  piStack_d4 = local_124;
  if (local_124 == (int *)0x0) {
    piStack_d4 = piStack_120;
  }
  if (iVar18 != 0) {
    iStack_104 = iVar18 + -1;
    pmStack_fc = sizes;
    iStack_cc = 1;
    iStack_e0 = *(int *)(local_c4 + -0x26c);
    iStack_dc = iVar13;
LAB_0004e690:
    uStack_e4 = uStack_f4 - uStack_e8 * uStack_ec;
    iVar13 = (int)rootp - (uStack_e4 >> 5);
    piVar12 = local_f8 + (uStack_e4 >> 5);
    if ((uStack_e4 & 0x1f) == 0) {
      *(int *)(puVar17 + -8) = iVar13;
      *(int **)(puVar17 + -0xc) = piVar12;
      iVar18 = iStack_e0;
      *(int **)(puVar17 + -0x10) = piStack_d4;
      pcVar3 = *(code **)(iVar18 + 0x28);
      *(undefined4 *)(puVar17 + -0x14) = 0x4ed34;
      (*pcVar3)();
    }
    else {
      *(uint *)(puVar17 + -4) = uStack_e4 & 0x1f;
      *(int *)(puVar17 + -8) = iVar13;
      *(int **)(puVar17 + -0xc) = piVar12;
      iVar18 = iStack_e0;
      *(int **)(puVar17 + -0x10) = piStack_d4;
      pcVar3 = *(code **)(iVar18 + 0x80);
      *(undefined4 *)(puVar17 + -0x14) = 0x4e6dc;
      (*pcVar3)();
    }
    piVar12 = piStack_d4;
    iVar18 = iStack_dc;
    pmStack_d8 = (mp_ptr)(iVar13 - (uint)(piStack_d4[iVar13 + -1] == 0));
    do {
      *(int *)(puVar17 + -0x10) = iVar18;
      *(uint *)(puVar17 + -0x14) = uStack_ec;
      *(int *)(puVar17 + -0x18) = iStack_cc;
      *(uint **)(puVar17 + -0x1c) = local_c0;
      *(int *)(puVar17 + -0x20) = iStack_d0;
      *(undefined4 *)(puVar17 + -0x24) = 0x4e727;
      mVar7 = __gmpn_pow_1(*(mp_ptr *)(puVar17 + -0x20),*(mp_srcptr *)(puVar17 + -0x1c),
                           *(mp_size_t *)(puVar17 + -0x18),*(mp_limb_t *)(puVar17 + -0x14),
                           *(mp_ptr *)(puVar17 + -0x10));
      *(int *)(puVar17 + -0x10) = iStack_cc;
      *(uint **)(puVar17 + -0x14) = local_c0;
      *(mp_size_t *)(puVar17 + -0x18) = mVar7;
      *(int *)(puVar17 + -0x1c) = iStack_d0;
      *(int *)(puVar17 + -0x20) = iVar18;
      iStack_dc = mVar7;
      *(undefined4 *)(puVar17 + -0x24) = 0x4e74f;
      __gmpn_mul(*(mp_ptr *)(puVar17 + -0x20),*(mp_srcptr *)(puVar17 + -0x1c),
                 *(mp_size_t *)(puVar17 + -0x18),*(mp_srcptr *)(puVar17 + -0x14),
                 *(mp_size_t *)(puVar17 + -0x10));
      piVar11 = piStack_d4;
      pmVar5 = pmStack_d8;
      iVar13 = (iStack_cc + iStack_dc) -
               (uint)(*(int *)(iVar18 + -4 + (iStack_cc + iStack_dc) * 4) == 0);
      puVar10 = local_c0;
      if (iVar13 <= (int)pmStack_d8) {
        pmVar8 = pmStack_d8;
        if (pmStack_d8 != (mp_ptr)iVar13) goto LAB_0004eb66;
        do {
          pmVar8 = (mp_ptr)((int)pmVar8 + -1);
          if ((int)pmVar8 < 0) {
            iStack_108 = iStack_dc;
            iStack_114 = 0;
            iStack_10c = iStack_104;
            uStack_e8 = pmStack_fc[iStack_104] - pmStack_fc[iStack_104 + 1];
            iStack_118 = pmStack_fc[iStack_104 + 1] - pmStack_fc[iStack_104];
            pmStack_f0 = (mp_ptr)(uStack_e8 >> 5);
            uStack_f4 = iStack_118 + uStack_e4;
            uVar14 = uStack_e4 - 1;
            uStack_e4 = uStack_e8 & 0x1f;
            puVar15 = (uint *)((uVar14 >> 5) - (uStack_f4 >> 5));
            uStack_100 = (int)pmStack_f0 * 4;
            uVar14 = 0;
            iStack_110 = (int)puVar15 + 1;
            uVar6 = uStack_f4 >> 5;
            puVar10 = (uint *)(piStack_d4 + (int)pmStack_f0);
            iStack_dc = iVar18;
            pmStack_d8 = pmStack_f0;
            goto LAB_0004e83d;
          }
          uVar14 = *(uint *)(iVar18 + (int)pmVar8 * 4);
        } while (uVar14 == piVar12[(int)pmVar8]);
        if (uVar14 <= (uint)piVar12[(int)pmVar8]) goto LAB_0004eb66;
      }
      do {
        uVar14 = *puVar10;
        *puVar10 = *puVar10 - 1;
        puVar10 = puVar10 + 1;
      } while (uVar14 == 0);
    } while( true );
  }
  iStack_cc = 1;
LAB_0004e9ce:
  piVar12 = local_f8;
  if ((up == (mp_srcptr)0x0) || (*local_c0 < 2)) {
    do {
      *(int *)(puVar17 + -0x10) = iStack_d0;
      *(mp_ptr *)(puVar17 + -0x14) = remp;
      *(int *)(puVar17 + -0x18) = iStack_cc;
      *(uint **)(puVar17 + -0x1c) = local_c0;
      *(int *)(puVar17 + -0x20) = iVar13;
      *(undefined4 *)(puVar17 + -0x24) = 0x4ea47;
      pmVar5 = (mp_ptr)__gmpn_pow_1(*(mp_ptr *)(puVar17 + -0x20),*(mp_srcptr *)(puVar17 + -0x1c),
                                    *(mp_size_t *)(puVar17 + -0x18),*(mp_limb_t *)(puVar17 + -0x14),
                                    *(mp_ptr *)(puVar17 + -0x10));
      puVar10 = local_c0;
      if ((int)pmVar5 <= (int)rootp) {
        pmVar8 = rootp;
        if (rootp != pmVar5) goto LAB_0004efbf;
        do {
          pmVar8 = (mp_ptr)((int)pmVar8 + -1);
          if ((int)pmVar8 < 0) {
            pmStack_d8 = (mp_ptr)0x0;
            goto LAB_0004e9e0;
          }
          uVar14 = *(uint *)(iVar13 + (int)pmVar8 * 4);
        } while (uVar14 == piVar12[(int)pmVar8]);
        if (uVar14 <= (uint)piVar12[(int)pmVar8]) goto LAB_0004efbf;
      }
      do {
        uVar14 = *puVar10;
        *puVar10 = *puVar10 - 1;
        puVar10 = puVar10 + 1;
      } while (uVar14 == 0);
    } while( true );
  }
LAB_0004e9e0:
  if (__tmp_marker != (tmp_reentrant_t *)0x0) {
    *(tmp_reentrant_t **)(puVar17 + -0x10) = __tmp_marker;
    *(undefined4 *)(puVar17 + -0x14) = 0x4f1a9;
    __gmp_tmp_reentrant_free(*(tmp_reentrant_t **)(puVar17 + -0x10));
  }
LAB_0004e9ee:
  if (iVar1 == *(int *)(in_GS_OFFSET + 0x14)) {
    return (mp_size_t)pmStack_d8;
  }
                    /* WARNING: Subroutine does not return */
  *(undefined **)(puVar17 + -4) = &UNK_0004f214;
  __stack_chk_fail_local();
LAB_0004eb66:
  iStack_108 = iStack_dc;
  iStack_10c = iStack_104;
  uStack_e8 = pmStack_fc[iStack_104] - pmStack_fc[iStack_104 + 1];
  iStack_118 = pmStack_fc[iStack_104 + 1] - pmStack_fc[iStack_104];
  pmStack_f0 = (mp_ptr)(uStack_e8 >> 5);
  uStack_f4 = iStack_118 + uStack_e4;
  uVar14 = uStack_f4 >> 5;
  puStack_11c = (uint *)((uStack_e4 - 1 >> 5) - uVar14);
  iStack_110 = (int)puStack_11c + 1;
  uStack_e4 = uVar14;
  iStack_dc = iVar18;
  if (iVar13 != 0) {
    *(int *)(puVar17 + -4) = iVar13;
    *(int *)(puVar17 + -8) = iStack_dc;
    *(int **)(puVar17 + -0xc) = piVar11;
    *(int **)(puVar17 + -0x10) = piVar11;
    pmStack_d8 = (mp_ptr)iVar13;
    *(undefined4 *)(puVar17 + -0x14) = 0x4ee32;
    iVar13 = __gmpn_sub_n();
    if ((iVar13 != 0) && (pmVar5 != pmStack_d8)) {
      iVar13 = piStack_d4[(int)pmStack_d8];
      piStack_d4[(int)pmStack_d8] = iVar13 + -1;
      if ((iVar13 == 0) && ((int)pmStack_d8 + 1 < (int)pmVar5)) {
        iVar18 = (int)pmStack_d8 + 2;
        iVar13 = piStack_d4[(int)pmStack_d8 + 1];
        piStack_d4[(int)pmStack_d8 + 1] = iVar13 + -1;
        for (; (iVar13 == 0 && (pmVar5 != (mp_ptr)iVar18)); iVar18 = iVar18 + 1) {
          iVar13 = piStack_d4[iVar18];
          piStack_d4[iVar18] = iVar13 + -1;
        }
      }
    }
  }
  piVar12 = piStack_d4;
  iVar18 = iStack_e0;
  iVar13 = piStack_d4[(int)pmVar5 + -1];
  while (iVar13 == 0) {
    iVar13 = piStack_d4[(int)pmVar5 + -2];
    pmVar5 = (mp_ptr)((int)pmVar5 + -1);
  }
  uStack_100 = (int)pmStack_f0 * 4;
  puVar10 = (uint *)(piStack_d4 + (int)pmStack_f0);
  pmStack_d8 = (mp_ptr)((int)pmStack_f0 + (int)pmVar5);
  uVar14 = uStack_e8 & 0x1f;
  uStack_130 = uStack_e4;
  puStack_12c = puVar10;
  if (uVar14 == 0) {
    uStack_e4 = uVar14;
    *(mp_ptr *)(puVar17 + -8) = pmVar5;
    *(int **)(puVar17 + -0xc) = piStack_d4;
    *(uint **)(puVar17 + -0x10) = puVar10;
    pcVar3 = *(code **)(iVar18 + 0x24);
    *(undefined4 *)(puVar17 + -0x14) = 0x4ed9a;
    (*pcVar3)();
  }
  else {
    uStack_e4 = uVar14;
    *(uint *)(puVar17 + -4) = uVar14;
    *(mp_ptr *)(puVar17 + -8) = pmVar5;
    *(int **)(puVar17 + -0xc) = piVar12;
    iVar13 = iStack_e0;
    *(uint **)(puVar17 + -0x10) = puVar10;
    pcVar3 = *(code **)(iVar13 + 0x38);
    *(undefined4 *)(puVar17 + -0x14) = 0x4ec66;
    iVar13 = (*pcVar3)();
    if (iVar13 != 0) {
      piStack_d4[(int)pmStack_d8] = iVar13;
      pmStack_d8 = (mp_ptr)((int)pmStack_d8 + 1);
    }
  }
  uVar14 = *puStack_12c;
  uVar6 = uStack_130;
  puVar10 = puStack_12c;
  puVar15 = puStack_11c;
  if ((int)pmStack_f0 < (int)puStack_11c) {
    iStack_114 = *(int *)((int)piStack_d4 + uStack_100 + 4);
  }
LAB_0004e83d:
  piVar12 = local_f8 + uVar6;
  puStack_11c = puVar10;
  if ((uStack_f4 & 0x1f) == 0) {
    *(int *)(puVar17 + -8) = iStack_110;
    *(int **)(puVar17 + -0xc) = piVar12;
    *(int **)(puVar17 + -0x10) = piStack_d4;
    pcVar3 = *(code **)(iStack_e0 + 0x28);
    *(undefined4 *)(puVar17 + -0x14) = 0x4ed09;
    (*pcVar3)();
  }
  else {
    *(uint *)(puVar17 + -4) = uStack_f4 & 0x1f;
    *(int *)(puVar17 + -8) = iStack_110;
    *(int **)(puVar17 + -0xc) = piVar12;
    iVar13 = iStack_e0;
    *(int **)(puVar17 + -0x10) = piStack_d4;
    pcVar3 = *(code **)(iVar13 + 0x80);
    *(undefined4 *)(puVar17 + -0x14) = 0x4e875;
    (*pcVar3)();
  }
  iVar18 = iStack_d0;
  iVar13 = iStack_108;
  *puStack_11c = uVar14 | ~(-1 << ((byte)uStack_e4 & 0x1f)) & *puStack_11c;
  if ((int)pmStack_f0 < (int)puVar15) {
    piStack_d4[(int)pmStack_f0 + 1] = iStack_114;
  }
  *(mp_ptr *)(puVar17 + -4) = remp;
  iVar4 = iStack_e0;
  *(int *)(puVar17 + -8) = iVar13;
  *(int *)(puVar17 + -0xc) = iVar18;
  *(int *)(puVar17 + -0x10) = iVar18;
  pcVar3 = *(code **)(iVar4 + 100);
  *(undefined4 *)(puVar17 + -0x14) = 0x4e8c9;
  iVar9 = (*pcVar3)();
  puVar10 = local_c0;
  iVar4 = iStack_cc;
  *(int *)(iVar18 + iVar13 * 4) = iVar9;
  iVar13 = (uint)(iVar9 != 0) + iVar13;
  puVar15 = (uint *)(uStack_100 + (int)local_c0);
  iVar18 = (int)pmStack_f0 + iStack_cc;
  if (uStack_e4 == 0) {
    *(int *)(puVar17 + -8) = iStack_cc;
    *(uint **)(puVar17 + -0xc) = local_c0;
    *(uint **)(puVar17 + -0x10) = puVar15;
    pcVar3 = *(code **)(iStack_e0 + 0x24);
    *(undefined4 *)(puVar17 + -0x14) = 0x4ecd9;
    (*pcVar3)();
LAB_0004ecdc:
    iStack_cc = iVar18;
  }
  else {
    *(uint *)(puVar17 + -4) = uStack_e4;
    *(int *)(puVar17 + -8) = iVar4;
    *(uint **)(puVar17 + -0xc) = puVar10;
    *(uint **)(puVar17 + -0x10) = puVar15;
    pcVar3 = *(code **)(iStack_e0 + 0x38);
    *(undefined4 *)(puVar17 + -0x14) = 0x4e915;
    uVar14 = (*pcVar3)();
    if (uVar14 == 0) goto LAB_0004ecdc;
    local_c0[iVar18] = uVar14;
    iStack_cc = iVar18 + 1;
  }
  pmStack_f0 = (mp_ptr)*puVar15;
  uVar6 = uStack_e8 - 1 >> 5;
  uVar14 = uVar6 + 1;
  if ((int)pmStack_d8 < iVar13) {
    *(uint *)(puVar17 + -8) = uVar14 * 4;
    *(undefined4 *)(puVar17 + -0xc) = 0;
    *(uint **)(puVar17 + -0x10) = local_c0;
    *(undefined4 *)(puVar17 + -0x14) = 0x4ee04;
    memset(*(void **)(puVar17 + -0x10),*(int *)(puVar17 + -0xc),*(size_t *)(puVar17 + -8));
    goto LAB_0004e9ab;
  }
  iVar18 = (int)pmStack_d8 - iVar13;
  if (iVar18 <= (int)uVar14) {
    *(int **)(puVar17 + -0xc) = piStack_120;
    *(int *)(puVar17 + -0x10) = iVar13;
    *(int *)(puVar17 + -0x14) = iStack_d0;
    *(mp_ptr *)(puVar17 + -0x18) = pmStack_d8;
    *(int **)(puVar17 + -0x1c) = piStack_d4;
    *(int *)(puVar17 + -0x20) = iStack_dc;
    iStack_108 = iVar18;
    uStack_100 = uVar14;
    *(undefined4 *)(puVar17 + -0x24) = 0x4ead1;
    __gmpn_div_q(*(mp_ptr *)(puVar17 + -0x20),*(mp_srcptr *)(puVar17 + -0x1c),
                 *(mp_size_t *)(puVar17 + -0x18),*(mp_srcptr *)(puVar17 + -0x14),
                 *(mp_size_t *)(puVar17 + -0x10),*(mp_ptr *)(puVar17 + -0xc));
    puVar10 = local_c0;
    iVar13 = iStack_e0;
    uVar16 = (uint)(*(int *)(iStack_dc + iStack_108 * 4) != 0) + iStack_108;
    uVar14 = uStack_100;
    if ((int)uVar16 <= (int)uStack_100) {
      if ((uStack_100 != uVar16) || (uStack_e4 == 0)) {
        uStack_e4 = uStack_100;
        *(uint *)(puVar17 + -8) = uVar16;
        *(int *)(puVar17 + -0xc) = iStack_dc;
        *(uint **)(puVar17 + -0x10) = puVar10;
        pcVar3 = *(code **)(iVar13 + 0x28);
        *(undefined4 *)(puVar17 + -0x14) = 0x4eb2a;
        (*pcVar3)();
        if (uStack_e4 != uVar16) {
          *(uint *)(puVar17 + -8) = (uStack_e4 - uVar16) * 4;
          *(undefined4 *)(puVar17 + -0xc) = 0;
          *(uint **)(puVar17 + -0x10) = puVar10 + uVar16;
          *(undefined4 *)(puVar17 + -0x14) = 0x4eb55;
          memset(*(void **)(puVar17 + -0x10),*(int *)(puVar17 + -0xc),*(size_t *)(puVar17 + -8));
        }
        goto LAB_0004e9ab;
      }
      if (*(uint *)(iStack_dc + -4 + uVar16 * 4) >> ((byte)uStack_e4 & 0x1f) == 0) {
        *(uint *)(puVar17 + -8) = uVar16;
        *(int *)(puVar17 + -0xc) = iStack_dc;
        *(uint **)(puVar17 + -0x10) = local_c0;
        pcVar3 = *(code **)(iVar13 + 0x28);
        *(undefined4 *)(puVar17 + -0x14) = 0x4ede2;
        (*pcVar3)();
        goto LAB_0004e9ab;
      }
    }
  }
  puVar10 = local_c0;
  if (uVar14 != 1) {
    *(uint *)(puVar17 + -8) = uVar6 * 4;
    *(undefined4 *)(puVar17 + -0xc) = 0xff;
    *(uint **)(puVar17 + -0x10) = local_c0;
    *(undefined4 *)(puVar17 + -0x14) = 0x4e98f;
    memset(*(void **)(puVar17 + -0x10),*(int *)(puVar17 + -0xc),*(size_t *)(puVar17 + -8));
    puVar10 = local_c0 + uVar6;
  }
  *puVar10 = 0xffffffff >> ((byte)iStack_118 & 0x1f);
LAB_0004e9ab:
  iStack_104 = iStack_104 + -1;
  *puVar15 = *puVar15 | (uint)pmStack_f0;
  iVar13 = iStack_dc;
  if (iStack_10c == 0) goto LAB_0004e9ce;
  goto LAB_0004e690;
LAB_0004efbf:
  if (local_124 == (int *)0x0) {
    pmStack_d8 = (mp_ptr)0x1;
  }
  else {
    pmVar8 = pmVar5;
    if (pmVar5 == (mp_ptr)0x0) {
LAB_0004efd7:
      if ((local_f8 != local_124) && ((int)pmVar8 < (int)rootp)) {
        piVar12 = local_f8 + (int)pmVar8;
        piVar11 = local_124 + (int)pmVar8;
        do {
          iVar13 = *piVar12;
          piVar12 = piVar12 + 1;
          *piVar11 = iVar13;
          piVar11 = piVar11 + 1;
        } while ((int *)((int)local_f8 + local_128 + 4) != piVar12);
      }
    }
    else {
      *(mp_ptr *)(puVar17 + -4) = pmVar5;
      *(int *)(puVar17 + -8) = iVar13;
      *(int **)(puVar17 + -0xc) = local_f8;
      *(int **)(puVar17 + -0x10) = local_124;
      *(undefined4 *)(puVar17 + -0x14) = 0x4f0a5;
      iVar13 = __gmpn_sub_n();
      if (iVar13 == 0) goto LAB_0004efd7;
      if (rootp != pmVar5) {
        pmVar8 = (mp_ptr)((int)pmVar5 + 1);
        local_c0 = (uint *)((int)pmVar5 * 4);
        iVar13 = local_f8[(int)pmVar5];
        local_124[(int)pmVar5] = iVar13 + -1;
        if (iVar13 == 0) {
          if ((int)rootp <= (int)pmVar8) goto LAB_0004f017;
          iVar13 = local_f8[(int)pmVar5 + 1];
          local_124[(int)pmVar5 + 1] = iVar13 + -1;
          pmVar8 = (mp_ptr)((int)pmVar5 + 2);
          while (iVar13 == 0) {
            if (rootp == pmVar8) goto LAB_0004f017;
            iVar13 = local_f8[(int)pmVar8];
            local_124[(int)pmVar8] = iVar13 + -1;
            pmVar8 = (mp_ptr)((int)pmVar8 + 1);
          }
        }
        goto LAB_0004efd7;
      }
    }
LAB_0004f017:
    iVar13 = local_124[local_134];
    while (iVar13 == 0) {
      iVar13 = local_124[(int)rootp - 2];
      rootp = (mp_ptr)((int)rootp - 1);
    }
    pmStack_d8 = rootp;
  }
  goto LAB_0004e9e0;
}



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

{
  byte bVar1;
  code *pcVar2;
  uint uVar3;
  int iVar4;
  uint uVar5;
  int iVar6;
  uint *puVar7;
  int *piVar8;
  int *piVar9;
  int *extraout_ECX;
  int iVar10;
  uint uVar11;
  uint *puVar12;
  uint uVar13;
  undefined1 *puVar14;
  int iVar15;
  int unaff_EDI;
  int in_GS_OFFSET;
  ushort in_FPUControlWord;
  undefined8 uVar16;
  undefined1 auStack_13c [8];
  int local_134;
  uint uStack_130;
  uint *puStack_12c;
  int local_128;
  int *local_124;
  int iStack_120;
  uint *puStack_11c;
  int iStack_118;
  undefined4 uStack_114;
  int iStack_110;
  int iStack_10c;
  int iStack_108;
  int iStack_104;
  uint uStack_100;
  uint *puStack_fc;
  int *local_f8;
  uint uStack_f4;
  uint uStack_f0;
  uint uStack_ec;
  uint uStack_e8;
  uint uStack_e4;
  int iStack_e0;
  int iStack_dc;
  uint uStack_d8;
  int iStack_d4;
  int iStack_d0;
  int iStack_cc;
  undefined4 uStack_c8;
  int local_c4;
  uint *local_c0;
  int iStack_bc;
  ushort uStack_b8;
  int iStack_a8;
  uint auStack_a4 [33];
  int local_20;
  
  uVar16 = FUN_00025194();
  local_124 = (int *)((ulonglong)uVar16 >> 0x20);
  local_c0 = (uint *)uVar16;
  local_c4 = unaff_EDI + 0x4fbe7;
  puVar14 = auStack_13c;
  local_20 = *(int *)(in_GS_OFFSET + 0x14);
  local_134 = param_1 + 0x3fffffff;
  uVar11 = extraout_ECX[local_134];
  local_128 = local_134 * 4;
  uVar5 = 0x1f;
  if (uVar11 != 0) {
    for (; uVar11 >> uVar5 == 0; uVar5 = uVar5 - 1) {
    }
  }
  iVar10 = (uVar5 ^ 0x1f) + 1;
  uVar5 = param_1 * 0x20 - iVar10;
  if (uVar5 < param_2) {
    *local_c0 = 1;
    if (local_124 == (int *)0x0) {
      iVar10 = *extraout_ECX + -1;
    }
    else {
      iVar10 = *extraout_ECX;
      *local_124 = iVar10 + -1;
      if (iVar10 == 0) {
        if (1 < (int)param_1) {
          iVar10 = extraout_ECX[1];
          local_124[1] = iVar10 + -1;
          if (iVar10 == 0) {
            if (param_1 == 2) goto LAB_0004ef98;
            iVar10 = extraout_ECX[2];
            uVar11 = 3;
            local_124[2] = iVar10 + -1;
            while (iVar10 == 0) {
              if (param_1 == uVar11) goto LAB_0004ef98;
              iVar10 = extraout_ECX[uVar11];
              local_124[uVar11] = iVar10 + -1;
              uVar11 = uVar11 + 1;
            }
          }
          else {
            uVar11 = 2;
          }
          if ((extraout_ECX != local_124) && ((int)uVar11 < (int)param_1)) {
            piVar9 = extraout_ECX + uVar11;
            piVar8 = local_124 + uVar11;
            do {
              iVar10 = *piVar9;
              piVar9 = piVar9 + 1;
              *piVar8 = iVar10;
              piVar8 = piVar8 + 1;
            } while (extraout_ECX + param_1 + 0x40000000 != piVar9);
          }
        }
      }
      else if ((extraout_ECX != local_124) && (1 < (int)param_1)) {
        piVar9 = extraout_ECX + 1;
        piVar8 = local_124;
        do {
          piVar8 = piVar8 + 1;
          iVar10 = *piVar9;
          piVar9 = piVar9 + 1;
          *piVar8 = iVar10;
        } while (extraout_ECX + param_1 + 0x40000000 != piVar9);
      }
LAB_0004ef98:
      iVar10 = local_124[local_134];
    }
    uStack_d8 = param_1 - (iVar10 == 0);
    goto LAB_0004e9ee;
  }
  if (iVar10 == 0x20) {
    uVar11 = extraout_ECX[param_1 + 0x3ffffffe];
  }
  else {
    uVar11 = (uint)extraout_ECX[(param_1 - 1) - (uint)(param_1 != 1)] >>
             (0x20 - (byte)iVar10 & 0x1f) | uVar11 << ((byte)iVar10 & 0x1f);
  }
  uVar11 = (uint)*(byte *)(unaff_EDI + 0x32bc7 + (uVar11 >> 0x18));
  if (uVar5 < 0x1000000) {
    uStack_e8 = (uVar5 * 0x100 | uVar11) / param_2;
    uVar11 = uStack_e8 & 0xff;
    uStack_e8 = uStack_e8 >> 8;
  }
  else {
    uStack_e8 = uVar5 / param_2;
    uVar11 = (uVar5 % param_2 << 8 | uVar11) / param_2;
  }
  iVar10 = uStack_e8 * param_2;
  bVar1 = *(byte *)(unaff_EDI + 0x32ac7 + uVar11);
  uStack_ec = param_2 - 1;
  uVar11 = 3;
  for (uVar5 = uStack_ec >> 2; uVar5 != 0; uVar5 = uVar5 >> 1) {
    uVar11 = uVar11 + 1;
  }
  puStack_fc = auStack_a4;
  iVar15 = 0;
  auStack_a4[0] = uStack_e8;
  if (8 < uStack_e8) {
    iVar4 = 0;
    do {
      while (iVar15 = iVar4, uVar11 < uStack_e8) {
        uStack_e8 = uStack_e8 + uVar11 >> 1;
        puStack_fc[iVar15 + 1] = uStack_e8;
        iVar4 = iVar15 + 1;
        if (uStack_e8 < 9) goto LAB_0004e56d;
      }
      uStack_e8 = uStack_e8 - 1;
      puStack_fc[iVar15 + 1] = uStack_e8;
      iVar4 = iVar15 + 1;
    } while (uStack_e8 != 8);
    uStack_e8 = 8;
LAB_0004e56d:
    iVar15 = iVar15 + 1;
  }
  iStack_a8 = 0;
  uStack_f4 = iVar10 - uStack_e8;
  *local_c0 = (bVar1 | 0x100) >> (8U - (char)uStack_e8 & 0x1f);
  uStack_c8 = 0;
  uStack_b8 = in_FPUControlWord | 0xc00;
  iStack_bc = (int)ROUND((double)param_2 * *(double *)(unaff_EDI + 0x32cc7) *
                         (double)*(float *)(&UNK_00032ccf + unaff_EDI));
  iStack_cc = param_1 + 2 + iStack_bc;
  uVar11 = (param_1 + 1 + iStack_cc * 2) * 4;
  local_f8 = extraout_ECX;
  if (uVar11 < 0x7f01) {
    iStack_120 = -(uVar11 + 0x1b & 0xfffffff0);
    puVar14 = auStack_13c + iStack_120;
    iStack_120 = (int)&uStack_130 + iStack_120;
  }
  else {
    iStack_120 = __gmp_tmp_reentrant_alloc(&iStack_a8,uVar11);
    uVar16 = CONCAT44(local_124,local_c0);
    puVar14 = auStack_13c;
  }
  local_124 = (int *)((ulonglong)uVar16 >> 0x20);
  iVar10 = iStack_120 + local_128 + 8;
  iStack_d0 = iVar10 + iStack_cc * 4;
  iStack_d4 = (int)local_124;
  if (local_124 == (int *)0x0) {
    iStack_d4 = iStack_120;
  }
  if (iVar15 != 0) {
    iStack_104 = iVar15 + -1;
    puStack_fc = auStack_a4;
    iStack_cc = 1;
    iStack_e0 = *(int *)(local_c4 + -0x26c);
    iStack_dc = iVar10;
LAB_0004e690:
    local_124 = (int *)((ulonglong)uVar16 >> 0x20);
    local_c0 = (uint *)uVar16;
    uStack_e4 = uStack_f4 - uStack_e8 * uStack_ec;
    iVar10 = param_1 - (uStack_e4 >> 5);
    piVar9 = local_f8 + (uStack_e4 >> 5);
    if ((uStack_e4 & 0x1f) == 0) {
      *(int *)(puVar14 + -8) = iVar10;
      *(int **)(puVar14 + -0xc) = piVar9;
      iVar15 = iStack_e0;
      *(int *)(puVar14 + -0x10) = iStack_d4;
      pcVar2 = *(code **)(iVar15 + 0x28);
      *(undefined4 *)(puVar14 + -0x14) = 0x4ed34;
      (*pcVar2)();
    }
    else {
      *(uint *)(puVar14 + -4) = uStack_e4 & 0x1f;
      *(int *)(puVar14 + -8) = iVar10;
      *(int **)(puVar14 + -0xc) = piVar9;
      iVar15 = iStack_e0;
      *(int *)(puVar14 + -0x10) = iStack_d4;
      pcVar2 = *(code **)(iVar15 + 0x80);
      *(undefined4 *)(puVar14 + -0x14) = 0x4e6dc;
      (*pcVar2)();
    }
    iVar4 = iStack_d4;
    iVar15 = iStack_dc;
    uStack_d8 = iVar10 - (uint)(*(int *)(iStack_d4 + (iVar10 + -1) * 4) == 0);
    do {
      *(int *)(puVar14 + -0x10) = iVar15;
      *(uint *)(puVar14 + -0x14) = uStack_ec;
      *(int *)(puVar14 + -0x18) = iStack_cc;
      *(uint **)(puVar14 + -0x1c) = local_c0;
      *(int *)(puVar14 + -0x20) = iStack_d0;
      *(undefined4 *)(puVar14 + -0x24) = 0x4e727;
      iVar10 = __gmpn_pow_1();
      *(int *)(puVar14 + -0x10) = iStack_cc;
      *(uint **)(puVar14 + -0x14) = local_c0;
      *(int *)(puVar14 + -0x18) = iVar10;
      *(int *)(puVar14 + -0x1c) = iStack_d0;
      *(int *)(puVar14 + -0x20) = iVar15;
      iStack_dc = iVar10;
      *(undefined4 *)(puVar14 + -0x24) = 0x4e74f;
      __gmpn_mul();
      iVar10 = iStack_d4;
      uVar11 = uStack_d8;
      iVar6 = (iStack_cc + iStack_dc) -
              (uint)(*(int *)(iVar15 + -4 + (iStack_cc + iStack_dc) * 4) == 0);
      puVar7 = local_c0;
      if (iVar6 <= (int)uStack_d8) {
        uVar5 = uStack_d8;
        if (uStack_d8 != iVar6) goto LAB_0004eb66;
        do {
          uVar5 = uVar5 + -1;
          if ((int)uVar5 < 0) {
            iStack_108 = iStack_dc;
            uStack_114 = 0;
            iStack_10c = iStack_104;
            uStack_e8 = puStack_fc[iStack_104] - puStack_fc[iStack_104 + 1];
            iStack_118 = puStack_fc[iStack_104 + 1] - puStack_fc[iStack_104];
            uStack_f0 = uStack_e8 >> 5;
            uStack_f4 = iStack_118 + uStack_e4;
            uVar11 = uStack_e4 - 1;
            uStack_e4 = uStack_e8 & 0x1f;
            puVar12 = (uint *)((uVar11 >> 5) - (uStack_f4 >> 5));
            uStack_100 = uStack_f0 * 4;
            uVar11 = 0;
            iStack_110 = (int)puVar12 + 1;
            uVar5 = uStack_f4 >> 5;
            puVar7 = (uint *)(iStack_d4 + uStack_f0 * 4);
            iStack_dc = iVar15;
            uStack_d8 = uStack_f0;
            goto LAB_0004e83d;
          }
          uVar13 = *(uint *)(iVar4 + uVar5 * 4);
          uVar3 = *(uint *)(iVar15 + uVar5 * 4);
        } while (uVar3 == uVar13);
        if (uVar3 <= uVar13) goto LAB_0004eb66;
      }
      do {
        uVar11 = *puVar7;
        *puVar7 = *puVar7 - 1;
        puVar7 = puVar7 + 1;
      } while (uVar11 == 0);
    } while( true );
  }
  iStack_cc = 1;
LAB_0004e9ce:
  piVar9 = local_f8;
  local_c0 = (uint *)uVar16;
  if ((param_3 == 0) || (*local_c0 < 2)) {
    do {
      local_124 = (int *)((ulonglong)uVar16 >> 0x20);
      local_c0 = (uint *)uVar16;
      *(int *)(puVar14 + -0x10) = iStack_d0;
      *(uint *)(puVar14 + -0x14) = param_2;
      *(int *)(puVar14 + -0x18) = iStack_cc;
      *(uint **)(puVar14 + -0x1c) = local_c0;
      *(int *)(puVar14 + -0x20) = iVar10;
      *(undefined4 *)(puVar14 + -0x24) = 0x4ea47;
      uVar11 = __gmpn_pow_1();
      uVar16 = CONCAT44(local_124,local_c0);
      if ((int)uVar11 <= (int)param_1) {
        uVar5 = param_1;
        if (param_1 != uVar11) goto LAB_0004efbf;
        do {
          uVar5 = uVar5 - 1;
          if ((int)uVar5 < 0) {
            uStack_d8 = 0;
            uVar16 = CONCAT44(local_124,local_c0);
            goto LAB_0004e9e0;
          }
          uVar13 = *(uint *)(iVar10 + uVar5 * 4);
        } while (uVar13 == piVar9[uVar5]);
        if (uVar13 <= (uint)piVar9[uVar5]) goto LAB_0004efbf;
      }
      do {
        iVar15 = *local_c0;
        *local_c0 = *local_c0 + -1;
        local_c0 = (uint *)((int *)local_c0 + 1);
      } while (iVar15 == 0);
    } while( true );
  }
LAB_0004e9e0:
  local_124 = (int *)((ulonglong)uVar16 >> 0x20);
  local_c0 = (uint *)uVar16;
  if (iStack_a8 != 0) {
    *(int *)(puVar14 + -0x10) = iStack_a8;
    *(undefined4 *)(puVar14 + -0x14) = 0x4f1a9;
    __gmp_tmp_reentrant_free();
    uVar16 = CONCAT44(local_124,local_c0);
  }
LAB_0004e9ee:
  local_124 = (int *)((ulonglong)uVar16 >> 0x20);
  local_c0 = (uint *)uVar16;
  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {
    return uStack_d8;
  }
                    /* WARNING: Subroutine does not return */
  *(undefined **)(puVar14 + -4) = &UNK_0004f214;
  FUN_0007ebe0();
LAB_0004eb66:
  iStack_108 = iStack_dc;
  iStack_10c = iStack_104;
  uStack_e8 = puStack_fc[iStack_104] - puStack_fc[iStack_104 + 1];
  iStack_118 = puStack_fc[iStack_104 + 1] - puStack_fc[iStack_104];
  uStack_f0 = uStack_e8 >> 5;
  uStack_f4 = iStack_118 + uStack_e4;
  uVar5 = uStack_f4 >> 5;
  puStack_11c = (uint *)((uStack_e4 - 1 >> 5) - uVar5);
  iStack_110 = (int)puStack_11c + 1;
  uStack_e4 = uVar5;
  iStack_dc = iVar15;
  if (iVar6 != 0) {
    *(int *)(puVar14 + -4) = iVar6;
    *(int *)(puVar14 + -8) = iStack_dc;
    *(int *)(puVar14 + -0xc) = iVar10;
    *(int *)(puVar14 + -0x10) = iVar10;
    uStack_d8 = iVar6;
    *(undefined4 *)(puVar14 + -0x14) = 0x4ee32;
    iVar10 = __gmpn_sub_n();
    if ((iVar10 != 0) && (uVar11 != uStack_d8)) {
      piVar9 = (int *)(iStack_d4 + uStack_d8 * 4);
      iVar10 = *piVar9;
      *piVar9 = iVar10 + -1;
      if ((iVar10 == 0) && ((int)(uStack_d8 + 1) < (int)uVar11)) {
        piVar9 = (int *)(iStack_d4 + (uStack_d8 + 1) * 4);
        iVar15 = uStack_d8 + 2;
        iVar10 = *piVar9;
        *piVar9 = iVar10 + -1;
        for (; (iVar10 == 0 && (uVar11 != iVar15)); iVar15 = iVar15 + 1) {
          iVar10 = *(int *)(iStack_d4 + iVar15 * 4);
          *(int *)(iStack_d4 + iVar15 * 4) = iVar10 + -1;
        }
      }
    }
  }
  iVar4 = iStack_d4;
  iVar15 = iStack_e0;
  iVar10 = *(int *)(iStack_d4 + (uVar11 + -1) * 4);
  while (iVar10 == 0) {
    iVar10 = *(int *)(iStack_d4 + (uVar11 + -2) * 4);
    uVar11 = uVar11 + -1;
  }
  uStack_100 = uStack_f0 * 4;
  puVar7 = (uint *)(iStack_d4 + uStack_f0 * 4);
  uStack_d8 = uStack_f0 + uVar11;
  uVar5 = uStack_e8 & 0x1f;
  uStack_130 = uStack_e4;
  puStack_12c = puVar7;
  if (uVar5 == 0) {
    uStack_e4 = uVar5;
    *(uint *)(puVar14 + -8) = uVar11;
    *(int *)(puVar14 + -0xc) = iStack_d4;
    *(uint **)(puVar14 + -0x10) = puVar7;
    pcVar2 = *(code **)(iVar15 + 0x24);
    *(undefined4 *)(puVar14 + -0x14) = 0x4ed9a;
    (*pcVar2)();
  }
  else {
    uStack_e4 = uVar5;
    *(uint *)(puVar14 + -4) = uVar5;
    *(uint *)(puVar14 + -8) = uVar11;
    *(int *)(puVar14 + -0xc) = iVar4;
    iVar10 = iStack_e0;
    *(uint **)(puVar14 + -0x10) = puVar7;
    pcVar2 = *(code **)(iVar10 + 0x38);
    *(undefined4 *)(puVar14 + -0x14) = 0x4ec66;
    iVar10 = (*pcVar2)();
    if (iVar10 != 0) {
      *(int *)(iStack_d4 + uStack_d8 * 4) = iVar10;
      uStack_d8 = uStack_d8 + 1;
    }
  }
  uVar11 = *puStack_12c;
  uVar5 = uStack_130;
  puVar7 = puStack_12c;
  puVar12 = puStack_11c;
  if ((int)uStack_f0 < (int)puStack_11c) {
    uStack_114 = *(undefined4 *)(iStack_d4 + uStack_100 + 4);
  }
LAB_0004e83d:
  piVar9 = local_f8 + uVar5;
  puStack_11c = puVar7;
  if ((uStack_f4 & 0x1f) == 0) {
    *(int *)(puVar14 + -8) = iStack_110;
    *(int **)(puVar14 + -0xc) = piVar9;
    *(int *)(puVar14 + -0x10) = iStack_d4;
    pcVar2 = *(code **)(iStack_e0 + 0x28);
    *(undefined4 *)(puVar14 + -0x14) = 0x4ed09;
    (*pcVar2)();
  }
  else {
    *(uint *)(puVar14 + -4) = uStack_f4 & 0x1f;
    *(int *)(puVar14 + -8) = iStack_110;
    *(int **)(puVar14 + -0xc) = piVar9;
    iVar10 = iStack_e0;
    *(int *)(puVar14 + -0x10) = iStack_d4;
    pcVar2 = *(code **)(iVar10 + 0x80);
    *(undefined4 *)(puVar14 + -0x14) = 0x4e875;
    (*pcVar2)();
  }
  iVar15 = iStack_d0;
  iVar10 = iStack_108;
  *puStack_11c = uVar11 | ~(-1 << ((byte)uStack_e4 & 0x1f)) & *puStack_11c;
  if ((int)uStack_f0 < (int)puVar12) {
    *(undefined4 *)(iStack_d4 + (uStack_f0 + 1) * 4) = uStack_114;
  }
  *(uint *)(puVar14 + -4) = param_2;
  iVar4 = iStack_e0;
  *(int *)(puVar14 + -8) = iVar10;
  *(int *)(puVar14 + -0xc) = iVar15;
  *(int *)(puVar14 + -0x10) = iVar15;
  pcVar2 = *(code **)(iVar4 + 100);
  *(undefined4 *)(puVar14 + -0x14) = 0x4e8c9;
  iVar6 = (*pcVar2)();
  puVar7 = local_c0;
  iVar4 = iStack_cc;
  *(int *)(iVar15 + iVar10 * 4) = iVar6;
  iVar10 = (uint)(iVar6 != 0) + iVar10;
  puVar12 = (uint *)(uStack_100 + (int)local_c0);
  iVar15 = uStack_f0 + iStack_cc;
  if (uStack_e4 == 0) {
    *(int *)(puVar14 + -8) = iStack_cc;
    *(uint **)(puVar14 + -0xc) = local_c0;
    *(uint **)(puVar14 + -0x10) = puVar12;
    pcVar2 = *(code **)(iStack_e0 + 0x24);
    *(undefined4 *)(puVar14 + -0x14) = 0x4ecd9;
    (*pcVar2)();
LAB_0004ecdc:
    iStack_cc = iVar15;
  }
  else {
    *(uint *)(puVar14 + -4) = uStack_e4;
    *(int *)(puVar14 + -8) = iVar4;
    *(uint **)(puVar14 + -0xc) = puVar7;
    *(uint **)(puVar14 + -0x10) = puVar12;
    pcVar2 = *(code **)(iStack_e0 + 0x38);
    *(undefined4 *)(puVar14 + -0x14) = 0x4e915;
    uVar11 = (*pcVar2)();
    if (uVar11 == 0) goto LAB_0004ecdc;
    local_c0[iVar15] = uVar11;
    iStack_cc = iVar15 + 1;
  }
  uStack_f0 = *puVar12;
  uVar5 = uStack_e8 - 1 >> 5;
  uVar11 = uVar5 + 1;
  if ((int)uStack_d8 < iVar10) {
    *(uint *)(puVar14 + -8) = uVar11 * 4;
    *(undefined4 *)(puVar14 + -0xc) = 0;
    *(uint **)(puVar14 + -0x10) = local_c0;
    *(undefined4 *)(puVar14 + -0x14) = 0x4ee04;
    memset(*(void **)(puVar14 + -0x10),*(int *)(puVar14 + -0xc),*(size_t *)(puVar14 + -8));
    goto LAB_0004e9ab;
  }
  iVar15 = uStack_d8 - iVar10;
  if (iVar15 <= (int)uVar11) {
    *(int *)(puVar14 + -0xc) = iStack_120;
    *(int *)(puVar14 + -0x10) = iVar10;
    *(int *)(puVar14 + -0x14) = iStack_d0;
    *(uint *)(puVar14 + -0x18) = uStack_d8;
    *(int *)(puVar14 + -0x1c) = iStack_d4;
    *(int *)(puVar14 + -0x20) = iStack_dc;
    iStack_108 = iVar15;
    uStack_100 = uVar11;
    *(undefined4 *)(puVar14 + -0x24) = 0x4ead1;
    __gmpn_div_q();
    puVar7 = local_c0;
    iVar10 = iStack_e0;
    uVar13 = (uint)(*(int *)(iStack_dc + iStack_108 * 4) != 0) + iStack_108;
    uVar11 = uStack_100;
    if ((int)uVar13 <= (int)uStack_100) {
      if ((uStack_100 != uVar13) || (uStack_e4 == 0)) {
        uStack_e4 = uStack_100;
        *(uint *)(puVar14 + -8) = uVar13;
        *(int *)(puVar14 + -0xc) = iStack_dc;
        *(uint **)(puVar14 + -0x10) = puVar7;
        pcVar2 = *(code **)(iVar10 + 0x28);
        *(undefined4 *)(puVar14 + -0x14) = 0x4eb2a;
        (*pcVar2)();
        if (uStack_e4 != uVar13) {
          *(uint *)(puVar14 + -8) = (uStack_e4 - uVar13) * 4;
          *(undefined4 *)(puVar14 + -0xc) = 0;
          *(uint **)(puVar14 + -0x10) = puVar7 + uVar13;
          *(undefined4 *)(puVar14 + -0x14) = 0x4eb55;
          memset(*(void **)(puVar14 + -0x10),*(int *)(puVar14 + -0xc),*(size_t *)(puVar14 + -8));
        }
        goto LAB_0004e9ab;
      }
      if (*(uint *)(iStack_dc + -4 + uVar13 * 4) >> ((byte)uStack_e4 & 0x1f) == 0) {
        *(uint *)(puVar14 + -8) = uVar13;
        *(int *)(puVar14 + -0xc) = iStack_dc;
        *(uint **)(puVar14 + -0x10) = local_c0;
        pcVar2 = *(code **)(iVar10 + 0x28);
        *(undefined4 *)(puVar14 + -0x14) = 0x4ede2;
        (*pcVar2)();
        goto LAB_0004e9ab;
      }
    }
  }
  puVar7 = local_c0;
  if (uVar11 != 1) {
    *(uint *)(puVar14 + -8) = uVar5 * 4;
    *(undefined4 *)(puVar14 + -0xc) = 0xff;
    *(uint **)(puVar14 + -0x10) = local_c0;
    *(undefined4 *)(puVar14 + -0x14) = 0x4e98f;
    memset(*(void **)(puVar14 + -0x10),*(int *)(puVar14 + -0xc),*(size_t *)(puVar14 + -8));
    puVar7 = local_c0 + uVar5;
  }
  *puVar7 = 0xffffffff >> ((byte)iStack_118 & 0x1f);
LAB_0004e9ab:
  uVar16 = CONCAT44(local_124,local_c0);
  iStack_104 = iStack_104 + -1;
  *puVar12 = *puVar12 | uStack_f0;
  iVar10 = iStack_dc;
  if (iStack_10c == 0) goto LAB_0004e9ce;
  goto LAB_0004e690;
LAB_0004efbf:
  if (local_124 == (int *)0x0) {
    uStack_d8 = 1;
  }
  else {
    uVar5 = uVar11;
    if (uVar11 == 0) {
LAB_0004efd7:
      if ((local_f8 != local_124) && ((int)uVar5 < (int)param_1)) {
        piVar9 = local_f8 + uVar5;
        piVar8 = local_124 + uVar5;
        do {
          iVar10 = *piVar9;
          piVar9 = piVar9 + 1;
          *piVar8 = iVar10;
          piVar8 = piVar8 + 1;
        } while ((int *)((int)local_f8 + local_128 + 4) != piVar9);
      }
    }
    else {
      *(uint *)(puVar14 + -4) = uVar11;
      *(int *)(puVar14 + -8) = iVar10;
      *(int **)(puVar14 + -0xc) = local_f8;
      *(int **)(puVar14 + -0x10) = local_124;
      *(undefined4 *)(puVar14 + -0x14) = 0x4f0a5;
      iVar10 = __gmpn_sub_n();
      if (iVar10 == 0) goto LAB_0004efd7;
      if (param_1 != uVar11) {
        local_c0 = (uint *)(uVar11 * 4);
        uVar5 = uVar11 + 1;
        iVar10 = local_f8[uVar11];
        local_124[uVar11] = iVar10 + -1;
        if (iVar10 == 0) {
          if ((int)param_1 <= (int)uVar5) goto LAB_0004f017;
          iVar10 = local_f8[uVar11 + 1];
          local_124[uVar11 + 1] = iVar10 + -1;
          uVar5 = uVar11 + 2;
          while (iVar10 == 0) {
            if (param_1 == uVar5) goto LAB_0004f017;
            iVar10 = local_f8[uVar5];
            local_124[uVar5] = iVar10 + -1;
            uVar5 = uVar5 + 1;
          }
        }
        goto LAB_0004efd7;
      }
    }
LAB_0004f017:
    iVar10 = local_124[local_134];
    uStack_d8 = param_1;
    while (uVar16 = CONCAT44(local_124,local_c0), iVar10 == 0) {
      iVar10 = local_124[uStack_d8 - 2];
      uStack_d8 = uStack_d8 - 1;
    }
  }
  goto LAB_0004e9e0;
}


PUSH EBP
MOV EBP,ESP
PUSH EDI
CALL 0x00025194
ADD EDI,0x4fbe7
PUSH ESI
PUSH EBX
SUB ESP,0x12c
MOV dword ptr [EBP + 0xfffffee0],EDX
MOV dword ptr [EBP + 0xffffff0c],ECX
MOV dword ptr [EBP + 0xffffff40],EDI
MOV dword ptr [EBP + 0xffffff44],EAX
MOV EAX,GS:[0x14]
MOV dword ptr [EBP + -0x1c],EAX
XOR EAX,EAX
MOV EAX,dword ptr [EBP + 0x8]
ADD EAX,0x3fffffff
MOV EDX,dword ptr [ECX + EAX*0x4]
LEA EDI,[EAX*0x4 + 0x0]
MOV dword ptr [EBP + 0xfffffed0],EAX
MOV EAX,dword ptr [EBP + 0x8]
MOV dword ptr [EBP + 0xfffffedc],EDI
BSR ECX,EDX
XOR ECX,0x1f
SHL EAX,0x5
ADD ECX,0x1
SUB EAX,ECX
CMP EAX,dword ptr [EBP + 0xc]
JC 0x0004ef01
CMP ECX,0x20
JZ 0x0004ea0c
MOV ESI,EDX
MOV EDI,dword ptr [EBP + 0x8]
XOR EDX,EDX
SHL ESI,CL
CMP dword ptr [EBP + 0x8],0x1
SETNZ DL
LEA EBX,[EDI + -0x1]
MOV EDI,dword ptr [EBP + 0xffffff0c]
SUB EBX,EDX
MOV EDX,0x20
SUB EDX,ECX
MOV ECX,EDX
MOV EDX,dword ptr [EDI + EBX*0x4]
SHR EDX,CL
OR EDX,ESI
MOV EDI,dword ptr [EBP + 0xffffff40]
SHR EDX,0x18
MOVZX ECX,byte ptr [EDI + EDX*0x1 + 0xfffe2fe0]
CMP EAX,0xffffff
JA 0x0004f178
SHL EAX,0x8
XOR EDX,EDX
OR EAX,ECX
DIV dword ptr [EBP + 0xc]
MOV EDI,EAX
MOVZX EAX,AL
SHR EDI,0x8
MOV dword ptr [EBP + 0xffffff1c],EDI
MOV EBX,EDI
MOV EDI,dword ptr [EBP + 0xffffff40]
IMUL EBX,dword ptr [EBP + 0xc]
MOVZX EDI,byte ptr [EDI + EAX*0x1 + 0xfffe2ee0]
MOV EAX,dword ptr [EBP + 0xc]
SUB EAX,0x1
OR EDI,0x100
MOV EDX,EAX
MOV dword ptr [EBP + 0xffffff18],EAX
MOV EAX,0x3
SHR EDX,0x2
JZ 0x0004e527
LEA ESI,[ESI]
ADD EAX,0x1
SHR EDX,0x1
JNZ 0x0004e520
MOV EDX,dword ptr [EBP + 0xffffff1c]
LEA ECX,[EBP + 0xffffff60]
XOR ESI,ESI
MOV dword ptr [EBP + 0xffffff08],ECX
MOV dword ptr [EBP + 0xffffff60],EDX
CMP EDX,0x8
JBE 0x0004e573
LEA ESI,[ESI]
LEA ESI,[ESI]
CMP EAX,EDX
JNC 0x0004ed40
ADD EDX,EAX
MOV ECX,dword ptr [EBP + 0xffffff08]
ADD ESI,0x1
SHR EDX,0x1
MOV dword ptr [ECX + ESI*0x4],EDX
CMP EDX,0x8
JA 0x0004e550
MOV dword ptr [EBP + 0xffffff1c],EDX
MOV EAX,dword ptr [EBP + 0xffffff1c]
MOV ECX,0x8
MOV EDX,dword ptr [EBP + 0xffffff44]
MOV dword ptr [EBP + 0xffffff5c],0x0
SUB ECX,EAX
SUB EBX,EAX
MOV EAX,dword ptr [EBP + 0xc]
SHR EDI,CL
MOV dword ptr [EBP + 0xffffff10],EBX
MOV dword ptr [EDX],EDI
XOR EDX,EDX
MOV EDI,dword ptr [EBP + 0x8]
FNSTCW word ptr [EBP + 0xffffff4e]
MOV dword ptr [EBP + 0xffffff38],EAX
MOV EAX,dword ptr [EBP + 0xffffff40]
MOV dword ptr [EBP + 0xffffff3c],EDX
FILD qword ptr [EBP + 0xffffff38]
FMUL qword ptr [EAX + 0xfffe30e0]
FMUL dword ptr [EAX + 0xfffe30e8]
MOVZX EAX,word ptr [EBP + 0xffffff4e]
OR AH,0xc
MOV word ptr [EBP + 0xffffff4c],AX
FLDCW word ptr [EBP + 0xffffff4c]
FISTP dword ptr [EBP + 0xffffff48]
FLDCW word ptr [EBP + 0xffffff4e]
MOV EAX,dword ptr [EBP + 0xffffff48]
LEA EDX,[EDI + EAX*0x1 + 0x2]
LEA EAX,[EDI + EDX*0x2 + 0x1]
SHL EAX,0x2
CMP EAX,0x7f00
JA 0x0004f146
ADD EAX,0x1b
AND EAX,0xfffffff0
SUB ESP,EAX
LEA EAX,[ESP + 0xf]
AND EAX,0xfffffff0
MOV dword ptr [EBP + 0xfffffee4],EAX
MOV ECX,EAX
MOV EAX,dword ptr [EBP + 0xfffffedc]
LEA EDI,[ECX + EAX*0x1 + 0x8]
LEA EAX,[EDI + EDX*0x4]
MOV dword ptr [EBP + 0xffffff34],EAX
MOV EAX,dword ptr [EBP + 0xfffffee0]
TEST EAX,EAX
CMOVZ EAX,ECX
MOV dword ptr [EBP + 0xffffff30],EAX
TEST ESI,ESI
JZ 0x0004f137
LEA EAX,[ESI + -0x1]
MOV dword ptr [EBP + 0xffffff28],EDI
MOV dword ptr [EBP + 0xffffff00],EAX
LEA EAX,[EBP + 0xffffff60]
MOV dword ptr [EBP + 0xffffff08],EAX
MOV EAX,dword ptr [EBP + 0xffffff40]
MOV dword ptr [EBP + 0xffffff38],0x1
MOV EAX,dword ptr [EAX + 0xfffffd94]
MOV dword ptr [EBP + 0xffffff24],EAX
LEA ESI,[ESI]
NOP
MOV EAX,dword ptr [EBP + 0xffffff1c]
IMUL EAX,dword ptr [EBP + 0xffffff18]
MOV ECX,dword ptr [EBP + 0xffffff10]
MOV ESI,dword ptr [EBP + 0x8]
MOV EBX,dword ptr [EBP + 0xffffff0c]
SUB ECX,EAX
MOV EAX,ECX
MOV dword ptr [EBP + 0xffffff20],ECX
SHR EAX,0x5
SUB ESI,EAX
LEA EAX,[EBX + EAX*0x4]
AND ECX,0x1f
JZ 0x0004ed20
PUSH ECX
PUSH ESI
PUSH EAX
MOV EAX,dword ptr [EBP + 0xffffff24]
PUSH dword ptr [EBP + 0xffffff30]
CALL dword ptr [EAX + 0x80]
ADD ESP,0x10
MOV ECX,dword ptr [EBP + 0xffffff30]
XOR EAX,EAX
MOV EDI,dword ptr [EBP + 0xffffff28]
MOV EBX,dword ptr [ECX + ESI*0x4 + -0x4]
TEST EBX,EBX
SETZ AL
SUB ESI,EAX
MOV dword ptr [EBP + 0xffffff2c],ESI
MOV ESI,ECX
SUB ESP,0xc
MOV EBX,dword ptr [EBP + 0xffffff40]
PUSH EDI
PUSH dword ptr [EBP + 0xffffff18]
PUSH dword ptr [EBP + 0xffffff38]
PUSH dword ptr [EBP + 0xffffff44]
PUSH dword ptr [EBP + 0xffffff34]
CALL 0x0001c0c0
ADD ESP,0x14
PUSH dword ptr [EBP + 0xffffff38]
MOV EBX,dword ptr [EBP + 0xffffff40]
PUSH dword ptr [EBP + 0xffffff44]
PUSH EAX
PUSH dword ptr [EBP + 0xffffff34]
PUSH EDI
MOV dword ptr [EBP + 0xffffff28],EAX
CALL 0x0001bbe0
MOV EAX,dword ptr [EBP + 0xffffff38]
XOR EBX,EBX
ADD ESP,0x20
MOV EDX,dword ptr [EBP + 0xffffff28]
ADD EAX,EDX
MOV ECX,dword ptr [EDI + EAX*0x4 + -0x4]
TEST ECX,ECX
SETZ BL
SUB EAX,EBX
MOV EBX,EAX
CMP dword ptr [EBP + 0xffffff2c],EAX
JL 0x0004ea80
JNZ 0x0004eb66
MOV EAX,dword ptr [EBP + 0xffffff2c]
JMP 0x0004e79c
MOV ECX,dword ptr [ESI + EAX*0x4]
CMP dword ptr [EDI + EAX*0x4],ECX
JNZ 0x0004eb60
SUB EAX,0x1
JNS 0x0004e790
MOV EBX,dword ptr [EBP + 0xffffff08]
MOV dword ptr [EBP + 0xfffffefc],EDX
MOV EDX,dword ptr [EBP + 0xffffff00]
MOV dword ptr [EBP + 0xffffff28],EDI
MOV dword ptr [EBP + 0xfffffef0],0x0
MOV EAX,dword ptr [EBX + EDX*0x4]
MOV dword ptr [EBP + 0xfffffef8],EDX
MOV EDX,dword ptr [EBX + EDX*0x4 + 0x4]
MOV ESI,EAX
SUB ESI,EDX
SUB EDX,EAX
MOV EAX,dword ptr [EBP + 0xffffff20]
MOV EBX,ESI
MOV dword ptr [EBP + 0xfffffeec],EDX
MOV EDI,ESI
SHR EBX,0x5
ADD EDX,EAX
MOV dword ptr [EBP + 0xffffff1c],ESI
MOV ECX,EDX
MOV ESI,EBX
MOV dword ptr [EBP + 0xffffff14],EBX
MOV dword ptr [EBP + 0xffffff2c],EBX
LEA EBX,[EAX + -0x1]
SHR ECX,0x5
MOV EAX,EDI
SHR EBX,0x5
AND EAX,0x1f
MOV dword ptr [EBP + 0xffffff10],EDX
SUB EBX,ECX
MOV dword ptr [EBP + 0xffffff20],EAX
LEA EAX,[ESI*0x4 + 0x0]
XOR ESI,ESI
LEA EDX,[EBX + 0x1]
MOV dword ptr [EBP + 0xffffff04],EAX
MOV dword ptr [EBP + 0xfffffef4],EDX
MOV EDX,dword ptr [EBP + 0xffffff30]
ADD EDX,EAX
MOV EAX,dword ptr [EBP + 0xffffff0c]
MOV dword ptr [EBP + 0xfffffee8],EDX
LEA EAX,[EAX + ECX*0x4]
MOV ECX,dword ptr [EBP + 0xffffff10]
AND ECX,0x1f
JZ 0x0004ecf0
PUSH ECX
PUSH dword ptr [EBP + 0xfffffef4]
PUSH EAX
MOV EAX,dword ptr [EBP + 0xffffff24]
PUSH dword ptr [EBP + 0xffffff30]
CALL dword ptr [EAX + 0x80]
MOV EDX,dword ptr [EBP + 0xfffffee8]
ADD ESP,0x10
MOVZX ECX,byte ptr [EBP + 0xffffff20]
MOV EAX,0xffffffff
SHL EAX,CL
NOT EAX
AND EAX,dword ptr [EDX]
OR ESI,EAX
MOV EAX,dword ptr [EBP + 0xffffff14]
MOV dword ptr [EDX],ESI
CMP EAX,EBX
JGE 0x0004e8ae
MOV EDX,dword ptr [EBP + 0xffffff30]
MOV ECX,dword ptr [EBP + 0xfffffef0]
MOV dword ptr [EDX + EAX*0x4 + 0x4],ECX
MOV ESI,dword ptr [EBP + 0xfffffefc]
MOV EBX,dword ptr [EBP + 0xffffff34]
PUSH dword ptr [EBP + 0xc]
MOV EAX,dword ptr [EBP + 0xffffff24]
PUSH ESI
PUSH EBX
PUSH EBX
CALL dword ptr [EAX + 0x64]
MOV ECX,dword ptr [EBP + 0xffffff38]
MOV EDX,dword ptr [EBP + 0xffffff44]
MOV dword ptr [EBX + ESI*0x4],EAX
XOR EBX,EBX
ADD ESP,0x10
TEST EAX,EAX
MOV EAX,dword ptr [EBP + 0xffffff04]
SETNZ BL
ADD EBX,ESI
MOV ESI,dword ptr [EBP + 0xffffff14]
ADD EAX,EDX
MOV EDI,EAX
ADD ESI,ECX
CMP dword ptr [EBP + 0xffffff20],0x0
JZ 0x0004ecc0
PUSH dword ptr [EBP + 0xffffff20]
PUSH ECX
PUSH EDX
PUSH EAX
MOV EAX,dword ptr [EBP + 0xffffff24]
CALL dword ptr [EAX + 0x38]
ADD ESP,0x10
TEST EAX,EAX
JZ 0x0004ecdc
MOV EDX,dword ptr [EBP + 0xffffff44]
MOV dword ptr [EDX + ESI*0x4],EAX
LEA EAX,[ESI + 0x1]
MOV dword ptr [EBP + 0xffffff38],EAX
MOV EAX,dword ptr [EDI]
MOV dword ptr [EBP + 0xffffff14],EAX
MOV EAX,dword ptr [EBP + 0xffffff1c]
LEA ESI,[EAX + -0x1]
SHR ESI,0x5
LEA EAX,[ESI + 0x1]
CMP dword ptr [EBP + 0xffffff2c],EBX
JL 0x0004edea
MOV EDX,dword ptr [EBP + 0xffffff2c]
SUB EDX,EBX
CMP EAX,EDX
JGE 0x0004ea98
CMP EAX,0x1
JZ 0x0004eef6
SUB ESP,0x4
LEA EAX,[ESI*0x4 + 0x0]
MOV EBX,dword ptr [EBP + 0xffffff40]
PUSH EAX
PUSH 0xff
PUSH dword ptr [EBP + 0xffffff44]
CALL 0x0001bb20
MOV EAX,dword ptr [EBP + 0xffffff44]
ADD ESP,0x10
LEA EAX,[EAX + ESI*0x4]
MOVZX ECX,byte ptr [EBP + 0xfffffeec]
MOV EDX,0xffffffff
SHR EDX,CL
MOV dword ptr [EAX],EDX
MOV EAX,dword ptr [EBP + 0xfffffef8]
MOV EBX,dword ptr [EBP + 0xffffff14]
SUB dword ptr [EBP + 0xffffff00],0x1
OR dword ptr [EDI],EBX
TEST EAX,EAX
JNZ 0x0004e690
MOV EDI,dword ptr [EBP + 0xffffff28]
MOV EAX,dword ptr [EBP + 0x10]
TEST EAX,EAX
JZ 0x0004ea1d
MOV EAX,dword ptr [EBP + 0xffffff44]
CMP dword ptr [EAX],0x1
JBE 0x0004ea1d
MOV EAX,dword ptr [EBP + 0xffffff5c]
TEST EAX,EAX
JNZ 0x0004f19a
MOV EDI,dword ptr [EBP + -0x1c]
XOR EDI,dword ptr GS:[0x14]
MOV EAX,dword ptr [EBP + 0xffffff2c]
JNZ 0x0004f20f
LEA ESP,[EBP + -0xc]
POP EBX
POP ESI
POP EDI
POP EBP
RET
MOV ESI,EDI
MOV EDI,dword ptr [EBP + 0xffffff0c]
MOV EDX,dword ptr [EDI + ESI*0x1 + -0x4]
JMP 0x0004e4b6
MOV ESI,dword ptr [EBP + 0xffffff0c]
SUB ESP,0xc
PUSH dword ptr [EBP + 0xffffff34]
MOV EBX,dword ptr [EBP + 0xffffff40]
PUSH dword ptr [EBP + 0xc]
PUSH dword ptr [EBP + 0xffffff38]
PUSH dword ptr [EBP + 0xffffff44]
PUSH EDI
CALL 0x0001c0c0
ADD ESP,0x20
CMP dword ptr [EBP + 0x8],EAX
JL 0x0004ed68
JNZ 0x0004efbf
MOV EBX,dword ptr [EBP + 0x8]
JMP 0x0004ea6c
MOV ECX,dword ptr [ESI + EBX*0x4]
CMP dword ptr [EDI + EBX*0x4],ECX
JNZ 0x0004ed5d
SUB EBX,0x1
JNS 0x0004ea60
MOV dword ptr [EBP + 0xffffff2c],0x0
JMP 0x0004e9e0
MOV EAX,dword ptr [EBP + 0xffffff44]
SUB dword ptr [EAX],0x1
LEA EAX,[EAX + 0x4]
JC 0x0004ea86
JMP 0x0004e700
SUB ESP,0x8
PUSH dword ptr [EBP + 0xfffffee4]
PUSH EBX
PUSH dword ptr [EBP + 0xffffff34]
MOV EBX,dword ptr [EBP + 0xffffff40]
PUSH dword ptr [EBP + 0xffffff2c]
PUSH dword ptr [EBP + 0xffffff30]
PUSH dword ptr [EBP + 0xffffff28]
MOV dword ptr [EBP + 0xfffffefc],EDX
MOV dword ptr [EBP + 0xffffff04],EAX
CALL 0x0001b3e0
MOV EDX,dword ptr [EBP + 0xfffffefc]
XOR EBX,EBX
ADD ESP,0x20
MOV EAX,dword ptr [EBP + 0xffffff28]
MOV ECX,dword ptr [EAX + EDX*0x4]
MOV EAX,dword ptr [EBP + 0xffffff04]
TEST ECX,ECX
SETNZ BL
ADD EBX,EDX
CMP EAX,EBX
JL 0x0004e965
JNZ 0x0004eb0a
MOV EDX,dword ptr [EBP + 0xffffff20]
TEST EDX,EDX
JNZ 0x0004edae
MOV ESI,dword ptr [EBP + 0xffffff44]
SUB ESP,0x4
MOV dword ptr [EBP + 0xffffff20],EAX
MOV EAX,dword ptr [EBP + 0xffffff24]
PUSH EBX
PUSH dword ptr [EBP + 0xffffff28]
PUSH ESI
CALL dword ptr [EAX + 0x28]
MOV EAX,dword ptr [EBP + 0xffffff20]
ADD ESP,0x10
CMP EAX,EBX
JZ 0x0004e9ab
SUB EAX,EBX
SUB ESP,0x4
LEA EDX,[ESI + EBX*0x4]
MOV EBX,dword ptr [EBP + 0xffffff40]
SHL EAX,0x2
PUSH EAX
PUSH 0x0
PUSH EDX
CALL 0x0001bb20
ADD ESP,0x10
JMP 0x0004e9ab
JA 0x0004ea80
MOV ECX,dword ptr [EBP + 0xffffff08]
MOV dword ptr [EBP + 0xfffffefc],EDX
MOV EDX,EBX
MOV EBX,dword ptr [EBP + 0xffffff00]
MOV dword ptr [EBP + 0xffffff28],EDI
MOV ESI,dword ptr [EBP + 0xffffff2c]
MOV EAX,dword ptr [ECX + EBX*0x4]
MOV ECX,dword ptr [ECX + EBX*0x4 + 0x4]
MOV dword ptr [EBP + 0xfffffef8],EBX
MOV EBX,EAX
SUB EBX,ECX
SUB ECX,EAX
MOV dword ptr [EBP + 0xffffff1c],EBX
SHR EBX,0x5
MOV EAX,ECX
MOV dword ptr [EBP + 0xffffff14],EBX
MOV EBX,dword ptr [EBP + 0xffffff20]
MOV dword ptr [EBP + 0xfffffeec],ECX
ADD EAX,EBX
SUB EBX,0x1
MOV ECX,EAX
SHR EBX,0x5
MOV dword ptr [EBP + 0xffffff10],EAX
SHR ECX,0x5
SUB EBX,ECX
LEA EAX,[EBX + 0x1]
MOV dword ptr [EBP + 0xfffffee8],EBX
MOV dword ptr [EBP + 0xfffffef4],EAX
TEST EDX,EDX
JNZ 0x0004ee0c
MOV EAX,dword ptr [EBP + 0xffffff30]
MOV EDI,dword ptr [EAX + ESI*0x4 + -0x4]
TEST EDI,EDI
JNZ 0x0004ec11
MOV EDI,dword ptr [EBP + 0xffffff28]
LEA ESI,[ESI]
LEA ESI,[ESI]
SUB ESI,0x1
MOV EDX,dword ptr [EAX + ESI*0x4 + -0x4]
TEST EDX,EDX
JZ 0x0004ec00
MOV dword ptr [EBP + 0xffffff28],EDI
MOV EDI,dword ptr [EBP + 0xffffff14]
MOV dword ptr [EBP + 0xfffffed4],ECX
MOV EAX,EDI
SHL EAX,0x2
MOV EBX,EAX
MOV dword ptr [EBP + 0xffffff04],EAX
MOV EAX,dword ptr [EBP + 0xffffff30]
MOV EDX,EAX
ADD EDX,EBX
MOV EBX,EDI
ADD EBX,ESI
MOV dword ptr [EBP + 0xffffff2c],EBX
MOV EBX,dword ptr [EBP + 0xffffff1c]
AND EBX,0x1f
MOV dword ptr [EBP + 0xffffff20],EBX
JZ 0x0004ed80
PUSH EBX
PUSH ESI
PUSH EAX
MOV EAX,dword ptr [EBP + 0xffffff24]
PUSH EDX
MOV dword ptr [EBP + 0xfffffed8],EDX
CALL dword ptr [EAX + 0x38]
MOV EDX,dword ptr [EBP + 0xfffffed8]
MOV ECX,dword ptr [EBP + 0xfffffed4]
ADD ESP,0x10
TEST EAX,EAX
JZ 0x0004ec91
MOV EDI,dword ptr [EBP + 0xffffff2c]
MOV ESI,dword ptr [EBP + 0xffffff30]
MOV dword ptr [ESI + EDI*0x4],EAX
ADD EDI,0x1
MOV dword ptr [EBP + 0xffffff2c],EDI
MOV ESI,dword ptr [EDX]
MOV EBX,dword ptr [EBP + 0xfffffee8]
CMP dword ptr [EBP + 0xffffff14],EBX
JGE 0x0004e83d
MOV EAX,dword ptr [EBP + 0xffffff30]
MOV EDI,dword ptr [EBP + 0xffffff04]
MOV EAX,dword ptr [EAX + EDI*0x1 + 0x4]
MOV dword ptr [EBP + 0xfffffef0],EAX
JMP 0x0004e83d
SUB ESP,0x4
PUSH dword ptr [EBP + 0xffffff38]
PUSH dword ptr [EBP + 0xffffff44]
PUSH EAX
MOV EAX,dword ptr [EBP + 0xffffff24]
CALL dword ptr [EAX + 0x24]
ADD ESP,0x10
MOV dword ptr [EBP + 0xffffff38],ESI
JMP 0x0004e932
SUB ESP,0x4
PUSH dword ptr [EBP + 0xfffffef4]
PUSH EAX
PUSH dword ptr [EBP + 0xffffff30]
MOV EAX,dword ptr [EBP + 0xffffff24]
CALL dword ptr [EAX + 0x28]
MOV EDX,dword ptr [EBP + 0xfffffee8]
ADD ESP,0x10
JMP 0x0004e87e
SUB ESP,0x4
PUSH ESI
PUSH EAX
MOV EAX,dword ptr [EBP + 0xffffff24]
PUSH dword ptr [EBP + 0xffffff30]
CALL dword ptr [EAX + 0x28]
ADD ESP,0x10
JMP 0x0004e6df
MOV ECX,dword ptr [EBP + 0xffffff08]
SUB EDX,0x1
ADD ESI,0x1
MOV dword ptr [ECX + ESI*0x4],EDX
CMP EDX,0x8
JNZ 0x0004e550
JMP 0x0004e56d
JBE 0x0004efbf
LEA ESI,[ESI]
NOP
MOV EAX,dword ptr [EBP + 0xffffff44]
SUB dword ptr [EAX],0x1
LEA EAX,[EAX + 0x4]
JC 0x0004ed6e
JMP 0x0004ea23
SUB ESP,0x4
MOV EAX,dword ptr [EBP + 0xffffff24]
MOV dword ptr [EBP + 0xfffffed8],EDX
PUSH ESI
PUSH dword ptr [EBP + 0xffffff30]
PUSH EDX
CALL dword ptr [EAX + 0x24]
MOV EDX,dword ptr [EBP + 0xfffffed8]
MOV ECX,dword ptr [EBP + 0xfffffed4]
ADD ESP,0x10
JMP 0x0004ec91
MOV EDX,dword ptr [EBP + 0xffffff28]
MOVZX ECX,byte ptr [EBP + 0xffffff20]
MOV EDX,dword ptr [EDX + EBX*0x4 + -0x4]
SHR EDX,CL
TEST EDX,EDX
JNZ 0x0004e965
SUB ESP,0x4
MOV EAX,dword ptr [EBP + 0xffffff24]
PUSH EBX
PUSH dword ptr [EBP + 0xffffff28]
PUSH dword ptr [EBP + 0xffffff44]
CALL dword ptr [EAX + 0x28]
ADD ESP,0x10
JMP 0x0004e9ab
SUB ESP,0x4
SHL EAX,0x2
MOV EBX,dword ptr [EBP + 0xffffff40]
PUSH EAX
PUSH 0x0
PUSH dword ptr [EBP + 0xffffff44]
CALL 0x0001bb20
ADD ESP,0x10
JMP 0x0004e9ab
MOV EAX,dword ptr [EBP + 0xffffff30]
MOV EBX,dword ptr [EBP + 0xffffff40]
PUSH EDX
PUSH dword ptr [EBP + 0xffffff28]
PUSH EAX
PUSH EAX
MOV dword ptr [EBP + 0xffffff20],ECX
MOV dword ptr [EBP + 0xffffff2c],EDX
CALL 0x0001b390
ADD ESP,0x10
MOV EDX,dword ptr [EBP + 0xffffff2c]
MOV ECX,dword ptr [EBP + 0xffffff20]
TEST EAX,EAX
JZ 0x0004ebe2
CMP ESI,EDX
JZ 0x0004ebe2
MOV EAX,dword ptr [EBP + 0xffffff30]
LEA EDI,[EDX*0x4 + 0x0]
ADD EAX,EDI
MOV EBX,dword ptr [EAX]
MOV dword ptr [EBP + 0xffffff2c],EBX
LEA EBX,[EDX + 0x1]
MOV dword ptr [EBP + 0xffffff20],EBX
MOV EBX,dword ptr [EBP + 0xffffff2c]
SUB EBX,0x1
MOV dword ptr [EAX],EBX
MOV EBX,dword ptr [EBP + 0xffffff2c]
TEST EBX,EBX
JNZ 0x0004ebe2
ADD EDI,0x4
MOV EBX,EDI
CMP ESI,dword ptr [EBP + 0xffffff20]
JLE 0x0004ebe2
ADD EBX,dword ptr [EBP + 0xffffff30]
ADD EDX,0x2
MOV EAX,dword ptr [EBX]
LEA EDI,[EAX + -0x1]
MOV dword ptr [EBX],EDI
TEST EAX,EAX
JNZ 0x0004ebe2
MOV dword ptr [EBP + 0xffffff2c],ECX
MOV EDI,dword ptr [EBP + 0xffffff28]
MOV ECX,dword ptr [EBP + 0xffffff30]
JMP 0x0004eee1
MOV EAX,dword ptr [ECX + EDX*0x4]
ADD EDX,0x1
LEA EBX,[EAX + -0x1]
MOV dword ptr [ECX + EDX*0x4 + -0x4],EBX
TEST EAX,EAX
JNZ 0x0004eee5
CMP ESI,EDX
JNZ 0x0004eed0
MOV ECX,dword ptr [EBP + 0xffffff2c]
MOV dword ptr [EBP + 0xffffff28],EDI
JMP 0x0004ebe2
MOV EAX,dword ptr [EBP + 0xffffff44]
JMP 0x0004e99b
MOV EAX,dword ptr [EBP + 0xffffff44]
MOV EDI,dword ptr [EBP + 0xfffffee0]
MOV dword ptr [EAX],0x1
MOV EAX,dword ptr [EBP + 0xffffff0c]
TEST EDI,EDI
JZ 0x0004f084
MOV EAX,dword ptr [EAX]
MOV EDI,dword ptr [EBP + 0xfffffee0]
LEA EDX,[EAX + -0x1]
MOV dword ptr [EDI],EDX
TEST EAX,EAX
JNZ 0x0004f046
CMP dword ptr [EBP + 0x8],0x1
JLE 0x0004ef98
MOV ESI,EDI
MOV EDI,dword ptr [EBP + 0xffffff0c]
MOV EAX,dword ptr [EDI + 0x4]
LEA EDX,[EAX + -0x1]
MOV dword ptr [ESI + 0x4],EDX
TEST EAX,EAX
JNZ 0x0004f1b1
CMP dword ptr [EBP + 0x8],0x2
JZ 0x0004ef98
MOV EAX,dword ptr [EDI + 0x8]
LEA EDX,[EAX + -0x1]
TEST EAX,EAX
MOV EAX,0x3
MOV dword ptr [ESI + 0x8],EDX
JNZ 0x0004f1b6
MOV EBX,dword ptr [EBP + 0x8]
JMP 0x0004ef94
MOV EDX,dword ptr [EDI + EAX*0x4]
LEA ECX,[EDX + -0x1]
MOV dword ptr [ESI + EAX*0x4],ECX
ADD EAX,0x1
TEST EDX,EDX
JNZ 0x0004f1b6
CMP EBX,EAX
JNZ 0x0004ef80
MOV EAX,dword ptr [EBP + 0xfffffee0]
MOV EDI,dword ptr [EBP + 0xfffffed0]
MOV ESI,dword ptr [EAX + EDI*0x4]
TEST ESI,ESI
SETZ AL
MOV EDI,dword ptr [EBP + 0x8]
MOVZX EAX,AL
SUB EDI,EAX
MOV dword ptr [EBP + 0xffffff2c],EDI
JMP 0x0004e9ee
MOV ESI,EAX
MOV EAX,dword ptr [EBP + 0xfffffee0]
TEST EAX,EAX
JZ 0x0004f200
TEST ESI,ESI
JNZ 0x0004f08c
MOV EDI,dword ptr [EBP + 0xffffff0c]
MOV ECX,dword ptr [EBP + 0xfffffee0]
CMP EDI,ECX
JZ 0x0004f017
CMP dword ptr [EBP + 0x8],ESI
JLE 0x0004f017
LEA EAX,[ESI*0x4 + 0x0]
MOV ESI,dword ptr [EBP + 0xfffffedc]
LEA EDX,[EDI + EAX*0x1]
ADD EAX,ECX
LEA ECX,[EDI + ESI*0x1 + 0x4]
LEA ESI,[ESI]
MOV EBX,dword ptr [EDX]
ADD EDX,0x4
ADD EAX,0x4
MOV dword ptr [EAX + -0x4],EBX
CMP ECX,EDX
JNZ 0x0004f008
MOV EAX,dword ptr [EBP + 0xfffffed0]
MOV EDX,dword ptr [EBP + 0xfffffee0]
MOV EBX,dword ptr [EDX + EAX*0x4]
MOV EAX,dword ptr [EBP + 0x8]
TEST EBX,EBX
JNZ 0x0004f03b
LEA ESI,[ESI]
SUB EAX,0x1
MOV ECX,dword ptr [EDX + EAX*0x4 + -0x4]
TEST ECX,ECX
JZ 0x0004f030
MOV dword ptr [EBP + 0xffffff2c],EAX
JMP 0x0004e9e0
MOV ESI,EDI
MOV EDI,dword ptr [EBP + 0xffffff0c]
CMP EDI,ESI
JZ 0x0004ef98
CMP dword ptr [EBP + 0x8],0x1
JLE 0x0004ef98
LEA EDX,[ESI + 0x4]
MOV ESI,dword ptr [EBP + 0xfffffedc]
LEA EAX,[EDI + 0x4]
LEA EBX,[EDI + ESI*0x1 + 0x4]
MOV ECX,dword ptr [EAX]
ADD EAX,0x4
ADD EDX,0x4
MOV dword ptr [EDX + -0x4],ECX
CMP EBX,EAX
JNZ 0x0004f070
JMP 0x0004ef98
CMP dword ptr [EAX],0x1
JMP 0x0004efa9
PUSH ESI
MOV EBX,dword ptr [EBP + 0xffffff40]
PUSH EDI
PUSH dword ptr [EBP + 0xffffff0c]
PUSH dword ptr [EBP + 0xfffffee0]
CALL 0x0001b390
ADD ESP,0x10
TEST EAX,EAX
JZ 0x0004efd7
CMP dword ptr [EBP + 0x8],ESI
JZ 0x0004f017
MOV EDI,dword ptr [EBP + 0xffffff0c]
LEA ECX,[ESI*0x4 + 0x0]
MOV EBX,dword ptr [EBP + 0xfffffee0]
LEA EAX,[ESI + 0x1]
MOV dword ptr [EBP + 0xffffff44],ECX
MOV EDX,dword ptr [EDI + ESI*0x4]
LEA ECX,[EDX + -0x1]
MOV dword ptr [EBX + ESI*0x4],ECX
TEST EDX,EDX
JNZ 0x0004f1f9
CMP dword ptr [EBP + 0x8],EAX
JLE 0x0004f017
LEA ECX,[ESI*0x4 + 0x0]
ADD ESI,0x2
MOV EAX,dword ptr [EDI + ECX*0x1 + 0x4]
LEA EDX,[EAX + -0x1]
MOV dword ptr [EBX + ECX*0x1 + 0x4],EDX
TEST EAX,EAX
JNZ 0x0004efd7
MOV ECX,EBX
MOV EDI,dword ptr [EBP + 0x8]
MOV EBX,dword ptr [EBP + 0xffffff0c]
JMP 0x0004f12e
MOV EAX,dword ptr [EBX + ESI*0x4]
ADD ESI,0x1
LEA EDX,[EAX + -0x1]
MOV dword ptr [ECX + ESI*0x4 + -0x4],EDX
TEST EAX,EAX
JNZ 0x0004efd7
CMP EDI,ESI
JNZ 0x0004f119
JMP 0x0004f017
MOV dword ptr [EBP + 0xffffff38],0x1
JMP 0x0004e9ce
SUB ESP,0x8
MOV EBX,dword ptr [EBP + 0xffffff40]
MOV dword ptr [EBP + 0xffffff38],EDX
PUSH EAX
LEA EAX,[EBP + 0xffffff5c]
PUSH EAX
CALL 0x0001bb00
ADD ESP,0x10
MOV EDX,dword ptr [EBP + 0xffffff38]
MOV dword ptr [EBP + 0xfffffee4],EAX
MOV ECX,EAX
JMP 0x0004e624
XOR EDX,EDX
DIV dword ptr [EBP + 0xc]
MOV dword ptr [EBP + 0xffffff1c],EAX
MOV EAX,EDX
XOR EDX,EDX
MOV EBX,dword ptr [EBP + 0xffffff1c]
SHL EAX,0x8
OR EAX,ECX
DIV dword ptr [EBP + 0xc]
JMP 0x0004e4ec
SUB ESP,0xc
MOV EBX,dword ptr [EBP + 0xffffff40]
PUSH EAX
CALL 0x0001b050
ADD ESP,0x10
JMP 0x0004e9ee
MOV EAX,0x2
MOV EDI,dword ptr [EBP + 0xffffff0c]
MOV ESI,dword ptr [EBP + 0xfffffee0]
CMP EDI,ESI
JZ 0x0004ef98
CMP dword ptr [EBP + 0x8],EAX
JLE 0x0004ef98
SHL EAX,0x2
LEA EDX,[EDI + EAX*0x1]
ADD EAX,ESI
MOV ESI,dword ptr [EBP + 0xfffffedc]
LEA EBX,[EDI + ESI*0x1 + 0x4]
MOV ECX,dword ptr [EDX]
ADD EDX,0x4
ADD EAX,0x4
MOV dword ptr [EAX + -0x4],ECX
CMP EBX,EDX
JNZ 0x0004f1e5
JMP 0x0004ef98
MOV ESI,EAX
JMP 0x0004efd7
MOV dword ptr [EBP + 0xffffff2c],0x1
JMP 0x0004e9e0
CALL 0x0007ebe0
(translation_unit "uint FUN_0004e410(uint param_1,uint param_2,int param_3)\n\n{\n  byte bVar1;\n  code *pcVar2;\n  uint uVar3;\n  int iVar4;\n  uint uVar5;\n  int iVar6;\n  uint *puVar7;\n  int *piVar8;\n  int *piVar9;\n  int *extraout_ECX;\n  int iVar10;\n  uint uVar11;\n  uint *puVar12;\n  uint uVar13;\n  undefined1 *puVar14;\n  int iVar15;\n  int unaff_EDI;\n  int in_GS_OFFSET;\n  ushort in_FPUControlWord;\n  undefined8 uVar16;\n  undefined1 auStack_13c [8];\n  int local_134;\n  uint uStack_130;\n  uint *puStack_12c;\n  int local_128;\n  int *local_124;\n  int iStack_120;\n  uint *puStack_11c;\n  int iStack_118;\n  undefined4 uStack_114;\n  int iStack_110;\n  int iStack_10c;\n  int iStack_108;\n  int iStack_104;\n  uint uStack_100;\n  uint *puStack_fc;\n  int *local_f8;\n  uint uStack_f4;\n  uint uStack_f0;\n  uint uStack_ec;\n  uint uStack_e8;\n  uint uStack_e4;\n  int iStack_e0;\n  int iStack_dc;\n  uint uStack_d8;\n  int iStack_d4;\n  int iStack_d0;\n  int iStack_cc;\n  undefined4 uStack_c8;\n  int local_c4;\n  uint *local_c0;\n  int iStack_bc;\n  ushort uStack_b8;\n  int iStack_a8;\n  uint auStack_a4 [33];\n  int local_20;\n  \n  uVar16 = FUN_00025194();\n  local_124 = (int *)((ulonglong)uVar16 >> 0x20);\n  local_c0 = (uint *)uVar16;\n  local_c4 = unaff_EDI + 0x4fbe7;\n  puVar14 = auStack_13c;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  local_134 = param_1 + 0x3fffffff;\n  uVar11 = extraout_ECX[local_134];\n  local_128 = local_134 * 4;\n  uVar5 = 0x1f;\n  if (uVar11 != 0) {\n    for (; uVar11 >> uVar5 == 0; uVar5 = uVar5 - 1) {\n    }\n  }\n  iVar10 = (uVar5 ^ 0x1f) + 1;\n  uVar5 = param_1 * 0x20 - iVar10;\n  if (uVar5 < param_2) {\n    *local_c0 = 1;\n    if (local_124 == (int *)0x0) {\n      iVar10 = *extraout_ECX + -1;\n    }\n    else {\n      iVar10 = *extraout_ECX;\n      *local_124 = iVar10 + -1;\n      if (iVar10 == 0) {\n        if (1 < (int)param_1) {\n          iVar10 = extraout_ECX[1];\n          local_124[1] = iVar10 + -1;\n          if (iVar10 == 0) {\n            if (param_1 == 2) goto LAB_0004ef98;\n            iVar10 = extraout_ECX[2];\n            uVar11 = 3;\n            local_124[2] = iVar10 + -1;\n            while (iVar10 == 0) {\n              if (param_1 == uVar11) goto LAB_0004ef98;\n              iVar10 = extraout_ECX[uVar11];\n              local_124[uVar11] = iVar10 + -1;\n              uVar11 = uVar11 + 1;\n            }\n          }\n          else {\n            uVar11 = 2;\n          }\n          if ((extraout_ECX != local_124) && ((int)uVar11 < (int)param_1)) {\n            piVar9 = extraout_ECX + uVar11;\n            piVar8 = local_124 + uVar11;\n            do {\n              iVar10 = *piVar9;\n              piVar9 = piVar9 + 1;\n              *piVar8 = iVar10;\n              piVar8 = piVar8 + 1;\n            } while (extraout_ECX + param_1 + 0x40000000 != piVar9);\n          }\n        }\n      }\n      else if ((extraout_ECX != local_124) && (1 < (int)param_1)) {\n        piVar9 = extraout_ECX + 1;\n        piVar8 = local_124;\n        do {\n          piVar8 = piVar8 + 1;\n          iVar10 = *piVar9;\n          piVar9 = piVar9 + 1;\n          *piVar8 = iVar10;\n        } while (extraout_ECX + param_1 + 0x40000000 != piVar9);\n      }\nLAB_0004ef98:\n      iVar10 = local_124[local_134];\n    }\n    uStack_d8 = param_1 - (iVar10 == 0);\n    goto LAB_0004e9ee;\n  }\n  if (iVar10 == 0x20) {\n    uVar11 = extraout_ECX[param_1 + 0x3ffffffe];\n  }\n  else {\n    uVar11 = (uint)extraout_ECX[(param_1 - 1) - (uint)(param_1 != 1)] >>\n             (0x20 - (byte)iVar10 & 0x1f) | uVar11 << ((byte)iVar10 & 0x1f);\n  }\n  uVar11 = (uint)*(byte *)(unaff_EDI + 0x32bc7 + (uVar11 >> 0x18));\n  if (uVar5 < 0x1000000) {\n    uStack_e8 = (uVar5 * 0x100 | uVar11) / param_2;\n    uVar11 = uStack_e8 & 0xff;\n    uStack_e8 = uStack_e8 >> 8;\n  }\n  else {\n    uStack_e8 = uVar5 / param_2;\n    uVar11 = (uVar5 % param_2 << 8 | uVar11) / param_2;\n  }\n  iVar10 = uStack_e8 * param_2;\n  bVar1 = *(byte *)(unaff_EDI + 0x32ac7 + uVar11);\n  uStack_ec = param_2 - 1;\n  uVar11 = 3;\n  for (uVar5 = uStack_ec >> 2; uVar5 != 0; uVar5 = uVar5 >> 1) {\n    uVar11 = uVar11 + 1;\n  }\n  puStack_fc = auStack_a4;\n  iVar15 = 0;\n  auStack_a4[0] = uStack_e8;\n  if (8 < uStack_e8) {\n    iVar4 = 0;\n    do {\n      while (iVar15 = iVar4, uVar11 < uStack_e8) {\n        uStack_e8 = uStack_e8 + uVar11 >> 1;\n        puStack_fc[iVar15 + 1] = uStack_e8;\n        iVar4 = iVar15 + 1;\n        if (uStack_e8 < 9) goto LAB_0004e56d;\n      }\n      uStack_e8 = uStack_e8 - 1;\n      puStack_fc[iVar15 + 1] = uStack_e8;\n      iVar4 = iVar15 + 1;\n    } while (uStack_e8 != 8);\n    uStack_e8 = 8;\nLAB_0004e56d:\n    iVar15 = iVar15 + 1;\n  }\n  iStack_a8 = 0;\n  uStack_f4 = iVar10 - uStack_e8;\n  *local_c0 = (bVar1 | 0x100) >> (8U - (char)uStack_e8 & 0x1f);\n  uStack_c8 = 0;\n  uStack_b8 = in_FPUControlWord | 0xc00;\n  iStack_bc = (int)ROUND((double)param_2 * *(double *)(unaff_EDI + 0x32cc7) *\n                         (double)*(float *)(&UNK_00032ccf + unaff_EDI));\n  iStack_cc = param_1 + 2 + iStack_bc;\n  uVar11 = (param_1 + 1 + iStack_cc * 2) * 4;\n  local_f8 = extraout_ECX;\n  if (uVar11 < 0x7f01) {\n    iStack_120 = -(uVar11 + 0x1b & 0xfffffff0);\n    puVar14 = auStack_13c + iStack_120;\n    iStack_120 = (int)&uStack_130 + iStack_120;\n  }\n  else {\n    iStack_120 = __gmp_tmp_reentrant_alloc(&iStack_a8,uVar11);\n    uVar16 = CONCAT44(local_124,local_c0);\n    puVar14 = auStack_13c;\n  }\n  local_124 = (int *)((ulonglong)uVar16 >> 0x20);\n  iVar10 = iStack_120 + local_128 + 8;\n  iStack_d0 = iVar10 + iStack_cc * 4;\n  iStack_d4 = (int)local_124;\n  if (local_124 == (int *)0x0) {\n    iStack_d4 = iStack_120;\n  }\n  if (iVar15 != 0) {\n    iStack_104 = iVar15 + -1;\n    puStack_fc = auStack_a4;\n    iStack_cc = 1;\n    iStack_e0 = *(int *)(local_c4 + -0x26c);\n    iStack_dc = iVar10;\nLAB_0004e690:\n    local_124 = (int *)((ulonglong)uVar16 >> 0x20);\n    local_c0 = (uint *)uVar16;\n    uStack_e4 = uStack_f4 - uStack_e8 * uStack_ec;\n    iVar10 = param_1 - (uStack_e4 >> 5);\n    piVar9 = local_f8 + (uStack_e4 >> 5);\n    if ((uStack_e4 & 0x1f) == 0) {\n      *(int *)(puVar14 + -8) = iVar10;\n      *(int **)(puVar14 + -0xc) = piVar9;\n      iVar15 = iStack_e0;\n      *(int *)(puVar14 + -0x10) = iStack_d4;\n      pcVar2 = *(code **)(iVar15 + 0x28);\n      *(undefined4 *)(puVar14 + -0x14) = 0x4ed34;\n      (*pcVar2)();\n    }\n    else {\n      *(uint *)(puVar14 + -4) = uStack_e4 & 0x1f;\n      *(int *)(puVar14 + -8) = iVar10;\n      *(int **)(puVar14 + -0xc) = piVar9;\n      iVar15 = iStack_e0;\n      *(int *)(puVar14 + -0x10) = iStack_d4;\n      pcVar2 = *(code **)(iVar15 + 0x80);\n      *(undefined4 *)(puVar14 + -0x14) = 0x4e6dc;\n      (*pcVar2)();\n    }\n    iVar4 = iStack_d4;\n    iVar15 = iStack_dc;\n    uStack_d8 = iVar10 - (uint)(*(int *)(iStack_d4 + (iVar10 + -1) * 4) == 0);\n    do {\n      *(int *)(puVar14 + -0x10) = iVar15;\n      *(uint *)(puVar14 + -0x14) = uStack_ec;\n      *(int *)(puVar14 + -0x18) = iStack_cc;\n      *(uint **)(puVar14 + -0x1c) = local_c0;\n      *(int *)(puVar14 + -0x20) = iStack_d0;\n      *(undefined4 *)(puVar14 + -0x24) = 0x4e727;\n      iVar10 = __gmpn_pow_1();\n      *(int *)(puVar14 + -0x10) = iStack_cc;\n      *(uint **)(puVar14 + -0x14) = local_c0;\n      *(int *)(puVar14 + -0x18) = iVar10;\n      *(int *)(puVar14 + -0x1c) = iStack_d0;\n      *(int *)(puVar14 + -0x20) = iVar15;\n      iStack_dc = iVar10;\n      *(undefined4 *)(puVar14 + -0x24) = 0x4e74f;\n      __gmpn_mul();\n      iVar10 = iStack_d4;\n      uVar11 = uStack_d8;\n      iVar6 = (iStack_cc + iStack_dc) -\n              (uint)(*(int *)(iVar15 + -4 + (iStack_cc + iStack_dc) * 4) == 0);\n      puVar7 = local_c0;\n      if (iVar6 <= (int)uStack_d8) {\n        uVar5 = uStack_d8;\n        if (uStack_d8 != iVar6) goto LAB_0004eb66;\n        do {\n          uVar5 = uVar5 + -1;\n          if ((int)uVar5 < 0) {\n            iStack_108 = iStack_dc;\n            uStack_114 = 0;\n            iStack_10c = iStack_104;\n            uStack_e8 = puStack_fc[iStack_104] - puStack_fc[iStack_104 + 1];\n            iStack_118 = puStack_fc[iStack_104 + 1] - puStack_fc[iStack_104];\n            uStack_f0 = uStack_e8 >> 5;\n            uStack_f4 = iStack_118 + uStack_e4;\n            uVar11 = uStack_e4 - 1;\n            uStack_e4 = uStack_e8 & 0x1f;\n            puVar12 = (uint *)((uVar11 >> 5) - (uStack_f4 >> 5));\n            uStack_100 = uStack_f0 * 4;\n            uVar11 = 0;\n            iStack_110 = (int)puVar12 + 1;\n            uVar5 = uStack_f4 >> 5;\n            puVar7 = (uint *)(iStack_d4 + uStack_f0 * 4);\n            iStack_dc = iVar15;\n            uStack_d8 = uStack_f0;\n            goto LAB_0004e83d;\n          }\n          uVar13 = *(uint *)(iVar4 + uVar5 * 4);\n          uVar3 = *(uint *)(iVar15 + uVar5 * 4);\n        } while (uVar3 == uVar13);\n        if (uVar3 <= uVar13) goto LAB_0004eb66;\n      }\n      do {\n        uVar11 = *puVar7;\n        *puVar7 = *puVar7 - 1;\n        puVar7 = puVar7 + 1;\n      } while (uVar11 == 0);\n    } while( true );\n  }\n  iStack_cc = 1;\nLAB_0004e9ce:\n  piVar9 = local_f8;\n  local_c0 = (uint *)uVar16;\n  if ((param_3 == 0) || (*local_c0 < 2)) {\n    do {\n      local_124 = (int *)((ulonglong)uVar16 >> 0x20);\n      local_c0 = (uint *)uVar16;\n      *(int *)(puVar14 + -0x10) = iStack_d0;\n      *(uint *)(puVar14 + -0x14) = param_2;\n      *(int *)(puVar14 + -0x18) = iStack_cc;\n      *(uint **)(puVar14 + -0x1c) = local_c0;\n      *(int *)(puVar14 + -0x20) = iVar10;\n      *(undefined4 *)(puVar14 + -0x24) = 0x4ea47;\n      uVar11 = __gmpn_pow_1();\n      uVar16 = CONCAT44(local_124,local_c0);\n      if ((int)uVar11 <= (int)param_1) {\n        uVar5 = param_1;\n        if (param_1 != uVar11) goto LAB_0004efbf;\n        do {\n          uVar5 = uVar5 - 1;\n          if ((int)uVar5 < 0) {\n            uStack_d8 = 0;\n            uVar16 = CONCAT44(local_124,local_c0);\n            goto LAB_0004e9e0;\n          }\n          uVar13 = *(uint *)(iVar10 + uVar5 * 4);\n        } while (uVar13 == piVar9[uVar5]);\n        if (uVar13 <= (uint)piVar9[uVar5]) goto LAB_0004efbf;\n      }\n      do {\n        iVar15 = *local_c0;\n        *local_c0 = *local_c0 + -1;\n        local_c0 = (uint *)((int *)local_c0 + 1);\n      } while (iVar15 == 0);\n    } while( true );\n  }\nLAB_0004e9e0:\n  local_124 = (int *)((ulonglong)uVar16 >> 0x20);\n  local_c0 = (uint *)uVar16;\n  if (iStack_a8 != 0) {\n    *(int *)(puVar14 + -0x10) = iStack_a8;\n    *(undefined4 *)(puVar14 + -0x14) = 0x4f1a9;\n    __gmp_tmp_reentrant_free();\n    uVar16 = CONCAT44(local_124,local_c0);\n  }\nLAB_0004e9ee:\n  local_124 = (int *)((ulonglong)uVar16 >> 0x20);\n  local_c0 = (uint *)uVar16;\n  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return uStack_d8;\n  }\n                    /* WARNING: Subroutine does not return */\n  *(undefined **)(puVar14 + -4) = &UNK_0004f214;\n  FUN_0007ebe0();\nLAB_0004eb66:\n  iStack_108 = iStack_dc;\n  iStack_10c = iStack_104;\n  uStack_e8 = puStack_fc[iStack_104] - puStack_fc[iStack_104 + 1];\n  iStack_118 = puStack_fc[iStack_104 + 1] - puStack_fc[iStack_104];\n  uStack_f0 = uStack_e8 >> 5;\n  uStack_f4 = iStack_118 + uStack_e4;\n  uVar5 = uStack_f4 >> 5;\n  puStack_11c = (uint *)((uStack_e4 - 1 >> 5) - uVar5);\n  iStack_110 = (int)puStack_11c + 1;\n  uStack_e4 = uVar5;\n  iStack_dc = iVar15;\n  if (iVar6 != 0) {\n    *(int *)(puVar14 + -4) = iVar6;\n    *(int *)(puVar14 + -8) = iStack_dc;\n    *(int *)(puVar14 + -0xc) = iVar10;\n    *(int *)(puVar14 + -0x10) = iVar10;\n    uStack_d8 = iVar6;\n    *(undefined4 *)(puVar14 + -0x14) = 0x4ee32;\n    iVar10 = __gmpn_sub_n();\n    if ((iVar10 != 0) && (uVar11 != uStack_d8)) {\n      piVar9 = (int *)(iStack_d4 + uStack_d8 * 4);\n      iVar10 = *piVar9;\n      *piVar9 = iVar10 + -1;\n      if ((iVar10 == 0) && ((int)(uStack_d8 + 1) < (int)uVar11)) {\n        piVar9 = (int *)(iStack_d4 + (uStack_d8 + 1) * 4);\n        iVar15 = uStack_d8 + 2;\n        iVar10 = *piVar9;\n        *piVar9 = iVar10 + -1;\n        for (; (iVar10 == 0 && (uVar11 != iVar15)); iVar15 = iVar15 + 1) {\n          iVar10 = *(int *)(iStack_d4 + iVar15 * 4);\n          *(int *)(iStack_d4 + iVar15 * 4) = iVar10 + -1;\n        }\n      }\n    }\n  }\n  iVar4 = iStack_d4;\n  iVar15 = iStack_e0;\n  iVar10 = *(int *)(iStack_d4 + (uVar11 + -1) * 4);\n  while (iVar10 == 0) {\n    iVar10 = *(int *)(iStack_d4 + (uVar11 + -2) * 4);\n    uVar11 = uVar11 + -1;\n  }\n  uStack_100 = uStack_f0 * 4;\n  puVar7 = (uint *)(iStack_d4 + uStack_f0 * 4);\n  uStack_d8 = uStack_f0 + uVar11;\n  uVar5 = uStack_e8 & 0x1f;\n  uStack_130 = uStack_e4;\n  puStack_12c = puVar7;\n  if (uVar5 == 0) {\n    uStack_e4 = uVar5;\n    *(uint *)(puVar14 + -8) = uVar11;\n    *(int *)(puVar14 + -0xc) = iStack_d4;\n    *(uint **)(puVar14 + -0x10) = puVar7;\n    pcVar2 = *(code **)(iVar15 + 0x24);\n    *(undefined4 *)(puVar14 + -0x14) = 0x4ed9a;\n    (*pcVar2)();\n  }\n  else {\n    uStack_e4 = uVar5;\n    *(uint *)(puVar14 + -4) = uVar5;\n    *(uint *)(puVar14 + -8) = uVar11;\n    *(int *)(puVar14 + -0xc) = iVar4;\n    iVar10 = iStack_e0;\n    *(uint **)(puVar14 + -0x10) = puVar7;\n    pcVar2 = *(code **)(iVar10 + 0x38);\n    *(undefined4 *)(puVar14 + -0x14) = 0x4ec66;\n    iVar10 = (*pcVar2)();\n    if (iVar10 != 0) {\n      *(int *)(iStack_d4 + uStack_d8 * 4) = iVar10;\n      uStack_d8 = uStack_d8 + 1;\n    }\n  }\n  uVar11 = *puStack_12c;\n  uVar5 = uStack_130;\n  puVar7 = puStack_12c;\n  puVar12 = puStack_11c;\n  if ((int)uStack_f0 < (int)puStack_11c) {\n    uStack_114 = *(undefined4 *)(iStack_d4 + uStack_100 + 4);\n  }\nLAB_0004e83d:\n  piVar9 = local_f8 + uVar5;\n  puStack_11c = puVar7;\n  if ((uStack_f4 & 0x1f) == 0) {\n    *(int *)(puVar14 + -8) = iStack_110;\n    *(int **)(puVar14 + -0xc) = piVar9;\n    *(int *)(puVar14 + -0x10) = iStack_d4;\n    pcVar2 = *(code **)(iStack_e0 + 0x28);\n    *(undefined4 *)(puVar14 + -0x14) = 0x4ed09;\n    (*pcVar2)();\n  }\n  else {\n    *(uint *)(puVar14 + -4) = uStack_f4 & 0x1f;\n    *(int *)(puVar14 + -8) = iStack_110;\n    *(int **)(puVar14 + -0xc) = piVar9;\n    iVar10 = iStack_e0;\n    *(int *)(puVar14 + -0x10) = iStack_d4;\n    pcVar2 = *(code **)(iVar10 + 0x80);\n    *(undefined4 *)(puVar14 + -0x14) = 0x4e875;\n    (*pcVar2)();\n  }\n  iVar15 = iStack_d0;\n  iVar10 = iStack_108;\n  *puStack_11c = uVar11 | ~(-1 << ((byte)uStack_e4 & 0x1f)) & *puStack_11c;\n  if ((int)uStack_f0 < (int)puVar12) {\n    *(undefined4 *)(iStack_d4 + (uStack_f0 + 1) * 4) = uStack_114;\n  }\n  *(uint *)(puVar14 + -4) = param_2;\n  iVar4 = iStack_e0;\n  *(int *)(puVar14 + -8) = iVar10;\n  *(int *)(puVar14 + -0xc) = iVar15;\n  *(int *)(puVar14 + -0x10) = iVar15;\n  pcVar2 = *(code **)(iVar4 + 100);\n  *(undefined4 *)(puVar14 + -0x14) = 0x4e8c9;\n  iVar6 = (*pcVar2)();\n  puVar7 = local_c0;\n  iVar4 = iStack_cc;\n  *(int *)(iVar15 + iVar10 * 4) = iVar6;\n  iVar10 = (uint)(iVar6 != 0) + iVar10;\n  puVar12 = (uint *)(uStack_100 + (int)local_c0);\n  iVar15 = uStack_f0 + iStack_cc;\n  if (uStack_e4 == 0) {\n    *(int *)(puVar14 + -8) = iStack_cc;\n    *(uint **)(puVar14 + -0xc) = local_c0;\n    *(uint **)(puVar14 + -0x10) = puVar12;\n    pcVar2 = *(code **)(iStack_e0 + 0x24);\n    *(undefined4 *)(puVar14 + -0x14) = 0x4ecd9;\n    (*pcVar2)();\nLAB_0004ecdc:\n    iStack_cc = iVar15;\n  }\n  else {\n    *(uint *)(puVar14 + -4) = uStack_e4;\n    *(int *)(puVar14 + -8) = iVar4;\n    *(uint **)(puVar14 + -0xc) = puVar7;\n    *(uint **)(puVar14 + -0x10) = puVar12;\n    pcVar2 = *(code **)(iStack_e0 + 0x38);\n    *(undefined4 *)(puVar14 + -0x14) = 0x4e915;\n    uVar11 = (*pcVar2)();\n    if (uVar11 == 0) goto LAB_0004ecdc;\n    local_c0[iVar15] = uVar11;\n    iStack_cc = iVar15 + 1;\n  }\n  uStack_f0 = *puVar12;\n  uVar5 = uStack_e8 - 1 >> 5;\n  uVar11 = uVar5 + 1;\n  if ((int)uStack_d8 < iVar10) {\n    *(uint *)(puVar14 + -8) = uVar11 * 4;\n    *(undefined4 *)(puVar14 + -0xc) = 0;\n    *(uint **)(puVar14 + -0x10) = local_c0;\n    *(undefined4 *)(puVar14 + -0x14) = 0x4ee04;\n    memset(*(void **)(puVar14 + -0x10),*(int *)(puVar14 + -0xc),*(size_t *)(puVar14 + -8));\n    goto LAB_0004e9ab;\n  }\n  iVar15 = uStack_d8 - iVar10;\n  if (iVar15 <= (int)uVar11) {\n    *(int *)(puVar14 + -0xc) = iStack_120;\n    *(int *)(puVar14 + -0x10) = iVar10;\n    *(int *)(puVar14 + -0x14) = iStack_d0;\n    *(uint *)(puVar14 + -0x18) = uStack_d8;\n    *(int *)(puVar14 + -0x1c) = iStack_d4;\n    *(int *)(puVar14 + -0x20) = iStack_dc;\n    iStack_108 = iVar15;\n    uStack_100 = uVar11;\n    *(undefined4 *)(puVar14 + -0x24) = 0x4ead1;\n    __gmpn_div_q();\n    puVar7 = local_c0;\n    iVar10 = iStack_e0;\n    uVar13 = (uint)(*(int *)(iStack_dc + iStack_108 * 4) != 0) + iStack_108;\n    uVar11 = uStack_100;\n    if ((int)uVar13 <= (int)uStack_100) {\n      if ((uStack_100 != uVar13) || (uStack_e4 == 0)) {\n        uStack_e4 = uStack_100;\n        *(uint *)(puVar14 + -8) = uVar13;\n        *(int *)(puVar14 + -0xc) = iStack_dc;\n        *(uint **)(puVar14 + -0x10) = puVar7;\n        pcVar2 = *(code **)(iVar10 + 0x28);\n        *(undefined4 *)(puVar14 + -0x14) = 0x4eb2a;\n        (*pcVar2)();\n        if (uStack_e4 != uVar13) {\n          *(uint *)(puVar14 + -8) = (uStack_e4 - uVar13) * 4;\n          *(undefined4 *)(puVar14 + -0xc) = 0;\n          *(uint **)(puVar14 + -0x10) = puVar7 + uVar13;\n          *(undefined4 *)(puVar14 + -0x14) = 0x4eb55;\n          memset(*(void **)(puVar14 + -0x10),*(int *)(puVar14 + -0xc),*(size_t *)(puVar14 + -8));\n        }\n        goto LAB_0004e9ab;\n      }\n      if (*(uint *)(iStack_dc + -4 + uVar13 * 4) >> ((byte)uStack_e4 & 0x1f) == 0) {\n        *(uint *)(puVar14 + -8) = uVar13;\n        *(int *)(puVar14 + -0xc) = iStack_dc;\n        *(uint **)(puVar14 + -0x10) = local_c0;\n        pcVar2 = *(code **)(iVar10 + 0x28);\n        *(undefined4 *)(puVar14 + -0x14) = 0x4ede2;\n        (*pcVar2)();\n        goto LAB_0004e9ab;\n      }\n    }\n  }\n  puVar7 = local_c0;\n  if (uVar11 != 1) {\n    *(uint *)(puVar14 + -8) = uVar5 * 4;\n    *(undefined4 *)(puVar14 + -0xc) = 0xff;\n    *(uint **)(puVar14 + -0x10) = local_c0;\n    *(undefined4 *)(puVar14 + -0x14) = 0x4e98f;\n    memset(*(void **)(puVar14 + -0x10),*(int *)(puVar14 + -0xc),*(size_t *)(puVar14 + -8));\n    puVar7 = local_c0 + uVar5;\n  }\n  *puVar7 = 0xffffffff >> ((byte)iStack_118 & 0x1f);\nLAB_0004e9ab:\n  uVar16 = CONCAT44(local_124,local_c0);\n  iStack_104 = iStack_104 + -1;\n  *puVar12 = *puVar12 | uStack_f0;\n  iVar10 = iStack_dc;\n  if (iStack_10c == 0) goto LAB_0004e9ce;\n  goto LAB_0004e690;\nLAB_0004efbf:\n  if (local_124 == (int *)0x0) {\n    uStack_d8 = 1;\n  }\n  else {\n    uVar5 = uVar11;\n    if (uVar11 == 0) {\nLAB_0004efd7:\n      if ((local_f8 != local_124) && ((int)uVar5 < (int)param_1)) {\n        piVar9 = local_f8 + uVar5;\n        piVar8 = local_124 + uVar5;\n        do {\n          iVar10 = *piVar9;\n          piVar9 = piVar9 + 1;\n          *piVar8 = iVar10;\n          piVar8 = piVar8 + 1;\n        } while ((int *)((int)local_f8 + local_128 + 4) != piVar9);\n      }\n    }\n    else {\n      *(uint *)(puVar14 + -4) = uVar11;\n      *(int *)(puVar14 + -8) = iVar10;\n      *(int **)(puVar14 + -0xc) = local_f8;\n      *(int **)(puVar14 + -0x10) = local_124;\n      *(undefined4 *)(puVar14 + -0x14) = 0x4f0a5;\n      iVar10 = __gmpn_sub_n();\n      if (iVar10 == 0) goto LAB_0004efd7;\n      if (param_1 != uVar11) {\n        local_c0 = (uint *)(uVar11 * 4);\n        uVar5 = uVar11 + 1;\n        iVar10 = local_f8[uVar11];\n        local_124[uVar11] = iVar10 + -1;\n        if (iVar10 == 0) {\n          if ((int)param_1 <= (int)uVar5) goto LAB_0004f017;\n          iVar10 = local_f8[uVar11 + 1];\n          local_124[uVar11 + 1] = iVar10 + -1;\n          uVar5 = uVar11 + 2;\n          while (iVar10 == 0) {\n            if (param_1 == uVar5) goto LAB_0004f017;\n            iVar10 = local_f8[uVar5];\n            local_124[uVar5] = iVar10 + -1;\n            uVar5 = uVar5 + 1;\n          }\n        }\n        goto LAB_0004efd7;\n      }\n    }\nLAB_0004f017:\n    iVar10 = local_124[local_134];\n    uStack_d8 = param_1;\n    while (uVar16 = CONCAT44(local_124,local_c0), iVar10 == 0) {\n      iVar10 = local_124[uStack_d8 - 2];\n      uStack_d8 = uStack_d8 - 1;\n    }\n  }\n  goto LAB_0004e9e0;\n}\n\n" (function_definition "uint FUN_0004e410(uint param_1,uint param_2,int param_3)\n\n{\n  byte bVar1;\n  code *pcVar2;\n  uint uVar3;\n  int iVar4;\n  uint uVar5;\n  int iVar6;\n  uint *puVar7;\n  int *piVar8;\n  int *piVar9;\n  int *extraout_ECX;\n  int iVar10;\n  uint uVar11;\n  uint *puVar12;\n  uint uVar13;\n  undefined1 *puVar14;\n  int iVar15;\n  int unaff_EDI;\n  int in_GS_OFFSET;\n  ushort in_FPUControlWord;\n  undefined8 uVar16;\n  undefined1 auStack_13c [8];\n  int local_134;\n  uint uStack_130;\n  uint *puStack_12c;\n  int local_128;\n  int *local_124;\n  int iStack_120;\n  uint *puStack_11c;\n  int iStack_118;\n  undefined4 uStack_114;\n  int iStack_110;\n  int iStack_10c;\n  int iStack_108;\n  int iStack_104;\n  uint uStack_100;\n  uint *puStack_fc;\n  int *local_f8;\n  uint uStack_f4;\n  uint uStack_f0;\n  uint uStack_ec;\n  uint uStack_e8;\n  uint uStack_e4;\n  int iStack_e0;\n  int iStack_dc;\n  uint uStack_d8;\n  int iStack_d4;\n  int iStack_d0;\n  int iStack_cc;\n  undefined4 uStack_c8;\n  int local_c4;\n  uint *local_c0;\n  int iStack_bc;\n  ushort uStack_b8;\n  int iStack_a8;\n  uint auStack_a4 [33];\n  int local_20;\n  \n  uVar16 = FUN_00025194();\n  local_124 = (int *)((ulonglong)uVar16 >> 0x20);\n  local_c0 = (uint *)uVar16;\n  local_c4 = unaff_EDI + 0x4fbe7;\n  puVar14 = auStack_13c;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  local_134 = param_1 + 0x3fffffff;\n  uVar11 = extraout_ECX[local_134];\n  local_128 = local_134 * 4;\n  uVar5 = 0x1f;\n  if (uVar11 != 0) {\n    for (; uVar11 >> uVar5 == 0; uVar5 = uVar5 - 1) {\n    }\n  }\n  iVar10 = (uVar5 ^ 0x1f) + 1;\n  uVar5 = param_1 * 0x20 - iVar10;\n  if (uVar5 < param_2) {\n    *local_c0 = 1;\n    if (local_124 == (int *)0x0) {\n      iVar10 = *extraout_ECX + -1;\n    }\n    else {\n      iVar10 = *extraout_ECX;\n      *local_124 = iVar10 + -1;\n      if (iVar10 == 0) {\n        if (1 < (int)param_1) {\n          iVar10 = extraout_ECX[1];\n          local_124[1] = iVar10 + -1;\n          if (iVar10 == 0) {\n            if (param_1 == 2) goto LAB_0004ef98;\n            iVar10 = extraout_ECX[2];\n            uVar11 = 3;\n            local_124[2] = iVar10 + -1;\n            while (iVar10 == 0) {\n              if (param_1 == uVar11) goto LAB_0004ef98;\n              iVar10 = extraout_ECX[uVar11];\n              local_124[uVar11] = iVar10 + -1;\n              uVar11 = uVar11 + 1;\n            }\n          }\n          else {\n            uVar11 = 2;\n          }\n          if ((extraout_ECX != local_124) && ((int)uVar11 < (int)param_1)) {\n            piVar9 = extraout_ECX + uVar11;\n            piVar8 = local_124 + uVar11;\n            do {\n              iVar10 = *piVar9;\n              piVar9 = piVar9 + 1;\n              *piVar8 = iVar10;\n              piVar8 = piVar8 + 1;\n            } while (extraout_ECX + param_1 + 0x40000000 != piVar9);\n          }\n        }\n      }\n      else if ((extraout_ECX != local_124) && (1 < (int)param_1)) {\n        piVar9 = extraout_ECX + 1;\n        piVar8 = local_124;\n        do {\n          piVar8 = piVar8 + 1;\n          iVar10 = *piVar9;\n          piVar9 = piVar9 + 1;\n          *piVar8 = iVar10;\n        } while (extraout_ECX + param_1 + 0x40000000 != piVar9);\n      }\nLAB_0004ef98:\n      iVar10 = local_124[local_134];\n    }\n    uStack_d8 = param_1 - (iVar10 == 0);\n    goto LAB_0004e9ee;\n  }\n  if (iVar10 == 0x20) {\n    uVar11 = extraout_ECX[param_1 + 0x3ffffffe];\n  }\n  else {\n    uVar11 = (uint)extraout_ECX[(param_1 - 1) - (uint)(param_1 != 1)] >>\n             (0x20 - (byte)iVar10 & 0x1f) | uVar11 << ((byte)iVar10 & 0x1f);\n  }\n  uVar11 = (uint)*(byte *)(unaff_EDI + 0x32bc7 + (uVar11 >> 0x18));\n  if (uVar5 < 0x1000000) {\n    uStack_e8 = (uVar5 * 0x100 | uVar11) / param_2;\n    uVar11 = uStack_e8 & 0xff;\n    uStack_e8 = uStack_e8 >> 8;\n  }\n  else {\n    uStack_e8 = uVar5 / param_2;\n    uVar11 = (uVar5 % param_2 << 8 | uVar11) / param_2;\n  }\n  iVar10 = uStack_e8 * param_2;\n  bVar1 = *(byte *)(unaff_EDI + 0x32ac7 + uVar11);\n  uStack_ec = param_2 - 1;\n  uVar11 = 3;\n  for (uVar5 = uStack_ec >> 2; uVar5 != 0; uVar5 = uVar5 >> 1) {\n    uVar11 = uVar11 + 1;\n  }\n  puStack_fc = auStack_a4;\n  iVar15 = 0;\n  auStack_a4[0] = uStack_e8;\n  if (8 < uStack_e8) {\n    iVar4 = 0;\n    do {\n      while (iVar15 = iVar4, uVar11 < uStack_e8) {\n        uStack_e8 = uStack_e8 + uVar11 >> 1;\n        puStack_fc[iVar15 + 1] = uStack_e8;\n        iVar4 = iVar15 + 1;\n        if (uStack_e8 < 9) goto LAB_0004e56d;\n      }\n      uStack_e8 = uStack_e8 - 1;\n      puStack_fc[iVar15 + 1] = uStack_e8;\n      iVar4 = iVar15 + 1;\n    } while (uStack_e8 != 8);\n    uStack_e8 = 8;\nLAB_0004e56d:\n    iVar15 = iVar15 + 1;\n  }\n  iStack_a8 = 0;\n  uStack_f4 = iVar10 - uStack_e8;\n  *local_c0 = (bVar1 | 0x100) >> (8U - (char)uStack_e8 & 0x1f);\n  uStack_c8 = 0;\n  uStack_b8 = in_FPUControlWord | 0xc00;\n  iStack_bc = (int)ROUND((double)param_2 * *(double *)(unaff_EDI + 0x32cc7) *\n                         (double)*(float *)(&UNK_00032ccf + unaff_EDI));\n  iStack_cc = param_1 + 2 + iStack_bc;\n  uVar11 = (param_1 + 1 + iStack_cc * 2) * 4;\n  local_f8 = extraout_ECX;\n  if (uVar11 < 0x7f01) {\n    iStack_120 = -(uVar11 + 0x1b & 0xfffffff0);\n    puVar14 = auStack_13c + iStack_120;\n    iStack_120 = (int)&uStack_130 + iStack_120;\n  }\n  else {\n    iStack_120 = __gmp_tmp_reentrant_alloc(&iStack_a8,uVar11);\n    uVar16 = CONCAT44(local_124,local_c0);\n    puVar14 = auStack_13c;\n  }\n  local_124 = (int *)((ulonglong)uVar16 >> 0x20);\n  iVar10 = iStack_120 + local_128 + 8;\n  iStack_d0 = iVar10 + iStack_cc * 4;\n  iStack_d4 = (int)local_124;\n  if (local_124 == (int *)0x0) {\n    iStack_d4 = iStack_120;\n  }\n  if (iVar15 != 0) {\n    iStack_104 = iVar15 + -1;\n    puStack_fc = auStack_a4;\n    iStack_cc = 1;\n    iStack_e0 = *(int *)(local_c4 + -0x26c);\n    iStack_dc = iVar10;\nLAB_0004e690:\n    local_124 = (int *)((ulonglong)uVar16 >> 0x20);\n    local_c0 = (uint *)uVar16;\n    uStack_e4 = uStack_f4 - uStack_e8 * uStack_ec;\n    iVar10 = param_1 - (uStack_e4 >> 5);\n    piVar9 = local_f8 + (uStack_e4 >> 5);\n    if ((uStack_e4 & 0x1f) == 0) {\n      *(int *)(puVar14 + -8) = iVar10;\n      *(int **)(puVar14 + -0xc) = piVar9;\n      iVar15 = iStack_e0;\n      *(int *)(puVar14 + -0x10) = iStack_d4;\n      pcVar2 = *(code **)(iVar15 + 0x28);\n      *(undefined4 *)(puVar14 + -0x14) = 0x4ed34;\n      (*pcVar2)();\n    }\n    else {\n      *(uint *)(puVar14 + -4) = uStack_e4 & 0x1f;\n      *(int *)(puVar14 + -8) = iVar10;\n      *(int **)(puVar14 + -0xc) = piVar9;\n      iVar15 = iStack_e0;\n      *(int *)(puVar14 + -0x10) = iStack_d4;\n      pcVar2 = *(code **)(iVar15 + 0x80);\n      *(undefined4 *)(puVar14 + -0x14) = 0x4e6dc;\n      (*pcVar2)();\n    }\n    iVar4 = iStack_d4;\n    iVar15 = iStack_dc;\n    uStack_d8 = iVar10 - (uint)(*(int *)(iStack_d4 + (iVar10 + -1) * 4) == 0);\n    do {\n      *(int *)(puVar14 + -0x10) = iVar15;\n      *(uint *)(puVar14 + -0x14) = uStack_ec;\n      *(int *)(puVar14 + -0x18) = iStack_cc;\n      *(uint **)(puVar14 + -0x1c) = local_c0;\n      *(int *)(puVar14 + -0x20) = iStack_d0;\n      *(undefined4 *)(puVar14 + -0x24) = 0x4e727;\n      iVar10 = __gmpn_pow_1();\n      *(int *)(puVar14 + -0x10) = iStack_cc;\n      *(uint **)(puVar14 + -0x14) = local_c0;\n      *(int *)(puVar14 + -0x18) = iVar10;\n      *(int *)(puVar14 + -0x1c) = iStack_d0;\n      *(int *)(puVar14 + -0x20) = iVar15;\n      iStack_dc = iVar10;\n      *(undefined4 *)(puVar14 + -0x24) = 0x4e74f;\n      __gmpn_mul();\n      iVar10 = iStack_d4;\n      uVar11 = uStack_d8;\n      iVar6 = (iStack_cc + iStack_dc) -\n              (uint)(*(int *)(iVar15 + -4 + (iStack_cc + iStack_dc) * 4) == 0);\n      puVar7 = local_c0;\n      if (iVar6 <= (int)uStack_d8) {\n        uVar5 = uStack_d8;\n        if (uStack_d8 != iVar6) goto LAB_0004eb66;\n        do {\n          uVar5 = uVar5 + -1;\n          if ((int)uVar5 < 0) {\n            iStack_108 = iStack_dc;\n            uStack_114 = 0;\n            iStack_10c = iStack_104;\n            uStack_e8 = puStack_fc[iStack_104] - puStack_fc[iStack_104 + 1];\n            iStack_118 = puStack_fc[iStack_104 + 1] - puStack_fc[iStack_104];\n            uStack_f0 = uStack_e8 >> 5;\n            uStack_f4 = iStack_118 + uStack_e4;\n            uVar11 = uStack_e4 - 1;\n            uStack_e4 = uStack_e8 & 0x1f;\n            puVar12 = (uint *)((uVar11 >> 5) - (uStack_f4 >> 5));\n            uStack_100 = uStack_f0 * 4;\n            uVar11 = 0;\n            iStack_110 = (int)puVar12 + 1;\n            uVar5 = uStack_f4 >> 5;\n            puVar7 = (uint *)(iStack_d4 + uStack_f0 * 4);\n            iStack_dc = iVar15;\n            uStack_d8 = uStack_f0;\n            goto LAB_0004e83d;\n          }\n          uVar13 = *(uint *)(iVar4 + uVar5 * 4);\n          uVar3 = *(uint *)(iVar15 + uVar5 * 4);\n        } while (uVar3 == uVar13);\n        if (uVar3 <= uVar13) goto LAB_0004eb66;\n      }\n      do {\n        uVar11 = *puVar7;\n        *puVar7 = *puVar7 - 1;\n        puVar7 = puVar7 + 1;\n      } while (uVar11 == 0);\n    } while( true );\n  }\n  iStack_cc = 1;\nLAB_0004e9ce:\n  piVar9 = local_f8;\n  local_c0 = (uint *)uVar16;\n  if ((param_3 == 0) || (*local_c0 < 2)) {\n    do {\n      local_124 = (int *)((ulonglong)uVar16 >> 0x20);\n      local_c0 = (uint *)uVar16;\n      *(int *)(puVar14 + -0x10) = iStack_d0;\n      *(uint *)(puVar14 + -0x14) = param_2;\n      *(int *)(puVar14 + -0x18) = iStack_cc;\n      *(uint **)(puVar14 + -0x1c) = local_c0;\n      *(int *)(puVar14 + -0x20) = iVar10;\n      *(undefined4 *)(puVar14 + -0x24) = 0x4ea47;\n      uVar11 = __gmpn_pow_1();\n      uVar16 = CONCAT44(local_124,local_c0);\n      if ((int)uVar11 <= (int)param_1) {\n        uVar5 = param_1;\n        if (param_1 != uVar11) goto LAB_0004efbf;\n        do {\n          uVar5 = uVar5 - 1;\n          if ((int)uVar5 < 0) {\n            uStack_d8 = 0;\n            uVar16 = CONCAT44(local_124,local_c0);\n            goto LAB_0004e9e0;\n          }\n          uVar13 = *(uint *)(iVar10 + uVar5 * 4);\n        } while (uVar13 == piVar9[uVar5]);\n        if (uVar13 <= (uint)piVar9[uVar5]) goto LAB_0004efbf;\n      }\n      do {\n        iVar15 = *local_c0;\n        *local_c0 = *local_c0 + -1;\n        local_c0 = (uint *)((int *)local_c0 + 1);\n      } while (iVar15 == 0);\n    } while( true );\n  }\nLAB_0004e9e0:\n  local_124 = (int *)((ulonglong)uVar16 >> 0x20);\n  local_c0 = (uint *)uVar16;\n  if (iStack_a8 != 0) {\n    *(int *)(puVar14 + -0x10) = iStack_a8;\n    *(undefined4 *)(puVar14 + -0x14) = 0x4f1a9;\n    __gmp_tmp_reentrant_free();\n    uVar16 = CONCAT44(local_124,local_c0);\n  }\nLAB_0004e9ee:\n  local_124 = (int *)((ulonglong)uVar16 >> 0x20);\n  local_c0 = (uint *)uVar16;\n  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return uStack_d8;\n  }\n                    /* WARNING: Subroutine does not return */\n  *(undefined **)(puVar14 + -4) = &UNK_0004f214;\n  FUN_0007ebe0();\nLAB_0004eb66:\n  iStack_108 = iStack_dc;\n  iStack_10c = iStack_104;\n  uStack_e8 = puStack_fc[iStack_104] - puStack_fc[iStack_104 + 1];\n  iStack_118 = puStack_fc[iStack_104 + 1] - puStack_fc[iStack_104];\n  uStack_f0 = uStack_e8 >> 5;\n  uStack_f4 = iStack_118 + uStack_e4;\n  uVar5 = uStack_f4 >> 5;\n  puStack_11c = (uint *)((uStack_e4 - 1 >> 5) - uVar5);\n  iStack_110 = (int)puStack_11c + 1;\n  uStack_e4 = uVar5;\n  iStack_dc = iVar15;\n  if (iVar6 != 0) {\n    *(int *)(puVar14 + -4) = iVar6;\n    *(int *)(puVar14 + -8) = iStack_dc;\n    *(int *)(puVar14 + -0xc) = iVar10;\n    *(int *)(puVar14 + -0x10) = iVar10;\n    uStack_d8 = iVar6;\n    *(undefined4 *)(puVar14 + -0x14) = 0x4ee32;\n    iVar10 = __gmpn_sub_n();\n    if ((iVar10 != 0) && (uVar11 != uStack_d8)) {\n      piVar9 = (int *)(iStack_d4 + uStack_d8 * 4);\n      iVar10 = *piVar9;\n      *piVar9 = iVar10 + -1;\n      if ((iVar10 == 0) && ((int)(uStack_d8 + 1) < (int)uVar11)) {\n        piVar9 = (int *)(iStack_d4 + (uStack_d8 + 1) * 4);\n        iVar15 = uStack_d8 + 2;\n        iVar10 = *piVar9;\n        *piVar9 = iVar10 + -1;\n        for (; (iVar10 == 0 && (uVar11 != iVar15)); iVar15 = iVar15 + 1) {\n          iVar10 = *(int *)(iStack_d4 + iVar15 * 4);\n          *(int *)(iStack_d4 + iVar15 * 4) = iVar10 + -1;\n        }\n      }\n    }\n  }\n  iVar4 = iStack_d4;\n  iVar15 = iStack_e0;\n  iVar10 = *(int *)(iStack_d4 + (uVar11 + -1) * 4);\n  while (iVar10 == 0) {\n    iVar10 = *(int *)(iStack_d4 + (uVar11 + -2) * 4);\n    uVar11 = uVar11 + -1;\n  }\n  uStack_100 = uStack_f0 * 4;\n  puVar7 = (uint *)(iStack_d4 + uStack_f0 * 4);\n  uStack_d8 = uStack_f0 + uVar11;\n  uVar5 = uStack_e8 & 0x1f;\n  uStack_130 = uStack_e4;\n  puStack_12c = puVar7;\n  if (uVar5 == 0) {\n    uStack_e4 = uVar5;\n    *(uint *)(puVar14 + -8) = uVar11;\n    *(int *)(puVar14 + -0xc) = iStack_d4;\n    *(uint **)(puVar14 + -0x10) = puVar7;\n    pcVar2 = *(code **)(iVar15 + 0x24);\n    *(undefined4 *)(puVar14 + -0x14) = 0x4ed9a;\n    (*pcVar2)();\n  }\n  else {\n    uStack_e4 = uVar5;\n    *(uint *)(puVar14 + -4) = uVar5;\n    *(uint *)(puVar14 + -8) = uVar11;\n    *(int *)(puVar14 + -0xc) = iVar4;\n    iVar10 = iStack_e0;\n    *(uint **)(puVar14 + -0x10) = puVar7;\n    pcVar2 = *(code **)(iVar10 + 0x38);\n    *(undefined4 *)(puVar14 + -0x14) = 0x4ec66;\n    iVar10 = (*pcVar2)();\n    if (iVar10 != 0) {\n      *(int *)(iStack_d4 + uStack_d8 * 4) = iVar10;\n      uStack_d8 = uStack_d8 + 1;\n    }\n  }\n  uVar11 = *puStack_12c;\n  uVar5 = uStack_130;\n  puVar7 = puStack_12c;\n  puVar12 = puStack_11c;\n  if ((int)uStack_f0 < (int)puStack_11c) {\n    uStack_114 = *(undefined4 *)(iStack_d4 + uStack_100 + 4);\n  }\nLAB_0004e83d:\n  piVar9 = local_f8 + uVar5;\n  puStack_11c = puVar7;\n  if ((uStack_f4 & 0x1f) == 0) {\n    *(int *)(puVar14 + -8) = iStack_110;\n    *(int **)(puVar14 + -0xc) = piVar9;\n    *(int *)(puVar14 + -0x10) = iStack_d4;\n    pcVar2 = *(code **)(iStack_e0 + 0x28);\n    *(undefined4 *)(puVar14 + -0x14) = 0x4ed09;\n    (*pcVar2)();\n  }\n  else {\n    *(uint *)(puVar14 + -4) = uStack_f4 & 0x1f;\n    *(int *)(puVar14 + -8) = iStack_110;\n    *(int **)(puVar14 + -0xc) = piVar9;\n    iVar10 = iStack_e0;\n    *(int *)(puVar14 + -0x10) = iStack_d4;\n    pcVar2 = *(code **)(iVar10 + 0x80);\n    *(undefined4 *)(puVar14 + -0x14) = 0x4e875;\n    (*pcVar2)();\n  }\n  iVar15 = iStack_d0;\n  iVar10 = iStack_108;\n  *puStack_11c = uVar11 | ~(-1 << ((byte)uStack_e4 & 0x1f)) & *puStack_11c;\n  if ((int)uStack_f0 < (int)puVar12) {\n    *(undefined4 *)(iStack_d4 + (uStack_f0 + 1) * 4) = uStack_114;\n  }\n  *(uint *)(puVar14 + -4) = param_2;\n  iVar4 = iStack_e0;\n  *(int *)(puVar14 + -8) = iVar10;\n  *(int *)(puVar14 + -0xc) = iVar15;\n  *(int *)(puVar14 + -0x10) = iVar15;\n  pcVar2 = *(code **)(iVar4 + 100);\n  *(undefined4 *)(puVar14 + -0x14) = 0x4e8c9;\n  iVar6 = (*pcVar2)();\n  puVar7 = local_c0;\n  iVar4 = iStack_cc;\n  *(int *)(iVar15 + iVar10 * 4) = iVar6;\n  iVar10 = (uint)(iVar6 != 0) + iVar10;\n  puVar12 = (uint *)(uStack_100 + (int)local_c0);\n  iVar15 = uStack_f0 + iStack_cc;\n  if (uStack_e4 == 0) {\n    *(int *)(puVar14 + -8) = iStack_cc;\n    *(uint **)(puVar14 + -0xc) = local_c0;\n    *(uint **)(puVar14 + -0x10) = puVar12;\n    pcVar2 = *(code **)(iStack_e0 + 0x24);\n    *(undefined4 *)(puVar14 + -0x14) = 0x4ecd9;\n    (*pcVar2)();\nLAB_0004ecdc:\n    iStack_cc = iVar15;\n  }\n  else {\n    *(uint *)(puVar14 + -4) = uStack_e4;\n    *(int *)(puVar14 + -8) = iVar4;\n    *(uint **)(puVar14 + -0xc) = puVar7;\n    *(uint **)(puVar14 + -0x10) = puVar12;\n    pcVar2 = *(code **)(iStack_e0 + 0x38);\n    *(undefined4 *)(puVar14 + -0x14) = 0x4e915;\n    uVar11 = (*pcVar2)();\n    if (uVar11 == 0) goto LAB_0004ecdc;\n    local_c0[iVar15] = uVar11;\n    iStack_cc = iVar15 + 1;\n  }\n  uStack_f0 = *puVar12;\n  uVar5 = uStack_e8 - 1 >> 5;\n  uVar11 = uVar5 + 1;\n  if ((int)uStack_d8 < iVar10) {\n    *(uint *)(puVar14 + -8) = uVar11 * 4;\n    *(undefined4 *)(puVar14 + -0xc) = 0;\n    *(uint **)(puVar14 + -0x10) = local_c0;\n    *(undefined4 *)(puVar14 + -0x14) = 0x4ee04;\n    memset(*(void **)(puVar14 + -0x10),*(int *)(puVar14 + -0xc),*(size_t *)(puVar14 + -8));\n    goto LAB_0004e9ab;\n  }\n  iVar15 = uStack_d8 - iVar10;\n  if (iVar15 <= (int)uVar11) {\n    *(int *)(puVar14 + -0xc) = iStack_120;\n    *(int *)(puVar14 + -0x10) = iVar10;\n    *(int *)(puVar14 + -0x14) = iStack_d0;\n    *(uint *)(puVar14 + -0x18) = uStack_d8;\n    *(int *)(puVar14 + -0x1c) = iStack_d4;\n    *(int *)(puVar14 + -0x20) = iStack_dc;\n    iStack_108 = iVar15;\n    uStack_100 = uVar11;\n    *(undefined4 *)(puVar14 + -0x24) = 0x4ead1;\n    __gmpn_div_q();\n    puVar7 = local_c0;\n    iVar10 = iStack_e0;\n    uVar13 = (uint)(*(int *)(iStack_dc + iStack_108 * 4) != 0) + iStack_108;\n    uVar11 = uStack_100;\n    if ((int)uVar13 <= (int)uStack_100) {\n      if ((uStack_100 != uVar13) || (uStack_e4 == 0)) {\n        uStack_e4 = uStack_100;\n        *(uint *)(puVar14 + -8) = uVar13;\n        *(int *)(puVar14 + -0xc) = iStack_dc;\n        *(uint **)(puVar14 + -0x10) = puVar7;\n        pcVar2 = *(code **)(iVar10 + 0x28);\n        *(undefined4 *)(puVar14 + -0x14) = 0x4eb2a;\n        (*pcVar2)();\n        if (uStack_e4 != uVar13) {\n          *(uint *)(puVar14 + -8) = (uStack_e4 - uVar13) * 4;\n          *(undefined4 *)(puVar14 + -0xc) = 0;\n          *(uint **)(puVar14 + -0x10) = puVar7 + uVar13;\n          *(undefined4 *)(puVar14 + -0x14) = 0x4eb55;\n          memset(*(void **)(puVar14 + -0x10),*(int *)(puVar14 + -0xc),*(size_t *)(puVar14 + -8));\n        }\n        goto LAB_0004e9ab;\n      }\n      if (*(uint *)(iStack_dc + -4 + uVar13 * 4) >> ((byte)uStack_e4 & 0x1f) == 0) {\n        *(uint *)(puVar14 + -8) = uVar13;\n        *(int *)(puVar14 + -0xc) = iStack_dc;\n        *(uint **)(puVar14 + -0x10) = local_c0;\n        pcVar2 = *(code **)(iVar10 + 0x28);\n        *(undefined4 *)(puVar14 + -0x14) = 0x4ede2;\n        (*pcVar2)();\n        goto LAB_0004e9ab;\n      }\n    }\n  }\n  puVar7 = local_c0;\n  if (uVar11 != 1) {\n    *(uint *)(puVar14 + -8) = uVar5 * 4;\n    *(undefined4 *)(puVar14 + -0xc) = 0xff;\n    *(uint **)(puVar14 + -0x10) = local_c0;\n    *(undefined4 *)(puVar14 + -0x14) = 0x4e98f;\n    memset(*(void **)(puVar14 + -0x10),*(int *)(puVar14 + -0xc),*(size_t *)(puVar14 + -8));\n    puVar7 = local_c0 + uVar5;\n  }\n  *puVar7 = 0xffffffff >> ((byte)iStack_118 & 0x1f);\nLAB_0004e9ab:\n  uVar16 = CONCAT44(local_124,local_c0);\n  iStack_104 = iStack_104 + -1;\n  *puVar12 = *puVar12 | uStack_f0;\n  iVar10 = iStack_dc;\n  if (iStack_10c == 0) goto LAB_0004e9ce;\n  goto LAB_0004e690;\nLAB_0004efbf:\n  if (local_124 == (int *)0x0) {\n    uStack_d8 = 1;\n  }\n  else {\n    uVar5 = uVar11;\n    if (uVar11 == 0) {\nLAB_0004efd7:\n      if ((local_f8 != local_124) && ((int)uVar5 < (int)param_1)) {\n        piVar9 = local_f8 + uVar5;\n        piVar8 = local_124 + uVar5;\n        do {\n          iVar10 = *piVar9;\n          piVar9 = piVar9 + 1;\n          *piVar8 = iVar10;\n          piVar8 = piVar8 + 1;\n        } while ((int *)((int)local_f8 + local_128 + 4) != piVar9);\n      }\n    }\n    else {\n      *(uint *)(puVar14 + -4) = uVar11;\n      *(int *)(puVar14 + -8) = iVar10;\n      *(int **)(puVar14 + -0xc) = local_f8;\n      *(int **)(puVar14 + -0x10) = local_124;\n      *(undefined4 *)(puVar14 + -0x14) = 0x4f0a5;\n      iVar10 = __gmpn_sub_n();\n      if (iVar10 == 0) goto LAB_0004efd7;\n      if (param_1 != uVar11) {\n        local_c0 = (uint *)(uVar11 * 4);\n        uVar5 = uVar11 + 1;\n        iVar10 = local_f8[uVar11];\n        local_124[uVar11] = iVar10 + -1;\n        if (iVar10 == 0) {\n          if ((int)param_1 <= (int)uVar5) goto LAB_0004f017;\n          iVar10 = local_f8[uVar11 + 1];\n          local_124[uVar11 + 1] = iVar10 + -1;\n          uVar5 = uVar11 + 2;\n          while (iVar10 == 0) {\n            if (param_1 == uVar5) goto LAB_0004f017;\n            iVar10 = local_f8[uVar5];\n            local_124[uVar5] = iVar10 + -1;\n            uVar5 = uVar5 + 1;\n          }\n        }\n        goto LAB_0004efd7;\n      }\n    }\nLAB_0004f017:\n    iVar10 = local_124[local_134];\n    uStack_d8 = param_1;\n    while (uVar16 = CONCAT44(local_124,local_c0), iVar10 == 0) {\n      iVar10 = local_124[uStack_d8 - 2];\n      uStack_d8 = uStack_d8 - 1;\n    }\n  }\n  goto LAB_0004e9e0;\n}" type_identifier (function_declarator "FUN_0004e410(uint param_1,uint param_2,int param_3)" identifier (parameter_list "(uint param_1,uint param_2,int param_3)" ( (parameter_declaration "uint param_1" type_identifier identifier) , (parameter_declaration "uint param_2" type_identifier identifier) , (parameter_declaration "int param_3" primitive_type identifier) ))) (compound_statement "{\n  byte bVar1;\n  code *pcVar2;\n  uint uVar3;\n  int iVar4;\n  uint uVar5;\n  int iVar6;\n  uint *puVar7;\n  int *piVar8;\n  int *piVar9;\n  int *extraout_ECX;\n  int iVar10;\n  uint uVar11;\n  uint *puVar12;\n  uint uVar13;\n  undefined1 *puVar14;\n  int iVar15;\n  int unaff_EDI;\n  int in_GS_OFFSET;\n  ushort in_FPUControlWord;\n  undefined8 uVar16;\n  undefined1 auStack_13c [8];\n  int local_134;\n  uint uStack_130;\n  uint *puStack_12c;\n  int local_128;\n  int *local_124;\n  int iStack_120;\n  uint *puStack_11c;\n  int iStack_118;\n  undefined4 uStack_114;\n  int iStack_110;\n  int iStack_10c;\n  int iStack_108;\n  int iStack_104;\n  uint uStack_100;\n  uint *puStack_fc;\n  int *local_f8;\n  uint uStack_f4;\n  uint uStack_f0;\n  uint uStack_ec;\n  uint uStack_e8;\n  uint uStack_e4;\n  int iStack_e0;\n  int iStack_dc;\n  uint uStack_d8;\n  int iStack_d4;\n  int iStack_d0;\n  int iStack_cc;\n  undefined4 uStack_c8;\n  int local_c4;\n  uint *local_c0;\n  int iStack_bc;\n  ushort uStack_b8;\n  int iStack_a8;\n  uint auStack_a4 [33];\n  int local_20;\n  \n  uVar16 = FUN_00025194();\n  local_124 = (int *)((ulonglong)uVar16 >> 0x20);\n  local_c0 = (uint *)uVar16;\n  local_c4 = unaff_EDI + 0x4fbe7;\n  puVar14 = auStack_13c;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  local_134 = param_1 + 0x3fffffff;\n  uVar11 = extraout_ECX[local_134];\n  local_128 = local_134 * 4;\n  uVar5 = 0x1f;\n  if (uVar11 != 0) {\n    for (; uVar11 >> uVar5 == 0; uVar5 = uVar5 - 1) {\n    }\n  }\n  iVar10 = (uVar5 ^ 0x1f) + 1;\n  uVar5 = param_1 * 0x20 - iVar10;\n  if (uVar5 < param_2) {\n    *local_c0 = 1;\n    if (local_124 == (int *)0x0) {\n      iVar10 = *extraout_ECX + -1;\n    }\n    else {\n      iVar10 = *extraout_ECX;\n      *local_124 = iVar10 + -1;\n      if (iVar10 == 0) {\n        if (1 < (int)param_1) {\n          iVar10 = extraout_ECX[1];\n          local_124[1] = iVar10 + -1;\n          if (iVar10 == 0) {\n            if (param_1 == 2) goto LAB_0004ef98;\n            iVar10 = extraout_ECX[2];\n            uVar11 = 3;\n            local_124[2] = iVar10 + -1;\n            while (iVar10 == 0) {\n              if (param_1 == uVar11) goto LAB_0004ef98;\n              iVar10 = extraout_ECX[uVar11];\n              local_124[uVar11] = iVar10 + -1;\n              uVar11 = uVar11 + 1;\n            }\n          }\n          else {\n            uVar11 = 2;\n          }\n          if ((extraout_ECX != local_124) && ((int)uVar11 < (int)param_1)) {\n            piVar9 = extraout_ECX + uVar11;\n            piVar8 = local_124 + uVar11;\n            do {\n              iVar10 = *piVar9;\n              piVar9 = piVar9 + 1;\n              *piVar8 = iVar10;\n              piVar8 = piVar8 + 1;\n            } while (extraout_ECX + param_1 + 0x40000000 != piVar9);\n          }\n        }\n      }\n      else if ((extraout_ECX != local_124) && (1 < (int)param_1)) {\n        piVar9 = extraout_ECX + 1;\n        piVar8 = local_124;\n        do {\n          piVar8 = piVar8 + 1;\n          iVar10 = *piVar9;\n          piVar9 = piVar9 + 1;\n          *piVar8 = iVar10;\n        } while (extraout_ECX + param_1 + 0x40000000 != piVar9);\n      }\nLAB_0004ef98:\n      iVar10 = local_124[local_134];\n    }\n    uStack_d8 = param_1 - (iVar10 == 0);\n    goto LAB_0004e9ee;\n  }\n  if (iVar10 == 0x20) {\n    uVar11 = extraout_ECX[param_1 + 0x3ffffffe];\n  }\n  else {\n    uVar11 = (uint)extraout_ECX[(param_1 - 1) - (uint)(param_1 != 1)] >>\n             (0x20 - (byte)iVar10 & 0x1f) | uVar11 << ((byte)iVar10 & 0x1f);\n  }\n  uVar11 = (uint)*(byte *)(unaff_EDI + 0x32bc7 + (uVar11 >> 0x18));\n  if (uVar5 < 0x1000000) {\n    uStack_e8 = (uVar5 * 0x100 | uVar11) / param_2;\n    uVar11 = uStack_e8 & 0xff;\n    uStack_e8 = uStack_e8 >> 8;\n  }\n  else {\n    uStack_e8 = uVar5 / param_2;\n    uVar11 = (uVar5 % param_2 << 8 | uVar11) / param_2;\n  }\n  iVar10 = uStack_e8 * param_2;\n  bVar1 = *(byte *)(unaff_EDI + 0x32ac7 + uVar11);\n  uStack_ec = param_2 - 1;\n  uVar11 = 3;\n  for (uVar5 = uStack_ec >> 2; uVar5 != 0; uVar5 = uVar5 >> 1) {\n    uVar11 = uVar11 + 1;\n  }\n  puStack_fc = auStack_a4;\n  iVar15 = 0;\n  auStack_a4[0] = uStack_e8;\n  if (8 < uStack_e8) {\n    iVar4 = 0;\n    do {\n      while (iVar15 = iVar4, uVar11 < uStack_e8) {\n        uStack_e8 = uStack_e8 + uVar11 >> 1;\n        puStack_fc[iVar15 + 1] = uStack_e8;\n        iVar4 = iVar15 + 1;\n        if (uStack_e8 < 9) goto LAB_0004e56d;\n      }\n      uStack_e8 = uStack_e8 - 1;\n      puStack_fc[iVar15 + 1] = uStack_e8;\n      iVar4 = iVar15 + 1;\n    } while (uStack_e8 != 8);\n    uStack_e8 = 8;\nLAB_0004e56d:\n    iVar15 = iVar15 + 1;\n  }\n  iStack_a8 = 0;\n  uStack_f4 = iVar10 - uStack_e8;\n  *local_c0 = (bVar1 | 0x100) >> (8U - (char)uStack_e8 & 0x1f);\n  uStack_c8 = 0;\n  uStack_b8 = in_FPUControlWord | 0xc00;\n  iStack_bc = (int)ROUND((double)param_2 * *(double *)(unaff_EDI + 0x32cc7) *\n                         (double)*(float *)(&UNK_00032ccf + unaff_EDI));\n  iStack_cc = param_1 + 2 + iStack_bc;\n  uVar11 = (param_1 + 1 + iStack_cc * 2) * 4;\n  local_f8 = extraout_ECX;\n  if (uVar11 < 0x7f01) {\n    iStack_120 = -(uVar11 + 0x1b & 0xfffffff0);\n    puVar14 = auStack_13c + iStack_120;\n    iStack_120 = (int)&uStack_130 + iStack_120;\n  }\n  else {\n    iStack_120 = __gmp_tmp_reentrant_alloc(&iStack_a8,uVar11);\n    uVar16 = CONCAT44(local_124,local_c0);\n    puVar14 = auStack_13c;\n  }\n  local_124 = (int *)((ulonglong)uVar16 >> 0x20);\n  iVar10 = iStack_120 + local_128 + 8;\n  iStack_d0 = iVar10 + iStack_cc * 4;\n  iStack_d4 = (int)local_124;\n  if (local_124 == (int *)0x0) {\n    iStack_d4 = iStack_120;\n  }\n  if (iVar15 != 0) {\n    iStack_104 = iVar15 + -1;\n    puStack_fc = auStack_a4;\n    iStack_cc = 1;\n    iStack_e0 = *(int *)(local_c4 + -0x26c);\n    iStack_dc = iVar10;\nLAB_0004e690:\n    local_124 = (int *)((ulonglong)uVar16 >> 0x20);\n    local_c0 = (uint *)uVar16;\n    uStack_e4 = uStack_f4 - uStack_e8 * uStack_ec;\n    iVar10 = param_1 - (uStack_e4 >> 5);\n    piVar9 = local_f8 + (uStack_e4 >> 5);\n    if ((uStack_e4 & 0x1f) == 0) {\n      *(int *)(puVar14 + -8) = iVar10;\n      *(int **)(puVar14 + -0xc) = piVar9;\n      iVar15 = iStack_e0;\n      *(int *)(puVar14 + -0x10) = iStack_d4;\n      pcVar2 = *(code **)(iVar15 + 0x28);\n      *(undefined4 *)(puVar14 + -0x14) = 0x4ed34;\n      (*pcVar2)();\n    }\n    else {\n      *(uint *)(puVar14 + -4) = uStack_e4 & 0x1f;\n      *(int *)(puVar14 + -8) = iVar10;\n      *(int **)(puVar14 + -0xc) = piVar9;\n      iVar15 = iStack_e0;\n      *(int *)(puVar14 + -0x10) = iStack_d4;\n      pcVar2 = *(code **)(iVar15 + 0x80);\n      *(undefined4 *)(puVar14 + -0x14) = 0x4e6dc;\n      (*pcVar2)();\n    }\n    iVar4 = iStack_d4;\n    iVar15 = iStack_dc;\n    uStack_d8 = iVar10 - (uint)(*(int *)(iStack_d4 + (iVar10 + -1) * 4) == 0);\n    do {\n      *(int *)(puVar14 + -0x10) = iVar15;\n      *(uint *)(puVar14 + -0x14) = uStack_ec;\n      *(int *)(puVar14 + -0x18) = iStack_cc;\n      *(uint **)(puVar14 + -0x1c) = local_c0;\n      *(int *)(puVar14 + -0x20) = iStack_d0;\n      *(undefined4 *)(puVar14 + -0x24) = 0x4e727;\n      iVar10 = __gmpn_pow_1();\n      *(int *)(puVar14 + -0x10) = iStack_cc;\n      *(uint **)(puVar14 + -0x14) = local_c0;\n      *(int *)(puVar14 + -0x18) = iVar10;\n      *(int *)(puVar14 + -0x1c) = iStack_d0;\n      *(int *)(puVar14 + -0x20) = iVar15;\n      iStack_dc = iVar10;\n      *(undefined4 *)(puVar14 + -0x24) = 0x4e74f;\n      __gmpn_mul();\n      iVar10 = iStack_d4;\n      uVar11 = uStack_d8;\n      iVar6 = (iStack_cc + iStack_dc) -\n              (uint)(*(int *)(iVar15 + -4 + (iStack_cc + iStack_dc) * 4) == 0);\n      puVar7 = local_c0;\n      if (iVar6 <= (int)uStack_d8) {\n        uVar5 = uStack_d8;\n        if (uStack_d8 != iVar6) goto LAB_0004eb66;\n        do {\n          uVar5 = uVar5 + -1;\n          if ((int)uVar5 < 0) {\n            iStack_108 = iStack_dc;\n            uStack_114 = 0;\n            iStack_10c = iStack_104;\n            uStack_e8 = puStack_fc[iStack_104] - puStack_fc[iStack_104 + 1];\n            iStack_118 = puStack_fc[iStack_104 + 1] - puStack_fc[iStack_104];\n            uStack_f0 = uStack_e8 >> 5;\n            uStack_f4 = iStack_118 + uStack_e4;\n            uVar11 = uStack_e4 - 1;\n            uStack_e4 = uStack_e8 & 0x1f;\n            puVar12 = (uint *)((uVar11 >> 5) - (uStack_f4 >> 5));\n            uStack_100 = uStack_f0 * 4;\n            uVar11 = 0;\n            iStack_110 = (int)puVar12 + 1;\n            uVar5 = uStack_f4 >> 5;\n            puVar7 = (uint *)(iStack_d4 + uStack_f0 * 4);\n            iStack_dc = iVar15;\n            uStack_d8 = uStack_f0;\n            goto LAB_0004e83d;\n          }\n          uVar13 = *(uint *)(iVar4 + uVar5 * 4);\n          uVar3 = *(uint *)(iVar15 + uVar5 * 4);\n        } while (uVar3 == uVar13);\n        if (uVar3 <= uVar13) goto LAB_0004eb66;\n      }\n      do {\n        uVar11 = *puVar7;\n        *puVar7 = *puVar7 - 1;\n        puVar7 = puVar7 + 1;\n      } while (uVar11 == 0);\n    } while( true );\n  }\n  iStack_cc = 1;\nLAB_0004e9ce:\n  piVar9 = local_f8;\n  local_c0 = (uint *)uVar16;\n  if ((param_3 == 0) || (*local_c0 < 2)) {\n    do {\n      local_124 = (int *)((ulonglong)uVar16 >> 0x20);\n      local_c0 = (uint *)uVar16;\n      *(int *)(puVar14 + -0x10) = iStack_d0;\n      *(uint *)(puVar14 + -0x14) = param_2;\n      *(int *)(puVar14 + -0x18) = iStack_cc;\n      *(uint **)(puVar14 + -0x1c) = local_c0;\n      *(int *)(puVar14 + -0x20) = iVar10;\n      *(undefined4 *)(puVar14 + -0x24) = 0x4ea47;\n      uVar11 = __gmpn_pow_1();\n      uVar16 = CONCAT44(local_124,local_c0);\n      if ((int)uVar11 <= (int)param_1) {\n        uVar5 = param_1;\n        if (param_1 != uVar11) goto LAB_0004efbf;\n        do {\n          uVar5 = uVar5 - 1;\n          if ((int)uVar5 < 0) {\n            uStack_d8 = 0;\n            uVar16 = CONCAT44(local_124,local_c0);\n            goto LAB_0004e9e0;\n          }\n          uVar13 = *(uint *)(iVar10 + uVar5 * 4);\n        } while (uVar13 == piVar9[uVar5]);\n        if (uVar13 <= (uint)piVar9[uVar5]) goto LAB_0004efbf;\n      }\n      do {\n        iVar15 = *local_c0;\n        *local_c0 = *local_c0 + -1;\n        local_c0 = (uint *)((int *)local_c0 + 1);\n      } while (iVar15 == 0);\n    } while( true );\n  }\nLAB_0004e9e0:\n  local_124 = (int *)((ulonglong)uVar16 >> 0x20);\n  local_c0 = (uint *)uVar16;\n  if (iStack_a8 != 0) {\n    *(int *)(puVar14 + -0x10) = iStack_a8;\n    *(undefined4 *)(puVar14 + -0x14) = 0x4f1a9;\n    __gmp_tmp_reentrant_free();\n    uVar16 = CONCAT44(local_124,local_c0);\n  }\nLAB_0004e9ee:\n  local_124 = (int *)((ulonglong)uVar16 >> 0x20);\n  local_c0 = (uint *)uVar16;\n  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return uStack_d8;\n  }\n                    /* WARNING: Subroutine does not return */\n  *(undefined **)(puVar14 + -4) = &UNK_0004f214;\n  FUN_0007ebe0();\nLAB_0004eb66:\n  iStack_108 = iStack_dc;\n  iStack_10c = iStack_104;\n  uStack_e8 = puStack_fc[iStack_104] - puStack_fc[iStack_104 + 1];\n  iStack_118 = puStack_fc[iStack_104 + 1] - puStack_fc[iStack_104];\n  uStack_f0 = uStack_e8 >> 5;\n  uStack_f4 = iStack_118 + uStack_e4;\n  uVar5 = uStack_f4 >> 5;\n  puStack_11c = (uint *)((uStack_e4 - 1 >> 5) - uVar5);\n  iStack_110 = (int)puStack_11c + 1;\n  uStack_e4 = uVar5;\n  iStack_dc = iVar15;\n  if (iVar6 != 0) {\n    *(int *)(puVar14 + -4) = iVar6;\n    *(int *)(puVar14 + -8) = iStack_dc;\n    *(int *)(puVar14 + -0xc) = iVar10;\n    *(int *)(puVar14 + -0x10) = iVar10;\n    uStack_d8 = iVar6;\n    *(undefined4 *)(puVar14 + -0x14) = 0x4ee32;\n    iVar10 = __gmpn_sub_n();\n    if ((iVar10 != 0) && (uVar11 != uStack_d8)) {\n      piVar9 = (int *)(iStack_d4 + uStack_d8 * 4);\n      iVar10 = *piVar9;\n      *piVar9 = iVar10 + -1;\n      if ((iVar10 == 0) && ((int)(uStack_d8 + 1) < (int)uVar11)) {\n        piVar9 = (int *)(iStack_d4 + (uStack_d8 + 1) * 4);\n        iVar15 = uStack_d8 + 2;\n        iVar10 = *piVar9;\n        *piVar9 = iVar10 + -1;\n        for (; (iVar10 == 0 && (uVar11 != iVar15)); iVar15 = iVar15 + 1) {\n          iVar10 = *(int *)(iStack_d4 + iVar15 * 4);\n          *(int *)(iStack_d4 + iVar15 * 4) = iVar10 + -1;\n        }\n      }\n    }\n  }\n  iVar4 = iStack_d4;\n  iVar15 = iStack_e0;\n  iVar10 = *(int *)(iStack_d4 + (uVar11 + -1) * 4);\n  while (iVar10 == 0) {\n    iVar10 = *(int *)(iStack_d4 + (uVar11 + -2) * 4);\n    uVar11 = uVar11 + -1;\n  }\n  uStack_100 = uStack_f0 * 4;\n  puVar7 = (uint *)(iStack_d4 + uStack_f0 * 4);\n  uStack_d8 = uStack_f0 + uVar11;\n  uVar5 = uStack_e8 & 0x1f;\n  uStack_130 = uStack_e4;\n  puStack_12c = puVar7;\n  if (uVar5 == 0) {\n    uStack_e4 = uVar5;\n    *(uint *)(puVar14 + -8) = uVar11;\n    *(int *)(puVar14 + -0xc) = iStack_d4;\n    *(uint **)(puVar14 + -0x10) = puVar7;\n    pcVar2 = *(code **)(iVar15 + 0x24);\n    *(undefined4 *)(puVar14 + -0x14) = 0x4ed9a;\n    (*pcVar2)();\n  }\n  else {\n    uStack_e4 = uVar5;\n    *(uint *)(puVar14 + -4) = uVar5;\n    *(uint *)(puVar14 + -8) = uVar11;\n    *(int *)(puVar14 + -0xc) = iVar4;\n    iVar10 = iStack_e0;\n    *(uint **)(puVar14 + -0x10) = puVar7;\n    pcVar2 = *(code **)(iVar10 + 0x38);\n    *(undefined4 *)(puVar14 + -0x14) = 0x4ec66;\n    iVar10 = (*pcVar2)();\n    if (iVar10 != 0) {\n      *(int *)(iStack_d4 + uStack_d8 * 4) = iVar10;\n      uStack_d8 = uStack_d8 + 1;\n    }\n  }\n  uVar11 = *puStack_12c;\n  uVar5 = uStack_130;\n  puVar7 = puStack_12c;\n  puVar12 = puStack_11c;\n  if ((int)uStack_f0 < (int)puStack_11c) {\n    uStack_114 = *(undefined4 *)(iStack_d4 + uStack_100 + 4);\n  }\nLAB_0004e83d:\n  piVar9 = local_f8 + uVar5;\n  puStack_11c = puVar7;\n  if ((uStack_f4 & 0x1f) == 0) {\n    *(int *)(puVar14 + -8) = iStack_110;\n    *(int **)(puVar14 + -0xc) = piVar9;\n    *(int *)(puVar14 + -0x10) = iStack_d4;\n    pcVar2 = *(code **)(iStack_e0 + 0x28);\n    *(undefined4 *)(puVar14 + -0x14) = 0x4ed09;\n    (*pcVar2)();\n  }\n  else {\n    *(uint *)(puVar14 + -4) = uStack_f4 & 0x1f;\n    *(int *)(puVar14 + -8) = iStack_110;\n    *(int **)(puVar14 + -0xc) = piVar9;\n    iVar10 = iStack_e0;\n    *(int *)(puVar14 + -0x10) = iStack_d4;\n    pcVar2 = *(code **)(iVar10 + 0x80);\n    *(undefined4 *)(puVar14 + -0x14) = 0x4e875;\n    (*pcVar2)();\n  }\n  iVar15 = iStack_d0;\n  iVar10 = iStack_108;\n  *puStack_11c = uVar11 | ~(-1 << ((byte)uStack_e4 & 0x1f)) & *puStack_11c;\n  if ((int)uStack_f0 < (int)puVar12) {\n    *(undefined4 *)(iStack_d4 + (uStack_f0 + 1) * 4) = uStack_114;\n  }\n  *(uint *)(puVar14 + -4) = param_2;\n  iVar4 = iStack_e0;\n  *(int *)(puVar14 + -8) = iVar10;\n  *(int *)(puVar14 + -0xc) = iVar15;\n  *(int *)(puVar14 + -0x10) = iVar15;\n  pcVar2 = *(code **)(iVar4 + 100);\n  *(undefined4 *)(puVar14 + -0x14) = 0x4e8c9;\n  iVar6 = (*pcVar2)();\n  puVar7 = local_c0;\n  iVar4 = iStack_cc;\n  *(int *)(iVar15 + iVar10 * 4) = iVar6;\n  iVar10 = (uint)(iVar6 != 0) + iVar10;\n  puVar12 = (uint *)(uStack_100 + (int)local_c0);\n  iVar15 = uStack_f0 + iStack_cc;\n  if (uStack_e4 == 0) {\n    *(int *)(puVar14 + -8) = iStack_cc;\n    *(uint **)(puVar14 + -0xc) = local_c0;\n    *(uint **)(puVar14 + -0x10) = puVar12;\n    pcVar2 = *(code **)(iStack_e0 + 0x24);\n    *(undefined4 *)(puVar14 + -0x14) = 0x4ecd9;\n    (*pcVar2)();\nLAB_0004ecdc:\n    iStack_cc = iVar15;\n  }\n  else {\n    *(uint *)(puVar14 + -4) = uStack_e4;\n    *(int *)(puVar14 + -8) = iVar4;\n    *(uint **)(puVar14 + -0xc) = puVar7;\n    *(uint **)(puVar14 + -0x10) = puVar12;\n    pcVar2 = *(code **)(iStack_e0 + 0x38);\n    *(undefined4 *)(puVar14 + -0x14) = 0x4e915;\n    uVar11 = (*pcVar2)();\n    if (uVar11 == 0) goto LAB_0004ecdc;\n    local_c0[iVar15] = uVar11;\n    iStack_cc = iVar15 + 1;\n  }\n  uStack_f0 = *puVar12;\n  uVar5 = uStack_e8 - 1 >> 5;\n  uVar11 = uVar5 + 1;\n  if ((int)uStack_d8 < iVar10) {\n    *(uint *)(puVar14 + -8) = uVar11 * 4;\n    *(undefined4 *)(puVar14 + -0xc) = 0;\n    *(uint **)(puVar14 + -0x10) = local_c0;\n    *(undefined4 *)(puVar14 + -0x14) = 0x4ee04;\n    memset(*(void **)(puVar14 + -0x10),*(int *)(puVar14 + -0xc),*(size_t *)(puVar14 + -8));\n    goto LAB_0004e9ab;\n  }\n  iVar15 = uStack_d8 - iVar10;\n  if (iVar15 <= (int)uVar11) {\n    *(int *)(puVar14 + -0xc) = iStack_120;\n    *(int *)(puVar14 + -0x10) = iVar10;\n    *(int *)(puVar14 + -0x14) = iStack_d0;\n    *(uint *)(puVar14 + -0x18) = uStack_d8;\n    *(int *)(puVar14 + -0x1c) = iStack_d4;\n    *(int *)(puVar14 + -0x20) = iStack_dc;\n    iStack_108 = iVar15;\n    uStack_100 = uVar11;\n    *(undefined4 *)(puVar14 + -0x24) = 0x4ead1;\n    __gmpn_div_q();\n    puVar7 = local_c0;\n    iVar10 = iStack_e0;\n    uVar13 = (uint)(*(int *)(iStack_dc + iStack_108 * 4) != 0) + iStack_108;\n    uVar11 = uStack_100;\n    if ((int)uVar13 <= (int)uStack_100) {\n      if ((uStack_100 != uVar13) || (uStack_e4 == 0)) {\n        uStack_e4 = uStack_100;\n        *(uint *)(puVar14 + -8) = uVar13;\n        *(int *)(puVar14 + -0xc) = iStack_dc;\n        *(uint **)(puVar14 + -0x10) = puVar7;\n        pcVar2 = *(code **)(iVar10 + 0x28);\n        *(undefined4 *)(puVar14 + -0x14) = 0x4eb2a;\n        (*pcVar2)();\n        if (uStack_e4 != uVar13) {\n          *(uint *)(puVar14 + -8) = (uStack_e4 - uVar13) * 4;\n          *(undefined4 *)(puVar14 + -0xc) = 0;\n          *(uint **)(puVar14 + -0x10) = puVar7 + uVar13;\n          *(undefined4 *)(puVar14 + -0x14) = 0x4eb55;\n          memset(*(void **)(puVar14 + -0x10),*(int *)(puVar14 + -0xc),*(size_t *)(puVar14 + -8));\n        }\n        goto LAB_0004e9ab;\n      }\n      if (*(uint *)(iStack_dc + -4 + uVar13 * 4) >> ((byte)uStack_e4 & 0x1f) == 0) {\n        *(uint *)(puVar14 + -8) = uVar13;\n        *(int *)(puVar14 + -0xc) = iStack_dc;\n        *(uint **)(puVar14 + -0x10) = local_c0;\n        pcVar2 = *(code **)(iVar10 + 0x28);\n        *(undefined4 *)(puVar14 + -0x14) = 0x4ede2;\n        (*pcVar2)();\n        goto LAB_0004e9ab;\n      }\n    }\n  }\n  puVar7 = local_c0;\n  if (uVar11 != 1) {\n    *(uint *)(puVar14 + -8) = uVar5 * 4;\n    *(undefined4 *)(puVar14 + -0xc) = 0xff;\n    *(uint **)(puVar14 + -0x10) = local_c0;\n    *(undefined4 *)(puVar14 + -0x14) = 0x4e98f;\n    memset(*(void **)(puVar14 + -0x10),*(int *)(puVar14 + -0xc),*(size_t *)(puVar14 + -8));\n    puVar7 = local_c0 + uVar5;\n  }\n  *puVar7 = 0xffffffff >> ((byte)iStack_118 & 0x1f);\nLAB_0004e9ab:\n  uVar16 = CONCAT44(local_124,local_c0);\n  iStack_104 = iStack_104 + -1;\n  *puVar12 = *puVar12 | uStack_f0;\n  iVar10 = iStack_dc;\n  if (iStack_10c == 0) goto LAB_0004e9ce;\n  goto LAB_0004e690;\nLAB_0004efbf:\n  if (local_124 == (int *)0x0) {\n    uStack_d8 = 1;\n  }\n  else {\n    uVar5 = uVar11;\n    if (uVar11 == 0) {\nLAB_0004efd7:\n      if ((local_f8 != local_124) && ((int)uVar5 < (int)param_1)) {\n        piVar9 = local_f8 + uVar5;\n        piVar8 = local_124 + uVar5;\n        do {\n          iVar10 = *piVar9;\n          piVar9 = piVar9 + 1;\n          *piVar8 = iVar10;\n          piVar8 = piVar8 + 1;\n        } while ((int *)((int)local_f8 + local_128 + 4) != piVar9);\n      }\n    }\n    else {\n      *(uint *)(puVar14 + -4) = uVar11;\n      *(int *)(puVar14 + -8) = iVar10;\n      *(int **)(puVar14 + -0xc) = local_f8;\n      *(int **)(puVar14 + -0x10) = local_124;\n      *(undefined4 *)(puVar14 + -0x14) = 0x4f0a5;\n      iVar10 = __gmpn_sub_n();\n      if (iVar10 == 0) goto LAB_0004efd7;\n      if (param_1 != uVar11) {\n        local_c0 = (uint *)(uVar11 * 4);\n        uVar5 = uVar11 + 1;\n        iVar10 = local_f8[uVar11];\n        local_124[uVar11] = iVar10 + -1;\n        if (iVar10 == 0) {\n          if ((int)param_1 <= (int)uVar5) goto LAB_0004f017;\n          iVar10 = local_f8[uVar11 + 1];\n          local_124[uVar11 + 1] = iVar10 + -1;\n          uVar5 = uVar11 + 2;\n          while (iVar10 == 0) {\n            if (param_1 == uVar5) goto LAB_0004f017;\n            iVar10 = local_f8[uVar5];\n            local_124[uVar5] = iVar10 + -1;\n            uVar5 = uVar5 + 1;\n          }\n        }\n        goto LAB_0004efd7;\n      }\n    }\nLAB_0004f017:\n    iVar10 = local_124[local_134];\n    uStack_d8 = param_1;\n    while (uVar16 = CONCAT44(local_124,local_c0), iVar10 == 0) {\n      iVar10 = local_124[uStack_d8 - 2];\n      uStack_d8 = uStack_d8 - 1;\n    }\n  }\n  goto LAB_0004e9e0;\n}" { (declaration "byte bVar1;" type_identifier identifier ;) (declaration "code *pcVar2;" type_identifier (pointer_declarator "*pcVar2" * identifier) ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "uint uVar5;" type_identifier identifier ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "uint *puVar7;" type_identifier (pointer_declarator "*puVar7" * identifier) ;) (declaration "int *piVar8;" primitive_type (pointer_declarator "*piVar8" * identifier) ;) (declaration "int *piVar9;" primitive_type (pointer_declarator "*piVar9" * identifier) ;) (declaration "int *extraout_ECX;" primitive_type (pointer_declarator "*extraout_ECX" * identifier) ;) (declaration "int iVar10;" primitive_type identifier ;) (declaration "uint uVar11;" type_identifier identifier ;) (declaration "uint *puVar12;" type_identifier (pointer_declarator "*puVar12" * identifier) ;) (declaration "uint uVar13;" type_identifier identifier ;) (declaration "undefined1 *puVar14;" type_identifier (pointer_declarator "*puVar14" * identifier) ;) (declaration "int iVar15;" primitive_type identifier ;) (declaration "int unaff_EDI;" primitive_type identifier ;) (declaration "int in_GS_OFFSET;" primitive_type identifier ;) (declaration "ushort in_FPUControlWord;" type_identifier identifier ;) (declaration "undefined8 uVar16;" type_identifier identifier ;) (declaration "undefined1 auStack_13c [8];" type_identifier (array_declarator "auStack_13c [8]" identifier [ number_literal ]) ;) (declaration "int local_134;" primitive_type identifier ;) (declaration "uint uStack_130;" type_identifier identifier ;) (declaration "uint *puStack_12c;" type_identifier (pointer_declarator "*puStack_12c" * identifier) ;) (declaration "int local_128;" primitive_type identifier ;) (declaration "int *local_124;" primitive_type (pointer_declarator "*local_124" * identifier) ;) (declaration "int iStack_120;" primitive_type identifier ;) (declaration "uint *puStack_11c;" type_identifier (pointer_declarator "*puStack_11c" * identifier) ;) (declaration "int iStack_118;" primitive_type identifier ;) (declaration "undefined4 uStack_114;" type_identifier identifier ;) (declaration "int iStack_110;" primitive_type identifier ;) (declaration "int iStack_10c;" primitive_type identifier ;) (declaration "int iStack_108;" primitive_type identifier ;) (declaration "int iStack_104;" primitive_type identifier ;) (declaration "uint uStack_100;" type_identifier identifier ;) (declaration "uint *puStack_fc;" type_identifier (pointer_declarator "*puStack_fc" * identifier) ;) (declaration "int *local_f8;" primitive_type (pointer_declarator "*local_f8" * identifier) ;) (declaration "uint uStack_f4;" type_identifier identifier ;) (declaration "uint uStack_f0;" type_identifier identifier ;) (declaration "uint uStack_ec;" type_identifier identifier ;) (declaration "uint uStack_e8;" type_identifier identifier ;) (declaration "uint uStack_e4;" type_identifier identifier ;) (declaration "int iStack_e0;" primitive_type identifier ;) (declaration "int iStack_dc;" primitive_type identifier ;) (declaration "uint uStack_d8;" type_identifier identifier ;) (declaration "int iStack_d4;" primitive_type identifier ;) (declaration "int iStack_d0;" primitive_type identifier ;) (declaration "int iStack_cc;" primitive_type identifier ;) (declaration "undefined4 uStack_c8;" type_identifier identifier ;) (declaration "int local_c4;" primitive_type identifier ;) (declaration "uint *local_c0;" type_identifier (pointer_declarator "*local_c0" * identifier) ;) (declaration "int iStack_bc;" primitive_type identifier ;) (declaration "ushort uStack_b8;" type_identifier identifier ;) (declaration "int iStack_a8;" primitive_type identifier ;) (declaration "uint auStack_a4 [33];" type_identifier (array_declarator "auStack_a4 [33]" identifier [ number_literal ]) ;) (declaration "int local_20;" primitive_type identifier ;) (expression_statement "uVar16 = FUN_00025194();" (assignment_expression "uVar16 = FUN_00025194()" identifier = (call_expression "FUN_00025194()" identifier (argument_list "()" ( )))) ;) (expression_statement "local_124 = (int *)((ulonglong)uVar16 >> 0x20);" (assignment_expression "local_124 = (int *)((ulonglong)uVar16 >> 0x20)" identifier = (cast_expression "(int *)((ulonglong)uVar16 >> 0x20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((ulonglong)uVar16 >> 0x20)" ( (binary_expression "(ulonglong)uVar16 >> 0x20" (cast_expression "(ulonglong)uVar16" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "local_c0 = (uint *)uVar16;" (assignment_expression "local_c0 = (uint *)uVar16" identifier = (cast_expression "(uint *)uVar16" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "local_c4 = unaff_EDI + 0x4fbe7;" (assignment_expression "local_c4 = unaff_EDI + 0x4fbe7" identifier = (binary_expression "unaff_EDI + 0x4fbe7" identifier + number_literal)) ;) (expression_statement "puVar14 = auStack_13c;" (assignment_expression "puVar14 = auStack_13c" identifier = identifier) ;) (expression_statement "local_20 = *(int *)(in_GS_OFFSET + 0x14);" (assignment_expression "local_20 = *(int *)(in_GS_OFFSET + 0x14)" identifier = (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) ;) (expression_statement "local_134 = param_1 + 0x3fffffff;" (assignment_expression "local_134 = param_1 + 0x3fffffff" identifier = (binary_expression "param_1 + 0x3fffffff" identifier + number_literal)) ;) (expression_statement "uVar11 = extraout_ECX[local_134];" (assignment_expression "uVar11 = extraout_ECX[local_134]" identifier = (subscript_expression "extraout_ECX[local_134]" identifier [ identifier ])) ;) (expression_statement "local_128 = local_134 * 4;" (assignment_expression "local_128 = local_134 * 4" identifier = (binary_expression "local_134 * 4" identifier * number_literal)) ;) (expression_statement "uVar5 = 0x1f;" (assignment_expression "uVar5 = 0x1f" identifier = number_literal) ;) (if_statement "if (uVar11 != 0) {\n    for (; uVar11 >> uVar5 == 0; uVar5 = uVar5 - 1) {\n    }\n  }" if (parenthesized_expression "(uVar11 != 0)" ( (binary_expression "uVar11 != 0" identifier != number_literal) )) (compound_statement "{\n    for (; uVar11 >> uVar5 == 0; uVar5 = uVar5 - 1) {\n    }\n  }" { (for_statement "for (; uVar11 >> uVar5 == 0; uVar5 = uVar5 - 1) {\n    }" for ( ; (binary_expression "uVar11 >> uVar5 == 0" (binary_expression "uVar11 >> uVar5" identifier >> identifier) == number_literal) ; (assignment_expression "uVar5 = uVar5 - 1" identifier = (binary_expression "uVar5 - 1" identifier - number_literal)) ) (compound_statement "{\n    }" { })) })) (expression_statement "iVar10 = (uVar5 ^ 0x1f) + 1;" (assignment_expression "iVar10 = (uVar5 ^ 0x1f) + 1" identifier = (binary_expression "(uVar5 ^ 0x1f) + 1" (parenthesized_expression "(uVar5 ^ 0x1f)" ( (binary_expression "uVar5 ^ 0x1f" identifier ^ number_literal) )) + number_literal)) ;) (expression_statement "uVar5 = param_1 * 0x20 - iVar10;" (assignment_expression "uVar5 = param_1 * 0x20 - iVar10" identifier = (binary_expression "param_1 * 0x20 - iVar10" (binary_expression "param_1 * 0x20" identifier * number_literal) - identifier)) ;) (if_statement "if (uVar5 < param_2) {\n    *local_c0 = 1;\n    if (local_124 == (int *)0x0) {\n      iVar10 = *extraout_ECX + -1;\n    }\n    else {\n      iVar10 = *extraout_ECX;\n      *local_124 = iVar10 + -1;\n      if (iVar10 == 0) {\n        if (1 < (int)param_1) {\n          iVar10 = extraout_ECX[1];\n          local_124[1] = iVar10 + -1;\n          if (iVar10 == 0) {\n            if (param_1 == 2) goto LAB_0004ef98;\n            iVar10 = extraout_ECX[2];\n            uVar11 = 3;\n            local_124[2] = iVar10 + -1;\n            while (iVar10 == 0) {\n              if (param_1 == uVar11) goto LAB_0004ef98;\n              iVar10 = extraout_ECX[uVar11];\n              local_124[uVar11] = iVar10 + -1;\n              uVar11 = uVar11 + 1;\n            }\n          }\n          else {\n            uVar11 = 2;\n          }\n          if ((extraout_ECX != local_124) && ((int)uVar11 < (int)param_1)) {\n            piVar9 = extraout_ECX + uVar11;\n            piVar8 = local_124 + uVar11;\n            do {\n              iVar10 = *piVar9;\n              piVar9 = piVar9 + 1;\n              *piVar8 = iVar10;\n              piVar8 = piVar8 + 1;\n            } while (extraout_ECX + param_1 + 0x40000000 != piVar9);\n          }\n        }\n      }\n      else if ((extraout_ECX != local_124) && (1 < (int)param_1)) {\n        piVar9 = extraout_ECX + 1;\n        piVar8 = local_124;\n        do {\n          piVar8 = piVar8 + 1;\n          iVar10 = *piVar9;\n          piVar9 = piVar9 + 1;\n          *piVar8 = iVar10;\n        } while (extraout_ECX + param_1 + 0x40000000 != piVar9);\n      }\nLAB_0004ef98:\n      iVar10 = local_124[local_134];\n    }\n    uStack_d8 = param_1 - (iVar10 == 0);\n    goto LAB_0004e9ee;\n  }" if (parenthesized_expression "(uVar5 < param_2)" ( (binary_expression "uVar5 < param_2" identifier < identifier) )) (compound_statement "{\n    *local_c0 = 1;\n    if (local_124 == (int *)0x0) {\n      iVar10 = *extraout_ECX + -1;\n    }\n    else {\n      iVar10 = *extraout_ECX;\n      *local_124 = iVar10 + -1;\n      if (iVar10 == 0) {\n        if (1 < (int)param_1) {\n          iVar10 = extraout_ECX[1];\n          local_124[1] = iVar10 + -1;\n          if (iVar10 == 0) {\n            if (param_1 == 2) goto LAB_0004ef98;\n            iVar10 = extraout_ECX[2];\n            uVar11 = 3;\n            local_124[2] = iVar10 + -1;\n            while (iVar10 == 0) {\n              if (param_1 == uVar11) goto LAB_0004ef98;\n              iVar10 = extraout_ECX[uVar11];\n              local_124[uVar11] = iVar10 + -1;\n              uVar11 = uVar11 + 1;\n            }\n          }\n          else {\n            uVar11 = 2;\n          }\n          if ((extraout_ECX != local_124) && ((int)uVar11 < (int)param_1)) {\n            piVar9 = extraout_ECX + uVar11;\n            piVar8 = local_124 + uVar11;\n            do {\n              iVar10 = *piVar9;\n              piVar9 = piVar9 + 1;\n              *piVar8 = iVar10;\n              piVar8 = piVar8 + 1;\n            } while (extraout_ECX + param_1 + 0x40000000 != piVar9);\n          }\n        }\n      }\n      else if ((extraout_ECX != local_124) && (1 < (int)param_1)) {\n        piVar9 = extraout_ECX + 1;\n        piVar8 = local_124;\n        do {\n          piVar8 = piVar8 + 1;\n          iVar10 = *piVar9;\n          piVar9 = piVar9 + 1;\n          *piVar8 = iVar10;\n        } while (extraout_ECX + param_1 + 0x40000000 != piVar9);\n      }\nLAB_0004ef98:\n      iVar10 = local_124[local_134];\n    }\n    uStack_d8 = param_1 - (iVar10 == 0);\n    goto LAB_0004e9ee;\n  }" { (expression_statement "*local_c0 = 1;" (assignment_expression "*local_c0 = 1" (pointer_expression "*local_c0" * identifier) = number_literal) ;) (if_statement "if (local_124 == (int *)0x0) {\n      iVar10 = *extraout_ECX + -1;\n    }\n    else {\n      iVar10 = *extraout_ECX;\n      *local_124 = iVar10 + -1;\n      if (iVar10 == 0) {\n        if (1 < (int)param_1) {\n          iVar10 = extraout_ECX[1];\n          local_124[1] = iVar10 + -1;\n          if (iVar10 == 0) {\n            if (param_1 == 2) goto LAB_0004ef98;\n            iVar10 = extraout_ECX[2];\n            uVar11 = 3;\n            local_124[2] = iVar10 + -1;\n            while (iVar10 == 0) {\n              if (param_1 == uVar11) goto LAB_0004ef98;\n              iVar10 = extraout_ECX[uVar11];\n              local_124[uVar11] = iVar10 + -1;\n              uVar11 = uVar11 + 1;\n            }\n          }\n          else {\n            uVar11 = 2;\n          }\n          if ((extraout_ECX != local_124) && ((int)uVar11 < (int)param_1)) {\n            piVar9 = extraout_ECX + uVar11;\n            piVar8 = local_124 + uVar11;\n            do {\n              iVar10 = *piVar9;\n              piVar9 = piVar9 + 1;\n              *piVar8 = iVar10;\n              piVar8 = piVar8 + 1;\n            } while (extraout_ECX + param_1 + 0x40000000 != piVar9);\n          }\n        }\n      }\n      else if ((extraout_ECX != local_124) && (1 < (int)param_1)) {\n        piVar9 = extraout_ECX + 1;\n        piVar8 = local_124;\n        do {\n          piVar8 = piVar8 + 1;\n          iVar10 = *piVar9;\n          piVar9 = piVar9 + 1;\n          *piVar8 = iVar10;\n        } while (extraout_ECX + param_1 + 0x40000000 != piVar9);\n      }\nLAB_0004ef98:\n      iVar10 = local_124[local_134];\n    }" if (parenthesized_expression "(local_124 == (int *)0x0)" ( (binary_expression "local_124 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      iVar10 = *extraout_ECX + -1;\n    }" { (expression_statement "iVar10 = *extraout_ECX + -1;" (assignment_expression "iVar10 = *extraout_ECX + -1" identifier = (binary_expression "*extraout_ECX + -1" (pointer_expression "*extraout_ECX" * identifier) + number_literal)) ;) }) (else_clause "else {\n      iVar10 = *extraout_ECX;\n      *local_124 = iVar10 + -1;\n      if (iVar10 == 0) {\n        if (1 < (int)param_1) {\n          iVar10 = extraout_ECX[1];\n          local_124[1] = iVar10 + -1;\n          if (iVar10 == 0) {\n            if (param_1 == 2) goto LAB_0004ef98;\n            iVar10 = extraout_ECX[2];\n            uVar11 = 3;\n            local_124[2] = iVar10 + -1;\n            while (iVar10 == 0) {\n              if (param_1 == uVar11) goto LAB_0004ef98;\n              iVar10 = extraout_ECX[uVar11];\n              local_124[uVar11] = iVar10 + -1;\n              uVar11 = uVar11 + 1;\n            }\n          }\n          else {\n            uVar11 = 2;\n          }\n          if ((extraout_ECX != local_124) && ((int)uVar11 < (int)param_1)) {\n            piVar9 = extraout_ECX + uVar11;\n            piVar8 = local_124 + uVar11;\n            do {\n              iVar10 = *piVar9;\n              piVar9 = piVar9 + 1;\n              *piVar8 = iVar10;\n              piVar8 = piVar8 + 1;\n            } while (extraout_ECX + param_1 + 0x40000000 != piVar9);\n          }\n        }\n      }\n      else if ((extraout_ECX != local_124) && (1 < (int)param_1)) {\n        piVar9 = extraout_ECX + 1;\n        piVar8 = local_124;\n        do {\n          piVar8 = piVar8 + 1;\n          iVar10 = *piVar9;\n          piVar9 = piVar9 + 1;\n          *piVar8 = iVar10;\n        } while (extraout_ECX + param_1 + 0x40000000 != piVar9);\n      }\nLAB_0004ef98:\n      iVar10 = local_124[local_134];\n    }" else (compound_statement "{\n      iVar10 = *extraout_ECX;\n      *local_124 = iVar10 + -1;\n      if (iVar10 == 0) {\n        if (1 < (int)param_1) {\n          iVar10 = extraout_ECX[1];\n          local_124[1] = iVar10 + -1;\n          if (iVar10 == 0) {\n            if (param_1 == 2) goto LAB_0004ef98;\n            iVar10 = extraout_ECX[2];\n            uVar11 = 3;\n            local_124[2] = iVar10 + -1;\n            while (iVar10 == 0) {\n              if (param_1 == uVar11) goto LAB_0004ef98;\n              iVar10 = extraout_ECX[uVar11];\n              local_124[uVar11] = iVar10 + -1;\n              uVar11 = uVar11 + 1;\n            }\n          }\n          else {\n            uVar11 = 2;\n          }\n          if ((extraout_ECX != local_124) && ((int)uVar11 < (int)param_1)) {\n            piVar9 = extraout_ECX + uVar11;\n            piVar8 = local_124 + uVar11;\n            do {\n              iVar10 = *piVar9;\n              piVar9 = piVar9 + 1;\n              *piVar8 = iVar10;\n              piVar8 = piVar8 + 1;\n            } while (extraout_ECX + param_1 + 0x40000000 != piVar9);\n          }\n        }\n      }\n      else if ((extraout_ECX != local_124) && (1 < (int)param_1)) {\n        piVar9 = extraout_ECX + 1;\n        piVar8 = local_124;\n        do {\n          piVar8 = piVar8 + 1;\n          iVar10 = *piVar9;\n          piVar9 = piVar9 + 1;\n          *piVar8 = iVar10;\n        } while (extraout_ECX + param_1 + 0x40000000 != piVar9);\n      }\nLAB_0004ef98:\n      iVar10 = local_124[local_134];\n    }" { (expression_statement "iVar10 = *extraout_ECX;" (assignment_expression "iVar10 = *extraout_ECX" identifier = (pointer_expression "*extraout_ECX" * identifier)) ;) (expression_statement "*local_124 = iVar10 + -1;" (assignment_expression "*local_124 = iVar10 + -1" (pointer_expression "*local_124" * identifier) = (binary_expression "iVar10 + -1" identifier + number_literal)) ;) (if_statement "if (iVar10 == 0) {\n        if (1 < (int)param_1) {\n          iVar10 = extraout_ECX[1];\n          local_124[1] = iVar10 + -1;\n          if (iVar10 == 0) {\n            if (param_1 == 2) goto LAB_0004ef98;\n            iVar10 = extraout_ECX[2];\n            uVar11 = 3;\n            local_124[2] = iVar10 + -1;\n            while (iVar10 == 0) {\n              if (param_1 == uVar11) goto LAB_0004ef98;\n              iVar10 = extraout_ECX[uVar11];\n              local_124[uVar11] = iVar10 + -1;\n              uVar11 = uVar11 + 1;\n            }\n          }\n          else {\n            uVar11 = 2;\n          }\n          if ((extraout_ECX != local_124) && ((int)uVar11 < (int)param_1)) {\n            piVar9 = extraout_ECX + uVar11;\n            piVar8 = local_124 + uVar11;\n            do {\n              iVar10 = *piVar9;\n              piVar9 = piVar9 + 1;\n              *piVar8 = iVar10;\n              piVar8 = piVar8 + 1;\n            } while (extraout_ECX + param_1 + 0x40000000 != piVar9);\n          }\n        }\n      }\n      else if ((extraout_ECX != local_124) && (1 < (int)param_1)) {\n        piVar9 = extraout_ECX + 1;\n        piVar8 = local_124;\n        do {\n          piVar8 = piVar8 + 1;\n          iVar10 = *piVar9;\n          piVar9 = piVar9 + 1;\n          *piVar8 = iVar10;\n        } while (extraout_ECX + param_1 + 0x40000000 != piVar9);\n      }" if (parenthesized_expression "(iVar10 == 0)" ( (binary_expression "iVar10 == 0" identifier == number_literal) )) (compound_statement "{\n        if (1 < (int)param_1) {\n          iVar10 = extraout_ECX[1];\n          local_124[1] = iVar10 + -1;\n          if (iVar10 == 0) {\n            if (param_1 == 2) goto LAB_0004ef98;\n            iVar10 = extraout_ECX[2];\n            uVar11 = 3;\n            local_124[2] = iVar10 + -1;\n            while (iVar10 == 0) {\n              if (param_1 == uVar11) goto LAB_0004ef98;\n              iVar10 = extraout_ECX[uVar11];\n              local_124[uVar11] = iVar10 + -1;\n              uVar11 = uVar11 + 1;\n            }\n          }\n          else {\n            uVar11 = 2;\n          }\n          if ((extraout_ECX != local_124) && ((int)uVar11 < (int)param_1)) {\n            piVar9 = extraout_ECX + uVar11;\n            piVar8 = local_124 + uVar11;\n            do {\n              iVar10 = *piVar9;\n              piVar9 = piVar9 + 1;\n              *piVar8 = iVar10;\n              piVar8 = piVar8 + 1;\n            } while (extraout_ECX + param_1 + 0x40000000 != piVar9);\n          }\n        }\n      }" { (if_statement "if (1 < (int)param_1) {\n          iVar10 = extraout_ECX[1];\n          local_124[1] = iVar10 + -1;\n          if (iVar10 == 0) {\n            if (param_1 == 2) goto LAB_0004ef98;\n            iVar10 = extraout_ECX[2];\n            uVar11 = 3;\n            local_124[2] = iVar10 + -1;\n            while (iVar10 == 0) {\n              if (param_1 == uVar11) goto LAB_0004ef98;\n              iVar10 = extraout_ECX[uVar11];\n              local_124[uVar11] = iVar10 + -1;\n              uVar11 = uVar11 + 1;\n            }\n          }\n          else {\n            uVar11 = 2;\n          }\n          if ((extraout_ECX != local_124) && ((int)uVar11 < (int)param_1)) {\n            piVar9 = extraout_ECX + uVar11;\n            piVar8 = local_124 + uVar11;\n            do {\n              iVar10 = *piVar9;\n              piVar9 = piVar9 + 1;\n              *piVar8 = iVar10;\n              piVar8 = piVar8 + 1;\n            } while (extraout_ECX + param_1 + 0x40000000 != piVar9);\n          }\n        }" if (parenthesized_expression "(1 < (int)param_1)" ( (binary_expression "1 < (int)param_1" number_literal < (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n          iVar10 = extraout_ECX[1];\n          local_124[1] = iVar10 + -1;\n          if (iVar10 == 0) {\n            if (param_1 == 2) goto LAB_0004ef98;\n            iVar10 = extraout_ECX[2];\n            uVar11 = 3;\n            local_124[2] = iVar10 + -1;\n            while (iVar10 == 0) {\n              if (param_1 == uVar11) goto LAB_0004ef98;\n              iVar10 = extraout_ECX[uVar11];\n              local_124[uVar11] = iVar10 + -1;\n              uVar11 = uVar11 + 1;\n            }\n          }\n          else {\n            uVar11 = 2;\n          }\n          if ((extraout_ECX != local_124) && ((int)uVar11 < (int)param_1)) {\n            piVar9 = extraout_ECX + uVar11;\n            piVar8 = local_124 + uVar11;\n            do {\n              iVar10 = *piVar9;\n              piVar9 = piVar9 + 1;\n              *piVar8 = iVar10;\n              piVar8 = piVar8 + 1;\n            } while (extraout_ECX + param_1 + 0x40000000 != piVar9);\n          }\n        }" { (expression_statement "iVar10 = extraout_ECX[1];" (assignment_expression "iVar10 = extraout_ECX[1]" identifier = (subscript_expression "extraout_ECX[1]" identifier [ number_literal ])) ;) (expression_statement "local_124[1] = iVar10 + -1;" (assignment_expression "local_124[1] = iVar10 + -1" (subscript_expression "local_124[1]" identifier [ number_literal ]) = (binary_expression "iVar10 + -1" identifier + number_literal)) ;) (if_statement "if (iVar10 == 0) {\n            if (param_1 == 2) goto LAB_0004ef98;\n            iVar10 = extraout_ECX[2];\n            uVar11 = 3;\n            local_124[2] = iVar10 + -1;\n            while (iVar10 == 0) {\n              if (param_1 == uVar11) goto LAB_0004ef98;\n              iVar10 = extraout_ECX[uVar11];\n              local_124[uVar11] = iVar10 + -1;\n              uVar11 = uVar11 + 1;\n            }\n          }\n          else {\n            uVar11 = 2;\n          }" if (parenthesized_expression "(iVar10 == 0)" ( (binary_expression "iVar10 == 0" identifier == number_literal) )) (compound_statement "{\n            if (param_1 == 2) goto LAB_0004ef98;\n            iVar10 = extraout_ECX[2];\n            uVar11 = 3;\n            local_124[2] = iVar10 + -1;\n            while (iVar10 == 0) {\n              if (param_1 == uVar11) goto LAB_0004ef98;\n              iVar10 = extraout_ECX[uVar11];\n              local_124[uVar11] = iVar10 + -1;\n              uVar11 = uVar11 + 1;\n            }\n          }" { (if_statement "if (param_1 == 2) goto LAB_0004ef98;" if (parenthesized_expression "(param_1 == 2)" ( (binary_expression "param_1 == 2" identifier == number_literal) )) (goto_statement "goto LAB_0004ef98;" goto statement_identifier ;)) (expression_statement "iVar10 = extraout_ECX[2];" (assignment_expression "iVar10 = extraout_ECX[2]" identifier = (subscript_expression "extraout_ECX[2]" identifier [ number_literal ])) ;) (expression_statement "uVar11 = 3;" (assignment_expression "uVar11 = 3" identifier = number_literal) ;) (expression_statement "local_124[2] = iVar10 + -1;" (assignment_expression "local_124[2] = iVar10 + -1" (subscript_expression "local_124[2]" identifier [ number_literal ]) = (binary_expression "iVar10 + -1" identifier + number_literal)) ;) (while_statement "while (iVar10 == 0) {\n              if (param_1 == uVar11) goto LAB_0004ef98;\n              iVar10 = extraout_ECX[uVar11];\n              local_124[uVar11] = iVar10 + -1;\n              uVar11 = uVar11 + 1;\n            }" while (parenthesized_expression "(iVar10 == 0)" ( (binary_expression "iVar10 == 0" identifier == number_literal) )) (compound_statement "{\n              if (param_1 == uVar11) goto LAB_0004ef98;\n              iVar10 = extraout_ECX[uVar11];\n              local_124[uVar11] = iVar10 + -1;\n              uVar11 = uVar11 + 1;\n            }" { (if_statement "if (param_1 == uVar11) goto LAB_0004ef98;" if (parenthesized_expression "(param_1 == uVar11)" ( (binary_expression "param_1 == uVar11" identifier == identifier) )) (goto_statement "goto LAB_0004ef98;" goto statement_identifier ;)) (expression_statement "iVar10 = extraout_ECX[uVar11];" (assignment_expression "iVar10 = extraout_ECX[uVar11]" identifier = (subscript_expression "extraout_ECX[uVar11]" identifier [ identifier ])) ;) (expression_statement "local_124[uVar11] = iVar10 + -1;" (assignment_expression "local_124[uVar11] = iVar10 + -1" (subscript_expression "local_124[uVar11]" identifier [ identifier ]) = (binary_expression "iVar10 + -1" identifier + number_literal)) ;) (expression_statement "uVar11 = uVar11 + 1;" (assignment_expression "uVar11 = uVar11 + 1" identifier = (binary_expression "uVar11 + 1" identifier + number_literal)) ;) })) }) (else_clause "else {\n            uVar11 = 2;\n          }" else (compound_statement "{\n            uVar11 = 2;\n          }" { (expression_statement "uVar11 = 2;" (assignment_expression "uVar11 = 2" identifier = number_literal) ;) }))) (if_statement "if ((extraout_ECX != local_124) && ((int)uVar11 < (int)param_1)) {\n            piVar9 = extraout_ECX + uVar11;\n            piVar8 = local_124 + uVar11;\n            do {\n              iVar10 = *piVar9;\n              piVar9 = piVar9 + 1;\n              *piVar8 = iVar10;\n              piVar8 = piVar8 + 1;\n            } while (extraout_ECX + param_1 + 0x40000000 != piVar9);\n          }" if (parenthesized_expression "((extraout_ECX != local_124) && ((int)uVar11 < (int)param_1))" ( (binary_expression "(extraout_ECX != local_124) && ((int)uVar11 < (int)param_1)" (parenthesized_expression "(extraout_ECX != local_124)" ( (binary_expression "extraout_ECX != local_124" identifier != identifier) )) && (parenthesized_expression "((int)uVar11 < (int)param_1)" ( (binary_expression "(int)uVar11 < (int)param_1" (cast_expression "(int)uVar11" ( (type_descriptor "int" primitive_type) ) identifier) < (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier)) ))) )) (compound_statement "{\n            piVar9 = extraout_ECX + uVar11;\n            piVar8 = local_124 + uVar11;\n            do {\n              iVar10 = *piVar9;\n              piVar9 = piVar9 + 1;\n              *piVar8 = iVar10;\n              piVar8 = piVar8 + 1;\n            } while (extraout_ECX + param_1 + 0x40000000 != piVar9);\n          }" { (expression_statement "piVar9 = extraout_ECX + uVar11;" (assignment_expression "piVar9 = extraout_ECX + uVar11" identifier = (binary_expression "extraout_ECX + uVar11" identifier + identifier)) ;) (expression_statement "piVar8 = local_124 + uVar11;" (assignment_expression "piVar8 = local_124 + uVar11" identifier = (binary_expression "local_124 + uVar11" identifier + identifier)) ;) (do_statement "do {\n              iVar10 = *piVar9;\n              piVar9 = piVar9 + 1;\n              *piVar8 = iVar10;\n              piVar8 = piVar8 + 1;\n            } while (extraout_ECX + param_1 + 0x40000000 != piVar9);" do (compound_statement "{\n              iVar10 = *piVar9;\n              piVar9 = piVar9 + 1;\n              *piVar8 = iVar10;\n              piVar8 = piVar8 + 1;\n            }" { (expression_statement "iVar10 = *piVar9;" (assignment_expression "iVar10 = *piVar9" identifier = (pointer_expression "*piVar9" * identifier)) ;) (expression_statement "piVar9 = piVar9 + 1;" (assignment_expression "piVar9 = piVar9 + 1" identifier = (binary_expression "piVar9 + 1" identifier + number_literal)) ;) (expression_statement "*piVar8 = iVar10;" (assignment_expression "*piVar8 = iVar10" (pointer_expression "*piVar8" * identifier) = identifier) ;) (expression_statement "piVar8 = piVar8 + 1;" (assignment_expression "piVar8 = piVar8 + 1" identifier = (binary_expression "piVar8 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(extraout_ECX + param_1 + 0x40000000 != piVar9)" ( (binary_expression "extraout_ECX + param_1 + 0x40000000 != piVar9" (binary_expression "extraout_ECX + param_1 + 0x40000000" (binary_expression "extraout_ECX + param_1" identifier + identifier) + number_literal) != identifier) )) ;) })) })) }) (else_clause "else if ((extraout_ECX != local_124) && (1 < (int)param_1)) {\n        piVar9 = extraout_ECX + 1;\n        piVar8 = local_124;\n        do {\n          piVar8 = piVar8 + 1;\n          iVar10 = *piVar9;\n          piVar9 = piVar9 + 1;\n          *piVar8 = iVar10;\n        } while (extraout_ECX + param_1 + 0x40000000 != piVar9);\n      }" else (if_statement "if ((extraout_ECX != local_124) && (1 < (int)param_1)) {\n        piVar9 = extraout_ECX + 1;\n        piVar8 = local_124;\n        do {\n          piVar8 = piVar8 + 1;\n          iVar10 = *piVar9;\n          piVar9 = piVar9 + 1;\n          *piVar8 = iVar10;\n        } while (extraout_ECX + param_1 + 0x40000000 != piVar9);\n      }" if (parenthesized_expression "((extraout_ECX != local_124) && (1 < (int)param_1))" ( (binary_expression "(extraout_ECX != local_124) && (1 < (int)param_1)" (parenthesized_expression "(extraout_ECX != local_124)" ( (binary_expression "extraout_ECX != local_124" identifier != identifier) )) && (parenthesized_expression "(1 < (int)param_1)" ( (binary_expression "1 < (int)param_1" number_literal < (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier)) ))) )) (compound_statement "{\n        piVar9 = extraout_ECX + 1;\n        piVar8 = local_124;\n        do {\n          piVar8 = piVar8 + 1;\n          iVar10 = *piVar9;\n          piVar9 = piVar9 + 1;\n          *piVar8 = iVar10;\n        } while (extraout_ECX + param_1 + 0x40000000 != piVar9);\n      }" { (expression_statement "piVar9 = extraout_ECX + 1;" (assignment_expression "piVar9 = extraout_ECX + 1" identifier = (binary_expression "extraout_ECX + 1" identifier + number_literal)) ;) (expression_statement "piVar8 = local_124;" (assignment_expression "piVar8 = local_124" identifier = identifier) ;) (do_statement "do {\n          piVar8 = piVar8 + 1;\n          iVar10 = *piVar9;\n          piVar9 = piVar9 + 1;\n          *piVar8 = iVar10;\n        } while (extraout_ECX + param_1 + 0x40000000 != piVar9);" do (compound_statement "{\n          piVar8 = piVar8 + 1;\n          iVar10 = *piVar9;\n          piVar9 = piVar9 + 1;\n          *piVar8 = iVar10;\n        }" { (expression_statement "piVar8 = piVar8 + 1;" (assignment_expression "piVar8 = piVar8 + 1" identifier = (binary_expression "piVar8 + 1" identifier + number_literal)) ;) (expression_statement "iVar10 = *piVar9;" (assignment_expression "iVar10 = *piVar9" identifier = (pointer_expression "*piVar9" * identifier)) ;) (expression_statement "piVar9 = piVar9 + 1;" (assignment_expression "piVar9 = piVar9 + 1" identifier = (binary_expression "piVar9 + 1" identifier + number_literal)) ;) (expression_statement "*piVar8 = iVar10;" (assignment_expression "*piVar8 = iVar10" (pointer_expression "*piVar8" * identifier) = identifier) ;) }) while (parenthesized_expression "(extraout_ECX + param_1 + 0x40000000 != piVar9)" ( (binary_expression "extraout_ECX + param_1 + 0x40000000 != piVar9" (binary_expression "extraout_ECX + param_1 + 0x40000000" (binary_expression "extraout_ECX + param_1" identifier + identifier) + number_literal) != identifier) )) ;) })))) (labeled_statement "LAB_0004ef98:\n      iVar10 = local_124[local_134];" statement_identifier : (expression_statement "iVar10 = local_124[local_134];" (assignment_expression "iVar10 = local_124[local_134]" identifier = (subscript_expression "local_124[local_134]" identifier [ identifier ])) ;)) }))) (expression_statement "uStack_d8 = param_1 - (iVar10 == 0);" (assignment_expression "uStack_d8 = param_1 - (iVar10 == 0)" identifier = (binary_expression "param_1 - (iVar10 == 0)" identifier - (parenthesized_expression "(iVar10 == 0)" ( (binary_expression "iVar10 == 0" identifier == number_literal) )))) ;) (goto_statement "goto LAB_0004e9ee;" goto statement_identifier ;) })) (if_statement "if (iVar10 == 0x20) {\n    uVar11 = extraout_ECX[param_1 + 0x3ffffffe];\n  }\n  else {\n    uVar11 = (uint)extraout_ECX[(param_1 - 1) - (uint)(param_1 != 1)] >>\n             (0x20 - (byte)iVar10 & 0x1f) | uVar11 << ((byte)iVar10 & 0x1f);\n  }" if (parenthesized_expression "(iVar10 == 0x20)" ( (binary_expression "iVar10 == 0x20" identifier == number_literal) )) (compound_statement "{\n    uVar11 = extraout_ECX[param_1 + 0x3ffffffe];\n  }" { (expression_statement "uVar11 = extraout_ECX[param_1 + 0x3ffffffe];" (assignment_expression "uVar11 = extraout_ECX[param_1 + 0x3ffffffe]" identifier = (subscript_expression "extraout_ECX[param_1 + 0x3ffffffe]" identifier [ (binary_expression "param_1 + 0x3ffffffe" identifier + number_literal) ])) ;) }) (else_clause "else {\n    uVar11 = (uint)extraout_ECX[(param_1 - 1) - (uint)(param_1 != 1)] >>\n             (0x20 - (byte)iVar10 & 0x1f) | uVar11 << ((byte)iVar10 & 0x1f);\n  }" else (compound_statement "{\n    uVar11 = (uint)extraout_ECX[(param_1 - 1) - (uint)(param_1 != 1)] >>\n             (0x20 - (byte)iVar10 & 0x1f) | uVar11 << ((byte)iVar10 & 0x1f);\n  }" { (expression_statement "uVar11 = (uint)extraout_ECX[(param_1 - 1) - (uint)(param_1 != 1)] >>\n             (0x20 - (byte)iVar10 & 0x1f) | uVar11 << ((byte)iVar10 & 0x1f);" (assignment_expression "uVar11 = (uint)extraout_ECX[(param_1 - 1) - (uint)(param_1 != 1)] >>\n             (0x20 - (byte)iVar10 & 0x1f) | uVar11 << ((byte)iVar10 & 0x1f)" identifier = (binary_expression "(uint)extraout_ECX[(param_1 - 1) - (uint)(param_1 != 1)] >>\n             (0x20 - (byte)iVar10 & 0x1f) | uVar11 << ((byte)iVar10 & 0x1f)" (binary_expression "(uint)extraout_ECX[(param_1 - 1) - (uint)(param_1 != 1)] >>\n             (0x20 - (byte)iVar10 & 0x1f)" (cast_expression "(uint)extraout_ECX[(param_1 - 1) - (uint)(param_1 != 1)]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "extraout_ECX[(param_1 - 1) - (uint)(param_1 != 1)]" identifier [ (binary_expression "(param_1 - 1) - (uint)(param_1 != 1)" (parenthesized_expression "(param_1 - 1)" ( (binary_expression "param_1 - 1" identifier - number_literal) )) - (call_expression "(uint)(param_1 != 1)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(param_1 != 1)" ( (binary_expression "param_1 != 1" identifier != number_literal) )))) ])) >> (parenthesized_expression "(0x20 - (byte)iVar10 & 0x1f)" ( (binary_expression "0x20 - (byte)iVar10 & 0x1f" (binary_expression "0x20 - (byte)iVar10" number_literal - (cast_expression "(byte)iVar10" ( (type_descriptor "byte" type_identifier) ) identifier)) & number_literal) ))) | (binary_expression "uVar11 << ((byte)iVar10 & 0x1f)" identifier << (parenthesized_expression "((byte)iVar10 & 0x1f)" ( (binary_expression "(byte)iVar10 & 0x1f" (cast_expression "(byte)iVar10" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) ))))) ;) }))) (expression_statement "uVar11 = (uint)*(byte *)(unaff_EDI + 0x32bc7 + (uVar11 >> 0x18));" (assignment_expression "uVar11 = (uint)*(byte *)(unaff_EDI + 0x32bc7 + (uVar11 >> 0x18))" identifier = (binary_expression "(uint)*(byte *)(unaff_EDI + 0x32bc7 + (uVar11 >> 0x18))" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)(unaff_EDI + 0x32bc7 + (uVar11 >> 0x18))" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x32bc7 + (uVar11 >> 0x18))" ( (binary_expression "unaff_EDI + 0x32bc7 + (uVar11 >> 0x18)" (binary_expression "unaff_EDI + 0x32bc7" identifier + number_literal) + (parenthesized_expression "(uVar11 >> 0x18)" ( (binary_expression "uVar11 >> 0x18" identifier >> number_literal) ))) ))))) ;) (if_statement "if (uVar5 < 0x1000000) {\n    uStack_e8 = (uVar5 * 0x100 | uVar11) / param_2;\n    uVar11 = uStack_e8 & 0xff;\n    uStack_e8 = uStack_e8 >> 8;\n  }\n  else {\n    uStack_e8 = uVar5 / param_2;\n    uVar11 = (uVar5 % param_2 << 8 | uVar11) / param_2;\n  }" if (parenthesized_expression "(uVar5 < 0x1000000)" ( (binary_expression "uVar5 < 0x1000000" identifier < number_literal) )) (compound_statement "{\n    uStack_e8 = (uVar5 * 0x100 | uVar11) / param_2;\n    uVar11 = uStack_e8 & 0xff;\n    uStack_e8 = uStack_e8 >> 8;\n  }" { (expression_statement "uStack_e8 = (uVar5 * 0x100 | uVar11) / param_2;" (assignment_expression "uStack_e8 = (uVar5 * 0x100 | uVar11) / param_2" identifier = (binary_expression "(uVar5 * 0x100 | uVar11) / param_2" (parenthesized_expression "(uVar5 * 0x100 | uVar11)" ( (binary_expression "uVar5 * 0x100 | uVar11" (binary_expression "uVar5 * 0x100" identifier * number_literal) | identifier) )) / identifier)) ;) (expression_statement "uVar11 = uStack_e8 & 0xff;" (assignment_expression "uVar11 = uStack_e8 & 0xff" identifier = (binary_expression "uStack_e8 & 0xff" identifier & number_literal)) ;) (expression_statement "uStack_e8 = uStack_e8 >> 8;" (assignment_expression "uStack_e8 = uStack_e8 >> 8" identifier = (binary_expression "uStack_e8 >> 8" identifier >> number_literal)) ;) }) (else_clause "else {\n    uStack_e8 = uVar5 / param_2;\n    uVar11 = (uVar5 % param_2 << 8 | uVar11) / param_2;\n  }" else (compound_statement "{\n    uStack_e8 = uVar5 / param_2;\n    uVar11 = (uVar5 % param_2 << 8 | uVar11) / param_2;\n  }" { (expression_statement "uStack_e8 = uVar5 / param_2;" (assignment_expression "uStack_e8 = uVar5 / param_2" identifier = (binary_expression "uVar5 / param_2" identifier / identifier)) ;) (expression_statement "uVar11 = (uVar5 % param_2 << 8 | uVar11) / param_2;" (assignment_expression "uVar11 = (uVar5 % param_2 << 8 | uVar11) / param_2" identifier = (binary_expression "(uVar5 % param_2 << 8 | uVar11) / param_2" (parenthesized_expression "(uVar5 % param_2 << 8 | uVar11)" ( (binary_expression "uVar5 % param_2 << 8 | uVar11" (binary_expression "uVar5 % param_2 << 8" (binary_expression "uVar5 % param_2" identifier % identifier) << number_literal) | identifier) )) / identifier)) ;) }))) (expression_statement "iVar10 = uStack_e8 * param_2;" (assignment_expression "iVar10 = uStack_e8 * param_2" identifier = (binary_expression "uStack_e8 * param_2" identifier * identifier)) ;) (expression_statement "bVar1 = *(byte *)(unaff_EDI + 0x32ac7 + uVar11);" (assignment_expression "bVar1 = *(byte *)(unaff_EDI + 0x32ac7 + uVar11)" identifier = (pointer_expression "*(byte *)(unaff_EDI + 0x32ac7 + uVar11)" * (cast_expression "(byte *)(unaff_EDI + 0x32ac7 + uVar11)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x32ac7 + uVar11)" ( (binary_expression "unaff_EDI + 0x32ac7 + uVar11" (binary_expression "unaff_EDI + 0x32ac7" identifier + number_literal) + identifier) ))))) ;) (expression_statement "uStack_ec = param_2 - 1;" (assignment_expression "uStack_ec = param_2 - 1" identifier = (binary_expression "param_2 - 1" identifier - number_literal)) ;) (expression_statement "uVar11 = 3;" (assignment_expression "uVar11 = 3" identifier = number_literal) ;) (for_statement "for (uVar5 = uStack_ec >> 2; uVar5 != 0; uVar5 = uVar5 >> 1) {\n    uVar11 = uVar11 + 1;\n  }" for ( (assignment_expression "uVar5 = uStack_ec >> 2" identifier = (binary_expression "uStack_ec >> 2" identifier >> number_literal)) ; (binary_expression "uVar5 != 0" identifier != number_literal) ; (assignment_expression "uVar5 = uVar5 >> 1" identifier = (binary_expression "uVar5 >> 1" identifier >> number_literal)) ) (compound_statement "{\n    uVar11 = uVar11 + 1;\n  }" { (expression_statement "uVar11 = uVar11 + 1;" (assignment_expression "uVar11 = uVar11 + 1" identifier = (binary_expression "uVar11 + 1" identifier + number_literal)) ;) })) (expression_statement "puStack_fc = auStack_a4;" (assignment_expression "puStack_fc = auStack_a4" identifier = identifier) ;) (expression_statement "iVar15 = 0;" (assignment_expression "iVar15 = 0" identifier = number_literal) ;) (expression_statement "auStack_a4[0] = uStack_e8;" (assignment_expression "auStack_a4[0] = uStack_e8" (subscript_expression "auStack_a4[0]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (8 < uStack_e8) {\n    iVar4 = 0;\n    do {\n      while (iVar15 = iVar4, uVar11 < uStack_e8) {\n        uStack_e8 = uStack_e8 + uVar11 >> 1;\n        puStack_fc[iVar15 + 1] = uStack_e8;\n        iVar4 = iVar15 + 1;\n        if (uStack_e8 < 9) goto LAB_0004e56d;\n      }\n      uStack_e8 = uStack_e8 - 1;\n      puStack_fc[iVar15 + 1] = uStack_e8;\n      iVar4 = iVar15 + 1;\n    } while (uStack_e8 != 8);\n    uStack_e8 = 8;\nLAB_0004e56d:\n    iVar15 = iVar15 + 1;\n  }" if (parenthesized_expression "(8 < uStack_e8)" ( (binary_expression "8 < uStack_e8" number_literal < identifier) )) (compound_statement "{\n    iVar4 = 0;\n    do {\n      while (iVar15 = iVar4, uVar11 < uStack_e8) {\n        uStack_e8 = uStack_e8 + uVar11 >> 1;\n        puStack_fc[iVar15 + 1] = uStack_e8;\n        iVar4 = iVar15 + 1;\n        if (uStack_e8 < 9) goto LAB_0004e56d;\n      }\n      uStack_e8 = uStack_e8 - 1;\n      puStack_fc[iVar15 + 1] = uStack_e8;\n      iVar4 = iVar15 + 1;\n    } while (uStack_e8 != 8);\n    uStack_e8 = 8;\nLAB_0004e56d:\n    iVar15 = iVar15 + 1;\n  }" { (expression_statement "iVar4 = 0;" (assignment_expression "iVar4 = 0" identifier = number_literal) ;) (do_statement "do {\n      while (iVar15 = iVar4, uVar11 < uStack_e8) {\n        uStack_e8 = uStack_e8 + uVar11 >> 1;\n        puStack_fc[iVar15 + 1] = uStack_e8;\n        iVar4 = iVar15 + 1;\n        if (uStack_e8 < 9) goto LAB_0004e56d;\n      }\n      uStack_e8 = uStack_e8 - 1;\n      puStack_fc[iVar15 + 1] = uStack_e8;\n      iVar4 = iVar15 + 1;\n    } while (uStack_e8 != 8);" do (compound_statement "{\n      while (iVar15 = iVar4, uVar11 < uStack_e8) {\n        uStack_e8 = uStack_e8 + uVar11 >> 1;\n        puStack_fc[iVar15 + 1] = uStack_e8;\n        iVar4 = iVar15 + 1;\n        if (uStack_e8 < 9) goto LAB_0004e56d;\n      }\n      uStack_e8 = uStack_e8 - 1;\n      puStack_fc[iVar15 + 1] = uStack_e8;\n      iVar4 = iVar15 + 1;\n    }" { (while_statement "while (iVar15 = iVar4, uVar11 < uStack_e8) {\n        uStack_e8 = uStack_e8 + uVar11 >> 1;\n        puStack_fc[iVar15 + 1] = uStack_e8;\n        iVar4 = iVar15 + 1;\n        if (uStack_e8 < 9) goto LAB_0004e56d;\n      }" while (parenthesized_expression "(iVar15 = iVar4, uVar11 < uStack_e8)" ( (comma_expression "iVar15 = iVar4, uVar11 < uStack_e8" (assignment_expression "iVar15 = iVar4" identifier = identifier) , (binary_expression "uVar11 < uStack_e8" identifier < identifier)) )) (compound_statement "{\n        uStack_e8 = uStack_e8 + uVar11 >> 1;\n        puStack_fc[iVar15 + 1] = uStack_e8;\n        iVar4 = iVar15 + 1;\n        if (uStack_e8 < 9) goto LAB_0004e56d;\n      }" { (expression_statement "uStack_e8 = uStack_e8 + uVar11 >> 1;" (assignment_expression "uStack_e8 = uStack_e8 + uVar11 >> 1" identifier = (binary_expression "uStack_e8 + uVar11 >> 1" (binary_expression "uStack_e8 + uVar11" identifier + identifier) >> number_literal)) ;) (expression_statement "puStack_fc[iVar15 + 1] = uStack_e8;" (assignment_expression "puStack_fc[iVar15 + 1] = uStack_e8" (subscript_expression "puStack_fc[iVar15 + 1]" identifier [ (binary_expression "iVar15 + 1" identifier + number_literal) ]) = identifier) ;) (expression_statement "iVar4 = iVar15 + 1;" (assignment_expression "iVar4 = iVar15 + 1" identifier = (binary_expression "iVar15 + 1" identifier + number_literal)) ;) (if_statement "if (uStack_e8 < 9) goto LAB_0004e56d;" if (parenthesized_expression "(uStack_e8 < 9)" ( (binary_expression "uStack_e8 < 9" identifier < number_literal) )) (goto_statement "goto LAB_0004e56d;" goto statement_identifier ;)) })) (expression_statement "uStack_e8 = uStack_e8 - 1;" (assignment_expression "uStack_e8 = uStack_e8 - 1" identifier = (binary_expression "uStack_e8 - 1" identifier - number_literal)) ;) (expression_statement "puStack_fc[iVar15 + 1] = uStack_e8;" (assignment_expression "puStack_fc[iVar15 + 1] = uStack_e8" (subscript_expression "puStack_fc[iVar15 + 1]" identifier [ (binary_expression "iVar15 + 1" identifier + number_literal) ]) = identifier) ;) (expression_statement "iVar4 = iVar15 + 1;" (assignment_expression "iVar4 = iVar15 + 1" identifier = (binary_expression "iVar15 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uStack_e8 != 8)" ( (binary_expression "uStack_e8 != 8" identifier != number_literal) )) ;) (expression_statement "uStack_e8 = 8;" (assignment_expression "uStack_e8 = 8" identifier = number_literal) ;) (labeled_statement "LAB_0004e56d:\n    iVar15 = iVar15 + 1;" statement_identifier : (expression_statement "iVar15 = iVar15 + 1;" (assignment_expression "iVar15 = iVar15 + 1" identifier = (binary_expression "iVar15 + 1" identifier + number_literal)) ;)) })) (expression_statement "iStack_a8 = 0;" (assignment_expression "iStack_a8 = 0" identifier = number_literal) ;) (expression_statement "uStack_f4 = iVar10 - uStack_e8;" (assignment_expression "uStack_f4 = iVar10 - uStack_e8" identifier = (binary_expression "iVar10 - uStack_e8" identifier - identifier)) ;) (expression_statement "*local_c0 = (bVar1 | 0x100) >> (8U - (char)uStack_e8 & 0x1f);" (assignment_expression "*local_c0 = (bVar1 | 0x100) >> (8U - (char)uStack_e8 & 0x1f)" (pointer_expression "*local_c0" * identifier) = (binary_expression "(bVar1 | 0x100) >> (8U - (char)uStack_e8 & 0x1f)" (parenthesized_expression "(bVar1 | 0x100)" ( (binary_expression "bVar1 | 0x100" identifier | number_literal) )) >> (parenthesized_expression "(8U - (char)uStack_e8 & 0x1f)" ( (binary_expression "8U - (char)uStack_e8 & 0x1f" (binary_expression "8U - (char)uStack_e8" number_literal - (cast_expression "(char)uStack_e8" ( (type_descriptor "char" primitive_type) ) identifier)) & number_literal) )))) ;) (expression_statement "uStack_c8 = 0;" (assignment_expression "uStack_c8 = 0" identifier = number_literal) ;) (expression_statement "uStack_b8 = in_FPUControlWord | 0xc00;" (assignment_expression "uStack_b8 = in_FPUControlWord | 0xc00" identifier = (binary_expression "in_FPUControlWord | 0xc00" identifier | number_literal)) ;) (expression_statement "iStack_bc = (int)ROUND((double)param_2 * *(double *)(unaff_EDI + 0x32cc7) *\n                         (double)*(float *)(&UNK_00032ccf + unaff_EDI));" (assignment_expression "iStack_bc = (int)ROUND((double)param_2 * *(double *)(unaff_EDI + 0x32cc7) *\n                         (double)*(float *)(&UNK_00032ccf + unaff_EDI))" identifier = (cast_expression "(int)ROUND((double)param_2 * *(double *)(unaff_EDI + 0x32cc7) *\n                         (double)*(float *)(&UNK_00032ccf + unaff_EDI))" ( (type_descriptor "int" primitive_type) ) (call_expression "ROUND((double)param_2 * *(double *)(unaff_EDI + 0x32cc7) *\n                         (double)*(float *)(&UNK_00032ccf + unaff_EDI))" identifier (argument_list "((double)param_2 * *(double *)(unaff_EDI + 0x32cc7) *\n                         (double)*(float *)(&UNK_00032ccf + unaff_EDI))" ( (binary_expression "(double)param_2 * *(double *)(unaff_EDI + 0x32cc7) *\n                         (double)*(float *)(&UNK_00032ccf + unaff_EDI)" (binary_expression "(double)param_2 * *(double *)(unaff_EDI + 0x32cc7)" (cast_expression "(double)param_2" ( (type_descriptor "double" primitive_type) ) identifier) * (pointer_expression "*(double *)(unaff_EDI + 0x32cc7)" * (cast_expression "(double *)(unaff_EDI + 0x32cc7)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x32cc7)" ( (binary_expression "unaff_EDI + 0x32cc7" identifier + number_literal) ))))) * (cast_expression "(double)*(float *)(&UNK_00032ccf + unaff_EDI)" ( (type_descriptor "double" primitive_type) ) (pointer_expression "*(float *)(&UNK_00032ccf + unaff_EDI)" * (cast_expression "(float *)(&UNK_00032ccf + unaff_EDI)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&UNK_00032ccf + unaff_EDI)" ( (binary_expression "&UNK_00032ccf + unaff_EDI" (pointer_expression "&UNK_00032ccf" & identifier) + identifier) )))))) ))))) ;) (expression_statement "iStack_cc = param_1 + 2 + iStack_bc;" (assignment_expression "iStack_cc = param_1 + 2 + iStack_bc" identifier = (binary_expression "param_1 + 2 + iStack_bc" (binary_expression "param_1 + 2" identifier + number_literal) + identifier)) ;) (expression_statement "uVar11 = (param_1 + 1 + iStack_cc * 2) * 4;" (assignment_expression "uVar11 = (param_1 + 1 + iStack_cc * 2) * 4" identifier = (binary_expression "(param_1 + 1 + iStack_cc * 2) * 4" (parenthesized_expression "(param_1 + 1 + iStack_cc * 2)" ( (binary_expression "param_1 + 1 + iStack_cc * 2" (binary_expression "param_1 + 1" identifier + number_literal) + (binary_expression "iStack_cc * 2" identifier * number_literal)) )) * number_literal)) ;) (expression_statement "local_f8 = extraout_ECX;" (assignment_expression "local_f8 = extraout_ECX" identifier = identifier) ;) (if_statement "if (uVar11 < 0x7f01) {\n    iStack_120 = -(uVar11 + 0x1b & 0xfffffff0);\n    puVar14 = auStack_13c + iStack_120;\n    iStack_120 = (int)&uStack_130 + iStack_120;\n  }\n  else {\n    iStack_120 = __gmp_tmp_reentrant_alloc(&iStack_a8,uVar11);\n    uVar16 = CONCAT44(local_124,local_c0);\n    puVar14 = auStack_13c;\n  }" if (parenthesized_expression "(uVar11 < 0x7f01)" ( (binary_expression "uVar11 < 0x7f01" identifier < number_literal) )) (compound_statement "{\n    iStack_120 = -(uVar11 + 0x1b & 0xfffffff0);\n    puVar14 = auStack_13c + iStack_120;\n    iStack_120 = (int)&uStack_130 + iStack_120;\n  }" { (expression_statement "iStack_120 = -(uVar11 + 0x1b & 0xfffffff0);" (assignment_expression "iStack_120 = -(uVar11 + 0x1b & 0xfffffff0)" identifier = (unary_expression "-(uVar11 + 0x1b & 0xfffffff0)" - (parenthesized_expression "(uVar11 + 0x1b & 0xfffffff0)" ( (binary_expression "uVar11 + 0x1b & 0xfffffff0" (binary_expression "uVar11 + 0x1b" identifier + number_literal) & number_literal) )))) ;) (expression_statement "puVar14 = auStack_13c + iStack_120;" (assignment_expression "puVar14 = auStack_13c + iStack_120" identifier = (binary_expression "auStack_13c + iStack_120" identifier + identifier)) ;) (expression_statement "iStack_120 = (int)&uStack_130 + iStack_120;" (assignment_expression "iStack_120 = (int)&uStack_130 + iStack_120" identifier = (binary_expression "(int)&uStack_130 + iStack_120" (cast_expression "(int)&uStack_130" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&uStack_130" & identifier)) + identifier)) ;) }) (else_clause "else {\n    iStack_120 = __gmp_tmp_reentrant_alloc(&iStack_a8,uVar11);\n    uVar16 = CONCAT44(local_124,local_c0);\n    puVar14 = auStack_13c;\n  }" else (compound_statement "{\n    iStack_120 = __gmp_tmp_reentrant_alloc(&iStack_a8,uVar11);\n    uVar16 = CONCAT44(local_124,local_c0);\n    puVar14 = auStack_13c;\n  }" { (expression_statement "iStack_120 = __gmp_tmp_reentrant_alloc(&iStack_a8,uVar11);" (assignment_expression "iStack_120 = __gmp_tmp_reentrant_alloc(&iStack_a8,uVar11)" identifier = (call_expression "__gmp_tmp_reentrant_alloc(&iStack_a8,uVar11)" identifier (argument_list "(&iStack_a8,uVar11)" ( (pointer_expression "&iStack_a8" & identifier) , identifier )))) ;) (expression_statement "uVar16 = CONCAT44(local_124,local_c0);" (assignment_expression "uVar16 = CONCAT44(local_124,local_c0)" identifier = (call_expression "CONCAT44(local_124,local_c0)" identifier (argument_list "(local_124,local_c0)" ( identifier , identifier )))) ;) (expression_statement "puVar14 = auStack_13c;" (assignment_expression "puVar14 = auStack_13c" identifier = identifier) ;) }))) (expression_statement "local_124 = (int *)((ulonglong)uVar16 >> 0x20);" (assignment_expression "local_124 = (int *)((ulonglong)uVar16 >> 0x20)" identifier = (cast_expression "(int *)((ulonglong)uVar16 >> 0x20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((ulonglong)uVar16 >> 0x20)" ( (binary_expression "(ulonglong)uVar16 >> 0x20" (cast_expression "(ulonglong)uVar16" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "iVar10 = iStack_120 + local_128 + 8;" (assignment_expression "iVar10 = iStack_120 + local_128 + 8" identifier = (binary_expression "iStack_120 + local_128 + 8" (binary_expression "iStack_120 + local_128" identifier + identifier) + number_literal)) ;) (expression_statement "iStack_d0 = iVar10 + iStack_cc * 4;" (assignment_expression "iStack_d0 = iVar10 + iStack_cc * 4" identifier = (binary_expression "iVar10 + iStack_cc * 4" identifier + (binary_expression "iStack_cc * 4" identifier * number_literal))) ;) (expression_statement "iStack_d4 = (int)local_124;" (assignment_expression "iStack_d4 = (int)local_124" identifier = (cast_expression "(int)local_124" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (if_statement "if (local_124 == (int *)0x0) {\n    iStack_d4 = iStack_120;\n  }" if (parenthesized_expression "(local_124 == (int *)0x0)" ( (binary_expression "local_124 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    iStack_d4 = iStack_120;\n  }" { (expression_statement "iStack_d4 = iStack_120;" (assignment_expression "iStack_d4 = iStack_120" identifier = identifier) ;) })) (if_statement "if (iVar15 != 0) {\n    iStack_104 = iVar15 + -1;\n    puStack_fc = auStack_a4;\n    iStack_cc = 1;\n    iStack_e0 = *(int *)(local_c4 + -0x26c);\n    iStack_dc = iVar10;\nLAB_0004e690:\n    local_124 = (int *)((ulonglong)uVar16 >> 0x20);\n    local_c0 = (uint *)uVar16;\n    uStack_e4 = uStack_f4 - uStack_e8 * uStack_ec;\n    iVar10 = param_1 - (uStack_e4 >> 5);\n    piVar9 = local_f8 + (uStack_e4 >> 5);\n    if ((uStack_e4 & 0x1f) == 0) {\n      *(int *)(puVar14 + -8) = iVar10;\n      *(int **)(puVar14 + -0xc) = piVar9;\n      iVar15 = iStack_e0;\n      *(int *)(puVar14 + -0x10) = iStack_d4;\n      pcVar2 = *(code **)(iVar15 + 0x28);\n      *(undefined4 *)(puVar14 + -0x14) = 0x4ed34;\n      (*pcVar2)();\n    }\n    else {\n      *(uint *)(puVar14 + -4) = uStack_e4 & 0x1f;\n      *(int *)(puVar14 + -8) = iVar10;\n      *(int **)(puVar14 + -0xc) = piVar9;\n      iVar15 = iStack_e0;\n      *(int *)(puVar14 + -0x10) = iStack_d4;\n      pcVar2 = *(code **)(iVar15 + 0x80);\n      *(undefined4 *)(puVar14 + -0x14) = 0x4e6dc;\n      (*pcVar2)();\n    }\n    iVar4 = iStack_d4;\n    iVar15 = iStack_dc;\n    uStack_d8 = iVar10 - (uint)(*(int *)(iStack_d4 + (iVar10 + -1) * 4) == 0);\n    do {\n      *(int *)(puVar14 + -0x10) = iVar15;\n      *(uint *)(puVar14 + -0x14) = uStack_ec;\n      *(int *)(puVar14 + -0x18) = iStack_cc;\n      *(uint **)(puVar14 + -0x1c) = local_c0;\n      *(int *)(puVar14 + -0x20) = iStack_d0;\n      *(undefined4 *)(puVar14 + -0x24) = 0x4e727;\n      iVar10 = __gmpn_pow_1();\n      *(int *)(puVar14 + -0x10) = iStack_cc;\n      *(uint **)(puVar14 + -0x14) = local_c0;\n      *(int *)(puVar14 + -0x18) = iVar10;\n      *(int *)(puVar14 + -0x1c) = iStack_d0;\n      *(int *)(puVar14 + -0x20) = iVar15;\n      iStack_dc = iVar10;\n      *(undefined4 *)(puVar14 + -0x24) = 0x4e74f;\n      __gmpn_mul();\n      iVar10 = iStack_d4;\n      uVar11 = uStack_d8;\n      iVar6 = (iStack_cc + iStack_dc) -\n              (uint)(*(int *)(iVar15 + -4 + (iStack_cc + iStack_dc) * 4) == 0);\n      puVar7 = local_c0;\n      if (iVar6 <= (int)uStack_d8) {\n        uVar5 = uStack_d8;\n        if (uStack_d8 != iVar6) goto LAB_0004eb66;\n        do {\n          uVar5 = uVar5 + -1;\n          if ((int)uVar5 < 0) {\n            iStack_108 = iStack_dc;\n            uStack_114 = 0;\n            iStack_10c = iStack_104;\n            uStack_e8 = puStack_fc[iStack_104] - puStack_fc[iStack_104 + 1];\n            iStack_118 = puStack_fc[iStack_104 + 1] - puStack_fc[iStack_104];\n            uStack_f0 = uStack_e8 >> 5;\n            uStack_f4 = iStack_118 + uStack_e4;\n            uVar11 = uStack_e4 - 1;\n            uStack_e4 = uStack_e8 & 0x1f;\n            puVar12 = (uint *)((uVar11 >> 5) - (uStack_f4 >> 5));\n            uStack_100 = uStack_f0 * 4;\n            uVar11 = 0;\n            iStack_110 = (int)puVar12 + 1;\n            uVar5 = uStack_f4 >> 5;\n            puVar7 = (uint *)(iStack_d4 + uStack_f0 * 4);\n            iStack_dc = iVar15;\n            uStack_d8 = uStack_f0;\n            goto LAB_0004e83d;\n          }\n          uVar13 = *(uint *)(iVar4 + uVar5 * 4);\n          uVar3 = *(uint *)(iVar15 + uVar5 * 4);\n        } while (uVar3 == uVar13);\n        if (uVar3 <= uVar13) goto LAB_0004eb66;\n      }\n      do {\n        uVar11 = *puVar7;\n        *puVar7 = *puVar7 - 1;\n        puVar7 = puVar7 + 1;\n      } while (uVar11 == 0);\n    } while( true );\n  }" if (parenthesized_expression "(iVar15 != 0)" ( (binary_expression "iVar15 != 0" identifier != number_literal) )) (compound_statement "{\n    iStack_104 = iVar15 + -1;\n    puStack_fc = auStack_a4;\n    iStack_cc = 1;\n    iStack_e0 = *(int *)(local_c4 + -0x26c);\n    iStack_dc = iVar10;\nLAB_0004e690:\n    local_124 = (int *)((ulonglong)uVar16 >> 0x20);\n    local_c0 = (uint *)uVar16;\n    uStack_e4 = uStack_f4 - uStack_e8 * uStack_ec;\n    iVar10 = param_1 - (uStack_e4 >> 5);\n    piVar9 = local_f8 + (uStack_e4 >> 5);\n    if ((uStack_e4 & 0x1f) == 0) {\n      *(int *)(puVar14 + -8) = iVar10;\n      *(int **)(puVar14 + -0xc) = piVar9;\n      iVar15 = iStack_e0;\n      *(int *)(puVar14 + -0x10) = iStack_d4;\n      pcVar2 = *(code **)(iVar15 + 0x28);\n      *(undefined4 *)(puVar14 + -0x14) = 0x4ed34;\n      (*pcVar2)();\n    }\n    else {\n      *(uint *)(puVar14 + -4) = uStack_e4 & 0x1f;\n      *(int *)(puVar14 + -8) = iVar10;\n      *(int **)(puVar14 + -0xc) = piVar9;\n      iVar15 = iStack_e0;\n      *(int *)(puVar14 + -0x10) = iStack_d4;\n      pcVar2 = *(code **)(iVar15 + 0x80);\n      *(undefined4 *)(puVar14 + -0x14) = 0x4e6dc;\n      (*pcVar2)();\n    }\n    iVar4 = iStack_d4;\n    iVar15 = iStack_dc;\n    uStack_d8 = iVar10 - (uint)(*(int *)(iStack_d4 + (iVar10 + -1) * 4) == 0);\n    do {\n      *(int *)(puVar14 + -0x10) = iVar15;\n      *(uint *)(puVar14 + -0x14) = uStack_ec;\n      *(int *)(puVar14 + -0x18) = iStack_cc;\n      *(uint **)(puVar14 + -0x1c) = local_c0;\n      *(int *)(puVar14 + -0x20) = iStack_d0;\n      *(undefined4 *)(puVar14 + -0x24) = 0x4e727;\n      iVar10 = __gmpn_pow_1();\n      *(int *)(puVar14 + -0x10) = iStack_cc;\n      *(uint **)(puVar14 + -0x14) = local_c0;\n      *(int *)(puVar14 + -0x18) = iVar10;\n      *(int *)(puVar14 + -0x1c) = iStack_d0;\n      *(int *)(puVar14 + -0x20) = iVar15;\n      iStack_dc = iVar10;\n      *(undefined4 *)(puVar14 + -0x24) = 0x4e74f;\n      __gmpn_mul();\n      iVar10 = iStack_d4;\n      uVar11 = uStack_d8;\n      iVar6 = (iStack_cc + iStack_dc) -\n              (uint)(*(int *)(iVar15 + -4 + (iStack_cc + iStack_dc) * 4) == 0);\n      puVar7 = local_c0;\n      if (iVar6 <= (int)uStack_d8) {\n        uVar5 = uStack_d8;\n        if (uStack_d8 != iVar6) goto LAB_0004eb66;\n        do {\n          uVar5 = uVar5 + -1;\n          if ((int)uVar5 < 0) {\n            iStack_108 = iStack_dc;\n            uStack_114 = 0;\n            iStack_10c = iStack_104;\n            uStack_e8 = puStack_fc[iStack_104] - puStack_fc[iStack_104 + 1];\n            iStack_118 = puStack_fc[iStack_104 + 1] - puStack_fc[iStack_104];\n            uStack_f0 = uStack_e8 >> 5;\n            uStack_f4 = iStack_118 + uStack_e4;\n            uVar11 = uStack_e4 - 1;\n            uStack_e4 = uStack_e8 & 0x1f;\n            puVar12 = (uint *)((uVar11 >> 5) - (uStack_f4 >> 5));\n            uStack_100 = uStack_f0 * 4;\n            uVar11 = 0;\n            iStack_110 = (int)puVar12 + 1;\n            uVar5 = uStack_f4 >> 5;\n            puVar7 = (uint *)(iStack_d4 + uStack_f0 * 4);\n            iStack_dc = iVar15;\n            uStack_d8 = uStack_f0;\n            goto LAB_0004e83d;\n          }\n          uVar13 = *(uint *)(iVar4 + uVar5 * 4);\n          uVar3 = *(uint *)(iVar15 + uVar5 * 4);\n        } while (uVar3 == uVar13);\n        if (uVar3 <= uVar13) goto LAB_0004eb66;\n      }\n      do {\n        uVar11 = *puVar7;\n        *puVar7 = *puVar7 - 1;\n        puVar7 = puVar7 + 1;\n      } while (uVar11 == 0);\n    } while( true );\n  }" { (expression_statement "iStack_104 = iVar15 + -1;" (assignment_expression "iStack_104 = iVar15 + -1" identifier = (binary_expression "iVar15 + -1" identifier + number_literal)) ;) (expression_statement "puStack_fc = auStack_a4;" (assignment_expression "puStack_fc = auStack_a4" identifier = identifier) ;) (expression_statement "iStack_cc = 1;" (assignment_expression "iStack_cc = 1" identifier = number_literal) ;) (expression_statement "iStack_e0 = *(int *)(local_c4 + -0x26c);" (assignment_expression "iStack_e0 = *(int *)(local_c4 + -0x26c)" identifier = (pointer_expression "*(int *)(local_c4 + -0x26c)" * (cast_expression "(int *)(local_c4 + -0x26c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_c4 + -0x26c)" ( (binary_expression "local_c4 + -0x26c" identifier + number_literal) ))))) ;) (expression_statement "iStack_dc = iVar10;" (assignment_expression "iStack_dc = iVar10" identifier = identifier) ;) (labeled_statement "LAB_0004e690:\n    local_124 = (int *)((ulonglong)uVar16 >> 0x20);" statement_identifier : (expression_statement "local_124 = (int *)((ulonglong)uVar16 >> 0x20);" (assignment_expression "local_124 = (int *)((ulonglong)uVar16 >> 0x20)" identifier = (cast_expression "(int *)((ulonglong)uVar16 >> 0x20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((ulonglong)uVar16 >> 0x20)" ( (binary_expression "(ulonglong)uVar16 >> 0x20" (cast_expression "(ulonglong)uVar16" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;)) (expression_statement "local_c0 = (uint *)uVar16;" (assignment_expression "local_c0 = (uint *)uVar16" identifier = (cast_expression "(uint *)uVar16" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "uStack_e4 = uStack_f4 - uStack_e8 * uStack_ec;" (assignment_expression "uStack_e4 = uStack_f4 - uStack_e8 * uStack_ec" identifier = (binary_expression "uStack_f4 - uStack_e8 * uStack_ec" identifier - (binary_expression "uStack_e8 * uStack_ec" identifier * identifier))) ;) (expression_statement "iVar10 = param_1 - (uStack_e4 >> 5);" (assignment_expression "iVar10 = param_1 - (uStack_e4 >> 5)" identifier = (binary_expression "param_1 - (uStack_e4 >> 5)" identifier - (parenthesized_expression "(uStack_e4 >> 5)" ( (binary_expression "uStack_e4 >> 5" identifier >> number_literal) )))) ;) (expression_statement "piVar9 = local_f8 + (uStack_e4 >> 5);" (assignment_expression "piVar9 = local_f8 + (uStack_e4 >> 5)" identifier = (binary_expression "local_f8 + (uStack_e4 >> 5)" identifier + (parenthesized_expression "(uStack_e4 >> 5)" ( (binary_expression "uStack_e4 >> 5" identifier >> number_literal) )))) ;) (if_statement "if ((uStack_e4 & 0x1f) == 0) {\n      *(int *)(puVar14 + -8) = iVar10;\n      *(int **)(puVar14 + -0xc) = piVar9;\n      iVar15 = iStack_e0;\n      *(int *)(puVar14 + -0x10) = iStack_d4;\n      pcVar2 = *(code **)(iVar15 + 0x28);\n      *(undefined4 *)(puVar14 + -0x14) = 0x4ed34;\n      (*pcVar2)();\n    }\n    else {\n      *(uint *)(puVar14 + -4) = uStack_e4 & 0x1f;\n      *(int *)(puVar14 + -8) = iVar10;\n      *(int **)(puVar14 + -0xc) = piVar9;\n      iVar15 = iStack_e0;\n      *(int *)(puVar14 + -0x10) = iStack_d4;\n      pcVar2 = *(code **)(iVar15 + 0x80);\n      *(undefined4 *)(puVar14 + -0x14) = 0x4e6dc;\n      (*pcVar2)();\n    }" if (parenthesized_expression "((uStack_e4 & 0x1f) == 0)" ( (binary_expression "(uStack_e4 & 0x1f) == 0" (parenthesized_expression "(uStack_e4 & 0x1f)" ( (binary_expression "uStack_e4 & 0x1f" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n      *(int *)(puVar14 + -8) = iVar10;\n      *(int **)(puVar14 + -0xc) = piVar9;\n      iVar15 = iStack_e0;\n      *(int *)(puVar14 + -0x10) = iStack_d4;\n      pcVar2 = *(code **)(iVar15 + 0x28);\n      *(undefined4 *)(puVar14 + -0x14) = 0x4ed34;\n      (*pcVar2)();\n    }" { (expression_statement "*(int *)(puVar14 + -8) = iVar10;" (assignment_expression "*(int *)(puVar14 + -8) = iVar10" (pointer_expression "*(int *)(puVar14 + -8)" * (cast_expression "(int *)(puVar14 + -8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar14 + -8)" ( (binary_expression "puVar14 + -8" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int **)(puVar14 + -0xc) = piVar9;" (assignment_expression "*(int **)(puVar14 + -0xc) = piVar9" (pointer_expression "*(int **)(puVar14 + -0xc)" * (cast_expression "(int **)(puVar14 + -0xc)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar14 + -0xc)" ( (binary_expression "puVar14 + -0xc" identifier + number_literal) )))) = identifier) ;) (expression_statement "iVar15 = iStack_e0;" (assignment_expression "iVar15 = iStack_e0" identifier = identifier) ;) (expression_statement "*(int *)(puVar14 + -0x10) = iStack_d4;" (assignment_expression "*(int *)(puVar14 + -0x10) = iStack_d4" (pointer_expression "*(int *)(puVar14 + -0x10)" * (cast_expression "(int *)(puVar14 + -0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar14 + -0x10)" ( (binary_expression "puVar14 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "pcVar2 = *(code **)(iVar15 + 0x28);" (assignment_expression "pcVar2 = *(code **)(iVar15 + 0x28)" identifier = (pointer_expression "*(code **)(iVar15 + 0x28)" * (cast_expression "(code **)(iVar15 + 0x28)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar15 + 0x28)" ( (binary_expression "iVar15 + 0x28" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar14 + -0x14) = 0x4ed34;" (assignment_expression "*(undefined4 *)(puVar14 + -0x14) = 0x4ed34" (pointer_expression "*(undefined4 *)(puVar14 + -0x14)" * (cast_expression "(undefined4 *)(puVar14 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar14 + -0x14)" ( (binary_expression "puVar14 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "(*pcVar2)();" (call_expression "(*pcVar2)()" (parenthesized_expression "(*pcVar2)" ( (pointer_expression "*pcVar2" * identifier) )) (argument_list "()" ( ))) ;) }) (else_clause "else {\n      *(uint *)(puVar14 + -4) = uStack_e4 & 0x1f;\n      *(int *)(puVar14 + -8) = iVar10;\n      *(int **)(puVar14 + -0xc) = piVar9;\n      iVar15 = iStack_e0;\n      *(int *)(puVar14 + -0x10) = iStack_d4;\n      pcVar2 = *(code **)(iVar15 + 0x80);\n      *(undefined4 *)(puVar14 + -0x14) = 0x4e6dc;\n      (*pcVar2)();\n    }" else (compound_statement "{\n      *(uint *)(puVar14 + -4) = uStack_e4 & 0x1f;\n      *(int *)(puVar14 + -8) = iVar10;\n      *(int **)(puVar14 + -0xc) = piVar9;\n      iVar15 = iStack_e0;\n      *(int *)(puVar14 + -0x10) = iStack_d4;\n      pcVar2 = *(code **)(iVar15 + 0x80);\n      *(undefined4 *)(puVar14 + -0x14) = 0x4e6dc;\n      (*pcVar2)();\n    }" { (expression_statement "*(uint *)(puVar14 + -4) = uStack_e4 & 0x1f;" (assignment_expression "*(uint *)(puVar14 + -4) = uStack_e4 & 0x1f" (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) )))) = (binary_expression "uStack_e4 & 0x1f" identifier & number_literal)) ;) (expression_statement "*(int *)(puVar14 + -8) = iVar10;" (assignment_expression "*(int *)(puVar14 + -8) = iVar10" (pointer_expression "*(int *)(puVar14 + -8)" * (cast_expression "(int *)(puVar14 + -8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar14 + -8)" ( (binary_expression "puVar14 + -8" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int **)(puVar14 + -0xc) = piVar9;" (assignment_expression "*(int **)(puVar14 + -0xc) = piVar9" (pointer_expression "*(int **)(puVar14 + -0xc)" * (cast_expression "(int **)(puVar14 + -0xc)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar14 + -0xc)" ( (binary_expression "puVar14 + -0xc" identifier + number_literal) )))) = identifier) ;) (expression_statement "iVar15 = iStack_e0;" (assignment_expression "iVar15 = iStack_e0" identifier = identifier) ;) (expression_statement "*(int *)(puVar14 + -0x10) = iStack_d4;" (assignment_expression "*(int *)(puVar14 + -0x10) = iStack_d4" (pointer_expression "*(int *)(puVar14 + -0x10)" * (cast_expression "(int *)(puVar14 + -0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar14 + -0x10)" ( (binary_expression "puVar14 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "pcVar2 = *(code **)(iVar15 + 0x80);" (assignment_expression "pcVar2 = *(code **)(iVar15 + 0x80)" identifier = (pointer_expression "*(code **)(iVar15 + 0x80)" * (cast_expression "(code **)(iVar15 + 0x80)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar15 + 0x80)" ( (binary_expression "iVar15 + 0x80" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar14 + -0x14) = 0x4e6dc;" (assignment_expression "*(undefined4 *)(puVar14 + -0x14) = 0x4e6dc" (pointer_expression "*(undefined4 *)(puVar14 + -0x14)" * (cast_expression "(undefined4 *)(puVar14 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar14 + -0x14)" ( (binary_expression "puVar14 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "(*pcVar2)();" (call_expression "(*pcVar2)()" (parenthesized_expression "(*pcVar2)" ( (pointer_expression "*pcVar2" * identifier) )) (argument_list "()" ( ))) ;) }))) (expression_statement "iVar4 = iStack_d4;" (assignment_expression "iVar4 = iStack_d4" identifier = identifier) ;) (expression_statement "iVar15 = iStack_dc;" (assignment_expression "iVar15 = iStack_dc" identifier = identifier) ;) (expression_statement "uStack_d8 = iVar10 - (uint)(*(int *)(iStack_d4 + (iVar10 + -1) * 4) == 0);" (assignment_expression "uStack_d8 = iVar10 - (uint)(*(int *)(iStack_d4 + (iVar10 + -1) * 4) == 0)" identifier = (binary_expression "iVar10 - (uint)(*(int *)(iStack_d4 + (iVar10 + -1) * 4) == 0)" identifier - (call_expression "(uint)(*(int *)(iStack_d4 + (iVar10 + -1) * 4) == 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(*(int *)(iStack_d4 + (iVar10 + -1) * 4) == 0)" ( (binary_expression "*(int *)(iStack_d4 + (iVar10 + -1) * 4) == 0" (pointer_expression "*(int *)(iStack_d4 + (iVar10 + -1) * 4)" * (cast_expression "(int *)(iStack_d4 + (iVar10 + -1) * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iStack_d4 + (iVar10 + -1) * 4)" ( (binary_expression "iStack_d4 + (iVar10 + -1) * 4" identifier + (binary_expression "(iVar10 + -1) * 4" (parenthesized_expression "(iVar10 + -1)" ( (binary_expression "iVar10 + -1" identifier + number_literal) )) * number_literal)) )))) == number_literal) ))))) ;) (do_statement "do {\n      *(int *)(puVar14 + -0x10) = iVar15;\n      *(uint *)(puVar14 + -0x14) = uStack_ec;\n      *(int *)(puVar14 + -0x18) = iStack_cc;\n      *(uint **)(puVar14 + -0x1c) = local_c0;\n      *(int *)(puVar14 + -0x20) = iStack_d0;\n      *(undefined4 *)(puVar14 + -0x24) = 0x4e727;\n      iVar10 = __gmpn_pow_1();\n      *(int *)(puVar14 + -0x10) = iStack_cc;\n      *(uint **)(puVar14 + -0x14) = local_c0;\n      *(int *)(puVar14 + -0x18) = iVar10;\n      *(int *)(puVar14 + -0x1c) = iStack_d0;\n      *(int *)(puVar14 + -0x20) = iVar15;\n      iStack_dc = iVar10;\n      *(undefined4 *)(puVar14 + -0x24) = 0x4e74f;\n      __gmpn_mul();\n      iVar10 = iStack_d4;\n      uVar11 = uStack_d8;\n      iVar6 = (iStack_cc + iStack_dc) -\n              (uint)(*(int *)(iVar15 + -4 + (iStack_cc + iStack_dc) * 4) == 0);\n      puVar7 = local_c0;\n      if (iVar6 <= (int)uStack_d8) {\n        uVar5 = uStack_d8;\n        if (uStack_d8 != iVar6) goto LAB_0004eb66;\n        do {\n          uVar5 = uVar5 + -1;\n          if ((int)uVar5 < 0) {\n            iStack_108 = iStack_dc;\n            uStack_114 = 0;\n            iStack_10c = iStack_104;\n            uStack_e8 = puStack_fc[iStack_104] - puStack_fc[iStack_104 + 1];\n            iStack_118 = puStack_fc[iStack_104 + 1] - puStack_fc[iStack_104];\n            uStack_f0 = uStack_e8 >> 5;\n            uStack_f4 = iStack_118 + uStack_e4;\n            uVar11 = uStack_e4 - 1;\n            uStack_e4 = uStack_e8 & 0x1f;\n            puVar12 = (uint *)((uVar11 >> 5) - (uStack_f4 >> 5));\n            uStack_100 = uStack_f0 * 4;\n            uVar11 = 0;\n            iStack_110 = (int)puVar12 + 1;\n            uVar5 = uStack_f4 >> 5;\n            puVar7 = (uint *)(iStack_d4 + uStack_f0 * 4);\n            iStack_dc = iVar15;\n            uStack_d8 = uStack_f0;\n            goto LAB_0004e83d;\n          }\n          uVar13 = *(uint *)(iVar4 + uVar5 * 4);\n          uVar3 = *(uint *)(iVar15 + uVar5 * 4);\n        } while (uVar3 == uVar13);\n        if (uVar3 <= uVar13) goto LAB_0004eb66;\n      }\n      do {\n        uVar11 = *puVar7;\n        *puVar7 = *puVar7 - 1;\n        puVar7 = puVar7 + 1;\n      } while (uVar11 == 0);\n    } while( true );" do (compound_statement "{\n      *(int *)(puVar14 + -0x10) = iVar15;\n      *(uint *)(puVar14 + -0x14) = uStack_ec;\n      *(int *)(puVar14 + -0x18) = iStack_cc;\n      *(uint **)(puVar14 + -0x1c) = local_c0;\n      *(int *)(puVar14 + -0x20) = iStack_d0;\n      *(undefined4 *)(puVar14 + -0x24) = 0x4e727;\n      iVar10 = __gmpn_pow_1();\n      *(int *)(puVar14 + -0x10) = iStack_cc;\n      *(uint **)(puVar14 + -0x14) = local_c0;\n      *(int *)(puVar14 + -0x18) = iVar10;\n      *(int *)(puVar14 + -0x1c) = iStack_d0;\n      *(int *)(puVar14 + -0x20) = iVar15;\n      iStack_dc = iVar10;\n      *(undefined4 *)(puVar14 + -0x24) = 0x4e74f;\n      __gmpn_mul();\n      iVar10 = iStack_d4;\n      uVar11 = uStack_d8;\n      iVar6 = (iStack_cc + iStack_dc) -\n              (uint)(*(int *)(iVar15 + -4 + (iStack_cc + iStack_dc) * 4) == 0);\n      puVar7 = local_c0;\n      if (iVar6 <= (int)uStack_d8) {\n        uVar5 = uStack_d8;\n        if (uStack_d8 != iVar6) goto LAB_0004eb66;\n        do {\n          uVar5 = uVar5 + -1;\n          if ((int)uVar5 < 0) {\n            iStack_108 = iStack_dc;\n            uStack_114 = 0;\n            iStack_10c = iStack_104;\n            uStack_e8 = puStack_fc[iStack_104] - puStack_fc[iStack_104 + 1];\n            iStack_118 = puStack_fc[iStack_104 + 1] - puStack_fc[iStack_104];\n            uStack_f0 = uStack_e8 >> 5;\n            uStack_f4 = iStack_118 + uStack_e4;\n            uVar11 = uStack_e4 - 1;\n            uStack_e4 = uStack_e8 & 0x1f;\n            puVar12 = (uint *)((uVar11 >> 5) - (uStack_f4 >> 5));\n            uStack_100 = uStack_f0 * 4;\n            uVar11 = 0;\n            iStack_110 = (int)puVar12 + 1;\n            uVar5 = uStack_f4 >> 5;\n            puVar7 = (uint *)(iStack_d4 + uStack_f0 * 4);\n            iStack_dc = iVar15;\n            uStack_d8 = uStack_f0;\n            goto LAB_0004e83d;\n          }\n          uVar13 = *(uint *)(iVar4 + uVar5 * 4);\n          uVar3 = *(uint *)(iVar15 + uVar5 * 4);\n        } while (uVar3 == uVar13);\n        if (uVar3 <= uVar13) goto LAB_0004eb66;\n      }\n      do {\n        uVar11 = *puVar7;\n        *puVar7 = *puVar7 - 1;\n        puVar7 = puVar7 + 1;\n      } while (uVar11 == 0);\n    }" { (expression_statement "*(int *)(puVar14 + -0x10) = iVar15;" (assignment_expression "*(int *)(puVar14 + -0x10) = iVar15" (pointer_expression "*(int *)(puVar14 + -0x10)" * (cast_expression "(int *)(puVar14 + -0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar14 + -0x10)" ( (binary_expression "puVar14 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(uint *)(puVar14 + -0x14) = uStack_ec;" (assignment_expression "*(uint *)(puVar14 + -0x14) = uStack_ec" (pointer_expression "*(uint *)(puVar14 + -0x14)" * (cast_expression "(uint *)(puVar14 + -0x14)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar14 + -0x14)" ( (binary_expression "puVar14 + -0x14" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(puVar14 + -0x18) = iStack_cc;" (assignment_expression "*(int *)(puVar14 + -0x18) = iStack_cc" (pointer_expression "*(int *)(puVar14 + -0x18)" * (cast_expression "(int *)(puVar14 + -0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar14 + -0x18)" ( (binary_expression "puVar14 + -0x18" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(uint **)(puVar14 + -0x1c) = local_c0;" (assignment_expression "*(uint **)(puVar14 + -0x1c) = local_c0" (pointer_expression "*(uint **)(puVar14 + -0x1c)" * (cast_expression "(uint **)(puVar14 + -0x1c)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar14 + -0x1c)" ( (binary_expression "puVar14 + -0x1c" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(puVar14 + -0x20) = iStack_d0;" (assignment_expression "*(int *)(puVar14 + -0x20) = iStack_d0" (pointer_expression "*(int *)(puVar14 + -0x20)" * (cast_expression "(int *)(puVar14 + -0x20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar14 + -0x20)" ( (binary_expression "puVar14 + -0x20" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar14 + -0x24) = 0x4e727;" (assignment_expression "*(undefined4 *)(puVar14 + -0x24) = 0x4e727" (pointer_expression "*(undefined4 *)(puVar14 + -0x24)" * (cast_expression "(undefined4 *)(puVar14 + -0x24)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar14 + -0x24)" ( (binary_expression "puVar14 + -0x24" identifier + number_literal) )))) = number_literal) ;) (expression_statement "iVar10 = __gmpn_pow_1();" (assignment_expression "iVar10 = __gmpn_pow_1()" identifier = (call_expression "__gmpn_pow_1()" identifier (argument_list "()" ( )))) ;) (expression_statement "*(int *)(puVar14 + -0x10) = iStack_cc;" (assignment_expression "*(int *)(puVar14 + -0x10) = iStack_cc" (pointer_expression "*(int *)(puVar14 + -0x10)" * (cast_expression "(int *)(puVar14 + -0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar14 + -0x10)" ( (binary_expression "puVar14 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(uint **)(puVar14 + -0x14) = local_c0;" (assignment_expression "*(uint **)(puVar14 + -0x14) = local_c0" (pointer_expression "*(uint **)(puVar14 + -0x14)" * (cast_expression "(uint **)(puVar14 + -0x14)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar14 + -0x14)" ( (binary_expression "puVar14 + -0x14" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(puVar14 + -0x18) = iVar10;" (assignment_expression "*(int *)(puVar14 + -0x18) = iVar10" (pointer_expression "*(int *)(puVar14 + -0x18)" * (cast_expression "(int *)(puVar14 + -0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar14 + -0x18)" ( (binary_expression "puVar14 + -0x18" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(puVar14 + -0x1c) = iStack_d0;" (assignment_expression "*(int *)(puVar14 + -0x1c) = iStack_d0" (pointer_expression "*(int *)(puVar14 + -0x1c)" * (cast_expression "(int *)(puVar14 + -0x1c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar14 + -0x1c)" ( (binary_expression "puVar14 + -0x1c" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(puVar14 + -0x20) = iVar15;" (assignment_expression "*(int *)(puVar14 + -0x20) = iVar15" (pointer_expression "*(int *)(puVar14 + -0x20)" * (cast_expression "(int *)(puVar14 + -0x20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar14 + -0x20)" ( (binary_expression "puVar14 + -0x20" identifier + number_literal) )))) = identifier) ;) (expression_statement "iStack_dc = iVar10;" (assignment_expression "iStack_dc = iVar10" identifier = identifier) ;) (expression_statement "*(undefined4 *)(puVar14 + -0x24) = 0x4e74f;" (assignment_expression "*(undefined4 *)(puVar14 + -0x24) = 0x4e74f" (pointer_expression "*(undefined4 *)(puVar14 + -0x24)" * (cast_expression "(undefined4 *)(puVar14 + -0x24)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar14 + -0x24)" ( (binary_expression "puVar14 + -0x24" identifier + number_literal) )))) = number_literal) ;) (expression_statement "__gmpn_mul();" (call_expression "__gmpn_mul()" identifier (argument_list "()" ( ))) ;) (expression_statement "iVar10 = iStack_d4;" (assignment_expression "iVar10 = iStack_d4" identifier = identifier) ;) (expression_statement "uVar11 = uStack_d8;" (assignment_expression "uVar11 = uStack_d8" identifier = identifier) ;) (expression_statement "iVar6 = (iStack_cc + iStack_dc) -\n              (uint)(*(int *)(iVar15 + -4 + (iStack_cc + iStack_dc) * 4) == 0);" (assignment_expression "iVar6 = (iStack_cc + iStack_dc) -\n              (uint)(*(int *)(iVar15 + -4 + (iStack_cc + iStack_dc) * 4) == 0)" identifier = (binary_expression "(iStack_cc + iStack_dc) -\n              (uint)(*(int *)(iVar15 + -4 + (iStack_cc + iStack_dc) * 4) == 0)" (parenthesized_expression "(iStack_cc + iStack_dc)" ( (binary_expression "iStack_cc + iStack_dc" identifier + identifier) )) - (call_expression "(uint)(*(int *)(iVar15 + -4 + (iStack_cc + iStack_dc) * 4) == 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(*(int *)(iVar15 + -4 + (iStack_cc + iStack_dc) * 4) == 0)" ( (binary_expression "*(int *)(iVar15 + -4 + (iStack_cc + iStack_dc) * 4) == 0" (pointer_expression "*(int *)(iVar15 + -4 + (iStack_cc + iStack_dc) * 4)" * (cast_expression "(int *)(iVar15 + -4 + (iStack_cc + iStack_dc) * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar15 + -4 + (iStack_cc + iStack_dc) * 4)" ( (binary_expression "iVar15 + -4 + (iStack_cc + iStack_dc) * 4" (binary_expression "iVar15 + -4" identifier + number_literal) + (binary_expression "(iStack_cc + iStack_dc) * 4" (parenthesized_expression "(iStack_cc + iStack_dc)" ( (binary_expression "iStack_cc + iStack_dc" identifier + identifier) )) * number_literal)) )))) == number_literal) ))))) ;) (expression_statement "puVar7 = local_c0;" (assignment_expression "puVar7 = local_c0" identifier = identifier) ;) (if_statement "if (iVar6 <= (int)uStack_d8) {\n        uVar5 = uStack_d8;\n        if (uStack_d8 != iVar6) goto LAB_0004eb66;\n        do {\n          uVar5 = uVar5 + -1;\n          if ((int)uVar5 < 0) {\n            iStack_108 = iStack_dc;\n            uStack_114 = 0;\n            iStack_10c = iStack_104;\n            uStack_e8 = puStack_fc[iStack_104] - puStack_fc[iStack_104 + 1];\n            iStack_118 = puStack_fc[iStack_104 + 1] - puStack_fc[iStack_104];\n            uStack_f0 = uStack_e8 >> 5;\n            uStack_f4 = iStack_118 + uStack_e4;\n            uVar11 = uStack_e4 - 1;\n            uStack_e4 = uStack_e8 & 0x1f;\n            puVar12 = (uint *)((uVar11 >> 5) - (uStack_f4 >> 5));\n            uStack_100 = uStack_f0 * 4;\n            uVar11 = 0;\n            iStack_110 = (int)puVar12 + 1;\n            uVar5 = uStack_f4 >> 5;\n            puVar7 = (uint *)(iStack_d4 + uStack_f0 * 4);\n            iStack_dc = iVar15;\n            uStack_d8 = uStack_f0;\n            goto LAB_0004e83d;\n          }\n          uVar13 = *(uint *)(iVar4 + uVar5 * 4);\n          uVar3 = *(uint *)(iVar15 + uVar5 * 4);\n        } while (uVar3 == uVar13);\n        if (uVar3 <= uVar13) goto LAB_0004eb66;\n      }" if (parenthesized_expression "(iVar6 <= (int)uStack_d8)" ( (binary_expression "iVar6 <= (int)uStack_d8" identifier <= (cast_expression "(int)uStack_d8" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n        uVar5 = uStack_d8;\n        if (uStack_d8 != iVar6) goto LAB_0004eb66;\n        do {\n          uVar5 = uVar5 + -1;\n          if ((int)uVar5 < 0) {\n            iStack_108 = iStack_dc;\n            uStack_114 = 0;\n            iStack_10c = iStack_104;\n            uStack_e8 = puStack_fc[iStack_104] - puStack_fc[iStack_104 + 1];\n            iStack_118 = puStack_fc[iStack_104 + 1] - puStack_fc[iStack_104];\n            uStack_f0 = uStack_e8 >> 5;\n            uStack_f4 = iStack_118 + uStack_e4;\n            uVar11 = uStack_e4 - 1;\n            uStack_e4 = uStack_e8 & 0x1f;\n            puVar12 = (uint *)((uVar11 >> 5) - (uStack_f4 >> 5));\n            uStack_100 = uStack_f0 * 4;\n            uVar11 = 0;\n            iStack_110 = (int)puVar12 + 1;\n            uVar5 = uStack_f4 >> 5;\n            puVar7 = (uint *)(iStack_d4 + uStack_f0 * 4);\n            iStack_dc = iVar15;\n            uStack_d8 = uStack_f0;\n            goto LAB_0004e83d;\n          }\n          uVar13 = *(uint *)(iVar4 + uVar5 * 4);\n          uVar3 = *(uint *)(iVar15 + uVar5 * 4);\n        } while (uVar3 == uVar13);\n        if (uVar3 <= uVar13) goto LAB_0004eb66;\n      }" { (expression_statement "uVar5 = uStack_d8;" (assignment_expression "uVar5 = uStack_d8" identifier = identifier) ;) (if_statement "if (uStack_d8 != iVar6) goto LAB_0004eb66;" if (parenthesized_expression "(uStack_d8 != iVar6)" ( (binary_expression "uStack_d8 != iVar6" identifier != identifier) )) (goto_statement "goto LAB_0004eb66;" goto statement_identifier ;)) (do_statement "do {\n          uVar5 = uVar5 + -1;\n          if ((int)uVar5 < 0) {\n            iStack_108 = iStack_dc;\n            uStack_114 = 0;\n            iStack_10c = iStack_104;\n            uStack_e8 = puStack_fc[iStack_104] - puStack_fc[iStack_104 + 1];\n            iStack_118 = puStack_fc[iStack_104 + 1] - puStack_fc[iStack_104];\n            uStack_f0 = uStack_e8 >> 5;\n            uStack_f4 = iStack_118 + uStack_e4;\n            uVar11 = uStack_e4 - 1;\n            uStack_e4 = uStack_e8 & 0x1f;\n            puVar12 = (uint *)((uVar11 >> 5) - (uStack_f4 >> 5));\n            uStack_100 = uStack_f0 * 4;\n            uVar11 = 0;\n            iStack_110 = (int)puVar12 + 1;\n            uVar5 = uStack_f4 >> 5;\n            puVar7 = (uint *)(iStack_d4 + uStack_f0 * 4);\n            iStack_dc = iVar15;\n            uStack_d8 = uStack_f0;\n            goto LAB_0004e83d;\n          }\n          uVar13 = *(uint *)(iVar4 + uVar5 * 4);\n          uVar3 = *(uint *)(iVar15 + uVar5 * 4);\n        } while (uVar3 == uVar13);" do (compound_statement "{\n          uVar5 = uVar5 + -1;\n          if ((int)uVar5 < 0) {\n            iStack_108 = iStack_dc;\n            uStack_114 = 0;\n            iStack_10c = iStack_104;\n            uStack_e8 = puStack_fc[iStack_104] - puStack_fc[iStack_104 + 1];\n            iStack_118 = puStack_fc[iStack_104 + 1] - puStack_fc[iStack_104];\n            uStack_f0 = uStack_e8 >> 5;\n            uStack_f4 = iStack_118 + uStack_e4;\n            uVar11 = uStack_e4 - 1;\n            uStack_e4 = uStack_e8 & 0x1f;\n            puVar12 = (uint *)((uVar11 >> 5) - (uStack_f4 >> 5));\n            uStack_100 = uStack_f0 * 4;\n            uVar11 = 0;\n            iStack_110 = (int)puVar12 + 1;\n            uVar5 = uStack_f4 >> 5;\n            puVar7 = (uint *)(iStack_d4 + uStack_f0 * 4);\n            iStack_dc = iVar15;\n            uStack_d8 = uStack_f0;\n            goto LAB_0004e83d;\n          }\n          uVar13 = *(uint *)(iVar4 + uVar5 * 4);\n          uVar3 = *(uint *)(iVar15 + uVar5 * 4);\n        }" { (expression_statement "uVar5 = uVar5 + -1;" (assignment_expression "uVar5 = uVar5 + -1" identifier = (binary_expression "uVar5 + -1" identifier + number_literal)) ;) (if_statement "if ((int)uVar5 < 0) {\n            iStack_108 = iStack_dc;\n            uStack_114 = 0;\n            iStack_10c = iStack_104;\n            uStack_e8 = puStack_fc[iStack_104] - puStack_fc[iStack_104 + 1];\n            iStack_118 = puStack_fc[iStack_104 + 1] - puStack_fc[iStack_104];\n            uStack_f0 = uStack_e8 >> 5;\n            uStack_f4 = iStack_118 + uStack_e4;\n            uVar11 = uStack_e4 - 1;\n            uStack_e4 = uStack_e8 & 0x1f;\n            puVar12 = (uint *)((uVar11 >> 5) - (uStack_f4 >> 5));\n            uStack_100 = uStack_f0 * 4;\n            uVar11 = 0;\n            iStack_110 = (int)puVar12 + 1;\n            uVar5 = uStack_f4 >> 5;\n            puVar7 = (uint *)(iStack_d4 + uStack_f0 * 4);\n            iStack_dc = iVar15;\n            uStack_d8 = uStack_f0;\n            goto LAB_0004e83d;\n          }" if (parenthesized_expression "((int)uVar5 < 0)" ( (binary_expression "(int)uVar5 < 0" (cast_expression "(int)uVar5" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n            iStack_108 = iStack_dc;\n            uStack_114 = 0;\n            iStack_10c = iStack_104;\n            uStack_e8 = puStack_fc[iStack_104] - puStack_fc[iStack_104 + 1];\n            iStack_118 = puStack_fc[iStack_104 + 1] - puStack_fc[iStack_104];\n            uStack_f0 = uStack_e8 >> 5;\n            uStack_f4 = iStack_118 + uStack_e4;\n            uVar11 = uStack_e4 - 1;\n            uStack_e4 = uStack_e8 & 0x1f;\n            puVar12 = (uint *)((uVar11 >> 5) - (uStack_f4 >> 5));\n            uStack_100 = uStack_f0 * 4;\n            uVar11 = 0;\n            iStack_110 = (int)puVar12 + 1;\n            uVar5 = uStack_f4 >> 5;\n            puVar7 = (uint *)(iStack_d4 + uStack_f0 * 4);\n            iStack_dc = iVar15;\n            uStack_d8 = uStack_f0;\n            goto LAB_0004e83d;\n          }" { (expression_statement "iStack_108 = iStack_dc;" (assignment_expression "iStack_108 = iStack_dc" identifier = identifier) ;) (expression_statement "uStack_114 = 0;" (assignment_expression "uStack_114 = 0" identifier = number_literal) ;) (expression_statement "iStack_10c = iStack_104;" (assignment_expression "iStack_10c = iStack_104" identifier = identifier) ;) (expression_statement "uStack_e8 = puStack_fc[iStack_104] - puStack_fc[iStack_104 + 1];" (assignment_expression "uStack_e8 = puStack_fc[iStack_104] - puStack_fc[iStack_104 + 1]" identifier = (binary_expression "puStack_fc[iStack_104] - puStack_fc[iStack_104 + 1]" (subscript_expression "puStack_fc[iStack_104]" identifier [ identifier ]) - (subscript_expression "puStack_fc[iStack_104 + 1]" identifier [ (binary_expression "iStack_104 + 1" identifier + number_literal) ]))) ;) (expression_statement "iStack_118 = puStack_fc[iStack_104 + 1] - puStack_fc[iStack_104];" (assignment_expression "iStack_118 = puStack_fc[iStack_104 + 1] - puStack_fc[iStack_104]" identifier = (binary_expression "puStack_fc[iStack_104 + 1] - puStack_fc[iStack_104]" (subscript_expression "puStack_fc[iStack_104 + 1]" identifier [ (binary_expression "iStack_104 + 1" identifier + number_literal) ]) - (subscript_expression "puStack_fc[iStack_104]" identifier [ identifier ]))) ;) (expression_statement "uStack_f0 = uStack_e8 >> 5;" (assignment_expression "uStack_f0 = uStack_e8 >> 5" identifier = (binary_expression "uStack_e8 >> 5" identifier >> number_literal)) ;) (expression_statement "uStack_f4 = iStack_118 + uStack_e4;" (assignment_expression "uStack_f4 = iStack_118 + uStack_e4" identifier = (binary_expression "iStack_118 + uStack_e4" identifier + identifier)) ;) (expression_statement "uVar11 = uStack_e4 - 1;" (assignment_expression "uVar11 = uStack_e4 - 1" identifier = (binary_expression "uStack_e4 - 1" identifier - number_literal)) ;) (expression_statement "uStack_e4 = uStack_e8 & 0x1f;" (assignment_expression "uStack_e4 = uStack_e8 & 0x1f" identifier = (binary_expression "uStack_e8 & 0x1f" identifier & number_literal)) ;) (expression_statement "puVar12 = (uint *)((uVar11 >> 5) - (uStack_f4 >> 5));" (assignment_expression "puVar12 = (uint *)((uVar11 >> 5) - (uStack_f4 >> 5))" identifier = (cast_expression "(uint *)((uVar11 >> 5) - (uStack_f4 >> 5))" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((uVar11 >> 5) - (uStack_f4 >> 5))" ( (binary_expression "(uVar11 >> 5) - (uStack_f4 >> 5)" (parenthesized_expression "(uVar11 >> 5)" ( (binary_expression "uVar11 >> 5" identifier >> number_literal) )) - (parenthesized_expression "(uStack_f4 >> 5)" ( (binary_expression "uStack_f4 >> 5" identifier >> number_literal) ))) )))) ;) (expression_statement "uStack_100 = uStack_f0 * 4;" (assignment_expression "uStack_100 = uStack_f0 * 4" identifier = (binary_expression "uStack_f0 * 4" identifier * number_literal)) ;) (expression_statement "uVar11 = 0;" (assignment_expression "uVar11 = 0" identifier = number_literal) ;) (expression_statement "iStack_110 = (int)puVar12 + 1;" (assignment_expression "iStack_110 = (int)puVar12 + 1" identifier = (binary_expression "(int)puVar12 + 1" (cast_expression "(int)puVar12" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal)) ;) (expression_statement "uVar5 = uStack_f4 >> 5;" (assignment_expression "uVar5 = uStack_f4 >> 5" identifier = (binary_expression "uStack_f4 >> 5" identifier >> number_literal)) ;) (expression_statement "puVar7 = (uint *)(iStack_d4 + uStack_f0 * 4);" (assignment_expression "puVar7 = (uint *)(iStack_d4 + uStack_f0 * 4)" identifier = (cast_expression "(uint *)(iStack_d4 + uStack_f0 * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iStack_d4 + uStack_f0 * 4)" ( (binary_expression "iStack_d4 + uStack_f0 * 4" identifier + (binary_expression "uStack_f0 * 4" identifier * number_literal)) )))) ;) (expression_statement "iStack_dc = iVar15;" (assignment_expression "iStack_dc = iVar15" identifier = identifier) ;) (expression_statement "uStack_d8 = uStack_f0;" (assignment_expression "uStack_d8 = uStack_f0" identifier = identifier) ;) (goto_statement "goto LAB_0004e83d;" goto statement_identifier ;) })) (expression_statement "uVar13 = *(uint *)(iVar4 + uVar5 * 4);" (assignment_expression "uVar13 = *(uint *)(iVar4 + uVar5 * 4)" identifier = (pointer_expression "*(uint *)(iVar4 + uVar5 * 4)" * (cast_expression "(uint *)(iVar4 + uVar5 * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + uVar5 * 4)" ( (binary_expression "iVar4 + uVar5 * 4" identifier + (binary_expression "uVar5 * 4" identifier * number_literal)) ))))) ;) (expression_statement "uVar3 = *(uint *)(iVar15 + uVar5 * 4);" (assignment_expression "uVar3 = *(uint *)(iVar15 + uVar5 * 4)" identifier = (pointer_expression "*(uint *)(iVar15 + uVar5 * 4)" * (cast_expression "(uint *)(iVar15 + uVar5 * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar15 + uVar5 * 4)" ( (binary_expression "iVar15 + uVar5 * 4" identifier + (binary_expression "uVar5 * 4" identifier * number_literal)) ))))) ;) }) while (parenthesized_expression "(uVar3 == uVar13)" ( (binary_expression "uVar3 == uVar13" identifier == identifier) )) ;) (if_statement "if (uVar3 <= uVar13) goto LAB_0004eb66;" if (parenthesized_expression "(uVar3 <= uVar13)" ( (binary_expression "uVar3 <= uVar13" identifier <= identifier) )) (goto_statement "goto LAB_0004eb66;" goto statement_identifier ;)) })) (do_statement "do {\n        uVar11 = *puVar7;\n        *puVar7 = *puVar7 - 1;\n        puVar7 = puVar7 + 1;\n      } while (uVar11 == 0);" do (compound_statement "{\n        uVar11 = *puVar7;\n        *puVar7 = *puVar7 - 1;\n        puVar7 = puVar7 + 1;\n      }" { (expression_statement "uVar11 = *puVar7;" (assignment_expression "uVar11 = *puVar7" identifier = (pointer_expression "*puVar7" * identifier)) ;) (expression_statement "*puVar7 = *puVar7 - 1;" (assignment_expression "*puVar7 = *puVar7 - 1" (pointer_expression "*puVar7" * identifier) = (binary_expression "*puVar7 - 1" (pointer_expression "*puVar7" * identifier) - number_literal)) ;) (expression_statement "puVar7 = puVar7 + 1;" (assignment_expression "puVar7 = puVar7 + 1" identifier = (binary_expression "puVar7 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar11 == 0)" ( (binary_expression "uVar11 == 0" identifier == number_literal) )) ;) }) while (parenthesized_expression "( true )" ( true )) ;) })) (expression_statement "iStack_cc = 1;" (assignment_expression "iStack_cc = 1" identifier = number_literal) ;) (labeled_statement "LAB_0004e9ce:\n  piVar9 = local_f8;" statement_identifier : (expression_statement "piVar9 = local_f8;" (assignment_expression "piVar9 = local_f8" identifier = identifier) ;)) (expression_statement "local_c0 = (uint *)uVar16;" (assignment_expression "local_c0 = (uint *)uVar16" identifier = (cast_expression "(uint *)uVar16" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (if_statement "if ((param_3 == 0) || (*local_c0 < 2)) {\n    do {\n      local_124 = (int *)((ulonglong)uVar16 >> 0x20);\n      local_c0 = (uint *)uVar16;\n      *(int *)(puVar14 + -0x10) = iStack_d0;\n      *(uint *)(puVar14 + -0x14) = param_2;\n      *(int *)(puVar14 + -0x18) = iStack_cc;\n      *(uint **)(puVar14 + -0x1c) = local_c0;\n      *(int *)(puVar14 + -0x20) = iVar10;\n      *(undefined4 *)(puVar14 + -0x24) = 0x4ea47;\n      uVar11 = __gmpn_pow_1();\n      uVar16 = CONCAT44(local_124,local_c0);\n      if ((int)uVar11 <= (int)param_1) {\n        uVar5 = param_1;\n        if (param_1 != uVar11) goto LAB_0004efbf;\n        do {\n          uVar5 = uVar5 - 1;\n          if ((int)uVar5 < 0) {\n            uStack_d8 = 0;\n            uVar16 = CONCAT44(local_124,local_c0);\n            goto LAB_0004e9e0;\n          }\n          uVar13 = *(uint *)(iVar10 + uVar5 * 4);\n        } while (uVar13 == piVar9[uVar5]);\n        if (uVar13 <= (uint)piVar9[uVar5]) goto LAB_0004efbf;\n      }\n      do {\n        iVar15 = *local_c0;\n        *local_c0 = *local_c0 + -1;\n        local_c0 = (uint *)((int *)local_c0 + 1);\n      } while (iVar15 == 0);\n    } while( true );\n  }" if (parenthesized_expression "((param_3 == 0) || (*local_c0 < 2))" ( (binary_expression "(param_3 == 0) || (*local_c0 < 2)" (parenthesized_expression "(param_3 == 0)" ( (binary_expression "param_3 == 0" identifier == number_literal) )) || (parenthesized_expression "(*local_c0 < 2)" ( (binary_expression "*local_c0 < 2" (pointer_expression "*local_c0" * identifier) < number_literal) ))) )) (compound_statement "{\n    do {\n      local_124 = (int *)((ulonglong)uVar16 >> 0x20);\n      local_c0 = (uint *)uVar16;\n      *(int *)(puVar14 + -0x10) = iStack_d0;\n      *(uint *)(puVar14 + -0x14) = param_2;\n      *(int *)(puVar14 + -0x18) = iStack_cc;\n      *(uint **)(puVar14 + -0x1c) = local_c0;\n      *(int *)(puVar14 + -0x20) = iVar10;\n      *(undefined4 *)(puVar14 + -0x24) = 0x4ea47;\n      uVar11 = __gmpn_pow_1();\n      uVar16 = CONCAT44(local_124,local_c0);\n      if ((int)uVar11 <= (int)param_1) {\n        uVar5 = param_1;\n        if (param_1 != uVar11) goto LAB_0004efbf;\n        do {\n          uVar5 = uVar5 - 1;\n          if ((int)uVar5 < 0) {\n            uStack_d8 = 0;\n            uVar16 = CONCAT44(local_124,local_c0);\n            goto LAB_0004e9e0;\n          }\n          uVar13 = *(uint *)(iVar10 + uVar5 * 4);\n        } while (uVar13 == piVar9[uVar5]);\n        if (uVar13 <= (uint)piVar9[uVar5]) goto LAB_0004efbf;\n      }\n      do {\n        iVar15 = *local_c0;\n        *local_c0 = *local_c0 + -1;\n        local_c0 = (uint *)((int *)local_c0 + 1);\n      } while (iVar15 == 0);\n    } while( true );\n  }" { (do_statement "do {\n      local_124 = (int *)((ulonglong)uVar16 >> 0x20);\n      local_c0 = (uint *)uVar16;\n      *(int *)(puVar14 + -0x10) = iStack_d0;\n      *(uint *)(puVar14 + -0x14) = param_2;\n      *(int *)(puVar14 + -0x18) = iStack_cc;\n      *(uint **)(puVar14 + -0x1c) = local_c0;\n      *(int *)(puVar14 + -0x20) = iVar10;\n      *(undefined4 *)(puVar14 + -0x24) = 0x4ea47;\n      uVar11 = __gmpn_pow_1();\n      uVar16 = CONCAT44(local_124,local_c0);\n      if ((int)uVar11 <= (int)param_1) {\n        uVar5 = param_1;\n        if (param_1 != uVar11) goto LAB_0004efbf;\n        do {\n          uVar5 = uVar5 - 1;\n          if ((int)uVar5 < 0) {\n            uStack_d8 = 0;\n            uVar16 = CONCAT44(local_124,local_c0);\n            goto LAB_0004e9e0;\n          }\n          uVar13 = *(uint *)(iVar10 + uVar5 * 4);\n        } while (uVar13 == piVar9[uVar5]);\n        if (uVar13 <= (uint)piVar9[uVar5]) goto LAB_0004efbf;\n      }\n      do {\n        iVar15 = *local_c0;\n        *local_c0 = *local_c0 + -1;\n        local_c0 = (uint *)((int *)local_c0 + 1);\n      } while (iVar15 == 0);\n    } while( true );" do (compound_statement "{\n      local_124 = (int *)((ulonglong)uVar16 >> 0x20);\n      local_c0 = (uint *)uVar16;\n      *(int *)(puVar14 + -0x10) = iStack_d0;\n      *(uint *)(puVar14 + -0x14) = param_2;\n      *(int *)(puVar14 + -0x18) = iStack_cc;\n      *(uint **)(puVar14 + -0x1c) = local_c0;\n      *(int *)(puVar14 + -0x20) = iVar10;\n      *(undefined4 *)(puVar14 + -0x24) = 0x4ea47;\n      uVar11 = __gmpn_pow_1();\n      uVar16 = CONCAT44(local_124,local_c0);\n      if ((int)uVar11 <= (int)param_1) {\n        uVar5 = param_1;\n        if (param_1 != uVar11) goto LAB_0004efbf;\n        do {\n          uVar5 = uVar5 - 1;\n          if ((int)uVar5 < 0) {\n            uStack_d8 = 0;\n            uVar16 = CONCAT44(local_124,local_c0);\n            goto LAB_0004e9e0;\n          }\n          uVar13 = *(uint *)(iVar10 + uVar5 * 4);\n        } while (uVar13 == piVar9[uVar5]);\n        if (uVar13 <= (uint)piVar9[uVar5]) goto LAB_0004efbf;\n      }\n      do {\n        iVar15 = *local_c0;\n        *local_c0 = *local_c0 + -1;\n        local_c0 = (uint *)((int *)local_c0 + 1);\n      } while (iVar15 == 0);\n    }" { (expression_statement "local_124 = (int *)((ulonglong)uVar16 >> 0x20);" (assignment_expression "local_124 = (int *)((ulonglong)uVar16 >> 0x20)" identifier = (cast_expression "(int *)((ulonglong)uVar16 >> 0x20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((ulonglong)uVar16 >> 0x20)" ( (binary_expression "(ulonglong)uVar16 >> 0x20" (cast_expression "(ulonglong)uVar16" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "local_c0 = (uint *)uVar16;" (assignment_expression "local_c0 = (uint *)uVar16" identifier = (cast_expression "(uint *)uVar16" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "*(int *)(puVar14 + -0x10) = iStack_d0;" (assignment_expression "*(int *)(puVar14 + -0x10) = iStack_d0" (pointer_expression "*(int *)(puVar14 + -0x10)" * (cast_expression "(int *)(puVar14 + -0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar14 + -0x10)" ( (binary_expression "puVar14 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(uint *)(puVar14 + -0x14) = param_2;" (assignment_expression "*(uint *)(puVar14 + -0x14) = param_2" (pointer_expression "*(uint *)(puVar14 + -0x14)" * (cast_expression "(uint *)(puVar14 + -0x14)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar14 + -0x14)" ( (binary_expression "puVar14 + -0x14" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(puVar14 + -0x18) = iStack_cc;" (assignment_expression "*(int *)(puVar14 + -0x18) = iStack_cc" (pointer_expression "*(int *)(puVar14 + -0x18)" * (cast_expression "(int *)(puVar14 + -0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar14 + -0x18)" ( (binary_expression "puVar14 + -0x18" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(uint **)(puVar14 + -0x1c) = local_c0;" (assignment_expression "*(uint **)(puVar14 + -0x1c) = local_c0" (pointer_expression "*(uint **)(puVar14 + -0x1c)" * (cast_expression "(uint **)(puVar14 + -0x1c)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar14 + -0x1c)" ( (binary_expression "puVar14 + -0x1c" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(puVar14 + -0x20) = iVar10;" (assignment_expression "*(int *)(puVar14 + -0x20) = iVar10" (pointer_expression "*(int *)(puVar14 + -0x20)" * (cast_expression "(int *)(puVar14 + -0x20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar14 + -0x20)" ( (binary_expression "puVar14 + -0x20" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar14 + -0x24) = 0x4ea47;" (assignment_expression "*(undefined4 *)(puVar14 + -0x24) = 0x4ea47" (pointer_expression "*(undefined4 *)(puVar14 + -0x24)" * (cast_expression "(undefined4 *)(puVar14 + -0x24)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar14 + -0x24)" ( (binary_expression "puVar14 + -0x24" identifier + number_literal) )))) = number_literal) ;) (expression_statement "uVar11 = __gmpn_pow_1();" (assignment_expression "uVar11 = __gmpn_pow_1()" identifier = (call_expression "__gmpn_pow_1()" identifier (argument_list "()" ( )))) ;) (expression_statement "uVar16 = CONCAT44(local_124,local_c0);" (assignment_expression "uVar16 = CONCAT44(local_124,local_c0)" identifier = (call_expression "CONCAT44(local_124,local_c0)" identifier (argument_list "(local_124,local_c0)" ( identifier , identifier )))) ;) (if_statement "if ((int)uVar11 <= (int)param_1) {\n        uVar5 = param_1;\n        if (param_1 != uVar11) goto LAB_0004efbf;\n        do {\n          uVar5 = uVar5 - 1;\n          if ((int)uVar5 < 0) {\n            uStack_d8 = 0;\n            uVar16 = CONCAT44(local_124,local_c0);\n            goto LAB_0004e9e0;\n          }\n          uVar13 = *(uint *)(iVar10 + uVar5 * 4);\n        } while (uVar13 == piVar9[uVar5]);\n        if (uVar13 <= (uint)piVar9[uVar5]) goto LAB_0004efbf;\n      }" if (parenthesized_expression "((int)uVar11 <= (int)param_1)" ( (binary_expression "(int)uVar11 <= (int)param_1" (cast_expression "(int)uVar11" ( (type_descriptor "int" primitive_type) ) identifier) <= (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n        uVar5 = param_1;\n        if (param_1 != uVar11) goto LAB_0004efbf;\n        do {\n          uVar5 = uVar5 - 1;\n          if ((int)uVar5 < 0) {\n            uStack_d8 = 0;\n            uVar16 = CONCAT44(local_124,local_c0);\n            goto LAB_0004e9e0;\n          }\n          uVar13 = *(uint *)(iVar10 + uVar5 * 4);\n        } while (uVar13 == piVar9[uVar5]);\n        if (uVar13 <= (uint)piVar9[uVar5]) goto LAB_0004efbf;\n      }" { (expression_statement "uVar5 = param_1;" (assignment_expression "uVar5 = param_1" identifier = identifier) ;) (if_statement "if (param_1 != uVar11) goto LAB_0004efbf;" if (parenthesized_expression "(param_1 != uVar11)" ( (binary_expression "param_1 != uVar11" identifier != identifier) )) (goto_statement "goto LAB_0004efbf;" goto statement_identifier ;)) (do_statement "do {\n          uVar5 = uVar5 - 1;\n          if ((int)uVar5 < 0) {\n            uStack_d8 = 0;\n            uVar16 = CONCAT44(local_124,local_c0);\n            goto LAB_0004e9e0;\n          }\n          uVar13 = *(uint *)(iVar10 + uVar5 * 4);\n        } while (uVar13 == piVar9[uVar5]);" do (compound_statement "{\n          uVar5 = uVar5 - 1;\n          if ((int)uVar5 < 0) {\n            uStack_d8 = 0;\n            uVar16 = CONCAT44(local_124,local_c0);\n            goto LAB_0004e9e0;\n          }\n          uVar13 = *(uint *)(iVar10 + uVar5 * 4);\n        }" { (expression_statement "uVar5 = uVar5 - 1;" (assignment_expression "uVar5 = uVar5 - 1" identifier = (binary_expression "uVar5 - 1" identifier - number_literal)) ;) (if_statement "if ((int)uVar5 < 0) {\n            uStack_d8 = 0;\n            uVar16 = CONCAT44(local_124,local_c0);\n            goto LAB_0004e9e0;\n          }" if (parenthesized_expression "((int)uVar5 < 0)" ( (binary_expression "(int)uVar5 < 0" (cast_expression "(int)uVar5" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n            uStack_d8 = 0;\n            uVar16 = CONCAT44(local_124,local_c0);\n            goto LAB_0004e9e0;\n          }" { (expression_statement "uStack_d8 = 0;" (assignment_expression "uStack_d8 = 0" identifier = number_literal) ;) (expression_statement "uVar16 = CONCAT44(local_124,local_c0);" (assignment_expression "uVar16 = CONCAT44(local_124,local_c0)" identifier = (call_expression "CONCAT44(local_124,local_c0)" identifier (argument_list "(local_124,local_c0)" ( identifier , identifier )))) ;) (goto_statement "goto LAB_0004e9e0;" goto statement_identifier ;) })) (expression_statement "uVar13 = *(uint *)(iVar10 + uVar5 * 4);" (assignment_expression "uVar13 = *(uint *)(iVar10 + uVar5 * 4)" identifier = (pointer_expression "*(uint *)(iVar10 + uVar5 * 4)" * (cast_expression "(uint *)(iVar10 + uVar5 * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar10 + uVar5 * 4)" ( (binary_expression "iVar10 + uVar5 * 4" identifier + (binary_expression "uVar5 * 4" identifier * number_literal)) ))))) ;) }) while (parenthesized_expression "(uVar13 == piVar9[uVar5])" ( (binary_expression "uVar13 == piVar9[uVar5]" identifier == (subscript_expression "piVar9[uVar5]" identifier [ identifier ])) )) ;) (if_statement "if (uVar13 <= (uint)piVar9[uVar5]) goto LAB_0004efbf;" if (parenthesized_expression "(uVar13 <= (uint)piVar9[uVar5])" ( (binary_expression "uVar13 <= (uint)piVar9[uVar5]" identifier <= (cast_expression "(uint)piVar9[uVar5]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "piVar9[uVar5]" identifier [ identifier ]))) )) (goto_statement "goto LAB_0004efbf;" goto statement_identifier ;)) })) (do_statement "do {\n        iVar15 = *local_c0;\n        *local_c0 = *local_c0 + -1;\n        local_c0 = (uint *)((int *)local_c0 + 1);\n      } while (iVar15 == 0);" do (compound_statement "{\n        iVar15 = *local_c0;\n        *local_c0 = *local_c0 + -1;\n        local_c0 = (uint *)((int *)local_c0 + 1);\n      }" { (expression_statement "iVar15 = *local_c0;" (assignment_expression "iVar15 = *local_c0" identifier = (pointer_expression "*local_c0" * identifier)) ;) (expression_statement "*local_c0 = *local_c0 + -1;" (assignment_expression "*local_c0 = *local_c0 + -1" (pointer_expression "*local_c0" * identifier) = (binary_expression "*local_c0 + -1" (pointer_expression "*local_c0" * identifier) + number_literal)) ;) (expression_statement "local_c0 = (uint *)((int *)local_c0 + 1);" (assignment_expression "local_c0 = (uint *)((int *)local_c0 + 1)" identifier = (cast_expression "(uint *)((int *)local_c0 + 1)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int *)local_c0 + 1)" ( (binary_expression "(int *)local_c0 + 1" (cast_expression "(int *)local_c0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) + number_literal) )))) ;) }) while (parenthesized_expression "(iVar15 == 0)" ( (binary_expression "iVar15 == 0" identifier == number_literal) )) ;) }) while (parenthesized_expression "( true )" ( true )) ;) })) (labeled_statement "LAB_0004e9e0:\n  local_124 = (int *)((ulonglong)uVar16 >> 0x20);" statement_identifier : (expression_statement "local_124 = (int *)((ulonglong)uVar16 >> 0x20);" (assignment_expression "local_124 = (int *)((ulonglong)uVar16 >> 0x20)" identifier = (cast_expression "(int *)((ulonglong)uVar16 >> 0x20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((ulonglong)uVar16 >> 0x20)" ( (binary_expression "(ulonglong)uVar16 >> 0x20" (cast_expression "(ulonglong)uVar16" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;)) (expression_statement "local_c0 = (uint *)uVar16;" (assignment_expression "local_c0 = (uint *)uVar16" identifier = (cast_expression "(uint *)uVar16" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (if_statement "if (iStack_a8 != 0) {\n    *(int *)(puVar14 + -0x10) = iStack_a8;\n    *(undefined4 *)(puVar14 + -0x14) = 0x4f1a9;\n    __gmp_tmp_reentrant_free();\n    uVar16 = CONCAT44(local_124,local_c0);\n  }" if (parenthesized_expression "(iStack_a8 != 0)" ( (binary_expression "iStack_a8 != 0" identifier != number_literal) )) (compound_statement "{\n    *(int *)(puVar14 + -0x10) = iStack_a8;\n    *(undefined4 *)(puVar14 + -0x14) = 0x4f1a9;\n    __gmp_tmp_reentrant_free();\n    uVar16 = CONCAT44(local_124,local_c0);\n  }" { (expression_statement "*(int *)(puVar14 + -0x10) = iStack_a8;" (assignment_expression "*(int *)(puVar14 + -0x10) = iStack_a8" (pointer_expression "*(int *)(puVar14 + -0x10)" * (cast_expression "(int *)(puVar14 + -0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar14 + -0x10)" ( (binary_expression "puVar14 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar14 + -0x14) = 0x4f1a9;" (assignment_expression "*(undefined4 *)(puVar14 + -0x14) = 0x4f1a9" (pointer_expression "*(undefined4 *)(puVar14 + -0x14)" * (cast_expression "(undefined4 *)(puVar14 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar14 + -0x14)" ( (binary_expression "puVar14 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "__gmp_tmp_reentrant_free();" (call_expression "__gmp_tmp_reentrant_free()" identifier (argument_list "()" ( ))) ;) (expression_statement "uVar16 = CONCAT44(local_124,local_c0);" (assignment_expression "uVar16 = CONCAT44(local_124,local_c0)" identifier = (call_expression "CONCAT44(local_124,local_c0)" identifier (argument_list "(local_124,local_c0)" ( identifier , identifier )))) ;) })) (labeled_statement "LAB_0004e9ee:\n  local_124 = (int *)((ulonglong)uVar16 >> 0x20);" statement_identifier : (expression_statement "local_124 = (int *)((ulonglong)uVar16 >> 0x20);" (assignment_expression "local_124 = (int *)((ulonglong)uVar16 >> 0x20)" identifier = (cast_expression "(int *)((ulonglong)uVar16 >> 0x20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((ulonglong)uVar16 >> 0x20)" ( (binary_expression "(ulonglong)uVar16 >> 0x20" (cast_expression "(ulonglong)uVar16" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;)) (expression_statement "local_c0 = (uint *)uVar16;" (assignment_expression "local_c0 = (uint *)uVar16" identifier = (cast_expression "(uint *)uVar16" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (if_statement "if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return uStack_d8;\n  }" if (parenthesized_expression "(local_20 == *(int *)(in_GS_OFFSET + 0x14))" ( (binary_expression "local_20 == *(int *)(in_GS_OFFSET + 0x14)" identifier == (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) )) (compound_statement "{\n    return uStack_d8;\n  }" { (return_statement "return uStack_d8;" return identifier ;) })) comment (expression_statement "*(undefined **)(puVar14 + -4) = &UNK_0004f214;" (assignment_expression "*(undefined **)(puVar14 + -4) = &UNK_0004f214" (pointer_expression "*(undefined **)(puVar14 + -4)" * (cast_expression "(undefined **)(puVar14 + -4)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar14 + -4)" ( (binary_expression "puVar14 + -4" identifier + number_literal) )))) = (pointer_expression "&UNK_0004f214" & identifier)) ;) (expression_statement "FUN_0007ebe0();" (call_expression "FUN_0007ebe0()" identifier (argument_list "()" ( ))) ;) (labeled_statement "LAB_0004eb66:\n  iStack_108 = iStack_dc;" statement_identifier : (expression_statement "iStack_108 = iStack_dc;" (assignment_expression "iStack_108 = iStack_dc" identifier = identifier) ;)) (expression_statement "iStack_10c = iStack_104;" (assignment_expression "iStack_10c = iStack_104" identifier = identifier) ;) (expression_statement "uStack_e8 = puStack_fc[iStack_104] - puStack_fc[iStack_104 + 1];" (assignment_expression "uStack_e8 = puStack_fc[iStack_104] - puStack_fc[iStack_104 + 1]" identifier = (binary_expression "puStack_fc[iStack_104] - puStack_fc[iStack_104 + 1]" (subscript_expression "puStack_fc[iStack_104]" identifier [ identifier ]) - (subscript_expression "puStack_fc[iStack_104 + 1]" identifier [ (binary_expression "iStack_104 + 1" identifier + number_literal) ]))) ;) (expression_statement "iStack_118 = puStack_fc[iStack_104 + 1] - puStack_fc[iStack_104];" (assignment_expression "iStack_118 = puStack_fc[iStack_104 + 1] - puStack_fc[iStack_104]" identifier = (binary_expression "puStack_fc[iStack_104 + 1] - puStack_fc[iStack_104]" (subscript_expression "puStack_fc[iStack_104 + 1]" identifier [ (binary_expression "iStack_104 + 1" identifier + number_literal) ]) - (subscript_expression "puStack_fc[iStack_104]" identifier [ identifier ]))) ;) (expression_statement "uStack_f0 = uStack_e8 >> 5;" (assignment_expression "uStack_f0 = uStack_e8 >> 5" identifier = (binary_expression "uStack_e8 >> 5" identifier >> number_literal)) ;) (expression_statement "uStack_f4 = iStack_118 + uStack_e4;" (assignment_expression "uStack_f4 = iStack_118 + uStack_e4" identifier = (binary_expression "iStack_118 + uStack_e4" identifier + identifier)) ;) (expression_statement "uVar5 = uStack_f4 >> 5;" (assignment_expression "uVar5 = uStack_f4 >> 5" identifier = (binary_expression "uStack_f4 >> 5" identifier >> number_literal)) ;) (expression_statement "puStack_11c = (uint *)((uStack_e4 - 1 >> 5) - uVar5);" (assignment_expression "puStack_11c = (uint *)((uStack_e4 - 1 >> 5) - uVar5)" identifier = (cast_expression "(uint *)((uStack_e4 - 1 >> 5) - uVar5)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((uStack_e4 - 1 >> 5) - uVar5)" ( (binary_expression "(uStack_e4 - 1 >> 5) - uVar5" (parenthesized_expression "(uStack_e4 - 1 >> 5)" ( (binary_expression "uStack_e4 - 1 >> 5" (binary_expression "uStack_e4 - 1" identifier - number_literal) >> number_literal) )) - identifier) )))) ;) (expression_statement "iStack_110 = (int)puStack_11c + 1;" (assignment_expression "iStack_110 = (int)puStack_11c + 1" identifier = (binary_expression "(int)puStack_11c + 1" (cast_expression "(int)puStack_11c" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal)) ;) (expression_statement "uStack_e4 = uVar5;" (assignment_expression "uStack_e4 = uVar5" identifier = identifier) ;) (expression_statement "iStack_dc = iVar15;" (assignment_expression "iStack_dc = iVar15" identifier = identifier) ;) (if_statement "if (iVar6 != 0) {\n    *(int *)(puVar14 + -4) = iVar6;\n    *(int *)(puVar14 + -8) = iStack_dc;\n    *(int *)(puVar14 + -0xc) = iVar10;\n    *(int *)(puVar14 + -0x10) = iVar10;\n    uStack_d8 = iVar6;\n    *(undefined4 *)(puVar14 + -0x14) = 0x4ee32;\n    iVar10 = __gmpn_sub_n();\n    if ((iVar10 != 0) && (uVar11 != uStack_d8)) {\n      piVar9 = (int *)(iStack_d4 + uStack_d8 * 4);\n      iVar10 = *piVar9;\n      *piVar9 = iVar10 + -1;\n      if ((iVar10 == 0) && ((int)(uStack_d8 + 1) < (int)uVar11)) {\n        piVar9 = (int *)(iStack_d4 + (uStack_d8 + 1) * 4);\n        iVar15 = uStack_d8 + 2;\n        iVar10 = *piVar9;\n        *piVar9 = iVar10 + -1;\n        for (; (iVar10 == 0 && (uVar11 != iVar15)); iVar15 = iVar15 + 1) {\n          iVar10 = *(int *)(iStack_d4 + iVar15 * 4);\n          *(int *)(iStack_d4 + iVar15 * 4) = iVar10 + -1;\n        }\n      }\n    }\n  }" if (parenthesized_expression "(iVar6 != 0)" ( (binary_expression "iVar6 != 0" identifier != number_literal) )) (compound_statement "{\n    *(int *)(puVar14 + -4) = iVar6;\n    *(int *)(puVar14 + -8) = iStack_dc;\n    *(int *)(puVar14 + -0xc) = iVar10;\n    *(int *)(puVar14 + -0x10) = iVar10;\n    uStack_d8 = iVar6;\n    *(undefined4 *)(puVar14 + -0x14) = 0x4ee32;\n    iVar10 = __gmpn_sub_n();\n    if ((iVar10 != 0) && (uVar11 != uStack_d8)) {\n      piVar9 = (int *)(iStack_d4 + uStack_d8 * 4);\n      iVar10 = *piVar9;\n      *piVar9 = iVar10 + -1;\n      if ((iVar10 == 0) && ((int)(uStack_d8 + 1) < (int)uVar11)) {\n        piVar9 = (int *)(iStack_d4 + (uStack_d8 + 1) * 4);\n        iVar15 = uStack_d8 + 2;\n        iVar10 = *piVar9;\n        *piVar9 = iVar10 + -1;\n        for (; (iVar10 == 0 && (uVar11 != iVar15)); iVar15 = iVar15 + 1) {\n          iVar10 = *(int *)(iStack_d4 + iVar15 * 4);\n          *(int *)(iStack_d4 + iVar15 * 4) = iVar10 + -1;\n        }\n      }\n    }\n  }" { (expression_statement "*(int *)(puVar14 + -4) = iVar6;" (assignment_expression "*(int *)(puVar14 + -4) = iVar6" (pointer_expression "*(int *)(puVar14 + -4)" * (cast_expression "(int *)(puVar14 + -4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar14 + -4)" ( (binary_expression "puVar14 + -4" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(puVar14 + -8) = iStack_dc;" (assignment_expression "*(int *)(puVar14 + -8) = iStack_dc" (pointer_expression "*(int *)(puVar14 + -8)" * (cast_expression "(int *)(puVar14 + -8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar14 + -8)" ( (binary_expression "puVar14 + -8" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(puVar14 + -0xc) = iVar10;" (assignment_expression "*(int *)(puVar14 + -0xc) = iVar10" (pointer_expression "*(int *)(puVar14 + -0xc)" * (cast_expression "(int *)(puVar14 + -0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar14 + -0xc)" ( (binary_expression "puVar14 + -0xc" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(puVar14 + -0x10) = iVar10;" (assignment_expression "*(int *)(puVar14 + -0x10) = iVar10" (pointer_expression "*(int *)(puVar14 + -0x10)" * (cast_expression "(int *)(puVar14 + -0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar14 + -0x10)" ( (binary_expression "puVar14 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "uStack_d8 = iVar6;" (assignment_expression "uStack_d8 = iVar6" identifier = identifier) ;) (expression_statement "*(undefined4 *)(puVar14 + -0x14) = 0x4ee32;" (assignment_expression "*(undefined4 *)(puVar14 + -0x14) = 0x4ee32" (pointer_expression "*(undefined4 *)(puVar14 + -0x14)" * (cast_expression "(undefined4 *)(puVar14 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar14 + -0x14)" ( (binary_expression "puVar14 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "iVar10 = __gmpn_sub_n();" (assignment_expression "iVar10 = __gmpn_sub_n()" identifier = (call_expression "__gmpn_sub_n()" identifier (argument_list "()" ( )))) ;) (if_statement "if ((iVar10 != 0) && (uVar11 != uStack_d8)) {\n      piVar9 = (int *)(iStack_d4 + uStack_d8 * 4);\n      iVar10 = *piVar9;\n      *piVar9 = iVar10 + -1;\n      if ((iVar10 == 0) && ((int)(uStack_d8 + 1) < (int)uVar11)) {\n        piVar9 = (int *)(iStack_d4 + (uStack_d8 + 1) * 4);\n        iVar15 = uStack_d8 + 2;\n        iVar10 = *piVar9;\n        *piVar9 = iVar10 + -1;\n        for (; (iVar10 == 0 && (uVar11 != iVar15)); iVar15 = iVar15 + 1) {\n          iVar10 = *(int *)(iStack_d4 + iVar15 * 4);\n          *(int *)(iStack_d4 + iVar15 * 4) = iVar10 + -1;\n        }\n      }\n    }" if (parenthesized_expression "((iVar10 != 0) && (uVar11 != uStack_d8))" ( (binary_expression "(iVar10 != 0) && (uVar11 != uStack_d8)" (parenthesized_expression "(iVar10 != 0)" ( (binary_expression "iVar10 != 0" identifier != number_literal) )) && (parenthesized_expression "(uVar11 != uStack_d8)" ( (binary_expression "uVar11 != uStack_d8" identifier != identifier) ))) )) (compound_statement "{\n      piVar9 = (int *)(iStack_d4 + uStack_d8 * 4);\n      iVar10 = *piVar9;\n      *piVar9 = iVar10 + -1;\n      if ((iVar10 == 0) && ((int)(uStack_d8 + 1) < (int)uVar11)) {\n        piVar9 = (int *)(iStack_d4 + (uStack_d8 + 1) * 4);\n        iVar15 = uStack_d8 + 2;\n        iVar10 = *piVar9;\n        *piVar9 = iVar10 + -1;\n        for (; (iVar10 == 0 && (uVar11 != iVar15)); iVar15 = iVar15 + 1) {\n          iVar10 = *(int *)(iStack_d4 + iVar15 * 4);\n          *(int *)(iStack_d4 + iVar15 * 4) = iVar10 + -1;\n        }\n      }\n    }" { (expression_statement "piVar9 = (int *)(iStack_d4 + uStack_d8 * 4);" (assignment_expression "piVar9 = (int *)(iStack_d4 + uStack_d8 * 4)" identifier = (cast_expression "(int *)(iStack_d4 + uStack_d8 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iStack_d4 + uStack_d8 * 4)" ( (binary_expression "iStack_d4 + uStack_d8 * 4" identifier + (binary_expression "uStack_d8 * 4" identifier * number_literal)) )))) ;) (expression_statement "iVar10 = *piVar9;" (assignment_expression "iVar10 = *piVar9" identifier = (pointer_expression "*piVar9" * identifier)) ;) (expression_statement "*piVar9 = iVar10 + -1;" (assignment_expression "*piVar9 = iVar10 + -1" (pointer_expression "*piVar9" * identifier) = (binary_expression "iVar10 + -1" identifier + number_literal)) ;) (if_statement "if ((iVar10 == 0) && ((int)(uStack_d8 + 1) < (int)uVar11)) {\n        piVar9 = (int *)(iStack_d4 + (uStack_d8 + 1) * 4);\n        iVar15 = uStack_d8 + 2;\n        iVar10 = *piVar9;\n        *piVar9 = iVar10 + -1;\n        for (; (iVar10 == 0 && (uVar11 != iVar15)); iVar15 = iVar15 + 1) {\n          iVar10 = *(int *)(iStack_d4 + iVar15 * 4);\n          *(int *)(iStack_d4 + iVar15 * 4) = iVar10 + -1;\n        }\n      }" if (parenthesized_expression "((iVar10 == 0) && ((int)(uStack_d8 + 1) < (int)uVar11))" ( (binary_expression "(iVar10 == 0) && ((int)(uStack_d8 + 1) < (int)uVar11)" (parenthesized_expression "(iVar10 == 0)" ( (binary_expression "iVar10 == 0" identifier == number_literal) )) && (parenthesized_expression "((int)(uStack_d8 + 1) < (int)uVar11)" ( (binary_expression "(int)(uStack_d8 + 1) < (int)uVar11" (cast_expression "(int)(uStack_d8 + 1)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(uStack_d8 + 1)" ( (binary_expression "uStack_d8 + 1" identifier + number_literal) ))) < (cast_expression "(int)uVar11" ( (type_descriptor "int" primitive_type) ) identifier)) ))) )) (compound_statement "{\n        piVar9 = (int *)(iStack_d4 + (uStack_d8 + 1) * 4);\n        iVar15 = uStack_d8 + 2;\n        iVar10 = *piVar9;\n        *piVar9 = iVar10 + -1;\n        for (; (iVar10 == 0 && (uVar11 != iVar15)); iVar15 = iVar15 + 1) {\n          iVar10 = *(int *)(iStack_d4 + iVar15 * 4);\n          *(int *)(iStack_d4 + iVar15 * 4) = iVar10 + -1;\n        }\n      }" { (expression_statement "piVar9 = (int *)(iStack_d4 + (uStack_d8 + 1) * 4);" (assignment_expression "piVar9 = (int *)(iStack_d4 + (uStack_d8 + 1) * 4)" identifier = (cast_expression "(int *)(iStack_d4 + (uStack_d8 + 1) * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iStack_d4 + (uStack_d8 + 1) * 4)" ( (binary_expression "iStack_d4 + (uStack_d8 + 1) * 4" identifier + (binary_expression "(uStack_d8 + 1) * 4" (parenthesized_expression "(uStack_d8 + 1)" ( (binary_expression "uStack_d8 + 1" identifier + number_literal) )) * number_literal)) )))) ;) (expression_statement "iVar15 = uStack_d8 + 2;" (assignment_expression "iVar15 = uStack_d8 + 2" identifier = (binary_expression "uStack_d8 + 2" identifier + number_literal)) ;) (expression_statement "iVar10 = *piVar9;" (assignment_expression "iVar10 = *piVar9" identifier = (pointer_expression "*piVar9" * identifier)) ;) (expression_statement "*piVar9 = iVar10 + -1;" (assignment_expression "*piVar9 = iVar10 + -1" (pointer_expression "*piVar9" * identifier) = (binary_expression "iVar10 + -1" identifier + number_literal)) ;) (for_statement "for (; (iVar10 == 0 && (uVar11 != iVar15)); iVar15 = iVar15 + 1) {\n          iVar10 = *(int *)(iStack_d4 + iVar15 * 4);\n          *(int *)(iStack_d4 + iVar15 * 4) = iVar10 + -1;\n        }" for ( ; (parenthesized_expression "(iVar10 == 0 && (uVar11 != iVar15))" ( (binary_expression "iVar10 == 0 && (uVar11 != iVar15)" (binary_expression "iVar10 == 0" identifier == number_literal) && (parenthesized_expression "(uVar11 != iVar15)" ( (binary_expression "uVar11 != iVar15" identifier != identifier) ))) )) ; (assignment_expression "iVar15 = iVar15 + 1" identifier = (binary_expression "iVar15 + 1" identifier + number_literal)) ) (compound_statement "{\n          iVar10 = *(int *)(iStack_d4 + iVar15 * 4);\n          *(int *)(iStack_d4 + iVar15 * 4) = iVar10 + -1;\n        }" { (expression_statement "iVar10 = *(int *)(iStack_d4 + iVar15 * 4);" (assignment_expression "iVar10 = *(int *)(iStack_d4 + iVar15 * 4)" identifier = (pointer_expression "*(int *)(iStack_d4 + iVar15 * 4)" * (cast_expression "(int *)(iStack_d4 + iVar15 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iStack_d4 + iVar15 * 4)" ( (binary_expression "iStack_d4 + iVar15 * 4" identifier + (binary_expression "iVar15 * 4" identifier * number_literal)) ))))) ;) (expression_statement "*(int *)(iStack_d4 + iVar15 * 4) = iVar10 + -1;" (assignment_expression "*(int *)(iStack_d4 + iVar15 * 4) = iVar10 + -1" (pointer_expression "*(int *)(iStack_d4 + iVar15 * 4)" * (cast_expression "(int *)(iStack_d4 + iVar15 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iStack_d4 + iVar15 * 4)" ( (binary_expression "iStack_d4 + iVar15 * 4" identifier + (binary_expression "iVar15 * 4" identifier * number_literal)) )))) = (binary_expression "iVar10 + -1" identifier + number_literal)) ;) })) })) })) })) (expression_statement "iVar4 = iStack_d4;" (assignment_expression "iVar4 = iStack_d4" identifier = identifier) ;) (expression_statement "iVar15 = iStack_e0;" (assignment_expression "iVar15 = iStack_e0" identifier = identifier) ;) (expression_statement "iVar10 = *(int *)(iStack_d4 + (uVar11 + -1) * 4);" (assignment_expression "iVar10 = *(int *)(iStack_d4 + (uVar11 + -1) * 4)" identifier = (pointer_expression "*(int *)(iStack_d4 + (uVar11 + -1) * 4)" * (cast_expression "(int *)(iStack_d4 + (uVar11 + -1) * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iStack_d4 + (uVar11 + -1) * 4)" ( (binary_expression "iStack_d4 + (uVar11 + -1) * 4" identifier + (binary_expression "(uVar11 + -1) * 4" (parenthesized_expression "(uVar11 + -1)" ( (binary_expression "uVar11 + -1" identifier + number_literal) )) * number_literal)) ))))) ;) (while_statement "while (iVar10 == 0) {\n    iVar10 = *(int *)(iStack_d4 + (uVar11 + -2) * 4);\n    uVar11 = uVar11 + -1;\n  }" while (parenthesized_expression "(iVar10 == 0)" ( (binary_expression "iVar10 == 0" identifier == number_literal) )) (compound_statement "{\n    iVar10 = *(int *)(iStack_d4 + (uVar11 + -2) * 4);\n    uVar11 = uVar11 + -1;\n  }" { (expression_statement "iVar10 = *(int *)(iStack_d4 + (uVar11 + -2) * 4);" (assignment_expression "iVar10 = *(int *)(iStack_d4 + (uVar11 + -2) * 4)" identifier = (pointer_expression "*(int *)(iStack_d4 + (uVar11 + -2) * 4)" * (cast_expression "(int *)(iStack_d4 + (uVar11 + -2) * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iStack_d4 + (uVar11 + -2) * 4)" ( (binary_expression "iStack_d4 + (uVar11 + -2) * 4" identifier + (binary_expression "(uVar11 + -2) * 4" (parenthesized_expression "(uVar11 + -2)" ( (binary_expression "uVar11 + -2" identifier + number_literal) )) * number_literal)) ))))) ;) (expression_statement "uVar11 = uVar11 + -1;" (assignment_expression "uVar11 = uVar11 + -1" identifier = (binary_expression "uVar11 + -1" identifier + number_literal)) ;) })) (expression_statement "uStack_100 = uStack_f0 * 4;" (assignment_expression "uStack_100 = uStack_f0 * 4" identifier = (binary_expression "uStack_f0 * 4" identifier * number_literal)) ;) (expression_statement "puVar7 = (uint *)(iStack_d4 + uStack_f0 * 4);" (assignment_expression "puVar7 = (uint *)(iStack_d4 + uStack_f0 * 4)" identifier = (cast_expression "(uint *)(iStack_d4 + uStack_f0 * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iStack_d4 + uStack_f0 * 4)" ( (binary_expression "iStack_d4 + uStack_f0 * 4" identifier + (binary_expression "uStack_f0 * 4" identifier * number_literal)) )))) ;) (expression_statement "uStack_d8 = uStack_f0 + uVar11;" (assignment_expression "uStack_d8 = uStack_f0 + uVar11" identifier = (binary_expression "uStack_f0 + uVar11" identifier + identifier)) ;) (expression_statement "uVar5 = uStack_e8 & 0x1f;" (assignment_expression "uVar5 = uStack_e8 & 0x1f" identifier = (binary_expression "uStack_e8 & 0x1f" identifier & number_literal)) ;) (expression_statement "uStack_130 = uStack_e4;" (assignment_expression "uStack_130 = uStack_e4" identifier = identifier) ;) (expression_statement "puStack_12c = puVar7;" (assignment_expression "puStack_12c = puVar7" identifier = identifier) ;) (if_statement "if (uVar5 == 0) {\n    uStack_e4 = uVar5;\n    *(uint *)(puVar14 + -8) = uVar11;\n    *(int *)(puVar14 + -0xc) = iStack_d4;\n    *(uint **)(puVar14 + -0x10) = puVar7;\n    pcVar2 = *(code **)(iVar15 + 0x24);\n    *(undefined4 *)(puVar14 + -0x14) = 0x4ed9a;\n    (*pcVar2)();\n  }\n  else {\n    uStack_e4 = uVar5;\n    *(uint *)(puVar14 + -4) = uVar5;\n    *(uint *)(puVar14 + -8) = uVar11;\n    *(int *)(puVar14 + -0xc) = iVar4;\n    iVar10 = iStack_e0;\n    *(uint **)(puVar14 + -0x10) = puVar7;\n    pcVar2 = *(code **)(iVar10 + 0x38);\n    *(undefined4 *)(puVar14 + -0x14) = 0x4ec66;\n    iVar10 = (*pcVar2)();\n    if (iVar10 != 0) {\n      *(int *)(iStack_d4 + uStack_d8 * 4) = iVar10;\n      uStack_d8 = uStack_d8 + 1;\n    }\n  }" if (parenthesized_expression "(uVar5 == 0)" ( (binary_expression "uVar5 == 0" identifier == number_literal) )) (compound_statement "{\n    uStack_e4 = uVar5;\n    *(uint *)(puVar14 + -8) = uVar11;\n    *(int *)(puVar14 + -0xc) = iStack_d4;\n    *(uint **)(puVar14 + -0x10) = puVar7;\n    pcVar2 = *(code **)(iVar15 + 0x24);\n    *(undefined4 *)(puVar14 + -0x14) = 0x4ed9a;\n    (*pcVar2)();\n  }" { (expression_statement "uStack_e4 = uVar5;" (assignment_expression "uStack_e4 = uVar5" identifier = identifier) ;) (expression_statement "*(uint *)(puVar14 + -8) = uVar11;" (assignment_expression "*(uint *)(puVar14 + -8) = uVar11" (pointer_expression "*(uint *)(puVar14 + -8)" * (cast_expression "(uint *)(puVar14 + -8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar14 + -8)" ( (binary_expression "puVar14 + -8" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(puVar14 + -0xc) = iStack_d4;" (assignment_expression "*(int *)(puVar14 + -0xc) = iStack_d4" (pointer_expression "*(int *)(puVar14 + -0xc)" * (cast_expression "(int *)(puVar14 + -0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar14 + -0xc)" ( (binary_expression "puVar14 + -0xc" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(uint **)(puVar14 + -0x10) = puVar7;" (assignment_expression "*(uint **)(puVar14 + -0x10) = puVar7" (pointer_expression "*(uint **)(puVar14 + -0x10)" * (cast_expression "(uint **)(puVar14 + -0x10)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar14 + -0x10)" ( (binary_expression "puVar14 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "pcVar2 = *(code **)(iVar15 + 0x24);" (assignment_expression "pcVar2 = *(code **)(iVar15 + 0x24)" identifier = (pointer_expression "*(code **)(iVar15 + 0x24)" * (cast_expression "(code **)(iVar15 + 0x24)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar15 + 0x24)" ( (binary_expression "iVar15 + 0x24" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar14 + -0x14) = 0x4ed9a;" (assignment_expression "*(undefined4 *)(puVar14 + -0x14) = 0x4ed9a" (pointer_expression "*(undefined4 *)(puVar14 + -0x14)" * (cast_expression "(undefined4 *)(puVar14 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar14 + -0x14)" ( (binary_expression "puVar14 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "(*pcVar2)();" (call_expression "(*pcVar2)()" (parenthesized_expression "(*pcVar2)" ( (pointer_expression "*pcVar2" * identifier) )) (argument_list "()" ( ))) ;) }) (else_clause "else {\n    uStack_e4 = uVar5;\n    *(uint *)(puVar14 + -4) = uVar5;\n    *(uint *)(puVar14 + -8) = uVar11;\n    *(int *)(puVar14 + -0xc) = iVar4;\n    iVar10 = iStack_e0;\n    *(uint **)(puVar14 + -0x10) = puVar7;\n    pcVar2 = *(code **)(iVar10 + 0x38);\n    *(undefined4 *)(puVar14 + -0x14) = 0x4ec66;\n    iVar10 = (*pcVar2)();\n    if (iVar10 != 0) {\n      *(int *)(iStack_d4 + uStack_d8 * 4) = iVar10;\n      uStack_d8 = uStack_d8 + 1;\n    }\n  }" else (compound_statement "{\n    uStack_e4 = uVar5;\n    *(uint *)(puVar14 + -4) = uVar5;\n    *(uint *)(puVar14 + -8) = uVar11;\n    *(int *)(puVar14 + -0xc) = iVar4;\n    iVar10 = iStack_e0;\n    *(uint **)(puVar14 + -0x10) = puVar7;\n    pcVar2 = *(code **)(iVar10 + 0x38);\n    *(undefined4 *)(puVar14 + -0x14) = 0x4ec66;\n    iVar10 = (*pcVar2)();\n    if (iVar10 != 0) {\n      *(int *)(iStack_d4 + uStack_d8 * 4) = iVar10;\n      uStack_d8 = uStack_d8 + 1;\n    }\n  }" { (expression_statement "uStack_e4 = uVar5;" (assignment_expression "uStack_e4 = uVar5" identifier = identifier) ;) (expression_statement "*(uint *)(puVar14 + -4) = uVar5;" (assignment_expression "*(uint *)(puVar14 + -4) = uVar5" (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) ;) (expression_statement "*(uint *)(puVar14 + -8) = uVar11;" (assignment_expression "*(uint *)(puVar14 + -8) = uVar11" (pointer_expression "*(uint *)(puVar14 + -8)" * (cast_expression "(uint *)(puVar14 + -8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar14 + -8)" ( (binary_expression "puVar14 + -8" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(puVar14 + -0xc) = iVar4;" (assignment_expression "*(int *)(puVar14 + -0xc) = iVar4" (pointer_expression "*(int *)(puVar14 + -0xc)" * (cast_expression "(int *)(puVar14 + -0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar14 + -0xc)" ( (binary_expression "puVar14 + -0xc" identifier + number_literal) )))) = identifier) ;) (expression_statement "iVar10 = iStack_e0;" (assignment_expression "iVar10 = iStack_e0" identifier = identifier) ;) (expression_statement "*(uint **)(puVar14 + -0x10) = puVar7;" (assignment_expression "*(uint **)(puVar14 + -0x10) = puVar7" (pointer_expression "*(uint **)(puVar14 + -0x10)" * (cast_expression "(uint **)(puVar14 + -0x10)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar14 + -0x10)" ( (binary_expression "puVar14 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "pcVar2 = *(code **)(iVar10 + 0x38);" (assignment_expression "pcVar2 = *(code **)(iVar10 + 0x38)" identifier = (pointer_expression "*(code **)(iVar10 + 0x38)" * (cast_expression "(code **)(iVar10 + 0x38)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar10 + 0x38)" ( (binary_expression "iVar10 + 0x38" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar14 + -0x14) = 0x4ec66;" (assignment_expression "*(undefined4 *)(puVar14 + -0x14) = 0x4ec66" (pointer_expression "*(undefined4 *)(puVar14 + -0x14)" * (cast_expression "(undefined4 *)(puVar14 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar14 + -0x14)" ( (binary_expression "puVar14 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "iVar10 = (*pcVar2)();" (assignment_expression "iVar10 = (*pcVar2)()" identifier = (call_expression "(*pcVar2)()" (parenthesized_expression "(*pcVar2)" ( (pointer_expression "*pcVar2" * identifier) )) (argument_list "()" ( )))) ;) (if_statement "if (iVar10 != 0) {\n      *(int *)(iStack_d4 + uStack_d8 * 4) = iVar10;\n      uStack_d8 = uStack_d8 + 1;\n    }" if (parenthesized_expression "(iVar10 != 0)" ( (binary_expression "iVar10 != 0" identifier != number_literal) )) (compound_statement "{\n      *(int *)(iStack_d4 + uStack_d8 * 4) = iVar10;\n      uStack_d8 = uStack_d8 + 1;\n    }" { (expression_statement "*(int *)(iStack_d4 + uStack_d8 * 4) = iVar10;" (assignment_expression "*(int *)(iStack_d4 + uStack_d8 * 4) = iVar10" (pointer_expression "*(int *)(iStack_d4 + uStack_d8 * 4)" * (cast_expression "(int *)(iStack_d4 + uStack_d8 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iStack_d4 + uStack_d8 * 4)" ( (binary_expression "iStack_d4 + uStack_d8 * 4" identifier + (binary_expression "uStack_d8 * 4" identifier * number_literal)) )))) = identifier) ;) (expression_statement "uStack_d8 = uStack_d8 + 1;" (assignment_expression "uStack_d8 = uStack_d8 + 1" identifier = (binary_expression "uStack_d8 + 1" identifier + number_literal)) ;) })) }))) (expression_statement "uVar11 = *puStack_12c;" (assignment_expression "uVar11 = *puStack_12c" identifier = (pointer_expression "*puStack_12c" * identifier)) ;) (expression_statement "uVar5 = uStack_130;" (assignment_expression "uVar5 = uStack_130" identifier = identifier) ;) (expression_statement "puVar7 = puStack_12c;" (assignment_expression "puVar7 = puStack_12c" identifier = identifier) ;) (expression_statement "puVar12 = puStack_11c;" (assignment_expression "puVar12 = puStack_11c" identifier = identifier) ;) (if_statement "if ((int)uStack_f0 < (int)puStack_11c) {\n    uStack_114 = *(undefined4 *)(iStack_d4 + uStack_100 + 4);\n  }" if (parenthesized_expression "((int)uStack_f0 < (int)puStack_11c)" ( (binary_expression "(int)uStack_f0 < (int)puStack_11c" (cast_expression "(int)uStack_f0" ( (type_descriptor "int" primitive_type) ) identifier) < (cast_expression "(int)puStack_11c" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n    uStack_114 = *(undefined4 *)(iStack_d4 + uStack_100 + 4);\n  }" { (expression_statement "uStack_114 = *(undefined4 *)(iStack_d4 + uStack_100 + 4);" (assignment_expression "uStack_114 = *(undefined4 *)(iStack_d4 + uStack_100 + 4)" identifier = (pointer_expression "*(undefined4 *)(iStack_d4 + uStack_100 + 4)" * (cast_expression "(undefined4 *)(iStack_d4 + uStack_100 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iStack_d4 + uStack_100 + 4)" ( (binary_expression "iStack_d4 + uStack_100 + 4" (binary_expression "iStack_d4 + uStack_100" identifier + identifier) + number_literal) ))))) ;) })) (labeled_statement "LAB_0004e83d:\n  piVar9 = local_f8 + uVar5;" statement_identifier : (expression_statement "piVar9 = local_f8 + uVar5;" (assignment_expression "piVar9 = local_f8 + uVar5" identifier = (binary_expression "local_f8 + uVar5" identifier + identifier)) ;)) (expression_statement "puStack_11c = puVar7;" (assignment_expression "puStack_11c = puVar7" identifier = identifier) ;) (if_statement "if ((uStack_f4 & 0x1f) == 0) {\n    *(int *)(puVar14 + -8) = iStack_110;\n    *(int **)(puVar14 + -0xc) = piVar9;\n    *(int *)(puVar14 + -0x10) = iStack_d4;\n    pcVar2 = *(code **)(iStack_e0 + 0x28);\n    *(undefined4 *)(puVar14 + -0x14) = 0x4ed09;\n    (*pcVar2)();\n  }\n  else {\n    *(uint *)(puVar14 + -4) = uStack_f4 & 0x1f;\n    *(int *)(puVar14 + -8) = iStack_110;\n    *(int **)(puVar14 + -0xc) = piVar9;\n    iVar10 = iStack_e0;\n    *(int *)(puVar14 + -0x10) = iStack_d4;\n    pcVar2 = *(code **)(iVar10 + 0x80);\n    *(undefined4 *)(puVar14 + -0x14) = 0x4e875;\n    (*pcVar2)();\n  }" if (parenthesized_expression "((uStack_f4 & 0x1f) == 0)" ( (binary_expression "(uStack_f4 & 0x1f) == 0" (parenthesized_expression "(uStack_f4 & 0x1f)" ( (binary_expression "uStack_f4 & 0x1f" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n    *(int *)(puVar14 + -8) = iStack_110;\n    *(int **)(puVar14 + -0xc) = piVar9;\n    *(int *)(puVar14 + -0x10) = iStack_d4;\n    pcVar2 = *(code **)(iStack_e0 + 0x28);\n    *(undefined4 *)(puVar14 + -0x14) = 0x4ed09;\n    (*pcVar2)();\n  }" { (expression_statement "*(int *)(puVar14 + -8) = iStack_110;" (assignment_expression "*(int *)(puVar14 + -8) = iStack_110" (pointer_expression "*(int *)(puVar14 + -8)" * (cast_expression "(int *)(puVar14 + -8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar14 + -8)" ( (binary_expression "puVar14 + -8" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int **)(puVar14 + -0xc) = piVar9;" (assignment_expression "*(int **)(puVar14 + -0xc) = piVar9" (pointer_expression "*(int **)(puVar14 + -0xc)" * (cast_expression "(int **)(puVar14 + -0xc)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar14 + -0xc)" ( (binary_expression "puVar14 + -0xc" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(puVar14 + -0x10) = iStack_d4;" (assignment_expression "*(int *)(puVar14 + -0x10) = iStack_d4" (pointer_expression "*(int *)(puVar14 + -0x10)" * (cast_expression "(int *)(puVar14 + -0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar14 + -0x10)" ( (binary_expression "puVar14 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "pcVar2 = *(code **)(iStack_e0 + 0x28);" (assignment_expression "pcVar2 = *(code **)(iStack_e0 + 0x28)" identifier = (pointer_expression "*(code **)(iStack_e0 + 0x28)" * (cast_expression "(code **)(iStack_e0 + 0x28)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iStack_e0 + 0x28)" ( (binary_expression "iStack_e0 + 0x28" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar14 + -0x14) = 0x4ed09;" (assignment_expression "*(undefined4 *)(puVar14 + -0x14) = 0x4ed09" (pointer_expression "*(undefined4 *)(puVar14 + -0x14)" * (cast_expression "(undefined4 *)(puVar14 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar14 + -0x14)" ( (binary_expression "puVar14 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "(*pcVar2)();" (call_expression "(*pcVar2)()" (parenthesized_expression "(*pcVar2)" ( (pointer_expression "*pcVar2" * identifier) )) (argument_list "()" ( ))) ;) }) (else_clause "else {\n    *(uint *)(puVar14 + -4) = uStack_f4 & 0x1f;\n    *(int *)(puVar14 + -8) = iStack_110;\n    *(int **)(puVar14 + -0xc) = piVar9;\n    iVar10 = iStack_e0;\n    *(int *)(puVar14 + -0x10) = iStack_d4;\n    pcVar2 = *(code **)(iVar10 + 0x80);\n    *(undefined4 *)(puVar14 + -0x14) = 0x4e875;\n    (*pcVar2)();\n  }" else (compound_statement "{\n    *(uint *)(puVar14 + -4) = uStack_f4 & 0x1f;\n    *(int *)(puVar14 + -8) = iStack_110;\n    *(int **)(puVar14 + -0xc) = piVar9;\n    iVar10 = iStack_e0;\n    *(int *)(puVar14 + -0x10) = iStack_d4;\n    pcVar2 = *(code **)(iVar10 + 0x80);\n    *(undefined4 *)(puVar14 + -0x14) = 0x4e875;\n    (*pcVar2)();\n  }" { (expression_statement "*(uint *)(puVar14 + -4) = uStack_f4 & 0x1f;" (assignment_expression "*(uint *)(puVar14 + -4) = uStack_f4 & 0x1f" (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) )))) = (binary_expression "uStack_f4 & 0x1f" identifier & number_literal)) ;) (expression_statement "*(int *)(puVar14 + -8) = iStack_110;" (assignment_expression "*(int *)(puVar14 + -8) = iStack_110" (pointer_expression "*(int *)(puVar14 + -8)" * (cast_expression "(int *)(puVar14 + -8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar14 + -8)" ( (binary_expression "puVar14 + -8" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int **)(puVar14 + -0xc) = piVar9;" (assignment_expression "*(int **)(puVar14 + -0xc) = piVar9" (pointer_expression "*(int **)(puVar14 + -0xc)" * (cast_expression "(int **)(puVar14 + -0xc)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar14 + -0xc)" ( (binary_expression "puVar14 + -0xc" identifier + number_literal) )))) = identifier) ;) (expression_statement "iVar10 = iStack_e0;" (assignment_expression "iVar10 = iStack_e0" identifier = identifier) ;) (expression_statement "*(int *)(puVar14 + -0x10) = iStack_d4;" (assignment_expression "*(int *)(puVar14 + -0x10) = iStack_d4" (pointer_expression "*(int *)(puVar14 + -0x10)" * (cast_expression "(int *)(puVar14 + -0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar14 + -0x10)" ( (binary_expression "puVar14 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "pcVar2 = *(code **)(iVar10 + 0x80);" (assignment_expression "pcVar2 = *(code **)(iVar10 + 0x80)" identifier = (pointer_expression "*(code **)(iVar10 + 0x80)" * (cast_expression "(code **)(iVar10 + 0x80)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar10 + 0x80)" ( (binary_expression "iVar10 + 0x80" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar14 + -0x14) = 0x4e875;" (assignment_expression "*(undefined4 *)(puVar14 + -0x14) = 0x4e875" (pointer_expression "*(undefined4 *)(puVar14 + -0x14)" * (cast_expression "(undefined4 *)(puVar14 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar14 + -0x14)" ( (binary_expression "puVar14 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "(*pcVar2)();" (call_expression "(*pcVar2)()" (parenthesized_expression "(*pcVar2)" ( (pointer_expression "*pcVar2" * identifier) )) (argument_list "()" ( ))) ;) }))) (expression_statement "iVar15 = iStack_d0;" (assignment_expression "iVar15 = iStack_d0" identifier = identifier) ;) (expression_statement "iVar10 = iStack_108;" (assignment_expression "iVar10 = iStack_108" identifier = identifier) ;) (expression_statement "*puStack_11c = uVar11 | ~(-1 << ((byte)uStack_e4 & 0x1f)) & *puStack_11c;" (assignment_expression "*puStack_11c = uVar11 | ~(-1 << ((byte)uStack_e4 & 0x1f)) & *puStack_11c" (pointer_expression "*puStack_11c" * identifier) = (binary_expression "uVar11 | ~(-1 << ((byte)uStack_e4 & 0x1f)) & *puStack_11c" identifier | (binary_expression "~(-1 << ((byte)uStack_e4 & 0x1f)) & *puStack_11c" (unary_expression "~(-1 << ((byte)uStack_e4 & 0x1f))" ~ (parenthesized_expression "(-1 << ((byte)uStack_e4 & 0x1f))" ( (binary_expression "-1 << ((byte)uStack_e4 & 0x1f)" number_literal << (parenthesized_expression "((byte)uStack_e4 & 0x1f)" ( (binary_expression "(byte)uStack_e4 & 0x1f" (cast_expression "(byte)uStack_e4" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) ))) ))) & (pointer_expression "*puStack_11c" * identifier)))) ;) (if_statement "if ((int)uStack_f0 < (int)puVar12) {\n    *(undefined4 *)(iStack_d4 + (uStack_f0 + 1) * 4) = uStack_114;\n  }" if (parenthesized_expression "((int)uStack_f0 < (int)puVar12)" ( (binary_expression "(int)uStack_f0 < (int)puVar12" (cast_expression "(int)uStack_f0" ( (type_descriptor "int" primitive_type) ) identifier) < (cast_expression "(int)puVar12" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n    *(undefined4 *)(iStack_d4 + (uStack_f0 + 1) * 4) = uStack_114;\n  }" { (expression_statement "*(undefined4 *)(iStack_d4 + (uStack_f0 + 1) * 4) = uStack_114;" (assignment_expression "*(undefined4 *)(iStack_d4 + (uStack_f0 + 1) * 4) = uStack_114" (pointer_expression "*(undefined4 *)(iStack_d4 + (uStack_f0 + 1) * 4)" * (cast_expression "(undefined4 *)(iStack_d4 + (uStack_f0 + 1) * 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iStack_d4 + (uStack_f0 + 1) * 4)" ( (binary_expression "iStack_d4 + (uStack_f0 + 1) * 4" identifier + (binary_expression "(uStack_f0 + 1) * 4" (parenthesized_expression "(uStack_f0 + 1)" ( (binary_expression "uStack_f0 + 1" identifier + number_literal) )) * number_literal)) )))) = identifier) ;) })) (expression_statement "*(uint *)(puVar14 + -4) = param_2;" (assignment_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) ;) (expression_statement "iVar4 = iStack_e0;" (assignment_expression "iVar4 = iStack_e0" identifier = identifier) ;) (expression_statement "*(int *)(puVar14 + -8) = iVar10;" (assignment_expression "*(int *)(puVar14 + -8) = iVar10" (pointer_expression "*(int *)(puVar14 + -8)" * (cast_expression "(int *)(puVar14 + -8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar14 + -8)" ( (binary_expression "puVar14 + -8" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(puVar14 + -0xc) = iVar15;" (assignment_expression "*(int *)(puVar14 + -0xc) = iVar15" (pointer_expression "*(int *)(puVar14 + -0xc)" * (cast_expression "(int *)(puVar14 + -0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar14 + -0xc)" ( (binary_expression "puVar14 + -0xc" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(puVar14 + -0x10) = iVar15;" (assignment_expression "*(int *)(puVar14 + -0x10) = iVar15" (pointer_expression "*(int *)(puVar14 + -0x10)" * (cast_expression "(int *)(puVar14 + -0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar14 + -0x10)" ( (binary_expression "puVar14 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "pcVar2 = *(code **)(iVar4 + 100);" (assignment_expression "pcVar2 = *(code **)(iVar4 + 100)" identifier = (pointer_expression "*(code **)(iVar4 + 100)" * (cast_expression "(code **)(iVar4 + 100)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar4 + 100)" ( (binary_expression "iVar4 + 100" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar14 + -0x14) = 0x4e8c9;" (assignment_expression "*(undefined4 *)(puVar14 + -0x14) = 0x4e8c9" (pointer_expression "*(undefined4 *)(puVar14 + -0x14)" * (cast_expression "(undefined4 *)(puVar14 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar14 + -0x14)" ( (binary_expression "puVar14 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "iVar6 = (*pcVar2)();" (assignment_expression "iVar6 = (*pcVar2)()" identifier = (call_expression "(*pcVar2)()" (parenthesized_expression "(*pcVar2)" ( (pointer_expression "*pcVar2" * identifier) )) (argument_list "()" ( )))) ;) (expression_statement "puVar7 = local_c0;" (assignment_expression "puVar7 = local_c0" identifier = identifier) ;) (expression_statement "iVar4 = iStack_cc;" (assignment_expression "iVar4 = iStack_cc" identifier = identifier) ;) (expression_statement "*(int *)(iVar15 + iVar10 * 4) = iVar6;" (assignment_expression "*(int *)(iVar15 + iVar10 * 4) = iVar6" (pointer_expression "*(int *)(iVar15 + iVar10 * 4)" * (cast_expression "(int *)(iVar15 + iVar10 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar15 + iVar10 * 4)" ( (binary_expression "iVar15 + iVar10 * 4" identifier + (binary_expression "iVar10 * 4" identifier * number_literal)) )))) = identifier) ;) (expression_statement "iVar10 = (uint)(iVar6 != 0) + iVar10;" (assignment_expression "iVar10 = (uint)(iVar6 != 0) + iVar10" identifier = (binary_expression "(uint)(iVar6 != 0) + iVar10" (call_expression "(uint)(iVar6 != 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(iVar6 != 0)" ( (binary_expression "iVar6 != 0" identifier != number_literal) ))) + identifier)) ;) (expression_statement "puVar12 = (uint *)(uStack_100 + (int)local_c0);" (assignment_expression "puVar12 = (uint *)(uStack_100 + (int)local_c0)" identifier = (cast_expression "(uint *)(uStack_100 + (int)local_c0)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uStack_100 + (int)local_c0)" ( (binary_expression "uStack_100 + (int)local_c0" identifier + (cast_expression "(int)local_c0" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) (expression_statement "iVar15 = uStack_f0 + iStack_cc;" (assignment_expression "iVar15 = uStack_f0 + iStack_cc" identifier = (binary_expression "uStack_f0 + iStack_cc" identifier + identifier)) ;) (if_statement "if (uStack_e4 == 0) {\n    *(int *)(puVar14 + -8) = iStack_cc;\n    *(uint **)(puVar14 + -0xc) = local_c0;\n    *(uint **)(puVar14 + -0x10) = puVar12;\n    pcVar2 = *(code **)(iStack_e0 + 0x24);\n    *(undefined4 *)(puVar14 + -0x14) = 0x4ecd9;\n    (*pcVar2)();\nLAB_0004ecdc:\n    iStack_cc = iVar15;\n  }\n  else {\n    *(uint *)(puVar14 + -4) = uStack_e4;\n    *(int *)(puVar14 + -8) = iVar4;\n    *(uint **)(puVar14 + -0xc) = puVar7;\n    *(uint **)(puVar14 + -0x10) = puVar12;\n    pcVar2 = *(code **)(iStack_e0 + 0x38);\n    *(undefined4 *)(puVar14 + -0x14) = 0x4e915;\n    uVar11 = (*pcVar2)();\n    if (uVar11 == 0) goto LAB_0004ecdc;\n    local_c0[iVar15] = uVar11;\n    iStack_cc = iVar15 + 1;\n  }" if (parenthesized_expression "(uStack_e4 == 0)" ( (binary_expression "uStack_e4 == 0" identifier == number_literal) )) (compound_statement "{\n    *(int *)(puVar14 + -8) = iStack_cc;\n    *(uint **)(puVar14 + -0xc) = local_c0;\n    *(uint **)(puVar14 + -0x10) = puVar12;\n    pcVar2 = *(code **)(iStack_e0 + 0x24);\n    *(undefined4 *)(puVar14 + -0x14) = 0x4ecd9;\n    (*pcVar2)();\nLAB_0004ecdc:\n    iStack_cc = iVar15;\n  }" { (expression_statement "*(int *)(puVar14 + -8) = iStack_cc;" (assignment_expression "*(int *)(puVar14 + -8) = iStack_cc" (pointer_expression "*(int *)(puVar14 + -8)" * (cast_expression "(int *)(puVar14 + -8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar14 + -8)" ( (binary_expression "puVar14 + -8" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(uint **)(puVar14 + -0xc) = local_c0;" (assignment_expression "*(uint **)(puVar14 + -0xc) = local_c0" (pointer_expression "*(uint **)(puVar14 + -0xc)" * (cast_expression "(uint **)(puVar14 + -0xc)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar14 + -0xc)" ( (binary_expression "puVar14 + -0xc" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(uint **)(puVar14 + -0x10) = puVar12;" (assignment_expression "*(uint **)(puVar14 + -0x10) = puVar12" (pointer_expression "*(uint **)(puVar14 + -0x10)" * (cast_expression "(uint **)(puVar14 + -0x10)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar14 + -0x10)" ( (binary_expression "puVar14 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "pcVar2 = *(code **)(iStack_e0 + 0x24);" (assignment_expression "pcVar2 = *(code **)(iStack_e0 + 0x24)" identifier = (pointer_expression "*(code **)(iStack_e0 + 0x24)" * (cast_expression "(code **)(iStack_e0 + 0x24)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iStack_e0 + 0x24)" ( (binary_expression "iStack_e0 + 0x24" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar14 + -0x14) = 0x4ecd9;" (assignment_expression "*(undefined4 *)(puVar14 + -0x14) = 0x4ecd9" (pointer_expression "*(undefined4 *)(puVar14 + -0x14)" * (cast_expression "(undefined4 *)(puVar14 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar14 + -0x14)" ( (binary_expression "puVar14 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "(*pcVar2)();" (call_expression "(*pcVar2)()" (parenthesized_expression "(*pcVar2)" ( (pointer_expression "*pcVar2" * identifier) )) (argument_list "()" ( ))) ;) (labeled_statement "LAB_0004ecdc:\n    iStack_cc = iVar15;" statement_identifier : (expression_statement "iStack_cc = iVar15;" (assignment_expression "iStack_cc = iVar15" identifier = identifier) ;)) }) (else_clause "else {\n    *(uint *)(puVar14 + -4) = uStack_e4;\n    *(int *)(puVar14 + -8) = iVar4;\n    *(uint **)(puVar14 + -0xc) = puVar7;\n    *(uint **)(puVar14 + -0x10) = puVar12;\n    pcVar2 = *(code **)(iStack_e0 + 0x38);\n    *(undefined4 *)(puVar14 + -0x14) = 0x4e915;\n    uVar11 = (*pcVar2)();\n    if (uVar11 == 0) goto LAB_0004ecdc;\n    local_c0[iVar15] = uVar11;\n    iStack_cc = iVar15 + 1;\n  }" else (compound_statement "{\n    *(uint *)(puVar14 + -4) = uStack_e4;\n    *(int *)(puVar14 + -8) = iVar4;\n    *(uint **)(puVar14 + -0xc) = puVar7;\n    *(uint **)(puVar14 + -0x10) = puVar12;\n    pcVar2 = *(code **)(iStack_e0 + 0x38);\n    *(undefined4 *)(puVar14 + -0x14) = 0x4e915;\n    uVar11 = (*pcVar2)();\n    if (uVar11 == 0) goto LAB_0004ecdc;\n    local_c0[iVar15] = uVar11;\n    iStack_cc = iVar15 + 1;\n  }" { (expression_statement "*(uint *)(puVar14 + -4) = uStack_e4;" (assignment_expression "*(uint *)(puVar14 + -4) = uStack_e4" (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) ;) (expression_statement "*(int *)(puVar14 + -8) = iVar4;" (assignment_expression "*(int *)(puVar14 + -8) = iVar4" (pointer_expression "*(int *)(puVar14 + -8)" * (cast_expression "(int *)(puVar14 + -8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar14 + -8)" ( (binary_expression "puVar14 + -8" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(uint **)(puVar14 + -0xc) = puVar7;" (assignment_expression "*(uint **)(puVar14 + -0xc) = puVar7" (pointer_expression "*(uint **)(puVar14 + -0xc)" * (cast_expression "(uint **)(puVar14 + -0xc)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar14 + -0xc)" ( (binary_expression "puVar14 + -0xc" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(uint **)(puVar14 + -0x10) = puVar12;" (assignment_expression "*(uint **)(puVar14 + -0x10) = puVar12" (pointer_expression "*(uint **)(puVar14 + -0x10)" * (cast_expression "(uint **)(puVar14 + -0x10)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar14 + -0x10)" ( (binary_expression "puVar14 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "pcVar2 = *(code **)(iStack_e0 + 0x38);" (assignment_expression "pcVar2 = *(code **)(iStack_e0 + 0x38)" identifier = (pointer_expression "*(code **)(iStack_e0 + 0x38)" * (cast_expression "(code **)(iStack_e0 + 0x38)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iStack_e0 + 0x38)" ( (binary_expression "iStack_e0 + 0x38" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar14 + -0x14) = 0x4e915;" (assignment_expression "*(undefined4 *)(puVar14 + -0x14) = 0x4e915" (pointer_expression "*(undefined4 *)(puVar14 + -0x14)" * (cast_expression "(undefined4 *)(puVar14 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar14 + -0x14)" ( (binary_expression "puVar14 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "uVar11 = (*pcVar2)();" (assignment_expression "uVar11 = (*pcVar2)()" identifier = (call_expression "(*pcVar2)()" (parenthesized_expression "(*pcVar2)" ( (pointer_expression "*pcVar2" * identifier) )) (argument_list "()" ( )))) ;) (if_statement "if (uVar11 == 0) goto LAB_0004ecdc;" if (parenthesized_expression "(uVar11 == 0)" ( (binary_expression "uVar11 == 0" identifier == number_literal) )) (goto_statement "goto LAB_0004ecdc;" goto statement_identifier ;)) (expression_statement "local_c0[iVar15] = uVar11;" (assignment_expression "local_c0[iVar15] = uVar11" (subscript_expression "local_c0[iVar15]" identifier [ identifier ]) = identifier) ;) (expression_statement "iStack_cc = iVar15 + 1;" (assignment_expression "iStack_cc = iVar15 + 1" identifier = (binary_expression "iVar15 + 1" identifier + number_literal)) ;) }))) (expression_statement "uStack_f0 = *puVar12;" (assignment_expression "uStack_f0 = *puVar12" identifier = (pointer_expression "*puVar12" * identifier)) ;) (expression_statement "uVar5 = uStack_e8 - 1 >> 5;" (assignment_expression "uVar5 = uStack_e8 - 1 >> 5" identifier = (binary_expression "uStack_e8 - 1 >> 5" (binary_expression "uStack_e8 - 1" identifier - number_literal) >> number_literal)) ;) (expression_statement "uVar11 = uVar5 + 1;" (assignment_expression "uVar11 = uVar5 + 1" identifier = (binary_expression "uVar5 + 1" identifier + number_literal)) ;) (if_statement "if ((int)uStack_d8 < iVar10) {\n    *(uint *)(puVar14 + -8) = uVar11 * 4;\n    *(undefined4 *)(puVar14 + -0xc) = 0;\n    *(uint **)(puVar14 + -0x10) = local_c0;\n    *(undefined4 *)(puVar14 + -0x14) = 0x4ee04;\n    memset(*(void **)(puVar14 + -0x10),*(int *)(puVar14 + -0xc),*(size_t *)(puVar14 + -8));\n    goto LAB_0004e9ab;\n  }" if (parenthesized_expression "((int)uStack_d8 < iVar10)" ( (binary_expression "(int)uStack_d8 < iVar10" (cast_expression "(int)uStack_d8" ( (type_descriptor "int" primitive_type) ) identifier) < identifier) )) (compound_statement "{\n    *(uint *)(puVar14 + -8) = uVar11 * 4;\n    *(undefined4 *)(puVar14 + -0xc) = 0;\n    *(uint **)(puVar14 + -0x10) = local_c0;\n    *(undefined4 *)(puVar14 + -0x14) = 0x4ee04;\n    memset(*(void **)(puVar14 + -0x10),*(int *)(puVar14 + -0xc),*(size_t *)(puVar14 + -8));\n    goto LAB_0004e9ab;\n  }" { (expression_statement "*(uint *)(puVar14 + -8) = uVar11 * 4;" (assignment_expression "*(uint *)(puVar14 + -8) = uVar11 * 4" (pointer_expression "*(uint *)(puVar14 + -8)" * (cast_expression "(uint *)(puVar14 + -8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar14 + -8)" ( (binary_expression "puVar14 + -8" identifier + number_literal) )))) = (binary_expression "uVar11 * 4" identifier * number_literal)) ;) (expression_statement "*(undefined4 *)(puVar14 + -0xc) = 0;" (assignment_expression "*(undefined4 *)(puVar14 + -0xc) = 0" (pointer_expression "*(undefined4 *)(puVar14 + -0xc)" * (cast_expression "(undefined4 *)(puVar14 + -0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar14 + -0xc)" ( (binary_expression "puVar14 + -0xc" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(uint **)(puVar14 + -0x10) = local_c0;" (assignment_expression "*(uint **)(puVar14 + -0x10) = local_c0" (pointer_expression "*(uint **)(puVar14 + -0x10)" * (cast_expression "(uint **)(puVar14 + -0x10)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar14 + -0x10)" ( (binary_expression "puVar14 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar14 + -0x14) = 0x4ee04;" (assignment_expression "*(undefined4 *)(puVar14 + -0x14) = 0x4ee04" (pointer_expression "*(undefined4 *)(puVar14 + -0x14)" * (cast_expression "(undefined4 *)(puVar14 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar14 + -0x14)" ( (binary_expression "puVar14 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "memset(*(void **)(puVar14 + -0x10),*(int *)(puVar14 + -0xc),*(size_t *)(puVar14 + -8));" (call_expression "memset(*(void **)(puVar14 + -0x10),*(int *)(puVar14 + -0xc),*(size_t *)(puVar14 + -8))" identifier (argument_list "(*(void **)(puVar14 + -0x10),*(int *)(puVar14 + -0xc),*(size_t *)(puVar14 + -8))" ( (pointer_expression "*(void **)(puVar14 + -0x10)" * (cast_expression "(void **)(puVar14 + -0x10)" ( (type_descriptor "void **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar14 + -0x10)" ( (binary_expression "puVar14 + -0x10" identifier + number_literal) )))) , (pointer_expression "*(int *)(puVar14 + -0xc)" * (cast_expression "(int *)(puVar14 + -0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar14 + -0xc)" ( (binary_expression "puVar14 + -0xc" identifier + number_literal) )))) , (pointer_expression "*(size_t *)(puVar14 + -8)" * (cast_expression "(size_t *)(puVar14 + -8)" ( (type_descriptor "size_t *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar14 + -8)" ( (binary_expression "puVar14 + -8" identifier + number_literal) )))) ))) ;) (goto_statement "goto LAB_0004e9ab;" goto statement_identifier ;) })) (expression_statement "iVar15 = uStack_d8 - iVar10;" (assignment_expression "iVar15 = uStack_d8 - iVar10" identifier = (binary_expression "uStack_d8 - iVar10" identifier - identifier)) ;) (if_statement "if (iVar15 <= (int)uVar11) {\n    *(int *)(puVar14 + -0xc) = iStack_120;\n    *(int *)(puVar14 + -0x10) = iVar10;\n    *(int *)(puVar14 + -0x14) = iStack_d0;\n    *(uint *)(puVar14 + -0x18) = uStack_d8;\n    *(int *)(puVar14 + -0x1c) = iStack_d4;\n    *(int *)(puVar14 + -0x20) = iStack_dc;\n    iStack_108 = iVar15;\n    uStack_100 = uVar11;\n    *(undefined4 *)(puVar14 + -0x24) = 0x4ead1;\n    __gmpn_div_q();\n    puVar7 = local_c0;\n    iVar10 = iStack_e0;\n    uVar13 = (uint)(*(int *)(iStack_dc + iStack_108 * 4) != 0) + iStack_108;\n    uVar11 = uStack_100;\n    if ((int)uVar13 <= (int)uStack_100) {\n      if ((uStack_100 != uVar13) || (uStack_e4 == 0)) {\n        uStack_e4 = uStack_100;\n        *(uint *)(puVar14 + -8) = uVar13;\n        *(int *)(puVar14 + -0xc) = iStack_dc;\n        *(uint **)(puVar14 + -0x10) = puVar7;\n        pcVar2 = *(code **)(iVar10 + 0x28);\n        *(undefined4 *)(puVar14 + -0x14) = 0x4eb2a;\n        (*pcVar2)();\n        if (uStack_e4 != uVar13) {\n          *(uint *)(puVar14 + -8) = (uStack_e4 - uVar13) * 4;\n          *(undefined4 *)(puVar14 + -0xc) = 0;\n          *(uint **)(puVar14 + -0x10) = puVar7 + uVar13;\n          *(undefined4 *)(puVar14 + -0x14) = 0x4eb55;\n          memset(*(void **)(puVar14 + -0x10),*(int *)(puVar14 + -0xc),*(size_t *)(puVar14 + -8));\n        }\n        goto LAB_0004e9ab;\n      }\n      if (*(uint *)(iStack_dc + -4 + uVar13 * 4) >> ((byte)uStack_e4 & 0x1f) == 0) {\n        *(uint *)(puVar14 + -8) = uVar13;\n        *(int *)(puVar14 + -0xc) = iStack_dc;\n        *(uint **)(puVar14 + -0x10) = local_c0;\n        pcVar2 = *(code **)(iVar10 + 0x28);\n        *(undefined4 *)(puVar14 + -0x14) = 0x4ede2;\n        (*pcVar2)();\n        goto LAB_0004e9ab;\n      }\n    }\n  }" if (parenthesized_expression "(iVar15 <= (int)uVar11)" ( (binary_expression "iVar15 <= (int)uVar11" identifier <= (cast_expression "(int)uVar11" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n    *(int *)(puVar14 + -0xc) = iStack_120;\n    *(int *)(puVar14 + -0x10) = iVar10;\n    *(int *)(puVar14 + -0x14) = iStack_d0;\n    *(uint *)(puVar14 + -0x18) = uStack_d8;\n    *(int *)(puVar14 + -0x1c) = iStack_d4;\n    *(int *)(puVar14 + -0x20) = iStack_dc;\n    iStack_108 = iVar15;\n    uStack_100 = uVar11;\n    *(undefined4 *)(puVar14 + -0x24) = 0x4ead1;\n    __gmpn_div_q();\n    puVar7 = local_c0;\n    iVar10 = iStack_e0;\n    uVar13 = (uint)(*(int *)(iStack_dc + iStack_108 * 4) != 0) + iStack_108;\n    uVar11 = uStack_100;\n    if ((int)uVar13 <= (int)uStack_100) {\n      if ((uStack_100 != uVar13) || (uStack_e4 == 0)) {\n        uStack_e4 = uStack_100;\n        *(uint *)(puVar14 + -8) = uVar13;\n        *(int *)(puVar14 + -0xc) = iStack_dc;\n        *(uint **)(puVar14 + -0x10) = puVar7;\n        pcVar2 = *(code **)(iVar10 + 0x28);\n        *(undefined4 *)(puVar14 + -0x14) = 0x4eb2a;\n        (*pcVar2)();\n        if (uStack_e4 != uVar13) {\n          *(uint *)(puVar14 + -8) = (uStack_e4 - uVar13) * 4;\n          *(undefined4 *)(puVar14 + -0xc) = 0;\n          *(uint **)(puVar14 + -0x10) = puVar7 + uVar13;\n          *(undefined4 *)(puVar14 + -0x14) = 0x4eb55;\n          memset(*(void **)(puVar14 + -0x10),*(int *)(puVar14 + -0xc),*(size_t *)(puVar14 + -8));\n        }\n        goto LAB_0004e9ab;\n      }\n      if (*(uint *)(iStack_dc + -4 + uVar13 * 4) >> ((byte)uStack_e4 & 0x1f) == 0) {\n        *(uint *)(puVar14 + -8) = uVar13;\n        *(int *)(puVar14 + -0xc) = iStack_dc;\n        *(uint **)(puVar14 + -0x10) = local_c0;\n        pcVar2 = *(code **)(iVar10 + 0x28);\n        *(undefined4 *)(puVar14 + -0x14) = 0x4ede2;\n        (*pcVar2)();\n        goto LAB_0004e9ab;\n      }\n    }\n  }" { (expression_statement "*(int *)(puVar14 + -0xc) = iStack_120;" (assignment_expression "*(int *)(puVar14 + -0xc) = iStack_120" (pointer_expression "*(int *)(puVar14 + -0xc)" * (cast_expression "(int *)(puVar14 + -0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar14 + -0xc)" ( (binary_expression "puVar14 + -0xc" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(puVar14 + -0x10) = iVar10;" (assignment_expression "*(int *)(puVar14 + -0x10) = iVar10" (pointer_expression "*(int *)(puVar14 + -0x10)" * (cast_expression "(int *)(puVar14 + -0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar14 + -0x10)" ( (binary_expression "puVar14 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(puVar14 + -0x14) = iStack_d0;" (assignment_expression "*(int *)(puVar14 + -0x14) = iStack_d0" (pointer_expression "*(int *)(puVar14 + -0x14)" * (cast_expression "(int *)(puVar14 + -0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar14 + -0x14)" ( (binary_expression "puVar14 + -0x14" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(uint *)(puVar14 + -0x18) = uStack_d8;" (assignment_expression "*(uint *)(puVar14 + -0x18) = uStack_d8" (pointer_expression "*(uint *)(puVar14 + -0x18)" * (cast_expression "(uint *)(puVar14 + -0x18)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar14 + -0x18)" ( (binary_expression "puVar14 + -0x18" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(puVar14 + -0x1c) = iStack_d4;" (assignment_expression "*(int *)(puVar14 + -0x1c) = iStack_d4" (pointer_expression "*(int *)(puVar14 + -0x1c)" * (cast_expression "(int *)(puVar14 + -0x1c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar14 + -0x1c)" ( (binary_expression "puVar14 + -0x1c" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(puVar14 + -0x20) = iStack_dc;" (assignment_expression "*(int *)(puVar14 + -0x20) = iStack_dc" (pointer_expression "*(int *)(puVar14 + -0x20)" * (cast_expression "(int *)(puVar14 + -0x20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar14 + -0x20)" ( (binary_expression "puVar14 + -0x20" identifier + number_literal) )))) = identifier) ;) (expression_statement "iStack_108 = iVar15;" (assignment_expression "iStack_108 = iVar15" identifier = identifier) ;) (expression_statement "uStack_100 = uVar11;" (assignment_expression "uStack_100 = uVar11" identifier = identifier) ;) (expression_statement "*(undefined4 *)(puVar14 + -0x24) = 0x4ead1;" (assignment_expression "*(undefined4 *)(puVar14 + -0x24) = 0x4ead1" (pointer_expression "*(undefined4 *)(puVar14 + -0x24)" * (cast_expression "(undefined4 *)(puVar14 + -0x24)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar14 + -0x24)" ( (binary_expression "puVar14 + -0x24" identifier + number_literal) )))) = number_literal) ;) (expression_statement "__gmpn_div_q();" (call_expression "__gmpn_div_q()" identifier (argument_list "()" ( ))) ;) (expression_statement "puVar7 = local_c0;" (assignment_expression "puVar7 = local_c0" identifier = identifier) ;) (expression_statement "iVar10 = iStack_e0;" (assignment_expression "iVar10 = iStack_e0" identifier = identifier) ;) (expression_statement "uVar13 = (uint)(*(int *)(iStack_dc + iStack_108 * 4) != 0) + iStack_108;" (assignment_expression "uVar13 = (uint)(*(int *)(iStack_dc + iStack_108 * 4) != 0) + iStack_108" identifier = (binary_expression "(uint)(*(int *)(iStack_dc + iStack_108 * 4) != 0) + iStack_108" (call_expression "(uint)(*(int *)(iStack_dc + iStack_108 * 4) != 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(*(int *)(iStack_dc + iStack_108 * 4) != 0)" ( (binary_expression "*(int *)(iStack_dc + iStack_108 * 4) != 0" (pointer_expression "*(int *)(iStack_dc + iStack_108 * 4)" * (cast_expression "(int *)(iStack_dc + iStack_108 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iStack_dc + iStack_108 * 4)" ( (binary_expression "iStack_dc + iStack_108 * 4" identifier + (binary_expression "iStack_108 * 4" identifier * number_literal)) )))) != number_literal) ))) + identifier)) ;) (expression_statement "uVar11 = uStack_100;" (assignment_expression "uVar11 = uStack_100" identifier = identifier) ;) (if_statement "if ((int)uVar13 <= (int)uStack_100) {\n      if ((uStack_100 != uVar13) || (uStack_e4 == 0)) {\n        uStack_e4 = uStack_100;\n        *(uint *)(puVar14 + -8) = uVar13;\n        *(int *)(puVar14 + -0xc) = iStack_dc;\n        *(uint **)(puVar14 + -0x10) = puVar7;\n        pcVar2 = *(code **)(iVar10 + 0x28);\n        *(undefined4 *)(puVar14 + -0x14) = 0x4eb2a;\n        (*pcVar2)();\n        if (uStack_e4 != uVar13) {\n          *(uint *)(puVar14 + -8) = (uStack_e4 - uVar13) * 4;\n          *(undefined4 *)(puVar14 + -0xc) = 0;\n          *(uint **)(puVar14 + -0x10) = puVar7 + uVar13;\n          *(undefined4 *)(puVar14 + -0x14) = 0x4eb55;\n          memset(*(void **)(puVar14 + -0x10),*(int *)(puVar14 + -0xc),*(size_t *)(puVar14 + -8));\n        }\n        goto LAB_0004e9ab;\n      }\n      if (*(uint *)(iStack_dc + -4 + uVar13 * 4) >> ((byte)uStack_e4 & 0x1f) == 0) {\n        *(uint *)(puVar14 + -8) = uVar13;\n        *(int *)(puVar14 + -0xc) = iStack_dc;\n        *(uint **)(puVar14 + -0x10) = local_c0;\n        pcVar2 = *(code **)(iVar10 + 0x28);\n        *(undefined4 *)(puVar14 + -0x14) = 0x4ede2;\n        (*pcVar2)();\n        goto LAB_0004e9ab;\n      }\n    }" if (parenthesized_expression "((int)uVar13 <= (int)uStack_100)" ( (binary_expression "(int)uVar13 <= (int)uStack_100" (cast_expression "(int)uVar13" ( (type_descriptor "int" primitive_type) ) identifier) <= (cast_expression "(int)uStack_100" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n      if ((uStack_100 != uVar13) || (uStack_e4 == 0)) {\n        uStack_e4 = uStack_100;\n        *(uint *)(puVar14 + -8) = uVar13;\n        *(int *)(puVar14 + -0xc) = iStack_dc;\n        *(uint **)(puVar14 + -0x10) = puVar7;\n        pcVar2 = *(code **)(iVar10 + 0x28);\n        *(undefined4 *)(puVar14 + -0x14) = 0x4eb2a;\n        (*pcVar2)();\n        if (uStack_e4 != uVar13) {\n          *(uint *)(puVar14 + -8) = (uStack_e4 - uVar13) * 4;\n          *(undefined4 *)(puVar14 + -0xc) = 0;\n          *(uint **)(puVar14 + -0x10) = puVar7 + uVar13;\n          *(undefined4 *)(puVar14 + -0x14) = 0x4eb55;\n          memset(*(void **)(puVar14 + -0x10),*(int *)(puVar14 + -0xc),*(size_t *)(puVar14 + -8));\n        }\n        goto LAB_0004e9ab;\n      }\n      if (*(uint *)(iStack_dc + -4 + uVar13 * 4) >> ((byte)uStack_e4 & 0x1f) == 0) {\n        *(uint *)(puVar14 + -8) = uVar13;\n        *(int *)(puVar14 + -0xc) = iStack_dc;\n        *(uint **)(puVar14 + -0x10) = local_c0;\n        pcVar2 = *(code **)(iVar10 + 0x28);\n        *(undefined4 *)(puVar14 + -0x14) = 0x4ede2;\n        (*pcVar2)();\n        goto LAB_0004e9ab;\n      }\n    }" { (if_statement "if ((uStack_100 != uVar13) || (uStack_e4 == 0)) {\n        uStack_e4 = uStack_100;\n        *(uint *)(puVar14 + -8) = uVar13;\n        *(int *)(puVar14 + -0xc) = iStack_dc;\n        *(uint **)(puVar14 + -0x10) = puVar7;\n        pcVar2 = *(code **)(iVar10 + 0x28);\n        *(undefined4 *)(puVar14 + -0x14) = 0x4eb2a;\n        (*pcVar2)();\n        if (uStack_e4 != uVar13) {\n          *(uint *)(puVar14 + -8) = (uStack_e4 - uVar13) * 4;\n          *(undefined4 *)(puVar14 + -0xc) = 0;\n          *(uint **)(puVar14 + -0x10) = puVar7 + uVar13;\n          *(undefined4 *)(puVar14 + -0x14) = 0x4eb55;\n          memset(*(void **)(puVar14 + -0x10),*(int *)(puVar14 + -0xc),*(size_t *)(puVar14 + -8));\n        }\n        goto LAB_0004e9ab;\n      }" if (parenthesized_expression "((uStack_100 != uVar13) || (uStack_e4 == 0))" ( (binary_expression "(uStack_100 != uVar13) || (uStack_e4 == 0)" (parenthesized_expression "(uStack_100 != uVar13)" ( (binary_expression "uStack_100 != uVar13" identifier != identifier) )) || (parenthesized_expression "(uStack_e4 == 0)" ( (binary_expression "uStack_e4 == 0" identifier == number_literal) ))) )) (compound_statement "{\n        uStack_e4 = uStack_100;\n        *(uint *)(puVar14 + -8) = uVar13;\n        *(int *)(puVar14 + -0xc) = iStack_dc;\n        *(uint **)(puVar14 + -0x10) = puVar7;\n        pcVar2 = *(code **)(iVar10 + 0x28);\n        *(undefined4 *)(puVar14 + -0x14) = 0x4eb2a;\n        (*pcVar2)();\n        if (uStack_e4 != uVar13) {\n          *(uint *)(puVar14 + -8) = (uStack_e4 - uVar13) * 4;\n          *(undefined4 *)(puVar14 + -0xc) = 0;\n          *(uint **)(puVar14 + -0x10) = puVar7 + uVar13;\n          *(undefined4 *)(puVar14 + -0x14) = 0x4eb55;\n          memset(*(void **)(puVar14 + -0x10),*(int *)(puVar14 + -0xc),*(size_t *)(puVar14 + -8));\n        }\n        goto LAB_0004e9ab;\n      }" { (expression_statement "uStack_e4 = uStack_100;" (assignment_expression "uStack_e4 = uStack_100" identifier = identifier) ;) (expression_statement "*(uint *)(puVar14 + -8) = uVar13;" (assignment_expression "*(uint *)(puVar14 + -8) = uVar13" (pointer_expression "*(uint *)(puVar14 + -8)" * (cast_expression "(uint *)(puVar14 + -8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar14 + -8)" ( (binary_expression "puVar14 + -8" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(puVar14 + -0xc) = iStack_dc;" (assignment_expression "*(int *)(puVar14 + -0xc) = iStack_dc" (pointer_expression "*(int *)(puVar14 + -0xc)" * (cast_expression "(int *)(puVar14 + -0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar14 + -0xc)" ( (binary_expression "puVar14 + -0xc" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(uint **)(puVar14 + -0x10) = puVar7;" (assignment_expression "*(uint **)(puVar14 + -0x10) = puVar7" (pointer_expression "*(uint **)(puVar14 + -0x10)" * (cast_expression "(uint **)(puVar14 + -0x10)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar14 + -0x10)" ( (binary_expression "puVar14 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "pcVar2 = *(code **)(iVar10 + 0x28);" (assignment_expression "pcVar2 = *(code **)(iVar10 + 0x28)" identifier = (pointer_expression "*(code **)(iVar10 + 0x28)" * (cast_expression "(code **)(iVar10 + 0x28)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar10 + 0x28)" ( (binary_expression "iVar10 + 0x28" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar14 + -0x14) = 0x4eb2a;" (assignment_expression "*(undefined4 *)(puVar14 + -0x14) = 0x4eb2a" (pointer_expression "*(undefined4 *)(puVar14 + -0x14)" * (cast_expression "(undefined4 *)(puVar14 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar14 + -0x14)" ( (binary_expression "puVar14 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "(*pcVar2)();" (call_expression "(*pcVar2)()" (parenthesized_expression "(*pcVar2)" ( (pointer_expression "*pcVar2" * identifier) )) (argument_list "()" ( ))) ;) (if_statement "if (uStack_e4 != uVar13) {\n          *(uint *)(puVar14 + -8) = (uStack_e4 - uVar13) * 4;\n          *(undefined4 *)(puVar14 + -0xc) = 0;\n          *(uint **)(puVar14 + -0x10) = puVar7 + uVar13;\n          *(undefined4 *)(puVar14 + -0x14) = 0x4eb55;\n          memset(*(void **)(puVar14 + -0x10),*(int *)(puVar14 + -0xc),*(size_t *)(puVar14 + -8));\n        }" if (parenthesized_expression "(uStack_e4 != uVar13)" ( (binary_expression "uStack_e4 != uVar13" identifier != identifier) )) (compound_statement "{\n          *(uint *)(puVar14 + -8) = (uStack_e4 - uVar13) * 4;\n          *(undefined4 *)(puVar14 + -0xc) = 0;\n          *(uint **)(puVar14 + -0x10) = puVar7 + uVar13;\n          *(undefined4 *)(puVar14 + -0x14) = 0x4eb55;\n          memset(*(void **)(puVar14 + -0x10),*(int *)(puVar14 + -0xc),*(size_t *)(puVar14 + -8));\n        }" { (expression_statement "*(uint *)(puVar14 + -8) = (uStack_e4 - uVar13) * 4;" (assignment_expression "*(uint *)(puVar14 + -8) = (uStack_e4 - uVar13) * 4" (pointer_expression "*(uint *)(puVar14 + -8)" * (cast_expression "(uint *)(puVar14 + -8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar14 + -8)" ( (binary_expression "puVar14 + -8" identifier + number_literal) )))) = (binary_expression "(uStack_e4 - uVar13) * 4" (parenthesized_expression "(uStack_e4 - uVar13)" ( (binary_expression "uStack_e4 - uVar13" identifier - identifier) )) * number_literal)) ;) (expression_statement "*(undefined4 *)(puVar14 + -0xc) = 0;" (assignment_expression "*(undefined4 *)(puVar14 + -0xc) = 0" (pointer_expression "*(undefined4 *)(puVar14 + -0xc)" * (cast_expression "(undefined4 *)(puVar14 + -0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar14 + -0xc)" ( (binary_expression "puVar14 + -0xc" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(uint **)(puVar14 + -0x10) = puVar7 + uVar13;" (assignment_expression "*(uint **)(puVar14 + -0x10) = puVar7 + uVar13" (pointer_expression "*(uint **)(puVar14 + -0x10)" * (cast_expression "(uint **)(puVar14 + -0x10)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar14 + -0x10)" ( (binary_expression "puVar14 + -0x10" identifier + number_literal) )))) = (binary_expression "puVar7 + uVar13" identifier + identifier)) ;) (expression_statement "*(undefined4 *)(puVar14 + -0x14) = 0x4eb55;" (assignment_expression "*(undefined4 *)(puVar14 + -0x14) = 0x4eb55" (pointer_expression "*(undefined4 *)(puVar14 + -0x14)" * (cast_expression "(undefined4 *)(puVar14 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar14 + -0x14)" ( (binary_expression "puVar14 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "memset(*(void **)(puVar14 + -0x10),*(int *)(puVar14 + -0xc),*(size_t *)(puVar14 + -8));" (call_expression "memset(*(void **)(puVar14 + -0x10),*(int *)(puVar14 + -0xc),*(size_t *)(puVar14 + -8))" identifier (argument_list "(*(void **)(puVar14 + -0x10),*(int *)(puVar14 + -0xc),*(size_t *)(puVar14 + -8))" ( (pointer_expression "*(void **)(puVar14 + -0x10)" * (cast_expression "(void **)(puVar14 + -0x10)" ( (type_descriptor "void **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar14 + -0x10)" ( (binary_expression "puVar14 + -0x10" identifier + number_literal) )))) , (pointer_expression "*(int *)(puVar14 + -0xc)" * (cast_expression "(int *)(puVar14 + -0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar14 + -0xc)" ( (binary_expression "puVar14 + -0xc" identifier + number_literal) )))) , (pointer_expression "*(size_t *)(puVar14 + -8)" * (cast_expression "(size_t *)(puVar14 + -8)" ( (type_descriptor "size_t *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar14 + -8)" ( (binary_expression "puVar14 + -8" identifier + number_literal) )))) ))) ;) })) (goto_statement "goto LAB_0004e9ab;" goto statement_identifier ;) })) (if_statement "if (*(uint *)(iStack_dc + -4 + uVar13 * 4) >> ((byte)uStack_e4 & 0x1f) == 0) {\n        *(uint *)(puVar14 + -8) = uVar13;\n        *(int *)(puVar14 + -0xc) = iStack_dc;\n        *(uint **)(puVar14 + -0x10) = local_c0;\n        pcVar2 = *(code **)(iVar10 + 0x28);\n        *(undefined4 *)(puVar14 + -0x14) = 0x4ede2;\n        (*pcVar2)();\n        goto LAB_0004e9ab;\n      }" if (parenthesized_expression "(*(uint *)(iStack_dc + -4 + uVar13 * 4) >> ((byte)uStack_e4 & 0x1f) == 0)" ( (binary_expression "*(uint *)(iStack_dc + -4 + uVar13 * 4) >> ((byte)uStack_e4 & 0x1f) == 0" (binary_expression "*(uint *)(iStack_dc + -4 + uVar13 * 4) >> ((byte)uStack_e4 & 0x1f)" (pointer_expression "*(uint *)(iStack_dc + -4 + uVar13 * 4)" * (cast_expression "(uint *)(iStack_dc + -4 + uVar13 * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iStack_dc + -4 + uVar13 * 4)" ( (binary_expression "iStack_dc + -4 + uVar13 * 4" (binary_expression "iStack_dc + -4" identifier + number_literal) + (binary_expression "uVar13 * 4" identifier * number_literal)) )))) >> (parenthesized_expression "((byte)uStack_e4 & 0x1f)" ( (binary_expression "(byte)uStack_e4 & 0x1f" (cast_expression "(byte)uStack_e4" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) ))) == number_literal) )) (compound_statement "{\n        *(uint *)(puVar14 + -8) = uVar13;\n        *(int *)(puVar14 + -0xc) = iStack_dc;\n        *(uint **)(puVar14 + -0x10) = local_c0;\n        pcVar2 = *(code **)(iVar10 + 0x28);\n        *(undefined4 *)(puVar14 + -0x14) = 0x4ede2;\n        (*pcVar2)();\n        goto LAB_0004e9ab;\n      }" { (expression_statement "*(uint *)(puVar14 + -8) = uVar13;" (assignment_expression "*(uint *)(puVar14 + -8) = uVar13" (pointer_expression "*(uint *)(puVar14 + -8)" * (cast_expression "(uint *)(puVar14 + -8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar14 + -8)" ( (binary_expression "puVar14 + -8" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(puVar14 + -0xc) = iStack_dc;" (assignment_expression "*(int *)(puVar14 + -0xc) = iStack_dc" (pointer_expression "*(int *)(puVar14 + -0xc)" * (cast_expression "(int *)(puVar14 + -0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar14 + -0xc)" ( (binary_expression "puVar14 + -0xc" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(uint **)(puVar14 + -0x10) = local_c0;" (assignment_expression "*(uint **)(puVar14 + -0x10) = local_c0" (pointer_expression "*(uint **)(puVar14 + -0x10)" * (cast_expression "(uint **)(puVar14 + -0x10)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar14 + -0x10)" ( (binary_expression "puVar14 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "pcVar2 = *(code **)(iVar10 + 0x28);" (assignment_expression "pcVar2 = *(code **)(iVar10 + 0x28)" identifier = (pointer_expression "*(code **)(iVar10 + 0x28)" * (cast_expression "(code **)(iVar10 + 0x28)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar10 + 0x28)" ( (binary_expression "iVar10 + 0x28" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar14 + -0x14) = 0x4ede2;" (assignment_expression "*(undefined4 *)(puVar14 + -0x14) = 0x4ede2" (pointer_expression "*(undefined4 *)(puVar14 + -0x14)" * (cast_expression "(undefined4 *)(puVar14 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar14 + -0x14)" ( (binary_expression "puVar14 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "(*pcVar2)();" (call_expression "(*pcVar2)()" (parenthesized_expression "(*pcVar2)" ( (pointer_expression "*pcVar2" * identifier) )) (argument_list "()" ( ))) ;) (goto_statement "goto LAB_0004e9ab;" goto statement_identifier ;) })) })) })) (expression_statement "puVar7 = local_c0;" (assignment_expression "puVar7 = local_c0" identifier = identifier) ;) (if_statement "if (uVar11 != 1) {\n    *(uint *)(puVar14 + -8) = uVar5 * 4;\n    *(undefined4 *)(puVar14 + -0xc) = 0xff;\n    *(uint **)(puVar14 + -0x10) = local_c0;\n    *(undefined4 *)(puVar14 + -0x14) = 0x4e98f;\n    memset(*(void **)(puVar14 + -0x10),*(int *)(puVar14 + -0xc),*(size_t *)(puVar14 + -8));\n    puVar7 = local_c0 + uVar5;\n  }" if (parenthesized_expression "(uVar11 != 1)" ( (binary_expression "uVar11 != 1" identifier != number_literal) )) (compound_statement "{\n    *(uint *)(puVar14 + -8) = uVar5 * 4;\n    *(undefined4 *)(puVar14 + -0xc) = 0xff;\n    *(uint **)(puVar14 + -0x10) = local_c0;\n    *(undefined4 *)(puVar14 + -0x14) = 0x4e98f;\n    memset(*(void **)(puVar14 + -0x10),*(int *)(puVar14 + -0xc),*(size_t *)(puVar14 + -8));\n    puVar7 = local_c0 + uVar5;\n  }" { (expression_statement "*(uint *)(puVar14 + -8) = uVar5 * 4;" (assignment_expression "*(uint *)(puVar14 + -8) = uVar5 * 4" (pointer_expression "*(uint *)(puVar14 + -8)" * (cast_expression "(uint *)(puVar14 + -8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar14 + -8)" ( (binary_expression "puVar14 + -8" identifier + number_literal) )))) = (binary_expression "uVar5 * 4" identifier * number_literal)) ;) (expression_statement "*(undefined4 *)(puVar14 + -0xc) = 0xff;" (assignment_expression "*(undefined4 *)(puVar14 + -0xc) = 0xff" (pointer_expression "*(undefined4 *)(puVar14 + -0xc)" * (cast_expression "(undefined4 *)(puVar14 + -0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar14 + -0xc)" ( (binary_expression "puVar14 + -0xc" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(uint **)(puVar14 + -0x10) = local_c0;" (assignment_expression "*(uint **)(puVar14 + -0x10) = local_c0" (pointer_expression "*(uint **)(puVar14 + -0x10)" * (cast_expression "(uint **)(puVar14 + -0x10)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar14 + -0x10)" ( (binary_expression "puVar14 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar14 + -0x14) = 0x4e98f;" (assignment_expression "*(undefined4 *)(puVar14 + -0x14) = 0x4e98f" (pointer_expression "*(undefined4 *)(puVar14 + -0x14)" * (cast_expression "(undefined4 *)(puVar14 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar14 + -0x14)" ( (binary_expression "puVar14 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "memset(*(void **)(puVar14 + -0x10),*(int *)(puVar14 + -0xc),*(size_t *)(puVar14 + -8));" (call_expression "memset(*(void **)(puVar14 + -0x10),*(int *)(puVar14 + -0xc),*(size_t *)(puVar14 + -8))" identifier (argument_list "(*(void **)(puVar14 + -0x10),*(int *)(puVar14 + -0xc),*(size_t *)(puVar14 + -8))" ( (pointer_expression "*(void **)(puVar14 + -0x10)" * (cast_expression "(void **)(puVar14 + -0x10)" ( (type_descriptor "void **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar14 + -0x10)" ( (binary_expression "puVar14 + -0x10" identifier + number_literal) )))) , (pointer_expression "*(int *)(puVar14 + -0xc)" * (cast_expression "(int *)(puVar14 + -0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar14 + -0xc)" ( (binary_expression "puVar14 + -0xc" identifier + number_literal) )))) , (pointer_expression "*(size_t *)(puVar14 + -8)" * (cast_expression "(size_t *)(puVar14 + -8)" ( (type_descriptor "size_t *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar14 + -8)" ( (binary_expression "puVar14 + -8" identifier + number_literal) )))) ))) ;) (expression_statement "puVar7 = local_c0 + uVar5;" (assignment_expression "puVar7 = local_c0 + uVar5" identifier = (binary_expression "local_c0 + uVar5" identifier + identifier)) ;) })) (expression_statement "*puVar7 = 0xffffffff >> ((byte)iStack_118 & 0x1f);" (assignment_expression "*puVar7 = 0xffffffff >> ((byte)iStack_118 & 0x1f)" (pointer_expression "*puVar7" * identifier) = (binary_expression "0xffffffff >> ((byte)iStack_118 & 0x1f)" number_literal >> (parenthesized_expression "((byte)iStack_118 & 0x1f)" ( (binary_expression "(byte)iStack_118 & 0x1f" (cast_expression "(byte)iStack_118" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) )))) ;) (labeled_statement "LAB_0004e9ab:\n  uVar16 = CONCAT44(local_124,local_c0);" statement_identifier : (expression_statement "uVar16 = CONCAT44(local_124,local_c0);" (assignment_expression "uVar16 = CONCAT44(local_124,local_c0)" identifier = (call_expression "CONCAT44(local_124,local_c0)" identifier (argument_list "(local_124,local_c0)" ( identifier , identifier )))) ;)) (expression_statement "iStack_104 = iStack_104 + -1;" (assignment_expression "iStack_104 = iStack_104 + -1" identifier = (binary_expression "iStack_104 + -1" identifier + number_literal)) ;) (expression_statement "*puVar12 = *puVar12 | uStack_f0;" (assignment_expression "*puVar12 = *puVar12 | uStack_f0" (pointer_expression "*puVar12" * identifier) = (binary_expression "*puVar12 | uStack_f0" (pointer_expression "*puVar12" * identifier) | identifier)) ;) (expression_statement "iVar10 = iStack_dc;" (assignment_expression "iVar10 = iStack_dc" identifier = identifier) ;) (if_statement "if (iStack_10c == 0) goto LAB_0004e9ce;" if (parenthesized_expression "(iStack_10c == 0)" ( (binary_expression "iStack_10c == 0" identifier == number_literal) )) (goto_statement "goto LAB_0004e9ce;" goto statement_identifier ;)) (goto_statement "goto LAB_0004e690;" goto statement_identifier ;) (labeled_statement "LAB_0004efbf:\n  if (local_124 == (int *)0x0) {\n    uStack_d8 = 1;\n  }\n  else {\n    uVar5 = uVar11;\n    if (uVar11 == 0) {\nLAB_0004efd7:\n      if ((local_f8 != local_124) && ((int)uVar5 < (int)param_1)) {\n        piVar9 = local_f8 + uVar5;\n        piVar8 = local_124 + uVar5;\n        do {\n          iVar10 = *piVar9;\n          piVar9 = piVar9 + 1;\n          *piVar8 = iVar10;\n          piVar8 = piVar8 + 1;\n        } while ((int *)((int)local_f8 + local_128 + 4) != piVar9);\n      }\n    }\n    else {\n      *(uint *)(puVar14 + -4) = uVar11;\n      *(int *)(puVar14 + -8) = iVar10;\n      *(int **)(puVar14 + -0xc) = local_f8;\n      *(int **)(puVar14 + -0x10) = local_124;\n      *(undefined4 *)(puVar14 + -0x14) = 0x4f0a5;\n      iVar10 = __gmpn_sub_n();\n      if (iVar10 == 0) goto LAB_0004efd7;\n      if (param_1 != uVar11) {\n        local_c0 = (uint *)(uVar11 * 4);\n        uVar5 = uVar11 + 1;\n        iVar10 = local_f8[uVar11];\n        local_124[uVar11] = iVar10 + -1;\n        if (iVar10 == 0) {\n          if ((int)param_1 <= (int)uVar5) goto LAB_0004f017;\n          iVar10 = local_f8[uVar11 + 1];\n          local_124[uVar11 + 1] = iVar10 + -1;\n          uVar5 = uVar11 + 2;\n          while (iVar10 == 0) {\n            if (param_1 == uVar5) goto LAB_0004f017;\n            iVar10 = local_f8[uVar5];\n            local_124[uVar5] = iVar10 + -1;\n            uVar5 = uVar5 + 1;\n          }\n        }\n        goto LAB_0004efd7;\n      }\n    }\nLAB_0004f017:\n    iVar10 = local_124[local_134];\n    uStack_d8 = param_1;\n    while (uVar16 = CONCAT44(local_124,local_c0), iVar10 == 0) {\n      iVar10 = local_124[uStack_d8 - 2];\n      uStack_d8 = uStack_d8 - 1;\n    }\n  }" statement_identifier : (if_statement "if (local_124 == (int *)0x0) {\n    uStack_d8 = 1;\n  }\n  else {\n    uVar5 = uVar11;\n    if (uVar11 == 0) {\nLAB_0004efd7:\n      if ((local_f8 != local_124) && ((int)uVar5 < (int)param_1)) {\n        piVar9 = local_f8 + uVar5;\n        piVar8 = local_124 + uVar5;\n        do {\n          iVar10 = *piVar9;\n          piVar9 = piVar9 + 1;\n          *piVar8 = iVar10;\n          piVar8 = piVar8 + 1;\n        } while ((int *)((int)local_f8 + local_128 + 4) != piVar9);\n      }\n    }\n    else {\n      *(uint *)(puVar14 + -4) = uVar11;\n      *(int *)(puVar14 + -8) = iVar10;\n      *(int **)(puVar14 + -0xc) = local_f8;\n      *(int **)(puVar14 + -0x10) = local_124;\n      *(undefined4 *)(puVar14 + -0x14) = 0x4f0a5;\n      iVar10 = __gmpn_sub_n();\n      if (iVar10 == 0) goto LAB_0004efd7;\n      if (param_1 != uVar11) {\n        local_c0 = (uint *)(uVar11 * 4);\n        uVar5 = uVar11 + 1;\n        iVar10 = local_f8[uVar11];\n        local_124[uVar11] = iVar10 + -1;\n        if (iVar10 == 0) {\n          if ((int)param_1 <= (int)uVar5) goto LAB_0004f017;\n          iVar10 = local_f8[uVar11 + 1];\n          local_124[uVar11 + 1] = iVar10 + -1;\n          uVar5 = uVar11 + 2;\n          while (iVar10 == 0) {\n            if (param_1 == uVar5) goto LAB_0004f017;\n            iVar10 = local_f8[uVar5];\n            local_124[uVar5] = iVar10 + -1;\n            uVar5 = uVar5 + 1;\n          }\n        }\n        goto LAB_0004efd7;\n      }\n    }\nLAB_0004f017:\n    iVar10 = local_124[local_134];\n    uStack_d8 = param_1;\n    while (uVar16 = CONCAT44(local_124,local_c0), iVar10 == 0) {\n      iVar10 = local_124[uStack_d8 - 2];\n      uStack_d8 = uStack_d8 - 1;\n    }\n  }" if (parenthesized_expression "(local_124 == (int *)0x0)" ( (binary_expression "local_124 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    uStack_d8 = 1;\n  }" { (expression_statement "uStack_d8 = 1;" (assignment_expression "uStack_d8 = 1" identifier = number_literal) ;) }) (else_clause "else {\n    uVar5 = uVar11;\n    if (uVar11 == 0) {\nLAB_0004efd7:\n      if ((local_f8 != local_124) && ((int)uVar5 < (int)param_1)) {\n        piVar9 = local_f8 + uVar5;\n        piVar8 = local_124 + uVar5;\n        do {\n          iVar10 = *piVar9;\n          piVar9 = piVar9 + 1;\n          *piVar8 = iVar10;\n          piVar8 = piVar8 + 1;\n        } while ((int *)((int)local_f8 + local_128 + 4) != piVar9);\n      }\n    }\n    else {\n      *(uint *)(puVar14 + -4) = uVar11;\n      *(int *)(puVar14 + -8) = iVar10;\n      *(int **)(puVar14 + -0xc) = local_f8;\n      *(int **)(puVar14 + -0x10) = local_124;\n      *(undefined4 *)(puVar14 + -0x14) = 0x4f0a5;\n      iVar10 = __gmpn_sub_n();\n      if (iVar10 == 0) goto LAB_0004efd7;\n      if (param_1 != uVar11) {\n        local_c0 = (uint *)(uVar11 * 4);\n        uVar5 = uVar11 + 1;\n        iVar10 = local_f8[uVar11];\n        local_124[uVar11] = iVar10 + -1;\n        if (iVar10 == 0) {\n          if ((int)param_1 <= (int)uVar5) goto LAB_0004f017;\n          iVar10 = local_f8[uVar11 + 1];\n          local_124[uVar11 + 1] = iVar10 + -1;\n          uVar5 = uVar11 + 2;\n          while (iVar10 == 0) {\n            if (param_1 == uVar5) goto LAB_0004f017;\n            iVar10 = local_f8[uVar5];\n            local_124[uVar5] = iVar10 + -1;\n            uVar5 = uVar5 + 1;\n          }\n        }\n        goto LAB_0004efd7;\n      }\n    }\nLAB_0004f017:\n    iVar10 = local_124[local_134];\n    uStack_d8 = param_1;\n    while (uVar16 = CONCAT44(local_124,local_c0), iVar10 == 0) {\n      iVar10 = local_124[uStack_d8 - 2];\n      uStack_d8 = uStack_d8 - 1;\n    }\n  }" else (compound_statement "{\n    uVar5 = uVar11;\n    if (uVar11 == 0) {\nLAB_0004efd7:\n      if ((local_f8 != local_124) && ((int)uVar5 < (int)param_1)) {\n        piVar9 = local_f8 + uVar5;\n        piVar8 = local_124 + uVar5;\n        do {\n          iVar10 = *piVar9;\n          piVar9 = piVar9 + 1;\n          *piVar8 = iVar10;\n          piVar8 = piVar8 + 1;\n        } while ((int *)((int)local_f8 + local_128 + 4) != piVar9);\n      }\n    }\n    else {\n      *(uint *)(puVar14 + -4) = uVar11;\n      *(int *)(puVar14 + -8) = iVar10;\n      *(int **)(puVar14 + -0xc) = local_f8;\n      *(int **)(puVar14 + -0x10) = local_124;\n      *(undefined4 *)(puVar14 + -0x14) = 0x4f0a5;\n      iVar10 = __gmpn_sub_n();\n      if (iVar10 == 0) goto LAB_0004efd7;\n      if (param_1 != uVar11) {\n        local_c0 = (uint *)(uVar11 * 4);\n        uVar5 = uVar11 + 1;\n        iVar10 = local_f8[uVar11];\n        local_124[uVar11] = iVar10 + -1;\n        if (iVar10 == 0) {\n          if ((int)param_1 <= (int)uVar5) goto LAB_0004f017;\n          iVar10 = local_f8[uVar11 + 1];\n          local_124[uVar11 + 1] = iVar10 + -1;\n          uVar5 = uVar11 + 2;\n          while (iVar10 == 0) {\n            if (param_1 == uVar5) goto LAB_0004f017;\n            iVar10 = local_f8[uVar5];\n            local_124[uVar5] = iVar10 + -1;\n            uVar5 = uVar5 + 1;\n          }\n        }\n        goto LAB_0004efd7;\n      }\n    }\nLAB_0004f017:\n    iVar10 = local_124[local_134];\n    uStack_d8 = param_1;\n    while (uVar16 = CONCAT44(local_124,local_c0), iVar10 == 0) {\n      iVar10 = local_124[uStack_d8 - 2];\n      uStack_d8 = uStack_d8 - 1;\n    }\n  }" { (expression_statement "uVar5 = uVar11;" (assignment_expression "uVar5 = uVar11" identifier = identifier) ;) (if_statement "if (uVar11 == 0) {\nLAB_0004efd7:\n      if ((local_f8 != local_124) && ((int)uVar5 < (int)param_1)) {\n        piVar9 = local_f8 + uVar5;\n        piVar8 = local_124 + uVar5;\n        do {\n          iVar10 = *piVar9;\n          piVar9 = piVar9 + 1;\n          *piVar8 = iVar10;\n          piVar8 = piVar8 + 1;\n        } while ((int *)((int)local_f8 + local_128 + 4) != piVar9);\n      }\n    }\n    else {\n      *(uint *)(puVar14 + -4) = uVar11;\n      *(int *)(puVar14 + -8) = iVar10;\n      *(int **)(puVar14 + -0xc) = local_f8;\n      *(int **)(puVar14 + -0x10) = local_124;\n      *(undefined4 *)(puVar14 + -0x14) = 0x4f0a5;\n      iVar10 = __gmpn_sub_n();\n      if (iVar10 == 0) goto LAB_0004efd7;\n      if (param_1 != uVar11) {\n        local_c0 = (uint *)(uVar11 * 4);\n        uVar5 = uVar11 + 1;\n        iVar10 = local_f8[uVar11];\n        local_124[uVar11] = iVar10 + -1;\n        if (iVar10 == 0) {\n          if ((int)param_1 <= (int)uVar5) goto LAB_0004f017;\n          iVar10 = local_f8[uVar11 + 1];\n          local_124[uVar11 + 1] = iVar10 + -1;\n          uVar5 = uVar11 + 2;\n          while (iVar10 == 0) {\n            if (param_1 == uVar5) goto LAB_0004f017;\n            iVar10 = local_f8[uVar5];\n            local_124[uVar5] = iVar10 + -1;\n            uVar5 = uVar5 + 1;\n          }\n        }\n        goto LAB_0004efd7;\n      }\n    }" if (parenthesized_expression "(uVar11 == 0)" ( (binary_expression "uVar11 == 0" identifier == number_literal) )) (compound_statement "{\nLAB_0004efd7:\n      if ((local_f8 != local_124) && ((int)uVar5 < (int)param_1)) {\n        piVar9 = local_f8 + uVar5;\n        piVar8 = local_124 + uVar5;\n        do {\n          iVar10 = *piVar9;\n          piVar9 = piVar9 + 1;\n          *piVar8 = iVar10;\n          piVar8 = piVar8 + 1;\n        } while ((int *)((int)local_f8 + local_128 + 4) != piVar9);\n      }\n    }" { (labeled_statement "LAB_0004efd7:\n      if ((local_f8 != local_124) && ((int)uVar5 < (int)param_1)) {\n        piVar9 = local_f8 + uVar5;\n        piVar8 = local_124 + uVar5;\n        do {\n          iVar10 = *piVar9;\n          piVar9 = piVar9 + 1;\n          *piVar8 = iVar10;\n          piVar8 = piVar8 + 1;\n        } while ((int *)((int)local_f8 + local_128 + 4) != piVar9);\n      }" statement_identifier : (if_statement "if ((local_f8 != local_124) && ((int)uVar5 < (int)param_1)) {\n        piVar9 = local_f8 + uVar5;\n        piVar8 = local_124 + uVar5;\n        do {\n          iVar10 = *piVar9;\n          piVar9 = piVar9 + 1;\n          *piVar8 = iVar10;\n          piVar8 = piVar8 + 1;\n        } while ((int *)((int)local_f8 + local_128 + 4) != piVar9);\n      }" if (parenthesized_expression "((local_f8 != local_124) && ((int)uVar5 < (int)param_1))" ( (binary_expression "(local_f8 != local_124) && ((int)uVar5 < (int)param_1)" (parenthesized_expression "(local_f8 != local_124)" ( (binary_expression "local_f8 != local_124" identifier != identifier) )) && (parenthesized_expression "((int)uVar5 < (int)param_1)" ( (binary_expression "(int)uVar5 < (int)param_1" (cast_expression "(int)uVar5" ( (type_descriptor "int" primitive_type) ) identifier) < (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier)) ))) )) (compound_statement "{\n        piVar9 = local_f8 + uVar5;\n        piVar8 = local_124 + uVar5;\n        do {\n          iVar10 = *piVar9;\n          piVar9 = piVar9 + 1;\n          *piVar8 = iVar10;\n          piVar8 = piVar8 + 1;\n        } while ((int *)((int)local_f8 + local_128 + 4) != piVar9);\n      }" { (expression_statement "piVar9 = local_f8 + uVar5;" (assignment_expression "piVar9 = local_f8 + uVar5" identifier = (binary_expression "local_f8 + uVar5" identifier + identifier)) ;) (expression_statement "piVar8 = local_124 + uVar5;" (assignment_expression "piVar8 = local_124 + uVar5" identifier = (binary_expression "local_124 + uVar5" identifier + identifier)) ;) (do_statement "do {\n          iVar10 = *piVar9;\n          piVar9 = piVar9 + 1;\n          *piVar8 = iVar10;\n          piVar8 = piVar8 + 1;\n        } while ((int *)((int)local_f8 + local_128 + 4) != piVar9);" do (compound_statement "{\n          iVar10 = *piVar9;\n          piVar9 = piVar9 + 1;\n          *piVar8 = iVar10;\n          piVar8 = piVar8 + 1;\n        }" { (expression_statement "iVar10 = *piVar9;" (assignment_expression "iVar10 = *piVar9" identifier = (pointer_expression "*piVar9" * identifier)) ;) (expression_statement "piVar9 = piVar9 + 1;" (assignment_expression "piVar9 = piVar9 + 1" identifier = (binary_expression "piVar9 + 1" identifier + number_literal)) ;) (expression_statement "*piVar8 = iVar10;" (assignment_expression "*piVar8 = iVar10" (pointer_expression "*piVar8" * identifier) = identifier) ;) (expression_statement "piVar8 = piVar8 + 1;" (assignment_expression "piVar8 = piVar8 + 1" identifier = (binary_expression "piVar8 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "((int *)((int)local_f8 + local_128 + 4) != piVar9)" ( (binary_expression "(int *)((int)local_f8 + local_128 + 4) != piVar9" (cast_expression "(int *)((int)local_f8 + local_128 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_f8 + local_128 + 4)" ( (binary_expression "(int)local_f8 + local_128 + 4" (binary_expression "(int)local_f8 + local_128" (cast_expression "(int)local_f8" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) + number_literal) ))) != identifier) )) ;) }))) }) (else_clause "else {\n      *(uint *)(puVar14 + -4) = uVar11;\n      *(int *)(puVar14 + -8) = iVar10;\n      *(int **)(puVar14 + -0xc) = local_f8;\n      *(int **)(puVar14 + -0x10) = local_124;\n      *(undefined4 *)(puVar14 + -0x14) = 0x4f0a5;\n      iVar10 = __gmpn_sub_n();\n      if (iVar10 == 0) goto LAB_0004efd7;\n      if (param_1 != uVar11) {\n        local_c0 = (uint *)(uVar11 * 4);\n        uVar5 = uVar11 + 1;\n        iVar10 = local_f8[uVar11];\n        local_124[uVar11] = iVar10 + -1;\n        if (iVar10 == 0) {\n          if ((int)param_1 <= (int)uVar5) goto LAB_0004f017;\n          iVar10 = local_f8[uVar11 + 1];\n          local_124[uVar11 + 1] = iVar10 + -1;\n          uVar5 = uVar11 + 2;\n          while (iVar10 == 0) {\n            if (param_1 == uVar5) goto LAB_0004f017;\n            iVar10 = local_f8[uVar5];\n            local_124[uVar5] = iVar10 + -1;\n            uVar5 = uVar5 + 1;\n          }\n        }\n        goto LAB_0004efd7;\n      }\n    }" else (compound_statement "{\n      *(uint *)(puVar14 + -4) = uVar11;\n      *(int *)(puVar14 + -8) = iVar10;\n      *(int **)(puVar14 + -0xc) = local_f8;\n      *(int **)(puVar14 + -0x10) = local_124;\n      *(undefined4 *)(puVar14 + -0x14) = 0x4f0a5;\n      iVar10 = __gmpn_sub_n();\n      if (iVar10 == 0) goto LAB_0004efd7;\n      if (param_1 != uVar11) {\n        local_c0 = (uint *)(uVar11 * 4);\n        uVar5 = uVar11 + 1;\n        iVar10 = local_f8[uVar11];\n        local_124[uVar11] = iVar10 + -1;\n        if (iVar10 == 0) {\n          if ((int)param_1 <= (int)uVar5) goto LAB_0004f017;\n          iVar10 = local_f8[uVar11 + 1];\n          local_124[uVar11 + 1] = iVar10 + -1;\n          uVar5 = uVar11 + 2;\n          while (iVar10 == 0) {\n            if (param_1 == uVar5) goto LAB_0004f017;\n            iVar10 = local_f8[uVar5];\n            local_124[uVar5] = iVar10 + -1;\n            uVar5 = uVar5 + 1;\n          }\n        }\n        goto LAB_0004efd7;\n      }\n    }" { (expression_statement "*(uint *)(puVar14 + -4) = uVar11;" (assignment_expression "*(uint *)(puVar14 + -4) = uVar11" (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) ;) (expression_statement "*(int *)(puVar14 + -8) = iVar10;" (assignment_expression "*(int *)(puVar14 + -8) = iVar10" (pointer_expression "*(int *)(puVar14 + -8)" * (cast_expression "(int *)(puVar14 + -8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar14 + -8)" ( (binary_expression "puVar14 + -8" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int **)(puVar14 + -0xc) = local_f8;" (assignment_expression "*(int **)(puVar14 + -0xc) = local_f8" (pointer_expression "*(int **)(puVar14 + -0xc)" * (cast_expression "(int **)(puVar14 + -0xc)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar14 + -0xc)" ( (binary_expression "puVar14 + -0xc" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int **)(puVar14 + -0x10) = local_124;" (assignment_expression "*(int **)(puVar14 + -0x10) = local_124" (pointer_expression "*(int **)(puVar14 + -0x10)" * (cast_expression "(int **)(puVar14 + -0x10)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar14 + -0x10)" ( (binary_expression "puVar14 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar14 + -0x14) = 0x4f0a5;" (assignment_expression "*(undefined4 *)(puVar14 + -0x14) = 0x4f0a5" (pointer_expression "*(undefined4 *)(puVar14 + -0x14)" * (cast_expression "(undefined4 *)(puVar14 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar14 + -0x14)" ( (binary_expression "puVar14 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "iVar10 = __gmpn_sub_n();" (assignment_expression "iVar10 = __gmpn_sub_n()" identifier = (call_expression "__gmpn_sub_n()" identifier (argument_list "()" ( )))) ;) (if_statement "if (iVar10 == 0) goto LAB_0004efd7;" if (parenthesized_expression "(iVar10 == 0)" ( (binary_expression "iVar10 == 0" identifier == number_literal) )) (goto_statement "goto LAB_0004efd7;" goto statement_identifier ;)) (if_statement "if (param_1 != uVar11) {\n        local_c0 = (uint *)(uVar11 * 4);\n        uVar5 = uVar11 + 1;\n        iVar10 = local_f8[uVar11];\n        local_124[uVar11] = iVar10 + -1;\n        if (iVar10 == 0) {\n          if ((int)param_1 <= (int)uVar5) goto LAB_0004f017;\n          iVar10 = local_f8[uVar11 + 1];\n          local_124[uVar11 + 1] = iVar10 + -1;\n          uVar5 = uVar11 + 2;\n          while (iVar10 == 0) {\n            if (param_1 == uVar5) goto LAB_0004f017;\n            iVar10 = local_f8[uVar5];\n            local_124[uVar5] = iVar10 + -1;\n            uVar5 = uVar5 + 1;\n          }\n        }\n        goto LAB_0004efd7;\n      }" if (parenthesized_expression "(param_1 != uVar11)" ( (binary_expression "param_1 != uVar11" identifier != identifier) )) (compound_statement "{\n        local_c0 = (uint *)(uVar11 * 4);\n        uVar5 = uVar11 + 1;\n        iVar10 = local_f8[uVar11];\n        local_124[uVar11] = iVar10 + -1;\n        if (iVar10 == 0) {\n          if ((int)param_1 <= (int)uVar5) goto LAB_0004f017;\n          iVar10 = local_f8[uVar11 + 1];\n          local_124[uVar11 + 1] = iVar10 + -1;\n          uVar5 = uVar11 + 2;\n          while (iVar10 == 0) {\n            if (param_1 == uVar5) goto LAB_0004f017;\n            iVar10 = local_f8[uVar5];\n            local_124[uVar5] = iVar10 + -1;\n            uVar5 = uVar5 + 1;\n          }\n        }\n        goto LAB_0004efd7;\n      }" { (expression_statement "local_c0 = (uint *)(uVar11 * 4);" (assignment_expression "local_c0 = (uint *)(uVar11 * 4)" identifier = (cast_expression "(uint *)(uVar11 * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar11 * 4)" ( (binary_expression "uVar11 * 4" identifier * number_literal) )))) ;) (expression_statement "uVar5 = uVar11 + 1;" (assignment_expression "uVar5 = uVar11 + 1" identifier = (binary_expression "uVar11 + 1" identifier + number_literal)) ;) (expression_statement "iVar10 = local_f8[uVar11];" (assignment_expression "iVar10 = local_f8[uVar11]" identifier = (subscript_expression "local_f8[uVar11]" identifier [ identifier ])) ;) (expression_statement "local_124[uVar11] = iVar10 + -1;" (assignment_expression "local_124[uVar11] = iVar10 + -1" (subscript_expression "local_124[uVar11]" identifier [ identifier ]) = (binary_expression "iVar10 + -1" identifier + number_literal)) ;) (if_statement "if (iVar10 == 0) {\n          if ((int)param_1 <= (int)uVar5) goto LAB_0004f017;\n          iVar10 = local_f8[uVar11 + 1];\n          local_124[uVar11 + 1] = iVar10 + -1;\n          uVar5 = uVar11 + 2;\n          while (iVar10 == 0) {\n            if (param_1 == uVar5) goto LAB_0004f017;\n            iVar10 = local_f8[uVar5];\n            local_124[uVar5] = iVar10 + -1;\n            uVar5 = uVar5 + 1;\n          }\n        }" if (parenthesized_expression "(iVar10 == 0)" ( (binary_expression "iVar10 == 0" identifier == number_literal) )) (compound_statement "{\n          if ((int)param_1 <= (int)uVar5) goto LAB_0004f017;\n          iVar10 = local_f8[uVar11 + 1];\n          local_124[uVar11 + 1] = iVar10 + -1;\n          uVar5 = uVar11 + 2;\n          while (iVar10 == 0) {\n            if (param_1 == uVar5) goto LAB_0004f017;\n            iVar10 = local_f8[uVar5];\n            local_124[uVar5] = iVar10 + -1;\n            uVar5 = uVar5 + 1;\n          }\n        }" { (if_statement "if ((int)param_1 <= (int)uVar5) goto LAB_0004f017;" if (parenthesized_expression "((int)param_1 <= (int)uVar5)" ( (binary_expression "(int)param_1 <= (int)uVar5" (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier) <= (cast_expression "(int)uVar5" ( (type_descriptor "int" primitive_type) ) identifier)) )) (goto_statement "goto LAB_0004f017;" goto statement_identifier ;)) (expression_statement "iVar10 = local_f8[uVar11 + 1];" (assignment_expression "iVar10 = local_f8[uVar11 + 1]" identifier = (subscript_expression "local_f8[uVar11 + 1]" identifier [ (binary_expression "uVar11 + 1" identifier + number_literal) ])) ;) (expression_statement "local_124[uVar11 + 1] = iVar10 + -1;" (assignment_expression "local_124[uVar11 + 1] = iVar10 + -1" (subscript_expression "local_124[uVar11 + 1]" identifier [ (binary_expression "uVar11 + 1" identifier + number_literal) ]) = (binary_expression "iVar10 + -1" identifier + number_literal)) ;) (expression_statement "uVar5 = uVar11 + 2;" (assignment_expression "uVar5 = uVar11 + 2" identifier = (binary_expression "uVar11 + 2" identifier + number_literal)) ;) (while_statement "while (iVar10 == 0) {\n            if (param_1 == uVar5) goto LAB_0004f017;\n            iVar10 = local_f8[uVar5];\n            local_124[uVar5] = iVar10 + -1;\n            uVar5 = uVar5 + 1;\n          }" while (parenthesized_expression "(iVar10 == 0)" ( (binary_expression "iVar10 == 0" identifier == number_literal) )) (compound_statement "{\n            if (param_1 == uVar5) goto LAB_0004f017;\n            iVar10 = local_f8[uVar5];\n            local_124[uVar5] = iVar10 + -1;\n            uVar5 = uVar5 + 1;\n          }" { (if_statement "if (param_1 == uVar5) goto LAB_0004f017;" if (parenthesized_expression "(param_1 == uVar5)" ( (binary_expression "param_1 == uVar5" identifier == identifier) )) (goto_statement "goto LAB_0004f017;" goto statement_identifier ;)) (expression_statement "iVar10 = local_f8[uVar5];" (assignment_expression "iVar10 = local_f8[uVar5]" identifier = (subscript_expression "local_f8[uVar5]" identifier [ identifier ])) ;) (expression_statement "local_124[uVar5] = iVar10 + -1;" (assignment_expression "local_124[uVar5] = iVar10 + -1" (subscript_expression "local_124[uVar5]" identifier [ identifier ]) = (binary_expression "iVar10 + -1" identifier + number_literal)) ;) (expression_statement "uVar5 = uVar5 + 1;" (assignment_expression "uVar5 = uVar5 + 1" identifier = (binary_expression "uVar5 + 1" identifier + number_literal)) ;) })) })) (goto_statement "goto LAB_0004efd7;" goto statement_identifier ;) })) }))) (labeled_statement "LAB_0004f017:\n    iVar10 = local_124[local_134];" statement_identifier : (expression_statement "iVar10 = local_124[local_134];" (assignment_expression "iVar10 = local_124[local_134]" identifier = (subscript_expression "local_124[local_134]" identifier [ identifier ])) ;)) (expression_statement "uStack_d8 = param_1;" (assignment_expression "uStack_d8 = param_1" identifier = identifier) ;) (while_statement "while (uVar16 = CONCAT44(local_124,local_c0), iVar10 == 0) {\n      iVar10 = local_124[uStack_d8 - 2];\n      uStack_d8 = uStack_d8 - 1;\n    }" while (parenthesized_expression "(uVar16 = CONCAT44(local_124,local_c0), iVar10 == 0)" ( (comma_expression "uVar16 = CONCAT44(local_124,local_c0), iVar10 == 0" (assignment_expression "uVar16 = CONCAT44(local_124,local_c0)" identifier = (call_expression "CONCAT44(local_124,local_c0)" identifier (argument_list "(local_124,local_c0)" ( identifier , identifier )))) , (binary_expression "iVar10 == 0" identifier == number_literal)) )) (compound_statement "{\n      iVar10 = local_124[uStack_d8 - 2];\n      uStack_d8 = uStack_d8 - 1;\n    }" { (expression_statement "iVar10 = local_124[uStack_d8 - 2];" (assignment_expression "iVar10 = local_124[uStack_d8 - 2]" identifier = (subscript_expression "local_124[uStack_d8 - 2]" identifier [ (binary_expression "uStack_d8 - 2" identifier - number_literal) ])) ;) (expression_statement "uStack_d8 = uStack_d8 - 1;" (assignment_expression "uStack_d8 = uStack_d8 - 1" identifier = (binary_expression "uStack_d8 - 1" identifier - number_literal)) ;) })) })))) (goto_statement "goto LAB_0004e9e0;" goto statement_identifier ;) })))
(translation_unit "mp_size_t mpn_rootrem_internal\n                    (mp_ptr rootp,mp_ptr remp,mp_srcptr up,mp_size_t un,mp_limb_t k,int approx)\n\n{\n  int iVar1;\n  byte bVar2;\n  code *pcVar3;\n  int iVar4;\n  mp_ptr pmVar5;\n  uint uVar6;\n  mp_size_t mVar7;\n  mp_ptr pmVar8;\n  int iVar9;\n  uint *puVar10;\n  int *piVar11;\n  int *piVar12;\n  int *extraout_ECX;\n  int iVar13;\n  uint uVar14;\n  uint *puVar15;\n  uint uVar16;\n  undefined1 *puVar17;\n  int iVar18;\n  int unaff_EDI;\n  int in_GS_OFFSET;\n  ushort in_FPUControlWord;\n  undefined8 uVar19;\n  undefined1 auStack_13c [8];\n  int local_134;\n  uint uStack_130;\n  uint *puStack_12c;\n  int local_128;\n  int *local_124;\n  int *piStack_120;\n  uint *puStack_11c;\n  int iStack_118;\n  int iStack_114;\n  int iStack_110;\n  int iStack_10c;\n  int iStack_108;\n  int iStack_104;\n  uint uStack_100;\n  mp_bitcnt_t *pmStack_fc;\n  int *local_f8;\n  uint uStack_f4;\n  mp_ptr pmStack_f0;\n  uint uStack_ec;\n  uint uStack_e8;\n  uint uStack_e4;\n  int iStack_e0;\n  int iStack_dc;\n  mp_ptr pmStack_d8;\n  int *piStack_d4;\n  int iStack_d0;\n  int iStack_cc;\n  undefined4 uStack_c8;\n  int local_c4;\n  uint *local_c0;\n  int iStack_bc;\n  ushort uStack_b8;\n  ushort uStack_b6;\n  tmp_reentrant_t *__tmp_marker;\n  mp_bitcnt_t sizes [33];\n  \n  uVar19 = __x86_get_pc_thunk_di();\n  local_124 = (int *)((ulonglong)uVar19 >> 0x20);\n  local_c0 = (uint *)uVar19;\n  puVar17 = auStack_13c;\n  local_f8 = extraout_ECX;\n  local_c4 = unaff_EDI + 0x4fbe7;\n  iVar1 = *(int *)(in_GS_OFFSET + 0x14);\n  local_134 = (int)rootp + 0x3fffffff;\n  uVar14 = extraout_ECX[local_134];\n  local_128 = local_134 * 4;\n  uVar6 = 0x1f;\n  if (uVar14 != 0) {\n    for (; uVar14 >> uVar6 == 0; uVar6 = uVar6 - 1) {\n    }\n  }\n  iVar13 = (uVar6 ^ 0x1f) + 1;\n  pmVar5 = (mp_ptr)((int)rootp * 0x20 - iVar13);\n  if (pmVar5 < remp) {\n    *local_c0 = 1;\n    if (local_124 == (int *)0x0) {\n      iVar13 = *extraout_ECX + -1;\n    }\n    else {\n      iVar13 = *extraout_ECX;\n      *local_124 = iVar13 + -1;\n      if (iVar13 == 0) {\n        if (1 < (int)rootp) {\n          iVar13 = extraout_ECX[1];\n          local_124[1] = iVar13 + -1;\n          if (iVar13 == 0) {\n            if (rootp == (mp_ptr)0x2) goto LAB_0004ef98;\n            iVar13 = extraout_ECX[2];\n            pmVar5 = (mp_ptr)0x3;\n            local_124[2] = iVar13 + -1;\n            while (iVar13 == 0) {\n              if (rootp == pmVar5) goto LAB_0004ef98;\n              iVar13 = extraout_ECX[(int)pmVar5];\n              local_124[(int)pmVar5] = iVar13 + -1;\n              pmVar5 = (mp_ptr)((int)pmVar5 + 1);\n            }\n          }\n          else {\n            pmVar5 = (mp_ptr)0x2;\n          }\n          if ((extraout_ECX != local_124) && ((int)pmVar5 < (int)rootp)) {\n            piVar12 = extraout_ECX + (int)pmVar5;\n            piVar11 = local_124 + (int)pmVar5;\n            do {\n              iVar13 = *piVar12;\n              piVar12 = piVar12 + 1;\n              *piVar11 = iVar13;\n              piVar11 = piVar11 + 1;\n            } while (extraout_ECX + (int)(rootp + 0x10000000) != piVar12);\n          }\n        }\n      }\n      else if ((extraout_ECX != local_124) && (1 < (int)rootp)) {\n        piVar12 = extraout_ECX + 1;\n        piVar11 = local_124;\n        do {\n          piVar11 = piVar11 + 1;\n          iVar13 = *piVar12;\n          piVar12 = piVar12 + 1;\n          *piVar11 = iVar13;\n        } while (extraout_ECX + (int)(rootp + 0x10000000) != piVar12);\n      }\nLAB_0004ef98:\n      iVar13 = local_124[local_134];\n    }\n    pmStack_d8 = (mp_ptr)((int)rootp - (uint)(iVar13 == 0));\n    goto LAB_0004e9ee;\n  }\n  if (iVar13 == 0x20) {\n    uVar14 = extraout_ECX[(int)rootp + 0x3ffffffe];\n  }\n  else {\n    uVar14 = (uint)extraout_ECX[(int)rootp + (-1 - (uint)(rootp != (mp_ptr)0x1))] >>\n             (0x20 - (byte)iVar13 & 0x1f) | uVar14 << ((byte)iVar13 & 0x1f);\n  }\n  uVar14 = (uint)*(byte *)(unaff_EDI + 0x32bc7 + (uVar14 >> 0x18));\n  if (pmVar5 < (mp_ptr)0x1000000) {\n    uVar6 = ((int)pmVar5 * 0x100 | uVar14) / (uint)remp;\n    uVar14 = uVar6 & 0xff;\n    uStack_e8 = uVar6 >> 8;\n  }\n  else {\n    uStack_e8 = (uint)pmVar5 / (uint)remp;\n    uVar14 = ((uint)pmVar5 % (uint)remp << 8 | uVar14) / (uint)remp;\n  }\n  iVar13 = uStack_e8 * (int)remp;\n  bVar2 = *(byte *)(unaff_EDI + 0x32ac7 + uVar14);\n  uStack_ec = (int)remp - 1U;\n  uVar14 = 3;\n  for (uVar6 = (int)remp - 1U >> 2; uVar6 != 0; uVar6 = uVar6 >> 1) {\n    uVar14 = uVar14 + 1;\n  }\n  iVar18 = 0;\n  pmStack_fc = sizes;\n  sizes[0] = uStack_e8;\n  if (8 < uStack_e8) {\n    iVar4 = 0;\n    do {\n      while (iVar18 = iVar4, uVar14 < uStack_e8) {\n        uStack_e8 = uStack_e8 + uVar14 >> 1;\n        sizes[iVar18 + 1] = uStack_e8;\n        iVar4 = iVar18 + 1;\n        if (uStack_e8 < 9) goto LAB_0004e56d;\n      }\n      uStack_e8 = uStack_e8 - 1;\n      sizes[iVar18 + 1] = uStack_e8;\n      iVar4 = iVar18 + 1;\n    } while (uStack_e8 != 8);\n    uStack_e8 = 8;\nLAB_0004e56d:\n    iVar18 = iVar18 + 1;\n  }\n  __tmp_marker = (tmp_reentrant_t *)0x0;\n  uStack_f4 = iVar13 - uStack_e8;\n  *local_c0 = (bVar2 | 0x100) >> (8U - (char)uStack_e8 & 0x1f);\n  uStack_b6 = in_FPUControlWord;\n  uStack_c8 = 0;\n  uStack_b8 = in_FPUControlWord | 0xc00;\n  iStack_bc = (int)ROUND((double)remp * *(double *)(unaff_EDI + 0x32cc7) *\n                         (double)*(float *)(&UNK_00032ccf + unaff_EDI));\n  iStack_cc = (int)rootp + iStack_bc + 2;\n  uVar14 = ((int)rootp + iStack_cc * 2 + 1) * 4;\n  if (uVar14 < 0x7f01) {\n    iVar13 = -(uVar14 + 0x1b & 0xfffffff0);\n    puVar17 = auStack_13c + iVar13;\n    piStack_120 = (int *)((int)&uStack_130 + iVar13);\n  }\n  else {\n    piStack_120 = (int *)__gmp_tmp_reentrant_alloc(&__tmp_marker,uVar14);\n    puVar17 = auStack_13c;\n  }\n  iVar13 = (int)piStack_120 + local_128 + 8;\n  iStack_d0 = iVar13 + iStack_cc * 4;\n  piStack_d4 = local_124;\n  if (local_124 == (int *)0x0) {\n    piStack_d4 = piStack_120;\n  }\n  if (iVar18 != 0) {\n    iStack_104 = iVar18 + -1;\n    pmStack_fc = sizes;\n    iStack_cc = 1;\n    iStack_e0 = *(int *)(local_c4 + -0x26c);\n    iStack_dc = iVar13;\nLAB_0004e690:\n    uStack_e4 = uStack_f4 - uStack_e8 * uStack_ec;\n    iVar13 = (int)rootp - (uStack_e4 >> 5);\n    piVar12 = local_f8 + (uStack_e4 >> 5);\n    if ((uStack_e4 & 0x1f) == 0) {\n      *(int *)(puVar17 + -8) = iVar13;\n      *(int **)(puVar17 + -0xc) = piVar12;\n      iVar18 = iStack_e0;\n      *(int **)(puVar17 + -0x10) = piStack_d4;\n      pcVar3 = *(code **)(iVar18 + 0x28);\n      *(undefined4 *)(puVar17 + -0x14) = 0x4ed34;\n      (*pcVar3)();\n    }\n    else {\n      *(uint *)(puVar17 + -4) = uStack_e4 & 0x1f;\n      *(int *)(puVar17 + -8) = iVar13;\n      *(int **)(puVar17 + -0xc) = piVar12;\n      iVar18 = iStack_e0;\n      *(int **)(puVar17 + -0x10) = piStack_d4;\n      pcVar3 = *(code **)(iVar18 + 0x80);\n      *(undefined4 *)(puVar17 + -0x14) = 0x4e6dc;\n      (*pcVar3)();\n    }\n    piVar12 = piStack_d4;\n    iVar18 = iStack_dc;\n    pmStack_d8 = (mp_ptr)(iVar13 - (uint)(piStack_d4[iVar13 + -1] == 0));\n    do {\n      *(int *)(puVar17 + -0x10) = iVar18;\n      *(uint *)(puVar17 + -0x14) = uStack_ec;\n      *(int *)(puVar17 + -0x18) = iStack_cc;\n      *(uint **)(puVar17 + -0x1c) = local_c0;\n      *(int *)(puVar17 + -0x20) = iStack_d0;\n      *(undefined4 *)(puVar17 + -0x24) = 0x4e727;\n      mVar7 = __gmpn_pow_1(*(mp_ptr *)(puVar17 + -0x20),*(mp_srcptr *)(puVar17 + -0x1c),\n                           *(mp_size_t *)(puVar17 + -0x18),*(mp_limb_t *)(puVar17 + -0x14),\n                           *(mp_ptr *)(puVar17 + -0x10));\n      *(int *)(puVar17 + -0x10) = iStack_cc;\n      *(uint **)(puVar17 + -0x14) = local_c0;\n      *(mp_size_t *)(puVar17 + -0x18) = mVar7;\n      *(int *)(puVar17 + -0x1c) = iStack_d0;\n      *(int *)(puVar17 + -0x20) = iVar18;\n      iStack_dc = mVar7;\n      *(undefined4 *)(puVar17 + -0x24) = 0x4e74f;\n      __gmpn_mul(*(mp_ptr *)(puVar17 + -0x20),*(mp_srcptr *)(puVar17 + -0x1c),\n                 *(mp_size_t *)(puVar17 + -0x18),*(mp_srcptr *)(puVar17 + -0x14),\n                 *(mp_size_t *)(puVar17 + -0x10));\n      piVar11 = piStack_d4;\n      pmVar5 = pmStack_d8;\n      iVar13 = (iStack_cc + iStack_dc) -\n               (uint)(*(int *)(iVar18 + -4 + (iStack_cc + iStack_dc) * 4) == 0);\n      puVar10 = local_c0;\n      if (iVar13 <= (int)pmStack_d8) {\n        pmVar8 = pmStack_d8;\n        if (pmStack_d8 != (mp_ptr)iVar13) goto LAB_0004eb66;\n        do {\n          pmVar8 = (mp_ptr)((int)pmVar8 + -1);\n          if ((int)pmVar8 < 0) {\n            iStack_108 = iStack_dc;\n            iStack_114 = 0;\n            iStack_10c = iStack_104;\n            uStack_e8 = pmStack_fc[iStack_104] - pmStack_fc[iStack_104 + 1];\n            iStack_118 = pmStack_fc[iStack_104 + 1] - pmStack_fc[iStack_104];\n            pmStack_f0 = (mp_ptr)(uStack_e8 >> 5);\n            uStack_f4 = iStack_118 + uStack_e4;\n            uVar14 = uStack_e4 - 1;\n            uStack_e4 = uStack_e8 & 0x1f;\n            puVar15 = (uint *)((uVar14 >> 5) - (uStack_f4 >> 5));\n            uStack_100 = (int)pmStack_f0 * 4;\n            uVar14 = 0;\n            iStack_110 = (int)puVar15 + 1;\n            uVar6 = uStack_f4 >> 5;\n            puVar10 = (uint *)(piStack_d4 + (int)pmStack_f0);\n            iStack_dc = iVar18;\n            pmStack_d8 = pmStack_f0;\n            goto LAB_0004e83d;\n          }\n          uVar14 = *(uint *)(iVar18 + (int)pmVar8 * 4);\n        } while (uVar14 == piVar12[(int)pmVar8]);\n        if (uVar14 <= (uint)piVar12[(int)pmVar8]) goto LAB_0004eb66;\n      }\n      do {\n        uVar14 = *puVar10;\n        *puVar10 = *puVar10 - 1;\n        puVar10 = puVar10 + 1;\n      } while (uVar14 == 0);\n    } while( true );\n  }\n  iStack_cc = 1;\nLAB_0004e9ce:\n  piVar12 = local_f8;\n  if ((up == (mp_srcptr)0x0) || (*local_c0 < 2)) {\n    do {\n      *(int *)(puVar17 + -0x10) = iStack_d0;\n      *(mp_ptr *)(puVar17 + -0x14) = remp;\n      *(int *)(puVar17 + -0x18) = iStack_cc;\n      *(uint **)(puVar17 + -0x1c) = local_c0;\n      *(int *)(puVar17 + -0x20) = iVar13;\n      *(undefined4 *)(puVar17 + -0x24) = 0x4ea47;\n      pmVar5 = (mp_ptr)__gmpn_pow_1(*(mp_ptr *)(puVar17 + -0x20),*(mp_srcptr *)(puVar17 + -0x1c),\n                                    *(mp_size_t *)(puVar17 + -0x18),*(mp_limb_t *)(puVar17 + -0x14),\n                                    *(mp_ptr *)(puVar17 + -0x10));\n      puVar10 = local_c0;\n      if ((int)pmVar5 <= (int)rootp) {\n        pmVar8 = rootp;\n        if (rootp != pmVar5) goto LAB_0004efbf;\n        do {\n          pmVar8 = (mp_ptr)((int)pmVar8 + -1);\n          if ((int)pmVar8 < 0) {\n            pmStack_d8 = (mp_ptr)0x0;\n            goto LAB_0004e9e0;\n          }\n          uVar14 = *(uint *)(iVar13 + (int)pmVar8 * 4);\n        } while (uVar14 == piVar12[(int)pmVar8]);\n        if (uVar14 <= (uint)piVar12[(int)pmVar8]) goto LAB_0004efbf;\n      }\n      do {\n        uVar14 = *puVar10;\n        *puVar10 = *puVar10 - 1;\n        puVar10 = puVar10 + 1;\n      } while (uVar14 == 0);\n    } while( true );\n  }\nLAB_0004e9e0:\n  if (__tmp_marker != (tmp_reentrant_t *)0x0) {\n    *(tmp_reentrant_t **)(puVar17 + -0x10) = __tmp_marker;\n    *(undefined4 *)(puVar17 + -0x14) = 0x4f1a9;\n    __gmp_tmp_reentrant_free(*(tmp_reentrant_t **)(puVar17 + -0x10));\n  }\nLAB_0004e9ee:\n  if (iVar1 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return (mp_size_t)pmStack_d8;\n  }\n                    /* WARNING: Subroutine does not return */\n  *(undefined **)(puVar17 + -4) = &UNK_0004f214;\n  __stack_chk_fail_local();\nLAB_0004eb66:\n  iStack_108 = iStack_dc;\n  iStack_10c = iStack_104;\n  uStack_e8 = pmStack_fc[iStack_104] - pmStack_fc[iStack_104 + 1];\n  iStack_118 = pmStack_fc[iStack_104 + 1] - pmStack_fc[iStack_104];\n  pmStack_f0 = (mp_ptr)(uStack_e8 >> 5);\n  uStack_f4 = iStack_118 + uStack_e4;\n  uVar14 = uStack_f4 >> 5;\n  puStack_11c = (uint *)((uStack_e4 - 1 >> 5) - uVar14);\n  iStack_110 = (int)puStack_11c + 1;\n  uStack_e4 = uVar14;\n  iStack_dc = iVar18;\n  if (iVar13 != 0) {\n    *(int *)(puVar17 + -4) = iVar13;\n    *(int *)(puVar17 + -8) = iStack_dc;\n    *(int **)(puVar17 + -0xc) = piVar11;\n    *(int **)(puVar17 + -0x10) = piVar11;\n    pmStack_d8 = (mp_ptr)iVar13;\n    *(undefined4 *)(puVar17 + -0x14) = 0x4ee32;\n    iVar13 = __gmpn_sub_n();\n    if ((iVar13 != 0) && (pmVar5 != pmStack_d8)) {\n      iVar13 = piStack_d4[(int)pmStack_d8];\n      piStack_d4[(int)pmStack_d8] = iVar13 + -1;\n      if ((iVar13 == 0) && ((int)pmStack_d8 + 1 < (int)pmVar5)) {\n        iVar18 = (int)pmStack_d8 + 2;\n        iVar13 = piStack_d4[(int)pmStack_d8 + 1];\n        piStack_d4[(int)pmStack_d8 + 1] = iVar13 + -1;\n        for (; (iVar13 == 0 && (pmVar5 != (mp_ptr)iVar18)); iVar18 = iVar18 + 1) {\n          iVar13 = piStack_d4[iVar18];\n          piStack_d4[iVar18] = iVar13 + -1;\n        }\n      }\n    }\n  }\n  piVar12 = piStack_d4;\n  iVar18 = iStack_e0;\n  iVar13 = piStack_d4[(int)pmVar5 + -1];\n  while (iVar13 == 0) {\n    iVar13 = piStack_d4[(int)pmVar5 + -2];\n    pmVar5 = (mp_ptr)((int)pmVar5 + -1);\n  }\n  uStack_100 = (int)pmStack_f0 * 4;\n  puVar10 = (uint *)(piStack_d4 + (int)pmStack_f0);\n  pmStack_d8 = (mp_ptr)((int)pmStack_f0 + (int)pmVar5);\n  uVar14 = uStack_e8 & 0x1f;\n  uStack_130 = uStack_e4;\n  puStack_12c = puVar10;\n  if (uVar14 == 0) {\n    uStack_e4 = uVar14;\n    *(mp_ptr *)(puVar17 + -8) = pmVar5;\n    *(int **)(puVar17 + -0xc) = piStack_d4;\n    *(uint **)(puVar17 + -0x10) = puVar10;\n    pcVar3 = *(code **)(iVar18 + 0x24);\n    *(undefined4 *)(puVar17 + -0x14) = 0x4ed9a;\n    (*pcVar3)();\n  }\n  else {\n    uStack_e4 = uVar14;\n    *(uint *)(puVar17 + -4) = uVar14;\n    *(mp_ptr *)(puVar17 + -8) = pmVar5;\n    *(int **)(puVar17 + -0xc) = piVar12;\n    iVar13 = iStack_e0;\n    *(uint **)(puVar17 + -0x10) = puVar10;\n    pcVar3 = *(code **)(iVar13 + 0x38);\n    *(undefined4 *)(puVar17 + -0x14) = 0x4ec66;\n    iVar13 = (*pcVar3)();\n    if (iVar13 != 0) {\n      piStack_d4[(int)pmStack_d8] = iVar13;\n      pmStack_d8 = (mp_ptr)((int)pmStack_d8 + 1);\n    }\n  }\n  uVar14 = *puStack_12c;\n  uVar6 = uStack_130;\n  puVar10 = puStack_12c;\n  puVar15 = puStack_11c;\n  if ((int)pmStack_f0 < (int)puStack_11c) {\n    iStack_114 = *(int *)((int)piStack_d4 + uStack_100 + 4);\n  }\nLAB_0004e83d:\n  piVar12 = local_f8 + uVar6;\n  puStack_11c = puVar10;\n  if ((uStack_f4 & 0x1f) == 0) {\n    *(int *)(puVar17 + -8) = iStack_110;\n    *(int **)(puVar17 + -0xc) = piVar12;\n    *(int **)(puVar17 + -0x10) = piStack_d4;\n    pcVar3 = *(code **)(iStack_e0 + 0x28);\n    *(undefined4 *)(puVar17 + -0x14) = 0x4ed09;\n    (*pcVar3)();\n  }\n  else {\n    *(uint *)(puVar17 + -4) = uStack_f4 & 0x1f;\n    *(int *)(puVar17 + -8) = iStack_110;\n    *(int **)(puVar17 + -0xc) = piVar12;\n    iVar13 = iStack_e0;\n    *(int **)(puVar17 + -0x10) = piStack_d4;\n    pcVar3 = *(code **)(iVar13 + 0x80);\n    *(undefined4 *)(puVar17 + -0x14) = 0x4e875;\n    (*pcVar3)();\n  }\n  iVar18 = iStack_d0;\n  iVar13 = iStack_108;\n  *puStack_11c = uVar14 | ~(-1 << ((byte)uStack_e4 & 0x1f)) & *puStack_11c;\n  if ((int)pmStack_f0 < (int)puVar15) {\n    piStack_d4[(int)pmStack_f0 + 1] = iStack_114;\n  }\n  *(mp_ptr *)(puVar17 + -4) = remp;\n  iVar4 = iStack_e0;\n  *(int *)(puVar17 + -8) = iVar13;\n  *(int *)(puVar17 + -0xc) = iVar18;\n  *(int *)(puVar17 + -0x10) = iVar18;\n  pcVar3 = *(code **)(iVar4 + 100);\n  *(undefined4 *)(puVar17 + -0x14) = 0x4e8c9;\n  iVar9 = (*pcVar3)();\n  puVar10 = local_c0;\n  iVar4 = iStack_cc;\n  *(int *)(iVar18 + iVar13 * 4) = iVar9;\n  iVar13 = (uint)(iVar9 != 0) + iVar13;\n  puVar15 = (uint *)(uStack_100 + (int)local_c0);\n  iVar18 = (int)pmStack_f0 + iStack_cc;\n  if (uStack_e4 == 0) {\n    *(int *)(puVar17 + -8) = iStack_cc;\n    *(uint **)(puVar17 + -0xc) = local_c0;\n    *(uint **)(puVar17 + -0x10) = puVar15;\n    pcVar3 = *(code **)(iStack_e0 + 0x24);\n    *(undefined4 *)(puVar17 + -0x14) = 0x4ecd9;\n    (*pcVar3)();\nLAB_0004ecdc:\n    iStack_cc = iVar18;\n  }\n  else {\n    *(uint *)(puVar17 + -4) = uStack_e4;\n    *(int *)(puVar17 + -8) = iVar4;\n    *(uint **)(puVar17 + -0xc) = puVar10;\n    *(uint **)(puVar17 + -0x10) = puVar15;\n    pcVar3 = *(code **)(iStack_e0 + 0x38);\n    *(undefined4 *)(puVar17 + -0x14) = 0x4e915;\n    uVar14 = (*pcVar3)();\n    if (uVar14 == 0) goto LAB_0004ecdc;\n    local_c0[iVar18] = uVar14;\n    iStack_cc = iVar18 + 1;\n  }\n  pmStack_f0 = (mp_ptr)*puVar15;\n  uVar6 = uStack_e8 - 1 >> 5;\n  uVar14 = uVar6 + 1;\n  if ((int)pmStack_d8 < iVar13) {\n    *(uint *)(puVar17 + -8) = uVar14 * 4;\n    *(undefined4 *)(puVar17 + -0xc) = 0;\n    *(uint **)(puVar17 + -0x10) = local_c0;\n    *(undefined4 *)(puVar17 + -0x14) = 0x4ee04;\n    memset(*(void **)(puVar17 + -0x10),*(int *)(puVar17 + -0xc),*(size_t *)(puVar17 + -8));\n    goto LAB_0004e9ab;\n  }\n  iVar18 = (int)pmStack_d8 - iVar13;\n  if (iVar18 <= (int)uVar14) {\n    *(int **)(puVar17 + -0xc) = piStack_120;\n    *(int *)(puVar17 + -0x10) = iVar13;\n    *(int *)(puVar17 + -0x14) = iStack_d0;\n    *(mp_ptr *)(puVar17 + -0x18) = pmStack_d8;\n    *(int **)(puVar17 + -0x1c) = piStack_d4;\n    *(int *)(puVar17 + -0x20) = iStack_dc;\n    iStack_108 = iVar18;\n    uStack_100 = uVar14;\n    *(undefined4 *)(puVar17 + -0x24) = 0x4ead1;\n    __gmpn_div_q(*(mp_ptr *)(puVar17 + -0x20),*(mp_srcptr *)(puVar17 + -0x1c),\n                 *(mp_size_t *)(puVar17 + -0x18),*(mp_srcptr *)(puVar17 + -0x14),\n                 *(mp_size_t *)(puVar17 + -0x10),*(mp_ptr *)(puVar17 + -0xc));\n    puVar10 = local_c0;\n    iVar13 = iStack_e0;\n    uVar16 = (uint)(*(int *)(iStack_dc + iStack_108 * 4) != 0) + iStack_108;\n    uVar14 = uStack_100;\n    if ((int)uVar16 <= (int)uStack_100) {\n      if ((uStack_100 != uVar16) || (uStack_e4 == 0)) {\n        uStack_e4 = uStack_100;\n        *(uint *)(puVar17 + -8) = uVar16;\n        *(int *)(puVar17 + -0xc) = iStack_dc;\n        *(uint **)(puVar17 + -0x10) = puVar10;\n        pcVar3 = *(code **)(iVar13 + 0x28);\n        *(undefined4 *)(puVar17 + -0x14) = 0x4eb2a;\n        (*pcVar3)();\n        if (uStack_e4 != uVar16) {\n          *(uint *)(puVar17 + -8) = (uStack_e4 - uVar16) * 4;\n          *(undefined4 *)(puVar17 + -0xc) = 0;\n          *(uint **)(puVar17 + -0x10) = puVar10 + uVar16;\n          *(undefined4 *)(puVar17 + -0x14) = 0x4eb55;\n          memset(*(void **)(puVar17 + -0x10),*(int *)(puVar17 + -0xc),*(size_t *)(puVar17 + -8));\n        }\n        goto LAB_0004e9ab;\n      }\n      if (*(uint *)(iStack_dc + -4 + uVar16 * 4) >> ((byte)uStack_e4 & 0x1f) == 0) {\n        *(uint *)(puVar17 + -8) = uVar16;\n        *(int *)(puVar17 + -0xc) = iStack_dc;\n        *(uint **)(puVar17 + -0x10) = local_c0;\n        pcVar3 = *(code **)(iVar13 + 0x28);\n        *(undefined4 *)(puVar17 + -0x14) = 0x4ede2;\n        (*pcVar3)();\n        goto LAB_0004e9ab;\n      }\n    }\n  }\n  puVar10 = local_c0;\n  if (uVar14 != 1) {\n    *(uint *)(puVar17 + -8) = uVar6 * 4;\n    *(undefined4 *)(puVar17 + -0xc) = 0xff;\n    *(uint **)(puVar17 + -0x10) = local_c0;\n    *(undefined4 *)(puVar17 + -0x14) = 0x4e98f;\n    memset(*(void **)(puVar17 + -0x10),*(int *)(puVar17 + -0xc),*(size_t *)(puVar17 + -8));\n    puVar10 = local_c0 + uVar6;\n  }\n  *puVar10 = 0xffffffff >> ((byte)iStack_118 & 0x1f);\nLAB_0004e9ab:\n  iStack_104 = iStack_104 + -1;\n  *puVar15 = *puVar15 | (uint)pmStack_f0;\n  iVar13 = iStack_dc;\n  if (iStack_10c == 0) goto LAB_0004e9ce;\n  goto LAB_0004e690;\nLAB_0004efbf:\n  if (local_124 == (int *)0x0) {\n    pmStack_d8 = (mp_ptr)0x1;\n  }\n  else {\n    pmVar8 = pmVar5;\n    if (pmVar5 == (mp_ptr)0x0) {\nLAB_0004efd7:\n      if ((local_f8 != local_124) && ((int)pmVar8 < (int)rootp)) {\n        piVar12 = local_f8 + (int)pmVar8;\n        piVar11 = local_124 + (int)pmVar8;\n        do {\n          iVar13 = *piVar12;\n          piVar12 = piVar12 + 1;\n          *piVar11 = iVar13;\n          piVar11 = piVar11 + 1;\n        } while ((int *)((int)local_f8 + local_128 + 4) != piVar12);\n      }\n    }\n    else {\n      *(mp_ptr *)(puVar17 + -4) = pmVar5;\n      *(int *)(puVar17 + -8) = iVar13;\n      *(int **)(puVar17 + -0xc) = local_f8;\n      *(int **)(puVar17 + -0x10) = local_124;\n      *(undefined4 *)(puVar17 + -0x14) = 0x4f0a5;\n      iVar13 = __gmpn_sub_n();\n      if (iVar13 == 0) goto LAB_0004efd7;\n      if (rootp != pmVar5) {\n        pmVar8 = (mp_ptr)((int)pmVar5 + 1);\n        local_c0 = (uint *)((int)pmVar5 * 4);\n        iVar13 = local_f8[(int)pmVar5];\n        local_124[(int)pmVar5] = iVar13 + -1;\n        if (iVar13 == 0) {\n          if ((int)rootp <= (int)pmVar8) goto LAB_0004f017;\n          iVar13 = local_f8[(int)pmVar5 + 1];\n          local_124[(int)pmVar5 + 1] = iVar13 + -1;\n          pmVar8 = (mp_ptr)((int)pmVar5 + 2);\n          while (iVar13 == 0) {\n            if (rootp == pmVar8) goto LAB_0004f017;\n            iVar13 = local_f8[(int)pmVar8];\n            local_124[(int)pmVar8] = iVar13 + -1;\n            pmVar8 = (mp_ptr)((int)pmVar8 + 1);\n          }\n        }\n        goto LAB_0004efd7;\n      }\n    }\nLAB_0004f017:\n    iVar13 = local_124[local_134];\n    while (iVar13 == 0) {\n      iVar13 = local_124[(int)rootp - 2];\n      rootp = (mp_ptr)((int)rootp - 1);\n    }\n    pmStack_d8 = rootp;\n  }\n  goto LAB_0004e9e0;\n}\n\n" (function_definition "mp_size_t mpn_rootrem_internal\n                    (mp_ptr rootp,mp_ptr remp,mp_srcptr up,mp_size_t un,mp_limb_t k,int approx)\n\n{\n  int iVar1;\n  byte bVar2;\n  code *pcVar3;\n  int iVar4;\n  mp_ptr pmVar5;\n  uint uVar6;\n  mp_size_t mVar7;\n  mp_ptr pmVar8;\n  int iVar9;\n  uint *puVar10;\n  int *piVar11;\n  int *piVar12;\n  int *extraout_ECX;\n  int iVar13;\n  uint uVar14;\n  uint *puVar15;\n  uint uVar16;\n  undefined1 *puVar17;\n  int iVar18;\n  int unaff_EDI;\n  int in_GS_OFFSET;\n  ushort in_FPUControlWord;\n  undefined8 uVar19;\n  undefined1 auStack_13c [8];\n  int local_134;\n  uint uStack_130;\n  uint *puStack_12c;\n  int local_128;\n  int *local_124;\n  int *piStack_120;\n  uint *puStack_11c;\n  int iStack_118;\n  int iStack_114;\n  int iStack_110;\n  int iStack_10c;\n  int iStack_108;\n  int iStack_104;\n  uint uStack_100;\n  mp_bitcnt_t *pmStack_fc;\n  int *local_f8;\n  uint uStack_f4;\n  mp_ptr pmStack_f0;\n  uint uStack_ec;\n  uint uStack_e8;\n  uint uStack_e4;\n  int iStack_e0;\n  int iStack_dc;\n  mp_ptr pmStack_d8;\n  int *piStack_d4;\n  int iStack_d0;\n  int iStack_cc;\n  undefined4 uStack_c8;\n  int local_c4;\n  uint *local_c0;\n  int iStack_bc;\n  ushort uStack_b8;\n  ushort uStack_b6;\n  tmp_reentrant_t *__tmp_marker;\n  mp_bitcnt_t sizes [33];\n  \n  uVar19 = __x86_get_pc_thunk_di();\n  local_124 = (int *)((ulonglong)uVar19 >> 0x20);\n  local_c0 = (uint *)uVar19;\n  puVar17 = auStack_13c;\n  local_f8 = extraout_ECX;\n  local_c4 = unaff_EDI + 0x4fbe7;\n  iVar1 = *(int *)(in_GS_OFFSET + 0x14);\n  local_134 = (int)rootp + 0x3fffffff;\n  uVar14 = extraout_ECX[local_134];\n  local_128 = local_134 * 4;\n  uVar6 = 0x1f;\n  if (uVar14 != 0) {\n    for (; uVar14 >> uVar6 == 0; uVar6 = uVar6 - 1) {\n    }\n  }\n  iVar13 = (uVar6 ^ 0x1f) + 1;\n  pmVar5 = (mp_ptr)((int)rootp * 0x20 - iVar13);\n  if (pmVar5 < remp) {\n    *local_c0 = 1;\n    if (local_124 == (int *)0x0) {\n      iVar13 = *extraout_ECX + -1;\n    }\n    else {\n      iVar13 = *extraout_ECX;\n      *local_124 = iVar13 + -1;\n      if (iVar13 == 0) {\n        if (1 < (int)rootp) {\n          iVar13 = extraout_ECX[1];\n          local_124[1] = iVar13 + -1;\n          if (iVar13 == 0) {\n            if (rootp == (mp_ptr)0x2) goto LAB_0004ef98;\n            iVar13 = extraout_ECX[2];\n            pmVar5 = (mp_ptr)0x3;\n            local_124[2] = iVar13 + -1;\n            while (iVar13 == 0) {\n              if (rootp == pmVar5) goto LAB_0004ef98;\n              iVar13 = extraout_ECX[(int)pmVar5];\n              local_124[(int)pmVar5] = iVar13 + -1;\n              pmVar5 = (mp_ptr)((int)pmVar5 + 1);\n            }\n          }\n          else {\n            pmVar5 = (mp_ptr)0x2;\n          }\n          if ((extraout_ECX != local_124) && ((int)pmVar5 < (int)rootp)) {\n            piVar12 = extraout_ECX + (int)pmVar5;\n            piVar11 = local_124 + (int)pmVar5;\n            do {\n              iVar13 = *piVar12;\n              piVar12 = piVar12 + 1;\n              *piVar11 = iVar13;\n              piVar11 = piVar11 + 1;\n            } while (extraout_ECX + (int)(rootp + 0x10000000) != piVar12);\n          }\n        }\n      }\n      else if ((extraout_ECX != local_124) && (1 < (int)rootp)) {\n        piVar12 = extraout_ECX + 1;\n        piVar11 = local_124;\n        do {\n          piVar11 = piVar11 + 1;\n          iVar13 = *piVar12;\n          piVar12 = piVar12 + 1;\n          *piVar11 = iVar13;\n        } while (extraout_ECX + (int)(rootp + 0x10000000) != piVar12);\n      }\nLAB_0004ef98:\n      iVar13 = local_124[local_134];\n    }\n    pmStack_d8 = (mp_ptr)((int)rootp - (uint)(iVar13 == 0));\n    goto LAB_0004e9ee;\n  }\n  if (iVar13 == 0x20) {\n    uVar14 = extraout_ECX[(int)rootp + 0x3ffffffe];\n  }\n  else {\n    uVar14 = (uint)extraout_ECX[(int)rootp + (-1 - (uint)(rootp != (mp_ptr)0x1))] >>\n             (0x20 - (byte)iVar13 & 0x1f) | uVar14 << ((byte)iVar13 & 0x1f);\n  }\n  uVar14 = (uint)*(byte *)(unaff_EDI + 0x32bc7 + (uVar14 >> 0x18));\n  if (pmVar5 < (mp_ptr)0x1000000) {\n    uVar6 = ((int)pmVar5 * 0x100 | uVar14) / (uint)remp;\n    uVar14 = uVar6 & 0xff;\n    uStack_e8 = uVar6 >> 8;\n  }\n  else {\n    uStack_e8 = (uint)pmVar5 / (uint)remp;\n    uVar14 = ((uint)pmVar5 % (uint)remp << 8 | uVar14) / (uint)remp;\n  }\n  iVar13 = uStack_e8 * (int)remp;\n  bVar2 = *(byte *)(unaff_EDI + 0x32ac7 + uVar14);\n  uStack_ec = (int)remp - 1U;\n  uVar14 = 3;\n  for (uVar6 = (int)remp - 1U >> 2; uVar6 != 0; uVar6 = uVar6 >> 1) {\n    uVar14 = uVar14 + 1;\n  }\n  iVar18 = 0;\n  pmStack_fc = sizes;\n  sizes[0] = uStack_e8;\n  if (8 < uStack_e8) {\n    iVar4 = 0;\n    do {\n      while (iVar18 = iVar4, uVar14 < uStack_e8) {\n        uStack_e8 = uStack_e8 + uVar14 >> 1;\n        sizes[iVar18 + 1] = uStack_e8;\n        iVar4 = iVar18 + 1;\n        if (uStack_e8 < 9) goto LAB_0004e56d;\n      }\n      uStack_e8 = uStack_e8 - 1;\n      sizes[iVar18 + 1] = uStack_e8;\n      iVar4 = iVar18 + 1;\n    } while (uStack_e8 != 8);\n    uStack_e8 = 8;\nLAB_0004e56d:\n    iVar18 = iVar18 + 1;\n  }\n  __tmp_marker = (tmp_reentrant_t *)0x0;\n  uStack_f4 = iVar13 - uStack_e8;\n  *local_c0 = (bVar2 | 0x100) >> (8U - (char)uStack_e8 & 0x1f);\n  uStack_b6 = in_FPUControlWord;\n  uStack_c8 = 0;\n  uStack_b8 = in_FPUControlWord | 0xc00;\n  iStack_bc = (int)ROUND((double)remp * *(double *)(unaff_EDI + 0x32cc7) *\n                         (double)*(float *)(&UNK_00032ccf + unaff_EDI));\n  iStack_cc = (int)rootp + iStack_bc + 2;\n  uVar14 = ((int)rootp + iStack_cc * 2 + 1) * 4;\n  if (uVar14 < 0x7f01) {\n    iVar13 = -(uVar14 + 0x1b & 0xfffffff0);\n    puVar17 = auStack_13c + iVar13;\n    piStack_120 = (int *)((int)&uStack_130 + iVar13);\n  }\n  else {\n    piStack_120 = (int *)__gmp_tmp_reentrant_alloc(&__tmp_marker,uVar14);\n    puVar17 = auStack_13c;\n  }\n  iVar13 = (int)piStack_120 + local_128 + 8;\n  iStack_d0 = iVar13 + iStack_cc * 4;\n  piStack_d4 = local_124;\n  if (local_124 == (int *)0x0) {\n    piStack_d4 = piStack_120;\n  }\n  if (iVar18 != 0) {\n    iStack_104 = iVar18 + -1;\n    pmStack_fc = sizes;\n    iStack_cc = 1;\n    iStack_e0 = *(int *)(local_c4 + -0x26c);\n    iStack_dc = iVar13;\nLAB_0004e690:\n    uStack_e4 = uStack_f4 - uStack_e8 * uStack_ec;\n    iVar13 = (int)rootp - (uStack_e4 >> 5);\n    piVar12 = local_f8 + (uStack_e4 >> 5);\n    if ((uStack_e4 & 0x1f) == 0) {\n      *(int *)(puVar17 + -8) = iVar13;\n      *(int **)(puVar17 + -0xc) = piVar12;\n      iVar18 = iStack_e0;\n      *(int **)(puVar17 + -0x10) = piStack_d4;\n      pcVar3 = *(code **)(iVar18 + 0x28);\n      *(undefined4 *)(puVar17 + -0x14) = 0x4ed34;\n      (*pcVar3)();\n    }\n    else {\n      *(uint *)(puVar17 + -4) = uStack_e4 & 0x1f;\n      *(int *)(puVar17 + -8) = iVar13;\n      *(int **)(puVar17 + -0xc) = piVar12;\n      iVar18 = iStack_e0;\n      *(int **)(puVar17 + -0x10) = piStack_d4;\n      pcVar3 = *(code **)(iVar18 + 0x80);\n      *(undefined4 *)(puVar17 + -0x14) = 0x4e6dc;\n      (*pcVar3)();\n    }\n    piVar12 = piStack_d4;\n    iVar18 = iStack_dc;\n    pmStack_d8 = (mp_ptr)(iVar13 - (uint)(piStack_d4[iVar13 + -1] == 0));\n    do {\n      *(int *)(puVar17 + -0x10) = iVar18;\n      *(uint *)(puVar17 + -0x14) = uStack_ec;\n      *(int *)(puVar17 + -0x18) = iStack_cc;\n      *(uint **)(puVar17 + -0x1c) = local_c0;\n      *(int *)(puVar17 + -0x20) = iStack_d0;\n      *(undefined4 *)(puVar17 + -0x24) = 0x4e727;\n      mVar7 = __gmpn_pow_1(*(mp_ptr *)(puVar17 + -0x20),*(mp_srcptr *)(puVar17 + -0x1c),\n                           *(mp_size_t *)(puVar17 + -0x18),*(mp_limb_t *)(puVar17 + -0x14),\n                           *(mp_ptr *)(puVar17 + -0x10));\n      *(int *)(puVar17 + -0x10) = iStack_cc;\n      *(uint **)(puVar17 + -0x14) = local_c0;\n      *(mp_size_t *)(puVar17 + -0x18) = mVar7;\n      *(int *)(puVar17 + -0x1c) = iStack_d0;\n      *(int *)(puVar17 + -0x20) = iVar18;\n      iStack_dc = mVar7;\n      *(undefined4 *)(puVar17 + -0x24) = 0x4e74f;\n      __gmpn_mul(*(mp_ptr *)(puVar17 + -0x20),*(mp_srcptr *)(puVar17 + -0x1c),\n                 *(mp_size_t *)(puVar17 + -0x18),*(mp_srcptr *)(puVar17 + -0x14),\n                 *(mp_size_t *)(puVar17 + -0x10));\n      piVar11 = piStack_d4;\n      pmVar5 = pmStack_d8;\n      iVar13 = (iStack_cc + iStack_dc) -\n               (uint)(*(int *)(iVar18 + -4 + (iStack_cc + iStack_dc) * 4) == 0);\n      puVar10 = local_c0;\n      if (iVar13 <= (int)pmStack_d8) {\n        pmVar8 = pmStack_d8;\n        if (pmStack_d8 != (mp_ptr)iVar13) goto LAB_0004eb66;\n        do {\n          pmVar8 = (mp_ptr)((int)pmVar8 + -1);\n          if ((int)pmVar8 < 0) {\n            iStack_108 = iStack_dc;\n            iStack_114 = 0;\n            iStack_10c = iStack_104;\n            uStack_e8 = pmStack_fc[iStack_104] - pmStack_fc[iStack_104 + 1];\n            iStack_118 = pmStack_fc[iStack_104 + 1] - pmStack_fc[iStack_104];\n            pmStack_f0 = (mp_ptr)(uStack_e8 >> 5);\n            uStack_f4 = iStack_118 + uStack_e4;\n            uVar14 = uStack_e4 - 1;\n            uStack_e4 = uStack_e8 & 0x1f;\n            puVar15 = (uint *)((uVar14 >> 5) - (uStack_f4 >> 5));\n            uStack_100 = (int)pmStack_f0 * 4;\n            uVar14 = 0;\n            iStack_110 = (int)puVar15 + 1;\n            uVar6 = uStack_f4 >> 5;\n            puVar10 = (uint *)(piStack_d4 + (int)pmStack_f0);\n            iStack_dc = iVar18;\n            pmStack_d8 = pmStack_f0;\n            goto LAB_0004e83d;\n          }\n          uVar14 = *(uint *)(iVar18 + (int)pmVar8 * 4);\n        } while (uVar14 == piVar12[(int)pmVar8]);\n        if (uVar14 <= (uint)piVar12[(int)pmVar8]) goto LAB_0004eb66;\n      }\n      do {\n        uVar14 = *puVar10;\n        *puVar10 = *puVar10 - 1;\n        puVar10 = puVar10 + 1;\n      } while (uVar14 == 0);\n    } while( true );\n  }\n  iStack_cc = 1;\nLAB_0004e9ce:\n  piVar12 = local_f8;\n  if ((up == (mp_srcptr)0x0) || (*local_c0 < 2)) {\n    do {\n      *(int *)(puVar17 + -0x10) = iStack_d0;\n      *(mp_ptr *)(puVar17 + -0x14) = remp;\n      *(int *)(puVar17 + -0x18) = iStack_cc;\n      *(uint **)(puVar17 + -0x1c) = local_c0;\n      *(int *)(puVar17 + -0x20) = iVar13;\n      *(undefined4 *)(puVar17 + -0x24) = 0x4ea47;\n      pmVar5 = (mp_ptr)__gmpn_pow_1(*(mp_ptr *)(puVar17 + -0x20),*(mp_srcptr *)(puVar17 + -0x1c),\n                                    *(mp_size_t *)(puVar17 + -0x18),*(mp_limb_t *)(puVar17 + -0x14),\n                                    *(mp_ptr *)(puVar17 + -0x10));\n      puVar10 = local_c0;\n      if ((int)pmVar5 <= (int)rootp) {\n        pmVar8 = rootp;\n        if (rootp != pmVar5) goto LAB_0004efbf;\n        do {\n          pmVar8 = (mp_ptr)((int)pmVar8 + -1);\n          if ((int)pmVar8 < 0) {\n            pmStack_d8 = (mp_ptr)0x0;\n            goto LAB_0004e9e0;\n          }\n          uVar14 = *(uint *)(iVar13 + (int)pmVar8 * 4);\n        } while (uVar14 == piVar12[(int)pmVar8]);\n        if (uVar14 <= (uint)piVar12[(int)pmVar8]) goto LAB_0004efbf;\n      }\n      do {\n        uVar14 = *puVar10;\n        *puVar10 = *puVar10 - 1;\n        puVar10 = puVar10 + 1;\n      } while (uVar14 == 0);\n    } while( true );\n  }\nLAB_0004e9e0:\n  if (__tmp_marker != (tmp_reentrant_t *)0x0) {\n    *(tmp_reentrant_t **)(puVar17 + -0x10) = __tmp_marker;\n    *(undefined4 *)(puVar17 + -0x14) = 0x4f1a9;\n    __gmp_tmp_reentrant_free(*(tmp_reentrant_t **)(puVar17 + -0x10));\n  }\nLAB_0004e9ee:\n  if (iVar1 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return (mp_size_t)pmStack_d8;\n  }\n                    /* WARNING: Subroutine does not return */\n  *(undefined **)(puVar17 + -4) = &UNK_0004f214;\n  __stack_chk_fail_local();\nLAB_0004eb66:\n  iStack_108 = iStack_dc;\n  iStack_10c = iStack_104;\n  uStack_e8 = pmStack_fc[iStack_104] - pmStack_fc[iStack_104 + 1];\n  iStack_118 = pmStack_fc[iStack_104 + 1] - pmStack_fc[iStack_104];\n  pmStack_f0 = (mp_ptr)(uStack_e8 >> 5);\n  uStack_f4 = iStack_118 + uStack_e4;\n  uVar14 = uStack_f4 >> 5;\n  puStack_11c = (uint *)((uStack_e4 - 1 >> 5) - uVar14);\n  iStack_110 = (int)puStack_11c + 1;\n  uStack_e4 = uVar14;\n  iStack_dc = iVar18;\n  if (iVar13 != 0) {\n    *(int *)(puVar17 + -4) = iVar13;\n    *(int *)(puVar17 + -8) = iStack_dc;\n    *(int **)(puVar17 + -0xc) = piVar11;\n    *(int **)(puVar17 + -0x10) = piVar11;\n    pmStack_d8 = (mp_ptr)iVar13;\n    *(undefined4 *)(puVar17 + -0x14) = 0x4ee32;\n    iVar13 = __gmpn_sub_n();\n    if ((iVar13 != 0) && (pmVar5 != pmStack_d8)) {\n      iVar13 = piStack_d4[(int)pmStack_d8];\n      piStack_d4[(int)pmStack_d8] = iVar13 + -1;\n      if ((iVar13 == 0) && ((int)pmStack_d8 + 1 < (int)pmVar5)) {\n        iVar18 = (int)pmStack_d8 + 2;\n        iVar13 = piStack_d4[(int)pmStack_d8 + 1];\n        piStack_d4[(int)pmStack_d8 + 1] = iVar13 + -1;\n        for (; (iVar13 == 0 && (pmVar5 != (mp_ptr)iVar18)); iVar18 = iVar18 + 1) {\n          iVar13 = piStack_d4[iVar18];\n          piStack_d4[iVar18] = iVar13 + -1;\n        }\n      }\n    }\n  }\n  piVar12 = piStack_d4;\n  iVar18 = iStack_e0;\n  iVar13 = piStack_d4[(int)pmVar5 + -1];\n  while (iVar13 == 0) {\n    iVar13 = piStack_d4[(int)pmVar5 + -2];\n    pmVar5 = (mp_ptr)((int)pmVar5 + -1);\n  }\n  uStack_100 = (int)pmStack_f0 * 4;\n  puVar10 = (uint *)(piStack_d4 + (int)pmStack_f0);\n  pmStack_d8 = (mp_ptr)((int)pmStack_f0 + (int)pmVar5);\n  uVar14 = uStack_e8 & 0x1f;\n  uStack_130 = uStack_e4;\n  puStack_12c = puVar10;\n  if (uVar14 == 0) {\n    uStack_e4 = uVar14;\n    *(mp_ptr *)(puVar17 + -8) = pmVar5;\n    *(int **)(puVar17 + -0xc) = piStack_d4;\n    *(uint **)(puVar17 + -0x10) = puVar10;\n    pcVar3 = *(code **)(iVar18 + 0x24);\n    *(undefined4 *)(puVar17 + -0x14) = 0x4ed9a;\n    (*pcVar3)();\n  }\n  else {\n    uStack_e4 = uVar14;\n    *(uint *)(puVar17 + -4) = uVar14;\n    *(mp_ptr *)(puVar17 + -8) = pmVar5;\n    *(int **)(puVar17 + -0xc) = piVar12;\n    iVar13 = iStack_e0;\n    *(uint **)(puVar17 + -0x10) = puVar10;\n    pcVar3 = *(code **)(iVar13 + 0x38);\n    *(undefined4 *)(puVar17 + -0x14) = 0x4ec66;\n    iVar13 = (*pcVar3)();\n    if (iVar13 != 0) {\n      piStack_d4[(int)pmStack_d8] = iVar13;\n      pmStack_d8 = (mp_ptr)((int)pmStack_d8 + 1);\n    }\n  }\n  uVar14 = *puStack_12c;\n  uVar6 = uStack_130;\n  puVar10 = puStack_12c;\n  puVar15 = puStack_11c;\n  if ((int)pmStack_f0 < (int)puStack_11c) {\n    iStack_114 = *(int *)((int)piStack_d4 + uStack_100 + 4);\n  }\nLAB_0004e83d:\n  piVar12 = local_f8 + uVar6;\n  puStack_11c = puVar10;\n  if ((uStack_f4 & 0x1f) == 0) {\n    *(int *)(puVar17 + -8) = iStack_110;\n    *(int **)(puVar17 + -0xc) = piVar12;\n    *(int **)(puVar17 + -0x10) = piStack_d4;\n    pcVar3 = *(code **)(iStack_e0 + 0x28);\n    *(undefined4 *)(puVar17 + -0x14) = 0x4ed09;\n    (*pcVar3)();\n  }\n  else {\n    *(uint *)(puVar17 + -4) = uStack_f4 & 0x1f;\n    *(int *)(puVar17 + -8) = iStack_110;\n    *(int **)(puVar17 + -0xc) = piVar12;\n    iVar13 = iStack_e0;\n    *(int **)(puVar17 + -0x10) = piStack_d4;\n    pcVar3 = *(code **)(iVar13 + 0x80);\n    *(undefined4 *)(puVar17 + -0x14) = 0x4e875;\n    (*pcVar3)();\n  }\n  iVar18 = iStack_d0;\n  iVar13 = iStack_108;\n  *puStack_11c = uVar14 | ~(-1 << ((byte)uStack_e4 & 0x1f)) & *puStack_11c;\n  if ((int)pmStack_f0 < (int)puVar15) {\n    piStack_d4[(int)pmStack_f0 + 1] = iStack_114;\n  }\n  *(mp_ptr *)(puVar17 + -4) = remp;\n  iVar4 = iStack_e0;\n  *(int *)(puVar17 + -8) = iVar13;\n  *(int *)(puVar17 + -0xc) = iVar18;\n  *(int *)(puVar17 + -0x10) = iVar18;\n  pcVar3 = *(code **)(iVar4 + 100);\n  *(undefined4 *)(puVar17 + -0x14) = 0x4e8c9;\n  iVar9 = (*pcVar3)();\n  puVar10 = local_c0;\n  iVar4 = iStack_cc;\n  *(int *)(iVar18 + iVar13 * 4) = iVar9;\n  iVar13 = (uint)(iVar9 != 0) + iVar13;\n  puVar15 = (uint *)(uStack_100 + (int)local_c0);\n  iVar18 = (int)pmStack_f0 + iStack_cc;\n  if (uStack_e4 == 0) {\n    *(int *)(puVar17 + -8) = iStack_cc;\n    *(uint **)(puVar17 + -0xc) = local_c0;\n    *(uint **)(puVar17 + -0x10) = puVar15;\n    pcVar3 = *(code **)(iStack_e0 + 0x24);\n    *(undefined4 *)(puVar17 + -0x14) = 0x4ecd9;\n    (*pcVar3)();\nLAB_0004ecdc:\n    iStack_cc = iVar18;\n  }\n  else {\n    *(uint *)(puVar17 + -4) = uStack_e4;\n    *(int *)(puVar17 + -8) = iVar4;\n    *(uint **)(puVar17 + -0xc) = puVar10;\n    *(uint **)(puVar17 + -0x10) = puVar15;\n    pcVar3 = *(code **)(iStack_e0 + 0x38);\n    *(undefined4 *)(puVar17 + -0x14) = 0x4e915;\n    uVar14 = (*pcVar3)();\n    if (uVar14 == 0) goto LAB_0004ecdc;\n    local_c0[iVar18] = uVar14;\n    iStack_cc = iVar18 + 1;\n  }\n  pmStack_f0 = (mp_ptr)*puVar15;\n  uVar6 = uStack_e8 - 1 >> 5;\n  uVar14 = uVar6 + 1;\n  if ((int)pmStack_d8 < iVar13) {\n    *(uint *)(puVar17 + -8) = uVar14 * 4;\n    *(undefined4 *)(puVar17 + -0xc) = 0;\n    *(uint **)(puVar17 + -0x10) = local_c0;\n    *(undefined4 *)(puVar17 + -0x14) = 0x4ee04;\n    memset(*(void **)(puVar17 + -0x10),*(int *)(puVar17 + -0xc),*(size_t *)(puVar17 + -8));\n    goto LAB_0004e9ab;\n  }\n  iVar18 = (int)pmStack_d8 - iVar13;\n  if (iVar18 <= (int)uVar14) {\n    *(int **)(puVar17 + -0xc) = piStack_120;\n    *(int *)(puVar17 + -0x10) = iVar13;\n    *(int *)(puVar17 + -0x14) = iStack_d0;\n    *(mp_ptr *)(puVar17 + -0x18) = pmStack_d8;\n    *(int **)(puVar17 + -0x1c) = piStack_d4;\n    *(int *)(puVar17 + -0x20) = iStack_dc;\n    iStack_108 = iVar18;\n    uStack_100 = uVar14;\n    *(undefined4 *)(puVar17 + -0x24) = 0x4ead1;\n    __gmpn_div_q(*(mp_ptr *)(puVar17 + -0x20),*(mp_srcptr *)(puVar17 + -0x1c),\n                 *(mp_size_t *)(puVar17 + -0x18),*(mp_srcptr *)(puVar17 + -0x14),\n                 *(mp_size_t *)(puVar17 + -0x10),*(mp_ptr *)(puVar17 + -0xc));\n    puVar10 = local_c0;\n    iVar13 = iStack_e0;\n    uVar16 = (uint)(*(int *)(iStack_dc + iStack_108 * 4) != 0) + iStack_108;\n    uVar14 = uStack_100;\n    if ((int)uVar16 <= (int)uStack_100) {\n      if ((uStack_100 != uVar16) || (uStack_e4 == 0)) {\n        uStack_e4 = uStack_100;\n        *(uint *)(puVar17 + -8) = uVar16;\n        *(int *)(puVar17 + -0xc) = iStack_dc;\n        *(uint **)(puVar17 + -0x10) = puVar10;\n        pcVar3 = *(code **)(iVar13 + 0x28);\n        *(undefined4 *)(puVar17 + -0x14) = 0x4eb2a;\n        (*pcVar3)();\n        if (uStack_e4 != uVar16) {\n          *(uint *)(puVar17 + -8) = (uStack_e4 - uVar16) * 4;\n          *(undefined4 *)(puVar17 + -0xc) = 0;\n          *(uint **)(puVar17 + -0x10) = puVar10 + uVar16;\n          *(undefined4 *)(puVar17 + -0x14) = 0x4eb55;\n          memset(*(void **)(puVar17 + -0x10),*(int *)(puVar17 + -0xc),*(size_t *)(puVar17 + -8));\n        }\n        goto LAB_0004e9ab;\n      }\n      if (*(uint *)(iStack_dc + -4 + uVar16 * 4) >> ((byte)uStack_e4 & 0x1f) == 0) {\n        *(uint *)(puVar17 + -8) = uVar16;\n        *(int *)(puVar17 + -0xc) = iStack_dc;\n        *(uint **)(puVar17 + -0x10) = local_c0;\n        pcVar3 = *(code **)(iVar13 + 0x28);\n        *(undefined4 *)(puVar17 + -0x14) = 0x4ede2;\n        (*pcVar3)();\n        goto LAB_0004e9ab;\n      }\n    }\n  }\n  puVar10 = local_c0;\n  if (uVar14 != 1) {\n    *(uint *)(puVar17 + -8) = uVar6 * 4;\n    *(undefined4 *)(puVar17 + -0xc) = 0xff;\n    *(uint **)(puVar17 + -0x10) = local_c0;\n    *(undefined4 *)(puVar17 + -0x14) = 0x4e98f;\n    memset(*(void **)(puVar17 + -0x10),*(int *)(puVar17 + -0xc),*(size_t *)(puVar17 + -8));\n    puVar10 = local_c0 + uVar6;\n  }\n  *puVar10 = 0xffffffff >> ((byte)iStack_118 & 0x1f);\nLAB_0004e9ab:\n  iStack_104 = iStack_104 + -1;\n  *puVar15 = *puVar15 | (uint)pmStack_f0;\n  iVar13 = iStack_dc;\n  if (iStack_10c == 0) goto LAB_0004e9ce;\n  goto LAB_0004e690;\nLAB_0004efbf:\n  if (local_124 == (int *)0x0) {\n    pmStack_d8 = (mp_ptr)0x1;\n  }\n  else {\n    pmVar8 = pmVar5;\n    if (pmVar5 == (mp_ptr)0x0) {\nLAB_0004efd7:\n      if ((local_f8 != local_124) && ((int)pmVar8 < (int)rootp)) {\n        piVar12 = local_f8 + (int)pmVar8;\n        piVar11 = local_124 + (int)pmVar8;\n        do {\n          iVar13 = *piVar12;\n          piVar12 = piVar12 + 1;\n          *piVar11 = iVar13;\n          piVar11 = piVar11 + 1;\n        } while ((int *)((int)local_f8 + local_128 + 4) != piVar12);\n      }\n    }\n    else {\n      *(mp_ptr *)(puVar17 + -4) = pmVar5;\n      *(int *)(puVar17 + -8) = iVar13;\n      *(int **)(puVar17 + -0xc) = local_f8;\n      *(int **)(puVar17 + -0x10) = local_124;\n      *(undefined4 *)(puVar17 + -0x14) = 0x4f0a5;\n      iVar13 = __gmpn_sub_n();\n      if (iVar13 == 0) goto LAB_0004efd7;\n      if (rootp != pmVar5) {\n        pmVar8 = (mp_ptr)((int)pmVar5 + 1);\n        local_c0 = (uint *)((int)pmVar5 * 4);\n        iVar13 = local_f8[(int)pmVar5];\n        local_124[(int)pmVar5] = iVar13 + -1;\n        if (iVar13 == 0) {\n          if ((int)rootp <= (int)pmVar8) goto LAB_0004f017;\n          iVar13 = local_f8[(int)pmVar5 + 1];\n          local_124[(int)pmVar5 + 1] = iVar13 + -1;\n          pmVar8 = (mp_ptr)((int)pmVar5 + 2);\n          while (iVar13 == 0) {\n            if (rootp == pmVar8) goto LAB_0004f017;\n            iVar13 = local_f8[(int)pmVar8];\n            local_124[(int)pmVar8] = iVar13 + -1;\n            pmVar8 = (mp_ptr)((int)pmVar8 + 1);\n          }\n        }\n        goto LAB_0004efd7;\n      }\n    }\nLAB_0004f017:\n    iVar13 = local_124[local_134];\n    while (iVar13 == 0) {\n      iVar13 = local_124[(int)rootp - 2];\n      rootp = (mp_ptr)((int)rootp - 1);\n    }\n    pmStack_d8 = rootp;\n  }\n  goto LAB_0004e9e0;\n}" type_identifier (function_declarator "mpn_rootrem_internal\n                    (mp_ptr rootp,mp_ptr remp,mp_srcptr up,mp_size_t un,mp_limb_t k,int approx)" identifier (parameter_list "(mp_ptr rootp,mp_ptr remp,mp_srcptr up,mp_size_t un,mp_limb_t k,int approx)" ( (parameter_declaration "mp_ptr rootp" type_identifier identifier) , (parameter_declaration "mp_ptr remp" type_identifier identifier) , (parameter_declaration "mp_srcptr up" type_identifier identifier) , (parameter_declaration "mp_size_t un" type_identifier identifier) , (parameter_declaration "mp_limb_t k" type_identifier identifier) , (parameter_declaration "int approx" primitive_type identifier) ))) (compound_statement "{\n  int iVar1;\n  byte bVar2;\n  code *pcVar3;\n  int iVar4;\n  mp_ptr pmVar5;\n  uint uVar6;\n  mp_size_t mVar7;\n  mp_ptr pmVar8;\n  int iVar9;\n  uint *puVar10;\n  int *piVar11;\n  int *piVar12;\n  int *extraout_ECX;\n  int iVar13;\n  uint uVar14;\n  uint *puVar15;\n  uint uVar16;\n  undefined1 *puVar17;\n  int iVar18;\n  int unaff_EDI;\n  int in_GS_OFFSET;\n  ushort in_FPUControlWord;\n  undefined8 uVar19;\n  undefined1 auStack_13c [8];\n  int local_134;\n  uint uStack_130;\n  uint *puStack_12c;\n  int local_128;\n  int *local_124;\n  int *piStack_120;\n  uint *puStack_11c;\n  int iStack_118;\n  int iStack_114;\n  int iStack_110;\n  int iStack_10c;\n  int iStack_108;\n  int iStack_104;\n  uint uStack_100;\n  mp_bitcnt_t *pmStack_fc;\n  int *local_f8;\n  uint uStack_f4;\n  mp_ptr pmStack_f0;\n  uint uStack_ec;\n  uint uStack_e8;\n  uint uStack_e4;\n  int iStack_e0;\n  int iStack_dc;\n  mp_ptr pmStack_d8;\n  int *piStack_d4;\n  int iStack_d0;\n  int iStack_cc;\n  undefined4 uStack_c8;\n  int local_c4;\n  uint *local_c0;\n  int iStack_bc;\n  ushort uStack_b8;\n  ushort uStack_b6;\n  tmp_reentrant_t *__tmp_marker;\n  mp_bitcnt_t sizes [33];\n  \n  uVar19 = __x86_get_pc_thunk_di();\n  local_124 = (int *)((ulonglong)uVar19 >> 0x20);\n  local_c0 = (uint *)uVar19;\n  puVar17 = auStack_13c;\n  local_f8 = extraout_ECX;\n  local_c4 = unaff_EDI + 0x4fbe7;\n  iVar1 = *(int *)(in_GS_OFFSET + 0x14);\n  local_134 = (int)rootp + 0x3fffffff;\n  uVar14 = extraout_ECX[local_134];\n  local_128 = local_134 * 4;\n  uVar6 = 0x1f;\n  if (uVar14 != 0) {\n    for (; uVar14 >> uVar6 == 0; uVar6 = uVar6 - 1) {\n    }\n  }\n  iVar13 = (uVar6 ^ 0x1f) + 1;\n  pmVar5 = (mp_ptr)((int)rootp * 0x20 - iVar13);\n  if (pmVar5 < remp) {\n    *local_c0 = 1;\n    if (local_124 == (int *)0x0) {\n      iVar13 = *extraout_ECX + -1;\n    }\n    else {\n      iVar13 = *extraout_ECX;\n      *local_124 = iVar13 + -1;\n      if (iVar13 == 0) {\n        if (1 < (int)rootp) {\n          iVar13 = extraout_ECX[1];\n          local_124[1] = iVar13 + -1;\n          if (iVar13 == 0) {\n            if (rootp == (mp_ptr)0x2) goto LAB_0004ef98;\n            iVar13 = extraout_ECX[2];\n            pmVar5 = (mp_ptr)0x3;\n            local_124[2] = iVar13 + -1;\n            while (iVar13 == 0) {\n              if (rootp == pmVar5) goto LAB_0004ef98;\n              iVar13 = extraout_ECX[(int)pmVar5];\n              local_124[(int)pmVar5] = iVar13 + -1;\n              pmVar5 = (mp_ptr)((int)pmVar5 + 1);\n            }\n          }\n          else {\n            pmVar5 = (mp_ptr)0x2;\n          }\n          if ((extraout_ECX != local_124) && ((int)pmVar5 < (int)rootp)) {\n            piVar12 = extraout_ECX + (int)pmVar5;\n            piVar11 = local_124 + (int)pmVar5;\n            do {\n              iVar13 = *piVar12;\n              piVar12 = piVar12 + 1;\n              *piVar11 = iVar13;\n              piVar11 = piVar11 + 1;\n            } while (extraout_ECX + (int)(rootp + 0x10000000) != piVar12);\n          }\n        }\n      }\n      else if ((extraout_ECX != local_124) && (1 < (int)rootp)) {\n        piVar12 = extraout_ECX + 1;\n        piVar11 = local_124;\n        do {\n          piVar11 = piVar11 + 1;\n          iVar13 = *piVar12;\n          piVar12 = piVar12 + 1;\n          *piVar11 = iVar13;\n        } while (extraout_ECX + (int)(rootp + 0x10000000) != piVar12);\n      }\nLAB_0004ef98:\n      iVar13 = local_124[local_134];\n    }\n    pmStack_d8 = (mp_ptr)((int)rootp - (uint)(iVar13 == 0));\n    goto LAB_0004e9ee;\n  }\n  if (iVar13 == 0x20) {\n    uVar14 = extraout_ECX[(int)rootp + 0x3ffffffe];\n  }\n  else {\n    uVar14 = (uint)extraout_ECX[(int)rootp + (-1 - (uint)(rootp != (mp_ptr)0x1))] >>\n             (0x20 - (byte)iVar13 & 0x1f) | uVar14 << ((byte)iVar13 & 0x1f);\n  }\n  uVar14 = (uint)*(byte *)(unaff_EDI + 0x32bc7 + (uVar14 >> 0x18));\n  if (pmVar5 < (mp_ptr)0x1000000) {\n    uVar6 = ((int)pmVar5 * 0x100 | uVar14) / (uint)remp;\n    uVar14 = uVar6 & 0xff;\n    uStack_e8 = uVar6 >> 8;\n  }\n  else {\n    uStack_e8 = (uint)pmVar5 / (uint)remp;\n    uVar14 = ((uint)pmVar5 % (uint)remp << 8 | uVar14) / (uint)remp;\n  }\n  iVar13 = uStack_e8 * (int)remp;\n  bVar2 = *(byte *)(unaff_EDI + 0x32ac7 + uVar14);\n  uStack_ec = (int)remp - 1U;\n  uVar14 = 3;\n  for (uVar6 = (int)remp - 1U >> 2; uVar6 != 0; uVar6 = uVar6 >> 1) {\n    uVar14 = uVar14 + 1;\n  }\n  iVar18 = 0;\n  pmStack_fc = sizes;\n  sizes[0] = uStack_e8;\n  if (8 < uStack_e8) {\n    iVar4 = 0;\n    do {\n      while (iVar18 = iVar4, uVar14 < uStack_e8) {\n        uStack_e8 = uStack_e8 + uVar14 >> 1;\n        sizes[iVar18 + 1] = uStack_e8;\n        iVar4 = iVar18 + 1;\n        if (uStack_e8 < 9) goto LAB_0004e56d;\n      }\n      uStack_e8 = uStack_e8 - 1;\n      sizes[iVar18 + 1] = uStack_e8;\n      iVar4 = iVar18 + 1;\n    } while (uStack_e8 != 8);\n    uStack_e8 = 8;\nLAB_0004e56d:\n    iVar18 = iVar18 + 1;\n  }\n  __tmp_marker = (tmp_reentrant_t *)0x0;\n  uStack_f4 = iVar13 - uStack_e8;\n  *local_c0 = (bVar2 | 0x100) >> (8U - (char)uStack_e8 & 0x1f);\n  uStack_b6 = in_FPUControlWord;\n  uStack_c8 = 0;\n  uStack_b8 = in_FPUControlWord | 0xc00;\n  iStack_bc = (int)ROUND((double)remp * *(double *)(unaff_EDI + 0x32cc7) *\n                         (double)*(float *)(&UNK_00032ccf + unaff_EDI));\n  iStack_cc = (int)rootp + iStack_bc + 2;\n  uVar14 = ((int)rootp + iStack_cc * 2 + 1) * 4;\n  if (uVar14 < 0x7f01) {\n    iVar13 = -(uVar14 + 0x1b & 0xfffffff0);\n    puVar17 = auStack_13c + iVar13;\n    piStack_120 = (int *)((int)&uStack_130 + iVar13);\n  }\n  else {\n    piStack_120 = (int *)__gmp_tmp_reentrant_alloc(&__tmp_marker,uVar14);\n    puVar17 = auStack_13c;\n  }\n  iVar13 = (int)piStack_120 + local_128 + 8;\n  iStack_d0 = iVar13 + iStack_cc * 4;\n  piStack_d4 = local_124;\n  if (local_124 == (int *)0x0) {\n    piStack_d4 = piStack_120;\n  }\n  if (iVar18 != 0) {\n    iStack_104 = iVar18 + -1;\n    pmStack_fc = sizes;\n    iStack_cc = 1;\n    iStack_e0 = *(int *)(local_c4 + -0x26c);\n    iStack_dc = iVar13;\nLAB_0004e690:\n    uStack_e4 = uStack_f4 - uStack_e8 * uStack_ec;\n    iVar13 = (int)rootp - (uStack_e4 >> 5);\n    piVar12 = local_f8 + (uStack_e4 >> 5);\n    if ((uStack_e4 & 0x1f) == 0) {\n      *(int *)(puVar17 + -8) = iVar13;\n      *(int **)(puVar17 + -0xc) = piVar12;\n      iVar18 = iStack_e0;\n      *(int **)(puVar17 + -0x10) = piStack_d4;\n      pcVar3 = *(code **)(iVar18 + 0x28);\n      *(undefined4 *)(puVar17 + -0x14) = 0x4ed34;\n      (*pcVar3)();\n    }\n    else {\n      *(uint *)(puVar17 + -4) = uStack_e4 & 0x1f;\n      *(int *)(puVar17 + -8) = iVar13;\n      *(int **)(puVar17 + -0xc) = piVar12;\n      iVar18 = iStack_e0;\n      *(int **)(puVar17 + -0x10) = piStack_d4;\n      pcVar3 = *(code **)(iVar18 + 0x80);\n      *(undefined4 *)(puVar17 + -0x14) = 0x4e6dc;\n      (*pcVar3)();\n    }\n    piVar12 = piStack_d4;\n    iVar18 = iStack_dc;\n    pmStack_d8 = (mp_ptr)(iVar13 - (uint)(piStack_d4[iVar13 + -1] == 0));\n    do {\n      *(int *)(puVar17 + -0x10) = iVar18;\n      *(uint *)(puVar17 + -0x14) = uStack_ec;\n      *(int *)(puVar17 + -0x18) = iStack_cc;\n      *(uint **)(puVar17 + -0x1c) = local_c0;\n      *(int *)(puVar17 + -0x20) = iStack_d0;\n      *(undefined4 *)(puVar17 + -0x24) = 0x4e727;\n      mVar7 = __gmpn_pow_1(*(mp_ptr *)(puVar17 + -0x20),*(mp_srcptr *)(puVar17 + -0x1c),\n                           *(mp_size_t *)(puVar17 + -0x18),*(mp_limb_t *)(puVar17 + -0x14),\n                           *(mp_ptr *)(puVar17 + -0x10));\n      *(int *)(puVar17 + -0x10) = iStack_cc;\n      *(uint **)(puVar17 + -0x14) = local_c0;\n      *(mp_size_t *)(puVar17 + -0x18) = mVar7;\n      *(int *)(puVar17 + -0x1c) = iStack_d0;\n      *(int *)(puVar17 + -0x20) = iVar18;\n      iStack_dc = mVar7;\n      *(undefined4 *)(puVar17 + -0x24) = 0x4e74f;\n      __gmpn_mul(*(mp_ptr *)(puVar17 + -0x20),*(mp_srcptr *)(puVar17 + -0x1c),\n                 *(mp_size_t *)(puVar17 + -0x18),*(mp_srcptr *)(puVar17 + -0x14),\n                 *(mp_size_t *)(puVar17 + -0x10));\n      piVar11 = piStack_d4;\n      pmVar5 = pmStack_d8;\n      iVar13 = (iStack_cc + iStack_dc) -\n               (uint)(*(int *)(iVar18 + -4 + (iStack_cc + iStack_dc) * 4) == 0);\n      puVar10 = local_c0;\n      if (iVar13 <= (int)pmStack_d8) {\n        pmVar8 = pmStack_d8;\n        if (pmStack_d8 != (mp_ptr)iVar13) goto LAB_0004eb66;\n        do {\n          pmVar8 = (mp_ptr)((int)pmVar8 + -1);\n          if ((int)pmVar8 < 0) {\n            iStack_108 = iStack_dc;\n            iStack_114 = 0;\n            iStack_10c = iStack_104;\n            uStack_e8 = pmStack_fc[iStack_104] - pmStack_fc[iStack_104 + 1];\n            iStack_118 = pmStack_fc[iStack_104 + 1] - pmStack_fc[iStack_104];\n            pmStack_f0 = (mp_ptr)(uStack_e8 >> 5);\n            uStack_f4 = iStack_118 + uStack_e4;\n            uVar14 = uStack_e4 - 1;\n            uStack_e4 = uStack_e8 & 0x1f;\n            puVar15 = (uint *)((uVar14 >> 5) - (uStack_f4 >> 5));\n            uStack_100 = (int)pmStack_f0 * 4;\n            uVar14 = 0;\n            iStack_110 = (int)puVar15 + 1;\n            uVar6 = uStack_f4 >> 5;\n            puVar10 = (uint *)(piStack_d4 + (int)pmStack_f0);\n            iStack_dc = iVar18;\n            pmStack_d8 = pmStack_f0;\n            goto LAB_0004e83d;\n          }\n          uVar14 = *(uint *)(iVar18 + (int)pmVar8 * 4);\n        } while (uVar14 == piVar12[(int)pmVar8]);\n        if (uVar14 <= (uint)piVar12[(int)pmVar8]) goto LAB_0004eb66;\n      }\n      do {\n        uVar14 = *puVar10;\n        *puVar10 = *puVar10 - 1;\n        puVar10 = puVar10 + 1;\n      } while (uVar14 == 0);\n    } while( true );\n  }\n  iStack_cc = 1;\nLAB_0004e9ce:\n  piVar12 = local_f8;\n  if ((up == (mp_srcptr)0x0) || (*local_c0 < 2)) {\n    do {\n      *(int *)(puVar17 + -0x10) = iStack_d0;\n      *(mp_ptr *)(puVar17 + -0x14) = remp;\n      *(int *)(puVar17 + -0x18) = iStack_cc;\n      *(uint **)(puVar17 + -0x1c) = local_c0;\n      *(int *)(puVar17 + -0x20) = iVar13;\n      *(undefined4 *)(puVar17 + -0x24) = 0x4ea47;\n      pmVar5 = (mp_ptr)__gmpn_pow_1(*(mp_ptr *)(puVar17 + -0x20),*(mp_srcptr *)(puVar17 + -0x1c),\n                                    *(mp_size_t *)(puVar17 + -0x18),*(mp_limb_t *)(puVar17 + -0x14),\n                                    *(mp_ptr *)(puVar17 + -0x10));\n      puVar10 = local_c0;\n      if ((int)pmVar5 <= (int)rootp) {\n        pmVar8 = rootp;\n        if (rootp != pmVar5) goto LAB_0004efbf;\n        do {\n          pmVar8 = (mp_ptr)((int)pmVar8 + -1);\n          if ((int)pmVar8 < 0) {\n            pmStack_d8 = (mp_ptr)0x0;\n            goto LAB_0004e9e0;\n          }\n          uVar14 = *(uint *)(iVar13 + (int)pmVar8 * 4);\n        } while (uVar14 == piVar12[(int)pmVar8]);\n        if (uVar14 <= (uint)piVar12[(int)pmVar8]) goto LAB_0004efbf;\n      }\n      do {\n        uVar14 = *puVar10;\n        *puVar10 = *puVar10 - 1;\n        puVar10 = puVar10 + 1;\n      } while (uVar14 == 0);\n    } while( true );\n  }\nLAB_0004e9e0:\n  if (__tmp_marker != (tmp_reentrant_t *)0x0) {\n    *(tmp_reentrant_t **)(puVar17 + -0x10) = __tmp_marker;\n    *(undefined4 *)(puVar17 + -0x14) = 0x4f1a9;\n    __gmp_tmp_reentrant_free(*(tmp_reentrant_t **)(puVar17 + -0x10));\n  }\nLAB_0004e9ee:\n  if (iVar1 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return (mp_size_t)pmStack_d8;\n  }\n                    /* WARNING: Subroutine does not return */\n  *(undefined **)(puVar17 + -4) = &UNK_0004f214;\n  __stack_chk_fail_local();\nLAB_0004eb66:\n  iStack_108 = iStack_dc;\n  iStack_10c = iStack_104;\n  uStack_e8 = pmStack_fc[iStack_104] - pmStack_fc[iStack_104 + 1];\n  iStack_118 = pmStack_fc[iStack_104 + 1] - pmStack_fc[iStack_104];\n  pmStack_f0 = (mp_ptr)(uStack_e8 >> 5);\n  uStack_f4 = iStack_118 + uStack_e4;\n  uVar14 = uStack_f4 >> 5;\n  puStack_11c = (uint *)((uStack_e4 - 1 >> 5) - uVar14);\n  iStack_110 = (int)puStack_11c + 1;\n  uStack_e4 = uVar14;\n  iStack_dc = iVar18;\n  if (iVar13 != 0) {\n    *(int *)(puVar17 + -4) = iVar13;\n    *(int *)(puVar17 + -8) = iStack_dc;\n    *(int **)(puVar17 + -0xc) = piVar11;\n    *(int **)(puVar17 + -0x10) = piVar11;\n    pmStack_d8 = (mp_ptr)iVar13;\n    *(undefined4 *)(puVar17 + -0x14) = 0x4ee32;\n    iVar13 = __gmpn_sub_n();\n    if ((iVar13 != 0) && (pmVar5 != pmStack_d8)) {\n      iVar13 = piStack_d4[(int)pmStack_d8];\n      piStack_d4[(int)pmStack_d8] = iVar13 + -1;\n      if ((iVar13 == 0) && ((int)pmStack_d8 + 1 < (int)pmVar5)) {\n        iVar18 = (int)pmStack_d8 + 2;\n        iVar13 = piStack_d4[(int)pmStack_d8 + 1];\n        piStack_d4[(int)pmStack_d8 + 1] = iVar13 + -1;\n        for (; (iVar13 == 0 && (pmVar5 != (mp_ptr)iVar18)); iVar18 = iVar18 + 1) {\n          iVar13 = piStack_d4[iVar18];\n          piStack_d4[iVar18] = iVar13 + -1;\n        }\n      }\n    }\n  }\n  piVar12 = piStack_d4;\n  iVar18 = iStack_e0;\n  iVar13 = piStack_d4[(int)pmVar5 + -1];\n  while (iVar13 == 0) {\n    iVar13 = piStack_d4[(int)pmVar5 + -2];\n    pmVar5 = (mp_ptr)((int)pmVar5 + -1);\n  }\n  uStack_100 = (int)pmStack_f0 * 4;\n  puVar10 = (uint *)(piStack_d4 + (int)pmStack_f0);\n  pmStack_d8 = (mp_ptr)((int)pmStack_f0 + (int)pmVar5);\n  uVar14 = uStack_e8 & 0x1f;\n  uStack_130 = uStack_e4;\n  puStack_12c = puVar10;\n  if (uVar14 == 0) {\n    uStack_e4 = uVar14;\n    *(mp_ptr *)(puVar17 + -8) = pmVar5;\n    *(int **)(puVar17 + -0xc) = piStack_d4;\n    *(uint **)(puVar17 + -0x10) = puVar10;\n    pcVar3 = *(code **)(iVar18 + 0x24);\n    *(undefined4 *)(puVar17 + -0x14) = 0x4ed9a;\n    (*pcVar3)();\n  }\n  else {\n    uStack_e4 = uVar14;\n    *(uint *)(puVar17 + -4) = uVar14;\n    *(mp_ptr *)(puVar17 + -8) = pmVar5;\n    *(int **)(puVar17 + -0xc) = piVar12;\n    iVar13 = iStack_e0;\n    *(uint **)(puVar17 + -0x10) = puVar10;\n    pcVar3 = *(code **)(iVar13 + 0x38);\n    *(undefined4 *)(puVar17 + -0x14) = 0x4ec66;\n    iVar13 = (*pcVar3)();\n    if (iVar13 != 0) {\n      piStack_d4[(int)pmStack_d8] = iVar13;\n      pmStack_d8 = (mp_ptr)((int)pmStack_d8 + 1);\n    }\n  }\n  uVar14 = *puStack_12c;\n  uVar6 = uStack_130;\n  puVar10 = puStack_12c;\n  puVar15 = puStack_11c;\n  if ((int)pmStack_f0 < (int)puStack_11c) {\n    iStack_114 = *(int *)((int)piStack_d4 + uStack_100 + 4);\n  }\nLAB_0004e83d:\n  piVar12 = local_f8 + uVar6;\n  puStack_11c = puVar10;\n  if ((uStack_f4 & 0x1f) == 0) {\n    *(int *)(puVar17 + -8) = iStack_110;\n    *(int **)(puVar17 + -0xc) = piVar12;\n    *(int **)(puVar17 + -0x10) = piStack_d4;\n    pcVar3 = *(code **)(iStack_e0 + 0x28);\n    *(undefined4 *)(puVar17 + -0x14) = 0x4ed09;\n    (*pcVar3)();\n  }\n  else {\n    *(uint *)(puVar17 + -4) = uStack_f4 & 0x1f;\n    *(int *)(puVar17 + -8) = iStack_110;\n    *(int **)(puVar17 + -0xc) = piVar12;\n    iVar13 = iStack_e0;\n    *(int **)(puVar17 + -0x10) = piStack_d4;\n    pcVar3 = *(code **)(iVar13 + 0x80);\n    *(undefined4 *)(puVar17 + -0x14) = 0x4e875;\n    (*pcVar3)();\n  }\n  iVar18 = iStack_d0;\n  iVar13 = iStack_108;\n  *puStack_11c = uVar14 | ~(-1 << ((byte)uStack_e4 & 0x1f)) & *puStack_11c;\n  if ((int)pmStack_f0 < (int)puVar15) {\n    piStack_d4[(int)pmStack_f0 + 1] = iStack_114;\n  }\n  *(mp_ptr *)(puVar17 + -4) = remp;\n  iVar4 = iStack_e0;\n  *(int *)(puVar17 + -8) = iVar13;\n  *(int *)(puVar17 + -0xc) = iVar18;\n  *(int *)(puVar17 + -0x10) = iVar18;\n  pcVar3 = *(code **)(iVar4 + 100);\n  *(undefined4 *)(puVar17 + -0x14) = 0x4e8c9;\n  iVar9 = (*pcVar3)();\n  puVar10 = local_c0;\n  iVar4 = iStack_cc;\n  *(int *)(iVar18 + iVar13 * 4) = iVar9;\n  iVar13 = (uint)(iVar9 != 0) + iVar13;\n  puVar15 = (uint *)(uStack_100 + (int)local_c0);\n  iVar18 = (int)pmStack_f0 + iStack_cc;\n  if (uStack_e4 == 0) {\n    *(int *)(puVar17 + -8) = iStack_cc;\n    *(uint **)(puVar17 + -0xc) = local_c0;\n    *(uint **)(puVar17 + -0x10) = puVar15;\n    pcVar3 = *(code **)(iStack_e0 + 0x24);\n    *(undefined4 *)(puVar17 + -0x14) = 0x4ecd9;\n    (*pcVar3)();\nLAB_0004ecdc:\n    iStack_cc = iVar18;\n  }\n  else {\n    *(uint *)(puVar17 + -4) = uStack_e4;\n    *(int *)(puVar17 + -8) = iVar4;\n    *(uint **)(puVar17 + -0xc) = puVar10;\n    *(uint **)(puVar17 + -0x10) = puVar15;\n    pcVar3 = *(code **)(iStack_e0 + 0x38);\n    *(undefined4 *)(puVar17 + -0x14) = 0x4e915;\n    uVar14 = (*pcVar3)();\n    if (uVar14 == 0) goto LAB_0004ecdc;\n    local_c0[iVar18] = uVar14;\n    iStack_cc = iVar18 + 1;\n  }\n  pmStack_f0 = (mp_ptr)*puVar15;\n  uVar6 = uStack_e8 - 1 >> 5;\n  uVar14 = uVar6 + 1;\n  if ((int)pmStack_d8 < iVar13) {\n    *(uint *)(puVar17 + -8) = uVar14 * 4;\n    *(undefined4 *)(puVar17 + -0xc) = 0;\n    *(uint **)(puVar17 + -0x10) = local_c0;\n    *(undefined4 *)(puVar17 + -0x14) = 0x4ee04;\n    memset(*(void **)(puVar17 + -0x10),*(int *)(puVar17 + -0xc),*(size_t *)(puVar17 + -8));\n    goto LAB_0004e9ab;\n  }\n  iVar18 = (int)pmStack_d8 - iVar13;\n  if (iVar18 <= (int)uVar14) {\n    *(int **)(puVar17 + -0xc) = piStack_120;\n    *(int *)(puVar17 + -0x10) = iVar13;\n    *(int *)(puVar17 + -0x14) = iStack_d0;\n    *(mp_ptr *)(puVar17 + -0x18) = pmStack_d8;\n    *(int **)(puVar17 + -0x1c) = piStack_d4;\n    *(int *)(puVar17 + -0x20) = iStack_dc;\n    iStack_108 = iVar18;\n    uStack_100 = uVar14;\n    *(undefined4 *)(puVar17 + -0x24) = 0x4ead1;\n    __gmpn_div_q(*(mp_ptr *)(puVar17 + -0x20),*(mp_srcptr *)(puVar17 + -0x1c),\n                 *(mp_size_t *)(puVar17 + -0x18),*(mp_srcptr *)(puVar17 + -0x14),\n                 *(mp_size_t *)(puVar17 + -0x10),*(mp_ptr *)(puVar17 + -0xc));\n    puVar10 = local_c0;\n    iVar13 = iStack_e0;\n    uVar16 = (uint)(*(int *)(iStack_dc + iStack_108 * 4) != 0) + iStack_108;\n    uVar14 = uStack_100;\n    if ((int)uVar16 <= (int)uStack_100) {\n      if ((uStack_100 != uVar16) || (uStack_e4 == 0)) {\n        uStack_e4 = uStack_100;\n        *(uint *)(puVar17 + -8) = uVar16;\n        *(int *)(puVar17 + -0xc) = iStack_dc;\n        *(uint **)(puVar17 + -0x10) = puVar10;\n        pcVar3 = *(code **)(iVar13 + 0x28);\n        *(undefined4 *)(puVar17 + -0x14) = 0x4eb2a;\n        (*pcVar3)();\n        if (uStack_e4 != uVar16) {\n          *(uint *)(puVar17 + -8) = (uStack_e4 - uVar16) * 4;\n          *(undefined4 *)(puVar17 + -0xc) = 0;\n          *(uint **)(puVar17 + -0x10) = puVar10 + uVar16;\n          *(undefined4 *)(puVar17 + -0x14) = 0x4eb55;\n          memset(*(void **)(puVar17 + -0x10),*(int *)(puVar17 + -0xc),*(size_t *)(puVar17 + -8));\n        }\n        goto LAB_0004e9ab;\n      }\n      if (*(uint *)(iStack_dc + -4 + uVar16 * 4) >> ((byte)uStack_e4 & 0x1f) == 0) {\n        *(uint *)(puVar17 + -8) = uVar16;\n        *(int *)(puVar17 + -0xc) = iStack_dc;\n        *(uint **)(puVar17 + -0x10) = local_c0;\n        pcVar3 = *(code **)(iVar13 + 0x28);\n        *(undefined4 *)(puVar17 + -0x14) = 0x4ede2;\n        (*pcVar3)();\n        goto LAB_0004e9ab;\n      }\n    }\n  }\n  puVar10 = local_c0;\n  if (uVar14 != 1) {\n    *(uint *)(puVar17 + -8) = uVar6 * 4;\n    *(undefined4 *)(puVar17 + -0xc) = 0xff;\n    *(uint **)(puVar17 + -0x10) = local_c0;\n    *(undefined4 *)(puVar17 + -0x14) = 0x4e98f;\n    memset(*(void **)(puVar17 + -0x10),*(int *)(puVar17 + -0xc),*(size_t *)(puVar17 + -8));\n    puVar10 = local_c0 + uVar6;\n  }\n  *puVar10 = 0xffffffff >> ((byte)iStack_118 & 0x1f);\nLAB_0004e9ab:\n  iStack_104 = iStack_104 + -1;\n  *puVar15 = *puVar15 | (uint)pmStack_f0;\n  iVar13 = iStack_dc;\n  if (iStack_10c == 0) goto LAB_0004e9ce;\n  goto LAB_0004e690;\nLAB_0004efbf:\n  if (local_124 == (int *)0x0) {\n    pmStack_d8 = (mp_ptr)0x1;\n  }\n  else {\n    pmVar8 = pmVar5;\n    if (pmVar5 == (mp_ptr)0x0) {\nLAB_0004efd7:\n      if ((local_f8 != local_124) && ((int)pmVar8 < (int)rootp)) {\n        piVar12 = local_f8 + (int)pmVar8;\n        piVar11 = local_124 + (int)pmVar8;\n        do {\n          iVar13 = *piVar12;\n          piVar12 = piVar12 + 1;\n          *piVar11 = iVar13;\n          piVar11 = piVar11 + 1;\n        } while ((int *)((int)local_f8 + local_128 + 4) != piVar12);\n      }\n    }\n    else {\n      *(mp_ptr *)(puVar17 + -4) = pmVar5;\n      *(int *)(puVar17 + -8) = iVar13;\n      *(int **)(puVar17 + -0xc) = local_f8;\n      *(int **)(puVar17 + -0x10) = local_124;\n      *(undefined4 *)(puVar17 + -0x14) = 0x4f0a5;\n      iVar13 = __gmpn_sub_n();\n      if (iVar13 == 0) goto LAB_0004efd7;\n      if (rootp != pmVar5) {\n        pmVar8 = (mp_ptr)((int)pmVar5 + 1);\n        local_c0 = (uint *)((int)pmVar5 * 4);\n        iVar13 = local_f8[(int)pmVar5];\n        local_124[(int)pmVar5] = iVar13 + -1;\n        if (iVar13 == 0) {\n          if ((int)rootp <= (int)pmVar8) goto LAB_0004f017;\n          iVar13 = local_f8[(int)pmVar5 + 1];\n          local_124[(int)pmVar5 + 1] = iVar13 + -1;\n          pmVar8 = (mp_ptr)((int)pmVar5 + 2);\n          while (iVar13 == 0) {\n            if (rootp == pmVar8) goto LAB_0004f017;\n            iVar13 = local_f8[(int)pmVar8];\n            local_124[(int)pmVar8] = iVar13 + -1;\n            pmVar8 = (mp_ptr)((int)pmVar8 + 1);\n          }\n        }\n        goto LAB_0004efd7;\n      }\n    }\nLAB_0004f017:\n    iVar13 = local_124[local_134];\n    while (iVar13 == 0) {\n      iVar13 = local_124[(int)rootp - 2];\n      rootp = (mp_ptr)((int)rootp - 1);\n    }\n    pmStack_d8 = rootp;\n  }\n  goto LAB_0004e9e0;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "byte bVar2;" type_identifier identifier ;) (declaration "code *pcVar3;" type_identifier (pointer_declarator "*pcVar3" * identifier) ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "mp_ptr pmVar5;" type_identifier identifier ;) (declaration "uint uVar6;" type_identifier identifier ;) (declaration "mp_size_t mVar7;" type_identifier identifier ;) (declaration "mp_ptr pmVar8;" type_identifier identifier ;) (declaration "int iVar9;" primitive_type identifier ;) (declaration "uint *puVar10;" type_identifier (pointer_declarator "*puVar10" * identifier) ;) (declaration "int *piVar11;" primitive_type (pointer_declarator "*piVar11" * identifier) ;) (declaration "int *piVar12;" primitive_type (pointer_declarator "*piVar12" * identifier) ;) (declaration "int *extraout_ECX;" primitive_type (pointer_declarator "*extraout_ECX" * identifier) ;) (declaration "int iVar13;" primitive_type identifier ;) (declaration "uint uVar14;" type_identifier identifier ;) (declaration "uint *puVar15;" type_identifier (pointer_declarator "*puVar15" * identifier) ;) (declaration "uint uVar16;" type_identifier identifier ;) (declaration "undefined1 *puVar17;" type_identifier (pointer_declarator "*puVar17" * identifier) ;) (declaration "int iVar18;" primitive_type identifier ;) (declaration "int unaff_EDI;" primitive_type identifier ;) (declaration "int in_GS_OFFSET;" primitive_type identifier ;) (declaration "ushort in_FPUControlWord;" type_identifier identifier ;) (declaration "undefined8 uVar19;" type_identifier identifier ;) (declaration "undefined1 auStack_13c [8];" type_identifier (array_declarator "auStack_13c [8]" identifier [ number_literal ]) ;) (declaration "int local_134;" primitive_type identifier ;) (declaration "uint uStack_130;" type_identifier identifier ;) (declaration "uint *puStack_12c;" type_identifier (pointer_declarator "*puStack_12c" * identifier) ;) (declaration "int local_128;" primitive_type identifier ;) (declaration "int *local_124;" primitive_type (pointer_declarator "*local_124" * identifier) ;) (declaration "int *piStack_120;" primitive_type (pointer_declarator "*piStack_120" * identifier) ;) (declaration "uint *puStack_11c;" type_identifier (pointer_declarator "*puStack_11c" * identifier) ;) (declaration "int iStack_118;" primitive_type identifier ;) (declaration "int iStack_114;" primitive_type identifier ;) (declaration "int iStack_110;" primitive_type identifier ;) (declaration "int iStack_10c;" primitive_type identifier ;) (declaration "int iStack_108;" primitive_type identifier ;) (declaration "int iStack_104;" primitive_type identifier ;) (declaration "uint uStack_100;" type_identifier identifier ;) (declaration "mp_bitcnt_t *pmStack_fc;" type_identifier (pointer_declarator "*pmStack_fc" * identifier) ;) (declaration "int *local_f8;" primitive_type (pointer_declarator "*local_f8" * identifier) ;) (declaration "uint uStack_f4;" type_identifier identifier ;) (declaration "mp_ptr pmStack_f0;" type_identifier identifier ;) (declaration "uint uStack_ec;" type_identifier identifier ;) (declaration "uint uStack_e8;" type_identifier identifier ;) (declaration "uint uStack_e4;" type_identifier identifier ;) (declaration "int iStack_e0;" primitive_type identifier ;) (declaration "int iStack_dc;" primitive_type identifier ;) (declaration "mp_ptr pmStack_d8;" type_identifier identifier ;) (declaration "int *piStack_d4;" primitive_type (pointer_declarator "*piStack_d4" * identifier) ;) (declaration "int iStack_d0;" primitive_type identifier ;) (declaration "int iStack_cc;" primitive_type identifier ;) (declaration "undefined4 uStack_c8;" type_identifier identifier ;) (declaration "int local_c4;" primitive_type identifier ;) (declaration "uint *local_c0;" type_identifier (pointer_declarator "*local_c0" * identifier) ;) (declaration "int iStack_bc;" primitive_type identifier ;) (declaration "ushort uStack_b8;" type_identifier identifier ;) (declaration "ushort uStack_b6;" type_identifier identifier ;) (declaration "tmp_reentrant_t *__tmp_marker;" type_identifier (pointer_declarator "*__tmp_marker" * identifier) ;) (declaration "mp_bitcnt_t sizes [33];" type_identifier (array_declarator "sizes [33]" identifier [ number_literal ]) ;) (expression_statement "uVar19 = __x86_get_pc_thunk_di();" (assignment_expression "uVar19 = __x86_get_pc_thunk_di()" identifier = (call_expression "__x86_get_pc_thunk_di()" identifier (argument_list "()" ( )))) ;) (expression_statement "local_124 = (int *)((ulonglong)uVar19 >> 0x20);" (assignment_expression "local_124 = (int *)((ulonglong)uVar19 >> 0x20)" identifier = (cast_expression "(int *)((ulonglong)uVar19 >> 0x20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((ulonglong)uVar19 >> 0x20)" ( (binary_expression "(ulonglong)uVar19 >> 0x20" (cast_expression "(ulonglong)uVar19" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "local_c0 = (uint *)uVar19;" (assignment_expression "local_c0 = (uint *)uVar19" identifier = (cast_expression "(uint *)uVar19" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "puVar17 = auStack_13c;" (assignment_expression "puVar17 = auStack_13c" identifier = identifier) ;) (expression_statement "local_f8 = extraout_ECX;" (assignment_expression "local_f8 = extraout_ECX" identifier = identifier) ;) (expression_statement "local_c4 = unaff_EDI + 0x4fbe7;" (assignment_expression "local_c4 = unaff_EDI + 0x4fbe7" identifier = (binary_expression "unaff_EDI + 0x4fbe7" identifier + number_literal)) ;) (expression_statement "iVar1 = *(int *)(in_GS_OFFSET + 0x14);" (assignment_expression "iVar1 = *(int *)(in_GS_OFFSET + 0x14)" identifier = (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) ;) (expression_statement "local_134 = (int)rootp + 0x3fffffff;" (assignment_expression "local_134 = (int)rootp + 0x3fffffff" identifier = (binary_expression "(int)rootp + 0x3fffffff" (cast_expression "(int)rootp" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal)) ;) (expression_statement "uVar14 = extraout_ECX[local_134];" (assignment_expression "uVar14 = extraout_ECX[local_134]" identifier = (subscript_expression "extraout_ECX[local_134]" identifier [ identifier ])) ;) (expression_statement "local_128 = local_134 * 4;" (assignment_expression "local_128 = local_134 * 4" identifier = (binary_expression "local_134 * 4" identifier * number_literal)) ;) (expression_statement "uVar6 = 0x1f;" (assignment_expression "uVar6 = 0x1f" identifier = number_literal) ;) (if_statement "if (uVar14 != 0) {\n    for (; uVar14 >> uVar6 == 0; uVar6 = uVar6 - 1) {\n    }\n  }" if (parenthesized_expression "(uVar14 != 0)" ( (binary_expression "uVar14 != 0" identifier != number_literal) )) (compound_statement "{\n    for (; uVar14 >> uVar6 == 0; uVar6 = uVar6 - 1) {\n    }\n  }" { (for_statement "for (; uVar14 >> uVar6 == 0; uVar6 = uVar6 - 1) {\n    }" for ( ; (binary_expression "uVar14 >> uVar6 == 0" (binary_expression "uVar14 >> uVar6" identifier >> identifier) == number_literal) ; (assignment_expression "uVar6 = uVar6 - 1" identifier = (binary_expression "uVar6 - 1" identifier - number_literal)) ) (compound_statement "{\n    }" { })) })) (expression_statement "iVar13 = (uVar6 ^ 0x1f) + 1;" (assignment_expression "iVar13 = (uVar6 ^ 0x1f) + 1" identifier = (binary_expression "(uVar6 ^ 0x1f) + 1" (parenthesized_expression "(uVar6 ^ 0x1f)" ( (binary_expression "uVar6 ^ 0x1f" identifier ^ number_literal) )) + number_literal)) ;) (expression_statement "pmVar5 = (mp_ptr)((int)rootp * 0x20 - iVar13);" (assignment_expression "pmVar5 = (mp_ptr)((int)rootp * 0x20 - iVar13)" identifier = (call_expression "(mp_ptr)((int)rootp * 0x20 - iVar13)" (parenthesized_expression "(mp_ptr)" ( identifier )) (argument_list "((int)rootp * 0x20 - iVar13)" ( (binary_expression "(int)rootp * 0x20 - iVar13" (binary_expression "(int)rootp * 0x20" (cast_expression "(int)rootp" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal) - identifier) )))) ;) (if_statement "if (pmVar5 < remp) {\n    *local_c0 = 1;\n    if (local_124 == (int *)0x0) {\n      iVar13 = *extraout_ECX + -1;\n    }\n    else {\n      iVar13 = *extraout_ECX;\n      *local_124 = iVar13 + -1;\n      if (iVar13 == 0) {\n        if (1 < (int)rootp) {\n          iVar13 = extraout_ECX[1];\n          local_124[1] = iVar13 + -1;\n          if (iVar13 == 0) {\n            if (rootp == (mp_ptr)0x2) goto LAB_0004ef98;\n            iVar13 = extraout_ECX[2];\n            pmVar5 = (mp_ptr)0x3;\n            local_124[2] = iVar13 + -1;\n            while (iVar13 == 0) {\n              if (rootp == pmVar5) goto LAB_0004ef98;\n              iVar13 = extraout_ECX[(int)pmVar5];\n              local_124[(int)pmVar5] = iVar13 + -1;\n              pmVar5 = (mp_ptr)((int)pmVar5 + 1);\n            }\n          }\n          else {\n            pmVar5 = (mp_ptr)0x2;\n          }\n          if ((extraout_ECX != local_124) && ((int)pmVar5 < (int)rootp)) {\n            piVar12 = extraout_ECX + (int)pmVar5;\n            piVar11 = local_124 + (int)pmVar5;\n            do {\n              iVar13 = *piVar12;\n              piVar12 = piVar12 + 1;\n              *piVar11 = iVar13;\n              piVar11 = piVar11 + 1;\n            } while (extraout_ECX + (int)(rootp + 0x10000000) != piVar12);\n          }\n        }\n      }\n      else if ((extraout_ECX != local_124) && (1 < (int)rootp)) {\n        piVar12 = extraout_ECX + 1;\n        piVar11 = local_124;\n        do {\n          piVar11 = piVar11 + 1;\n          iVar13 = *piVar12;\n          piVar12 = piVar12 + 1;\n          *piVar11 = iVar13;\n        } while (extraout_ECX + (int)(rootp + 0x10000000) != piVar12);\n      }\nLAB_0004ef98:\n      iVar13 = local_124[local_134];\n    }\n    pmStack_d8 = (mp_ptr)((int)rootp - (uint)(iVar13 == 0));\n    goto LAB_0004e9ee;\n  }" if (parenthesized_expression "(pmVar5 < remp)" ( (binary_expression "pmVar5 < remp" identifier < identifier) )) (compound_statement "{\n    *local_c0 = 1;\n    if (local_124 == (int *)0x0) {\n      iVar13 = *extraout_ECX + -1;\n    }\n    else {\n      iVar13 = *extraout_ECX;\n      *local_124 = iVar13 + -1;\n      if (iVar13 == 0) {\n        if (1 < (int)rootp) {\n          iVar13 = extraout_ECX[1];\n          local_124[1] = iVar13 + -1;\n          if (iVar13 == 0) {\n            if (rootp == (mp_ptr)0x2) goto LAB_0004ef98;\n            iVar13 = extraout_ECX[2];\n            pmVar5 = (mp_ptr)0x3;\n            local_124[2] = iVar13 + -1;\n            while (iVar13 == 0) {\n              if (rootp == pmVar5) goto LAB_0004ef98;\n              iVar13 = extraout_ECX[(int)pmVar5];\n              local_124[(int)pmVar5] = iVar13 + -1;\n              pmVar5 = (mp_ptr)((int)pmVar5 + 1);\n            }\n          }\n          else {\n            pmVar5 = (mp_ptr)0x2;\n          }\n          if ((extraout_ECX != local_124) && ((int)pmVar5 < (int)rootp)) {\n            piVar12 = extraout_ECX + (int)pmVar5;\n            piVar11 = local_124 + (int)pmVar5;\n            do {\n              iVar13 = *piVar12;\n              piVar12 = piVar12 + 1;\n              *piVar11 = iVar13;\n              piVar11 = piVar11 + 1;\n            } while (extraout_ECX + (int)(rootp + 0x10000000) != piVar12);\n          }\n        }\n      }\n      else if ((extraout_ECX != local_124) && (1 < (int)rootp)) {\n        piVar12 = extraout_ECX + 1;\n        piVar11 = local_124;\n        do {\n          piVar11 = piVar11 + 1;\n          iVar13 = *piVar12;\n          piVar12 = piVar12 + 1;\n          *piVar11 = iVar13;\n        } while (extraout_ECX + (int)(rootp + 0x10000000) != piVar12);\n      }\nLAB_0004ef98:\n      iVar13 = local_124[local_134];\n    }\n    pmStack_d8 = (mp_ptr)((int)rootp - (uint)(iVar13 == 0));\n    goto LAB_0004e9ee;\n  }" { (expression_statement "*local_c0 = 1;" (assignment_expression "*local_c0 = 1" (pointer_expression "*local_c0" * identifier) = number_literal) ;) (if_statement "if (local_124 == (int *)0x0) {\n      iVar13 = *extraout_ECX + -1;\n    }\n    else {\n      iVar13 = *extraout_ECX;\n      *local_124 = iVar13 + -1;\n      if (iVar13 == 0) {\n        if (1 < (int)rootp) {\n          iVar13 = extraout_ECX[1];\n          local_124[1] = iVar13 + -1;\n          if (iVar13 == 0) {\n            if (rootp == (mp_ptr)0x2) goto LAB_0004ef98;\n            iVar13 = extraout_ECX[2];\n            pmVar5 = (mp_ptr)0x3;\n            local_124[2] = iVar13 + -1;\n            while (iVar13 == 0) {\n              if (rootp == pmVar5) goto LAB_0004ef98;\n              iVar13 = extraout_ECX[(int)pmVar5];\n              local_124[(int)pmVar5] = iVar13 + -1;\n              pmVar5 = (mp_ptr)((int)pmVar5 + 1);\n            }\n          }\n          else {\n            pmVar5 = (mp_ptr)0x2;\n          }\n          if ((extraout_ECX != local_124) && ((int)pmVar5 < (int)rootp)) {\n            piVar12 = extraout_ECX + (int)pmVar5;\n            piVar11 = local_124 + (int)pmVar5;\n            do {\n              iVar13 = *piVar12;\n              piVar12 = piVar12 + 1;\n              *piVar11 = iVar13;\n              piVar11 = piVar11 + 1;\n            } while (extraout_ECX + (int)(rootp + 0x10000000) != piVar12);\n          }\n        }\n      }\n      else if ((extraout_ECX != local_124) && (1 < (int)rootp)) {\n        piVar12 = extraout_ECX + 1;\n        piVar11 = local_124;\n        do {\n          piVar11 = piVar11 + 1;\n          iVar13 = *piVar12;\n          piVar12 = piVar12 + 1;\n          *piVar11 = iVar13;\n        } while (extraout_ECX + (int)(rootp + 0x10000000) != piVar12);\n      }\nLAB_0004ef98:\n      iVar13 = local_124[local_134];\n    }" if (parenthesized_expression "(local_124 == (int *)0x0)" ( (binary_expression "local_124 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      iVar13 = *extraout_ECX + -1;\n    }" { (expression_statement "iVar13 = *extraout_ECX + -1;" (assignment_expression "iVar13 = *extraout_ECX + -1" identifier = (binary_expression "*extraout_ECX + -1" (pointer_expression "*extraout_ECX" * identifier) + number_literal)) ;) }) (else_clause "else {\n      iVar13 = *extraout_ECX;\n      *local_124 = iVar13 + -1;\n      if (iVar13 == 0) {\n        if (1 < (int)rootp) {\n          iVar13 = extraout_ECX[1];\n          local_124[1] = iVar13 + -1;\n          if (iVar13 == 0) {\n            if (rootp == (mp_ptr)0x2) goto LAB_0004ef98;\n            iVar13 = extraout_ECX[2];\n            pmVar5 = (mp_ptr)0x3;\n            local_124[2] = iVar13 + -1;\n            while (iVar13 == 0) {\n              if (rootp == pmVar5) goto LAB_0004ef98;\n              iVar13 = extraout_ECX[(int)pmVar5];\n              local_124[(int)pmVar5] = iVar13 + -1;\n              pmVar5 = (mp_ptr)((int)pmVar5 + 1);\n            }\n          }\n          else {\n            pmVar5 = (mp_ptr)0x2;\n          }\n          if ((extraout_ECX != local_124) && ((int)pmVar5 < (int)rootp)) {\n            piVar12 = extraout_ECX + (int)pmVar5;\n            piVar11 = local_124 + (int)pmVar5;\n            do {\n              iVar13 = *piVar12;\n              piVar12 = piVar12 + 1;\n              *piVar11 = iVar13;\n              piVar11 = piVar11 + 1;\n            } while (extraout_ECX + (int)(rootp + 0x10000000) != piVar12);\n          }\n        }\n      }\n      else if ((extraout_ECX != local_124) && (1 < (int)rootp)) {\n        piVar12 = extraout_ECX + 1;\n        piVar11 = local_124;\n        do {\n          piVar11 = piVar11 + 1;\n          iVar13 = *piVar12;\n          piVar12 = piVar12 + 1;\n          *piVar11 = iVar13;\n        } while (extraout_ECX + (int)(rootp + 0x10000000) != piVar12);\n      }\nLAB_0004ef98:\n      iVar13 = local_124[local_134];\n    }" else (compound_statement "{\n      iVar13 = *extraout_ECX;\n      *local_124 = iVar13 + -1;\n      if (iVar13 == 0) {\n        if (1 < (int)rootp) {\n          iVar13 = extraout_ECX[1];\n          local_124[1] = iVar13 + -1;\n          if (iVar13 == 0) {\n            if (rootp == (mp_ptr)0x2) goto LAB_0004ef98;\n            iVar13 = extraout_ECX[2];\n            pmVar5 = (mp_ptr)0x3;\n            local_124[2] = iVar13 + -1;\n            while (iVar13 == 0) {\n              if (rootp == pmVar5) goto LAB_0004ef98;\n              iVar13 = extraout_ECX[(int)pmVar5];\n              local_124[(int)pmVar5] = iVar13 + -1;\n              pmVar5 = (mp_ptr)((int)pmVar5 + 1);\n            }\n          }\n          else {\n            pmVar5 = (mp_ptr)0x2;\n          }\n          if ((extraout_ECX != local_124) && ((int)pmVar5 < (int)rootp)) {\n            piVar12 = extraout_ECX + (int)pmVar5;\n            piVar11 = local_124 + (int)pmVar5;\n            do {\n              iVar13 = *piVar12;\n              piVar12 = piVar12 + 1;\n              *piVar11 = iVar13;\n              piVar11 = piVar11 + 1;\n            } while (extraout_ECX + (int)(rootp + 0x10000000) != piVar12);\n          }\n        }\n      }\n      else if ((extraout_ECX != local_124) && (1 < (int)rootp)) {\n        piVar12 = extraout_ECX + 1;\n        piVar11 = local_124;\n        do {\n          piVar11 = piVar11 + 1;\n          iVar13 = *piVar12;\n          piVar12 = piVar12 + 1;\n          *piVar11 = iVar13;\n        } while (extraout_ECX + (int)(rootp + 0x10000000) != piVar12);\n      }\nLAB_0004ef98:\n      iVar13 = local_124[local_134];\n    }" { (expression_statement "iVar13 = *extraout_ECX;" (assignment_expression "iVar13 = *extraout_ECX" identifier = (pointer_expression "*extraout_ECX" * identifier)) ;) (expression_statement "*local_124 = iVar13 + -1;" (assignment_expression "*local_124 = iVar13 + -1" (pointer_expression "*local_124" * identifier) = (binary_expression "iVar13 + -1" identifier + number_literal)) ;) (if_statement "if (iVar13 == 0) {\n        if (1 < (int)rootp) {\n          iVar13 = extraout_ECX[1];\n          local_124[1] = iVar13 + -1;\n          if (iVar13 == 0) {\n            if (rootp == (mp_ptr)0x2) goto LAB_0004ef98;\n            iVar13 = extraout_ECX[2];\n            pmVar5 = (mp_ptr)0x3;\n            local_124[2] = iVar13 + -1;\n            while (iVar13 == 0) {\n              if (rootp == pmVar5) goto LAB_0004ef98;\n              iVar13 = extraout_ECX[(int)pmVar5];\n              local_124[(int)pmVar5] = iVar13 + -1;\n              pmVar5 = (mp_ptr)((int)pmVar5 + 1);\n            }\n          }\n          else {\n            pmVar5 = (mp_ptr)0x2;\n          }\n          if ((extraout_ECX != local_124) && ((int)pmVar5 < (int)rootp)) {\n            piVar12 = extraout_ECX + (int)pmVar5;\n            piVar11 = local_124 + (int)pmVar5;\n            do {\n              iVar13 = *piVar12;\n              piVar12 = piVar12 + 1;\n              *piVar11 = iVar13;\n              piVar11 = piVar11 + 1;\n            } while (extraout_ECX + (int)(rootp + 0x10000000) != piVar12);\n          }\n        }\n      }\n      else if ((extraout_ECX != local_124) && (1 < (int)rootp)) {\n        piVar12 = extraout_ECX + 1;\n        piVar11 = local_124;\n        do {\n          piVar11 = piVar11 + 1;\n          iVar13 = *piVar12;\n          piVar12 = piVar12 + 1;\n          *piVar11 = iVar13;\n        } while (extraout_ECX + (int)(rootp + 0x10000000) != piVar12);\n      }" if (parenthesized_expression "(iVar13 == 0)" ( (binary_expression "iVar13 == 0" identifier == number_literal) )) (compound_statement "{\n        if (1 < (int)rootp) {\n          iVar13 = extraout_ECX[1];\n          local_124[1] = iVar13 + -1;\n          if (iVar13 == 0) {\n            if (rootp == (mp_ptr)0x2) goto LAB_0004ef98;\n            iVar13 = extraout_ECX[2];\n            pmVar5 = (mp_ptr)0x3;\n            local_124[2] = iVar13 + -1;\n            while (iVar13 == 0) {\n              if (rootp == pmVar5) goto LAB_0004ef98;\n              iVar13 = extraout_ECX[(int)pmVar5];\n              local_124[(int)pmVar5] = iVar13 + -1;\n              pmVar5 = (mp_ptr)((int)pmVar5 + 1);\n            }\n          }\n          else {\n            pmVar5 = (mp_ptr)0x2;\n          }\n          if ((extraout_ECX != local_124) && ((int)pmVar5 < (int)rootp)) {\n            piVar12 = extraout_ECX + (int)pmVar5;\n            piVar11 = local_124 + (int)pmVar5;\n            do {\n              iVar13 = *piVar12;\n              piVar12 = piVar12 + 1;\n              *piVar11 = iVar13;\n              piVar11 = piVar11 + 1;\n            } while (extraout_ECX + (int)(rootp + 0x10000000) != piVar12);\n          }\n        }\n      }" { (if_statement "if (1 < (int)rootp) {\n          iVar13 = extraout_ECX[1];\n          local_124[1] = iVar13 + -1;\n          if (iVar13 == 0) {\n            if (rootp == (mp_ptr)0x2) goto LAB_0004ef98;\n            iVar13 = extraout_ECX[2];\n            pmVar5 = (mp_ptr)0x3;\n            local_124[2] = iVar13 + -1;\n            while (iVar13 == 0) {\n              if (rootp == pmVar5) goto LAB_0004ef98;\n              iVar13 = extraout_ECX[(int)pmVar5];\n              local_124[(int)pmVar5] = iVar13 + -1;\n              pmVar5 = (mp_ptr)((int)pmVar5 + 1);\n            }\n          }\n          else {\n            pmVar5 = (mp_ptr)0x2;\n          }\n          if ((extraout_ECX != local_124) && ((int)pmVar5 < (int)rootp)) {\n            piVar12 = extraout_ECX + (int)pmVar5;\n            piVar11 = local_124 + (int)pmVar5;\n            do {\n              iVar13 = *piVar12;\n              piVar12 = piVar12 + 1;\n              *piVar11 = iVar13;\n              piVar11 = piVar11 + 1;\n            } while (extraout_ECX + (int)(rootp + 0x10000000) != piVar12);\n          }\n        }" if (parenthesized_expression "(1 < (int)rootp)" ( (binary_expression "1 < (int)rootp" number_literal < (cast_expression "(int)rootp" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n          iVar13 = extraout_ECX[1];\n          local_124[1] = iVar13 + -1;\n          if (iVar13 == 0) {\n            if (rootp == (mp_ptr)0x2) goto LAB_0004ef98;\n            iVar13 = extraout_ECX[2];\n            pmVar5 = (mp_ptr)0x3;\n            local_124[2] = iVar13 + -1;\n            while (iVar13 == 0) {\n              if (rootp == pmVar5) goto LAB_0004ef98;\n              iVar13 = extraout_ECX[(int)pmVar5];\n              local_124[(int)pmVar5] = iVar13 + -1;\n              pmVar5 = (mp_ptr)((int)pmVar5 + 1);\n            }\n          }\n          else {\n            pmVar5 = (mp_ptr)0x2;\n          }\n          if ((extraout_ECX != local_124) && ((int)pmVar5 < (int)rootp)) {\n            piVar12 = extraout_ECX + (int)pmVar5;\n            piVar11 = local_124 + (int)pmVar5;\n            do {\n              iVar13 = *piVar12;\n              piVar12 = piVar12 + 1;\n              *piVar11 = iVar13;\n              piVar11 = piVar11 + 1;\n            } while (extraout_ECX + (int)(rootp + 0x10000000) != piVar12);\n          }\n        }" { (expression_statement "iVar13 = extraout_ECX[1];" (assignment_expression "iVar13 = extraout_ECX[1]" identifier = (subscript_expression "extraout_ECX[1]" identifier [ number_literal ])) ;) (expression_statement "local_124[1] = iVar13 + -1;" (assignment_expression "local_124[1] = iVar13 + -1" (subscript_expression "local_124[1]" identifier [ number_literal ]) = (binary_expression "iVar13 + -1" identifier + number_literal)) ;) (if_statement "if (iVar13 == 0) {\n            if (rootp == (mp_ptr)0x2) goto LAB_0004ef98;\n            iVar13 = extraout_ECX[2];\n            pmVar5 = (mp_ptr)0x3;\n            local_124[2] = iVar13 + -1;\n            while (iVar13 == 0) {\n              if (rootp == pmVar5) goto LAB_0004ef98;\n              iVar13 = extraout_ECX[(int)pmVar5];\n              local_124[(int)pmVar5] = iVar13 + -1;\n              pmVar5 = (mp_ptr)((int)pmVar5 + 1);\n            }\n          }\n          else {\n            pmVar5 = (mp_ptr)0x2;\n          }" if (parenthesized_expression "(iVar13 == 0)" ( (binary_expression "iVar13 == 0" identifier == number_literal) )) (compound_statement "{\n            if (rootp == (mp_ptr)0x2) goto LAB_0004ef98;\n            iVar13 = extraout_ECX[2];\n            pmVar5 = (mp_ptr)0x3;\n            local_124[2] = iVar13 + -1;\n            while (iVar13 == 0) {\n              if (rootp == pmVar5) goto LAB_0004ef98;\n              iVar13 = extraout_ECX[(int)pmVar5];\n              local_124[(int)pmVar5] = iVar13 + -1;\n              pmVar5 = (mp_ptr)((int)pmVar5 + 1);\n            }\n          }" { (if_statement "if (rootp == (mp_ptr)0x2) goto LAB_0004ef98;" if (parenthesized_expression "(rootp == (mp_ptr)0x2)" ( (binary_expression "rootp == (mp_ptr)0x2" identifier == (cast_expression "(mp_ptr)0x2" ( (type_descriptor "mp_ptr" type_identifier) ) number_literal)) )) (goto_statement "goto LAB_0004ef98;" goto statement_identifier ;)) (expression_statement "iVar13 = extraout_ECX[2];" (assignment_expression "iVar13 = extraout_ECX[2]" identifier = (subscript_expression "extraout_ECX[2]" identifier [ number_literal ])) ;) (expression_statement "pmVar5 = (mp_ptr)0x3;" (assignment_expression "pmVar5 = (mp_ptr)0x3" identifier = (cast_expression "(mp_ptr)0x3" ( (type_descriptor "mp_ptr" type_identifier) ) number_literal)) ;) (expression_statement "local_124[2] = iVar13 + -1;" (assignment_expression "local_124[2] = iVar13 + -1" (subscript_expression "local_124[2]" identifier [ number_literal ]) = (binary_expression "iVar13 + -1" identifier + number_literal)) ;) (while_statement "while (iVar13 == 0) {\n              if (rootp == pmVar5) goto LAB_0004ef98;\n              iVar13 = extraout_ECX[(int)pmVar5];\n              local_124[(int)pmVar5] = iVar13 + -1;\n              pmVar5 = (mp_ptr)((int)pmVar5 + 1);\n            }" while (parenthesized_expression "(iVar13 == 0)" ( (binary_expression "iVar13 == 0" identifier == number_literal) )) (compound_statement "{\n              if (rootp == pmVar5) goto LAB_0004ef98;\n              iVar13 = extraout_ECX[(int)pmVar5];\n              local_124[(int)pmVar5] = iVar13 + -1;\n              pmVar5 = (mp_ptr)((int)pmVar5 + 1);\n            }" { (if_statement "if (rootp == pmVar5) goto LAB_0004ef98;" if (parenthesized_expression "(rootp == pmVar5)" ( (binary_expression "rootp == pmVar5" identifier == identifier) )) (goto_statement "goto LAB_0004ef98;" goto statement_identifier ;)) (expression_statement "iVar13 = extraout_ECX[(int)pmVar5];" (assignment_expression "iVar13 = extraout_ECX[(int)pmVar5]" identifier = (subscript_expression "extraout_ECX[(int)pmVar5]" identifier [ (cast_expression "(int)pmVar5" ( (type_descriptor "int" primitive_type) ) identifier) ])) ;) (expression_statement "local_124[(int)pmVar5] = iVar13 + -1;" (assignment_expression "local_124[(int)pmVar5] = iVar13 + -1" (subscript_expression "local_124[(int)pmVar5]" identifier [ (cast_expression "(int)pmVar5" ( (type_descriptor "int" primitive_type) ) identifier) ]) = (binary_expression "iVar13 + -1" identifier + number_literal)) ;) (expression_statement "pmVar5 = (mp_ptr)((int)pmVar5 + 1);" (assignment_expression "pmVar5 = (mp_ptr)((int)pmVar5 + 1)" identifier = (call_expression "(mp_ptr)((int)pmVar5 + 1)" (parenthesized_expression "(mp_ptr)" ( identifier )) (argument_list "((int)pmVar5 + 1)" ( (binary_expression "(int)pmVar5 + 1" (cast_expression "(int)pmVar5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) })) }) (else_clause "else {\n            pmVar5 = (mp_ptr)0x2;\n          }" else (compound_statement "{\n            pmVar5 = (mp_ptr)0x2;\n          }" { (expression_statement "pmVar5 = (mp_ptr)0x2;" (assignment_expression "pmVar5 = (mp_ptr)0x2" identifier = (cast_expression "(mp_ptr)0x2" ( (type_descriptor "mp_ptr" type_identifier) ) number_literal)) ;) }))) (if_statement "if ((extraout_ECX != local_124) && ((int)pmVar5 < (int)rootp)) {\n            piVar12 = extraout_ECX + (int)pmVar5;\n            piVar11 = local_124 + (int)pmVar5;\n            do {\n              iVar13 = *piVar12;\n              piVar12 = piVar12 + 1;\n              *piVar11 = iVar13;\n              piVar11 = piVar11 + 1;\n            } while (extraout_ECX + (int)(rootp + 0x10000000) != piVar12);\n          }" if (parenthesized_expression "((extraout_ECX != local_124) && ((int)pmVar5 < (int)rootp))" ( (binary_expression "(extraout_ECX != local_124) && ((int)pmVar5 < (int)rootp)" (parenthesized_expression "(extraout_ECX != local_124)" ( (binary_expression "extraout_ECX != local_124" identifier != identifier) )) && (parenthesized_expression "((int)pmVar5 < (int)rootp)" ( (binary_expression "(int)pmVar5 < (int)rootp" (cast_expression "(int)pmVar5" ( (type_descriptor "int" primitive_type) ) identifier) < (cast_expression "(int)rootp" ( (type_descriptor "int" primitive_type) ) identifier)) ))) )) (compound_statement "{\n            piVar12 = extraout_ECX + (int)pmVar5;\n            piVar11 = local_124 + (int)pmVar5;\n            do {\n              iVar13 = *piVar12;\n              piVar12 = piVar12 + 1;\n              *piVar11 = iVar13;\n              piVar11 = piVar11 + 1;\n            } while (extraout_ECX + (int)(rootp + 0x10000000) != piVar12);\n          }" { (expression_statement "piVar12 = extraout_ECX + (int)pmVar5;" (assignment_expression "piVar12 = extraout_ECX + (int)pmVar5" identifier = (binary_expression "extraout_ECX + (int)pmVar5" identifier + (cast_expression "(int)pmVar5" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "piVar11 = local_124 + (int)pmVar5;" (assignment_expression "piVar11 = local_124 + (int)pmVar5" identifier = (binary_expression "local_124 + (int)pmVar5" identifier + (cast_expression "(int)pmVar5" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (do_statement "do {\n              iVar13 = *piVar12;\n              piVar12 = piVar12 + 1;\n              *piVar11 = iVar13;\n              piVar11 = piVar11 + 1;\n            } while (extraout_ECX + (int)(rootp + 0x10000000) != piVar12);" do (compound_statement "{\n              iVar13 = *piVar12;\n              piVar12 = piVar12 + 1;\n              *piVar11 = iVar13;\n              piVar11 = piVar11 + 1;\n            }" { (expression_statement "iVar13 = *piVar12;" (assignment_expression "iVar13 = *piVar12" identifier = (pointer_expression "*piVar12" * identifier)) ;) (expression_statement "piVar12 = piVar12 + 1;" (assignment_expression "piVar12 = piVar12 + 1" identifier = (binary_expression "piVar12 + 1" identifier + number_literal)) ;) (expression_statement "*piVar11 = iVar13;" (assignment_expression "*piVar11 = iVar13" (pointer_expression "*piVar11" * identifier) = identifier) ;) (expression_statement "piVar11 = piVar11 + 1;" (assignment_expression "piVar11 = piVar11 + 1" identifier = (binary_expression "piVar11 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(extraout_ECX + (int)(rootp + 0x10000000) != piVar12)" ( (binary_expression "extraout_ECX + (int)(rootp + 0x10000000) != piVar12" (binary_expression "extraout_ECX + (int)(rootp + 0x10000000)" identifier + (cast_expression "(int)(rootp + 0x10000000)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(rootp + 0x10000000)" ( (binary_expression "rootp + 0x10000000" identifier + number_literal) )))) != identifier) )) ;) })) })) }) (else_clause "else if ((extraout_ECX != local_124) && (1 < (int)rootp)) {\n        piVar12 = extraout_ECX + 1;\n        piVar11 = local_124;\n        do {\n          piVar11 = piVar11 + 1;\n          iVar13 = *piVar12;\n          piVar12 = piVar12 + 1;\n          *piVar11 = iVar13;\n        } while (extraout_ECX + (int)(rootp + 0x10000000) != piVar12);\n      }" else (if_statement "if ((extraout_ECX != local_124) && (1 < (int)rootp)) {\n        piVar12 = extraout_ECX + 1;\n        piVar11 = local_124;\n        do {\n          piVar11 = piVar11 + 1;\n          iVar13 = *piVar12;\n          piVar12 = piVar12 + 1;\n          *piVar11 = iVar13;\n        } while (extraout_ECX + (int)(rootp + 0x10000000) != piVar12);\n      }" if (parenthesized_expression "((extraout_ECX != local_124) && (1 < (int)rootp))" ( (binary_expression "(extraout_ECX != local_124) && (1 < (int)rootp)" (parenthesized_expression "(extraout_ECX != local_124)" ( (binary_expression "extraout_ECX != local_124" identifier != identifier) )) && (parenthesized_expression "(1 < (int)rootp)" ( (binary_expression "1 < (int)rootp" number_literal < (cast_expression "(int)rootp" ( (type_descriptor "int" primitive_type) ) identifier)) ))) )) (compound_statement "{\n        piVar12 = extraout_ECX + 1;\n        piVar11 = local_124;\n        do {\n          piVar11 = piVar11 + 1;\n          iVar13 = *piVar12;\n          piVar12 = piVar12 + 1;\n          *piVar11 = iVar13;\n        } while (extraout_ECX + (int)(rootp + 0x10000000) != piVar12);\n      }" { (expression_statement "piVar12 = extraout_ECX + 1;" (assignment_expression "piVar12 = extraout_ECX + 1" identifier = (binary_expression "extraout_ECX + 1" identifier + number_literal)) ;) (expression_statement "piVar11 = local_124;" (assignment_expression "piVar11 = local_124" identifier = identifier) ;) (do_statement "do {\n          piVar11 = piVar11 + 1;\n          iVar13 = *piVar12;\n          piVar12 = piVar12 + 1;\n          *piVar11 = iVar13;\n        } while (extraout_ECX + (int)(rootp + 0x10000000) != piVar12);" do (compound_statement "{\n          piVar11 = piVar11 + 1;\n          iVar13 = *piVar12;\n          piVar12 = piVar12 + 1;\n          *piVar11 = iVar13;\n        }" { (expression_statement "piVar11 = piVar11 + 1;" (assignment_expression "piVar11 = piVar11 + 1" identifier = (binary_expression "piVar11 + 1" identifier + number_literal)) ;) (expression_statement "iVar13 = *piVar12;" (assignment_expression "iVar13 = *piVar12" identifier = (pointer_expression "*piVar12" * identifier)) ;) (expression_statement "piVar12 = piVar12 + 1;" (assignment_expression "piVar12 = piVar12 + 1" identifier = (binary_expression "piVar12 + 1" identifier + number_literal)) ;) (expression_statement "*piVar11 = iVar13;" (assignment_expression "*piVar11 = iVar13" (pointer_expression "*piVar11" * identifier) = identifier) ;) }) while (parenthesized_expression "(extraout_ECX + (int)(rootp + 0x10000000) != piVar12)" ( (binary_expression "extraout_ECX + (int)(rootp + 0x10000000) != piVar12" (binary_expression "extraout_ECX + (int)(rootp + 0x10000000)" identifier + (cast_expression "(int)(rootp + 0x10000000)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(rootp + 0x10000000)" ( (binary_expression "rootp + 0x10000000" identifier + number_literal) )))) != identifier) )) ;) })))) (labeled_statement "LAB_0004ef98:\n      iVar13 = local_124[local_134];" statement_identifier : (expression_statement "iVar13 = local_124[local_134];" (assignment_expression "iVar13 = local_124[local_134]" identifier = (subscript_expression "local_124[local_134]" identifier [ identifier ])) ;)) }))) (expression_statement "pmStack_d8 = (mp_ptr)((int)rootp - (uint)(iVar13 == 0));" (assignment_expression "pmStack_d8 = (mp_ptr)((int)rootp - (uint)(iVar13 == 0))" identifier = (call_expression "(mp_ptr)((int)rootp - (uint)(iVar13 == 0))" (parenthesized_expression "(mp_ptr)" ( identifier )) (argument_list "((int)rootp - (uint)(iVar13 == 0))" ( (binary_expression "(int)rootp - (uint)(iVar13 == 0)" (cast_expression "(int)rootp" ( (type_descriptor "int" primitive_type) ) identifier) - (call_expression "(uint)(iVar13 == 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(iVar13 == 0)" ( (binary_expression "iVar13 == 0" identifier == number_literal) )))) )))) ;) (goto_statement "goto LAB_0004e9ee;" goto statement_identifier ;) })) (if_statement "if (iVar13 == 0x20) {\n    uVar14 = extraout_ECX[(int)rootp + 0x3ffffffe];\n  }\n  else {\n    uVar14 = (uint)extraout_ECX[(int)rootp + (-1 - (uint)(rootp != (mp_ptr)0x1))] >>\n             (0x20 - (byte)iVar13 & 0x1f) | uVar14 << ((byte)iVar13 & 0x1f);\n  }" if (parenthesized_expression "(iVar13 == 0x20)" ( (binary_expression "iVar13 == 0x20" identifier == number_literal) )) (compound_statement "{\n    uVar14 = extraout_ECX[(int)rootp + 0x3ffffffe];\n  }" { (expression_statement "uVar14 = extraout_ECX[(int)rootp + 0x3ffffffe];" (assignment_expression "uVar14 = extraout_ECX[(int)rootp + 0x3ffffffe]" identifier = (subscript_expression "extraout_ECX[(int)rootp + 0x3ffffffe]" identifier [ (binary_expression "(int)rootp + 0x3ffffffe" (cast_expression "(int)rootp" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ])) ;) }) (else_clause "else {\n    uVar14 = (uint)extraout_ECX[(int)rootp + (-1 - (uint)(rootp != (mp_ptr)0x1))] >>\n             (0x20 - (byte)iVar13 & 0x1f) | uVar14 << ((byte)iVar13 & 0x1f);\n  }" else (compound_statement "{\n    uVar14 = (uint)extraout_ECX[(int)rootp + (-1 - (uint)(rootp != (mp_ptr)0x1))] >>\n             (0x20 - (byte)iVar13 & 0x1f) | uVar14 << ((byte)iVar13 & 0x1f);\n  }" { (expression_statement "uVar14 = (uint)extraout_ECX[(int)rootp + (-1 - (uint)(rootp != (mp_ptr)0x1))] >>\n             (0x20 - (byte)iVar13 & 0x1f) | uVar14 << ((byte)iVar13 & 0x1f);" (assignment_expression "uVar14 = (uint)extraout_ECX[(int)rootp + (-1 - (uint)(rootp != (mp_ptr)0x1))] >>\n             (0x20 - (byte)iVar13 & 0x1f) | uVar14 << ((byte)iVar13 & 0x1f)" identifier = (binary_expression "(uint)extraout_ECX[(int)rootp + (-1 - (uint)(rootp != (mp_ptr)0x1))] >>\n             (0x20 - (byte)iVar13 & 0x1f) | uVar14 << ((byte)iVar13 & 0x1f)" (binary_expression "(uint)extraout_ECX[(int)rootp + (-1 - (uint)(rootp != (mp_ptr)0x1))] >>\n             (0x20 - (byte)iVar13 & 0x1f)" (cast_expression "(uint)extraout_ECX[(int)rootp + (-1 - (uint)(rootp != (mp_ptr)0x1))]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "extraout_ECX[(int)rootp + (-1 - (uint)(rootp != (mp_ptr)0x1))]" identifier [ (binary_expression "(int)rootp + (-1 - (uint)(rootp != (mp_ptr)0x1))" (cast_expression "(int)rootp" ( (type_descriptor "int" primitive_type) ) identifier) + (parenthesized_expression "(-1 - (uint)(rootp != (mp_ptr)0x1))" ( (binary_expression "-1 - (uint)(rootp != (mp_ptr)0x1)" number_literal - (call_expression "(uint)(rootp != (mp_ptr)0x1)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(rootp != (mp_ptr)0x1)" ( (binary_expression "rootp != (mp_ptr)0x1" identifier != (cast_expression "(mp_ptr)0x1" ( (type_descriptor "mp_ptr" type_identifier) ) number_literal)) )))) ))) ])) >> (parenthesized_expression "(0x20 - (byte)iVar13 & 0x1f)" ( (binary_expression "0x20 - (byte)iVar13 & 0x1f" (binary_expression "0x20 - (byte)iVar13" number_literal - (cast_expression "(byte)iVar13" ( (type_descriptor "byte" type_identifier) ) identifier)) & number_literal) ))) | (binary_expression "uVar14 << ((byte)iVar13 & 0x1f)" identifier << (parenthesized_expression "((byte)iVar13 & 0x1f)" ( (binary_expression "(byte)iVar13 & 0x1f" (cast_expression "(byte)iVar13" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) ))))) ;) }))) (expression_statement "uVar14 = (uint)*(byte *)(unaff_EDI + 0x32bc7 + (uVar14 >> 0x18));" (assignment_expression "uVar14 = (uint)*(byte *)(unaff_EDI + 0x32bc7 + (uVar14 >> 0x18))" identifier = (binary_expression "(uint)*(byte *)(unaff_EDI + 0x32bc7 + (uVar14 >> 0x18))" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)(unaff_EDI + 0x32bc7 + (uVar14 >> 0x18))" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x32bc7 + (uVar14 >> 0x18))" ( (binary_expression "unaff_EDI + 0x32bc7 + (uVar14 >> 0x18)" (binary_expression "unaff_EDI + 0x32bc7" identifier + number_literal) + (parenthesized_expression "(uVar14 >> 0x18)" ( (binary_expression "uVar14 >> 0x18" identifier >> number_literal) ))) ))))) ;) (if_statement "if (pmVar5 < (mp_ptr)0x1000000) {\n    uVar6 = ((int)pmVar5 * 0x100 | uVar14) / (uint)remp;\n    uVar14 = uVar6 & 0xff;\n    uStack_e8 = uVar6 >> 8;\n  }\n  else {\n    uStack_e8 = (uint)pmVar5 / (uint)remp;\n    uVar14 = ((uint)pmVar5 % (uint)remp << 8 | uVar14) / (uint)remp;\n  }" if (parenthesized_expression "(pmVar5 < (mp_ptr)0x1000000)" ( (binary_expression "pmVar5 < (mp_ptr)0x1000000" identifier < (cast_expression "(mp_ptr)0x1000000" ( (type_descriptor "mp_ptr" type_identifier) ) number_literal)) )) (compound_statement "{\n    uVar6 = ((int)pmVar5 * 0x100 | uVar14) / (uint)remp;\n    uVar14 = uVar6 & 0xff;\n    uStack_e8 = uVar6 >> 8;\n  }" { (expression_statement "uVar6 = ((int)pmVar5 * 0x100 | uVar14) / (uint)remp;" (assignment_expression "uVar6 = ((int)pmVar5 * 0x100 | uVar14) / (uint)remp" identifier = (binary_expression "((int)pmVar5 * 0x100 | uVar14) / (uint)remp" (parenthesized_expression "((int)pmVar5 * 0x100 | uVar14)" ( (binary_expression "(int)pmVar5 * 0x100 | uVar14" (binary_expression "(int)pmVar5 * 0x100" (cast_expression "(int)pmVar5" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal) | identifier) )) / (cast_expression "(uint)remp" ( (type_descriptor "uint" type_identifier) ) identifier))) ;) (expression_statement "uVar14 = uVar6 & 0xff;" (assignment_expression "uVar14 = uVar6 & 0xff" identifier = (binary_expression "uVar6 & 0xff" identifier & number_literal)) ;) (expression_statement "uStack_e8 = uVar6 >> 8;" (assignment_expression "uStack_e8 = uVar6 >> 8" identifier = (binary_expression "uVar6 >> 8" identifier >> number_literal)) ;) }) (else_clause "else {\n    uStack_e8 = (uint)pmVar5 / (uint)remp;\n    uVar14 = ((uint)pmVar5 % (uint)remp << 8 | uVar14) / (uint)remp;\n  }" else (compound_statement "{\n    uStack_e8 = (uint)pmVar5 / (uint)remp;\n    uVar14 = ((uint)pmVar5 % (uint)remp << 8 | uVar14) / (uint)remp;\n  }" { (expression_statement "uStack_e8 = (uint)pmVar5 / (uint)remp;" (assignment_expression "uStack_e8 = (uint)pmVar5 / (uint)remp" identifier = (binary_expression "(uint)pmVar5 / (uint)remp" (cast_expression "(uint)pmVar5" ( (type_descriptor "uint" type_identifier) ) identifier) / (cast_expression "(uint)remp" ( (type_descriptor "uint" type_identifier) ) identifier))) ;) (expression_statement "uVar14 = ((uint)pmVar5 % (uint)remp << 8 | uVar14) / (uint)remp;" (assignment_expression "uVar14 = ((uint)pmVar5 % (uint)remp << 8 | uVar14) / (uint)remp" identifier = (binary_expression "((uint)pmVar5 % (uint)remp << 8 | uVar14) / (uint)remp" (parenthesized_expression "((uint)pmVar5 % (uint)remp << 8 | uVar14)" ( (binary_expression "(uint)pmVar5 % (uint)remp << 8 | uVar14" (binary_expression "(uint)pmVar5 % (uint)remp << 8" (binary_expression "(uint)pmVar5 % (uint)remp" (cast_expression "(uint)pmVar5" ( (type_descriptor "uint" type_identifier) ) identifier) % (cast_expression "(uint)remp" ( (type_descriptor "uint" type_identifier) ) identifier)) << number_literal) | identifier) )) / (cast_expression "(uint)remp" ( (type_descriptor "uint" type_identifier) ) identifier))) ;) }))) (expression_statement "iVar13 = uStack_e8 * (int)remp;" (assignment_expression "iVar13 = uStack_e8 * (int)remp" identifier = (binary_expression "uStack_e8 * (int)remp" identifier * (cast_expression "(int)remp" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "bVar2 = *(byte *)(unaff_EDI + 0x32ac7 + uVar14);" (assignment_expression "bVar2 = *(byte *)(unaff_EDI + 0x32ac7 + uVar14)" identifier = (pointer_expression "*(byte *)(unaff_EDI + 0x32ac7 + uVar14)" * (cast_expression "(byte *)(unaff_EDI + 0x32ac7 + uVar14)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x32ac7 + uVar14)" ( (binary_expression "unaff_EDI + 0x32ac7 + uVar14" (binary_expression "unaff_EDI + 0x32ac7" identifier + number_literal) + identifier) ))))) ;) (expression_statement "uStack_ec = (int)remp - 1U;" (assignment_expression "uStack_ec = (int)remp - 1U" identifier = (binary_expression "(int)remp - 1U" (cast_expression "(int)remp" ( (type_descriptor "int" primitive_type) ) identifier) - number_literal)) ;) (expression_statement "uVar14 = 3;" (assignment_expression "uVar14 = 3" identifier = number_literal) ;) (for_statement "for (uVar6 = (int)remp - 1U >> 2; uVar6 != 0; uVar6 = uVar6 >> 1) {\n    uVar14 = uVar14 + 1;\n  }" for ( (assignment_expression "uVar6 = (int)remp - 1U >> 2" identifier = (binary_expression "(int)remp - 1U >> 2" (binary_expression "(int)remp - 1U" (cast_expression "(int)remp" ( (type_descriptor "int" primitive_type) ) identifier) - number_literal) >> number_literal)) ; (binary_expression "uVar6 != 0" identifier != number_literal) ; (assignment_expression "uVar6 = uVar6 >> 1" identifier = (binary_expression "uVar6 >> 1" identifier >> number_literal)) ) (compound_statement "{\n    uVar14 = uVar14 + 1;\n  }" { (expression_statement "uVar14 = uVar14 + 1;" (assignment_expression "uVar14 = uVar14 + 1" identifier = (binary_expression "uVar14 + 1" identifier + number_literal)) ;) })) (expression_statement "iVar18 = 0;" (assignment_expression "iVar18 = 0" identifier = number_literal) ;) (expression_statement "pmStack_fc = sizes;" (assignment_expression "pmStack_fc = sizes" identifier = identifier) ;) (expression_statement "sizes[0] = uStack_e8;" (assignment_expression "sizes[0] = uStack_e8" (subscript_expression "sizes[0]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (8 < uStack_e8) {\n    iVar4 = 0;\n    do {\n      while (iVar18 = iVar4, uVar14 < uStack_e8) {\n        uStack_e8 = uStack_e8 + uVar14 >> 1;\n        sizes[iVar18 + 1] = uStack_e8;\n        iVar4 = iVar18 + 1;\n        if (uStack_e8 < 9) goto LAB_0004e56d;\n      }\n      uStack_e8 = uStack_e8 - 1;\n      sizes[iVar18 + 1] = uStack_e8;\n      iVar4 = iVar18 + 1;\n    } while (uStack_e8 != 8);\n    uStack_e8 = 8;\nLAB_0004e56d:\n    iVar18 = iVar18 + 1;\n  }" if (parenthesized_expression "(8 < uStack_e8)" ( (binary_expression "8 < uStack_e8" number_literal < identifier) )) (compound_statement "{\n    iVar4 = 0;\n    do {\n      while (iVar18 = iVar4, uVar14 < uStack_e8) {\n        uStack_e8 = uStack_e8 + uVar14 >> 1;\n        sizes[iVar18 + 1] = uStack_e8;\n        iVar4 = iVar18 + 1;\n        if (uStack_e8 < 9) goto LAB_0004e56d;\n      }\n      uStack_e8 = uStack_e8 - 1;\n      sizes[iVar18 + 1] = uStack_e8;\n      iVar4 = iVar18 + 1;\n    } while (uStack_e8 != 8);\n    uStack_e8 = 8;\nLAB_0004e56d:\n    iVar18 = iVar18 + 1;\n  }" { (expression_statement "iVar4 = 0;" (assignment_expression "iVar4 = 0" identifier = number_literal) ;) (do_statement "do {\n      while (iVar18 = iVar4, uVar14 < uStack_e8) {\n        uStack_e8 = uStack_e8 + uVar14 >> 1;\n        sizes[iVar18 + 1] = uStack_e8;\n        iVar4 = iVar18 + 1;\n        if (uStack_e8 < 9) goto LAB_0004e56d;\n      }\n      uStack_e8 = uStack_e8 - 1;\n      sizes[iVar18 + 1] = uStack_e8;\n      iVar4 = iVar18 + 1;\n    } while (uStack_e8 != 8);" do (compound_statement "{\n      while (iVar18 = iVar4, uVar14 < uStack_e8) {\n        uStack_e8 = uStack_e8 + uVar14 >> 1;\n        sizes[iVar18 + 1] = uStack_e8;\n        iVar4 = iVar18 + 1;\n        if (uStack_e8 < 9) goto LAB_0004e56d;\n      }\n      uStack_e8 = uStack_e8 - 1;\n      sizes[iVar18 + 1] = uStack_e8;\n      iVar4 = iVar18 + 1;\n    }" { (while_statement "while (iVar18 = iVar4, uVar14 < uStack_e8) {\n        uStack_e8 = uStack_e8 + uVar14 >> 1;\n        sizes[iVar18 + 1] = uStack_e8;\n        iVar4 = iVar18 + 1;\n        if (uStack_e8 < 9) goto LAB_0004e56d;\n      }" while (parenthesized_expression "(iVar18 = iVar4, uVar14 < uStack_e8)" ( (comma_expression "iVar18 = iVar4, uVar14 < uStack_e8" (assignment_expression "iVar18 = iVar4" identifier = identifier) , (binary_expression "uVar14 < uStack_e8" identifier < identifier)) )) (compound_statement "{\n        uStack_e8 = uStack_e8 + uVar14 >> 1;\n        sizes[iVar18 + 1] = uStack_e8;\n        iVar4 = iVar18 + 1;\n        if (uStack_e8 < 9) goto LAB_0004e56d;\n      }" { (expression_statement "uStack_e8 = uStack_e8 + uVar14 >> 1;" (assignment_expression "uStack_e8 = uStack_e8 + uVar14 >> 1" identifier = (binary_expression "uStack_e8 + uVar14 >> 1" (binary_expression "uStack_e8 + uVar14" identifier + identifier) >> number_literal)) ;) (expression_statement "sizes[iVar18 + 1] = uStack_e8;" (assignment_expression "sizes[iVar18 + 1] = uStack_e8" (subscript_expression "sizes[iVar18 + 1]" identifier [ (binary_expression "iVar18 + 1" identifier + number_literal) ]) = identifier) ;) (expression_statement "iVar4 = iVar18 + 1;" (assignment_expression "iVar4 = iVar18 + 1" identifier = (binary_expression "iVar18 + 1" identifier + number_literal)) ;) (if_statement "if (uStack_e8 < 9) goto LAB_0004e56d;" if (parenthesized_expression "(uStack_e8 < 9)" ( (binary_expression "uStack_e8 < 9" identifier < number_literal) )) (goto_statement "goto LAB_0004e56d;" goto statement_identifier ;)) })) (expression_statement "uStack_e8 = uStack_e8 - 1;" (assignment_expression "uStack_e8 = uStack_e8 - 1" identifier = (binary_expression "uStack_e8 - 1" identifier - number_literal)) ;) (expression_statement "sizes[iVar18 + 1] = uStack_e8;" (assignment_expression "sizes[iVar18 + 1] = uStack_e8" (subscript_expression "sizes[iVar18 + 1]" identifier [ (binary_expression "iVar18 + 1" identifier + number_literal) ]) = identifier) ;) (expression_statement "iVar4 = iVar18 + 1;" (assignment_expression "iVar4 = iVar18 + 1" identifier = (binary_expression "iVar18 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uStack_e8 != 8)" ( (binary_expression "uStack_e8 != 8" identifier != number_literal) )) ;) (expression_statement "uStack_e8 = 8;" (assignment_expression "uStack_e8 = 8" identifier = number_literal) ;) (labeled_statement "LAB_0004e56d:\n    iVar18 = iVar18 + 1;" statement_identifier : (expression_statement "iVar18 = iVar18 + 1;" (assignment_expression "iVar18 = iVar18 + 1" identifier = (binary_expression "iVar18 + 1" identifier + number_literal)) ;)) })) (expression_statement "__tmp_marker = (tmp_reentrant_t *)0x0;" (assignment_expression "__tmp_marker = (tmp_reentrant_t *)0x0" identifier = (cast_expression "(tmp_reentrant_t *)0x0" ( (type_descriptor "tmp_reentrant_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "uStack_f4 = iVar13 - uStack_e8;" (assignment_expression "uStack_f4 = iVar13 - uStack_e8" identifier = (binary_expression "iVar13 - uStack_e8" identifier - identifier)) ;) (expression_statement "*local_c0 = (bVar2 | 0x100) >> (8U - (char)uStack_e8 & 0x1f);" (assignment_expression "*local_c0 = (bVar2 | 0x100) >> (8U - (char)uStack_e8 & 0x1f)" (pointer_expression "*local_c0" * identifier) = (binary_expression "(bVar2 | 0x100) >> (8U - (char)uStack_e8 & 0x1f)" (parenthesized_expression "(bVar2 | 0x100)" ( (binary_expression "bVar2 | 0x100" identifier | number_literal) )) >> (parenthesized_expression "(8U - (char)uStack_e8 & 0x1f)" ( (binary_expression "8U - (char)uStack_e8 & 0x1f" (binary_expression "8U - (char)uStack_e8" number_literal - (cast_expression "(char)uStack_e8" ( (type_descriptor "char" primitive_type) ) identifier)) & number_literal) )))) ;) (expression_statement "uStack_b6 = in_FPUControlWord;" (assignment_expression "uStack_b6 = in_FPUControlWord" identifier = identifier) ;) (expression_statement "uStack_c8 = 0;" (assignment_expression "uStack_c8 = 0" identifier = number_literal) ;) (expression_statement "uStack_b8 = in_FPUControlWord | 0xc00;" (assignment_expression "uStack_b8 = in_FPUControlWord | 0xc00" identifier = (binary_expression "in_FPUControlWord | 0xc00" identifier | number_literal)) ;) (expression_statement "iStack_bc = (int)ROUND((double)remp * *(double *)(unaff_EDI + 0x32cc7) *\n                         (double)*(float *)(&UNK_00032ccf + unaff_EDI));" (assignment_expression "iStack_bc = (int)ROUND((double)remp * *(double *)(unaff_EDI + 0x32cc7) *\n                         (double)*(float *)(&UNK_00032ccf + unaff_EDI))" identifier = (cast_expression "(int)ROUND((double)remp * *(double *)(unaff_EDI + 0x32cc7) *\n                         (double)*(float *)(&UNK_00032ccf + unaff_EDI))" ( (type_descriptor "int" primitive_type) ) (call_expression "ROUND((double)remp * *(double *)(unaff_EDI + 0x32cc7) *\n                         (double)*(float *)(&UNK_00032ccf + unaff_EDI))" identifier (argument_list "((double)remp * *(double *)(unaff_EDI + 0x32cc7) *\n                         (double)*(float *)(&UNK_00032ccf + unaff_EDI))" ( (binary_expression "(double)remp * *(double *)(unaff_EDI + 0x32cc7) *\n                         (double)*(float *)(&UNK_00032ccf + unaff_EDI)" (binary_expression "(double)remp * *(double *)(unaff_EDI + 0x32cc7)" (cast_expression "(double)remp" ( (type_descriptor "double" primitive_type) ) identifier) * (pointer_expression "*(double *)(unaff_EDI + 0x32cc7)" * (cast_expression "(double *)(unaff_EDI + 0x32cc7)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x32cc7)" ( (binary_expression "unaff_EDI + 0x32cc7" identifier + number_literal) ))))) * (cast_expression "(double)*(float *)(&UNK_00032ccf + unaff_EDI)" ( (type_descriptor "double" primitive_type) ) (pointer_expression "*(float *)(&UNK_00032ccf + unaff_EDI)" * (cast_expression "(float *)(&UNK_00032ccf + unaff_EDI)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&UNK_00032ccf + unaff_EDI)" ( (binary_expression "&UNK_00032ccf + unaff_EDI" (pointer_expression "&UNK_00032ccf" & identifier) + identifier) )))))) ))))) ;) (expression_statement "iStack_cc = (int)rootp + iStack_bc + 2;" (assignment_expression "iStack_cc = (int)rootp + iStack_bc + 2" identifier = (binary_expression "(int)rootp + iStack_bc + 2" (binary_expression "(int)rootp + iStack_bc" (cast_expression "(int)rootp" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) + number_literal)) ;) (expression_statement "uVar14 = ((int)rootp + iStack_cc * 2 + 1) * 4;" (assignment_expression "uVar14 = ((int)rootp + iStack_cc * 2 + 1) * 4" identifier = (binary_expression "((int)rootp + iStack_cc * 2 + 1) * 4" (parenthesized_expression "((int)rootp + iStack_cc * 2 + 1)" ( (binary_expression "(int)rootp + iStack_cc * 2 + 1" (binary_expression "(int)rootp + iStack_cc * 2" (cast_expression "(int)rootp" ( (type_descriptor "int" primitive_type) ) identifier) + (binary_expression "iStack_cc * 2" identifier * number_literal)) + number_literal) )) * number_literal)) ;) (if_statement "if (uVar14 < 0x7f01) {\n    iVar13 = -(uVar14 + 0x1b & 0xfffffff0);\n    puVar17 = auStack_13c + iVar13;\n    piStack_120 = (int *)((int)&uStack_130 + iVar13);\n  }\n  else {\n    piStack_120 = (int *)__gmp_tmp_reentrant_alloc(&__tmp_marker,uVar14);\n    puVar17 = auStack_13c;\n  }" if (parenthesized_expression "(uVar14 < 0x7f01)" ( (binary_expression "uVar14 < 0x7f01" identifier < number_literal) )) (compound_statement "{\n    iVar13 = -(uVar14 + 0x1b & 0xfffffff0);\n    puVar17 = auStack_13c + iVar13;\n    piStack_120 = (int *)((int)&uStack_130 + iVar13);\n  }" { (expression_statement "iVar13 = -(uVar14 + 0x1b & 0xfffffff0);" (assignment_expression "iVar13 = -(uVar14 + 0x1b & 0xfffffff0)" identifier = (unary_expression "-(uVar14 + 0x1b & 0xfffffff0)" - (parenthesized_expression "(uVar14 + 0x1b & 0xfffffff0)" ( (binary_expression "uVar14 + 0x1b & 0xfffffff0" (binary_expression "uVar14 + 0x1b" identifier + number_literal) & number_literal) )))) ;) (expression_statement "puVar17 = auStack_13c + iVar13;" (assignment_expression "puVar17 = auStack_13c + iVar13" identifier = (binary_expression "auStack_13c + iVar13" identifier + identifier)) ;) (expression_statement "piStack_120 = (int *)((int)&uStack_130 + iVar13);" (assignment_expression "piStack_120 = (int *)((int)&uStack_130 + iVar13)" identifier = (cast_expression "(int *)((int)&uStack_130 + iVar13)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&uStack_130 + iVar13)" ( (binary_expression "(int)&uStack_130 + iVar13" (cast_expression "(int)&uStack_130" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&uStack_130" & identifier)) + identifier) )))) ;) }) (else_clause "else {\n    piStack_120 = (int *)__gmp_tmp_reentrant_alloc(&__tmp_marker,uVar14);\n    puVar17 = auStack_13c;\n  }" else (compound_statement "{\n    piStack_120 = (int *)__gmp_tmp_reentrant_alloc(&__tmp_marker,uVar14);\n    puVar17 = auStack_13c;\n  }" { (expression_statement "piStack_120 = (int *)__gmp_tmp_reentrant_alloc(&__tmp_marker,uVar14);" (assignment_expression "piStack_120 = (int *)__gmp_tmp_reentrant_alloc(&__tmp_marker,uVar14)" identifier = (cast_expression "(int *)__gmp_tmp_reentrant_alloc(&__tmp_marker,uVar14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "__gmp_tmp_reentrant_alloc(&__tmp_marker,uVar14)" identifier (argument_list "(&__tmp_marker,uVar14)" ( (pointer_expression "&__tmp_marker" & identifier) , identifier ))))) ;) (expression_statement "puVar17 = auStack_13c;" (assignment_expression "puVar17 = auStack_13c" identifier = identifier) ;) }))) (expression_statement "iVar13 = (int)piStack_120 + local_128 + 8;" (assignment_expression "iVar13 = (int)piStack_120 + local_128 + 8" identifier = (binary_expression "(int)piStack_120 + local_128 + 8" (binary_expression "(int)piStack_120 + local_128" (cast_expression "(int)piStack_120" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) + number_literal)) ;) (expression_statement "iStack_d0 = iVar13 + iStack_cc * 4;" (assignment_expression "iStack_d0 = iVar13 + iStack_cc * 4" identifier = (binary_expression "iVar13 + iStack_cc * 4" identifier + (binary_expression "iStack_cc * 4" identifier * number_literal))) ;) (expression_statement "piStack_d4 = local_124;" (assignment_expression "piStack_d4 = local_124" identifier = identifier) ;) (if_statement "if (local_124 == (int *)0x0) {\n    piStack_d4 = piStack_120;\n  }" if (parenthesized_expression "(local_124 == (int *)0x0)" ( (binary_expression "local_124 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    piStack_d4 = piStack_120;\n  }" { (expression_statement "piStack_d4 = piStack_120;" (assignment_expression "piStack_d4 = piStack_120" identifier = identifier) ;) })) (if_statement "if (iVar18 != 0) {\n    iStack_104 = iVar18 + -1;\n    pmStack_fc = sizes;\n    iStack_cc = 1;\n    iStack_e0 = *(int *)(local_c4 + -0x26c);\n    iStack_dc = iVar13;\nLAB_0004e690:\n    uStack_e4 = uStack_f4 - uStack_e8 * uStack_ec;\n    iVar13 = (int)rootp - (uStack_e4 >> 5);\n    piVar12 = local_f8 + (uStack_e4 >> 5);\n    if ((uStack_e4 & 0x1f) == 0) {\n      *(int *)(puVar17 + -8) = iVar13;\n      *(int **)(puVar17 + -0xc) = piVar12;\n      iVar18 = iStack_e0;\n      *(int **)(puVar17 + -0x10) = piStack_d4;\n      pcVar3 = *(code **)(iVar18 + 0x28);\n      *(undefined4 *)(puVar17 + -0x14) = 0x4ed34;\n      (*pcVar3)();\n    }\n    else {\n      *(uint *)(puVar17 + -4) = uStack_e4 & 0x1f;\n      *(int *)(puVar17 + -8) = iVar13;\n      *(int **)(puVar17 + -0xc) = piVar12;\n      iVar18 = iStack_e0;\n      *(int **)(puVar17 + -0x10) = piStack_d4;\n      pcVar3 = *(code **)(iVar18 + 0x80);\n      *(undefined4 *)(puVar17 + -0x14) = 0x4e6dc;\n      (*pcVar3)();\n    }\n    piVar12 = piStack_d4;\n    iVar18 = iStack_dc;\n    pmStack_d8 = (mp_ptr)(iVar13 - (uint)(piStack_d4[iVar13 + -1] == 0));\n    do {\n      *(int *)(puVar17 + -0x10) = iVar18;\n      *(uint *)(puVar17 + -0x14) = uStack_ec;\n      *(int *)(puVar17 + -0x18) = iStack_cc;\n      *(uint **)(puVar17 + -0x1c) = local_c0;\n      *(int *)(puVar17 + -0x20) = iStack_d0;\n      *(undefined4 *)(puVar17 + -0x24) = 0x4e727;\n      mVar7 = __gmpn_pow_1(*(mp_ptr *)(puVar17 + -0x20),*(mp_srcptr *)(puVar17 + -0x1c),\n                           *(mp_size_t *)(puVar17 + -0x18),*(mp_limb_t *)(puVar17 + -0x14),\n                           *(mp_ptr *)(puVar17 + -0x10));\n      *(int *)(puVar17 + -0x10) = iStack_cc;\n      *(uint **)(puVar17 + -0x14) = local_c0;\n      *(mp_size_t *)(puVar17 + -0x18) = mVar7;\n      *(int *)(puVar17 + -0x1c) = iStack_d0;\n      *(int *)(puVar17 + -0x20) = iVar18;\n      iStack_dc = mVar7;\n      *(undefined4 *)(puVar17 + -0x24) = 0x4e74f;\n      __gmpn_mul(*(mp_ptr *)(puVar17 + -0x20),*(mp_srcptr *)(puVar17 + -0x1c),\n                 *(mp_size_t *)(puVar17 + -0x18),*(mp_srcptr *)(puVar17 + -0x14),\n                 *(mp_size_t *)(puVar17 + -0x10));\n      piVar11 = piStack_d4;\n      pmVar5 = pmStack_d8;\n      iVar13 = (iStack_cc + iStack_dc) -\n               (uint)(*(int *)(iVar18 + -4 + (iStack_cc + iStack_dc) * 4) == 0);\n      puVar10 = local_c0;\n      if (iVar13 <= (int)pmStack_d8) {\n        pmVar8 = pmStack_d8;\n        if (pmStack_d8 != (mp_ptr)iVar13) goto LAB_0004eb66;\n        do {\n          pmVar8 = (mp_ptr)((int)pmVar8 + -1);\n          if ((int)pmVar8 < 0) {\n            iStack_108 = iStack_dc;\n            iStack_114 = 0;\n            iStack_10c = iStack_104;\n            uStack_e8 = pmStack_fc[iStack_104] - pmStack_fc[iStack_104 + 1];\n            iStack_118 = pmStack_fc[iStack_104 + 1] - pmStack_fc[iStack_104];\n            pmStack_f0 = (mp_ptr)(uStack_e8 >> 5);\n            uStack_f4 = iStack_118 + uStack_e4;\n            uVar14 = uStack_e4 - 1;\n            uStack_e4 = uStack_e8 & 0x1f;\n            puVar15 = (uint *)((uVar14 >> 5) - (uStack_f4 >> 5));\n            uStack_100 = (int)pmStack_f0 * 4;\n            uVar14 = 0;\n            iStack_110 = (int)puVar15 + 1;\n            uVar6 = uStack_f4 >> 5;\n            puVar10 = (uint *)(piStack_d4 + (int)pmStack_f0);\n            iStack_dc = iVar18;\n            pmStack_d8 = pmStack_f0;\n            goto LAB_0004e83d;\n          }\n          uVar14 = *(uint *)(iVar18 + (int)pmVar8 * 4);\n        } while (uVar14 == piVar12[(int)pmVar8]);\n        if (uVar14 <= (uint)piVar12[(int)pmVar8]) goto LAB_0004eb66;\n      }\n      do {\n        uVar14 = *puVar10;\n        *puVar10 = *puVar10 - 1;\n        puVar10 = puVar10 + 1;\n      } while (uVar14 == 0);\n    } while( true );\n  }" if (parenthesized_expression "(iVar18 != 0)" ( (binary_expression "iVar18 != 0" identifier != number_literal) )) (compound_statement "{\n    iStack_104 = iVar18 + -1;\n    pmStack_fc = sizes;\n    iStack_cc = 1;\n    iStack_e0 = *(int *)(local_c4 + -0x26c);\n    iStack_dc = iVar13;\nLAB_0004e690:\n    uStack_e4 = uStack_f4 - uStack_e8 * uStack_ec;\n    iVar13 = (int)rootp - (uStack_e4 >> 5);\n    piVar12 = local_f8 + (uStack_e4 >> 5);\n    if ((uStack_e4 & 0x1f) == 0) {\n      *(int *)(puVar17 + -8) = iVar13;\n      *(int **)(puVar17 + -0xc) = piVar12;\n      iVar18 = iStack_e0;\n      *(int **)(puVar17 + -0x10) = piStack_d4;\n      pcVar3 = *(code **)(iVar18 + 0x28);\n      *(undefined4 *)(puVar17 + -0x14) = 0x4ed34;\n      (*pcVar3)();\n    }\n    else {\n      *(uint *)(puVar17 + -4) = uStack_e4 & 0x1f;\n      *(int *)(puVar17 + -8) = iVar13;\n      *(int **)(puVar17 + -0xc) = piVar12;\n      iVar18 = iStack_e0;\n      *(int **)(puVar17 + -0x10) = piStack_d4;\n      pcVar3 = *(code **)(iVar18 + 0x80);\n      *(undefined4 *)(puVar17 + -0x14) = 0x4e6dc;\n      (*pcVar3)();\n    }\n    piVar12 = piStack_d4;\n    iVar18 = iStack_dc;\n    pmStack_d8 = (mp_ptr)(iVar13 - (uint)(piStack_d4[iVar13 + -1] == 0));\n    do {\n      *(int *)(puVar17 + -0x10) = iVar18;\n      *(uint *)(puVar17 + -0x14) = uStack_ec;\n      *(int *)(puVar17 + -0x18) = iStack_cc;\n      *(uint **)(puVar17 + -0x1c) = local_c0;\n      *(int *)(puVar17 + -0x20) = iStack_d0;\n      *(undefined4 *)(puVar17 + -0x24) = 0x4e727;\n      mVar7 = __gmpn_pow_1(*(mp_ptr *)(puVar17 + -0x20),*(mp_srcptr *)(puVar17 + -0x1c),\n                           *(mp_size_t *)(puVar17 + -0x18),*(mp_limb_t *)(puVar17 + -0x14),\n                           *(mp_ptr *)(puVar17 + -0x10));\n      *(int *)(puVar17 + -0x10) = iStack_cc;\n      *(uint **)(puVar17 + -0x14) = local_c0;\n      *(mp_size_t *)(puVar17 + -0x18) = mVar7;\n      *(int *)(puVar17 + -0x1c) = iStack_d0;\n      *(int *)(puVar17 + -0x20) = iVar18;\n      iStack_dc = mVar7;\n      *(undefined4 *)(puVar17 + -0x24) = 0x4e74f;\n      __gmpn_mul(*(mp_ptr *)(puVar17 + -0x20),*(mp_srcptr *)(puVar17 + -0x1c),\n                 *(mp_size_t *)(puVar17 + -0x18),*(mp_srcptr *)(puVar17 + -0x14),\n                 *(mp_size_t *)(puVar17 + -0x10));\n      piVar11 = piStack_d4;\n      pmVar5 = pmStack_d8;\n      iVar13 = (iStack_cc + iStack_dc) -\n               (uint)(*(int *)(iVar18 + -4 + (iStack_cc + iStack_dc) * 4) == 0);\n      puVar10 = local_c0;\n      if (iVar13 <= (int)pmStack_d8) {\n        pmVar8 = pmStack_d8;\n        if (pmStack_d8 != (mp_ptr)iVar13) goto LAB_0004eb66;\n        do {\n          pmVar8 = (mp_ptr)((int)pmVar8 + -1);\n          if ((int)pmVar8 < 0) {\n            iStack_108 = iStack_dc;\n            iStack_114 = 0;\n            iStack_10c = iStack_104;\n            uStack_e8 = pmStack_fc[iStack_104] - pmStack_fc[iStack_104 + 1];\n            iStack_118 = pmStack_fc[iStack_104 + 1] - pmStack_fc[iStack_104];\n            pmStack_f0 = (mp_ptr)(uStack_e8 >> 5);\n            uStack_f4 = iStack_118 + uStack_e4;\n            uVar14 = uStack_e4 - 1;\n            uStack_e4 = uStack_e8 & 0x1f;\n            puVar15 = (uint *)((uVar14 >> 5) - (uStack_f4 >> 5));\n            uStack_100 = (int)pmStack_f0 * 4;\n            uVar14 = 0;\n            iStack_110 = (int)puVar15 + 1;\n            uVar6 = uStack_f4 >> 5;\n            puVar10 = (uint *)(piStack_d4 + (int)pmStack_f0);\n            iStack_dc = iVar18;\n            pmStack_d8 = pmStack_f0;\n            goto LAB_0004e83d;\n          }\n          uVar14 = *(uint *)(iVar18 + (int)pmVar8 * 4);\n        } while (uVar14 == piVar12[(int)pmVar8]);\n        if (uVar14 <= (uint)piVar12[(int)pmVar8]) goto LAB_0004eb66;\n      }\n      do {\n        uVar14 = *puVar10;\n        *puVar10 = *puVar10 - 1;\n        puVar10 = puVar10 + 1;\n      } while (uVar14 == 0);\n    } while( true );\n  }" { (expression_statement "iStack_104 = iVar18 + -1;" (assignment_expression "iStack_104 = iVar18 + -1" identifier = (binary_expression "iVar18 + -1" identifier + number_literal)) ;) (expression_statement "pmStack_fc = sizes;" (assignment_expression "pmStack_fc = sizes" identifier = identifier) ;) (expression_statement "iStack_cc = 1;" (assignment_expression "iStack_cc = 1" identifier = number_literal) ;) (expression_statement "iStack_e0 = *(int *)(local_c4 + -0x26c);" (assignment_expression "iStack_e0 = *(int *)(local_c4 + -0x26c)" identifier = (pointer_expression "*(int *)(local_c4 + -0x26c)" * (cast_expression "(int *)(local_c4 + -0x26c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_c4 + -0x26c)" ( (binary_expression "local_c4 + -0x26c" identifier + number_literal) ))))) ;) (expression_statement "iStack_dc = iVar13;" (assignment_expression "iStack_dc = iVar13" identifier = identifier) ;) (labeled_statement "LAB_0004e690:\n    uStack_e4 = uStack_f4 - uStack_e8 * uStack_ec;" statement_identifier : (expression_statement "uStack_e4 = uStack_f4 - uStack_e8 * uStack_ec;" (assignment_expression "uStack_e4 = uStack_f4 - uStack_e8 * uStack_ec" identifier = (binary_expression "uStack_f4 - uStack_e8 * uStack_ec" identifier - (binary_expression "uStack_e8 * uStack_ec" identifier * identifier))) ;)) (expression_statement "iVar13 = (int)rootp - (uStack_e4 >> 5);" (assignment_expression "iVar13 = (int)rootp - (uStack_e4 >> 5)" identifier = (binary_expression "(int)rootp - (uStack_e4 >> 5)" (cast_expression "(int)rootp" ( (type_descriptor "int" primitive_type) ) identifier) - (parenthesized_expression "(uStack_e4 >> 5)" ( (binary_expression "uStack_e4 >> 5" identifier >> number_literal) )))) ;) (expression_statement "piVar12 = local_f8 + (uStack_e4 >> 5);" (assignment_expression "piVar12 = local_f8 + (uStack_e4 >> 5)" identifier = (binary_expression "local_f8 + (uStack_e4 >> 5)" identifier + (parenthesized_expression "(uStack_e4 >> 5)" ( (binary_expression "uStack_e4 >> 5" identifier >> number_literal) )))) ;) (if_statement "if ((uStack_e4 & 0x1f) == 0) {\n      *(int *)(puVar17 + -8) = iVar13;\n      *(int **)(puVar17 + -0xc) = piVar12;\n      iVar18 = iStack_e0;\n      *(int **)(puVar17 + -0x10) = piStack_d4;\n      pcVar3 = *(code **)(iVar18 + 0x28);\n      *(undefined4 *)(puVar17 + -0x14) = 0x4ed34;\n      (*pcVar3)();\n    }\n    else {\n      *(uint *)(puVar17 + -4) = uStack_e4 & 0x1f;\n      *(int *)(puVar17 + -8) = iVar13;\n      *(int **)(puVar17 + -0xc) = piVar12;\n      iVar18 = iStack_e0;\n      *(int **)(puVar17 + -0x10) = piStack_d4;\n      pcVar3 = *(code **)(iVar18 + 0x80);\n      *(undefined4 *)(puVar17 + -0x14) = 0x4e6dc;\n      (*pcVar3)();\n    }" if (parenthesized_expression "((uStack_e4 & 0x1f) == 0)" ( (binary_expression "(uStack_e4 & 0x1f) == 0" (parenthesized_expression "(uStack_e4 & 0x1f)" ( (binary_expression "uStack_e4 & 0x1f" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n      *(int *)(puVar17 + -8) = iVar13;\n      *(int **)(puVar17 + -0xc) = piVar12;\n      iVar18 = iStack_e0;\n      *(int **)(puVar17 + -0x10) = piStack_d4;\n      pcVar3 = *(code **)(iVar18 + 0x28);\n      *(undefined4 *)(puVar17 + -0x14) = 0x4ed34;\n      (*pcVar3)();\n    }" { (expression_statement "*(int *)(puVar17 + -8) = iVar13;" (assignment_expression "*(int *)(puVar17 + -8) = iVar13" (pointer_expression "*(int *)(puVar17 + -8)" * (cast_expression "(int *)(puVar17 + -8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar17 + -8)" ( (binary_expression "puVar17 + -8" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int **)(puVar17 + -0xc) = piVar12;" (assignment_expression "*(int **)(puVar17 + -0xc) = piVar12" (pointer_expression "*(int **)(puVar17 + -0xc)" * (cast_expression "(int **)(puVar17 + -0xc)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar17 + -0xc)" ( (binary_expression "puVar17 + -0xc" identifier + number_literal) )))) = identifier) ;) (expression_statement "iVar18 = iStack_e0;" (assignment_expression "iVar18 = iStack_e0" identifier = identifier) ;) (expression_statement "*(int **)(puVar17 + -0x10) = piStack_d4;" (assignment_expression "*(int **)(puVar17 + -0x10) = piStack_d4" (pointer_expression "*(int **)(puVar17 + -0x10)" * (cast_expression "(int **)(puVar17 + -0x10)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar17 + -0x10)" ( (binary_expression "puVar17 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "pcVar3 = *(code **)(iVar18 + 0x28);" (assignment_expression "pcVar3 = *(code **)(iVar18 + 0x28)" identifier = (pointer_expression "*(code **)(iVar18 + 0x28)" * (cast_expression "(code **)(iVar18 + 0x28)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar18 + 0x28)" ( (binary_expression "iVar18 + 0x28" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar17 + -0x14) = 0x4ed34;" (assignment_expression "*(undefined4 *)(puVar17 + -0x14) = 0x4ed34" (pointer_expression "*(undefined4 *)(puVar17 + -0x14)" * (cast_expression "(undefined4 *)(puVar17 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar17 + -0x14)" ( (binary_expression "puVar17 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "(*pcVar3)();" (call_expression "(*pcVar3)()" (parenthesized_expression "(*pcVar3)" ( (pointer_expression "*pcVar3" * identifier) )) (argument_list "()" ( ))) ;) }) (else_clause "else {\n      *(uint *)(puVar17 + -4) = uStack_e4 & 0x1f;\n      *(int *)(puVar17 + -8) = iVar13;\n      *(int **)(puVar17 + -0xc) = piVar12;\n      iVar18 = iStack_e0;\n      *(int **)(puVar17 + -0x10) = piStack_d4;\n      pcVar3 = *(code **)(iVar18 + 0x80);\n      *(undefined4 *)(puVar17 + -0x14) = 0x4e6dc;\n      (*pcVar3)();\n    }" else (compound_statement "{\n      *(uint *)(puVar17 + -4) = uStack_e4 & 0x1f;\n      *(int *)(puVar17 + -8) = iVar13;\n      *(int **)(puVar17 + -0xc) = piVar12;\n      iVar18 = iStack_e0;\n      *(int **)(puVar17 + -0x10) = piStack_d4;\n      pcVar3 = *(code **)(iVar18 + 0x80);\n      *(undefined4 *)(puVar17 + -0x14) = 0x4e6dc;\n      (*pcVar3)();\n    }" { (expression_statement "*(uint *)(puVar17 + -4) = uStack_e4 & 0x1f;" (assignment_expression "*(uint *)(puVar17 + -4) = uStack_e4 & 0x1f" (pointer_expression "*(uint *)(puVar17 + -4)" * (cast_expression "(uint *)(puVar17 + -4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar17 + -4)" ( (binary_expression "puVar17 + -4" identifier + number_literal) )))) = (binary_expression "uStack_e4 & 0x1f" identifier & number_literal)) ;) (expression_statement "*(int *)(puVar17 + -8) = iVar13;" (assignment_expression "*(int *)(puVar17 + -8) = iVar13" (pointer_expression "*(int *)(puVar17 + -8)" * (cast_expression "(int *)(puVar17 + -8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar17 + -8)" ( (binary_expression "puVar17 + -8" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int **)(puVar17 + -0xc) = piVar12;" (assignment_expression "*(int **)(puVar17 + -0xc) = piVar12" (pointer_expression "*(int **)(puVar17 + -0xc)" * (cast_expression "(int **)(puVar17 + -0xc)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar17 + -0xc)" ( (binary_expression "puVar17 + -0xc" identifier + number_literal) )))) = identifier) ;) (expression_statement "iVar18 = iStack_e0;" (assignment_expression "iVar18 = iStack_e0" identifier = identifier) ;) (expression_statement "*(int **)(puVar17 + -0x10) = piStack_d4;" (assignment_expression "*(int **)(puVar17 + -0x10) = piStack_d4" (pointer_expression "*(int **)(puVar17 + -0x10)" * (cast_expression "(int **)(puVar17 + -0x10)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar17 + -0x10)" ( (binary_expression "puVar17 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "pcVar3 = *(code **)(iVar18 + 0x80);" (assignment_expression "pcVar3 = *(code **)(iVar18 + 0x80)" identifier = (pointer_expression "*(code **)(iVar18 + 0x80)" * (cast_expression "(code **)(iVar18 + 0x80)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar18 + 0x80)" ( (binary_expression "iVar18 + 0x80" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar17 + -0x14) = 0x4e6dc;" (assignment_expression "*(undefined4 *)(puVar17 + -0x14) = 0x4e6dc" (pointer_expression "*(undefined4 *)(puVar17 + -0x14)" * (cast_expression "(undefined4 *)(puVar17 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar17 + -0x14)" ( (binary_expression "puVar17 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "(*pcVar3)();" (call_expression "(*pcVar3)()" (parenthesized_expression "(*pcVar3)" ( (pointer_expression "*pcVar3" * identifier) )) (argument_list "()" ( ))) ;) }))) (expression_statement "piVar12 = piStack_d4;" (assignment_expression "piVar12 = piStack_d4" identifier = identifier) ;) (expression_statement "iVar18 = iStack_dc;" (assignment_expression "iVar18 = iStack_dc" identifier = identifier) ;) (expression_statement "pmStack_d8 = (mp_ptr)(iVar13 - (uint)(piStack_d4[iVar13 + -1] == 0));" (assignment_expression "pmStack_d8 = (mp_ptr)(iVar13 - (uint)(piStack_d4[iVar13 + -1] == 0))" identifier = (call_expression "(mp_ptr)(iVar13 - (uint)(piStack_d4[iVar13 + -1] == 0))" (parenthesized_expression "(mp_ptr)" ( identifier )) (argument_list "(iVar13 - (uint)(piStack_d4[iVar13 + -1] == 0))" ( (binary_expression "iVar13 - (uint)(piStack_d4[iVar13 + -1] == 0)" identifier - (call_expression "(uint)(piStack_d4[iVar13 + -1] == 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(piStack_d4[iVar13 + -1] == 0)" ( (binary_expression "piStack_d4[iVar13 + -1] == 0" (subscript_expression "piStack_d4[iVar13 + -1]" identifier [ (binary_expression "iVar13 + -1" identifier + number_literal) ]) == number_literal) )))) )))) ;) (do_statement "do {\n      *(int *)(puVar17 + -0x10) = iVar18;\n      *(uint *)(puVar17 + -0x14) = uStack_ec;\n      *(int *)(puVar17 + -0x18) = iStack_cc;\n      *(uint **)(puVar17 + -0x1c) = local_c0;\n      *(int *)(puVar17 + -0x20) = iStack_d0;\n      *(undefined4 *)(puVar17 + -0x24) = 0x4e727;\n      mVar7 = __gmpn_pow_1(*(mp_ptr *)(puVar17 + -0x20),*(mp_srcptr *)(puVar17 + -0x1c),\n                           *(mp_size_t *)(puVar17 + -0x18),*(mp_limb_t *)(puVar17 + -0x14),\n                           *(mp_ptr *)(puVar17 + -0x10));\n      *(int *)(puVar17 + -0x10) = iStack_cc;\n      *(uint **)(puVar17 + -0x14) = local_c0;\n      *(mp_size_t *)(puVar17 + -0x18) = mVar7;\n      *(int *)(puVar17 + -0x1c) = iStack_d0;\n      *(int *)(puVar17 + -0x20) = iVar18;\n      iStack_dc = mVar7;\n      *(undefined4 *)(puVar17 + -0x24) = 0x4e74f;\n      __gmpn_mul(*(mp_ptr *)(puVar17 + -0x20),*(mp_srcptr *)(puVar17 + -0x1c),\n                 *(mp_size_t *)(puVar17 + -0x18),*(mp_srcptr *)(puVar17 + -0x14),\n                 *(mp_size_t *)(puVar17 + -0x10));\n      piVar11 = piStack_d4;\n      pmVar5 = pmStack_d8;\n      iVar13 = (iStack_cc + iStack_dc) -\n               (uint)(*(int *)(iVar18 + -4 + (iStack_cc + iStack_dc) * 4) == 0);\n      puVar10 = local_c0;\n      if (iVar13 <= (int)pmStack_d8) {\n        pmVar8 = pmStack_d8;\n        if (pmStack_d8 != (mp_ptr)iVar13) goto LAB_0004eb66;\n        do {\n          pmVar8 = (mp_ptr)((int)pmVar8 + -1);\n          if ((int)pmVar8 < 0) {\n            iStack_108 = iStack_dc;\n            iStack_114 = 0;\n            iStack_10c = iStack_104;\n            uStack_e8 = pmStack_fc[iStack_104] - pmStack_fc[iStack_104 + 1];\n            iStack_118 = pmStack_fc[iStack_104 + 1] - pmStack_fc[iStack_104];\n            pmStack_f0 = (mp_ptr)(uStack_e8 >> 5);\n            uStack_f4 = iStack_118 + uStack_e4;\n            uVar14 = uStack_e4 - 1;\n            uStack_e4 = uStack_e8 & 0x1f;\n            puVar15 = (uint *)((uVar14 >> 5) - (uStack_f4 >> 5));\n            uStack_100 = (int)pmStack_f0 * 4;\n            uVar14 = 0;\n            iStack_110 = (int)puVar15 + 1;\n            uVar6 = uStack_f4 >> 5;\n            puVar10 = (uint *)(piStack_d4 + (int)pmStack_f0);\n            iStack_dc = iVar18;\n            pmStack_d8 = pmStack_f0;\n            goto LAB_0004e83d;\n          }\n          uVar14 = *(uint *)(iVar18 + (int)pmVar8 * 4);\n        } while (uVar14 == piVar12[(int)pmVar8]);\n        if (uVar14 <= (uint)piVar12[(int)pmVar8]) goto LAB_0004eb66;\n      }\n      do {\n        uVar14 = *puVar10;\n        *puVar10 = *puVar10 - 1;\n        puVar10 = puVar10 + 1;\n      } while (uVar14 == 0);\n    } while( true );" do (compound_statement "{\n      *(int *)(puVar17 + -0x10) = iVar18;\n      *(uint *)(puVar17 + -0x14) = uStack_ec;\n      *(int *)(puVar17 + -0x18) = iStack_cc;\n      *(uint **)(puVar17 + -0x1c) = local_c0;\n      *(int *)(puVar17 + -0x20) = iStack_d0;\n      *(undefined4 *)(puVar17 + -0x24) = 0x4e727;\n      mVar7 = __gmpn_pow_1(*(mp_ptr *)(puVar17 + -0x20),*(mp_srcptr *)(puVar17 + -0x1c),\n                           *(mp_size_t *)(puVar17 + -0x18),*(mp_limb_t *)(puVar17 + -0x14),\n                           *(mp_ptr *)(puVar17 + -0x10));\n      *(int *)(puVar17 + -0x10) = iStack_cc;\n      *(uint **)(puVar17 + -0x14) = local_c0;\n      *(mp_size_t *)(puVar17 + -0x18) = mVar7;\n      *(int *)(puVar17 + -0x1c) = iStack_d0;\n      *(int *)(puVar17 + -0x20) = iVar18;\n      iStack_dc = mVar7;\n      *(undefined4 *)(puVar17 + -0x24) = 0x4e74f;\n      __gmpn_mul(*(mp_ptr *)(puVar17 + -0x20),*(mp_srcptr *)(puVar17 + -0x1c),\n                 *(mp_size_t *)(puVar17 + -0x18),*(mp_srcptr *)(puVar17 + -0x14),\n                 *(mp_size_t *)(puVar17 + -0x10));\n      piVar11 = piStack_d4;\n      pmVar5 = pmStack_d8;\n      iVar13 = (iStack_cc + iStack_dc) -\n               (uint)(*(int *)(iVar18 + -4 + (iStack_cc + iStack_dc) * 4) == 0);\n      puVar10 = local_c0;\n      if (iVar13 <= (int)pmStack_d8) {\n        pmVar8 = pmStack_d8;\n        if (pmStack_d8 != (mp_ptr)iVar13) goto LAB_0004eb66;\n        do {\n          pmVar8 = (mp_ptr)((int)pmVar8 + -1);\n          if ((int)pmVar8 < 0) {\n            iStack_108 = iStack_dc;\n            iStack_114 = 0;\n            iStack_10c = iStack_104;\n            uStack_e8 = pmStack_fc[iStack_104] - pmStack_fc[iStack_104 + 1];\n            iStack_118 = pmStack_fc[iStack_104 + 1] - pmStack_fc[iStack_104];\n            pmStack_f0 = (mp_ptr)(uStack_e8 >> 5);\n            uStack_f4 = iStack_118 + uStack_e4;\n            uVar14 = uStack_e4 - 1;\n            uStack_e4 = uStack_e8 & 0x1f;\n            puVar15 = (uint *)((uVar14 >> 5) - (uStack_f4 >> 5));\n            uStack_100 = (int)pmStack_f0 * 4;\n            uVar14 = 0;\n            iStack_110 = (int)puVar15 + 1;\n            uVar6 = uStack_f4 >> 5;\n            puVar10 = (uint *)(piStack_d4 + (int)pmStack_f0);\n            iStack_dc = iVar18;\n            pmStack_d8 = pmStack_f0;\n            goto LAB_0004e83d;\n          }\n          uVar14 = *(uint *)(iVar18 + (int)pmVar8 * 4);\n        } while (uVar14 == piVar12[(int)pmVar8]);\n        if (uVar14 <= (uint)piVar12[(int)pmVar8]) goto LAB_0004eb66;\n      }\n      do {\n        uVar14 = *puVar10;\n        *puVar10 = *puVar10 - 1;\n        puVar10 = puVar10 + 1;\n      } while (uVar14 == 0);\n    }" { (expression_statement "*(int *)(puVar17 + -0x10) = iVar18;" (assignment_expression "*(int *)(puVar17 + -0x10) = iVar18" (pointer_expression "*(int *)(puVar17 + -0x10)" * (cast_expression "(int *)(puVar17 + -0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar17 + -0x10)" ( (binary_expression "puVar17 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(uint *)(puVar17 + -0x14) = uStack_ec;" (assignment_expression "*(uint *)(puVar17 + -0x14) = uStack_ec" (pointer_expression "*(uint *)(puVar17 + -0x14)" * (cast_expression "(uint *)(puVar17 + -0x14)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar17 + -0x14)" ( (binary_expression "puVar17 + -0x14" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(puVar17 + -0x18) = iStack_cc;" (assignment_expression "*(int *)(puVar17 + -0x18) = iStack_cc" (pointer_expression "*(int *)(puVar17 + -0x18)" * (cast_expression "(int *)(puVar17 + -0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar17 + -0x18)" ( (binary_expression "puVar17 + -0x18" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(uint **)(puVar17 + -0x1c) = local_c0;" (assignment_expression "*(uint **)(puVar17 + -0x1c) = local_c0" (pointer_expression "*(uint **)(puVar17 + -0x1c)" * (cast_expression "(uint **)(puVar17 + -0x1c)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar17 + -0x1c)" ( (binary_expression "puVar17 + -0x1c" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(puVar17 + -0x20) = iStack_d0;" (assignment_expression "*(int *)(puVar17 + -0x20) = iStack_d0" (pointer_expression "*(int *)(puVar17 + -0x20)" * (cast_expression "(int *)(puVar17 + -0x20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar17 + -0x20)" ( (binary_expression "puVar17 + -0x20" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar17 + -0x24) = 0x4e727;" (assignment_expression "*(undefined4 *)(puVar17 + -0x24) = 0x4e727" (pointer_expression "*(undefined4 *)(puVar17 + -0x24)" * (cast_expression "(undefined4 *)(puVar17 + -0x24)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar17 + -0x24)" ( (binary_expression "puVar17 + -0x24" identifier + number_literal) )))) = number_literal) ;) (expression_statement "mVar7 = __gmpn_pow_1(*(mp_ptr *)(puVar17 + -0x20),*(mp_srcptr *)(puVar17 + -0x1c),\n                           *(mp_size_t *)(puVar17 + -0x18),*(mp_limb_t *)(puVar17 + -0x14),\n                           *(mp_ptr *)(puVar17 + -0x10));" (assignment_expression "mVar7 = __gmpn_pow_1(*(mp_ptr *)(puVar17 + -0x20),*(mp_srcptr *)(puVar17 + -0x1c),\n                           *(mp_size_t *)(puVar17 + -0x18),*(mp_limb_t *)(puVar17 + -0x14),\n                           *(mp_ptr *)(puVar17 + -0x10))" identifier = (call_expression "__gmpn_pow_1(*(mp_ptr *)(puVar17 + -0x20),*(mp_srcptr *)(puVar17 + -0x1c),\n                           *(mp_size_t *)(puVar17 + -0x18),*(mp_limb_t *)(puVar17 + -0x14),\n                           *(mp_ptr *)(puVar17 + -0x10))" identifier (argument_list "(*(mp_ptr *)(puVar17 + -0x20),*(mp_srcptr *)(puVar17 + -0x1c),\n                           *(mp_size_t *)(puVar17 + -0x18),*(mp_limb_t *)(puVar17 + -0x14),\n                           *(mp_ptr *)(puVar17 + -0x10))" ( (pointer_expression "*(mp_ptr *)(puVar17 + -0x20)" * (cast_expression "(mp_ptr *)(puVar17 + -0x20)" ( (type_descriptor "mp_ptr *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar17 + -0x20)" ( (binary_expression "puVar17 + -0x20" identifier + number_literal) )))) , (pointer_expression "*(mp_srcptr *)(puVar17 + -0x1c)" * (cast_expression "(mp_srcptr *)(puVar17 + -0x1c)" ( (type_descriptor "mp_srcptr *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar17 + -0x1c)" ( (binary_expression "puVar17 + -0x1c" identifier + number_literal) )))) , (pointer_expression "*(mp_size_t *)(puVar17 + -0x18)" * (cast_expression "(mp_size_t *)(puVar17 + -0x18)" ( (type_descriptor "mp_size_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar17 + -0x18)" ( (binary_expression "puVar17 + -0x18" identifier + number_literal) )))) , (pointer_expression "*(mp_limb_t *)(puVar17 + -0x14)" * (cast_expression "(mp_limb_t *)(puVar17 + -0x14)" ( (type_descriptor "mp_limb_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar17 + -0x14)" ( (binary_expression "puVar17 + -0x14" identifier + number_literal) )))) , (pointer_expression "*(mp_ptr *)(puVar17 + -0x10)" * (cast_expression "(mp_ptr *)(puVar17 + -0x10)" ( (type_descriptor "mp_ptr *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar17 + -0x10)" ( (binary_expression "puVar17 + -0x10" identifier + number_literal) )))) )))) ;) (expression_statement "*(int *)(puVar17 + -0x10) = iStack_cc;" (assignment_expression "*(int *)(puVar17 + -0x10) = iStack_cc" (pointer_expression "*(int *)(puVar17 + -0x10)" * (cast_expression "(int *)(puVar17 + -0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar17 + -0x10)" ( (binary_expression "puVar17 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(uint **)(puVar17 + -0x14) = local_c0;" (assignment_expression "*(uint **)(puVar17 + -0x14) = local_c0" (pointer_expression "*(uint **)(puVar17 + -0x14)" * (cast_expression "(uint **)(puVar17 + -0x14)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar17 + -0x14)" ( (binary_expression "puVar17 + -0x14" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(mp_size_t *)(puVar17 + -0x18) = mVar7;" (assignment_expression "*(mp_size_t *)(puVar17 + -0x18) = mVar7" (pointer_expression "*(mp_size_t *)(puVar17 + -0x18)" * (cast_expression "(mp_size_t *)(puVar17 + -0x18)" ( (type_descriptor "mp_size_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar17 + -0x18)" ( (binary_expression "puVar17 + -0x18" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(puVar17 + -0x1c) = iStack_d0;" (assignment_expression "*(int *)(puVar17 + -0x1c) = iStack_d0" (pointer_expression "*(int *)(puVar17 + -0x1c)" * (cast_expression "(int *)(puVar17 + -0x1c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar17 + -0x1c)" ( (binary_expression "puVar17 + -0x1c" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(puVar17 + -0x20) = iVar18;" (assignment_expression "*(int *)(puVar17 + -0x20) = iVar18" (pointer_expression "*(int *)(puVar17 + -0x20)" * (cast_expression "(int *)(puVar17 + -0x20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar17 + -0x20)" ( (binary_expression "puVar17 + -0x20" identifier + number_literal) )))) = identifier) ;) (expression_statement "iStack_dc = mVar7;" (assignment_expression "iStack_dc = mVar7" identifier = identifier) ;) (expression_statement "*(undefined4 *)(puVar17 + -0x24) = 0x4e74f;" (assignment_expression "*(undefined4 *)(puVar17 + -0x24) = 0x4e74f" (pointer_expression "*(undefined4 *)(puVar17 + -0x24)" * (cast_expression "(undefined4 *)(puVar17 + -0x24)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar17 + -0x24)" ( (binary_expression "puVar17 + -0x24" identifier + number_literal) )))) = number_literal) ;) (expression_statement "__gmpn_mul(*(mp_ptr *)(puVar17 + -0x20),*(mp_srcptr *)(puVar17 + -0x1c),\n                 *(mp_size_t *)(puVar17 + -0x18),*(mp_srcptr *)(puVar17 + -0x14),\n                 *(mp_size_t *)(puVar17 + -0x10));" (call_expression "__gmpn_mul(*(mp_ptr *)(puVar17 + -0x20),*(mp_srcptr *)(puVar17 + -0x1c),\n                 *(mp_size_t *)(puVar17 + -0x18),*(mp_srcptr *)(puVar17 + -0x14),\n                 *(mp_size_t *)(puVar17 + -0x10))" identifier (argument_list "(*(mp_ptr *)(puVar17 + -0x20),*(mp_srcptr *)(puVar17 + -0x1c),\n                 *(mp_size_t *)(puVar17 + -0x18),*(mp_srcptr *)(puVar17 + -0x14),\n                 *(mp_size_t *)(puVar17 + -0x10))" ( (pointer_expression "*(mp_ptr *)(puVar17 + -0x20)" * (cast_expression "(mp_ptr *)(puVar17 + -0x20)" ( (type_descriptor "mp_ptr *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar17 + -0x20)" ( (binary_expression "puVar17 + -0x20" identifier + number_literal) )))) , (pointer_expression "*(mp_srcptr *)(puVar17 + -0x1c)" * (cast_expression "(mp_srcptr *)(puVar17 + -0x1c)" ( (type_descriptor "mp_srcptr *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar17 + -0x1c)" ( (binary_expression "puVar17 + -0x1c" identifier + number_literal) )))) , (pointer_expression "*(mp_size_t *)(puVar17 + -0x18)" * (cast_expression "(mp_size_t *)(puVar17 + -0x18)" ( (type_descriptor "mp_size_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar17 + -0x18)" ( (binary_expression "puVar17 + -0x18" identifier + number_literal) )))) , (pointer_expression "*(mp_srcptr *)(puVar17 + -0x14)" * (cast_expression "(mp_srcptr *)(puVar17 + -0x14)" ( (type_descriptor "mp_srcptr *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar17 + -0x14)" ( (binary_expression "puVar17 + -0x14" identifier + number_literal) )))) , (pointer_expression "*(mp_size_t *)(puVar17 + -0x10)" * (cast_expression "(mp_size_t *)(puVar17 + -0x10)" ( (type_descriptor "mp_size_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar17 + -0x10)" ( (binary_expression "puVar17 + -0x10" identifier + number_literal) )))) ))) ;) (expression_statement "piVar11 = piStack_d4;" (assignment_expression "piVar11 = piStack_d4" identifier = identifier) ;) (expression_statement "pmVar5 = pmStack_d8;" (assignment_expression "pmVar5 = pmStack_d8" identifier = identifier) ;) (expression_statement "iVar13 = (iStack_cc + iStack_dc) -\n               (uint)(*(int *)(iVar18 + -4 + (iStack_cc + iStack_dc) * 4) == 0);" (assignment_expression "iVar13 = (iStack_cc + iStack_dc) -\n               (uint)(*(int *)(iVar18 + -4 + (iStack_cc + iStack_dc) * 4) == 0)" identifier = (binary_expression "(iStack_cc + iStack_dc) -\n               (uint)(*(int *)(iVar18 + -4 + (iStack_cc + iStack_dc) * 4) == 0)" (parenthesized_expression "(iStack_cc + iStack_dc)" ( (binary_expression "iStack_cc + iStack_dc" identifier + identifier) )) - (call_expression "(uint)(*(int *)(iVar18 + -4 + (iStack_cc + iStack_dc) * 4) == 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(*(int *)(iVar18 + -4 + (iStack_cc + iStack_dc) * 4) == 0)" ( (binary_expression "*(int *)(iVar18 + -4 + (iStack_cc + iStack_dc) * 4) == 0" (pointer_expression "*(int *)(iVar18 + -4 + (iStack_cc + iStack_dc) * 4)" * (cast_expression "(int *)(iVar18 + -4 + (iStack_cc + iStack_dc) * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar18 + -4 + (iStack_cc + iStack_dc) * 4)" ( (binary_expression "iVar18 + -4 + (iStack_cc + iStack_dc) * 4" (binary_expression "iVar18 + -4" identifier + number_literal) + (binary_expression "(iStack_cc + iStack_dc) * 4" (parenthesized_expression "(iStack_cc + iStack_dc)" ( (binary_expression "iStack_cc + iStack_dc" identifier + identifier) )) * number_literal)) )))) == number_literal) ))))) ;) (expression_statement "puVar10 = local_c0;" (assignment_expression "puVar10 = local_c0" identifier = identifier) ;) (if_statement "if (iVar13 <= (int)pmStack_d8) {\n        pmVar8 = pmStack_d8;\n        if (pmStack_d8 != (mp_ptr)iVar13) goto LAB_0004eb66;\n        do {\n          pmVar8 = (mp_ptr)((int)pmVar8 + -1);\n          if ((int)pmVar8 < 0) {\n            iStack_108 = iStack_dc;\n            iStack_114 = 0;\n            iStack_10c = iStack_104;\n            uStack_e8 = pmStack_fc[iStack_104] - pmStack_fc[iStack_104 + 1];\n            iStack_118 = pmStack_fc[iStack_104 + 1] - pmStack_fc[iStack_104];\n            pmStack_f0 = (mp_ptr)(uStack_e8 >> 5);\n            uStack_f4 = iStack_118 + uStack_e4;\n            uVar14 = uStack_e4 - 1;\n            uStack_e4 = uStack_e8 & 0x1f;\n            puVar15 = (uint *)((uVar14 >> 5) - (uStack_f4 >> 5));\n            uStack_100 = (int)pmStack_f0 * 4;\n            uVar14 = 0;\n            iStack_110 = (int)puVar15 + 1;\n            uVar6 = uStack_f4 >> 5;\n            puVar10 = (uint *)(piStack_d4 + (int)pmStack_f0);\n            iStack_dc = iVar18;\n            pmStack_d8 = pmStack_f0;\n            goto LAB_0004e83d;\n          }\n          uVar14 = *(uint *)(iVar18 + (int)pmVar8 * 4);\n        } while (uVar14 == piVar12[(int)pmVar8]);\n        if (uVar14 <= (uint)piVar12[(int)pmVar8]) goto LAB_0004eb66;\n      }" if (parenthesized_expression "(iVar13 <= (int)pmStack_d8)" ( (binary_expression "iVar13 <= (int)pmStack_d8" identifier <= (cast_expression "(int)pmStack_d8" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n        pmVar8 = pmStack_d8;\n        if (pmStack_d8 != (mp_ptr)iVar13) goto LAB_0004eb66;\n        do {\n          pmVar8 = (mp_ptr)((int)pmVar8 + -1);\n          if ((int)pmVar8 < 0) {\n            iStack_108 = iStack_dc;\n            iStack_114 = 0;\n            iStack_10c = iStack_104;\n            uStack_e8 = pmStack_fc[iStack_104] - pmStack_fc[iStack_104 + 1];\n            iStack_118 = pmStack_fc[iStack_104 + 1] - pmStack_fc[iStack_104];\n            pmStack_f0 = (mp_ptr)(uStack_e8 >> 5);\n            uStack_f4 = iStack_118 + uStack_e4;\n            uVar14 = uStack_e4 - 1;\n            uStack_e4 = uStack_e8 & 0x1f;\n            puVar15 = (uint *)((uVar14 >> 5) - (uStack_f4 >> 5));\n            uStack_100 = (int)pmStack_f0 * 4;\n            uVar14 = 0;\n            iStack_110 = (int)puVar15 + 1;\n            uVar6 = uStack_f4 >> 5;\n            puVar10 = (uint *)(piStack_d4 + (int)pmStack_f0);\n            iStack_dc = iVar18;\n            pmStack_d8 = pmStack_f0;\n            goto LAB_0004e83d;\n          }\n          uVar14 = *(uint *)(iVar18 + (int)pmVar8 * 4);\n        } while (uVar14 == piVar12[(int)pmVar8]);\n        if (uVar14 <= (uint)piVar12[(int)pmVar8]) goto LAB_0004eb66;\n      }" { (expression_statement "pmVar8 = pmStack_d8;" (assignment_expression "pmVar8 = pmStack_d8" identifier = identifier) ;) (if_statement "if (pmStack_d8 != (mp_ptr)iVar13) goto LAB_0004eb66;" if (parenthesized_expression "(pmStack_d8 != (mp_ptr)iVar13)" ( (binary_expression "pmStack_d8 != (mp_ptr)iVar13" identifier != (cast_expression "(mp_ptr)iVar13" ( (type_descriptor "mp_ptr" type_identifier) ) identifier)) )) (goto_statement "goto LAB_0004eb66;" goto statement_identifier ;)) (do_statement "do {\n          pmVar8 = (mp_ptr)((int)pmVar8 + -1);\n          if ((int)pmVar8 < 0) {\n            iStack_108 = iStack_dc;\n            iStack_114 = 0;\n            iStack_10c = iStack_104;\n            uStack_e8 = pmStack_fc[iStack_104] - pmStack_fc[iStack_104 + 1];\n            iStack_118 = pmStack_fc[iStack_104 + 1] - pmStack_fc[iStack_104];\n            pmStack_f0 = (mp_ptr)(uStack_e8 >> 5);\n            uStack_f4 = iStack_118 + uStack_e4;\n            uVar14 = uStack_e4 - 1;\n            uStack_e4 = uStack_e8 & 0x1f;\n            puVar15 = (uint *)((uVar14 >> 5) - (uStack_f4 >> 5));\n            uStack_100 = (int)pmStack_f0 * 4;\n            uVar14 = 0;\n            iStack_110 = (int)puVar15 + 1;\n            uVar6 = uStack_f4 >> 5;\n            puVar10 = (uint *)(piStack_d4 + (int)pmStack_f0);\n            iStack_dc = iVar18;\n            pmStack_d8 = pmStack_f0;\n            goto LAB_0004e83d;\n          }\n          uVar14 = *(uint *)(iVar18 + (int)pmVar8 * 4);\n        } while (uVar14 == piVar12[(int)pmVar8]);" do (compound_statement "{\n          pmVar8 = (mp_ptr)((int)pmVar8 + -1);\n          if ((int)pmVar8 < 0) {\n            iStack_108 = iStack_dc;\n            iStack_114 = 0;\n            iStack_10c = iStack_104;\n            uStack_e8 = pmStack_fc[iStack_104] - pmStack_fc[iStack_104 + 1];\n            iStack_118 = pmStack_fc[iStack_104 + 1] - pmStack_fc[iStack_104];\n            pmStack_f0 = (mp_ptr)(uStack_e8 >> 5);\n            uStack_f4 = iStack_118 + uStack_e4;\n            uVar14 = uStack_e4 - 1;\n            uStack_e4 = uStack_e8 & 0x1f;\n            puVar15 = (uint *)((uVar14 >> 5) - (uStack_f4 >> 5));\n            uStack_100 = (int)pmStack_f0 * 4;\n            uVar14 = 0;\n            iStack_110 = (int)puVar15 + 1;\n            uVar6 = uStack_f4 >> 5;\n            puVar10 = (uint *)(piStack_d4 + (int)pmStack_f0);\n            iStack_dc = iVar18;\n            pmStack_d8 = pmStack_f0;\n            goto LAB_0004e83d;\n          }\n          uVar14 = *(uint *)(iVar18 + (int)pmVar8 * 4);\n        }" { (expression_statement "pmVar8 = (mp_ptr)((int)pmVar8 + -1);" (assignment_expression "pmVar8 = (mp_ptr)((int)pmVar8 + -1)" identifier = (call_expression "(mp_ptr)((int)pmVar8 + -1)" (parenthesized_expression "(mp_ptr)" ( identifier )) (argument_list "((int)pmVar8 + -1)" ( (binary_expression "(int)pmVar8 + -1" (cast_expression "(int)pmVar8" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (if_statement "if ((int)pmVar8 < 0) {\n            iStack_108 = iStack_dc;\n            iStack_114 = 0;\n            iStack_10c = iStack_104;\n            uStack_e8 = pmStack_fc[iStack_104] - pmStack_fc[iStack_104 + 1];\n            iStack_118 = pmStack_fc[iStack_104 + 1] - pmStack_fc[iStack_104];\n            pmStack_f0 = (mp_ptr)(uStack_e8 >> 5);\n            uStack_f4 = iStack_118 + uStack_e4;\n            uVar14 = uStack_e4 - 1;\n            uStack_e4 = uStack_e8 & 0x1f;\n            puVar15 = (uint *)((uVar14 >> 5) - (uStack_f4 >> 5));\n            uStack_100 = (int)pmStack_f0 * 4;\n            uVar14 = 0;\n            iStack_110 = (int)puVar15 + 1;\n            uVar6 = uStack_f4 >> 5;\n            puVar10 = (uint *)(piStack_d4 + (int)pmStack_f0);\n            iStack_dc = iVar18;\n            pmStack_d8 = pmStack_f0;\n            goto LAB_0004e83d;\n          }" if (parenthesized_expression "((int)pmVar8 < 0)" ( (binary_expression "(int)pmVar8 < 0" (cast_expression "(int)pmVar8" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n            iStack_108 = iStack_dc;\n            iStack_114 = 0;\n            iStack_10c = iStack_104;\n            uStack_e8 = pmStack_fc[iStack_104] - pmStack_fc[iStack_104 + 1];\n            iStack_118 = pmStack_fc[iStack_104 + 1] - pmStack_fc[iStack_104];\n            pmStack_f0 = (mp_ptr)(uStack_e8 >> 5);\n            uStack_f4 = iStack_118 + uStack_e4;\n            uVar14 = uStack_e4 - 1;\n            uStack_e4 = uStack_e8 & 0x1f;\n            puVar15 = (uint *)((uVar14 >> 5) - (uStack_f4 >> 5));\n            uStack_100 = (int)pmStack_f0 * 4;\n            uVar14 = 0;\n            iStack_110 = (int)puVar15 + 1;\n            uVar6 = uStack_f4 >> 5;\n            puVar10 = (uint *)(piStack_d4 + (int)pmStack_f0);\n            iStack_dc = iVar18;\n            pmStack_d8 = pmStack_f0;\n            goto LAB_0004e83d;\n          }" { (expression_statement "iStack_108 = iStack_dc;" (assignment_expression "iStack_108 = iStack_dc" identifier = identifier) ;) (expression_statement "iStack_114 = 0;" (assignment_expression "iStack_114 = 0" identifier = number_literal) ;) (expression_statement "iStack_10c = iStack_104;" (assignment_expression "iStack_10c = iStack_104" identifier = identifier) ;) (expression_statement "uStack_e8 = pmStack_fc[iStack_104] - pmStack_fc[iStack_104 + 1];" (assignment_expression "uStack_e8 = pmStack_fc[iStack_104] - pmStack_fc[iStack_104 + 1]" identifier = (binary_expression "pmStack_fc[iStack_104] - pmStack_fc[iStack_104 + 1]" (subscript_expression "pmStack_fc[iStack_104]" identifier [ identifier ]) - (subscript_expression "pmStack_fc[iStack_104 + 1]" identifier [ (binary_expression "iStack_104 + 1" identifier + number_literal) ]))) ;) (expression_statement "iStack_118 = pmStack_fc[iStack_104 + 1] - pmStack_fc[iStack_104];" (assignment_expression "iStack_118 = pmStack_fc[iStack_104 + 1] - pmStack_fc[iStack_104]" identifier = (binary_expression "pmStack_fc[iStack_104 + 1] - pmStack_fc[iStack_104]" (subscript_expression "pmStack_fc[iStack_104 + 1]" identifier [ (binary_expression "iStack_104 + 1" identifier + number_literal) ]) - (subscript_expression "pmStack_fc[iStack_104]" identifier [ identifier ]))) ;) (expression_statement "pmStack_f0 = (mp_ptr)(uStack_e8 >> 5);" (assignment_expression "pmStack_f0 = (mp_ptr)(uStack_e8 >> 5)" identifier = (call_expression "(mp_ptr)(uStack_e8 >> 5)" (parenthesized_expression "(mp_ptr)" ( identifier )) (argument_list "(uStack_e8 >> 5)" ( (binary_expression "uStack_e8 >> 5" identifier >> number_literal) )))) ;) (expression_statement "uStack_f4 = iStack_118 + uStack_e4;" (assignment_expression "uStack_f4 = iStack_118 + uStack_e4" identifier = (binary_expression "iStack_118 + uStack_e4" identifier + identifier)) ;) (expression_statement "uVar14 = uStack_e4 - 1;" (assignment_expression "uVar14 = uStack_e4 - 1" identifier = (binary_expression "uStack_e4 - 1" identifier - number_literal)) ;) (expression_statement "uStack_e4 = uStack_e8 & 0x1f;" (assignment_expression "uStack_e4 = uStack_e8 & 0x1f" identifier = (binary_expression "uStack_e8 & 0x1f" identifier & number_literal)) ;) (expression_statement "puVar15 = (uint *)((uVar14 >> 5) - (uStack_f4 >> 5));" (assignment_expression "puVar15 = (uint *)((uVar14 >> 5) - (uStack_f4 >> 5))" identifier = (cast_expression "(uint *)((uVar14 >> 5) - (uStack_f4 >> 5))" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((uVar14 >> 5) - (uStack_f4 >> 5))" ( (binary_expression "(uVar14 >> 5) - (uStack_f4 >> 5)" (parenthesized_expression "(uVar14 >> 5)" ( (binary_expression "uVar14 >> 5" identifier >> number_literal) )) - (parenthesized_expression "(uStack_f4 >> 5)" ( (binary_expression "uStack_f4 >> 5" identifier >> number_literal) ))) )))) ;) (expression_statement "uStack_100 = (int)pmStack_f0 * 4;" (assignment_expression "uStack_100 = (int)pmStack_f0 * 4" identifier = (binary_expression "(int)pmStack_f0 * 4" (cast_expression "(int)pmStack_f0" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal)) ;) (expression_statement "uVar14 = 0;" (assignment_expression "uVar14 = 0" identifier = number_literal) ;) (expression_statement "iStack_110 = (int)puVar15 + 1;" (assignment_expression "iStack_110 = (int)puVar15 + 1" identifier = (binary_expression "(int)puVar15 + 1" (cast_expression "(int)puVar15" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal)) ;) (expression_statement "uVar6 = uStack_f4 >> 5;" (assignment_expression "uVar6 = uStack_f4 >> 5" identifier = (binary_expression "uStack_f4 >> 5" identifier >> number_literal)) ;) (expression_statement "puVar10 = (uint *)(piStack_d4 + (int)pmStack_f0);" (assignment_expression "puVar10 = (uint *)(piStack_d4 + (int)pmStack_f0)" identifier = (cast_expression "(uint *)(piStack_d4 + (int)pmStack_f0)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piStack_d4 + (int)pmStack_f0)" ( (binary_expression "piStack_d4 + (int)pmStack_f0" identifier + (cast_expression "(int)pmStack_f0" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) (expression_statement "iStack_dc = iVar18;" (assignment_expression "iStack_dc = iVar18" identifier = identifier) ;) (expression_statement "pmStack_d8 = pmStack_f0;" (assignment_expression "pmStack_d8 = pmStack_f0" identifier = identifier) ;) (goto_statement "goto LAB_0004e83d;" goto statement_identifier ;) })) (expression_statement "uVar14 = *(uint *)(iVar18 + (int)pmVar8 * 4);" (assignment_expression "uVar14 = *(uint *)(iVar18 + (int)pmVar8 * 4)" identifier = (pointer_expression "*(uint *)(iVar18 + (int)pmVar8 * 4)" * (cast_expression "(uint *)(iVar18 + (int)pmVar8 * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar18 + (int)pmVar8 * 4)" ( (binary_expression "iVar18 + (int)pmVar8 * 4" identifier + (binary_expression "(int)pmVar8 * 4" (cast_expression "(int)pmVar8" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal)) ))))) ;) }) while (parenthesized_expression "(uVar14 == piVar12[(int)pmVar8])" ( (binary_expression "uVar14 == piVar12[(int)pmVar8]" identifier == (subscript_expression "piVar12[(int)pmVar8]" identifier [ (cast_expression "(int)pmVar8" ( (type_descriptor "int" primitive_type) ) identifier) ])) )) ;) (if_statement "if (uVar14 <= (uint)piVar12[(int)pmVar8]) goto LAB_0004eb66;" if (parenthesized_expression "(uVar14 <= (uint)piVar12[(int)pmVar8])" ( (binary_expression "uVar14 <= (uint)piVar12[(int)pmVar8]" identifier <= (cast_expression "(uint)piVar12[(int)pmVar8]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "piVar12[(int)pmVar8]" identifier [ (cast_expression "(int)pmVar8" ( (type_descriptor "int" primitive_type) ) identifier) ]))) )) (goto_statement "goto LAB_0004eb66;" goto statement_identifier ;)) })) (do_statement "do {\n        uVar14 = *puVar10;\n        *puVar10 = *puVar10 - 1;\n        puVar10 = puVar10 + 1;\n      } while (uVar14 == 0);" do (compound_statement "{\n        uVar14 = *puVar10;\n        *puVar10 = *puVar10 - 1;\n        puVar10 = puVar10 + 1;\n      }" { (expression_statement "uVar14 = *puVar10;" (assignment_expression "uVar14 = *puVar10" identifier = (pointer_expression "*puVar10" * identifier)) ;) (expression_statement "*puVar10 = *puVar10 - 1;" (assignment_expression "*puVar10 = *puVar10 - 1" (pointer_expression "*puVar10" * identifier) = (binary_expression "*puVar10 - 1" (pointer_expression "*puVar10" * identifier) - number_literal)) ;) (expression_statement "puVar10 = puVar10 + 1;" (assignment_expression "puVar10 = puVar10 + 1" identifier = (binary_expression "puVar10 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar14 == 0)" ( (binary_expression "uVar14 == 0" identifier == number_literal) )) ;) }) while (parenthesized_expression "( true )" ( true )) ;) })) (expression_statement "iStack_cc = 1;" (assignment_expression "iStack_cc = 1" identifier = number_literal) ;) (labeled_statement "LAB_0004e9ce:\n  piVar12 = local_f8;" statement_identifier : (expression_statement "piVar12 = local_f8;" (assignment_expression "piVar12 = local_f8" identifier = identifier) ;)) (if_statement "if ((up == (mp_srcptr)0x0) || (*local_c0 < 2)) {\n    do {\n      *(int *)(puVar17 + -0x10) = iStack_d0;\n      *(mp_ptr *)(puVar17 + -0x14) = remp;\n      *(int *)(puVar17 + -0x18) = iStack_cc;\n      *(uint **)(puVar17 + -0x1c) = local_c0;\n      *(int *)(puVar17 + -0x20) = iVar13;\n      *(undefined4 *)(puVar17 + -0x24) = 0x4ea47;\n      pmVar5 = (mp_ptr)__gmpn_pow_1(*(mp_ptr *)(puVar17 + -0x20),*(mp_srcptr *)(puVar17 + -0x1c),\n                                    *(mp_size_t *)(puVar17 + -0x18),*(mp_limb_t *)(puVar17 + -0x14),\n                                    *(mp_ptr *)(puVar17 + -0x10));\n      puVar10 = local_c0;\n      if ((int)pmVar5 <= (int)rootp) {\n        pmVar8 = rootp;\n        if (rootp != pmVar5) goto LAB_0004efbf;\n        do {\n          pmVar8 = (mp_ptr)((int)pmVar8 + -1);\n          if ((int)pmVar8 < 0) {\n            pmStack_d8 = (mp_ptr)0x0;\n            goto LAB_0004e9e0;\n          }\n          uVar14 = *(uint *)(iVar13 + (int)pmVar8 * 4);\n        } while (uVar14 == piVar12[(int)pmVar8]);\n        if (uVar14 <= (uint)piVar12[(int)pmVar8]) goto LAB_0004efbf;\n      }\n      do {\n        uVar14 = *puVar10;\n        *puVar10 = *puVar10 - 1;\n        puVar10 = puVar10 + 1;\n      } while (uVar14 == 0);\n    } while( true );\n  }" if (parenthesized_expression "((up == (mp_srcptr)0x0) || (*local_c0 < 2))" ( (binary_expression "(up == (mp_srcptr)0x0) || (*local_c0 < 2)" (parenthesized_expression "(up == (mp_srcptr)0x0)" ( (binary_expression "up == (mp_srcptr)0x0" identifier == (cast_expression "(mp_srcptr)0x0" ( (type_descriptor "mp_srcptr" type_identifier) ) number_literal)) )) || (parenthesized_expression "(*local_c0 < 2)" ( (binary_expression "*local_c0 < 2" (pointer_expression "*local_c0" * identifier) < number_literal) ))) )) (compound_statement "{\n    do {\n      *(int *)(puVar17 + -0x10) = iStack_d0;\n      *(mp_ptr *)(puVar17 + -0x14) = remp;\n      *(int *)(puVar17 + -0x18) = iStack_cc;\n      *(uint **)(puVar17 + -0x1c) = local_c0;\n      *(int *)(puVar17 + -0x20) = iVar13;\n      *(undefined4 *)(puVar17 + -0x24) = 0x4ea47;\n      pmVar5 = (mp_ptr)__gmpn_pow_1(*(mp_ptr *)(puVar17 + -0x20),*(mp_srcptr *)(puVar17 + -0x1c),\n                                    *(mp_size_t *)(puVar17 + -0x18),*(mp_limb_t *)(puVar17 + -0x14),\n                                    *(mp_ptr *)(puVar17 + -0x10));\n      puVar10 = local_c0;\n      if ((int)pmVar5 <= (int)rootp) {\n        pmVar8 = rootp;\n        if (rootp != pmVar5) goto LAB_0004efbf;\n        do {\n          pmVar8 = (mp_ptr)((int)pmVar8 + -1);\n          if ((int)pmVar8 < 0) {\n            pmStack_d8 = (mp_ptr)0x0;\n            goto LAB_0004e9e0;\n          }\n          uVar14 = *(uint *)(iVar13 + (int)pmVar8 * 4);\n        } while (uVar14 == piVar12[(int)pmVar8]);\n        if (uVar14 <= (uint)piVar12[(int)pmVar8]) goto LAB_0004efbf;\n      }\n      do {\n        uVar14 = *puVar10;\n        *puVar10 = *puVar10 - 1;\n        puVar10 = puVar10 + 1;\n      } while (uVar14 == 0);\n    } while( true );\n  }" { (do_statement "do {\n      *(int *)(puVar17 + -0x10) = iStack_d0;\n      *(mp_ptr *)(puVar17 + -0x14) = remp;\n      *(int *)(puVar17 + -0x18) = iStack_cc;\n      *(uint **)(puVar17 + -0x1c) = local_c0;\n      *(int *)(puVar17 + -0x20) = iVar13;\n      *(undefined4 *)(puVar17 + -0x24) = 0x4ea47;\n      pmVar5 = (mp_ptr)__gmpn_pow_1(*(mp_ptr *)(puVar17 + -0x20),*(mp_srcptr *)(puVar17 + -0x1c),\n                                    *(mp_size_t *)(puVar17 + -0x18),*(mp_limb_t *)(puVar17 + -0x14),\n                                    *(mp_ptr *)(puVar17 + -0x10));\n      puVar10 = local_c0;\n      if ((int)pmVar5 <= (int)rootp) {\n        pmVar8 = rootp;\n        if (rootp != pmVar5) goto LAB_0004efbf;\n        do {\n          pmVar8 = (mp_ptr)((int)pmVar8 + -1);\n          if ((int)pmVar8 < 0) {\n            pmStack_d8 = (mp_ptr)0x0;\n            goto LAB_0004e9e0;\n          }\n          uVar14 = *(uint *)(iVar13 + (int)pmVar8 * 4);\n        } while (uVar14 == piVar12[(int)pmVar8]);\n        if (uVar14 <= (uint)piVar12[(int)pmVar8]) goto LAB_0004efbf;\n      }\n      do {\n        uVar14 = *puVar10;\n        *puVar10 = *puVar10 - 1;\n        puVar10 = puVar10 + 1;\n      } while (uVar14 == 0);\n    } while( true );" do (compound_statement "{\n      *(int *)(puVar17 + -0x10) = iStack_d0;\n      *(mp_ptr *)(puVar17 + -0x14) = remp;\n      *(int *)(puVar17 + -0x18) = iStack_cc;\n      *(uint **)(puVar17 + -0x1c) = local_c0;\n      *(int *)(puVar17 + -0x20) = iVar13;\n      *(undefined4 *)(puVar17 + -0x24) = 0x4ea47;\n      pmVar5 = (mp_ptr)__gmpn_pow_1(*(mp_ptr *)(puVar17 + -0x20),*(mp_srcptr *)(puVar17 + -0x1c),\n                                    *(mp_size_t *)(puVar17 + -0x18),*(mp_limb_t *)(puVar17 + -0x14),\n                                    *(mp_ptr *)(puVar17 + -0x10));\n      puVar10 = local_c0;\n      if ((int)pmVar5 <= (int)rootp) {\n        pmVar8 = rootp;\n        if (rootp != pmVar5) goto LAB_0004efbf;\n        do {\n          pmVar8 = (mp_ptr)((int)pmVar8 + -1);\n          if ((int)pmVar8 < 0) {\n            pmStack_d8 = (mp_ptr)0x0;\n            goto LAB_0004e9e0;\n          }\n          uVar14 = *(uint *)(iVar13 + (int)pmVar8 * 4);\n        } while (uVar14 == piVar12[(int)pmVar8]);\n        if (uVar14 <= (uint)piVar12[(int)pmVar8]) goto LAB_0004efbf;\n      }\n      do {\n        uVar14 = *puVar10;\n        *puVar10 = *puVar10 - 1;\n        puVar10 = puVar10 + 1;\n      } while (uVar14 == 0);\n    }" { (expression_statement "*(int *)(puVar17 + -0x10) = iStack_d0;" (assignment_expression "*(int *)(puVar17 + -0x10) = iStack_d0" (pointer_expression "*(int *)(puVar17 + -0x10)" * (cast_expression "(int *)(puVar17 + -0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar17 + -0x10)" ( (binary_expression "puVar17 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(mp_ptr *)(puVar17 + -0x14) = remp;" (assignment_expression "*(mp_ptr *)(puVar17 + -0x14) = remp" (pointer_expression "*(mp_ptr *)(puVar17 + -0x14)" * (cast_expression "(mp_ptr *)(puVar17 + -0x14)" ( (type_descriptor "mp_ptr *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar17 + -0x14)" ( (binary_expression "puVar17 + -0x14" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(puVar17 + -0x18) = iStack_cc;" (assignment_expression "*(int *)(puVar17 + -0x18) = iStack_cc" (pointer_expression "*(int *)(puVar17 + -0x18)" * (cast_expression "(int *)(puVar17 + -0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar17 + -0x18)" ( (binary_expression "puVar17 + -0x18" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(uint **)(puVar17 + -0x1c) = local_c0;" (assignment_expression "*(uint **)(puVar17 + -0x1c) = local_c0" (pointer_expression "*(uint **)(puVar17 + -0x1c)" * (cast_expression "(uint **)(puVar17 + -0x1c)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar17 + -0x1c)" ( (binary_expression "puVar17 + -0x1c" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(puVar17 + -0x20) = iVar13;" (assignment_expression "*(int *)(puVar17 + -0x20) = iVar13" (pointer_expression "*(int *)(puVar17 + -0x20)" * (cast_expression "(int *)(puVar17 + -0x20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar17 + -0x20)" ( (binary_expression "puVar17 + -0x20" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar17 + -0x24) = 0x4ea47;" (assignment_expression "*(undefined4 *)(puVar17 + -0x24) = 0x4ea47" (pointer_expression "*(undefined4 *)(puVar17 + -0x24)" * (cast_expression "(undefined4 *)(puVar17 + -0x24)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar17 + -0x24)" ( (binary_expression "puVar17 + -0x24" identifier + number_literal) )))) = number_literal) ;) (expression_statement "pmVar5 = (mp_ptr)__gmpn_pow_1(*(mp_ptr *)(puVar17 + -0x20),*(mp_srcptr *)(puVar17 + -0x1c),\n                                    *(mp_size_t *)(puVar17 + -0x18),*(mp_limb_t *)(puVar17 + -0x14),\n                                    *(mp_ptr *)(puVar17 + -0x10));" (assignment_expression "pmVar5 = (mp_ptr)__gmpn_pow_1(*(mp_ptr *)(puVar17 + -0x20),*(mp_srcptr *)(puVar17 + -0x1c),\n                                    *(mp_size_t *)(puVar17 + -0x18),*(mp_limb_t *)(puVar17 + -0x14),\n                                    *(mp_ptr *)(puVar17 + -0x10))" identifier = (cast_expression "(mp_ptr)__gmpn_pow_1(*(mp_ptr *)(puVar17 + -0x20),*(mp_srcptr *)(puVar17 + -0x1c),\n                                    *(mp_size_t *)(puVar17 + -0x18),*(mp_limb_t *)(puVar17 + -0x14),\n                                    *(mp_ptr *)(puVar17 + -0x10))" ( (type_descriptor "mp_ptr" type_identifier) ) (call_expression "__gmpn_pow_1(*(mp_ptr *)(puVar17 + -0x20),*(mp_srcptr *)(puVar17 + -0x1c),\n                                    *(mp_size_t *)(puVar17 + -0x18),*(mp_limb_t *)(puVar17 + -0x14),\n                                    *(mp_ptr *)(puVar17 + -0x10))" identifier (argument_list "(*(mp_ptr *)(puVar17 + -0x20),*(mp_srcptr *)(puVar17 + -0x1c),\n                                    *(mp_size_t *)(puVar17 + -0x18),*(mp_limb_t *)(puVar17 + -0x14),\n                                    *(mp_ptr *)(puVar17 + -0x10))" ( (pointer_expression "*(mp_ptr *)(puVar17 + -0x20)" * (cast_expression "(mp_ptr *)(puVar17 + -0x20)" ( (type_descriptor "mp_ptr *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar17 + -0x20)" ( (binary_expression "puVar17 + -0x20" identifier + number_literal) )))) , (pointer_expression "*(mp_srcptr *)(puVar17 + -0x1c)" * (cast_expression "(mp_srcptr *)(puVar17 + -0x1c)" ( (type_descriptor "mp_srcptr *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar17 + -0x1c)" ( (binary_expression "puVar17 + -0x1c" identifier + number_literal) )))) , (pointer_expression "*(mp_size_t *)(puVar17 + -0x18)" * (cast_expression "(mp_size_t *)(puVar17 + -0x18)" ( (type_descriptor "mp_size_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar17 + -0x18)" ( (binary_expression "puVar17 + -0x18" identifier + number_literal) )))) , (pointer_expression "*(mp_limb_t *)(puVar17 + -0x14)" * (cast_expression "(mp_limb_t *)(puVar17 + -0x14)" ( (type_descriptor "mp_limb_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar17 + -0x14)" ( (binary_expression "puVar17 + -0x14" identifier + number_literal) )))) , (pointer_expression "*(mp_ptr *)(puVar17 + -0x10)" * (cast_expression "(mp_ptr *)(puVar17 + -0x10)" ( (type_descriptor "mp_ptr *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar17 + -0x10)" ( (binary_expression "puVar17 + -0x10" identifier + number_literal) )))) ))))) ;) (expression_statement "puVar10 = local_c0;" (assignment_expression "puVar10 = local_c0" identifier = identifier) ;) (if_statement "if ((int)pmVar5 <= (int)rootp) {\n        pmVar8 = rootp;\n        if (rootp != pmVar5) goto LAB_0004efbf;\n        do {\n          pmVar8 = (mp_ptr)((int)pmVar8 + -1);\n          if ((int)pmVar8 < 0) {\n            pmStack_d8 = (mp_ptr)0x0;\n            goto LAB_0004e9e0;\n          }\n          uVar14 = *(uint *)(iVar13 + (int)pmVar8 * 4);\n        } while (uVar14 == piVar12[(int)pmVar8]);\n        if (uVar14 <= (uint)piVar12[(int)pmVar8]) goto LAB_0004efbf;\n      }" if (parenthesized_expression "((int)pmVar5 <= (int)rootp)" ( (binary_expression "(int)pmVar5 <= (int)rootp" (cast_expression "(int)pmVar5" ( (type_descriptor "int" primitive_type) ) identifier) <= (cast_expression "(int)rootp" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n        pmVar8 = rootp;\n        if (rootp != pmVar5) goto LAB_0004efbf;\n        do {\n          pmVar8 = (mp_ptr)((int)pmVar8 + -1);\n          if ((int)pmVar8 < 0) {\n            pmStack_d8 = (mp_ptr)0x0;\n            goto LAB_0004e9e0;\n          }\n          uVar14 = *(uint *)(iVar13 + (int)pmVar8 * 4);\n        } while (uVar14 == piVar12[(int)pmVar8]);\n        if (uVar14 <= (uint)piVar12[(int)pmVar8]) goto LAB_0004efbf;\n      }" { (expression_statement "pmVar8 = rootp;" (assignment_expression "pmVar8 = rootp" identifier = identifier) ;) (if_statement "if (rootp != pmVar5) goto LAB_0004efbf;" if (parenthesized_expression "(rootp != pmVar5)" ( (binary_expression "rootp != pmVar5" identifier != identifier) )) (goto_statement "goto LAB_0004efbf;" goto statement_identifier ;)) (do_statement "do {\n          pmVar8 = (mp_ptr)((int)pmVar8 + -1);\n          if ((int)pmVar8 < 0) {\n            pmStack_d8 = (mp_ptr)0x0;\n            goto LAB_0004e9e0;\n          }\n          uVar14 = *(uint *)(iVar13 + (int)pmVar8 * 4);\n        } while (uVar14 == piVar12[(int)pmVar8]);" do (compound_statement "{\n          pmVar8 = (mp_ptr)((int)pmVar8 + -1);\n          if ((int)pmVar8 < 0) {\n            pmStack_d8 = (mp_ptr)0x0;\n            goto LAB_0004e9e0;\n          }\n          uVar14 = *(uint *)(iVar13 + (int)pmVar8 * 4);\n        }" { (expression_statement "pmVar8 = (mp_ptr)((int)pmVar8 + -1);" (assignment_expression "pmVar8 = (mp_ptr)((int)pmVar8 + -1)" identifier = (call_expression "(mp_ptr)((int)pmVar8 + -1)" (parenthesized_expression "(mp_ptr)" ( identifier )) (argument_list "((int)pmVar8 + -1)" ( (binary_expression "(int)pmVar8 + -1" (cast_expression "(int)pmVar8" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (if_statement "if ((int)pmVar8 < 0) {\n            pmStack_d8 = (mp_ptr)0x0;\n            goto LAB_0004e9e0;\n          }" if (parenthesized_expression "((int)pmVar8 < 0)" ( (binary_expression "(int)pmVar8 < 0" (cast_expression "(int)pmVar8" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n            pmStack_d8 = (mp_ptr)0x0;\n            goto LAB_0004e9e0;\n          }" { (expression_statement "pmStack_d8 = (mp_ptr)0x0;" (assignment_expression "pmStack_d8 = (mp_ptr)0x0" identifier = (cast_expression "(mp_ptr)0x0" ( (type_descriptor "mp_ptr" type_identifier) ) number_literal)) ;) (goto_statement "goto LAB_0004e9e0;" goto statement_identifier ;) })) (expression_statement "uVar14 = *(uint *)(iVar13 + (int)pmVar8 * 4);" (assignment_expression "uVar14 = *(uint *)(iVar13 + (int)pmVar8 * 4)" identifier = (pointer_expression "*(uint *)(iVar13 + (int)pmVar8 * 4)" * (cast_expression "(uint *)(iVar13 + (int)pmVar8 * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar13 + (int)pmVar8 * 4)" ( (binary_expression "iVar13 + (int)pmVar8 * 4" identifier + (binary_expression "(int)pmVar8 * 4" (cast_expression "(int)pmVar8" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal)) ))))) ;) }) while (parenthesized_expression "(uVar14 == piVar12[(int)pmVar8])" ( (binary_expression "uVar14 == piVar12[(int)pmVar8]" identifier == (subscript_expression "piVar12[(int)pmVar8]" identifier [ (cast_expression "(int)pmVar8" ( (type_descriptor "int" primitive_type) ) identifier) ])) )) ;) (if_statement "if (uVar14 <= (uint)piVar12[(int)pmVar8]) goto LAB_0004efbf;" if (parenthesized_expression "(uVar14 <= (uint)piVar12[(int)pmVar8])" ( (binary_expression "uVar14 <= (uint)piVar12[(int)pmVar8]" identifier <= (cast_expression "(uint)piVar12[(int)pmVar8]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "piVar12[(int)pmVar8]" identifier [ (cast_expression "(int)pmVar8" ( (type_descriptor "int" primitive_type) ) identifier) ]))) )) (goto_statement "goto LAB_0004efbf;" goto statement_identifier ;)) })) (do_statement "do {\n        uVar14 = *puVar10;\n        *puVar10 = *puVar10 - 1;\n        puVar10 = puVar10 + 1;\n      } while (uVar14 == 0);" do (compound_statement "{\n        uVar14 = *puVar10;\n        *puVar10 = *puVar10 - 1;\n        puVar10 = puVar10 + 1;\n      }" { (expression_statement "uVar14 = *puVar10;" (assignment_expression "uVar14 = *puVar10" identifier = (pointer_expression "*puVar10" * identifier)) ;) (expression_statement "*puVar10 = *puVar10 - 1;" (assignment_expression "*puVar10 = *puVar10 - 1" (pointer_expression "*puVar10" * identifier) = (binary_expression "*puVar10 - 1" (pointer_expression "*puVar10" * identifier) - number_literal)) ;) (expression_statement "puVar10 = puVar10 + 1;" (assignment_expression "puVar10 = puVar10 + 1" identifier = (binary_expression "puVar10 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar14 == 0)" ( (binary_expression "uVar14 == 0" identifier == number_literal) )) ;) }) while (parenthesized_expression "( true )" ( true )) ;) })) (labeled_statement "LAB_0004e9e0:\n  if (__tmp_marker != (tmp_reentrant_t *)0x0) {\n    *(tmp_reentrant_t **)(puVar17 + -0x10) = __tmp_marker;\n    *(undefined4 *)(puVar17 + -0x14) = 0x4f1a9;\n    __gmp_tmp_reentrant_free(*(tmp_reentrant_t **)(puVar17 + -0x10));\n  }" statement_identifier : (if_statement "if (__tmp_marker != (tmp_reentrant_t *)0x0) {\n    *(tmp_reentrant_t **)(puVar17 + -0x10) = __tmp_marker;\n    *(undefined4 *)(puVar17 + -0x14) = 0x4f1a9;\n    __gmp_tmp_reentrant_free(*(tmp_reentrant_t **)(puVar17 + -0x10));\n  }" if (parenthesized_expression "(__tmp_marker != (tmp_reentrant_t *)0x0)" ( (binary_expression "__tmp_marker != (tmp_reentrant_t *)0x0" identifier != (cast_expression "(tmp_reentrant_t *)0x0" ( (type_descriptor "tmp_reentrant_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    *(tmp_reentrant_t **)(puVar17 + -0x10) = __tmp_marker;\n    *(undefined4 *)(puVar17 + -0x14) = 0x4f1a9;\n    __gmp_tmp_reentrant_free(*(tmp_reentrant_t **)(puVar17 + -0x10));\n  }" { (expression_statement "*(tmp_reentrant_t **)(puVar17 + -0x10) = __tmp_marker;" (assignment_expression "*(tmp_reentrant_t **)(puVar17 + -0x10) = __tmp_marker" (pointer_expression "*(tmp_reentrant_t **)(puVar17 + -0x10)" * (cast_expression "(tmp_reentrant_t **)(puVar17 + -0x10)" ( (type_descriptor "tmp_reentrant_t **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar17 + -0x10)" ( (binary_expression "puVar17 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar17 + -0x14) = 0x4f1a9;" (assignment_expression "*(undefined4 *)(puVar17 + -0x14) = 0x4f1a9" (pointer_expression "*(undefined4 *)(puVar17 + -0x14)" * (cast_expression "(undefined4 *)(puVar17 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar17 + -0x14)" ( (binary_expression "puVar17 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "__gmp_tmp_reentrant_free(*(tmp_reentrant_t **)(puVar17 + -0x10));" (call_expression "__gmp_tmp_reentrant_free(*(tmp_reentrant_t **)(puVar17 + -0x10))" identifier (argument_list "(*(tmp_reentrant_t **)(puVar17 + -0x10))" ( (pointer_expression "*(tmp_reentrant_t **)(puVar17 + -0x10)" * (cast_expression "(tmp_reentrant_t **)(puVar17 + -0x10)" ( (type_descriptor "tmp_reentrant_t **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar17 + -0x10)" ( (binary_expression "puVar17 + -0x10" identifier + number_literal) )))) ))) ;) }))) (labeled_statement "LAB_0004e9ee:\n  if (iVar1 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return (mp_size_t)pmStack_d8;\n  }" statement_identifier : (if_statement "if (iVar1 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return (mp_size_t)pmStack_d8;\n  }" if (parenthesized_expression "(iVar1 == *(int *)(in_GS_OFFSET + 0x14))" ( (binary_expression "iVar1 == *(int *)(in_GS_OFFSET + 0x14)" identifier == (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) )) (compound_statement "{\n    return (mp_size_t)pmStack_d8;\n  }" { (return_statement "return (mp_size_t)pmStack_d8;" return (cast_expression "(mp_size_t)pmStack_d8" ( (type_descriptor "mp_size_t" type_identifier) ) identifier) ;) }))) comment (expression_statement "*(undefined **)(puVar17 + -4) = &UNK_0004f214;" (assignment_expression "*(undefined **)(puVar17 + -4) = &UNK_0004f214" (pointer_expression "*(undefined **)(puVar17 + -4)" * (cast_expression "(undefined **)(puVar17 + -4)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar17 + -4)" ( (binary_expression "puVar17 + -4" identifier + number_literal) )))) = (pointer_expression "&UNK_0004f214" & identifier)) ;) (expression_statement "__stack_chk_fail_local();" (call_expression "__stack_chk_fail_local()" identifier (argument_list "()" ( ))) ;) (labeled_statement "LAB_0004eb66:\n  iStack_108 = iStack_dc;" statement_identifier : (expression_statement "iStack_108 = iStack_dc;" (assignment_expression "iStack_108 = iStack_dc" identifier = identifier) ;)) (expression_statement "iStack_10c = iStack_104;" (assignment_expression "iStack_10c = iStack_104" identifier = identifier) ;) (expression_statement "uStack_e8 = pmStack_fc[iStack_104] - pmStack_fc[iStack_104 + 1];" (assignment_expression "uStack_e8 = pmStack_fc[iStack_104] - pmStack_fc[iStack_104 + 1]" identifier = (binary_expression "pmStack_fc[iStack_104] - pmStack_fc[iStack_104 + 1]" (subscript_expression "pmStack_fc[iStack_104]" identifier [ identifier ]) - (subscript_expression "pmStack_fc[iStack_104 + 1]" identifier [ (binary_expression "iStack_104 + 1" identifier + number_literal) ]))) ;) (expression_statement "iStack_118 = pmStack_fc[iStack_104 + 1] - pmStack_fc[iStack_104];" (assignment_expression "iStack_118 = pmStack_fc[iStack_104 + 1] - pmStack_fc[iStack_104]" identifier = (binary_expression "pmStack_fc[iStack_104 + 1] - pmStack_fc[iStack_104]" (subscript_expression "pmStack_fc[iStack_104 + 1]" identifier [ (binary_expression "iStack_104 + 1" identifier + number_literal) ]) - (subscript_expression "pmStack_fc[iStack_104]" identifier [ identifier ]))) ;) (expression_statement "pmStack_f0 = (mp_ptr)(uStack_e8 >> 5);" (assignment_expression "pmStack_f0 = (mp_ptr)(uStack_e8 >> 5)" identifier = (call_expression "(mp_ptr)(uStack_e8 >> 5)" (parenthesized_expression "(mp_ptr)" ( identifier )) (argument_list "(uStack_e8 >> 5)" ( (binary_expression "uStack_e8 >> 5" identifier >> number_literal) )))) ;) (expression_statement "uStack_f4 = iStack_118 + uStack_e4;" (assignment_expression "uStack_f4 = iStack_118 + uStack_e4" identifier = (binary_expression "iStack_118 + uStack_e4" identifier + identifier)) ;) (expression_statement "uVar14 = uStack_f4 >> 5;" (assignment_expression "uVar14 = uStack_f4 >> 5" identifier = (binary_expression "uStack_f4 >> 5" identifier >> number_literal)) ;) (expression_statement "puStack_11c = (uint *)((uStack_e4 - 1 >> 5) - uVar14);" (assignment_expression "puStack_11c = (uint *)((uStack_e4 - 1 >> 5) - uVar14)" identifier = (cast_expression "(uint *)((uStack_e4 - 1 >> 5) - uVar14)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((uStack_e4 - 1 >> 5) - uVar14)" ( (binary_expression "(uStack_e4 - 1 >> 5) - uVar14" (parenthesized_expression "(uStack_e4 - 1 >> 5)" ( (binary_expression "uStack_e4 - 1 >> 5" (binary_expression "uStack_e4 - 1" identifier - number_literal) >> number_literal) )) - identifier) )))) ;) (expression_statement "iStack_110 = (int)puStack_11c + 1;" (assignment_expression "iStack_110 = (int)puStack_11c + 1" identifier = (binary_expression "(int)puStack_11c + 1" (cast_expression "(int)puStack_11c" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal)) ;) (expression_statement "uStack_e4 = uVar14;" (assignment_expression "uStack_e4 = uVar14" identifier = identifier) ;) (expression_statement "iStack_dc = iVar18;" (assignment_expression "iStack_dc = iVar18" identifier = identifier) ;) (if_statement "if (iVar13 != 0) {\n    *(int *)(puVar17 + -4) = iVar13;\n    *(int *)(puVar17 + -8) = iStack_dc;\n    *(int **)(puVar17 + -0xc) = piVar11;\n    *(int **)(puVar17 + -0x10) = piVar11;\n    pmStack_d8 = (mp_ptr)iVar13;\n    *(undefined4 *)(puVar17 + -0x14) = 0x4ee32;\n    iVar13 = __gmpn_sub_n();\n    if ((iVar13 != 0) && (pmVar5 != pmStack_d8)) {\n      iVar13 = piStack_d4[(int)pmStack_d8];\n      piStack_d4[(int)pmStack_d8] = iVar13 + -1;\n      if ((iVar13 == 0) && ((int)pmStack_d8 + 1 < (int)pmVar5)) {\n        iVar18 = (int)pmStack_d8 + 2;\n        iVar13 = piStack_d4[(int)pmStack_d8 + 1];\n        piStack_d4[(int)pmStack_d8 + 1] = iVar13 + -1;\n        for (; (iVar13 == 0 && (pmVar5 != (mp_ptr)iVar18)); iVar18 = iVar18 + 1) {\n          iVar13 = piStack_d4[iVar18];\n          piStack_d4[iVar18] = iVar13 + -1;\n        }\n      }\n    }\n  }" if (parenthesized_expression "(iVar13 != 0)" ( (binary_expression "iVar13 != 0" identifier != number_literal) )) (compound_statement "{\n    *(int *)(puVar17 + -4) = iVar13;\n    *(int *)(puVar17 + -8) = iStack_dc;\n    *(int **)(puVar17 + -0xc) = piVar11;\n    *(int **)(puVar17 + -0x10) = piVar11;\n    pmStack_d8 = (mp_ptr)iVar13;\n    *(undefined4 *)(puVar17 + -0x14) = 0x4ee32;\n    iVar13 = __gmpn_sub_n();\n    if ((iVar13 != 0) && (pmVar5 != pmStack_d8)) {\n      iVar13 = piStack_d4[(int)pmStack_d8];\n      piStack_d4[(int)pmStack_d8] = iVar13 + -1;\n      if ((iVar13 == 0) && ((int)pmStack_d8 + 1 < (int)pmVar5)) {\n        iVar18 = (int)pmStack_d8 + 2;\n        iVar13 = piStack_d4[(int)pmStack_d8 + 1];\n        piStack_d4[(int)pmStack_d8 + 1] = iVar13 + -1;\n        for (; (iVar13 == 0 && (pmVar5 != (mp_ptr)iVar18)); iVar18 = iVar18 + 1) {\n          iVar13 = piStack_d4[iVar18];\n          piStack_d4[iVar18] = iVar13 + -1;\n        }\n      }\n    }\n  }" { (expression_statement "*(int *)(puVar17 + -4) = iVar13;" (assignment_expression "*(int *)(puVar17 + -4) = iVar13" (pointer_expression "*(int *)(puVar17 + -4)" * (cast_expression "(int *)(puVar17 + -4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar17 + -4)" ( (binary_expression "puVar17 + -4" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(puVar17 + -8) = iStack_dc;" (assignment_expression "*(int *)(puVar17 + -8) = iStack_dc" (pointer_expression "*(int *)(puVar17 + -8)" * (cast_expression "(int *)(puVar17 + -8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar17 + -8)" ( (binary_expression "puVar17 + -8" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int **)(puVar17 + -0xc) = piVar11;" (assignment_expression "*(int **)(puVar17 + -0xc) = piVar11" (pointer_expression "*(int **)(puVar17 + -0xc)" * (cast_expression "(int **)(puVar17 + -0xc)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar17 + -0xc)" ( (binary_expression "puVar17 + -0xc" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int **)(puVar17 + -0x10) = piVar11;" (assignment_expression "*(int **)(puVar17 + -0x10) = piVar11" (pointer_expression "*(int **)(puVar17 + -0x10)" * (cast_expression "(int **)(puVar17 + -0x10)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar17 + -0x10)" ( (binary_expression "puVar17 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "pmStack_d8 = (mp_ptr)iVar13;" (assignment_expression "pmStack_d8 = (mp_ptr)iVar13" identifier = (cast_expression "(mp_ptr)iVar13" ( (type_descriptor "mp_ptr" type_identifier) ) identifier)) ;) (expression_statement "*(undefined4 *)(puVar17 + -0x14) = 0x4ee32;" (assignment_expression "*(undefined4 *)(puVar17 + -0x14) = 0x4ee32" (pointer_expression "*(undefined4 *)(puVar17 + -0x14)" * (cast_expression "(undefined4 *)(puVar17 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar17 + -0x14)" ( (binary_expression "puVar17 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "iVar13 = __gmpn_sub_n();" (assignment_expression "iVar13 = __gmpn_sub_n()" identifier = (call_expression "__gmpn_sub_n()" identifier (argument_list "()" ( )))) ;) (if_statement "if ((iVar13 != 0) && (pmVar5 != pmStack_d8)) {\n      iVar13 = piStack_d4[(int)pmStack_d8];\n      piStack_d4[(int)pmStack_d8] = iVar13 + -1;\n      if ((iVar13 == 0) && ((int)pmStack_d8 + 1 < (int)pmVar5)) {\n        iVar18 = (int)pmStack_d8 + 2;\n        iVar13 = piStack_d4[(int)pmStack_d8 + 1];\n        piStack_d4[(int)pmStack_d8 + 1] = iVar13 + -1;\n        for (; (iVar13 == 0 && (pmVar5 != (mp_ptr)iVar18)); iVar18 = iVar18 + 1) {\n          iVar13 = piStack_d4[iVar18];\n          piStack_d4[iVar18] = iVar13 + -1;\n        }\n      }\n    }" if (parenthesized_expression "((iVar13 != 0) && (pmVar5 != pmStack_d8))" ( (binary_expression "(iVar13 != 0) && (pmVar5 != pmStack_d8)" (parenthesized_expression "(iVar13 != 0)" ( (binary_expression "iVar13 != 0" identifier != number_literal) )) && (parenthesized_expression "(pmVar5 != pmStack_d8)" ( (binary_expression "pmVar5 != pmStack_d8" identifier != identifier) ))) )) (compound_statement "{\n      iVar13 = piStack_d4[(int)pmStack_d8];\n      piStack_d4[(int)pmStack_d8] = iVar13 + -1;\n      if ((iVar13 == 0) && ((int)pmStack_d8 + 1 < (int)pmVar5)) {\n        iVar18 = (int)pmStack_d8 + 2;\n        iVar13 = piStack_d4[(int)pmStack_d8 + 1];\n        piStack_d4[(int)pmStack_d8 + 1] = iVar13 + -1;\n        for (; (iVar13 == 0 && (pmVar5 != (mp_ptr)iVar18)); iVar18 = iVar18 + 1) {\n          iVar13 = piStack_d4[iVar18];\n          piStack_d4[iVar18] = iVar13 + -1;\n        }\n      }\n    }" { (expression_statement "iVar13 = piStack_d4[(int)pmStack_d8];" (assignment_expression "iVar13 = piStack_d4[(int)pmStack_d8]" identifier = (subscript_expression "piStack_d4[(int)pmStack_d8]" identifier [ (cast_expression "(int)pmStack_d8" ( (type_descriptor "int" primitive_type) ) identifier) ])) ;) (expression_statement "piStack_d4[(int)pmStack_d8] = iVar13 + -1;" (assignment_expression "piStack_d4[(int)pmStack_d8] = iVar13 + -1" (subscript_expression "piStack_d4[(int)pmStack_d8]" identifier [ (cast_expression "(int)pmStack_d8" ( (type_descriptor "int" primitive_type) ) identifier) ]) = (binary_expression "iVar13 + -1" identifier + number_literal)) ;) (if_statement "if ((iVar13 == 0) && ((int)pmStack_d8 + 1 < (int)pmVar5)) {\n        iVar18 = (int)pmStack_d8 + 2;\n        iVar13 = piStack_d4[(int)pmStack_d8 + 1];\n        piStack_d4[(int)pmStack_d8 + 1] = iVar13 + -1;\n        for (; (iVar13 == 0 && (pmVar5 != (mp_ptr)iVar18)); iVar18 = iVar18 + 1) {\n          iVar13 = piStack_d4[iVar18];\n          piStack_d4[iVar18] = iVar13 + -1;\n        }\n      }" if (parenthesized_expression "((iVar13 == 0) && ((int)pmStack_d8 + 1 < (int)pmVar5))" ( (binary_expression "(iVar13 == 0) && ((int)pmStack_d8 + 1 < (int)pmVar5)" (parenthesized_expression "(iVar13 == 0)" ( (binary_expression "iVar13 == 0" identifier == number_literal) )) && (parenthesized_expression "((int)pmStack_d8 + 1 < (int)pmVar5)" ( (binary_expression "(int)pmStack_d8 + 1 < (int)pmVar5" (binary_expression "(int)pmStack_d8 + 1" (cast_expression "(int)pmStack_d8" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) < (cast_expression "(int)pmVar5" ( (type_descriptor "int" primitive_type) ) identifier)) ))) )) (compound_statement "{\n        iVar18 = (int)pmStack_d8 + 2;\n        iVar13 = piStack_d4[(int)pmStack_d8 + 1];\n        piStack_d4[(int)pmStack_d8 + 1] = iVar13 + -1;\n        for (; (iVar13 == 0 && (pmVar5 != (mp_ptr)iVar18)); iVar18 = iVar18 + 1) {\n          iVar13 = piStack_d4[iVar18];\n          piStack_d4[iVar18] = iVar13 + -1;\n        }\n      }" { (expression_statement "iVar18 = (int)pmStack_d8 + 2;" (assignment_expression "iVar18 = (int)pmStack_d8 + 2" identifier = (binary_expression "(int)pmStack_d8 + 2" (cast_expression "(int)pmStack_d8" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal)) ;) (expression_statement "iVar13 = piStack_d4[(int)pmStack_d8 + 1];" (assignment_expression "iVar13 = piStack_d4[(int)pmStack_d8 + 1]" identifier = (subscript_expression "piStack_d4[(int)pmStack_d8 + 1]" identifier [ (binary_expression "(int)pmStack_d8 + 1" (cast_expression "(int)pmStack_d8" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ])) ;) (expression_statement "piStack_d4[(int)pmStack_d8 + 1] = iVar13 + -1;" (assignment_expression "piStack_d4[(int)pmStack_d8 + 1] = iVar13 + -1" (subscript_expression "piStack_d4[(int)pmStack_d8 + 1]" identifier [ (binary_expression "(int)pmStack_d8 + 1" (cast_expression "(int)pmStack_d8" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ]) = (binary_expression "iVar13 + -1" identifier + number_literal)) ;) (for_statement "for (; (iVar13 == 0 && (pmVar5 != (mp_ptr)iVar18)); iVar18 = iVar18 + 1) {\n          iVar13 = piStack_d4[iVar18];\n          piStack_d4[iVar18] = iVar13 + -1;\n        }" for ( ; (parenthesized_expression "(iVar13 == 0 && (pmVar5 != (mp_ptr)iVar18))" ( (binary_expression "iVar13 == 0 && (pmVar5 != (mp_ptr)iVar18)" (binary_expression "iVar13 == 0" identifier == number_literal) && (parenthesized_expression "(pmVar5 != (mp_ptr)iVar18)" ( (binary_expression "pmVar5 != (mp_ptr)iVar18" identifier != (cast_expression "(mp_ptr)iVar18" ( (type_descriptor "mp_ptr" type_identifier) ) identifier)) ))) )) ; (assignment_expression "iVar18 = iVar18 + 1" identifier = (binary_expression "iVar18 + 1" identifier + number_literal)) ) (compound_statement "{\n          iVar13 = piStack_d4[iVar18];\n          piStack_d4[iVar18] = iVar13 + -1;\n        }" { (expression_statement "iVar13 = piStack_d4[iVar18];" (assignment_expression "iVar13 = piStack_d4[iVar18]" identifier = (subscript_expression "piStack_d4[iVar18]" identifier [ identifier ])) ;) (expression_statement "piStack_d4[iVar18] = iVar13 + -1;" (assignment_expression "piStack_d4[iVar18] = iVar13 + -1" (subscript_expression "piStack_d4[iVar18]" identifier [ identifier ]) = (binary_expression "iVar13 + -1" identifier + number_literal)) ;) })) })) })) })) (expression_statement "piVar12 = piStack_d4;" (assignment_expression "piVar12 = piStack_d4" identifier = identifier) ;) (expression_statement "iVar18 = iStack_e0;" (assignment_expression "iVar18 = iStack_e0" identifier = identifier) ;) (expression_statement "iVar13 = piStack_d4[(int)pmVar5 + -1];" (assignment_expression "iVar13 = piStack_d4[(int)pmVar5 + -1]" identifier = (subscript_expression "piStack_d4[(int)pmVar5 + -1]" identifier [ (binary_expression "(int)pmVar5 + -1" (cast_expression "(int)pmVar5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ])) ;) (while_statement "while (iVar13 == 0) {\n    iVar13 = piStack_d4[(int)pmVar5 + -2];\n    pmVar5 = (mp_ptr)((int)pmVar5 + -1);\n  }" while (parenthesized_expression "(iVar13 == 0)" ( (binary_expression "iVar13 == 0" identifier == number_literal) )) (compound_statement "{\n    iVar13 = piStack_d4[(int)pmVar5 + -2];\n    pmVar5 = (mp_ptr)((int)pmVar5 + -1);\n  }" { (expression_statement "iVar13 = piStack_d4[(int)pmVar5 + -2];" (assignment_expression "iVar13 = piStack_d4[(int)pmVar5 + -2]" identifier = (subscript_expression "piStack_d4[(int)pmVar5 + -2]" identifier [ (binary_expression "(int)pmVar5 + -2" (cast_expression "(int)pmVar5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ])) ;) (expression_statement "pmVar5 = (mp_ptr)((int)pmVar5 + -1);" (assignment_expression "pmVar5 = (mp_ptr)((int)pmVar5 + -1)" identifier = (call_expression "(mp_ptr)((int)pmVar5 + -1)" (parenthesized_expression "(mp_ptr)" ( identifier )) (argument_list "((int)pmVar5 + -1)" ( (binary_expression "(int)pmVar5 + -1" (cast_expression "(int)pmVar5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) })) (expression_statement "uStack_100 = (int)pmStack_f0 * 4;" (assignment_expression "uStack_100 = (int)pmStack_f0 * 4" identifier = (binary_expression "(int)pmStack_f0 * 4" (cast_expression "(int)pmStack_f0" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal)) ;) (expression_statement "puVar10 = (uint *)(piStack_d4 + (int)pmStack_f0);" (assignment_expression "puVar10 = (uint *)(piStack_d4 + (int)pmStack_f0)" identifier = (cast_expression "(uint *)(piStack_d4 + (int)pmStack_f0)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piStack_d4 + (int)pmStack_f0)" ( (binary_expression "piStack_d4 + (int)pmStack_f0" identifier + (cast_expression "(int)pmStack_f0" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) (expression_statement "pmStack_d8 = (mp_ptr)((int)pmStack_f0 + (int)pmVar5);" (assignment_expression "pmStack_d8 = (mp_ptr)((int)pmStack_f0 + (int)pmVar5)" identifier = (call_expression "(mp_ptr)((int)pmStack_f0 + (int)pmVar5)" (parenthesized_expression "(mp_ptr)" ( identifier )) (argument_list "((int)pmStack_f0 + (int)pmVar5)" ( (binary_expression "(int)pmStack_f0 + (int)pmVar5" (cast_expression "(int)pmStack_f0" ( (type_descriptor "int" primitive_type) ) identifier) + (cast_expression "(int)pmVar5" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) (expression_statement "uVar14 = uStack_e8 & 0x1f;" (assignment_expression "uVar14 = uStack_e8 & 0x1f" identifier = (binary_expression "uStack_e8 & 0x1f" identifier & number_literal)) ;) (expression_statement "uStack_130 = uStack_e4;" (assignment_expression "uStack_130 = uStack_e4" identifier = identifier) ;) (expression_statement "puStack_12c = puVar10;" (assignment_expression "puStack_12c = puVar10" identifier = identifier) ;) (if_statement "if (uVar14 == 0) {\n    uStack_e4 = uVar14;\n    *(mp_ptr *)(puVar17 + -8) = pmVar5;\n    *(int **)(puVar17 + -0xc) = piStack_d4;\n    *(uint **)(puVar17 + -0x10) = puVar10;\n    pcVar3 = *(code **)(iVar18 + 0x24);\n    *(undefined4 *)(puVar17 + -0x14) = 0x4ed9a;\n    (*pcVar3)();\n  }\n  else {\n    uStack_e4 = uVar14;\n    *(uint *)(puVar17 + -4) = uVar14;\n    *(mp_ptr *)(puVar17 + -8) = pmVar5;\n    *(int **)(puVar17 + -0xc) = piVar12;\n    iVar13 = iStack_e0;\n    *(uint **)(puVar17 + -0x10) = puVar10;\n    pcVar3 = *(code **)(iVar13 + 0x38);\n    *(undefined4 *)(puVar17 + -0x14) = 0x4ec66;\n    iVar13 = (*pcVar3)();\n    if (iVar13 != 0) {\n      piStack_d4[(int)pmStack_d8] = iVar13;\n      pmStack_d8 = (mp_ptr)((int)pmStack_d8 + 1);\n    }\n  }" if (parenthesized_expression "(uVar14 == 0)" ( (binary_expression "uVar14 == 0" identifier == number_literal) )) (compound_statement "{\n    uStack_e4 = uVar14;\n    *(mp_ptr *)(puVar17 + -8) = pmVar5;\n    *(int **)(puVar17 + -0xc) = piStack_d4;\n    *(uint **)(puVar17 + -0x10) = puVar10;\n    pcVar3 = *(code **)(iVar18 + 0x24);\n    *(undefined4 *)(puVar17 + -0x14) = 0x4ed9a;\n    (*pcVar3)();\n  }" { (expression_statement "uStack_e4 = uVar14;" (assignment_expression "uStack_e4 = uVar14" identifier = identifier) ;) (expression_statement "*(mp_ptr *)(puVar17 + -8) = pmVar5;" (assignment_expression "*(mp_ptr *)(puVar17 + -8) = pmVar5" (pointer_expression "*(mp_ptr *)(puVar17 + -8)" * (cast_expression "(mp_ptr *)(puVar17 + -8)" ( (type_descriptor "mp_ptr *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar17 + -8)" ( (binary_expression "puVar17 + -8" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int **)(puVar17 + -0xc) = piStack_d4;" (assignment_expression "*(int **)(puVar17 + -0xc) = piStack_d4" (pointer_expression "*(int **)(puVar17 + -0xc)" * (cast_expression "(int **)(puVar17 + -0xc)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar17 + -0xc)" ( (binary_expression "puVar17 + -0xc" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(uint **)(puVar17 + -0x10) = puVar10;" (assignment_expression "*(uint **)(puVar17 + -0x10) = puVar10" (pointer_expression "*(uint **)(puVar17 + -0x10)" * (cast_expression "(uint **)(puVar17 + -0x10)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar17 + -0x10)" ( (binary_expression "puVar17 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "pcVar3 = *(code **)(iVar18 + 0x24);" (assignment_expression "pcVar3 = *(code **)(iVar18 + 0x24)" identifier = (pointer_expression "*(code **)(iVar18 + 0x24)" * (cast_expression "(code **)(iVar18 + 0x24)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar18 + 0x24)" ( (binary_expression "iVar18 + 0x24" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar17 + -0x14) = 0x4ed9a;" (assignment_expression "*(undefined4 *)(puVar17 + -0x14) = 0x4ed9a" (pointer_expression "*(undefined4 *)(puVar17 + -0x14)" * (cast_expression "(undefined4 *)(puVar17 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar17 + -0x14)" ( (binary_expression "puVar17 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "(*pcVar3)();" (call_expression "(*pcVar3)()" (parenthesized_expression "(*pcVar3)" ( (pointer_expression "*pcVar3" * identifier) )) (argument_list "()" ( ))) ;) }) (else_clause "else {\n    uStack_e4 = uVar14;\n    *(uint *)(puVar17 + -4) = uVar14;\n    *(mp_ptr *)(puVar17 + -8) = pmVar5;\n    *(int **)(puVar17 + -0xc) = piVar12;\n    iVar13 = iStack_e0;\n    *(uint **)(puVar17 + -0x10) = puVar10;\n    pcVar3 = *(code **)(iVar13 + 0x38);\n    *(undefined4 *)(puVar17 + -0x14) = 0x4ec66;\n    iVar13 = (*pcVar3)();\n    if (iVar13 != 0) {\n      piStack_d4[(int)pmStack_d8] = iVar13;\n      pmStack_d8 = (mp_ptr)((int)pmStack_d8 + 1);\n    }\n  }" else (compound_statement "{\n    uStack_e4 = uVar14;\n    *(uint *)(puVar17 + -4) = uVar14;\n    *(mp_ptr *)(puVar17 + -8) = pmVar5;\n    *(int **)(puVar17 + -0xc) = piVar12;\n    iVar13 = iStack_e0;\n    *(uint **)(puVar17 + -0x10) = puVar10;\n    pcVar3 = *(code **)(iVar13 + 0x38);\n    *(undefined4 *)(puVar17 + -0x14) = 0x4ec66;\n    iVar13 = (*pcVar3)();\n    if (iVar13 != 0) {\n      piStack_d4[(int)pmStack_d8] = iVar13;\n      pmStack_d8 = (mp_ptr)((int)pmStack_d8 + 1);\n    }\n  }" { (expression_statement "uStack_e4 = uVar14;" (assignment_expression "uStack_e4 = uVar14" identifier = identifier) ;) (expression_statement "*(uint *)(puVar17 + -4) = uVar14;" (assignment_expression "*(uint *)(puVar17 + -4) = uVar14" (pointer_expression "*(uint *)(puVar17 + -4)" * (cast_expression "(uint *)(puVar17 + -4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar17 + -4)" ( (binary_expression "puVar17 + -4" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(mp_ptr *)(puVar17 + -8) = pmVar5;" (assignment_expression "*(mp_ptr *)(puVar17 + -8) = pmVar5" (pointer_expression "*(mp_ptr *)(puVar17 + -8)" * (cast_expression "(mp_ptr *)(puVar17 + -8)" ( (type_descriptor "mp_ptr *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar17 + -8)" ( (binary_expression "puVar17 + -8" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int **)(puVar17 + -0xc) = piVar12;" (assignment_expression "*(int **)(puVar17 + -0xc) = piVar12" (pointer_expression "*(int **)(puVar17 + -0xc)" * (cast_expression "(int **)(puVar17 + -0xc)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar17 + -0xc)" ( (binary_expression "puVar17 + -0xc" identifier + number_literal) )))) = identifier) ;) (expression_statement "iVar13 = iStack_e0;" (assignment_expression "iVar13 = iStack_e0" identifier = identifier) ;) (expression_statement "*(uint **)(puVar17 + -0x10) = puVar10;" (assignment_expression "*(uint **)(puVar17 + -0x10) = puVar10" (pointer_expression "*(uint **)(puVar17 + -0x10)" * (cast_expression "(uint **)(puVar17 + -0x10)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar17 + -0x10)" ( (binary_expression "puVar17 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "pcVar3 = *(code **)(iVar13 + 0x38);" (assignment_expression "pcVar3 = *(code **)(iVar13 + 0x38)" identifier = (pointer_expression "*(code **)(iVar13 + 0x38)" * (cast_expression "(code **)(iVar13 + 0x38)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar13 + 0x38)" ( (binary_expression "iVar13 + 0x38" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar17 + -0x14) = 0x4ec66;" (assignment_expression "*(undefined4 *)(puVar17 + -0x14) = 0x4ec66" (pointer_expression "*(undefined4 *)(puVar17 + -0x14)" * (cast_expression "(undefined4 *)(puVar17 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar17 + -0x14)" ( (binary_expression "puVar17 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "iVar13 = (*pcVar3)();" (assignment_expression "iVar13 = (*pcVar3)()" identifier = (call_expression "(*pcVar3)()" (parenthesized_expression "(*pcVar3)" ( (pointer_expression "*pcVar3" * identifier) )) (argument_list "()" ( )))) ;) (if_statement "if (iVar13 != 0) {\n      piStack_d4[(int)pmStack_d8] = iVar13;\n      pmStack_d8 = (mp_ptr)((int)pmStack_d8 + 1);\n    }" if (parenthesized_expression "(iVar13 != 0)" ( (binary_expression "iVar13 != 0" identifier != number_literal) )) (compound_statement "{\n      piStack_d4[(int)pmStack_d8] = iVar13;\n      pmStack_d8 = (mp_ptr)((int)pmStack_d8 + 1);\n    }" { (expression_statement "piStack_d4[(int)pmStack_d8] = iVar13;" (assignment_expression "piStack_d4[(int)pmStack_d8] = iVar13" (subscript_expression "piStack_d4[(int)pmStack_d8]" identifier [ (cast_expression "(int)pmStack_d8" ( (type_descriptor "int" primitive_type) ) identifier) ]) = identifier) ;) (expression_statement "pmStack_d8 = (mp_ptr)((int)pmStack_d8 + 1);" (assignment_expression "pmStack_d8 = (mp_ptr)((int)pmStack_d8 + 1)" identifier = (call_expression "(mp_ptr)((int)pmStack_d8 + 1)" (parenthesized_expression "(mp_ptr)" ( identifier )) (argument_list "((int)pmStack_d8 + 1)" ( (binary_expression "(int)pmStack_d8 + 1" (cast_expression "(int)pmStack_d8" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) })) }))) (expression_statement "uVar14 = *puStack_12c;" (assignment_expression "uVar14 = *puStack_12c" identifier = (pointer_expression "*puStack_12c" * identifier)) ;) (expression_statement "uVar6 = uStack_130;" (assignment_expression "uVar6 = uStack_130" identifier = identifier) ;) (expression_statement "puVar10 = puStack_12c;" (assignment_expression "puVar10 = puStack_12c" identifier = identifier) ;) (expression_statement "puVar15 = puStack_11c;" (assignment_expression "puVar15 = puStack_11c" identifier = identifier) ;) (if_statement "if ((int)pmStack_f0 < (int)puStack_11c) {\n    iStack_114 = *(int *)((int)piStack_d4 + uStack_100 + 4);\n  }" if (parenthesized_expression "((int)pmStack_f0 < (int)puStack_11c)" ( (binary_expression "(int)pmStack_f0 < (int)puStack_11c" (cast_expression "(int)pmStack_f0" ( (type_descriptor "int" primitive_type) ) identifier) < (cast_expression "(int)puStack_11c" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n    iStack_114 = *(int *)((int)piStack_d4 + uStack_100 + 4);\n  }" { (expression_statement "iStack_114 = *(int *)((int)piStack_d4 + uStack_100 + 4);" (assignment_expression "iStack_114 = *(int *)((int)piStack_d4 + uStack_100 + 4)" identifier = (pointer_expression "*(int *)((int)piStack_d4 + uStack_100 + 4)" * (cast_expression "(int *)((int)piStack_d4 + uStack_100 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piStack_d4 + uStack_100 + 4)" ( (binary_expression "(int)piStack_d4 + uStack_100 + 4" (binary_expression "(int)piStack_d4 + uStack_100" (cast_expression "(int)piStack_d4" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) + number_literal) ))))) ;) })) (labeled_statement "LAB_0004e83d:\n  piVar12 = local_f8 + uVar6;" statement_identifier : (expression_statement "piVar12 = local_f8 + uVar6;" (assignment_expression "piVar12 = local_f8 + uVar6" identifier = (binary_expression "local_f8 + uVar6" identifier + identifier)) ;)) (expression_statement "puStack_11c = puVar10;" (assignment_expression "puStack_11c = puVar10" identifier = identifier) ;) (if_statement "if ((uStack_f4 & 0x1f) == 0) {\n    *(int *)(puVar17 + -8) = iStack_110;\n    *(int **)(puVar17 + -0xc) = piVar12;\n    *(int **)(puVar17 + -0x10) = piStack_d4;\n    pcVar3 = *(code **)(iStack_e0 + 0x28);\n    *(undefined4 *)(puVar17 + -0x14) = 0x4ed09;\n    (*pcVar3)();\n  }\n  else {\n    *(uint *)(puVar17 + -4) = uStack_f4 & 0x1f;\n    *(int *)(puVar17 + -8) = iStack_110;\n    *(int **)(puVar17 + -0xc) = piVar12;\n    iVar13 = iStack_e0;\n    *(int **)(puVar17 + -0x10) = piStack_d4;\n    pcVar3 = *(code **)(iVar13 + 0x80);\n    *(undefined4 *)(puVar17 + -0x14) = 0x4e875;\n    (*pcVar3)();\n  }" if (parenthesized_expression "((uStack_f4 & 0x1f) == 0)" ( (binary_expression "(uStack_f4 & 0x1f) == 0" (parenthesized_expression "(uStack_f4 & 0x1f)" ( (binary_expression "uStack_f4 & 0x1f" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n    *(int *)(puVar17 + -8) = iStack_110;\n    *(int **)(puVar17 + -0xc) = piVar12;\n    *(int **)(puVar17 + -0x10) = piStack_d4;\n    pcVar3 = *(code **)(iStack_e0 + 0x28);\n    *(undefined4 *)(puVar17 + -0x14) = 0x4ed09;\n    (*pcVar3)();\n  }" { (expression_statement "*(int *)(puVar17 + -8) = iStack_110;" (assignment_expression "*(int *)(puVar17 + -8) = iStack_110" (pointer_expression "*(int *)(puVar17 + -8)" * (cast_expression "(int *)(puVar17 + -8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar17 + -8)" ( (binary_expression "puVar17 + -8" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int **)(puVar17 + -0xc) = piVar12;" (assignment_expression "*(int **)(puVar17 + -0xc) = piVar12" (pointer_expression "*(int **)(puVar17 + -0xc)" * (cast_expression "(int **)(puVar17 + -0xc)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar17 + -0xc)" ( (binary_expression "puVar17 + -0xc" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int **)(puVar17 + -0x10) = piStack_d4;" (assignment_expression "*(int **)(puVar17 + -0x10) = piStack_d4" (pointer_expression "*(int **)(puVar17 + -0x10)" * (cast_expression "(int **)(puVar17 + -0x10)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar17 + -0x10)" ( (binary_expression "puVar17 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "pcVar3 = *(code **)(iStack_e0 + 0x28);" (assignment_expression "pcVar3 = *(code **)(iStack_e0 + 0x28)" identifier = (pointer_expression "*(code **)(iStack_e0 + 0x28)" * (cast_expression "(code **)(iStack_e0 + 0x28)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iStack_e0 + 0x28)" ( (binary_expression "iStack_e0 + 0x28" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar17 + -0x14) = 0x4ed09;" (assignment_expression "*(undefined4 *)(puVar17 + -0x14) = 0x4ed09" (pointer_expression "*(undefined4 *)(puVar17 + -0x14)" * (cast_expression "(undefined4 *)(puVar17 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar17 + -0x14)" ( (binary_expression "puVar17 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "(*pcVar3)();" (call_expression "(*pcVar3)()" (parenthesized_expression "(*pcVar3)" ( (pointer_expression "*pcVar3" * identifier) )) (argument_list "()" ( ))) ;) }) (else_clause "else {\n    *(uint *)(puVar17 + -4) = uStack_f4 & 0x1f;\n    *(int *)(puVar17 + -8) = iStack_110;\n    *(int **)(puVar17 + -0xc) = piVar12;\n    iVar13 = iStack_e0;\n    *(int **)(puVar17 + -0x10) = piStack_d4;\n    pcVar3 = *(code **)(iVar13 + 0x80);\n    *(undefined4 *)(puVar17 + -0x14) = 0x4e875;\n    (*pcVar3)();\n  }" else (compound_statement "{\n    *(uint *)(puVar17 + -4) = uStack_f4 & 0x1f;\n    *(int *)(puVar17 + -8) = iStack_110;\n    *(int **)(puVar17 + -0xc) = piVar12;\n    iVar13 = iStack_e0;\n    *(int **)(puVar17 + -0x10) = piStack_d4;\n    pcVar3 = *(code **)(iVar13 + 0x80);\n    *(undefined4 *)(puVar17 + -0x14) = 0x4e875;\n    (*pcVar3)();\n  }" { (expression_statement "*(uint *)(puVar17 + -4) = uStack_f4 & 0x1f;" (assignment_expression "*(uint *)(puVar17 + -4) = uStack_f4 & 0x1f" (pointer_expression "*(uint *)(puVar17 + -4)" * (cast_expression "(uint *)(puVar17 + -4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar17 + -4)" ( (binary_expression "puVar17 + -4" identifier + number_literal) )))) = (binary_expression "uStack_f4 & 0x1f" identifier & number_literal)) ;) (expression_statement "*(int *)(puVar17 + -8) = iStack_110;" (assignment_expression "*(int *)(puVar17 + -8) = iStack_110" (pointer_expression "*(int *)(puVar17 + -8)" * (cast_expression "(int *)(puVar17 + -8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar17 + -8)" ( (binary_expression "puVar17 + -8" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int **)(puVar17 + -0xc) = piVar12;" (assignment_expression "*(int **)(puVar17 + -0xc) = piVar12" (pointer_expression "*(int **)(puVar17 + -0xc)" * (cast_expression "(int **)(puVar17 + -0xc)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar17 + -0xc)" ( (binary_expression "puVar17 + -0xc" identifier + number_literal) )))) = identifier) ;) (expression_statement "iVar13 = iStack_e0;" (assignment_expression "iVar13 = iStack_e0" identifier = identifier) ;) (expression_statement "*(int **)(puVar17 + -0x10) = piStack_d4;" (assignment_expression "*(int **)(puVar17 + -0x10) = piStack_d4" (pointer_expression "*(int **)(puVar17 + -0x10)" * (cast_expression "(int **)(puVar17 + -0x10)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar17 + -0x10)" ( (binary_expression "puVar17 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "pcVar3 = *(code **)(iVar13 + 0x80);" (assignment_expression "pcVar3 = *(code **)(iVar13 + 0x80)" identifier = (pointer_expression "*(code **)(iVar13 + 0x80)" * (cast_expression "(code **)(iVar13 + 0x80)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar13 + 0x80)" ( (binary_expression "iVar13 + 0x80" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar17 + -0x14) = 0x4e875;" (assignment_expression "*(undefined4 *)(puVar17 + -0x14) = 0x4e875" (pointer_expression "*(undefined4 *)(puVar17 + -0x14)" * (cast_expression "(undefined4 *)(puVar17 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar17 + -0x14)" ( (binary_expression "puVar17 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "(*pcVar3)();" (call_expression "(*pcVar3)()" (parenthesized_expression "(*pcVar3)" ( (pointer_expression "*pcVar3" * identifier) )) (argument_list "()" ( ))) ;) }))) (expression_statement "iVar18 = iStack_d0;" (assignment_expression "iVar18 = iStack_d0" identifier = identifier) ;) (expression_statement "iVar13 = iStack_108;" (assignment_expression "iVar13 = iStack_108" identifier = identifier) ;) (expression_statement "*puStack_11c = uVar14 | ~(-1 << ((byte)uStack_e4 & 0x1f)) & *puStack_11c;" (assignment_expression "*puStack_11c = uVar14 | ~(-1 << ((byte)uStack_e4 & 0x1f)) & *puStack_11c" (pointer_expression "*puStack_11c" * identifier) = (binary_expression "uVar14 | ~(-1 << ((byte)uStack_e4 & 0x1f)) & *puStack_11c" identifier | (binary_expression "~(-1 << ((byte)uStack_e4 & 0x1f)) & *puStack_11c" (unary_expression "~(-1 << ((byte)uStack_e4 & 0x1f))" ~ (parenthesized_expression "(-1 << ((byte)uStack_e4 & 0x1f))" ( (binary_expression "-1 << ((byte)uStack_e4 & 0x1f)" number_literal << (parenthesized_expression "((byte)uStack_e4 & 0x1f)" ( (binary_expression "(byte)uStack_e4 & 0x1f" (cast_expression "(byte)uStack_e4" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) ))) ))) & (pointer_expression "*puStack_11c" * identifier)))) ;) (if_statement "if ((int)pmStack_f0 < (int)puVar15) {\n    piStack_d4[(int)pmStack_f0 + 1] = iStack_114;\n  }" if (parenthesized_expression "((int)pmStack_f0 < (int)puVar15)" ( (binary_expression "(int)pmStack_f0 < (int)puVar15" (cast_expression "(int)pmStack_f0" ( (type_descriptor "int" primitive_type) ) identifier) < (cast_expression "(int)puVar15" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n    piStack_d4[(int)pmStack_f0 + 1] = iStack_114;\n  }" { (expression_statement "piStack_d4[(int)pmStack_f0 + 1] = iStack_114;" (assignment_expression "piStack_d4[(int)pmStack_f0 + 1] = iStack_114" (subscript_expression "piStack_d4[(int)pmStack_f0 + 1]" identifier [ (binary_expression "(int)pmStack_f0 + 1" (cast_expression "(int)pmStack_f0" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ]) = identifier) ;) })) (expression_statement "*(mp_ptr *)(puVar17 + -4) = remp;" (assignment_expression "*(mp_ptr *)(puVar17 + -4) = remp" (pointer_expression "*(mp_ptr *)(puVar17 + -4)" * (cast_expression "(mp_ptr *)(puVar17 + -4)" ( (type_descriptor "mp_ptr *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar17 + -4)" ( (binary_expression "puVar17 + -4" identifier + number_literal) )))) = identifier) ;) (expression_statement "iVar4 = iStack_e0;" (assignment_expression "iVar4 = iStack_e0" identifier = identifier) ;) (expression_statement "*(int *)(puVar17 + -8) = iVar13;" (assignment_expression "*(int *)(puVar17 + -8) = iVar13" (pointer_expression "*(int *)(puVar17 + -8)" * (cast_expression "(int *)(puVar17 + -8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar17 + -8)" ( (binary_expression "puVar17 + -8" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(puVar17 + -0xc) = iVar18;" (assignment_expression "*(int *)(puVar17 + -0xc) = iVar18" (pointer_expression "*(int *)(puVar17 + -0xc)" * (cast_expression "(int *)(puVar17 + -0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar17 + -0xc)" ( (binary_expression "puVar17 + -0xc" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(puVar17 + -0x10) = iVar18;" (assignment_expression "*(int *)(puVar17 + -0x10) = iVar18" (pointer_expression "*(int *)(puVar17 + -0x10)" * (cast_expression "(int *)(puVar17 + -0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar17 + -0x10)" ( (binary_expression "puVar17 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "pcVar3 = *(code **)(iVar4 + 100);" (assignment_expression "pcVar3 = *(code **)(iVar4 + 100)" identifier = (pointer_expression "*(code **)(iVar4 + 100)" * (cast_expression "(code **)(iVar4 + 100)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar4 + 100)" ( (binary_expression "iVar4 + 100" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar17 + -0x14) = 0x4e8c9;" (assignment_expression "*(undefined4 *)(puVar17 + -0x14) = 0x4e8c9" (pointer_expression "*(undefined4 *)(puVar17 + -0x14)" * (cast_expression "(undefined4 *)(puVar17 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar17 + -0x14)" ( (binary_expression "puVar17 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "iVar9 = (*pcVar3)();" (assignment_expression "iVar9 = (*pcVar3)()" identifier = (call_expression "(*pcVar3)()" (parenthesized_expression "(*pcVar3)" ( (pointer_expression "*pcVar3" * identifier) )) (argument_list "()" ( )))) ;) (expression_statement "puVar10 = local_c0;" (assignment_expression "puVar10 = local_c0" identifier = identifier) ;) (expression_statement "iVar4 = iStack_cc;" (assignment_expression "iVar4 = iStack_cc" identifier = identifier) ;) (expression_statement "*(int *)(iVar18 + iVar13 * 4) = iVar9;" (assignment_expression "*(int *)(iVar18 + iVar13 * 4) = iVar9" (pointer_expression "*(int *)(iVar18 + iVar13 * 4)" * (cast_expression "(int *)(iVar18 + iVar13 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar18 + iVar13 * 4)" ( (binary_expression "iVar18 + iVar13 * 4" identifier + (binary_expression "iVar13 * 4" identifier * number_literal)) )))) = identifier) ;) (expression_statement "iVar13 = (uint)(iVar9 != 0) + iVar13;" (assignment_expression "iVar13 = (uint)(iVar9 != 0) + iVar13" identifier = (binary_expression "(uint)(iVar9 != 0) + iVar13" (call_expression "(uint)(iVar9 != 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(iVar9 != 0)" ( (binary_expression "iVar9 != 0" identifier != number_literal) ))) + identifier)) ;) (expression_statement "puVar15 = (uint *)(uStack_100 + (int)local_c0);" (assignment_expression "puVar15 = (uint *)(uStack_100 + (int)local_c0)" identifier = (cast_expression "(uint *)(uStack_100 + (int)local_c0)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uStack_100 + (int)local_c0)" ( (binary_expression "uStack_100 + (int)local_c0" identifier + (cast_expression "(int)local_c0" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) (expression_statement "iVar18 = (int)pmStack_f0 + iStack_cc;" (assignment_expression "iVar18 = (int)pmStack_f0 + iStack_cc" identifier = (binary_expression "(int)pmStack_f0 + iStack_cc" (cast_expression "(int)pmStack_f0" ( (type_descriptor "int" primitive_type) ) identifier) + identifier)) ;) (if_statement "if (uStack_e4 == 0) {\n    *(int *)(puVar17 + -8) = iStack_cc;\n    *(uint **)(puVar17 + -0xc) = local_c0;\n    *(uint **)(puVar17 + -0x10) = puVar15;\n    pcVar3 = *(code **)(iStack_e0 + 0x24);\n    *(undefined4 *)(puVar17 + -0x14) = 0x4ecd9;\n    (*pcVar3)();\nLAB_0004ecdc:\n    iStack_cc = iVar18;\n  }\n  else {\n    *(uint *)(puVar17 + -4) = uStack_e4;\n    *(int *)(puVar17 + -8) = iVar4;\n    *(uint **)(puVar17 + -0xc) = puVar10;\n    *(uint **)(puVar17 + -0x10) = puVar15;\n    pcVar3 = *(code **)(iStack_e0 + 0x38);\n    *(undefined4 *)(puVar17 + -0x14) = 0x4e915;\n    uVar14 = (*pcVar3)();\n    if (uVar14 == 0) goto LAB_0004ecdc;\n    local_c0[iVar18] = uVar14;\n    iStack_cc = iVar18 + 1;\n  }" if (parenthesized_expression "(uStack_e4 == 0)" ( (binary_expression "uStack_e4 == 0" identifier == number_literal) )) (compound_statement "{\n    *(int *)(puVar17 + -8) = iStack_cc;\n    *(uint **)(puVar17 + -0xc) = local_c0;\n    *(uint **)(puVar17 + -0x10) = puVar15;\n    pcVar3 = *(code **)(iStack_e0 + 0x24);\n    *(undefined4 *)(puVar17 + -0x14) = 0x4ecd9;\n    (*pcVar3)();\nLAB_0004ecdc:\n    iStack_cc = iVar18;\n  }" { (expression_statement "*(int *)(puVar17 + -8) = iStack_cc;" (assignment_expression "*(int *)(puVar17 + -8) = iStack_cc" (pointer_expression "*(int *)(puVar17 + -8)" * (cast_expression "(int *)(puVar17 + -8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar17 + -8)" ( (binary_expression "puVar17 + -8" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(uint **)(puVar17 + -0xc) = local_c0;" (assignment_expression "*(uint **)(puVar17 + -0xc) = local_c0" (pointer_expression "*(uint **)(puVar17 + -0xc)" * (cast_expression "(uint **)(puVar17 + -0xc)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar17 + -0xc)" ( (binary_expression "puVar17 + -0xc" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(uint **)(puVar17 + -0x10) = puVar15;" (assignment_expression "*(uint **)(puVar17 + -0x10) = puVar15" (pointer_expression "*(uint **)(puVar17 + -0x10)" * (cast_expression "(uint **)(puVar17 + -0x10)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar17 + -0x10)" ( (binary_expression "puVar17 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "pcVar3 = *(code **)(iStack_e0 + 0x24);" (assignment_expression "pcVar3 = *(code **)(iStack_e0 + 0x24)" identifier = (pointer_expression "*(code **)(iStack_e0 + 0x24)" * (cast_expression "(code **)(iStack_e0 + 0x24)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iStack_e0 + 0x24)" ( (binary_expression "iStack_e0 + 0x24" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar17 + -0x14) = 0x4ecd9;" (assignment_expression "*(undefined4 *)(puVar17 + -0x14) = 0x4ecd9" (pointer_expression "*(undefined4 *)(puVar17 + -0x14)" * (cast_expression "(undefined4 *)(puVar17 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar17 + -0x14)" ( (binary_expression "puVar17 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "(*pcVar3)();" (call_expression "(*pcVar3)()" (parenthesized_expression "(*pcVar3)" ( (pointer_expression "*pcVar3" * identifier) )) (argument_list "()" ( ))) ;) (labeled_statement "LAB_0004ecdc:\n    iStack_cc = iVar18;" statement_identifier : (expression_statement "iStack_cc = iVar18;" (assignment_expression "iStack_cc = iVar18" identifier = identifier) ;)) }) (else_clause "else {\n    *(uint *)(puVar17 + -4) = uStack_e4;\n    *(int *)(puVar17 + -8) = iVar4;\n    *(uint **)(puVar17 + -0xc) = puVar10;\n    *(uint **)(puVar17 + -0x10) = puVar15;\n    pcVar3 = *(code **)(iStack_e0 + 0x38);\n    *(undefined4 *)(puVar17 + -0x14) = 0x4e915;\n    uVar14 = (*pcVar3)();\n    if (uVar14 == 0) goto LAB_0004ecdc;\n    local_c0[iVar18] = uVar14;\n    iStack_cc = iVar18 + 1;\n  }" else (compound_statement "{\n    *(uint *)(puVar17 + -4) = uStack_e4;\n    *(int *)(puVar17 + -8) = iVar4;\n    *(uint **)(puVar17 + -0xc) = puVar10;\n    *(uint **)(puVar17 + -0x10) = puVar15;\n    pcVar3 = *(code **)(iStack_e0 + 0x38);\n    *(undefined4 *)(puVar17 + -0x14) = 0x4e915;\n    uVar14 = (*pcVar3)();\n    if (uVar14 == 0) goto LAB_0004ecdc;\n    local_c0[iVar18] = uVar14;\n    iStack_cc = iVar18 + 1;\n  }" { (expression_statement "*(uint *)(puVar17 + -4) = uStack_e4;" (assignment_expression "*(uint *)(puVar17 + -4) = uStack_e4" (pointer_expression "*(uint *)(puVar17 + -4)" * (cast_expression "(uint *)(puVar17 + -4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar17 + -4)" ( (binary_expression "puVar17 + -4" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(puVar17 + -8) = iVar4;" (assignment_expression "*(int *)(puVar17 + -8) = iVar4" (pointer_expression "*(int *)(puVar17 + -8)" * (cast_expression "(int *)(puVar17 + -8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar17 + -8)" ( (binary_expression "puVar17 + -8" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(uint **)(puVar17 + -0xc) = puVar10;" (assignment_expression "*(uint **)(puVar17 + -0xc) = puVar10" (pointer_expression "*(uint **)(puVar17 + -0xc)" * (cast_expression "(uint **)(puVar17 + -0xc)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar17 + -0xc)" ( (binary_expression "puVar17 + -0xc" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(uint **)(puVar17 + -0x10) = puVar15;" (assignment_expression "*(uint **)(puVar17 + -0x10) = puVar15" (pointer_expression "*(uint **)(puVar17 + -0x10)" * (cast_expression "(uint **)(puVar17 + -0x10)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar17 + -0x10)" ( (binary_expression "puVar17 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "pcVar3 = *(code **)(iStack_e0 + 0x38);" (assignment_expression "pcVar3 = *(code **)(iStack_e0 + 0x38)" identifier = (pointer_expression "*(code **)(iStack_e0 + 0x38)" * (cast_expression "(code **)(iStack_e0 + 0x38)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iStack_e0 + 0x38)" ( (binary_expression "iStack_e0 + 0x38" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar17 + -0x14) = 0x4e915;" (assignment_expression "*(undefined4 *)(puVar17 + -0x14) = 0x4e915" (pointer_expression "*(undefined4 *)(puVar17 + -0x14)" * (cast_expression "(undefined4 *)(puVar17 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar17 + -0x14)" ( (binary_expression "puVar17 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "uVar14 = (*pcVar3)();" (assignment_expression "uVar14 = (*pcVar3)()" identifier = (call_expression "(*pcVar3)()" (parenthesized_expression "(*pcVar3)" ( (pointer_expression "*pcVar3" * identifier) )) (argument_list "()" ( )))) ;) (if_statement "if (uVar14 == 0) goto LAB_0004ecdc;" if (parenthesized_expression "(uVar14 == 0)" ( (binary_expression "uVar14 == 0" identifier == number_literal) )) (goto_statement "goto LAB_0004ecdc;" goto statement_identifier ;)) (expression_statement "local_c0[iVar18] = uVar14;" (assignment_expression "local_c0[iVar18] = uVar14" (subscript_expression "local_c0[iVar18]" identifier [ identifier ]) = identifier) ;) (expression_statement "iStack_cc = iVar18 + 1;" (assignment_expression "iStack_cc = iVar18 + 1" identifier = (binary_expression "iVar18 + 1" identifier + number_literal)) ;) }))) (expression_statement "pmStack_f0 = (mp_ptr)*puVar15;" (assignment_expression "pmStack_f0 = (mp_ptr)*puVar15" identifier = (binary_expression "(mp_ptr)*puVar15" (parenthesized_expression "(mp_ptr)" ( identifier )) * identifier)) ;) (expression_statement "uVar6 = uStack_e8 - 1 >> 5;" (assignment_expression "uVar6 = uStack_e8 - 1 >> 5" identifier = (binary_expression "uStack_e8 - 1 >> 5" (binary_expression "uStack_e8 - 1" identifier - number_literal) >> number_literal)) ;) (expression_statement "uVar14 = uVar6 + 1;" (assignment_expression "uVar14 = uVar6 + 1" identifier = (binary_expression "uVar6 + 1" identifier + number_literal)) ;) (if_statement "if ((int)pmStack_d8 < iVar13) {\n    *(uint *)(puVar17 + -8) = uVar14 * 4;\n    *(undefined4 *)(puVar17 + -0xc) = 0;\n    *(uint **)(puVar17 + -0x10) = local_c0;\n    *(undefined4 *)(puVar17 + -0x14) = 0x4ee04;\n    memset(*(void **)(puVar17 + -0x10),*(int *)(puVar17 + -0xc),*(size_t *)(puVar17 + -8));\n    goto LAB_0004e9ab;\n  }" if (parenthesized_expression "((int)pmStack_d8 < iVar13)" ( (binary_expression "(int)pmStack_d8 < iVar13" (cast_expression "(int)pmStack_d8" ( (type_descriptor "int" primitive_type) ) identifier) < identifier) )) (compound_statement "{\n    *(uint *)(puVar17 + -8) = uVar14 * 4;\n    *(undefined4 *)(puVar17 + -0xc) = 0;\n    *(uint **)(puVar17 + -0x10) = local_c0;\n    *(undefined4 *)(puVar17 + -0x14) = 0x4ee04;\n    memset(*(void **)(puVar17 + -0x10),*(int *)(puVar17 + -0xc),*(size_t *)(puVar17 + -8));\n    goto LAB_0004e9ab;\n  }" { (expression_statement "*(uint *)(puVar17 + -8) = uVar14 * 4;" (assignment_expression "*(uint *)(puVar17 + -8) = uVar14 * 4" (pointer_expression "*(uint *)(puVar17 + -8)" * (cast_expression "(uint *)(puVar17 + -8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar17 + -8)" ( (binary_expression "puVar17 + -8" identifier + number_literal) )))) = (binary_expression "uVar14 * 4" identifier * number_literal)) ;) (expression_statement "*(undefined4 *)(puVar17 + -0xc) = 0;" (assignment_expression "*(undefined4 *)(puVar17 + -0xc) = 0" (pointer_expression "*(undefined4 *)(puVar17 + -0xc)" * (cast_expression "(undefined4 *)(puVar17 + -0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar17 + -0xc)" ( (binary_expression "puVar17 + -0xc" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(uint **)(puVar17 + -0x10) = local_c0;" (assignment_expression "*(uint **)(puVar17 + -0x10) = local_c0" (pointer_expression "*(uint **)(puVar17 + -0x10)" * (cast_expression "(uint **)(puVar17 + -0x10)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar17 + -0x10)" ( (binary_expression "puVar17 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar17 + -0x14) = 0x4ee04;" (assignment_expression "*(undefined4 *)(puVar17 + -0x14) = 0x4ee04" (pointer_expression "*(undefined4 *)(puVar17 + -0x14)" * (cast_expression "(undefined4 *)(puVar17 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar17 + -0x14)" ( (binary_expression "puVar17 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "memset(*(void **)(puVar17 + -0x10),*(int *)(puVar17 + -0xc),*(size_t *)(puVar17 + -8));" (call_expression "memset(*(void **)(puVar17 + -0x10),*(int *)(puVar17 + -0xc),*(size_t *)(puVar17 + -8))" identifier (argument_list "(*(void **)(puVar17 + -0x10),*(int *)(puVar17 + -0xc),*(size_t *)(puVar17 + -8))" ( (pointer_expression "*(void **)(puVar17 + -0x10)" * (cast_expression "(void **)(puVar17 + -0x10)" ( (type_descriptor "void **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar17 + -0x10)" ( (binary_expression "puVar17 + -0x10" identifier + number_literal) )))) , (pointer_expression "*(int *)(puVar17 + -0xc)" * (cast_expression "(int *)(puVar17 + -0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar17 + -0xc)" ( (binary_expression "puVar17 + -0xc" identifier + number_literal) )))) , (pointer_expression "*(size_t *)(puVar17 + -8)" * (cast_expression "(size_t *)(puVar17 + -8)" ( (type_descriptor "size_t *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar17 + -8)" ( (binary_expression "puVar17 + -8" identifier + number_literal) )))) ))) ;) (goto_statement "goto LAB_0004e9ab;" goto statement_identifier ;) })) (expression_statement "iVar18 = (int)pmStack_d8 - iVar13;" (assignment_expression "iVar18 = (int)pmStack_d8 - iVar13" identifier = (binary_expression "(int)pmStack_d8 - iVar13" (cast_expression "(int)pmStack_d8" ( (type_descriptor "int" primitive_type) ) identifier) - identifier)) ;) (if_statement "if (iVar18 <= (int)uVar14) {\n    *(int **)(puVar17 + -0xc) = piStack_120;\n    *(int *)(puVar17 + -0x10) = iVar13;\n    *(int *)(puVar17 + -0x14) = iStack_d0;\n    *(mp_ptr *)(puVar17 + -0x18) = pmStack_d8;\n    *(int **)(puVar17 + -0x1c) = piStack_d4;\n    *(int *)(puVar17 + -0x20) = iStack_dc;\n    iStack_108 = iVar18;\n    uStack_100 = uVar14;\n    *(undefined4 *)(puVar17 + -0x24) = 0x4ead1;\n    __gmpn_div_q(*(mp_ptr *)(puVar17 + -0x20),*(mp_srcptr *)(puVar17 + -0x1c),\n                 *(mp_size_t *)(puVar17 + -0x18),*(mp_srcptr *)(puVar17 + -0x14),\n                 *(mp_size_t *)(puVar17 + -0x10),*(mp_ptr *)(puVar17 + -0xc));\n    puVar10 = local_c0;\n    iVar13 = iStack_e0;\n    uVar16 = (uint)(*(int *)(iStack_dc + iStack_108 * 4) != 0) + iStack_108;\n    uVar14 = uStack_100;\n    if ((int)uVar16 <= (int)uStack_100) {\n      if ((uStack_100 != uVar16) || (uStack_e4 == 0)) {\n        uStack_e4 = uStack_100;\n        *(uint *)(puVar17 + -8) = uVar16;\n        *(int *)(puVar17 + -0xc) = iStack_dc;\n        *(uint **)(puVar17 + -0x10) = puVar10;\n        pcVar3 = *(code **)(iVar13 + 0x28);\n        *(undefined4 *)(puVar17 + -0x14) = 0x4eb2a;\n        (*pcVar3)();\n        if (uStack_e4 != uVar16) {\n          *(uint *)(puVar17 + -8) = (uStack_e4 - uVar16) * 4;\n          *(undefined4 *)(puVar17 + -0xc) = 0;\n          *(uint **)(puVar17 + -0x10) = puVar10 + uVar16;\n          *(undefined4 *)(puVar17 + -0x14) = 0x4eb55;\n          memset(*(void **)(puVar17 + -0x10),*(int *)(puVar17 + -0xc),*(size_t *)(puVar17 + -8));\n        }\n        goto LAB_0004e9ab;\n      }\n      if (*(uint *)(iStack_dc + -4 + uVar16 * 4) >> ((byte)uStack_e4 & 0x1f) == 0) {\n        *(uint *)(puVar17 + -8) = uVar16;\n        *(int *)(puVar17 + -0xc) = iStack_dc;\n        *(uint **)(puVar17 + -0x10) = local_c0;\n        pcVar3 = *(code **)(iVar13 + 0x28);\n        *(undefined4 *)(puVar17 + -0x14) = 0x4ede2;\n        (*pcVar3)();\n        goto LAB_0004e9ab;\n      }\n    }\n  }" if (parenthesized_expression "(iVar18 <= (int)uVar14)" ( (binary_expression "iVar18 <= (int)uVar14" identifier <= (cast_expression "(int)uVar14" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n    *(int **)(puVar17 + -0xc) = piStack_120;\n    *(int *)(puVar17 + -0x10) = iVar13;\n    *(int *)(puVar17 + -0x14) = iStack_d0;\n    *(mp_ptr *)(puVar17 + -0x18) = pmStack_d8;\n    *(int **)(puVar17 + -0x1c) = piStack_d4;\n    *(int *)(puVar17 + -0x20) = iStack_dc;\n    iStack_108 = iVar18;\n    uStack_100 = uVar14;\n    *(undefined4 *)(puVar17 + -0x24) = 0x4ead1;\n    __gmpn_div_q(*(mp_ptr *)(puVar17 + -0x20),*(mp_srcptr *)(puVar17 + -0x1c),\n                 *(mp_size_t *)(puVar17 + -0x18),*(mp_srcptr *)(puVar17 + -0x14),\n                 *(mp_size_t *)(puVar17 + -0x10),*(mp_ptr *)(puVar17 + -0xc));\n    puVar10 = local_c0;\n    iVar13 = iStack_e0;\n    uVar16 = (uint)(*(int *)(iStack_dc + iStack_108 * 4) != 0) + iStack_108;\n    uVar14 = uStack_100;\n    if ((int)uVar16 <= (int)uStack_100) {\n      if ((uStack_100 != uVar16) || (uStack_e4 == 0)) {\n        uStack_e4 = uStack_100;\n        *(uint *)(puVar17 + -8) = uVar16;\n        *(int *)(puVar17 + -0xc) = iStack_dc;\n        *(uint **)(puVar17 + -0x10) = puVar10;\n        pcVar3 = *(code **)(iVar13 + 0x28);\n        *(undefined4 *)(puVar17 + -0x14) = 0x4eb2a;\n        (*pcVar3)();\n        if (uStack_e4 != uVar16) {\n          *(uint *)(puVar17 + -8) = (uStack_e4 - uVar16) * 4;\n          *(undefined4 *)(puVar17 + -0xc) = 0;\n          *(uint **)(puVar17 + -0x10) = puVar10 + uVar16;\n          *(undefined4 *)(puVar17 + -0x14) = 0x4eb55;\n          memset(*(void **)(puVar17 + -0x10),*(int *)(puVar17 + -0xc),*(size_t *)(puVar17 + -8));\n        }\n        goto LAB_0004e9ab;\n      }\n      if (*(uint *)(iStack_dc + -4 + uVar16 * 4) >> ((byte)uStack_e4 & 0x1f) == 0) {\n        *(uint *)(puVar17 + -8) = uVar16;\n        *(int *)(puVar17 + -0xc) = iStack_dc;\n        *(uint **)(puVar17 + -0x10) = local_c0;\n        pcVar3 = *(code **)(iVar13 + 0x28);\n        *(undefined4 *)(puVar17 + -0x14) = 0x4ede2;\n        (*pcVar3)();\n        goto LAB_0004e9ab;\n      }\n    }\n  }" { (expression_statement "*(int **)(puVar17 + -0xc) = piStack_120;" (assignment_expression "*(int **)(puVar17 + -0xc) = piStack_120" (pointer_expression "*(int **)(puVar17 + -0xc)" * (cast_expression "(int **)(puVar17 + -0xc)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar17 + -0xc)" ( (binary_expression "puVar17 + -0xc" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(puVar17 + -0x10) = iVar13;" (assignment_expression "*(int *)(puVar17 + -0x10) = iVar13" (pointer_expression "*(int *)(puVar17 + -0x10)" * (cast_expression "(int *)(puVar17 + -0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar17 + -0x10)" ( (binary_expression "puVar17 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(puVar17 + -0x14) = iStack_d0;" (assignment_expression "*(int *)(puVar17 + -0x14) = iStack_d0" (pointer_expression "*(int *)(puVar17 + -0x14)" * (cast_expression "(int *)(puVar17 + -0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar17 + -0x14)" ( (binary_expression "puVar17 + -0x14" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(mp_ptr *)(puVar17 + -0x18) = pmStack_d8;" (assignment_expression "*(mp_ptr *)(puVar17 + -0x18) = pmStack_d8" (pointer_expression "*(mp_ptr *)(puVar17 + -0x18)" * (cast_expression "(mp_ptr *)(puVar17 + -0x18)" ( (type_descriptor "mp_ptr *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar17 + -0x18)" ( (binary_expression "puVar17 + -0x18" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int **)(puVar17 + -0x1c) = piStack_d4;" (assignment_expression "*(int **)(puVar17 + -0x1c) = piStack_d4" (pointer_expression "*(int **)(puVar17 + -0x1c)" * (cast_expression "(int **)(puVar17 + -0x1c)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar17 + -0x1c)" ( (binary_expression "puVar17 + -0x1c" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(puVar17 + -0x20) = iStack_dc;" (assignment_expression "*(int *)(puVar17 + -0x20) = iStack_dc" (pointer_expression "*(int *)(puVar17 + -0x20)" * (cast_expression "(int *)(puVar17 + -0x20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar17 + -0x20)" ( (binary_expression "puVar17 + -0x20" identifier + number_literal) )))) = identifier) ;) (expression_statement "iStack_108 = iVar18;" (assignment_expression "iStack_108 = iVar18" identifier = identifier) ;) (expression_statement "uStack_100 = uVar14;" (assignment_expression "uStack_100 = uVar14" identifier = identifier) ;) (expression_statement "*(undefined4 *)(puVar17 + -0x24) = 0x4ead1;" (assignment_expression "*(undefined4 *)(puVar17 + -0x24) = 0x4ead1" (pointer_expression "*(undefined4 *)(puVar17 + -0x24)" * (cast_expression "(undefined4 *)(puVar17 + -0x24)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar17 + -0x24)" ( (binary_expression "puVar17 + -0x24" identifier + number_literal) )))) = number_literal) ;) (expression_statement "__gmpn_div_q(*(mp_ptr *)(puVar17 + -0x20),*(mp_srcptr *)(puVar17 + -0x1c),\n                 *(mp_size_t *)(puVar17 + -0x18),*(mp_srcptr *)(puVar17 + -0x14),\n                 *(mp_size_t *)(puVar17 + -0x10),*(mp_ptr *)(puVar17 + -0xc));" (call_expression "__gmpn_div_q(*(mp_ptr *)(puVar17 + -0x20),*(mp_srcptr *)(puVar17 + -0x1c),\n                 *(mp_size_t *)(puVar17 + -0x18),*(mp_srcptr *)(puVar17 + -0x14),\n                 *(mp_size_t *)(puVar17 + -0x10),*(mp_ptr *)(puVar17 + -0xc))" identifier (argument_list "(*(mp_ptr *)(puVar17 + -0x20),*(mp_srcptr *)(puVar17 + -0x1c),\n                 *(mp_size_t *)(puVar17 + -0x18),*(mp_srcptr *)(puVar17 + -0x14),\n                 *(mp_size_t *)(puVar17 + -0x10),*(mp_ptr *)(puVar17 + -0xc))" ( (pointer_expression "*(mp_ptr *)(puVar17 + -0x20)" * (cast_expression "(mp_ptr *)(puVar17 + -0x20)" ( (type_descriptor "mp_ptr *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar17 + -0x20)" ( (binary_expression "puVar17 + -0x20" identifier + number_literal) )))) , (pointer_expression "*(mp_srcptr *)(puVar17 + -0x1c)" * (cast_expression "(mp_srcptr *)(puVar17 + -0x1c)" ( (type_descriptor "mp_srcptr *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar17 + -0x1c)" ( (binary_expression "puVar17 + -0x1c" identifier + number_literal) )))) , (pointer_expression "*(mp_size_t *)(puVar17 + -0x18)" * (cast_expression "(mp_size_t *)(puVar17 + -0x18)" ( (type_descriptor "mp_size_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar17 + -0x18)" ( (binary_expression "puVar17 + -0x18" identifier + number_literal) )))) , (pointer_expression "*(mp_srcptr *)(puVar17 + -0x14)" * (cast_expression "(mp_srcptr *)(puVar17 + -0x14)" ( (type_descriptor "mp_srcptr *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar17 + -0x14)" ( (binary_expression "puVar17 + -0x14" identifier + number_literal) )))) , (pointer_expression "*(mp_size_t *)(puVar17 + -0x10)" * (cast_expression "(mp_size_t *)(puVar17 + -0x10)" ( (type_descriptor "mp_size_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar17 + -0x10)" ( (binary_expression "puVar17 + -0x10" identifier + number_literal) )))) , (pointer_expression "*(mp_ptr *)(puVar17 + -0xc)" * (cast_expression "(mp_ptr *)(puVar17 + -0xc)" ( (type_descriptor "mp_ptr *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar17 + -0xc)" ( (binary_expression "puVar17 + -0xc" identifier + number_literal) )))) ))) ;) (expression_statement "puVar10 = local_c0;" (assignment_expression "puVar10 = local_c0" identifier = identifier) ;) (expression_statement "iVar13 = iStack_e0;" (assignment_expression "iVar13 = iStack_e0" identifier = identifier) ;) (expression_statement "uVar16 = (uint)(*(int *)(iStack_dc + iStack_108 * 4) != 0) + iStack_108;" (assignment_expression "uVar16 = (uint)(*(int *)(iStack_dc + iStack_108 * 4) != 0) + iStack_108" identifier = (binary_expression "(uint)(*(int *)(iStack_dc + iStack_108 * 4) != 0) + iStack_108" (call_expression "(uint)(*(int *)(iStack_dc + iStack_108 * 4) != 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(*(int *)(iStack_dc + iStack_108 * 4) != 0)" ( (binary_expression "*(int *)(iStack_dc + iStack_108 * 4) != 0" (pointer_expression "*(int *)(iStack_dc + iStack_108 * 4)" * (cast_expression "(int *)(iStack_dc + iStack_108 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iStack_dc + iStack_108 * 4)" ( (binary_expression "iStack_dc + iStack_108 * 4" identifier + (binary_expression "iStack_108 * 4" identifier * number_literal)) )))) != number_literal) ))) + identifier)) ;) (expression_statement "uVar14 = uStack_100;" (assignment_expression "uVar14 = uStack_100" identifier = identifier) ;) (if_statement "if ((int)uVar16 <= (int)uStack_100) {\n      if ((uStack_100 != uVar16) || (uStack_e4 == 0)) {\n        uStack_e4 = uStack_100;\n        *(uint *)(puVar17 + -8) = uVar16;\n        *(int *)(puVar17 + -0xc) = iStack_dc;\n        *(uint **)(puVar17 + -0x10) = puVar10;\n        pcVar3 = *(code **)(iVar13 + 0x28);\n        *(undefined4 *)(puVar17 + -0x14) = 0x4eb2a;\n        (*pcVar3)();\n        if (uStack_e4 != uVar16) {\n          *(uint *)(puVar17 + -8) = (uStack_e4 - uVar16) * 4;\n          *(undefined4 *)(puVar17 + -0xc) = 0;\n          *(uint **)(puVar17 + -0x10) = puVar10 + uVar16;\n          *(undefined4 *)(puVar17 + -0x14) = 0x4eb55;\n          memset(*(void **)(puVar17 + -0x10),*(int *)(puVar17 + -0xc),*(size_t *)(puVar17 + -8));\n        }\n        goto LAB_0004e9ab;\n      }\n      if (*(uint *)(iStack_dc + -4 + uVar16 * 4) >> ((byte)uStack_e4 & 0x1f) == 0) {\n        *(uint *)(puVar17 + -8) = uVar16;\n        *(int *)(puVar17 + -0xc) = iStack_dc;\n        *(uint **)(puVar17 + -0x10) = local_c0;\n        pcVar3 = *(code **)(iVar13 + 0x28);\n        *(undefined4 *)(puVar17 + -0x14) = 0x4ede2;\n        (*pcVar3)();\n        goto LAB_0004e9ab;\n      }\n    }" if (parenthesized_expression "((int)uVar16 <= (int)uStack_100)" ( (binary_expression "(int)uVar16 <= (int)uStack_100" (cast_expression "(int)uVar16" ( (type_descriptor "int" primitive_type) ) identifier) <= (cast_expression "(int)uStack_100" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n      if ((uStack_100 != uVar16) || (uStack_e4 == 0)) {\n        uStack_e4 = uStack_100;\n        *(uint *)(puVar17 + -8) = uVar16;\n        *(int *)(puVar17 + -0xc) = iStack_dc;\n        *(uint **)(puVar17 + -0x10) = puVar10;\n        pcVar3 = *(code **)(iVar13 + 0x28);\n        *(undefined4 *)(puVar17 + -0x14) = 0x4eb2a;\n        (*pcVar3)();\n        if (uStack_e4 != uVar16) {\n          *(uint *)(puVar17 + -8) = (uStack_e4 - uVar16) * 4;\n          *(undefined4 *)(puVar17 + -0xc) = 0;\n          *(uint **)(puVar17 + -0x10) = puVar10 + uVar16;\n          *(undefined4 *)(puVar17 + -0x14) = 0x4eb55;\n          memset(*(void **)(puVar17 + -0x10),*(int *)(puVar17 + -0xc),*(size_t *)(puVar17 + -8));\n        }\n        goto LAB_0004e9ab;\n      }\n      if (*(uint *)(iStack_dc + -4 + uVar16 * 4) >> ((byte)uStack_e4 & 0x1f) == 0) {\n        *(uint *)(puVar17 + -8) = uVar16;\n        *(int *)(puVar17 + -0xc) = iStack_dc;\n        *(uint **)(puVar17 + -0x10) = local_c0;\n        pcVar3 = *(code **)(iVar13 + 0x28);\n        *(undefined4 *)(puVar17 + -0x14) = 0x4ede2;\n        (*pcVar3)();\n        goto LAB_0004e9ab;\n      }\n    }" { (if_statement "if ((uStack_100 != uVar16) || (uStack_e4 == 0)) {\n        uStack_e4 = uStack_100;\n        *(uint *)(puVar17 + -8) = uVar16;\n        *(int *)(puVar17 + -0xc) = iStack_dc;\n        *(uint **)(puVar17 + -0x10) = puVar10;\n        pcVar3 = *(code **)(iVar13 + 0x28);\n        *(undefined4 *)(puVar17 + -0x14) = 0x4eb2a;\n        (*pcVar3)();\n        if (uStack_e4 != uVar16) {\n          *(uint *)(puVar17 + -8) = (uStack_e4 - uVar16) * 4;\n          *(undefined4 *)(puVar17 + -0xc) = 0;\n          *(uint **)(puVar17 + -0x10) = puVar10 + uVar16;\n          *(undefined4 *)(puVar17 + -0x14) = 0x4eb55;\n          memset(*(void **)(puVar17 + -0x10),*(int *)(puVar17 + -0xc),*(size_t *)(puVar17 + -8));\n        }\n        goto LAB_0004e9ab;\n      }" if (parenthesized_expression "((uStack_100 != uVar16) || (uStack_e4 == 0))" ( (binary_expression "(uStack_100 != uVar16) || (uStack_e4 == 0)" (parenthesized_expression "(uStack_100 != uVar16)" ( (binary_expression "uStack_100 != uVar16" identifier != identifier) )) || (parenthesized_expression "(uStack_e4 == 0)" ( (binary_expression "uStack_e4 == 0" identifier == number_literal) ))) )) (compound_statement "{\n        uStack_e4 = uStack_100;\n        *(uint *)(puVar17 + -8) = uVar16;\n        *(int *)(puVar17 + -0xc) = iStack_dc;\n        *(uint **)(puVar17 + -0x10) = puVar10;\n        pcVar3 = *(code **)(iVar13 + 0x28);\n        *(undefined4 *)(puVar17 + -0x14) = 0x4eb2a;\n        (*pcVar3)();\n        if (uStack_e4 != uVar16) {\n          *(uint *)(puVar17 + -8) = (uStack_e4 - uVar16) * 4;\n          *(undefined4 *)(puVar17 + -0xc) = 0;\n          *(uint **)(puVar17 + -0x10) = puVar10 + uVar16;\n          *(undefined4 *)(puVar17 + -0x14) = 0x4eb55;\n          memset(*(void **)(puVar17 + -0x10),*(int *)(puVar17 + -0xc),*(size_t *)(puVar17 + -8));\n        }\n        goto LAB_0004e9ab;\n      }" { (expression_statement "uStack_e4 = uStack_100;" (assignment_expression "uStack_e4 = uStack_100" identifier = identifier) ;) (expression_statement "*(uint *)(puVar17 + -8) = uVar16;" (assignment_expression "*(uint *)(puVar17 + -8) = uVar16" (pointer_expression "*(uint *)(puVar17 + -8)" * (cast_expression "(uint *)(puVar17 + -8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar17 + -8)" ( (binary_expression "puVar17 + -8" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(puVar17 + -0xc) = iStack_dc;" (assignment_expression "*(int *)(puVar17 + -0xc) = iStack_dc" (pointer_expression "*(int *)(puVar17 + -0xc)" * (cast_expression "(int *)(puVar17 + -0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar17 + -0xc)" ( (binary_expression "puVar17 + -0xc" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(uint **)(puVar17 + -0x10) = puVar10;" (assignment_expression "*(uint **)(puVar17 + -0x10) = puVar10" (pointer_expression "*(uint **)(puVar17 + -0x10)" * (cast_expression "(uint **)(puVar17 + -0x10)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar17 + -0x10)" ( (binary_expression "puVar17 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "pcVar3 = *(code **)(iVar13 + 0x28);" (assignment_expression "pcVar3 = *(code **)(iVar13 + 0x28)" identifier = (pointer_expression "*(code **)(iVar13 + 0x28)" * (cast_expression "(code **)(iVar13 + 0x28)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar13 + 0x28)" ( (binary_expression "iVar13 + 0x28" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar17 + -0x14) = 0x4eb2a;" (assignment_expression "*(undefined4 *)(puVar17 + -0x14) = 0x4eb2a" (pointer_expression "*(undefined4 *)(puVar17 + -0x14)" * (cast_expression "(undefined4 *)(puVar17 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar17 + -0x14)" ( (binary_expression "puVar17 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "(*pcVar3)();" (call_expression "(*pcVar3)()" (parenthesized_expression "(*pcVar3)" ( (pointer_expression "*pcVar3" * identifier) )) (argument_list "()" ( ))) ;) (if_statement "if (uStack_e4 != uVar16) {\n          *(uint *)(puVar17 + -8) = (uStack_e4 - uVar16) * 4;\n          *(undefined4 *)(puVar17 + -0xc) = 0;\n          *(uint **)(puVar17 + -0x10) = puVar10 + uVar16;\n          *(undefined4 *)(puVar17 + -0x14) = 0x4eb55;\n          memset(*(void **)(puVar17 + -0x10),*(int *)(puVar17 + -0xc),*(size_t *)(puVar17 + -8));\n        }" if (parenthesized_expression "(uStack_e4 != uVar16)" ( (binary_expression "uStack_e4 != uVar16" identifier != identifier) )) (compound_statement "{\n          *(uint *)(puVar17 + -8) = (uStack_e4 - uVar16) * 4;\n          *(undefined4 *)(puVar17 + -0xc) = 0;\n          *(uint **)(puVar17 + -0x10) = puVar10 + uVar16;\n          *(undefined4 *)(puVar17 + -0x14) = 0x4eb55;\n          memset(*(void **)(puVar17 + -0x10),*(int *)(puVar17 + -0xc),*(size_t *)(puVar17 + -8));\n        }" { (expression_statement "*(uint *)(puVar17 + -8) = (uStack_e4 - uVar16) * 4;" (assignment_expression "*(uint *)(puVar17 + -8) = (uStack_e4 - uVar16) * 4" (pointer_expression "*(uint *)(puVar17 + -8)" * (cast_expression "(uint *)(puVar17 + -8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar17 + -8)" ( (binary_expression "puVar17 + -8" identifier + number_literal) )))) = (binary_expression "(uStack_e4 - uVar16) * 4" (parenthesized_expression "(uStack_e4 - uVar16)" ( (binary_expression "uStack_e4 - uVar16" identifier - identifier) )) * number_literal)) ;) (expression_statement "*(undefined4 *)(puVar17 + -0xc) = 0;" (assignment_expression "*(undefined4 *)(puVar17 + -0xc) = 0" (pointer_expression "*(undefined4 *)(puVar17 + -0xc)" * (cast_expression "(undefined4 *)(puVar17 + -0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar17 + -0xc)" ( (binary_expression "puVar17 + -0xc" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(uint **)(puVar17 + -0x10) = puVar10 + uVar16;" (assignment_expression "*(uint **)(puVar17 + -0x10) = puVar10 + uVar16" (pointer_expression "*(uint **)(puVar17 + -0x10)" * (cast_expression "(uint **)(puVar17 + -0x10)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar17 + -0x10)" ( (binary_expression "puVar17 + -0x10" identifier + number_literal) )))) = (binary_expression "puVar10 + uVar16" identifier + identifier)) ;) (expression_statement "*(undefined4 *)(puVar17 + -0x14) = 0x4eb55;" (assignment_expression "*(undefined4 *)(puVar17 + -0x14) = 0x4eb55" (pointer_expression "*(undefined4 *)(puVar17 + -0x14)" * (cast_expression "(undefined4 *)(puVar17 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar17 + -0x14)" ( (binary_expression "puVar17 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "memset(*(void **)(puVar17 + -0x10),*(int *)(puVar17 + -0xc),*(size_t *)(puVar17 + -8));" (call_expression "memset(*(void **)(puVar17 + -0x10),*(int *)(puVar17 + -0xc),*(size_t *)(puVar17 + -8))" identifier (argument_list "(*(void **)(puVar17 + -0x10),*(int *)(puVar17 + -0xc),*(size_t *)(puVar17 + -8))" ( (pointer_expression "*(void **)(puVar17 + -0x10)" * (cast_expression "(void **)(puVar17 + -0x10)" ( (type_descriptor "void **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar17 + -0x10)" ( (binary_expression "puVar17 + -0x10" identifier + number_literal) )))) , (pointer_expression "*(int *)(puVar17 + -0xc)" * (cast_expression "(int *)(puVar17 + -0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar17 + -0xc)" ( (binary_expression "puVar17 + -0xc" identifier + number_literal) )))) , (pointer_expression "*(size_t *)(puVar17 + -8)" * (cast_expression "(size_t *)(puVar17 + -8)" ( (type_descriptor "size_t *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar17 + -8)" ( (binary_expression "puVar17 + -8" identifier + number_literal) )))) ))) ;) })) (goto_statement "goto LAB_0004e9ab;" goto statement_identifier ;) })) (if_statement "if (*(uint *)(iStack_dc + -4 + uVar16 * 4) >> ((byte)uStack_e4 & 0x1f) == 0) {\n        *(uint *)(puVar17 + -8) = uVar16;\n        *(int *)(puVar17 + -0xc) = iStack_dc;\n        *(uint **)(puVar17 + -0x10) = local_c0;\n        pcVar3 = *(code **)(iVar13 + 0x28);\n        *(undefined4 *)(puVar17 + -0x14) = 0x4ede2;\n        (*pcVar3)();\n        goto LAB_0004e9ab;\n      }" if (parenthesized_expression "(*(uint *)(iStack_dc + -4 + uVar16 * 4) >> ((byte)uStack_e4 & 0x1f) == 0)" ( (binary_expression "*(uint *)(iStack_dc + -4 + uVar16 * 4) >> ((byte)uStack_e4 & 0x1f) == 0" (binary_expression "*(uint *)(iStack_dc + -4 + uVar16 * 4) >> ((byte)uStack_e4 & 0x1f)" (pointer_expression "*(uint *)(iStack_dc + -4 + uVar16 * 4)" * (cast_expression "(uint *)(iStack_dc + -4 + uVar16 * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iStack_dc + -4 + uVar16 * 4)" ( (binary_expression "iStack_dc + -4 + uVar16 * 4" (binary_expression "iStack_dc + -4" identifier + number_literal) + (binary_expression "uVar16 * 4" identifier * number_literal)) )))) >> (parenthesized_expression "((byte)uStack_e4 & 0x1f)" ( (binary_expression "(byte)uStack_e4 & 0x1f" (cast_expression "(byte)uStack_e4" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) ))) == number_literal) )) (compound_statement "{\n        *(uint *)(puVar17 + -8) = uVar16;\n        *(int *)(puVar17 + -0xc) = iStack_dc;\n        *(uint **)(puVar17 + -0x10) = local_c0;\n        pcVar3 = *(code **)(iVar13 + 0x28);\n        *(undefined4 *)(puVar17 + -0x14) = 0x4ede2;\n        (*pcVar3)();\n        goto LAB_0004e9ab;\n      }" { (expression_statement "*(uint *)(puVar17 + -8) = uVar16;" (assignment_expression "*(uint *)(puVar17 + -8) = uVar16" (pointer_expression "*(uint *)(puVar17 + -8)" * (cast_expression "(uint *)(puVar17 + -8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar17 + -8)" ( (binary_expression "puVar17 + -8" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(puVar17 + -0xc) = iStack_dc;" (assignment_expression "*(int *)(puVar17 + -0xc) = iStack_dc" (pointer_expression "*(int *)(puVar17 + -0xc)" * (cast_expression "(int *)(puVar17 + -0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar17 + -0xc)" ( (binary_expression "puVar17 + -0xc" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(uint **)(puVar17 + -0x10) = local_c0;" (assignment_expression "*(uint **)(puVar17 + -0x10) = local_c0" (pointer_expression "*(uint **)(puVar17 + -0x10)" * (cast_expression "(uint **)(puVar17 + -0x10)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar17 + -0x10)" ( (binary_expression "puVar17 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "pcVar3 = *(code **)(iVar13 + 0x28);" (assignment_expression "pcVar3 = *(code **)(iVar13 + 0x28)" identifier = (pointer_expression "*(code **)(iVar13 + 0x28)" * (cast_expression "(code **)(iVar13 + 0x28)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar13 + 0x28)" ( (binary_expression "iVar13 + 0x28" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar17 + -0x14) = 0x4ede2;" (assignment_expression "*(undefined4 *)(puVar17 + -0x14) = 0x4ede2" (pointer_expression "*(undefined4 *)(puVar17 + -0x14)" * (cast_expression "(undefined4 *)(puVar17 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar17 + -0x14)" ( (binary_expression "puVar17 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "(*pcVar3)();" (call_expression "(*pcVar3)()" (parenthesized_expression "(*pcVar3)" ( (pointer_expression "*pcVar3" * identifier) )) (argument_list "()" ( ))) ;) (goto_statement "goto LAB_0004e9ab;" goto statement_identifier ;) })) })) })) (expression_statement "puVar10 = local_c0;" (assignment_expression "puVar10 = local_c0" identifier = identifier) ;) (if_statement "if (uVar14 != 1) {\n    *(uint *)(puVar17 + -8) = uVar6 * 4;\n    *(undefined4 *)(puVar17 + -0xc) = 0xff;\n    *(uint **)(puVar17 + -0x10) = local_c0;\n    *(undefined4 *)(puVar17 + -0x14) = 0x4e98f;\n    memset(*(void **)(puVar17 + -0x10),*(int *)(puVar17 + -0xc),*(size_t *)(puVar17 + -8));\n    puVar10 = local_c0 + uVar6;\n  }" if (parenthesized_expression "(uVar14 != 1)" ( (binary_expression "uVar14 != 1" identifier != number_literal) )) (compound_statement "{\n    *(uint *)(puVar17 + -8) = uVar6 * 4;\n    *(undefined4 *)(puVar17 + -0xc) = 0xff;\n    *(uint **)(puVar17 + -0x10) = local_c0;\n    *(undefined4 *)(puVar17 + -0x14) = 0x4e98f;\n    memset(*(void **)(puVar17 + -0x10),*(int *)(puVar17 + -0xc),*(size_t *)(puVar17 + -8));\n    puVar10 = local_c0 + uVar6;\n  }" { (expression_statement "*(uint *)(puVar17 + -8) = uVar6 * 4;" (assignment_expression "*(uint *)(puVar17 + -8) = uVar6 * 4" (pointer_expression "*(uint *)(puVar17 + -8)" * (cast_expression "(uint *)(puVar17 + -8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar17 + -8)" ( (binary_expression "puVar17 + -8" identifier + number_literal) )))) = (binary_expression "uVar6 * 4" identifier * number_literal)) ;) (expression_statement "*(undefined4 *)(puVar17 + -0xc) = 0xff;" (assignment_expression "*(undefined4 *)(puVar17 + -0xc) = 0xff" (pointer_expression "*(undefined4 *)(puVar17 + -0xc)" * (cast_expression "(undefined4 *)(puVar17 + -0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar17 + -0xc)" ( (binary_expression "puVar17 + -0xc" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(uint **)(puVar17 + -0x10) = local_c0;" (assignment_expression "*(uint **)(puVar17 + -0x10) = local_c0" (pointer_expression "*(uint **)(puVar17 + -0x10)" * (cast_expression "(uint **)(puVar17 + -0x10)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar17 + -0x10)" ( (binary_expression "puVar17 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar17 + -0x14) = 0x4e98f;" (assignment_expression "*(undefined4 *)(puVar17 + -0x14) = 0x4e98f" (pointer_expression "*(undefined4 *)(puVar17 + -0x14)" * (cast_expression "(undefined4 *)(puVar17 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar17 + -0x14)" ( (binary_expression "puVar17 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "memset(*(void **)(puVar17 + -0x10),*(int *)(puVar17 + -0xc),*(size_t *)(puVar17 + -8));" (call_expression "memset(*(void **)(puVar17 + -0x10),*(int *)(puVar17 + -0xc),*(size_t *)(puVar17 + -8))" identifier (argument_list "(*(void **)(puVar17 + -0x10),*(int *)(puVar17 + -0xc),*(size_t *)(puVar17 + -8))" ( (pointer_expression "*(void **)(puVar17 + -0x10)" * (cast_expression "(void **)(puVar17 + -0x10)" ( (type_descriptor "void **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar17 + -0x10)" ( (binary_expression "puVar17 + -0x10" identifier + number_literal) )))) , (pointer_expression "*(int *)(puVar17 + -0xc)" * (cast_expression "(int *)(puVar17 + -0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar17 + -0xc)" ( (binary_expression "puVar17 + -0xc" identifier + number_literal) )))) , (pointer_expression "*(size_t *)(puVar17 + -8)" * (cast_expression "(size_t *)(puVar17 + -8)" ( (type_descriptor "size_t *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar17 + -8)" ( (binary_expression "puVar17 + -8" identifier + number_literal) )))) ))) ;) (expression_statement "puVar10 = local_c0 + uVar6;" (assignment_expression "puVar10 = local_c0 + uVar6" identifier = (binary_expression "local_c0 + uVar6" identifier + identifier)) ;) })) (expression_statement "*puVar10 = 0xffffffff >> ((byte)iStack_118 & 0x1f);" (assignment_expression "*puVar10 = 0xffffffff >> ((byte)iStack_118 & 0x1f)" (pointer_expression "*puVar10" * identifier) = (binary_expression "0xffffffff >> ((byte)iStack_118 & 0x1f)" number_literal >> (parenthesized_expression "((byte)iStack_118 & 0x1f)" ( (binary_expression "(byte)iStack_118 & 0x1f" (cast_expression "(byte)iStack_118" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) )))) ;) (labeled_statement "LAB_0004e9ab:\n  iStack_104 = iStack_104 + -1;" statement_identifier : (expression_statement "iStack_104 = iStack_104 + -1;" (assignment_expression "iStack_104 = iStack_104 + -1" identifier = (binary_expression "iStack_104 + -1" identifier + number_literal)) ;)) (expression_statement "*puVar15 = *puVar15 | (uint)pmStack_f0;" (assignment_expression "*puVar15 = *puVar15 | (uint)pmStack_f0" (pointer_expression "*puVar15" * identifier) = (binary_expression "*puVar15 | (uint)pmStack_f0" (pointer_expression "*puVar15" * identifier) | (cast_expression "(uint)pmStack_f0" ( (type_descriptor "uint" type_identifier) ) identifier))) ;) (expression_statement "iVar13 = iStack_dc;" (assignment_expression "iVar13 = iStack_dc" identifier = identifier) ;) (if_statement "if (iStack_10c == 0) goto LAB_0004e9ce;" if (parenthesized_expression "(iStack_10c == 0)" ( (binary_expression "iStack_10c == 0" identifier == number_literal) )) (goto_statement "goto LAB_0004e9ce;" goto statement_identifier ;)) (goto_statement "goto LAB_0004e690;" goto statement_identifier ;) (labeled_statement "LAB_0004efbf:\n  if (local_124 == (int *)0x0) {\n    pmStack_d8 = (mp_ptr)0x1;\n  }\n  else {\n    pmVar8 = pmVar5;\n    if (pmVar5 == (mp_ptr)0x0) {\nLAB_0004efd7:\n      if ((local_f8 != local_124) && ((int)pmVar8 < (int)rootp)) {\n        piVar12 = local_f8 + (int)pmVar8;\n        piVar11 = local_124 + (int)pmVar8;\n        do {\n          iVar13 = *piVar12;\n          piVar12 = piVar12 + 1;\n          *piVar11 = iVar13;\n          piVar11 = piVar11 + 1;\n        } while ((int *)((int)local_f8 + local_128 + 4) != piVar12);\n      }\n    }\n    else {\n      *(mp_ptr *)(puVar17 + -4) = pmVar5;\n      *(int *)(puVar17 + -8) = iVar13;\n      *(int **)(puVar17 + -0xc) = local_f8;\n      *(int **)(puVar17 + -0x10) = local_124;\n      *(undefined4 *)(puVar17 + -0x14) = 0x4f0a5;\n      iVar13 = __gmpn_sub_n();\n      if (iVar13 == 0) goto LAB_0004efd7;\n      if (rootp != pmVar5) {\n        pmVar8 = (mp_ptr)((int)pmVar5 + 1);\n        local_c0 = (uint *)((int)pmVar5 * 4);\n        iVar13 = local_f8[(int)pmVar5];\n        local_124[(int)pmVar5] = iVar13 + -1;\n        if (iVar13 == 0) {\n          if ((int)rootp <= (int)pmVar8) goto LAB_0004f017;\n          iVar13 = local_f8[(int)pmVar5 + 1];\n          local_124[(int)pmVar5 + 1] = iVar13 + -1;\n          pmVar8 = (mp_ptr)((int)pmVar5 + 2);\n          while (iVar13 == 0) {\n            if (rootp == pmVar8) goto LAB_0004f017;\n            iVar13 = local_f8[(int)pmVar8];\n            local_124[(int)pmVar8] = iVar13 + -1;\n            pmVar8 = (mp_ptr)((int)pmVar8 + 1);\n          }\n        }\n        goto LAB_0004efd7;\n      }\n    }\nLAB_0004f017:\n    iVar13 = local_124[local_134];\n    while (iVar13 == 0) {\n      iVar13 = local_124[(int)rootp - 2];\n      rootp = (mp_ptr)((int)rootp - 1);\n    }\n    pmStack_d8 = rootp;\n  }" statement_identifier : (if_statement "if (local_124 == (int *)0x0) {\n    pmStack_d8 = (mp_ptr)0x1;\n  }\n  else {\n    pmVar8 = pmVar5;\n    if (pmVar5 == (mp_ptr)0x0) {\nLAB_0004efd7:\n      if ((local_f8 != local_124) && ((int)pmVar8 < (int)rootp)) {\n        piVar12 = local_f8 + (int)pmVar8;\n        piVar11 = local_124 + (int)pmVar8;\n        do {\n          iVar13 = *piVar12;\n          piVar12 = piVar12 + 1;\n          *piVar11 = iVar13;\n          piVar11 = piVar11 + 1;\n        } while ((int *)((int)local_f8 + local_128 + 4) != piVar12);\n      }\n    }\n    else {\n      *(mp_ptr *)(puVar17 + -4) = pmVar5;\n      *(int *)(puVar17 + -8) = iVar13;\n      *(int **)(puVar17 + -0xc) = local_f8;\n      *(int **)(puVar17 + -0x10) = local_124;\n      *(undefined4 *)(puVar17 + -0x14) = 0x4f0a5;\n      iVar13 = __gmpn_sub_n();\n      if (iVar13 == 0) goto LAB_0004efd7;\n      if (rootp != pmVar5) {\n        pmVar8 = (mp_ptr)((int)pmVar5 + 1);\n        local_c0 = (uint *)((int)pmVar5 * 4);\n        iVar13 = local_f8[(int)pmVar5];\n        local_124[(int)pmVar5] = iVar13 + -1;\n        if (iVar13 == 0) {\n          if ((int)rootp <= (int)pmVar8) goto LAB_0004f017;\n          iVar13 = local_f8[(int)pmVar5 + 1];\n          local_124[(int)pmVar5 + 1] = iVar13 + -1;\n          pmVar8 = (mp_ptr)((int)pmVar5 + 2);\n          while (iVar13 == 0) {\n            if (rootp == pmVar8) goto LAB_0004f017;\n            iVar13 = local_f8[(int)pmVar8];\n            local_124[(int)pmVar8] = iVar13 + -1;\n            pmVar8 = (mp_ptr)((int)pmVar8 + 1);\n          }\n        }\n        goto LAB_0004efd7;\n      }\n    }\nLAB_0004f017:\n    iVar13 = local_124[local_134];\n    while (iVar13 == 0) {\n      iVar13 = local_124[(int)rootp - 2];\n      rootp = (mp_ptr)((int)rootp - 1);\n    }\n    pmStack_d8 = rootp;\n  }" if (parenthesized_expression "(local_124 == (int *)0x0)" ( (binary_expression "local_124 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    pmStack_d8 = (mp_ptr)0x1;\n  }" { (expression_statement "pmStack_d8 = (mp_ptr)0x1;" (assignment_expression "pmStack_d8 = (mp_ptr)0x1" identifier = (cast_expression "(mp_ptr)0x1" ( (type_descriptor "mp_ptr" type_identifier) ) number_literal)) ;) }) (else_clause "else {\n    pmVar8 = pmVar5;\n    if (pmVar5 == (mp_ptr)0x0) {\nLAB_0004efd7:\n      if ((local_f8 != local_124) && ((int)pmVar8 < (int)rootp)) {\n        piVar12 = local_f8 + (int)pmVar8;\n        piVar11 = local_124 + (int)pmVar8;\n        do {\n          iVar13 = *piVar12;\n          piVar12 = piVar12 + 1;\n          *piVar11 = iVar13;\n          piVar11 = piVar11 + 1;\n        } while ((int *)((int)local_f8 + local_128 + 4) != piVar12);\n      }\n    }\n    else {\n      *(mp_ptr *)(puVar17 + -4) = pmVar5;\n      *(int *)(puVar17 + -8) = iVar13;\n      *(int **)(puVar17 + -0xc) = local_f8;\n      *(int **)(puVar17 + -0x10) = local_124;\n      *(undefined4 *)(puVar17 + -0x14) = 0x4f0a5;\n      iVar13 = __gmpn_sub_n();\n      if (iVar13 == 0) goto LAB_0004efd7;\n      if (rootp != pmVar5) {\n        pmVar8 = (mp_ptr)((int)pmVar5 + 1);\n        local_c0 = (uint *)((int)pmVar5 * 4);\n        iVar13 = local_f8[(int)pmVar5];\n        local_124[(int)pmVar5] = iVar13 + -1;\n        if (iVar13 == 0) {\n          if ((int)rootp <= (int)pmVar8) goto LAB_0004f017;\n          iVar13 = local_f8[(int)pmVar5 + 1];\n          local_124[(int)pmVar5 + 1] = iVar13 + -1;\n          pmVar8 = (mp_ptr)((int)pmVar5 + 2);\n          while (iVar13 == 0) {\n            if (rootp == pmVar8) goto LAB_0004f017;\n            iVar13 = local_f8[(int)pmVar8];\n            local_124[(int)pmVar8] = iVar13 + -1;\n            pmVar8 = (mp_ptr)((int)pmVar8 + 1);\n          }\n        }\n        goto LAB_0004efd7;\n      }\n    }\nLAB_0004f017:\n    iVar13 = local_124[local_134];\n    while (iVar13 == 0) {\n      iVar13 = local_124[(int)rootp - 2];\n      rootp = (mp_ptr)((int)rootp - 1);\n    }\n    pmStack_d8 = rootp;\n  }" else (compound_statement "{\n    pmVar8 = pmVar5;\n    if (pmVar5 == (mp_ptr)0x0) {\nLAB_0004efd7:\n      if ((local_f8 != local_124) && ((int)pmVar8 < (int)rootp)) {\n        piVar12 = local_f8 + (int)pmVar8;\n        piVar11 = local_124 + (int)pmVar8;\n        do {\n          iVar13 = *piVar12;\n          piVar12 = piVar12 + 1;\n          *piVar11 = iVar13;\n          piVar11 = piVar11 + 1;\n        } while ((int *)((int)local_f8 + local_128 + 4) != piVar12);\n      }\n    }\n    else {\n      *(mp_ptr *)(puVar17 + -4) = pmVar5;\n      *(int *)(puVar17 + -8) = iVar13;\n      *(int **)(puVar17 + -0xc) = local_f8;\n      *(int **)(puVar17 + -0x10) = local_124;\n      *(undefined4 *)(puVar17 + -0x14) = 0x4f0a5;\n      iVar13 = __gmpn_sub_n();\n      if (iVar13 == 0) goto LAB_0004efd7;\n      if (rootp != pmVar5) {\n        pmVar8 = (mp_ptr)((int)pmVar5 + 1);\n        local_c0 = (uint *)((int)pmVar5 * 4);\n        iVar13 = local_f8[(int)pmVar5];\n        local_124[(int)pmVar5] = iVar13 + -1;\n        if (iVar13 == 0) {\n          if ((int)rootp <= (int)pmVar8) goto LAB_0004f017;\n          iVar13 = local_f8[(int)pmVar5 + 1];\n          local_124[(int)pmVar5 + 1] = iVar13 + -1;\n          pmVar8 = (mp_ptr)((int)pmVar5 + 2);\n          while (iVar13 == 0) {\n            if (rootp == pmVar8) goto LAB_0004f017;\n            iVar13 = local_f8[(int)pmVar8];\n            local_124[(int)pmVar8] = iVar13 + -1;\n            pmVar8 = (mp_ptr)((int)pmVar8 + 1);\n          }\n        }\n        goto LAB_0004efd7;\n      }\n    }\nLAB_0004f017:\n    iVar13 = local_124[local_134];\n    while (iVar13 == 0) {\n      iVar13 = local_124[(int)rootp - 2];\n      rootp = (mp_ptr)((int)rootp - 1);\n    }\n    pmStack_d8 = rootp;\n  }" { (expression_statement "pmVar8 = pmVar5;" (assignment_expression "pmVar8 = pmVar5" identifier = identifier) ;) (if_statement "if (pmVar5 == (mp_ptr)0x0) {\nLAB_0004efd7:\n      if ((local_f8 != local_124) && ((int)pmVar8 < (int)rootp)) {\n        piVar12 = local_f8 + (int)pmVar8;\n        piVar11 = local_124 + (int)pmVar8;\n        do {\n          iVar13 = *piVar12;\n          piVar12 = piVar12 + 1;\n          *piVar11 = iVar13;\n          piVar11 = piVar11 + 1;\n        } while ((int *)((int)local_f8 + local_128 + 4) != piVar12);\n      }\n    }\n    else {\n      *(mp_ptr *)(puVar17 + -4) = pmVar5;\n      *(int *)(puVar17 + -8) = iVar13;\n      *(int **)(puVar17 + -0xc) = local_f8;\n      *(int **)(puVar17 + -0x10) = local_124;\n      *(undefined4 *)(puVar17 + -0x14) = 0x4f0a5;\n      iVar13 = __gmpn_sub_n();\n      if (iVar13 == 0) goto LAB_0004efd7;\n      if (rootp != pmVar5) {\n        pmVar8 = (mp_ptr)((int)pmVar5 + 1);\n        local_c0 = (uint *)((int)pmVar5 * 4);\n        iVar13 = local_f8[(int)pmVar5];\n        local_124[(int)pmVar5] = iVar13 + -1;\n        if (iVar13 == 0) {\n          if ((int)rootp <= (int)pmVar8) goto LAB_0004f017;\n          iVar13 = local_f8[(int)pmVar5 + 1];\n          local_124[(int)pmVar5 + 1] = iVar13 + -1;\n          pmVar8 = (mp_ptr)((int)pmVar5 + 2);\n          while (iVar13 == 0) {\n            if (rootp == pmVar8) goto LAB_0004f017;\n            iVar13 = local_f8[(int)pmVar8];\n            local_124[(int)pmVar8] = iVar13 + -1;\n            pmVar8 = (mp_ptr)((int)pmVar8 + 1);\n          }\n        }\n        goto LAB_0004efd7;\n      }\n    }" if (parenthesized_expression "(pmVar5 == (mp_ptr)0x0)" ( (binary_expression "pmVar5 == (mp_ptr)0x0" identifier == (cast_expression "(mp_ptr)0x0" ( (type_descriptor "mp_ptr" type_identifier) ) number_literal)) )) (compound_statement "{\nLAB_0004efd7:\n      if ((local_f8 != local_124) && ((int)pmVar8 < (int)rootp)) {\n        piVar12 = local_f8 + (int)pmVar8;\n        piVar11 = local_124 + (int)pmVar8;\n        do {\n          iVar13 = *piVar12;\n          piVar12 = piVar12 + 1;\n          *piVar11 = iVar13;\n          piVar11 = piVar11 + 1;\n        } while ((int *)((int)local_f8 + local_128 + 4) != piVar12);\n      }\n    }" { (labeled_statement "LAB_0004efd7:\n      if ((local_f8 != local_124) && ((int)pmVar8 < (int)rootp)) {\n        piVar12 = local_f8 + (int)pmVar8;\n        piVar11 = local_124 + (int)pmVar8;\n        do {\n          iVar13 = *piVar12;\n          piVar12 = piVar12 + 1;\n          *piVar11 = iVar13;\n          piVar11 = piVar11 + 1;\n        } while ((int *)((int)local_f8 + local_128 + 4) != piVar12);\n      }" statement_identifier : (if_statement "if ((local_f8 != local_124) && ((int)pmVar8 < (int)rootp)) {\n        piVar12 = local_f8 + (int)pmVar8;\n        piVar11 = local_124 + (int)pmVar8;\n        do {\n          iVar13 = *piVar12;\n          piVar12 = piVar12 + 1;\n          *piVar11 = iVar13;\n          piVar11 = piVar11 + 1;\n        } while ((int *)((int)local_f8 + local_128 + 4) != piVar12);\n      }" if (parenthesized_expression "((local_f8 != local_124) && ((int)pmVar8 < (int)rootp))" ( (binary_expression "(local_f8 != local_124) && ((int)pmVar8 < (int)rootp)" (parenthesized_expression "(local_f8 != local_124)" ( (binary_expression "local_f8 != local_124" identifier != identifier) )) && (parenthesized_expression "((int)pmVar8 < (int)rootp)" ( (binary_expression "(int)pmVar8 < (int)rootp" (cast_expression "(int)pmVar8" ( (type_descriptor "int" primitive_type) ) identifier) < (cast_expression "(int)rootp" ( (type_descriptor "int" primitive_type) ) identifier)) ))) )) (compound_statement "{\n        piVar12 = local_f8 + (int)pmVar8;\n        piVar11 = local_124 + (int)pmVar8;\n        do {\n          iVar13 = *piVar12;\n          piVar12 = piVar12 + 1;\n          *piVar11 = iVar13;\n          piVar11 = piVar11 + 1;\n        } while ((int *)((int)local_f8 + local_128 + 4) != piVar12);\n      }" { (expression_statement "piVar12 = local_f8 + (int)pmVar8;" (assignment_expression "piVar12 = local_f8 + (int)pmVar8" identifier = (binary_expression "local_f8 + (int)pmVar8" identifier + (cast_expression "(int)pmVar8" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "piVar11 = local_124 + (int)pmVar8;" (assignment_expression "piVar11 = local_124 + (int)pmVar8" identifier = (binary_expression "local_124 + (int)pmVar8" identifier + (cast_expression "(int)pmVar8" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (do_statement "do {\n          iVar13 = *piVar12;\n          piVar12 = piVar12 + 1;\n          *piVar11 = iVar13;\n          piVar11 = piVar11 + 1;\n        } while ((int *)((int)local_f8 + local_128 + 4) != piVar12);" do (compound_statement "{\n          iVar13 = *piVar12;\n          piVar12 = piVar12 + 1;\n          *piVar11 = iVar13;\n          piVar11 = piVar11 + 1;\n        }" { (expression_statement "iVar13 = *piVar12;" (assignment_expression "iVar13 = *piVar12" identifier = (pointer_expression "*piVar12" * identifier)) ;) (expression_statement "piVar12 = piVar12 + 1;" (assignment_expression "piVar12 = piVar12 + 1" identifier = (binary_expression "piVar12 + 1" identifier + number_literal)) ;) (expression_statement "*piVar11 = iVar13;" (assignment_expression "*piVar11 = iVar13" (pointer_expression "*piVar11" * identifier) = identifier) ;) (expression_statement "piVar11 = piVar11 + 1;" (assignment_expression "piVar11 = piVar11 + 1" identifier = (binary_expression "piVar11 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "((int *)((int)local_f8 + local_128 + 4) != piVar12)" ( (binary_expression "(int *)((int)local_f8 + local_128 + 4) != piVar12" (cast_expression "(int *)((int)local_f8 + local_128 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_f8 + local_128 + 4)" ( (binary_expression "(int)local_f8 + local_128 + 4" (binary_expression "(int)local_f8 + local_128" (cast_expression "(int)local_f8" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) + number_literal) ))) != identifier) )) ;) }))) }) (else_clause "else {\n      *(mp_ptr *)(puVar17 + -4) = pmVar5;\n      *(int *)(puVar17 + -8) = iVar13;\n      *(int **)(puVar17 + -0xc) = local_f8;\n      *(int **)(puVar17 + -0x10) = local_124;\n      *(undefined4 *)(puVar17 + -0x14) = 0x4f0a5;\n      iVar13 = __gmpn_sub_n();\n      if (iVar13 == 0) goto LAB_0004efd7;\n      if (rootp != pmVar5) {\n        pmVar8 = (mp_ptr)((int)pmVar5 + 1);\n        local_c0 = (uint *)((int)pmVar5 * 4);\n        iVar13 = local_f8[(int)pmVar5];\n        local_124[(int)pmVar5] = iVar13 + -1;\n        if (iVar13 == 0) {\n          if ((int)rootp <= (int)pmVar8) goto LAB_0004f017;\n          iVar13 = local_f8[(int)pmVar5 + 1];\n          local_124[(int)pmVar5 + 1] = iVar13 + -1;\n          pmVar8 = (mp_ptr)((int)pmVar5 + 2);\n          while (iVar13 == 0) {\n            if (rootp == pmVar8) goto LAB_0004f017;\n            iVar13 = local_f8[(int)pmVar8];\n            local_124[(int)pmVar8] = iVar13 + -1;\n            pmVar8 = (mp_ptr)((int)pmVar8 + 1);\n          }\n        }\n        goto LAB_0004efd7;\n      }\n    }" else (compound_statement "{\n      *(mp_ptr *)(puVar17 + -4) = pmVar5;\n      *(int *)(puVar17 + -8) = iVar13;\n      *(int **)(puVar17 + -0xc) = local_f8;\n      *(int **)(puVar17 + -0x10) = local_124;\n      *(undefined4 *)(puVar17 + -0x14) = 0x4f0a5;\n      iVar13 = __gmpn_sub_n();\n      if (iVar13 == 0) goto LAB_0004efd7;\n      if (rootp != pmVar5) {\n        pmVar8 = (mp_ptr)((int)pmVar5 + 1);\n        local_c0 = (uint *)((int)pmVar5 * 4);\n        iVar13 = local_f8[(int)pmVar5];\n        local_124[(int)pmVar5] = iVar13 + -1;\n        if (iVar13 == 0) {\n          if ((int)rootp <= (int)pmVar8) goto LAB_0004f017;\n          iVar13 = local_f8[(int)pmVar5 + 1];\n          local_124[(int)pmVar5 + 1] = iVar13 + -1;\n          pmVar8 = (mp_ptr)((int)pmVar5 + 2);\n          while (iVar13 == 0) {\n            if (rootp == pmVar8) goto LAB_0004f017;\n            iVar13 = local_f8[(int)pmVar8];\n            local_124[(int)pmVar8] = iVar13 + -1;\n            pmVar8 = (mp_ptr)((int)pmVar8 + 1);\n          }\n        }\n        goto LAB_0004efd7;\n      }\n    }" { (expression_statement "*(mp_ptr *)(puVar17 + -4) = pmVar5;" (assignment_expression "*(mp_ptr *)(puVar17 + -4) = pmVar5" (pointer_expression "*(mp_ptr *)(puVar17 + -4)" * (cast_expression "(mp_ptr *)(puVar17 + -4)" ( (type_descriptor "mp_ptr *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar17 + -4)" ( (binary_expression "puVar17 + -4" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(puVar17 + -8) = iVar13;" (assignment_expression "*(int *)(puVar17 + -8) = iVar13" (pointer_expression "*(int *)(puVar17 + -8)" * (cast_expression "(int *)(puVar17 + -8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar17 + -8)" ( (binary_expression "puVar17 + -8" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int **)(puVar17 + -0xc) = local_f8;" (assignment_expression "*(int **)(puVar17 + -0xc) = local_f8" (pointer_expression "*(int **)(puVar17 + -0xc)" * (cast_expression "(int **)(puVar17 + -0xc)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar17 + -0xc)" ( (binary_expression "puVar17 + -0xc" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int **)(puVar17 + -0x10) = local_124;" (assignment_expression "*(int **)(puVar17 + -0x10) = local_124" (pointer_expression "*(int **)(puVar17 + -0x10)" * (cast_expression "(int **)(puVar17 + -0x10)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar17 + -0x10)" ( (binary_expression "puVar17 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar17 + -0x14) = 0x4f0a5;" (assignment_expression "*(undefined4 *)(puVar17 + -0x14) = 0x4f0a5" (pointer_expression "*(undefined4 *)(puVar17 + -0x14)" * (cast_expression "(undefined4 *)(puVar17 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar17 + -0x14)" ( (binary_expression "puVar17 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "iVar13 = __gmpn_sub_n();" (assignment_expression "iVar13 = __gmpn_sub_n()" identifier = (call_expression "__gmpn_sub_n()" identifier (argument_list "()" ( )))) ;) (if_statement "if (iVar13 == 0) goto LAB_0004efd7;" if (parenthesized_expression "(iVar13 == 0)" ( (binary_expression "iVar13 == 0" identifier == number_literal) )) (goto_statement "goto LAB_0004efd7;" goto statement_identifier ;)) (if_statement "if (rootp != pmVar5) {\n        pmVar8 = (mp_ptr)((int)pmVar5 + 1);\n        local_c0 = (uint *)((int)pmVar5 * 4);\n        iVar13 = local_f8[(int)pmVar5];\n        local_124[(int)pmVar5] = iVar13 + -1;\n        if (iVar13 == 0) {\n          if ((int)rootp <= (int)pmVar8) goto LAB_0004f017;\n          iVar13 = local_f8[(int)pmVar5 + 1];\n          local_124[(int)pmVar5 + 1] = iVar13 + -1;\n          pmVar8 = (mp_ptr)((int)pmVar5 + 2);\n          while (iVar13 == 0) {\n            if (rootp == pmVar8) goto LAB_0004f017;\n            iVar13 = local_f8[(int)pmVar8];\n            local_124[(int)pmVar8] = iVar13 + -1;\n            pmVar8 = (mp_ptr)((int)pmVar8 + 1);\n          }\n        }\n        goto LAB_0004efd7;\n      }" if (parenthesized_expression "(rootp != pmVar5)" ( (binary_expression "rootp != pmVar5" identifier != identifier) )) (compound_statement "{\n        pmVar8 = (mp_ptr)((int)pmVar5 + 1);\n        local_c0 = (uint *)((int)pmVar5 * 4);\n        iVar13 = local_f8[(int)pmVar5];\n        local_124[(int)pmVar5] = iVar13 + -1;\n        if (iVar13 == 0) {\n          if ((int)rootp <= (int)pmVar8) goto LAB_0004f017;\n          iVar13 = local_f8[(int)pmVar5 + 1];\n          local_124[(int)pmVar5 + 1] = iVar13 + -1;\n          pmVar8 = (mp_ptr)((int)pmVar5 + 2);\n          while (iVar13 == 0) {\n            if (rootp == pmVar8) goto LAB_0004f017;\n            iVar13 = local_f8[(int)pmVar8];\n            local_124[(int)pmVar8] = iVar13 + -1;\n            pmVar8 = (mp_ptr)((int)pmVar8 + 1);\n          }\n        }\n        goto LAB_0004efd7;\n      }" { (expression_statement "pmVar8 = (mp_ptr)((int)pmVar5 + 1);" (assignment_expression "pmVar8 = (mp_ptr)((int)pmVar5 + 1)" identifier = (call_expression "(mp_ptr)((int)pmVar5 + 1)" (parenthesized_expression "(mp_ptr)" ( identifier )) (argument_list "((int)pmVar5 + 1)" ( (binary_expression "(int)pmVar5 + 1" (cast_expression "(int)pmVar5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "local_c0 = (uint *)((int)pmVar5 * 4);" (assignment_expression "local_c0 = (uint *)((int)pmVar5 * 4)" identifier = (cast_expression "(uint *)((int)pmVar5 * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pmVar5 * 4)" ( (binary_expression "(int)pmVar5 * 4" (cast_expression "(int)pmVar5" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal) )))) ;) (expression_statement "iVar13 = local_f8[(int)pmVar5];" (assignment_expression "iVar13 = local_f8[(int)pmVar5]" identifier = (subscript_expression "local_f8[(int)pmVar5]" identifier [ (cast_expression "(int)pmVar5" ( (type_descriptor "int" primitive_type) ) identifier) ])) ;) (expression_statement "local_124[(int)pmVar5] = iVar13 + -1;" (assignment_expression "local_124[(int)pmVar5] = iVar13 + -1" (subscript_expression "local_124[(int)pmVar5]" identifier [ (cast_expression "(int)pmVar5" ( (type_descriptor "int" primitive_type) ) identifier) ]) = (binary_expression "iVar13 + -1" identifier + number_literal)) ;) (if_statement "if (iVar13 == 0) {\n          if ((int)rootp <= (int)pmVar8) goto LAB_0004f017;\n          iVar13 = local_f8[(int)pmVar5 + 1];\n          local_124[(int)pmVar5 + 1] = iVar13 + -1;\n          pmVar8 = (mp_ptr)((int)pmVar5 + 2);\n          while (iVar13 == 0) {\n            if (rootp == pmVar8) goto LAB_0004f017;\n            iVar13 = local_f8[(int)pmVar8];\n            local_124[(int)pmVar8] = iVar13 + -1;\n            pmVar8 = (mp_ptr)((int)pmVar8 + 1);\n          }\n        }" if (parenthesized_expression "(iVar13 == 0)" ( (binary_expression "iVar13 == 0" identifier == number_literal) )) (compound_statement "{\n          if ((int)rootp <= (int)pmVar8) goto LAB_0004f017;\n          iVar13 = local_f8[(int)pmVar5 + 1];\n          local_124[(int)pmVar5 + 1] = iVar13 + -1;\n          pmVar8 = (mp_ptr)((int)pmVar5 + 2);\n          while (iVar13 == 0) {\n            if (rootp == pmVar8) goto LAB_0004f017;\n            iVar13 = local_f8[(int)pmVar8];\n            local_124[(int)pmVar8] = iVar13 + -1;\n            pmVar8 = (mp_ptr)((int)pmVar8 + 1);\n          }\n        }" { (if_statement "if ((int)rootp <= (int)pmVar8) goto LAB_0004f017;" if (parenthesized_expression "((int)rootp <= (int)pmVar8)" ( (binary_expression "(int)rootp <= (int)pmVar8" (cast_expression "(int)rootp" ( (type_descriptor "int" primitive_type) ) identifier) <= (cast_expression "(int)pmVar8" ( (type_descriptor "int" primitive_type) ) identifier)) )) (goto_statement "goto LAB_0004f017;" goto statement_identifier ;)) (expression_statement "iVar13 = local_f8[(int)pmVar5 + 1];" (assignment_expression "iVar13 = local_f8[(int)pmVar5 + 1]" identifier = (subscript_expression "local_f8[(int)pmVar5 + 1]" identifier [ (binary_expression "(int)pmVar5 + 1" (cast_expression "(int)pmVar5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ])) ;) (expression_statement "local_124[(int)pmVar5 + 1] = iVar13 + -1;" (assignment_expression "local_124[(int)pmVar5 + 1] = iVar13 + -1" (subscript_expression "local_124[(int)pmVar5 + 1]" identifier [ (binary_expression "(int)pmVar5 + 1" (cast_expression "(int)pmVar5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ]) = (binary_expression "iVar13 + -1" identifier + number_literal)) ;) (expression_statement "pmVar8 = (mp_ptr)((int)pmVar5 + 2);" (assignment_expression "pmVar8 = (mp_ptr)((int)pmVar5 + 2)" identifier = (call_expression "(mp_ptr)((int)pmVar5 + 2)" (parenthesized_expression "(mp_ptr)" ( identifier )) (argument_list "((int)pmVar5 + 2)" ( (binary_expression "(int)pmVar5 + 2" (cast_expression "(int)pmVar5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (while_statement "while (iVar13 == 0) {\n            if (rootp == pmVar8) goto LAB_0004f017;\n            iVar13 = local_f8[(int)pmVar8];\n            local_124[(int)pmVar8] = iVar13 + -1;\n            pmVar8 = (mp_ptr)((int)pmVar8 + 1);\n          }" while (parenthesized_expression "(iVar13 == 0)" ( (binary_expression "iVar13 == 0" identifier == number_literal) )) (compound_statement "{\n            if (rootp == pmVar8) goto LAB_0004f017;\n            iVar13 = local_f8[(int)pmVar8];\n            local_124[(int)pmVar8] = iVar13 + -1;\n            pmVar8 = (mp_ptr)((int)pmVar8 + 1);\n          }" { (if_statement "if (rootp == pmVar8) goto LAB_0004f017;" if (parenthesized_expression "(rootp == pmVar8)" ( (binary_expression "rootp == pmVar8" identifier == identifier) )) (goto_statement "goto LAB_0004f017;" goto statement_identifier ;)) (expression_statement "iVar13 = local_f8[(int)pmVar8];" (assignment_expression "iVar13 = local_f8[(int)pmVar8]" identifier = (subscript_expression "local_f8[(int)pmVar8]" identifier [ (cast_expression "(int)pmVar8" ( (type_descriptor "int" primitive_type) ) identifier) ])) ;) (expression_statement "local_124[(int)pmVar8] = iVar13 + -1;" (assignment_expression "local_124[(int)pmVar8] = iVar13 + -1" (subscript_expression "local_124[(int)pmVar8]" identifier [ (cast_expression "(int)pmVar8" ( (type_descriptor "int" primitive_type) ) identifier) ]) = (binary_expression "iVar13 + -1" identifier + number_literal)) ;) (expression_statement "pmVar8 = (mp_ptr)((int)pmVar8 + 1);" (assignment_expression "pmVar8 = (mp_ptr)((int)pmVar8 + 1)" identifier = (call_expression "(mp_ptr)((int)pmVar8 + 1)" (parenthesized_expression "(mp_ptr)" ( identifier )) (argument_list "((int)pmVar8 + 1)" ( (binary_expression "(int)pmVar8 + 1" (cast_expression "(int)pmVar8" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) })) })) (goto_statement "goto LAB_0004efd7;" goto statement_identifier ;) })) }))) (labeled_statement "LAB_0004f017:\n    iVar13 = local_124[local_134];" statement_identifier : (expression_statement "iVar13 = local_124[local_134];" (assignment_expression "iVar13 = local_124[local_134]" identifier = (subscript_expression "local_124[local_134]" identifier [ identifier ])) ;)) (while_statement "while (iVar13 == 0) {\n      iVar13 = local_124[(int)rootp - 2];\n      rootp = (mp_ptr)((int)rootp - 1);\n    }" while (parenthesized_expression "(iVar13 == 0)" ( (binary_expression "iVar13 == 0" identifier == number_literal) )) (compound_statement "{\n      iVar13 = local_124[(int)rootp - 2];\n      rootp = (mp_ptr)((int)rootp - 1);\n    }" { (expression_statement "iVar13 = local_124[(int)rootp - 2];" (assignment_expression "iVar13 = local_124[(int)rootp - 2]" identifier = (subscript_expression "local_124[(int)rootp - 2]" identifier [ (binary_expression "(int)rootp - 2" (cast_expression "(int)rootp" ( (type_descriptor "int" primitive_type) ) identifier) - number_literal) ])) ;) (expression_statement "rootp = (mp_ptr)((int)rootp - 1);" (assignment_expression "rootp = (mp_ptr)((int)rootp - 1)" identifier = (call_expression "(mp_ptr)((int)rootp - 1)" (parenthesized_expression "(mp_ptr)" ( identifier )) (argument_list "((int)rootp - 1)" ( (binary_expression "(int)rootp - 1" (cast_expression "(int)rootp" ( (type_descriptor "int" primitive_type) ) identifier) - number_literal) )))) ;) })) (expression_statement "pmStack_d8 = rootp;" (assignment_expression "pmStack_d8 = rootp" identifier = identifier) ;) })))) (goto_statement "goto LAB_0004e9e0;" goto statement_identifier ;) })))
(translation_unit "uint FUN_0004e410(uint param_1,uint param_2,int param_3)\n\n{\n  byte bVar1;\n  code *pcVar2;\n  uint uVar3;\n  int iVar4;\n  uint uVar5;\n  int iVar6;\n  uint *puVar7;\n  int *piVar8;\n  int *piVar9;\n  int *extraout_ECX;\n  int iVar10;\n  uint uVar11;\n  uint *puVar12;\n  uint uVar13;\n  undefined1 *puVar14;\n  int iVar15;\n  int unaff_EDI;\n  int in_GS_OFFSET;\n  ushort in_FPUControlWord;\n  undefined8 uVar16;\n  undefined1 auStack_13c [8];\n  int local_134;\n  uint uStack_130;\n  uint *puStack_12c;\n  int local_128;\n  int *local_124;\n  int iStack_120;\n  uint *puStack_11c;\n  int iStack_118;\n  undefined4 uStack_114;\n  int iStack_110;\n  int iStack_10c;\n  int iStack_108;\n  int iStack_104;\n  uint uStack_100;\n  uint *puStack_fc;\n  int *local_f8;\n  uint uStack_f4;\n  uint uStack_f0;\n  uint uStack_ec;\n  uint uStack_e8;\n  uint uStack_e4;\n  int iStack_e0;\n  int iStack_dc;\n  uint uStack_d8;\n  int iStack_d4;\n  int iStack_d0;\n  int iStack_cc;\n  undefined4 uStack_c8;\n  int local_c4;\n  uint *local_c0;\n  int iStack_bc;\n  ushort uStack_b8;\n  int iStack_a8;\n  uint auStack_a4 [33];\n  int local_20;\n  \n  uVar16 = FUN_00025194();\n  local_124 = (int *)((ulonglong)uVar16 >> 0x20);\n  local_c0 = (uint *)uVar16;\n  local_c4 = unaff_EDI + 0x4fbe7;\n  puVar14 = auStack_13c;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  local_134 = param_1 + 0x3fffffff;\n  uVar11 = extraout_ECX[local_134];\n  local_128 = local_134 * 4;\n  uVar5 = 0x1f;\n  if (uVar11 != 0) {\n    for (; uVar11 >> uVar5 == 0; uVar5 = uVar5 - 1) {\n    }\n  }\n  iVar10 = (uVar5 ^ 0x1f) + 1;\n  uVar5 = param_1 * 0x20 - iVar10;\n  if (uVar5 < param_2) {\n    *local_c0 = 1;\n    if (local_124 == (int *)0x0) {\n      iVar10 = *extraout_ECX + -1;\n    }\n    else {\n      iVar10 = *extraout_ECX;\n      *local_124 = iVar10 + -1;\n      if (iVar10 == 0) {\n        if (1 < (int)param_1) {\n          iVar10 = extraout_ECX[1];\n          local_124[1] = iVar10 + -1;\n          if (iVar10 == 0) {\n            if (param_1 == 2) goto LAB_0004ef98;\n            iVar10 = extraout_ECX[2];\n            uVar11 = 3;\n            local_124[2] = iVar10 + -1;\n            while (iVar10 == 0) {\n              if (param_1 == uVar11) goto LAB_0004ef98;\n              iVar10 = extraout_ECX[uVar11];\n              local_124[uVar11] = iVar10 + -1;\n              uVar11 = uVar11 + 1;\n            }\n          }\n          else {\n            uVar11 = 2;\n          }\n          if ((extraout_ECX != local_124) && ((int)uVar11 < (int)param_1)) {\n            piVar9 = extraout_ECX + uVar11;\n            piVar8 = local_124 + uVar11;\n            do {\n              iVar10 = *piVar9;\n              piVar9 = piVar9 + 1;\n              *piVar8 = iVar10;\n              piVar8 = piVar8 + 1;\n            } while (extraout_ECX + param_1 + 0x40000000 != piVar9);\n          }\n        }\n      }\n      else if ((extraout_ECX != local_124) && (1 < (int)param_1)) {\n        piVar9 = extraout_ECX + 1;\n        piVar8 = local_124;\n        do {\n          piVar8 = piVar8 + 1;\n          iVar10 = *piVar9;\n          piVar9 = piVar9 + 1;\n          *piVar8 = iVar10;\n        } while (extraout_ECX + param_1 + 0x40000000 != piVar9);\n      }\nLAB_0004ef98:\n      iVar10 = local_124[local_134];\n    }\n    uStack_d8 = param_1 - (iVar10 == 0);\n    goto LAB_0004e9ee;\n  }\n  if (iVar10 == 0x20) {\n    uVar11 = extraout_ECX[param_1 + 0x3ffffffe];\n  }\n  else {\n    uVar11 = (uint)extraout_ECX[(param_1 - 1) - (uint)(param_1 != 1)] >>\n             (0x20 - (byte)iVar10 & 0x1f) | uVar11 << ((byte)iVar10 & 0x1f);\n  }\n  uVar11 = (uint)*(byte *)(unaff_EDI + 0x32bc7 + (uVar11 >> 0x18));\n  if (uVar5 < 0x1000000) {\n    uStack_e8 = (uVar5 * 0x100 | uVar11) / param_2;\n    uVar11 = uStack_e8 & 0xff;\n    uStack_e8 = uStack_e8 >> 8;\n  }\n  else {\n    uStack_e8 = uVar5 / param_2;\n    uVar11 = (uVar5 % param_2 << 8 | uVar11) / param_2;\n  }\n  iVar10 = uStack_e8 * param_2;\n  bVar1 = *(byte *)(unaff_EDI + 0x32ac7 + uVar11);\n  uStack_ec = param_2 - 1;\n  uVar11 = 3;\n  for (uVar5 = uStack_ec >> 2; uVar5 != 0; uVar5 = uVar5 >> 1) {\n    uVar11 = uVar11 + 1;\n  }\n  puStack_fc = auStack_a4;\n  iVar15 = 0;\n  auStack_a4[0] = uStack_e8;\n  if (8 < uStack_e8) {\n    iVar4 = 0;\n    do {\n      while (iVar15 = iVar4, uVar11 < uStack_e8) {\n        uStack_e8 = uStack_e8 + uVar11 >> 1;\n        puStack_fc[iVar15 + 1] = uStack_e8;\n        iVar4 = iVar15 + 1;\n        if (uStack_e8 < 9) goto LAB_0004e56d;\n      }\n      uStack_e8 = uStack_e8 - 1;\n      puStack_fc[iVar15 + 1] = uStack_e8;\n      iVar4 = iVar15 + 1;\n    } while (uStack_e8 != 8);\n    uStack_e8 = 8;\nLAB_0004e56d:\n    iVar15 = iVar15 + 1;\n  }\n  iStack_a8 = 0;\n  uStack_f4 = iVar10 - uStack_e8;\n  *local_c0 = (bVar1 | 0x100) >> (8U - (char)uStack_e8 & 0x1f);\n  uStack_c8 = 0;\n  uStack_b8 = in_FPUControlWord | 0xc00;\n  iStack_bc = (int)ROUND((double)param_2 * *(double *)(unaff_EDI + 0x32cc7) *\n                         (double)*(float *)(&UNK_00032ccf + unaff_EDI));\n  iStack_cc = param_1 + 2 + iStack_bc;\n  uVar11 = (param_1 + 1 + iStack_cc * 2) * 4;\n  local_f8 = extraout_ECX;\n  if (uVar11 < 0x7f01) {\n    iStack_120 = -(uVar11 + 0x1b & 0xfffffff0);\n    puVar14 = auStack_13c + iStack_120;\n    iStack_120 = (int)&uStack_130 + iStack_120;\n  }\n  else {\n    iStack_120 = __gmp_tmp_reentrant_alloc(&iStack_a8,uVar11);\n    uVar16 = CONCAT44(local_124,local_c0);\n    puVar14 = auStack_13c;\n  }\n  local_124 = (int *)((ulonglong)uVar16 >> 0x20);\n  iVar10 = iStack_120 + local_128 + 8;\n  iStack_d0 = iVar10 + iStack_cc * 4;\n  iStack_d4 = (int)local_124;\n  if (local_124 == (int *)0x0) {\n    iStack_d4 = iStack_120;\n  }\n  if (iVar15 != 0) {\n    iStack_104 = iVar15 + -1;\n    puStack_fc = auStack_a4;\n    iStack_cc = 1;\n    iStack_e0 = *(int *)(local_c4 + -0x26c);\n    iStack_dc = iVar10;\nLAB_0004e690:\n    local_124 = (int *)((ulonglong)uVar16 >> 0x20);\n    local_c0 = (uint *)uVar16;\n    uStack_e4 = uStack_f4 - uStack_e8 * uStack_ec;\n    iVar10 = param_1 - (uStack_e4 >> 5);\n    piVar9 = local_f8 + (uStack_e4 >> 5);\n    if ((uStack_e4 & 0x1f) == 0) {\n      *(int *)(puVar14 + -8) = iVar10;\n      *(int **)(puVar14 + -0xc) = piVar9;\n      iVar15 = iStack_e0;\n      *(int *)(puVar14 + -0x10) = iStack_d4;\n      pcVar2 = *(code **)(iVar15 + 0x28);\n      *(undefined4 *)(puVar14 + -0x14) = 0x4ed34;\n      (*pcVar2)();\n    }\n    else {\n      *(uint *)(puVar14 + -4) = uStack_e4 & 0x1f;\n      *(int *)(puVar14 + -8) = iVar10;\n      *(int **)(puVar14 + -0xc) = piVar9;\n      iVar15 = iStack_e0;\n      *(int *)(puVar14 + -0x10) = iStack_d4;\n      pcVar2 = *(code **)(iVar15 + 0x80);\n      *(undefined4 *)(puVar14 + -0x14) = 0x4e6dc;\n      (*pcVar2)();\n    }\n    iVar4 = iStack_d4;\n    iVar15 = iStack_dc;\n    uStack_d8 = iVar10 - (uint)(*(int *)(iStack_d4 + (iVar10 + -1) * 4) == 0);\n    do {\n      *(int *)(puVar14 + -0x10) = iVar15;\n      *(uint *)(puVar14 + -0x14) = uStack_ec;\n      *(int *)(puVar14 + -0x18) = iStack_cc;\n      *(uint **)(puVar14 + -0x1c) = local_c0;\n      *(int *)(puVar14 + -0x20) = iStack_d0;\n      *(undefined4 *)(puVar14 + -0x24) = 0x4e727;\n      iVar10 = __gmpn_pow_1();\n      *(int *)(puVar14 + -0x10) = iStack_cc;\n      *(uint **)(puVar14 + -0x14) = local_c0;\n      *(int *)(puVar14 + -0x18) = iVar10;\n      *(int *)(puVar14 + -0x1c) = iStack_d0;\n      *(int *)(puVar14 + -0x20) = iVar15;\n      iStack_dc = iVar10;\n      *(undefined4 *)(puVar14 + -0x24) = 0x4e74f;\n      __gmpn_mul();\n      iVar10 = iStack_d4;\n      uVar11 = uStack_d8;\n      iVar6 = (iStack_cc + iStack_dc) -\n              (uint)(*(int *)(iVar15 + -4 + (iStack_cc + iStack_dc) * 4) == 0);\n      puVar7 = local_c0;\n      if (iVar6 <= (int)uStack_d8) {\n        uVar5 = uStack_d8;\n        if (uStack_d8 != iVar6) goto LAB_0004eb66;\n        do {\n          uVar5 = uVar5 + -1;\n          if ((int)uVar5 < 0) {\n            iStack_108 = iStack_dc;\n            uStack_114 = 0;\n            iStack_10c = iStack_104;\n            uStack_e8 = puStack_fc[iStack_104] - puStack_fc[iStack_104 + 1];\n            iStack_118 = puStack_fc[iStack_104 + 1] - puStack_fc[iStack_104];\n            uStack_f0 = uStack_e8 >> 5;\n            uStack_f4 = iStack_118 + uStack_e4;\n            uVar11 = uStack_e4 - 1;\n            uStack_e4 = uStack_e8 & 0x1f;\n            puVar12 = (uint *)((uVar11 >> 5) - (uStack_f4 >> 5));\n            uStack_100 = uStack_f0 * 4;\n            uVar11 = 0;\n            iStack_110 = (int)puVar12 + 1;\n            uVar5 = uStack_f4 >> 5;\n            puVar7 = (uint *)(iStack_d4 + uStack_f0 * 4);\n            iStack_dc = iVar15;\n            uStack_d8 = uStack_f0;\n            goto LAB_0004e83d;\n          }\n          uVar13 = *(uint *)(iVar4 + uVar5 * 4);\n          uVar3 = *(uint *)(iVar15 + uVar5 * 4);\n        } while (uVar3 == uVar13);\n        if (uVar3 <= uVar13) goto LAB_0004eb66;\n      }\n      do {\n        uVar11 = *puVar7;\n        *puVar7 = *puVar7 - 1;\n        puVar7 = puVar7 + 1;\n      } while (uVar11 == 0);\n    } while( true );\n  }\n  iStack_cc = 1;\nLAB_0004e9ce:\n  piVar9 = local_f8;\n  local_c0 = (uint *)uVar16;\n  if ((param_3 == 0) || (*local_c0 < 2)) {\n    do {\n      local_124 = (int *)((ulonglong)uVar16 >> 0x20);\n      local_c0 = (uint *)uVar16;\n      *(int *)(puVar14 + -0x10) = iStack_d0;\n      *(uint *)(puVar14 + -0x14) = param_2;\n      *(int *)(puVar14 + -0x18) = iStack_cc;\n      *(uint **)(puVar14 + -0x1c) = local_c0;\n      *(int *)(puVar14 + -0x20) = iVar10;\n      *(undefined4 *)(puVar14 + -0x24) = 0x4ea47;\n      uVar11 = __gmpn_pow_1();\n      uVar16 = CONCAT44(local_124,local_c0);\n      if ((int)uVar11 <= (int)param_1) {\n        uVar5 = param_1;\n        if (param_1 != uVar11) goto LAB_0004efbf;\n        do {\n          uVar5 = uVar5 - 1;\n          if ((int)uVar5 < 0) {\n            uStack_d8 = 0;\n            uVar16 = CONCAT44(local_124,local_c0);\n            goto LAB_0004e9e0;\n          }\n          uVar13 = *(uint *)(iVar10 + uVar5 * 4);\n        } while (uVar13 == piVar9[uVar5]);\n        if (uVar13 <= (uint)piVar9[uVar5]) goto LAB_0004efbf;\n      }\n      do {\n        iVar15 = *local_c0;\n        *local_c0 = *local_c0 + -1;\n        local_c0 = (uint *)((int *)local_c0 + 1);\n      } while (iVar15 == 0);\n    } while( true );\n  }\nLAB_0004e9e0:\n  local_124 = (int *)((ulonglong)uVar16 >> 0x20);\n  local_c0 = (uint *)uVar16;\n  if (iStack_a8 != 0) {\n    *(int *)(puVar14 + -0x10) = iStack_a8;\n    *(undefined4 *)(puVar14 + -0x14) = 0x4f1a9;\n    __gmp_tmp_reentrant_free();\n    uVar16 = CONCAT44(local_124,local_c0);\n  }\nLAB_0004e9ee:\n  local_124 = (int *)((ulonglong)uVar16 >> 0x20);\n  local_c0 = (uint *)uVar16;\n  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return uStack_d8;\n  }\n                    \n  *(undefined **)(puVar14 + -4) = &UNK_0004f214;\n  FUN_0007ebe0();\nLAB_0004eb66:\n  iStack_108 = iStack_dc;\n  iStack_10c = iStack_104;\n  uStack_e8 = puStack_fc[iStack_104] - puStack_fc[iStack_104 + 1];\n  iStack_118 = puStack_fc[iStack_104 + 1] - puStack_fc[iStack_104];\n  uStack_f0 = uStack_e8 >> 5;\n  uStack_f4 = iStack_118 + uStack_e4;\n  uVar5 = uStack_f4 >> 5;\n  puStack_11c = (uint *)((uStack_e4 - 1 >> 5) - uVar5);\n  iStack_110 = (int)puStack_11c + 1;\n  uStack_e4 = uVar5;\n  iStack_dc = iVar15;\n  if (iVar6 != 0) {\n    *(int *)(puVar14 + -4) = iVar6;\n    *(int *)(puVar14 + -8) = iStack_dc;\n    *(int *)(puVar14 + -0xc) = iVar10;\n    *(int *)(puVar14 + -0x10) = iVar10;\n    uStack_d8 = iVar6;\n    *(undefined4 *)(puVar14 + -0x14) = 0x4ee32;\n    iVar10 = __gmpn_sub_n();\n    if ((iVar10 != 0) && (uVar11 != uStack_d8)) {\n      piVar9 = (int *)(iStack_d4 + uStack_d8 * 4);\n      iVar10 = *piVar9;\n      *piVar9 = iVar10 + -1;\n      if ((iVar10 == 0) && ((int)(uStack_d8 + 1) < (int)uVar11)) {\n        piVar9 = (int *)(iStack_d4 + (uStack_d8 + 1) * 4);\n        iVar15 = uStack_d8 + 2;\n        iVar10 = *piVar9;\n        *piVar9 = iVar10 + -1;\n        for (; (iVar10 == 0 && (uVar11 != iVar15)); iVar15 = iVar15 + 1) {\n          iVar10 = *(int *)(iStack_d4 + iVar15 * 4);\n          *(int *)(iStack_d4 + iVar15 * 4) = iVar10 + -1;\n        }\n      }\n    }\n  }\n  iVar4 = iStack_d4;\n  iVar15 = iStack_e0;\n  iVar10 = *(int *)(iStack_d4 + (uVar11 + -1) * 4);\n  while (iVar10 == 0) {\n    iVar10 = *(int *)(iStack_d4 + (uVar11 + -2) * 4);\n    uVar11 = uVar11 + -1;\n  }\n  uStack_100 = uStack_f0 * 4;\n  puVar7 = (uint *)(iStack_d4 + uStack_f0 * 4);\n  uStack_d8 = uStack_f0 + uVar11;\n  uVar5 = uStack_e8 & 0x1f;\n  uStack_130 = uStack_e4;\n  puStack_12c = puVar7;\n  if (uVar5 == 0) {\n    uStack_e4 = uVar5;\n    *(uint *)(puVar14 + -8) = uVar11;\n    *(int *)(puVar14 + -0xc) = iStack_d4;\n    *(uint **)(puVar14 + -0x10) = puVar7;\n    pcVar2 = *(code **)(iVar15 + 0x24);\n    *(undefined4 *)(puVar14 + -0x14) = 0x4ed9a;\n    (*pcVar2)();\n  }\n  else {\n    uStack_e4 = uVar5;\n    *(uint *)(puVar14 + -4) = uVar5;\n    *(uint *)(puVar14 + -8) = uVar11;\n    *(int *)(puVar14 + -0xc) = iVar4;\n    iVar10 = iStack_e0;\n    *(uint **)(puVar14 + -0x10) = puVar7;\n    pcVar2 = *(code **)(iVar10 + 0x38);\n    *(undefined4 *)(puVar14 + -0x14) = 0x4ec66;\n    iVar10 = (*pcVar2)();\n    if (iVar10 != 0) {\n      *(int *)(iStack_d4 + uStack_d8 * 4) = iVar10;\n      uStack_d8 = uStack_d8 + 1;\n    }\n  }\n  uVar11 = *puStack_12c;\n  uVar5 = uStack_130;\n  puVar7 = puStack_12c;\n  puVar12 = puStack_11c;\n  if ((int)uStack_f0 < (int)puStack_11c) {\n    uStack_114 = *(undefined4 *)(iStack_d4 + uStack_100 + 4);\n  }\nLAB_0004e83d:\n  piVar9 = local_f8 + uVar5;\n  puStack_11c = puVar7;\n  if ((uStack_f4 & 0x1f) == 0) {\n    *(int *)(puVar14 + -8) = iStack_110;\n    *(int **)(puVar14 + -0xc) = piVar9;\n    *(int *)(puVar14 + -0x10) = iStack_d4;\n    pcVar2 = *(code **)(iStack_e0 + 0x28);\n    *(undefined4 *)(puVar14 + -0x14) = 0x4ed09;\n    (*pcVar2)();\n  }\n  else {\n    *(uint *)(puVar14 + -4) = uStack_f4 & 0x1f;\n    *(int *)(puVar14 + -8) = iStack_110;\n    *(int **)(puVar14 + -0xc) = piVar9;\n    iVar10 = iStack_e0;\n    *(int *)(puVar14 + -0x10) = iStack_d4;\n    pcVar2 = *(code **)(iVar10 + 0x80);\n    *(undefined4 *)(puVar14 + -0x14) = 0x4e875;\n    (*pcVar2)();\n  }\n  iVar15 = iStack_d0;\n  iVar10 = iStack_108;\n  *puStack_11c = uVar11 | ~(-1 << ((byte)uStack_e4 & 0x1f)) & *puStack_11c;\n  if ((int)uStack_f0 < (int)puVar12) {\n    *(undefined4 *)(iStack_d4 + (uStack_f0 + 1) * 4) = uStack_114;\n  }\n  *(uint *)(puVar14 + -4) = param_2;\n  iVar4 = iStack_e0;\n  *(int *)(puVar14 + -8) = iVar10;\n  *(int *)(puVar14 + -0xc) = iVar15;\n  *(int *)(puVar14 + -0x10) = iVar15;\n  pcVar2 = *(code **)(iVar4 + 100);\n  *(undefined4 *)(puVar14 + -0x14) = 0x4e8c9;\n  iVar6 = (*pcVar2)();\n  puVar7 = local_c0;\n  iVar4 = iStack_cc;\n  *(int *)(iVar15 + iVar10 * 4) = iVar6;\n  iVar10 = (uint)(iVar6 != 0) + iVar10;\n  puVar12 = (uint *)(uStack_100 + (int)local_c0);\n  iVar15 = uStack_f0 + iStack_cc;\n  if (uStack_e4 == 0) {\n    *(int *)(puVar14 + -8) = iStack_cc;\n    *(uint **)(puVar14 + -0xc) = local_c0;\n    *(uint **)(puVar14 + -0x10) = puVar12;\n    pcVar2 = *(code **)(iStack_e0 + 0x24);\n    *(undefined4 *)(puVar14 + -0x14) = 0x4ecd9;\n    (*pcVar2)();\nLAB_0004ecdc:\n    iStack_cc = iVar15;\n  }\n  else {\n    *(uint *)(puVar14 + -4) = uStack_e4;\n    *(int *)(puVar14 + -8) = iVar4;\n    *(uint **)(puVar14 + -0xc) = puVar7;\n    *(uint **)(puVar14 + -0x10) = puVar12;\n    pcVar2 = *(code **)(iStack_e0 + 0x38);\n    *(undefined4 *)(puVar14 + -0x14) = 0x4e915;\n    uVar11 = (*pcVar2)();\n    if (uVar11 == 0) goto LAB_0004ecdc;\n    local_c0[iVar15] = uVar11;\n    iStack_cc = iVar15 + 1;\n  }\n  uStack_f0 = *puVar12;\n  uVar5 = uStack_e8 - 1 >> 5;\n  uVar11 = uVar5 + 1;\n  if ((int)uStack_d8 < iVar10) {\n    *(uint *)(puVar14 + -8) = uVar11 * 4;\n    *(undefined4 *)(puVar14 + -0xc) = 0;\n    *(uint **)(puVar14 + -0x10) = local_c0;\n    *(undefined4 *)(puVar14 + -0x14) = 0x4ee04;\n    memset(*(void **)(puVar14 + -0x10),*(int *)(puVar14 + -0xc),*(size_t *)(puVar14 + -8));\n    goto LAB_0004e9ab;\n  }\n  iVar15 = uStack_d8 - iVar10;\n  if (iVar15 <= (int)uVar11) {\n    *(int *)(puVar14 + -0xc) = iStack_120;\n    *(int *)(puVar14 + -0x10) = iVar10;\n    *(int *)(puVar14 + -0x14) = iStack_d0;\n    *(uint *)(puVar14 + -0x18) = uStack_d8;\n    *(int *)(puVar14 + -0x1c) = iStack_d4;\n    *(int *)(puVar14 + -0x20) = iStack_dc;\n    iStack_108 = iVar15;\n    uStack_100 = uVar11;\n    *(undefined4 *)(puVar14 + -0x24) = 0x4ead1;\n    __gmpn_div_q();\n    puVar7 = local_c0;\n    iVar10 = iStack_e0;\n    uVar13 = (uint)(*(int *)(iStack_dc + iStack_108 * 4) != 0) + iStack_108;\n    uVar11 = uStack_100;\n    if ((int)uVar13 <= (int)uStack_100) {\n      if ((uStack_100 != uVar13) || (uStack_e4 == 0)) {\n        uStack_e4 = uStack_100;\n        *(uint *)(puVar14 + -8) = uVar13;\n        *(int *)(puVar14 + -0xc) = iStack_dc;\n        *(uint **)(puVar14 + -0x10) = puVar7;\n        pcVar2 = *(code **)(iVar10 + 0x28);\n        *(undefined4 *)(puVar14 + -0x14) = 0x4eb2a;\n        (*pcVar2)();\n        if (uStack_e4 != uVar13) {\n          *(uint *)(puVar14 + -8) = (uStack_e4 - uVar13) * 4;\n          *(undefined4 *)(puVar14 + -0xc) = 0;\n          *(uint **)(puVar14 + -0x10) = puVar7 + uVar13;\n          *(undefined4 *)(puVar14 + -0x14) = 0x4eb55;\n          memset(*(void **)(puVar14 + -0x10),*(int *)(puVar14 + -0xc),*(size_t *)(puVar14 + -8));\n        }\n        goto LAB_0004e9ab;\n      }\n      if (*(uint *)(iStack_dc + -4 + uVar13 * 4) >> ((byte)uStack_e4 & 0x1f) == 0) {\n        *(uint *)(puVar14 + -8) = uVar13;\n        *(int *)(puVar14 + -0xc) = iStack_dc;\n        *(uint **)(puVar14 + -0x10) = local_c0;\n        pcVar2 = *(code **)(iVar10 + 0x28);\n        *(undefined4 *)(puVar14 + -0x14) = 0x4ede2;\n        (*pcVar2)();\n        goto LAB_0004e9ab;\n      }\n    }\n  }\n  puVar7 = local_c0;\n  if (uVar11 != 1) {\n    *(uint *)(puVar14 + -8) = uVar5 * 4;\n    *(undefined4 *)(puVar14 + -0xc) = 0xff;\n    *(uint **)(puVar14 + -0x10) = local_c0;\n    *(undefined4 *)(puVar14 + -0x14) = 0x4e98f;\n    memset(*(void **)(puVar14 + -0x10),*(int *)(puVar14 + -0xc),*(size_t *)(puVar14 + -8));\n    puVar7 = local_c0 + uVar5;\n  }\n  *puVar7 = 0xffffffff >> ((byte)iStack_118 & 0x1f);\nLAB_0004e9ab:\n  uVar16 = CONCAT44(local_124,local_c0);\n  iStack_104 = iStack_104 + -1;\n  *puVar12 = *puVar12 | uStack_f0;\n  iVar10 = iStack_dc;\n  if (iStack_10c == 0) goto LAB_0004e9ce;\n  goto LAB_0004e690;\nLAB_0004efbf:\n  if (local_124 == (int *)0x0) {\n    uStack_d8 = 1;\n  }\n  else {\n    uVar5 = uVar11;\n    if (uVar11 == 0) {\nLAB_0004efd7:\n      if ((local_f8 != local_124) && ((int)uVar5 < (int)param_1)) {\n        piVar9 = local_f8 + uVar5;\n        piVar8 = local_124 + uVar5;\n        do {\n          iVar10 = *piVar9;\n          piVar9 = piVar9 + 1;\n          *piVar8 = iVar10;\n          piVar8 = piVar8 + 1;\n        } while ((int *)((int)local_f8 + local_128 + 4) != piVar9);\n      }\n    }\n    else {\n      *(uint *)(puVar14 + -4) = uVar11;\n      *(int *)(puVar14 + -8) = iVar10;\n      *(int **)(puVar14 + -0xc) = local_f8;\n      *(int **)(puVar14 + -0x10) = local_124;\n      *(undefined4 *)(puVar14 + -0x14) = 0x4f0a5;\n      iVar10 = __gmpn_sub_n();\n      if (iVar10 == 0) goto LAB_0004efd7;\n      if (param_1 != uVar11) {\n        local_c0 = (uint *)(uVar11 * 4);\n        uVar5 = uVar11 + 1;\n        iVar10 = local_f8[uVar11];\n        local_124[uVar11] = iVar10 + -1;\n        if (iVar10 == 0) {\n          if ((int)param_1 <= (int)uVar5) goto LAB_0004f017;\n          iVar10 = local_f8[uVar11 + 1];\n          local_124[uVar11 + 1] = iVar10 + -1;\n          uVar5 = uVar11 + 2;\n          while (iVar10 == 0) {\n            if (param_1 == uVar5) goto LAB_0004f017;\n            iVar10 = local_f8[uVar5];\n            local_124[uVar5] = iVar10 + -1;\n            uVar5 = uVar5 + 1;\n          }\n        }\n        goto LAB_0004efd7;\n      }\n    }\nLAB_0004f017:\n    iVar10 = local_124[local_134];\n    uStack_d8 = param_1;\n    while (uVar16 = CONCAT44(local_124,local_c0), iVar10 == 0) {\n      iVar10 = local_124[uStack_d8 - 2];\n      uStack_d8 = uStack_d8 - 1;\n    }\n  }\n  goto LAB_0004e9e0;\n}\n\n" (function_definition "uint FUN_0004e410(uint param_1,uint param_2,int param_3)\n\n{\n  byte bVar1;\n  code *pcVar2;\n  uint uVar3;\n  int iVar4;\n  uint uVar5;\n  int iVar6;\n  uint *puVar7;\n  int *piVar8;\n  int *piVar9;\n  int *extraout_ECX;\n  int iVar10;\n  uint uVar11;\n  uint *puVar12;\n  uint uVar13;\n  undefined1 *puVar14;\n  int iVar15;\n  int unaff_EDI;\n  int in_GS_OFFSET;\n  ushort in_FPUControlWord;\n  undefined8 uVar16;\n  undefined1 auStack_13c [8];\n  int local_134;\n  uint uStack_130;\n  uint *puStack_12c;\n  int local_128;\n  int *local_124;\n  int iStack_120;\n  uint *puStack_11c;\n  int iStack_118;\n  undefined4 uStack_114;\n  int iStack_110;\n  int iStack_10c;\n  int iStack_108;\n  int iStack_104;\n  uint uStack_100;\n  uint *puStack_fc;\n  int *local_f8;\n  uint uStack_f4;\n  uint uStack_f0;\n  uint uStack_ec;\n  uint uStack_e8;\n  uint uStack_e4;\n  int iStack_e0;\n  int iStack_dc;\n  uint uStack_d8;\n  int iStack_d4;\n  int iStack_d0;\n  int iStack_cc;\n  undefined4 uStack_c8;\n  int local_c4;\n  uint *local_c0;\n  int iStack_bc;\n  ushort uStack_b8;\n  int iStack_a8;\n  uint auStack_a4 [33];\n  int local_20;\n  \n  uVar16 = FUN_00025194();\n  local_124 = (int *)((ulonglong)uVar16 >> 0x20);\n  local_c0 = (uint *)uVar16;\n  local_c4 = unaff_EDI + 0x4fbe7;\n  puVar14 = auStack_13c;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  local_134 = param_1 + 0x3fffffff;\n  uVar11 = extraout_ECX[local_134];\n  local_128 = local_134 * 4;\n  uVar5 = 0x1f;\n  if (uVar11 != 0) {\n    for (; uVar11 >> uVar5 == 0; uVar5 = uVar5 - 1) {\n    }\n  }\n  iVar10 = (uVar5 ^ 0x1f) + 1;\n  uVar5 = param_1 * 0x20 - iVar10;\n  if (uVar5 < param_2) {\n    *local_c0 = 1;\n    if (local_124 == (int *)0x0) {\n      iVar10 = *extraout_ECX + -1;\n    }\n    else {\n      iVar10 = *extraout_ECX;\n      *local_124 = iVar10 + -1;\n      if (iVar10 == 0) {\n        if (1 < (int)param_1) {\n          iVar10 = extraout_ECX[1];\n          local_124[1] = iVar10 + -1;\n          if (iVar10 == 0) {\n            if (param_1 == 2) goto LAB_0004ef98;\n            iVar10 = extraout_ECX[2];\n            uVar11 = 3;\n            local_124[2] = iVar10 + -1;\n            while (iVar10 == 0) {\n              if (param_1 == uVar11) goto LAB_0004ef98;\n              iVar10 = extraout_ECX[uVar11];\n              local_124[uVar11] = iVar10 + -1;\n              uVar11 = uVar11 + 1;\n            }\n          }\n          else {\n            uVar11 = 2;\n          }\n          if ((extraout_ECX != local_124) && ((int)uVar11 < (int)param_1)) {\n            piVar9 = extraout_ECX + uVar11;\n            piVar8 = local_124 + uVar11;\n            do {\n              iVar10 = *piVar9;\n              piVar9 = piVar9 + 1;\n              *piVar8 = iVar10;\n              piVar8 = piVar8 + 1;\n            } while (extraout_ECX + param_1 + 0x40000000 != piVar9);\n          }\n        }\n      }\n      else if ((extraout_ECX != local_124) && (1 < (int)param_1)) {\n        piVar9 = extraout_ECX + 1;\n        piVar8 = local_124;\n        do {\n          piVar8 = piVar8 + 1;\n          iVar10 = *piVar9;\n          piVar9 = piVar9 + 1;\n          *piVar8 = iVar10;\n        } while (extraout_ECX + param_1 + 0x40000000 != piVar9);\n      }\nLAB_0004ef98:\n      iVar10 = local_124[local_134];\n    }\n    uStack_d8 = param_1 - (iVar10 == 0);\n    goto LAB_0004e9ee;\n  }\n  if (iVar10 == 0x20) {\n    uVar11 = extraout_ECX[param_1 + 0x3ffffffe];\n  }\n  else {\n    uVar11 = (uint)extraout_ECX[(param_1 - 1) - (uint)(param_1 != 1)] >>\n             (0x20 - (byte)iVar10 & 0x1f) | uVar11 << ((byte)iVar10 & 0x1f);\n  }\n  uVar11 = (uint)*(byte *)(unaff_EDI + 0x32bc7 + (uVar11 >> 0x18));\n  if (uVar5 < 0x1000000) {\n    uStack_e8 = (uVar5 * 0x100 | uVar11) / param_2;\n    uVar11 = uStack_e8 & 0xff;\n    uStack_e8 = uStack_e8 >> 8;\n  }\n  else {\n    uStack_e8 = uVar5 / param_2;\n    uVar11 = (uVar5 % param_2 << 8 | uVar11) / param_2;\n  }\n  iVar10 = uStack_e8 * param_2;\n  bVar1 = *(byte *)(unaff_EDI + 0x32ac7 + uVar11);\n  uStack_ec = param_2 - 1;\n  uVar11 = 3;\n  for (uVar5 = uStack_ec >> 2; uVar5 != 0; uVar5 = uVar5 >> 1) {\n    uVar11 = uVar11 + 1;\n  }\n  puStack_fc = auStack_a4;\n  iVar15 = 0;\n  auStack_a4[0] = uStack_e8;\n  if (8 < uStack_e8) {\n    iVar4 = 0;\n    do {\n      while (iVar15 = iVar4, uVar11 < uStack_e8) {\n        uStack_e8 = uStack_e8 + uVar11 >> 1;\n        puStack_fc[iVar15 + 1] = uStack_e8;\n        iVar4 = iVar15 + 1;\n        if (uStack_e8 < 9) goto LAB_0004e56d;\n      }\n      uStack_e8 = uStack_e8 - 1;\n      puStack_fc[iVar15 + 1] = uStack_e8;\n      iVar4 = iVar15 + 1;\n    } while (uStack_e8 != 8);\n    uStack_e8 = 8;\nLAB_0004e56d:\n    iVar15 = iVar15 + 1;\n  }\n  iStack_a8 = 0;\n  uStack_f4 = iVar10 - uStack_e8;\n  *local_c0 = (bVar1 | 0x100) >> (8U - (char)uStack_e8 & 0x1f);\n  uStack_c8 = 0;\n  uStack_b8 = in_FPUControlWord | 0xc00;\n  iStack_bc = (int)ROUND((double)param_2 * *(double *)(unaff_EDI + 0x32cc7) *\n                         (double)*(float *)(&UNK_00032ccf + unaff_EDI));\n  iStack_cc = param_1 + 2 + iStack_bc;\n  uVar11 = (param_1 + 1 + iStack_cc * 2) * 4;\n  local_f8 = extraout_ECX;\n  if (uVar11 < 0x7f01) {\n    iStack_120 = -(uVar11 + 0x1b & 0xfffffff0);\n    puVar14 = auStack_13c + iStack_120;\n    iStack_120 = (int)&uStack_130 + iStack_120;\n  }\n  else {\n    iStack_120 = __gmp_tmp_reentrant_alloc(&iStack_a8,uVar11);\n    uVar16 = CONCAT44(local_124,local_c0);\n    puVar14 = auStack_13c;\n  }\n  local_124 = (int *)((ulonglong)uVar16 >> 0x20);\n  iVar10 = iStack_120 + local_128 + 8;\n  iStack_d0 = iVar10 + iStack_cc * 4;\n  iStack_d4 = (int)local_124;\n  if (local_124 == (int *)0x0) {\n    iStack_d4 = iStack_120;\n  }\n  if (iVar15 != 0) {\n    iStack_104 = iVar15 + -1;\n    puStack_fc = auStack_a4;\n    iStack_cc = 1;\n    iStack_e0 = *(int *)(local_c4 + -0x26c);\n    iStack_dc = iVar10;\nLAB_0004e690:\n    local_124 = (int *)((ulonglong)uVar16 >> 0x20);\n    local_c0 = (uint *)uVar16;\n    uStack_e4 = uStack_f4 - uStack_e8 * uStack_ec;\n    iVar10 = param_1 - (uStack_e4 >> 5);\n    piVar9 = local_f8 + (uStack_e4 >> 5);\n    if ((uStack_e4 & 0x1f) == 0) {\n      *(int *)(puVar14 + -8) = iVar10;\n      *(int **)(puVar14 + -0xc) = piVar9;\n      iVar15 = iStack_e0;\n      *(int *)(puVar14 + -0x10) = iStack_d4;\n      pcVar2 = *(code **)(iVar15 + 0x28);\n      *(undefined4 *)(puVar14 + -0x14) = 0x4ed34;\n      (*pcVar2)();\n    }\n    else {\n      *(uint *)(puVar14 + -4) = uStack_e4 & 0x1f;\n      *(int *)(puVar14 + -8) = iVar10;\n      *(int **)(puVar14 + -0xc) = piVar9;\n      iVar15 = iStack_e0;\n      *(int *)(puVar14 + -0x10) = iStack_d4;\n      pcVar2 = *(code **)(iVar15 + 0x80);\n      *(undefined4 *)(puVar14 + -0x14) = 0x4e6dc;\n      (*pcVar2)();\n    }\n    iVar4 = iStack_d4;\n    iVar15 = iStack_dc;\n    uStack_d8 = iVar10 - (uint)(*(int *)(iStack_d4 + (iVar10 + -1) * 4) == 0);\n    do {\n      *(int *)(puVar14 + -0x10) = iVar15;\n      *(uint *)(puVar14 + -0x14) = uStack_ec;\n      *(int *)(puVar14 + -0x18) = iStack_cc;\n      *(uint **)(puVar14 + -0x1c) = local_c0;\n      *(int *)(puVar14 + -0x20) = iStack_d0;\n      *(undefined4 *)(puVar14 + -0x24) = 0x4e727;\n      iVar10 = __gmpn_pow_1();\n      *(int *)(puVar14 + -0x10) = iStack_cc;\n      *(uint **)(puVar14 + -0x14) = local_c0;\n      *(int *)(puVar14 + -0x18) = iVar10;\n      *(int *)(puVar14 + -0x1c) = iStack_d0;\n      *(int *)(puVar14 + -0x20) = iVar15;\n      iStack_dc = iVar10;\n      *(undefined4 *)(puVar14 + -0x24) = 0x4e74f;\n      __gmpn_mul();\n      iVar10 = iStack_d4;\n      uVar11 = uStack_d8;\n      iVar6 = (iStack_cc + iStack_dc) -\n              (uint)(*(int *)(iVar15 + -4 + (iStack_cc + iStack_dc) * 4) == 0);\n      puVar7 = local_c0;\n      if (iVar6 <= (int)uStack_d8) {\n        uVar5 = uStack_d8;\n        if (uStack_d8 != iVar6) goto LAB_0004eb66;\n        do {\n          uVar5 = uVar5 + -1;\n          if ((int)uVar5 < 0) {\n            iStack_108 = iStack_dc;\n            uStack_114 = 0;\n            iStack_10c = iStack_104;\n            uStack_e8 = puStack_fc[iStack_104] - puStack_fc[iStack_104 + 1];\n            iStack_118 = puStack_fc[iStack_104 + 1] - puStack_fc[iStack_104];\n            uStack_f0 = uStack_e8 >> 5;\n            uStack_f4 = iStack_118 + uStack_e4;\n            uVar11 = uStack_e4 - 1;\n            uStack_e4 = uStack_e8 & 0x1f;\n            puVar12 = (uint *)((uVar11 >> 5) - (uStack_f4 >> 5));\n            uStack_100 = uStack_f0 * 4;\n            uVar11 = 0;\n            iStack_110 = (int)puVar12 + 1;\n            uVar5 = uStack_f4 >> 5;\n            puVar7 = (uint *)(iStack_d4 + uStack_f0 * 4);\n            iStack_dc = iVar15;\n            uStack_d8 = uStack_f0;\n            goto LAB_0004e83d;\n          }\n          uVar13 = *(uint *)(iVar4 + uVar5 * 4);\n          uVar3 = *(uint *)(iVar15 + uVar5 * 4);\n        } while (uVar3 == uVar13);\n        if (uVar3 <= uVar13) goto LAB_0004eb66;\n      }\n      do {\n        uVar11 = *puVar7;\n        *puVar7 = *puVar7 - 1;\n        puVar7 = puVar7 + 1;\n      } while (uVar11 == 0);\n    } while( true );\n  }\n  iStack_cc = 1;\nLAB_0004e9ce:\n  piVar9 = local_f8;\n  local_c0 = (uint *)uVar16;\n  if ((param_3 == 0) || (*local_c0 < 2)) {\n    do {\n      local_124 = (int *)((ulonglong)uVar16 >> 0x20);\n      local_c0 = (uint *)uVar16;\n      *(int *)(puVar14 + -0x10) = iStack_d0;\n      *(uint *)(puVar14 + -0x14) = param_2;\n      *(int *)(puVar14 + -0x18) = iStack_cc;\n      *(uint **)(puVar14 + -0x1c) = local_c0;\n      *(int *)(puVar14 + -0x20) = iVar10;\n      *(undefined4 *)(puVar14 + -0x24) = 0x4ea47;\n      uVar11 = __gmpn_pow_1();\n      uVar16 = CONCAT44(local_124,local_c0);\n      if ((int)uVar11 <= (int)param_1) {\n        uVar5 = param_1;\n        if (param_1 != uVar11) goto LAB_0004efbf;\n        do {\n          uVar5 = uVar5 - 1;\n          if ((int)uVar5 < 0) {\n            uStack_d8 = 0;\n            uVar16 = CONCAT44(local_124,local_c0);\n            goto LAB_0004e9e0;\n          }\n          uVar13 = *(uint *)(iVar10 + uVar5 * 4);\n        } while (uVar13 == piVar9[uVar5]);\n        if (uVar13 <= (uint)piVar9[uVar5]) goto LAB_0004efbf;\n      }\n      do {\n        iVar15 = *local_c0;\n        *local_c0 = *local_c0 + -1;\n        local_c0 = (uint *)((int *)local_c0 + 1);\n      } while (iVar15 == 0);\n    } while( true );\n  }\nLAB_0004e9e0:\n  local_124 = (int *)((ulonglong)uVar16 >> 0x20);\n  local_c0 = (uint *)uVar16;\n  if (iStack_a8 != 0) {\n    *(int *)(puVar14 + -0x10) = iStack_a8;\n    *(undefined4 *)(puVar14 + -0x14) = 0x4f1a9;\n    __gmp_tmp_reentrant_free();\n    uVar16 = CONCAT44(local_124,local_c0);\n  }\nLAB_0004e9ee:\n  local_124 = (int *)((ulonglong)uVar16 >> 0x20);\n  local_c0 = (uint *)uVar16;\n  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return uStack_d8;\n  }\n                    \n  *(undefined **)(puVar14 + -4) = &UNK_0004f214;\n  FUN_0007ebe0();\nLAB_0004eb66:\n  iStack_108 = iStack_dc;\n  iStack_10c = iStack_104;\n  uStack_e8 = puStack_fc[iStack_104] - puStack_fc[iStack_104 + 1];\n  iStack_118 = puStack_fc[iStack_104 + 1] - puStack_fc[iStack_104];\n  uStack_f0 = uStack_e8 >> 5;\n  uStack_f4 = iStack_118 + uStack_e4;\n  uVar5 = uStack_f4 >> 5;\n  puStack_11c = (uint *)((uStack_e4 - 1 >> 5) - uVar5);\n  iStack_110 = (int)puStack_11c + 1;\n  uStack_e4 = uVar5;\n  iStack_dc = iVar15;\n  if (iVar6 != 0) {\n    *(int *)(puVar14 + -4) = iVar6;\n    *(int *)(puVar14 + -8) = iStack_dc;\n    *(int *)(puVar14 + -0xc) = iVar10;\n    *(int *)(puVar14 + -0x10) = iVar10;\n    uStack_d8 = iVar6;\n    *(undefined4 *)(puVar14 + -0x14) = 0x4ee32;\n    iVar10 = __gmpn_sub_n();\n    if ((iVar10 != 0) && (uVar11 != uStack_d8)) {\n      piVar9 = (int *)(iStack_d4 + uStack_d8 * 4);\n      iVar10 = *piVar9;\n      *piVar9 = iVar10 + -1;\n      if ((iVar10 == 0) && ((int)(uStack_d8 + 1) < (int)uVar11)) {\n        piVar9 = (int *)(iStack_d4 + (uStack_d8 + 1) * 4);\n        iVar15 = uStack_d8 + 2;\n        iVar10 = *piVar9;\n        *piVar9 = iVar10 + -1;\n        for (; (iVar10 == 0 && (uVar11 != iVar15)); iVar15 = iVar15 + 1) {\n          iVar10 = *(int *)(iStack_d4 + iVar15 * 4);\n          *(int *)(iStack_d4 + iVar15 * 4) = iVar10 + -1;\n        }\n      }\n    }\n  }\n  iVar4 = iStack_d4;\n  iVar15 = iStack_e0;\n  iVar10 = *(int *)(iStack_d4 + (uVar11 + -1) * 4);\n  while (iVar10 == 0) {\n    iVar10 = *(int *)(iStack_d4 + (uVar11 + -2) * 4);\n    uVar11 = uVar11 + -1;\n  }\n  uStack_100 = uStack_f0 * 4;\n  puVar7 = (uint *)(iStack_d4 + uStack_f0 * 4);\n  uStack_d8 = uStack_f0 + uVar11;\n  uVar5 = uStack_e8 & 0x1f;\n  uStack_130 = uStack_e4;\n  puStack_12c = puVar7;\n  if (uVar5 == 0) {\n    uStack_e4 = uVar5;\n    *(uint *)(puVar14 + -8) = uVar11;\n    *(int *)(puVar14 + -0xc) = iStack_d4;\n    *(uint **)(puVar14 + -0x10) = puVar7;\n    pcVar2 = *(code **)(iVar15 + 0x24);\n    *(undefined4 *)(puVar14 + -0x14) = 0x4ed9a;\n    (*pcVar2)();\n  }\n  else {\n    uStack_e4 = uVar5;\n    *(uint *)(puVar14 + -4) = uVar5;\n    *(uint *)(puVar14 + -8) = uVar11;\n    *(int *)(puVar14 + -0xc) = iVar4;\n    iVar10 = iStack_e0;\n    *(uint **)(puVar14 + -0x10) = puVar7;\n    pcVar2 = *(code **)(iVar10 + 0x38);\n    *(undefined4 *)(puVar14 + -0x14) = 0x4ec66;\n    iVar10 = (*pcVar2)();\n    if (iVar10 != 0) {\n      *(int *)(iStack_d4 + uStack_d8 * 4) = iVar10;\n      uStack_d8 = uStack_d8 + 1;\n    }\n  }\n  uVar11 = *puStack_12c;\n  uVar5 = uStack_130;\n  puVar7 = puStack_12c;\n  puVar12 = puStack_11c;\n  if ((int)uStack_f0 < (int)puStack_11c) {\n    uStack_114 = *(undefined4 *)(iStack_d4 + uStack_100 + 4);\n  }\nLAB_0004e83d:\n  piVar9 = local_f8 + uVar5;\n  puStack_11c = puVar7;\n  if ((uStack_f4 & 0x1f) == 0) {\n    *(int *)(puVar14 + -8) = iStack_110;\n    *(int **)(puVar14 + -0xc) = piVar9;\n    *(int *)(puVar14 + -0x10) = iStack_d4;\n    pcVar2 = *(code **)(iStack_e0 + 0x28);\n    *(undefined4 *)(puVar14 + -0x14) = 0x4ed09;\n    (*pcVar2)();\n  }\n  else {\n    *(uint *)(puVar14 + -4) = uStack_f4 & 0x1f;\n    *(int *)(puVar14 + -8) = iStack_110;\n    *(int **)(puVar14 + -0xc) = piVar9;\n    iVar10 = iStack_e0;\n    *(int *)(puVar14 + -0x10) = iStack_d4;\n    pcVar2 = *(code **)(iVar10 + 0x80);\n    *(undefined4 *)(puVar14 + -0x14) = 0x4e875;\n    (*pcVar2)();\n  }\n  iVar15 = iStack_d0;\n  iVar10 = iStack_108;\n  *puStack_11c = uVar11 | ~(-1 << ((byte)uStack_e4 & 0x1f)) & *puStack_11c;\n  if ((int)uStack_f0 < (int)puVar12) {\n    *(undefined4 *)(iStack_d4 + (uStack_f0 + 1) * 4) = uStack_114;\n  }\n  *(uint *)(puVar14 + -4) = param_2;\n  iVar4 = iStack_e0;\n  *(int *)(puVar14 + -8) = iVar10;\n  *(int *)(puVar14 + -0xc) = iVar15;\n  *(int *)(puVar14 + -0x10) = iVar15;\n  pcVar2 = *(code **)(iVar4 + 100);\n  *(undefined4 *)(puVar14 + -0x14) = 0x4e8c9;\n  iVar6 = (*pcVar2)();\n  puVar7 = local_c0;\n  iVar4 = iStack_cc;\n  *(int *)(iVar15 + iVar10 * 4) = iVar6;\n  iVar10 = (uint)(iVar6 != 0) + iVar10;\n  puVar12 = (uint *)(uStack_100 + (int)local_c0);\n  iVar15 = uStack_f0 + iStack_cc;\n  if (uStack_e4 == 0) {\n    *(int *)(puVar14 + -8) = iStack_cc;\n    *(uint **)(puVar14 + -0xc) = local_c0;\n    *(uint **)(puVar14 + -0x10) = puVar12;\n    pcVar2 = *(code **)(iStack_e0 + 0x24);\n    *(undefined4 *)(puVar14 + -0x14) = 0x4ecd9;\n    (*pcVar2)();\nLAB_0004ecdc:\n    iStack_cc = iVar15;\n  }\n  else {\n    *(uint *)(puVar14 + -4) = uStack_e4;\n    *(int *)(puVar14 + -8) = iVar4;\n    *(uint **)(puVar14 + -0xc) = puVar7;\n    *(uint **)(puVar14 + -0x10) = puVar12;\n    pcVar2 = *(code **)(iStack_e0 + 0x38);\n    *(undefined4 *)(puVar14 + -0x14) = 0x4e915;\n    uVar11 = (*pcVar2)();\n    if (uVar11 == 0) goto LAB_0004ecdc;\n    local_c0[iVar15] = uVar11;\n    iStack_cc = iVar15 + 1;\n  }\n  uStack_f0 = *puVar12;\n  uVar5 = uStack_e8 - 1 >> 5;\n  uVar11 = uVar5 + 1;\n  if ((int)uStack_d8 < iVar10) {\n    *(uint *)(puVar14 + -8) = uVar11 * 4;\n    *(undefined4 *)(puVar14 + -0xc) = 0;\n    *(uint **)(puVar14 + -0x10) = local_c0;\n    *(undefined4 *)(puVar14 + -0x14) = 0x4ee04;\n    memset(*(void **)(puVar14 + -0x10),*(int *)(puVar14 + -0xc),*(size_t *)(puVar14 + -8));\n    goto LAB_0004e9ab;\n  }\n  iVar15 = uStack_d8 - iVar10;\n  if (iVar15 <= (int)uVar11) {\n    *(int *)(puVar14 + -0xc) = iStack_120;\n    *(int *)(puVar14 + -0x10) = iVar10;\n    *(int *)(puVar14 + -0x14) = iStack_d0;\n    *(uint *)(puVar14 + -0x18) = uStack_d8;\n    *(int *)(puVar14 + -0x1c) = iStack_d4;\n    *(int *)(puVar14 + -0x20) = iStack_dc;\n    iStack_108 = iVar15;\n    uStack_100 = uVar11;\n    *(undefined4 *)(puVar14 + -0x24) = 0x4ead1;\n    __gmpn_div_q();\n    puVar7 = local_c0;\n    iVar10 = iStack_e0;\n    uVar13 = (uint)(*(int *)(iStack_dc + iStack_108 * 4) != 0) + iStack_108;\n    uVar11 = uStack_100;\n    if ((int)uVar13 <= (int)uStack_100) {\n      if ((uStack_100 != uVar13) || (uStack_e4 == 0)) {\n        uStack_e4 = uStack_100;\n        *(uint *)(puVar14 + -8) = uVar13;\n        *(int *)(puVar14 + -0xc) = iStack_dc;\n        *(uint **)(puVar14 + -0x10) = puVar7;\n        pcVar2 = *(code **)(iVar10 + 0x28);\n        *(undefined4 *)(puVar14 + -0x14) = 0x4eb2a;\n        (*pcVar2)();\n        if (uStack_e4 != uVar13) {\n          *(uint *)(puVar14 + -8) = (uStack_e4 - uVar13) * 4;\n          *(undefined4 *)(puVar14 + -0xc) = 0;\n          *(uint **)(puVar14 + -0x10) = puVar7 + uVar13;\n          *(undefined4 *)(puVar14 + -0x14) = 0x4eb55;\n          memset(*(void **)(puVar14 + -0x10),*(int *)(puVar14 + -0xc),*(size_t *)(puVar14 + -8));\n        }\n        goto LAB_0004e9ab;\n      }\n      if (*(uint *)(iStack_dc + -4 + uVar13 * 4) >> ((byte)uStack_e4 & 0x1f) == 0) {\n        *(uint *)(puVar14 + -8) = uVar13;\n        *(int *)(puVar14 + -0xc) = iStack_dc;\n        *(uint **)(puVar14 + -0x10) = local_c0;\n        pcVar2 = *(code **)(iVar10 + 0x28);\n        *(undefined4 *)(puVar14 + -0x14) = 0x4ede2;\n        (*pcVar2)();\n        goto LAB_0004e9ab;\n      }\n    }\n  }\n  puVar7 = local_c0;\n  if (uVar11 != 1) {\n    *(uint *)(puVar14 + -8) = uVar5 * 4;\n    *(undefined4 *)(puVar14 + -0xc) = 0xff;\n    *(uint **)(puVar14 + -0x10) = local_c0;\n    *(undefined4 *)(puVar14 + -0x14) = 0x4e98f;\n    memset(*(void **)(puVar14 + -0x10),*(int *)(puVar14 + -0xc),*(size_t *)(puVar14 + -8));\n    puVar7 = local_c0 + uVar5;\n  }\n  *puVar7 = 0xffffffff >> ((byte)iStack_118 & 0x1f);\nLAB_0004e9ab:\n  uVar16 = CONCAT44(local_124,local_c0);\n  iStack_104 = iStack_104 + -1;\n  *puVar12 = *puVar12 | uStack_f0;\n  iVar10 = iStack_dc;\n  if (iStack_10c == 0) goto LAB_0004e9ce;\n  goto LAB_0004e690;\nLAB_0004efbf:\n  if (local_124 == (int *)0x0) {\n    uStack_d8 = 1;\n  }\n  else {\n    uVar5 = uVar11;\n    if (uVar11 == 0) {\nLAB_0004efd7:\n      if ((local_f8 != local_124) && ((int)uVar5 < (int)param_1)) {\n        piVar9 = local_f8 + uVar5;\n        piVar8 = local_124 + uVar5;\n        do {\n          iVar10 = *piVar9;\n          piVar9 = piVar9 + 1;\n          *piVar8 = iVar10;\n          piVar8 = piVar8 + 1;\n        } while ((int *)((int)local_f8 + local_128 + 4) != piVar9);\n      }\n    }\n    else {\n      *(uint *)(puVar14 + -4) = uVar11;\n      *(int *)(puVar14 + -8) = iVar10;\n      *(int **)(puVar14 + -0xc) = local_f8;\n      *(int **)(puVar14 + -0x10) = local_124;\n      *(undefined4 *)(puVar14 + -0x14) = 0x4f0a5;\n      iVar10 = __gmpn_sub_n();\n      if (iVar10 == 0) goto LAB_0004efd7;\n      if (param_1 != uVar11) {\n        local_c0 = (uint *)(uVar11 * 4);\n        uVar5 = uVar11 + 1;\n        iVar10 = local_f8[uVar11];\n        local_124[uVar11] = iVar10 + -1;\n        if (iVar10 == 0) {\n          if ((int)param_1 <= (int)uVar5) goto LAB_0004f017;\n          iVar10 = local_f8[uVar11 + 1];\n          local_124[uVar11 + 1] = iVar10 + -1;\n          uVar5 = uVar11 + 2;\n          while (iVar10 == 0) {\n            if (param_1 == uVar5) goto LAB_0004f017;\n            iVar10 = local_f8[uVar5];\n            local_124[uVar5] = iVar10 + -1;\n            uVar5 = uVar5 + 1;\n          }\n        }\n        goto LAB_0004efd7;\n      }\n    }\nLAB_0004f017:\n    iVar10 = local_124[local_134];\n    uStack_d8 = param_1;\n    while (uVar16 = CONCAT44(local_124,local_c0), iVar10 == 0) {\n      iVar10 = local_124[uStack_d8 - 2];\n      uStack_d8 = uStack_d8 - 1;\n    }\n  }\n  goto LAB_0004e9e0;\n}" type_identifier (function_declarator "FUN_0004e410(uint param_1,uint param_2,int param_3)" identifier (parameter_list "(uint param_1,uint param_2,int param_3)" ( (parameter_declaration "uint param_1" type_identifier identifier) , (parameter_declaration "uint param_2" type_identifier identifier) , (parameter_declaration "int param_3" primitive_type identifier) ))) (compound_statement "{\n  byte bVar1;\n  code *pcVar2;\n  uint uVar3;\n  int iVar4;\n  uint uVar5;\n  int iVar6;\n  uint *puVar7;\n  int *piVar8;\n  int *piVar9;\n  int *extraout_ECX;\n  int iVar10;\n  uint uVar11;\n  uint *puVar12;\n  uint uVar13;\n  undefined1 *puVar14;\n  int iVar15;\n  int unaff_EDI;\n  int in_GS_OFFSET;\n  ushort in_FPUControlWord;\n  undefined8 uVar16;\n  undefined1 auStack_13c [8];\n  int local_134;\n  uint uStack_130;\n  uint *puStack_12c;\n  int local_128;\n  int *local_124;\n  int iStack_120;\n  uint *puStack_11c;\n  int iStack_118;\n  undefined4 uStack_114;\n  int iStack_110;\n  int iStack_10c;\n  int iStack_108;\n  int iStack_104;\n  uint uStack_100;\n  uint *puStack_fc;\n  int *local_f8;\n  uint uStack_f4;\n  uint uStack_f0;\n  uint uStack_ec;\n  uint uStack_e8;\n  uint uStack_e4;\n  int iStack_e0;\n  int iStack_dc;\n  uint uStack_d8;\n  int iStack_d4;\n  int iStack_d0;\n  int iStack_cc;\n  undefined4 uStack_c8;\n  int local_c4;\n  uint *local_c0;\n  int iStack_bc;\n  ushort uStack_b8;\n  int iStack_a8;\n  uint auStack_a4 [33];\n  int local_20;\n  \n  uVar16 = FUN_00025194();\n  local_124 = (int *)((ulonglong)uVar16 >> 0x20);\n  local_c0 = (uint *)uVar16;\n  local_c4 = unaff_EDI + 0x4fbe7;\n  puVar14 = auStack_13c;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  local_134 = param_1 + 0x3fffffff;\n  uVar11 = extraout_ECX[local_134];\n  local_128 = local_134 * 4;\n  uVar5 = 0x1f;\n  if (uVar11 != 0) {\n    for (; uVar11 >> uVar5 == 0; uVar5 = uVar5 - 1) {\n    }\n  }\n  iVar10 = (uVar5 ^ 0x1f) + 1;\n  uVar5 = param_1 * 0x20 - iVar10;\n  if (uVar5 < param_2) {\n    *local_c0 = 1;\n    if (local_124 == (int *)0x0) {\n      iVar10 = *extraout_ECX + -1;\n    }\n    else {\n      iVar10 = *extraout_ECX;\n      *local_124 = iVar10 + -1;\n      if (iVar10 == 0) {\n        if (1 < (int)param_1) {\n          iVar10 = extraout_ECX[1];\n          local_124[1] = iVar10 + -1;\n          if (iVar10 == 0) {\n            if (param_1 == 2) goto LAB_0004ef98;\n            iVar10 = extraout_ECX[2];\n            uVar11 = 3;\n            local_124[2] = iVar10 + -1;\n            while (iVar10 == 0) {\n              if (param_1 == uVar11) goto LAB_0004ef98;\n              iVar10 = extraout_ECX[uVar11];\n              local_124[uVar11] = iVar10 + -1;\n              uVar11 = uVar11 + 1;\n            }\n          }\n          else {\n            uVar11 = 2;\n          }\n          if ((extraout_ECX != local_124) && ((int)uVar11 < (int)param_1)) {\n            piVar9 = extraout_ECX + uVar11;\n            piVar8 = local_124 + uVar11;\n            do {\n              iVar10 = *piVar9;\n              piVar9 = piVar9 + 1;\n              *piVar8 = iVar10;\n              piVar8 = piVar8 + 1;\n            } while (extraout_ECX + param_1 + 0x40000000 != piVar9);\n          }\n        }\n      }\n      else if ((extraout_ECX != local_124) && (1 < (int)param_1)) {\n        piVar9 = extraout_ECX + 1;\n        piVar8 = local_124;\n        do {\n          piVar8 = piVar8 + 1;\n          iVar10 = *piVar9;\n          piVar9 = piVar9 + 1;\n          *piVar8 = iVar10;\n        } while (extraout_ECX + param_1 + 0x40000000 != piVar9);\n      }\nLAB_0004ef98:\n      iVar10 = local_124[local_134];\n    }\n    uStack_d8 = param_1 - (iVar10 == 0);\n    goto LAB_0004e9ee;\n  }\n  if (iVar10 == 0x20) {\n    uVar11 = extraout_ECX[param_1 + 0x3ffffffe];\n  }\n  else {\n    uVar11 = (uint)extraout_ECX[(param_1 - 1) - (uint)(param_1 != 1)] >>\n             (0x20 - (byte)iVar10 & 0x1f) | uVar11 << ((byte)iVar10 & 0x1f);\n  }\n  uVar11 = (uint)*(byte *)(unaff_EDI + 0x32bc7 + (uVar11 >> 0x18));\n  if (uVar5 < 0x1000000) {\n    uStack_e8 = (uVar5 * 0x100 | uVar11) / param_2;\n    uVar11 = uStack_e8 & 0xff;\n    uStack_e8 = uStack_e8 >> 8;\n  }\n  else {\n    uStack_e8 = uVar5 / param_2;\n    uVar11 = (uVar5 % param_2 << 8 | uVar11) / param_2;\n  }\n  iVar10 = uStack_e8 * param_2;\n  bVar1 = *(byte *)(unaff_EDI + 0x32ac7 + uVar11);\n  uStack_ec = param_2 - 1;\n  uVar11 = 3;\n  for (uVar5 = uStack_ec >> 2; uVar5 != 0; uVar5 = uVar5 >> 1) {\n    uVar11 = uVar11 + 1;\n  }\n  puStack_fc = auStack_a4;\n  iVar15 = 0;\n  auStack_a4[0] = uStack_e8;\n  if (8 < uStack_e8) {\n    iVar4 = 0;\n    do {\n      while (iVar15 = iVar4, uVar11 < uStack_e8) {\n        uStack_e8 = uStack_e8 + uVar11 >> 1;\n        puStack_fc[iVar15 + 1] = uStack_e8;\n        iVar4 = iVar15 + 1;\n        if (uStack_e8 < 9) goto LAB_0004e56d;\n      }\n      uStack_e8 = uStack_e8 - 1;\n      puStack_fc[iVar15 + 1] = uStack_e8;\n      iVar4 = iVar15 + 1;\n    } while (uStack_e8 != 8);\n    uStack_e8 = 8;\nLAB_0004e56d:\n    iVar15 = iVar15 + 1;\n  }\n  iStack_a8 = 0;\n  uStack_f4 = iVar10 - uStack_e8;\n  *local_c0 = (bVar1 | 0x100) >> (8U - (char)uStack_e8 & 0x1f);\n  uStack_c8 = 0;\n  uStack_b8 = in_FPUControlWord | 0xc00;\n  iStack_bc = (int)ROUND((double)param_2 * *(double *)(unaff_EDI + 0x32cc7) *\n                         (double)*(float *)(&UNK_00032ccf + unaff_EDI));\n  iStack_cc = param_1 + 2 + iStack_bc;\n  uVar11 = (param_1 + 1 + iStack_cc * 2) * 4;\n  local_f8 = extraout_ECX;\n  if (uVar11 < 0x7f01) {\n    iStack_120 = -(uVar11 + 0x1b & 0xfffffff0);\n    puVar14 = auStack_13c + iStack_120;\n    iStack_120 = (int)&uStack_130 + iStack_120;\n  }\n  else {\n    iStack_120 = __gmp_tmp_reentrant_alloc(&iStack_a8,uVar11);\n    uVar16 = CONCAT44(local_124,local_c0);\n    puVar14 = auStack_13c;\n  }\n  local_124 = (int *)((ulonglong)uVar16 >> 0x20);\n  iVar10 = iStack_120 + local_128 + 8;\n  iStack_d0 = iVar10 + iStack_cc * 4;\n  iStack_d4 = (int)local_124;\n  if (local_124 == (int *)0x0) {\n    iStack_d4 = iStack_120;\n  }\n  if (iVar15 != 0) {\n    iStack_104 = iVar15 + -1;\n    puStack_fc = auStack_a4;\n    iStack_cc = 1;\n    iStack_e0 = *(int *)(local_c4 + -0x26c);\n    iStack_dc = iVar10;\nLAB_0004e690:\n    local_124 = (int *)((ulonglong)uVar16 >> 0x20);\n    local_c0 = (uint *)uVar16;\n    uStack_e4 = uStack_f4 - uStack_e8 * uStack_ec;\n    iVar10 = param_1 - (uStack_e4 >> 5);\n    piVar9 = local_f8 + (uStack_e4 >> 5);\n    if ((uStack_e4 & 0x1f) == 0) {\n      *(int *)(puVar14 + -8) = iVar10;\n      *(int **)(puVar14 + -0xc) = piVar9;\n      iVar15 = iStack_e0;\n      *(int *)(puVar14 + -0x10) = iStack_d4;\n      pcVar2 = *(code **)(iVar15 + 0x28);\n      *(undefined4 *)(puVar14 + -0x14) = 0x4ed34;\n      (*pcVar2)();\n    }\n    else {\n      *(uint *)(puVar14 + -4) = uStack_e4 & 0x1f;\n      *(int *)(puVar14 + -8) = iVar10;\n      *(int **)(puVar14 + -0xc) = piVar9;\n      iVar15 = iStack_e0;\n      *(int *)(puVar14 + -0x10) = iStack_d4;\n      pcVar2 = *(code **)(iVar15 + 0x80);\n      *(undefined4 *)(puVar14 + -0x14) = 0x4e6dc;\n      (*pcVar2)();\n    }\n    iVar4 = iStack_d4;\n    iVar15 = iStack_dc;\n    uStack_d8 = iVar10 - (uint)(*(int *)(iStack_d4 + (iVar10 + -1) * 4) == 0);\n    do {\n      *(int *)(puVar14 + -0x10) = iVar15;\n      *(uint *)(puVar14 + -0x14) = uStack_ec;\n      *(int *)(puVar14 + -0x18) = iStack_cc;\n      *(uint **)(puVar14 + -0x1c) = local_c0;\n      *(int *)(puVar14 + -0x20) = iStack_d0;\n      *(undefined4 *)(puVar14 + -0x24) = 0x4e727;\n      iVar10 = __gmpn_pow_1();\n      *(int *)(puVar14 + -0x10) = iStack_cc;\n      *(uint **)(puVar14 + -0x14) = local_c0;\n      *(int *)(puVar14 + -0x18) = iVar10;\n      *(int *)(puVar14 + -0x1c) = iStack_d0;\n      *(int *)(puVar14 + -0x20) = iVar15;\n      iStack_dc = iVar10;\n      *(undefined4 *)(puVar14 + -0x24) = 0x4e74f;\n      __gmpn_mul();\n      iVar10 = iStack_d4;\n      uVar11 = uStack_d8;\n      iVar6 = (iStack_cc + iStack_dc) -\n              (uint)(*(int *)(iVar15 + -4 + (iStack_cc + iStack_dc) * 4) == 0);\n      puVar7 = local_c0;\n      if (iVar6 <= (int)uStack_d8) {\n        uVar5 = uStack_d8;\n        if (uStack_d8 != iVar6) goto LAB_0004eb66;\n        do {\n          uVar5 = uVar5 + -1;\n          if ((int)uVar5 < 0) {\n            iStack_108 = iStack_dc;\n            uStack_114 = 0;\n            iStack_10c = iStack_104;\n            uStack_e8 = puStack_fc[iStack_104] - puStack_fc[iStack_104 + 1];\n            iStack_118 = puStack_fc[iStack_104 + 1] - puStack_fc[iStack_104];\n            uStack_f0 = uStack_e8 >> 5;\n            uStack_f4 = iStack_118 + uStack_e4;\n            uVar11 = uStack_e4 - 1;\n            uStack_e4 = uStack_e8 & 0x1f;\n            puVar12 = (uint *)((uVar11 >> 5) - (uStack_f4 >> 5));\n            uStack_100 = uStack_f0 * 4;\n            uVar11 = 0;\n            iStack_110 = (int)puVar12 + 1;\n            uVar5 = uStack_f4 >> 5;\n            puVar7 = (uint *)(iStack_d4 + uStack_f0 * 4);\n            iStack_dc = iVar15;\n            uStack_d8 = uStack_f0;\n            goto LAB_0004e83d;\n          }\n          uVar13 = *(uint *)(iVar4 + uVar5 * 4);\n          uVar3 = *(uint *)(iVar15 + uVar5 * 4);\n        } while (uVar3 == uVar13);\n        if (uVar3 <= uVar13) goto LAB_0004eb66;\n      }\n      do {\n        uVar11 = *puVar7;\n        *puVar7 = *puVar7 - 1;\n        puVar7 = puVar7 + 1;\n      } while (uVar11 == 0);\n    } while( true );\n  }\n  iStack_cc = 1;\nLAB_0004e9ce:\n  piVar9 = local_f8;\n  local_c0 = (uint *)uVar16;\n  if ((param_3 == 0) || (*local_c0 < 2)) {\n    do {\n      local_124 = (int *)((ulonglong)uVar16 >> 0x20);\n      local_c0 = (uint *)uVar16;\n      *(int *)(puVar14 + -0x10) = iStack_d0;\n      *(uint *)(puVar14 + -0x14) = param_2;\n      *(int *)(puVar14 + -0x18) = iStack_cc;\n      *(uint **)(puVar14 + -0x1c) = local_c0;\n      *(int *)(puVar14 + -0x20) = iVar10;\n      *(undefined4 *)(puVar14 + -0x24) = 0x4ea47;\n      uVar11 = __gmpn_pow_1();\n      uVar16 = CONCAT44(local_124,local_c0);\n      if ((int)uVar11 <= (int)param_1) {\n        uVar5 = param_1;\n        if (param_1 != uVar11) goto LAB_0004efbf;\n        do {\n          uVar5 = uVar5 - 1;\n          if ((int)uVar5 < 0) {\n            uStack_d8 = 0;\n            uVar16 = CONCAT44(local_124,local_c0);\n            goto LAB_0004e9e0;\n          }\n          uVar13 = *(uint *)(iVar10 + uVar5 * 4);\n        } while (uVar13 == piVar9[uVar5]);\n        if (uVar13 <= (uint)piVar9[uVar5]) goto LAB_0004efbf;\n      }\n      do {\n        iVar15 = *local_c0;\n        *local_c0 = *local_c0 + -1;\n        local_c0 = (uint *)((int *)local_c0 + 1);\n      } while (iVar15 == 0);\n    } while( true );\n  }\nLAB_0004e9e0:\n  local_124 = (int *)((ulonglong)uVar16 >> 0x20);\n  local_c0 = (uint *)uVar16;\n  if (iStack_a8 != 0) {\n    *(int *)(puVar14 + -0x10) = iStack_a8;\n    *(undefined4 *)(puVar14 + -0x14) = 0x4f1a9;\n    __gmp_tmp_reentrant_free();\n    uVar16 = CONCAT44(local_124,local_c0);\n  }\nLAB_0004e9ee:\n  local_124 = (int *)((ulonglong)uVar16 >> 0x20);\n  local_c0 = (uint *)uVar16;\n  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return uStack_d8;\n  }\n                    \n  *(undefined **)(puVar14 + -4) = &UNK_0004f214;\n  FUN_0007ebe0();\nLAB_0004eb66:\n  iStack_108 = iStack_dc;\n  iStack_10c = iStack_104;\n  uStack_e8 = puStack_fc[iStack_104] - puStack_fc[iStack_104 + 1];\n  iStack_118 = puStack_fc[iStack_104 + 1] - puStack_fc[iStack_104];\n  uStack_f0 = uStack_e8 >> 5;\n  uStack_f4 = iStack_118 + uStack_e4;\n  uVar5 = uStack_f4 >> 5;\n  puStack_11c = (uint *)((uStack_e4 - 1 >> 5) - uVar5);\n  iStack_110 = (int)puStack_11c + 1;\n  uStack_e4 = uVar5;\n  iStack_dc = iVar15;\n  if (iVar6 != 0) {\n    *(int *)(puVar14 + -4) = iVar6;\n    *(int *)(puVar14 + -8) = iStack_dc;\n    *(int *)(puVar14 + -0xc) = iVar10;\n    *(int *)(puVar14 + -0x10) = iVar10;\n    uStack_d8 = iVar6;\n    *(undefined4 *)(puVar14 + -0x14) = 0x4ee32;\n    iVar10 = __gmpn_sub_n();\n    if ((iVar10 != 0) && (uVar11 != uStack_d8)) {\n      piVar9 = (int *)(iStack_d4 + uStack_d8 * 4);\n      iVar10 = *piVar9;\n      *piVar9 = iVar10 + -1;\n      if ((iVar10 == 0) && ((int)(uStack_d8 + 1) < (int)uVar11)) {\n        piVar9 = (int *)(iStack_d4 + (uStack_d8 + 1) * 4);\n        iVar15 = uStack_d8 + 2;\n        iVar10 = *piVar9;\n        *piVar9 = iVar10 + -1;\n        for (; (iVar10 == 0 && (uVar11 != iVar15)); iVar15 = iVar15 + 1) {\n          iVar10 = *(int *)(iStack_d4 + iVar15 * 4);\n          *(int *)(iStack_d4 + iVar15 * 4) = iVar10 + -1;\n        }\n      }\n    }\n  }\n  iVar4 = iStack_d4;\n  iVar15 = iStack_e0;\n  iVar10 = *(int *)(iStack_d4 + (uVar11 + -1) * 4);\n  while (iVar10 == 0) {\n    iVar10 = *(int *)(iStack_d4 + (uVar11 + -2) * 4);\n    uVar11 = uVar11 + -1;\n  }\n  uStack_100 = uStack_f0 * 4;\n  puVar7 = (uint *)(iStack_d4 + uStack_f0 * 4);\n  uStack_d8 = uStack_f0 + uVar11;\n  uVar5 = uStack_e8 & 0x1f;\n  uStack_130 = uStack_e4;\n  puStack_12c = puVar7;\n  if (uVar5 == 0) {\n    uStack_e4 = uVar5;\n    *(uint *)(puVar14 + -8) = uVar11;\n    *(int *)(puVar14 + -0xc) = iStack_d4;\n    *(uint **)(puVar14 + -0x10) = puVar7;\n    pcVar2 = *(code **)(iVar15 + 0x24);\n    *(undefined4 *)(puVar14 + -0x14) = 0x4ed9a;\n    (*pcVar2)();\n  }\n  else {\n    uStack_e4 = uVar5;\n    *(uint *)(puVar14 + -4) = uVar5;\n    *(uint *)(puVar14 + -8) = uVar11;\n    *(int *)(puVar14 + -0xc) = iVar4;\n    iVar10 = iStack_e0;\n    *(uint **)(puVar14 + -0x10) = puVar7;\n    pcVar2 = *(code **)(iVar10 + 0x38);\n    *(undefined4 *)(puVar14 + -0x14) = 0x4ec66;\n    iVar10 = (*pcVar2)();\n    if (iVar10 != 0) {\n      *(int *)(iStack_d4 + uStack_d8 * 4) = iVar10;\n      uStack_d8 = uStack_d8 + 1;\n    }\n  }\n  uVar11 = *puStack_12c;\n  uVar5 = uStack_130;\n  puVar7 = puStack_12c;\n  puVar12 = puStack_11c;\n  if ((int)uStack_f0 < (int)puStack_11c) {\n    uStack_114 = *(undefined4 *)(iStack_d4 + uStack_100 + 4);\n  }\nLAB_0004e83d:\n  piVar9 = local_f8 + uVar5;\n  puStack_11c = puVar7;\n  if ((uStack_f4 & 0x1f) == 0) {\n    *(int *)(puVar14 + -8) = iStack_110;\n    *(int **)(puVar14 + -0xc) = piVar9;\n    *(int *)(puVar14 + -0x10) = iStack_d4;\n    pcVar2 = *(code **)(iStack_e0 + 0x28);\n    *(undefined4 *)(puVar14 + -0x14) = 0x4ed09;\n    (*pcVar2)();\n  }\n  else {\n    *(uint *)(puVar14 + -4) = uStack_f4 & 0x1f;\n    *(int *)(puVar14 + -8) = iStack_110;\n    *(int **)(puVar14 + -0xc) = piVar9;\n    iVar10 = iStack_e0;\n    *(int *)(puVar14 + -0x10) = iStack_d4;\n    pcVar2 = *(code **)(iVar10 + 0x80);\n    *(undefined4 *)(puVar14 + -0x14) = 0x4e875;\n    (*pcVar2)();\n  }\n  iVar15 = iStack_d0;\n  iVar10 = iStack_108;\n  *puStack_11c = uVar11 | ~(-1 << ((byte)uStack_e4 & 0x1f)) & *puStack_11c;\n  if ((int)uStack_f0 < (int)puVar12) {\n    *(undefined4 *)(iStack_d4 + (uStack_f0 + 1) * 4) = uStack_114;\n  }\n  *(uint *)(puVar14 + -4) = param_2;\n  iVar4 = iStack_e0;\n  *(int *)(puVar14 + -8) = iVar10;\n  *(int *)(puVar14 + -0xc) = iVar15;\n  *(int *)(puVar14 + -0x10) = iVar15;\n  pcVar2 = *(code **)(iVar4 + 100);\n  *(undefined4 *)(puVar14 + -0x14) = 0x4e8c9;\n  iVar6 = (*pcVar2)();\n  puVar7 = local_c0;\n  iVar4 = iStack_cc;\n  *(int *)(iVar15 + iVar10 * 4) = iVar6;\n  iVar10 = (uint)(iVar6 != 0) + iVar10;\n  puVar12 = (uint *)(uStack_100 + (int)local_c0);\n  iVar15 = uStack_f0 + iStack_cc;\n  if (uStack_e4 == 0) {\n    *(int *)(puVar14 + -8) = iStack_cc;\n    *(uint **)(puVar14 + -0xc) = local_c0;\n    *(uint **)(puVar14 + -0x10) = puVar12;\n    pcVar2 = *(code **)(iStack_e0 + 0x24);\n    *(undefined4 *)(puVar14 + -0x14) = 0x4ecd9;\n    (*pcVar2)();\nLAB_0004ecdc:\n    iStack_cc = iVar15;\n  }\n  else {\n    *(uint *)(puVar14 + -4) = uStack_e4;\n    *(int *)(puVar14 + -8) = iVar4;\n    *(uint **)(puVar14 + -0xc) = puVar7;\n    *(uint **)(puVar14 + -0x10) = puVar12;\n    pcVar2 = *(code **)(iStack_e0 + 0x38);\n    *(undefined4 *)(puVar14 + -0x14) = 0x4e915;\n    uVar11 = (*pcVar2)();\n    if (uVar11 == 0) goto LAB_0004ecdc;\n    local_c0[iVar15] = uVar11;\n    iStack_cc = iVar15 + 1;\n  }\n  uStack_f0 = *puVar12;\n  uVar5 = uStack_e8 - 1 >> 5;\n  uVar11 = uVar5 + 1;\n  if ((int)uStack_d8 < iVar10) {\n    *(uint *)(puVar14 + -8) = uVar11 * 4;\n    *(undefined4 *)(puVar14 + -0xc) = 0;\n    *(uint **)(puVar14 + -0x10) = local_c0;\n    *(undefined4 *)(puVar14 + -0x14) = 0x4ee04;\n    memset(*(void **)(puVar14 + -0x10),*(int *)(puVar14 + -0xc),*(size_t *)(puVar14 + -8));\n    goto LAB_0004e9ab;\n  }\n  iVar15 = uStack_d8 - iVar10;\n  if (iVar15 <= (int)uVar11) {\n    *(int *)(puVar14 + -0xc) = iStack_120;\n    *(int *)(puVar14 + -0x10) = iVar10;\n    *(int *)(puVar14 + -0x14) = iStack_d0;\n    *(uint *)(puVar14 + -0x18) = uStack_d8;\n    *(int *)(puVar14 + -0x1c) = iStack_d4;\n    *(int *)(puVar14 + -0x20) = iStack_dc;\n    iStack_108 = iVar15;\n    uStack_100 = uVar11;\n    *(undefined4 *)(puVar14 + -0x24) = 0x4ead1;\n    __gmpn_div_q();\n    puVar7 = local_c0;\n    iVar10 = iStack_e0;\n    uVar13 = (uint)(*(int *)(iStack_dc + iStack_108 * 4) != 0) + iStack_108;\n    uVar11 = uStack_100;\n    if ((int)uVar13 <= (int)uStack_100) {\n      if ((uStack_100 != uVar13) || (uStack_e4 == 0)) {\n        uStack_e4 = uStack_100;\n        *(uint *)(puVar14 + -8) = uVar13;\n        *(int *)(puVar14 + -0xc) = iStack_dc;\n        *(uint **)(puVar14 + -0x10) = puVar7;\n        pcVar2 = *(code **)(iVar10 + 0x28);\n        *(undefined4 *)(puVar14 + -0x14) = 0x4eb2a;\n        (*pcVar2)();\n        if (uStack_e4 != uVar13) {\n          *(uint *)(puVar14 + -8) = (uStack_e4 - uVar13) * 4;\n          *(undefined4 *)(puVar14 + -0xc) = 0;\n          *(uint **)(puVar14 + -0x10) = puVar7 + uVar13;\n          *(undefined4 *)(puVar14 + -0x14) = 0x4eb55;\n          memset(*(void **)(puVar14 + -0x10),*(int *)(puVar14 + -0xc),*(size_t *)(puVar14 + -8));\n        }\n        goto LAB_0004e9ab;\n      }\n      if (*(uint *)(iStack_dc + -4 + uVar13 * 4) >> ((byte)uStack_e4 & 0x1f) == 0) {\n        *(uint *)(puVar14 + -8) = uVar13;\n        *(int *)(puVar14 + -0xc) = iStack_dc;\n        *(uint **)(puVar14 + -0x10) = local_c0;\n        pcVar2 = *(code **)(iVar10 + 0x28);\n        *(undefined4 *)(puVar14 + -0x14) = 0x4ede2;\n        (*pcVar2)();\n        goto LAB_0004e9ab;\n      }\n    }\n  }\n  puVar7 = local_c0;\n  if (uVar11 != 1) {\n    *(uint *)(puVar14 + -8) = uVar5 * 4;\n    *(undefined4 *)(puVar14 + -0xc) = 0xff;\n    *(uint **)(puVar14 + -0x10) = local_c0;\n    *(undefined4 *)(puVar14 + -0x14) = 0x4e98f;\n    memset(*(void **)(puVar14 + -0x10),*(int *)(puVar14 + -0xc),*(size_t *)(puVar14 + -8));\n    puVar7 = local_c0 + uVar5;\n  }\n  *puVar7 = 0xffffffff >> ((byte)iStack_118 & 0x1f);\nLAB_0004e9ab:\n  uVar16 = CONCAT44(local_124,local_c0);\n  iStack_104 = iStack_104 + -1;\n  *puVar12 = *puVar12 | uStack_f0;\n  iVar10 = iStack_dc;\n  if (iStack_10c == 0) goto LAB_0004e9ce;\n  goto LAB_0004e690;\nLAB_0004efbf:\n  if (local_124 == (int *)0x0) {\n    uStack_d8 = 1;\n  }\n  else {\n    uVar5 = uVar11;\n    if (uVar11 == 0) {\nLAB_0004efd7:\n      if ((local_f8 != local_124) && ((int)uVar5 < (int)param_1)) {\n        piVar9 = local_f8 + uVar5;\n        piVar8 = local_124 + uVar5;\n        do {\n          iVar10 = *piVar9;\n          piVar9 = piVar9 + 1;\n          *piVar8 = iVar10;\n          piVar8 = piVar8 + 1;\n        } while ((int *)((int)local_f8 + local_128 + 4) != piVar9);\n      }\n    }\n    else {\n      *(uint *)(puVar14 + -4) = uVar11;\n      *(int *)(puVar14 + -8) = iVar10;\n      *(int **)(puVar14 + -0xc) = local_f8;\n      *(int **)(puVar14 + -0x10) = local_124;\n      *(undefined4 *)(puVar14 + -0x14) = 0x4f0a5;\n      iVar10 = __gmpn_sub_n();\n      if (iVar10 == 0) goto LAB_0004efd7;\n      if (param_1 != uVar11) {\n        local_c0 = (uint *)(uVar11 * 4);\n        uVar5 = uVar11 + 1;\n        iVar10 = local_f8[uVar11];\n        local_124[uVar11] = iVar10 + -1;\n        if (iVar10 == 0) {\n          if ((int)param_1 <= (int)uVar5) goto LAB_0004f017;\n          iVar10 = local_f8[uVar11 + 1];\n          local_124[uVar11 + 1] = iVar10 + -1;\n          uVar5 = uVar11 + 2;\n          while (iVar10 == 0) {\n            if (param_1 == uVar5) goto LAB_0004f017;\n            iVar10 = local_f8[uVar5];\n            local_124[uVar5] = iVar10 + -1;\n            uVar5 = uVar5 + 1;\n          }\n        }\n        goto LAB_0004efd7;\n      }\n    }\nLAB_0004f017:\n    iVar10 = local_124[local_134];\n    uStack_d8 = param_1;\n    while (uVar16 = CONCAT44(local_124,local_c0), iVar10 == 0) {\n      iVar10 = local_124[uStack_d8 - 2];\n      uStack_d8 = uStack_d8 - 1;\n    }\n  }\n  goto LAB_0004e9e0;\n}" { (declaration "byte bVar1;" type_identifier identifier ;) (declaration "code *pcVar2;" type_identifier (pointer_declarator "*pcVar2" * identifier) ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "uint uVar5;" type_identifier identifier ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "uint *puVar7;" type_identifier (pointer_declarator "*puVar7" * identifier) ;) (declaration "int *piVar8;" primitive_type (pointer_declarator "*piVar8" * identifier) ;) (declaration "int *piVar9;" primitive_type (pointer_declarator "*piVar9" * identifier) ;) (declaration "int *extraout_ECX;" primitive_type (pointer_declarator "*extraout_ECX" * identifier) ;) (declaration "int iVar10;" primitive_type identifier ;) (declaration "uint uVar11;" type_identifier identifier ;) (declaration "uint *puVar12;" type_identifier (pointer_declarator "*puVar12" * identifier) ;) (declaration "uint uVar13;" type_identifier identifier ;) (declaration "undefined1 *puVar14;" type_identifier (pointer_declarator "*puVar14" * identifier) ;) (declaration "int iVar15;" primitive_type identifier ;) (declaration "int unaff_EDI;" primitive_type identifier ;) (declaration "int in_GS_OFFSET;" primitive_type identifier ;) (declaration "ushort in_FPUControlWord;" type_identifier identifier ;) (declaration "undefined8 uVar16;" type_identifier identifier ;) (declaration "undefined1 auStack_13c [8];" type_identifier (array_declarator "auStack_13c [8]" identifier [ number_literal ]) ;) (declaration "int local_134;" primitive_type identifier ;) (declaration "uint uStack_130;" type_identifier identifier ;) (declaration "uint *puStack_12c;" type_identifier (pointer_declarator "*puStack_12c" * identifier) ;) (declaration "int local_128;" primitive_type identifier ;) (declaration "int *local_124;" primitive_type (pointer_declarator "*local_124" * identifier) ;) (declaration "int iStack_120;" primitive_type identifier ;) (declaration "uint *puStack_11c;" type_identifier (pointer_declarator "*puStack_11c" * identifier) ;) (declaration "int iStack_118;" primitive_type identifier ;) (declaration "undefined4 uStack_114;" type_identifier identifier ;) (declaration "int iStack_110;" primitive_type identifier ;) (declaration "int iStack_10c;" primitive_type identifier ;) (declaration "int iStack_108;" primitive_type identifier ;) (declaration "int iStack_104;" primitive_type identifier ;) (declaration "uint uStack_100;" type_identifier identifier ;) (declaration "uint *puStack_fc;" type_identifier (pointer_declarator "*puStack_fc" * identifier) ;) (declaration "int *local_f8;" primitive_type (pointer_declarator "*local_f8" * identifier) ;) (declaration "uint uStack_f4;" type_identifier identifier ;) (declaration "uint uStack_f0;" type_identifier identifier ;) (declaration "uint uStack_ec;" type_identifier identifier ;) (declaration "uint uStack_e8;" type_identifier identifier ;) (declaration "uint uStack_e4;" type_identifier identifier ;) (declaration "int iStack_e0;" primitive_type identifier ;) (declaration "int iStack_dc;" primitive_type identifier ;) (declaration "uint uStack_d8;" type_identifier identifier ;) (declaration "int iStack_d4;" primitive_type identifier ;) (declaration "int iStack_d0;" primitive_type identifier ;) (declaration "int iStack_cc;" primitive_type identifier ;) (declaration "undefined4 uStack_c8;" type_identifier identifier ;) (declaration "int local_c4;" primitive_type identifier ;) (declaration "uint *local_c0;" type_identifier (pointer_declarator "*local_c0" * identifier) ;) (declaration "int iStack_bc;" primitive_type identifier ;) (declaration "ushort uStack_b8;" type_identifier identifier ;) (declaration "int iStack_a8;" primitive_type identifier ;) (declaration "uint auStack_a4 [33];" type_identifier (array_declarator "auStack_a4 [33]" identifier [ number_literal ]) ;) (declaration "int local_20;" primitive_type identifier ;) (expression_statement "uVar16 = FUN_00025194();" (assignment_expression "uVar16 = FUN_00025194()" identifier = (call_expression "FUN_00025194()" identifier (argument_list "()" ( )))) ;) (expression_statement "local_124 = (int *)((ulonglong)uVar16 >> 0x20);" (assignment_expression "local_124 = (int *)((ulonglong)uVar16 >> 0x20)" identifier = (cast_expression "(int *)((ulonglong)uVar16 >> 0x20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((ulonglong)uVar16 >> 0x20)" ( (binary_expression "(ulonglong)uVar16 >> 0x20" (cast_expression "(ulonglong)uVar16" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "local_c0 = (uint *)uVar16;" (assignment_expression "local_c0 = (uint *)uVar16" identifier = (cast_expression "(uint *)uVar16" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "local_c4 = unaff_EDI + 0x4fbe7;" (assignment_expression "local_c4 = unaff_EDI + 0x4fbe7" identifier = (binary_expression "unaff_EDI + 0x4fbe7" identifier + number_literal)) ;) (expression_statement "puVar14 = auStack_13c;" (assignment_expression "puVar14 = auStack_13c" identifier = identifier) ;) (expression_statement "local_20 = *(int *)(in_GS_OFFSET + 0x14);" (assignment_expression "local_20 = *(int *)(in_GS_OFFSET + 0x14)" identifier = (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) ;) (expression_statement "local_134 = param_1 + 0x3fffffff;" (assignment_expression "local_134 = param_1 + 0x3fffffff" identifier = (binary_expression "param_1 + 0x3fffffff" identifier + number_literal)) ;) (expression_statement "uVar11 = extraout_ECX[local_134];" (assignment_expression "uVar11 = extraout_ECX[local_134]" identifier = (subscript_expression "extraout_ECX[local_134]" identifier [ identifier ])) ;) (expression_statement "local_128 = local_134 * 4;" (assignment_expression "local_128 = local_134 * 4" identifier = (binary_expression "local_134 * 4" identifier * number_literal)) ;) (expression_statement "uVar5 = 0x1f;" (assignment_expression "uVar5 = 0x1f" identifier = number_literal) ;) (if_statement "if (uVar11 != 0) {\n    for (; uVar11 >> uVar5 == 0; uVar5 = uVar5 - 1) {\n    }\n  }" if (parenthesized_expression "(uVar11 != 0)" ( (binary_expression "uVar11 != 0" identifier != number_literal) )) (compound_statement "{\n    for (; uVar11 >> uVar5 == 0; uVar5 = uVar5 - 1) {\n    }\n  }" { (for_statement "for (; uVar11 >> uVar5 == 0; uVar5 = uVar5 - 1) {\n    }" for ( ; (binary_expression "uVar11 >> uVar5 == 0" (binary_expression "uVar11 >> uVar5" identifier >> identifier) == number_literal) ; (assignment_expression "uVar5 = uVar5 - 1" identifier = (binary_expression "uVar5 - 1" identifier - number_literal)) ) (compound_statement "{\n    }" { })) })) (expression_statement "iVar10 = (uVar5 ^ 0x1f) + 1;" (assignment_expression "iVar10 = (uVar5 ^ 0x1f) + 1" identifier = (binary_expression "(uVar5 ^ 0x1f) + 1" (parenthesized_expression "(uVar5 ^ 0x1f)" ( (binary_expression "uVar5 ^ 0x1f" identifier ^ number_literal) )) + number_literal)) ;) (expression_statement "uVar5 = param_1 * 0x20 - iVar10;" (assignment_expression "uVar5 = param_1 * 0x20 - iVar10" identifier = (binary_expression "param_1 * 0x20 - iVar10" (binary_expression "param_1 * 0x20" identifier * number_literal) - identifier)) ;) (if_statement "if (uVar5 < param_2) {\n    *local_c0 = 1;\n    if (local_124 == (int *)0x0) {\n      iVar10 = *extraout_ECX + -1;\n    }\n    else {\n      iVar10 = *extraout_ECX;\n      *local_124 = iVar10 + -1;\n      if (iVar10 == 0) {\n        if (1 < (int)param_1) {\n          iVar10 = extraout_ECX[1];\n          local_124[1] = iVar10 + -1;\n          if (iVar10 == 0) {\n            if (param_1 == 2) goto LAB_0004ef98;\n            iVar10 = extraout_ECX[2];\n            uVar11 = 3;\n            local_124[2] = iVar10 + -1;\n            while (iVar10 == 0) {\n              if (param_1 == uVar11) goto LAB_0004ef98;\n              iVar10 = extraout_ECX[uVar11];\n              local_124[uVar11] = iVar10 + -1;\n              uVar11 = uVar11 + 1;\n            }\n          }\n          else {\n            uVar11 = 2;\n          }\n          if ((extraout_ECX != local_124) && ((int)uVar11 < (int)param_1)) {\n            piVar9 = extraout_ECX + uVar11;\n            piVar8 = local_124 + uVar11;\n            do {\n              iVar10 = *piVar9;\n              piVar9 = piVar9 + 1;\n              *piVar8 = iVar10;\n              piVar8 = piVar8 + 1;\n            } while (extraout_ECX + param_1 + 0x40000000 != piVar9);\n          }\n        }\n      }\n      else if ((extraout_ECX != local_124) && (1 < (int)param_1)) {\n        piVar9 = extraout_ECX + 1;\n        piVar8 = local_124;\n        do {\n          piVar8 = piVar8 + 1;\n          iVar10 = *piVar9;\n          piVar9 = piVar9 + 1;\n          *piVar8 = iVar10;\n        } while (extraout_ECX + param_1 + 0x40000000 != piVar9);\n      }\nLAB_0004ef98:\n      iVar10 = local_124[local_134];\n    }\n    uStack_d8 = param_1 - (iVar10 == 0);\n    goto LAB_0004e9ee;\n  }" if (parenthesized_expression "(uVar5 < param_2)" ( (binary_expression "uVar5 < param_2" identifier < identifier) )) (compound_statement "{\n    *local_c0 = 1;\n    if (local_124 == (int *)0x0) {\n      iVar10 = *extraout_ECX + -1;\n    }\n    else {\n      iVar10 = *extraout_ECX;\n      *local_124 = iVar10 + -1;\n      if (iVar10 == 0) {\n        if (1 < (int)param_1) {\n          iVar10 = extraout_ECX[1];\n          local_124[1] = iVar10 + -1;\n          if (iVar10 == 0) {\n            if (param_1 == 2) goto LAB_0004ef98;\n            iVar10 = extraout_ECX[2];\n            uVar11 = 3;\n            local_124[2] = iVar10 + -1;\n            while (iVar10 == 0) {\n              if (param_1 == uVar11) goto LAB_0004ef98;\n              iVar10 = extraout_ECX[uVar11];\n              local_124[uVar11] = iVar10 + -1;\n              uVar11 = uVar11 + 1;\n            }\n          }\n          else {\n            uVar11 = 2;\n          }\n          if ((extraout_ECX != local_124) && ((int)uVar11 < (int)param_1)) {\n            piVar9 = extraout_ECX + uVar11;\n            piVar8 = local_124 + uVar11;\n            do {\n              iVar10 = *piVar9;\n              piVar9 = piVar9 + 1;\n              *piVar8 = iVar10;\n              piVar8 = piVar8 + 1;\n            } while (extraout_ECX + param_1 + 0x40000000 != piVar9);\n          }\n        }\n      }\n      else if ((extraout_ECX != local_124) && (1 < (int)param_1)) {\n        piVar9 = extraout_ECX + 1;\n        piVar8 = local_124;\n        do {\n          piVar8 = piVar8 + 1;\n          iVar10 = *piVar9;\n          piVar9 = piVar9 + 1;\n          *piVar8 = iVar10;\n        } while (extraout_ECX + param_1 + 0x40000000 != piVar9);\n      }\nLAB_0004ef98:\n      iVar10 = local_124[local_134];\n    }\n    uStack_d8 = param_1 - (iVar10 == 0);\n    goto LAB_0004e9ee;\n  }" { (expression_statement "*local_c0 = 1;" (assignment_expression "*local_c0 = 1" (pointer_expression "*local_c0" * identifier) = number_literal) ;) (if_statement "if (local_124 == (int *)0x0) {\n      iVar10 = *extraout_ECX + -1;\n    }\n    else {\n      iVar10 = *extraout_ECX;\n      *local_124 = iVar10 + -1;\n      if (iVar10 == 0) {\n        if (1 < (int)param_1) {\n          iVar10 = extraout_ECX[1];\n          local_124[1] = iVar10 + -1;\n          if (iVar10 == 0) {\n            if (param_1 == 2) goto LAB_0004ef98;\n            iVar10 = extraout_ECX[2];\n            uVar11 = 3;\n            local_124[2] = iVar10 + -1;\n            while (iVar10 == 0) {\n              if (param_1 == uVar11) goto LAB_0004ef98;\n              iVar10 = extraout_ECX[uVar11];\n              local_124[uVar11] = iVar10 + -1;\n              uVar11 = uVar11 + 1;\n            }\n          }\n          else {\n            uVar11 = 2;\n          }\n          if ((extraout_ECX != local_124) && ((int)uVar11 < (int)param_1)) {\n            piVar9 = extraout_ECX + uVar11;\n            piVar8 = local_124 + uVar11;\n            do {\n              iVar10 = *piVar9;\n              piVar9 = piVar9 + 1;\n              *piVar8 = iVar10;\n              piVar8 = piVar8 + 1;\n            } while (extraout_ECX + param_1 + 0x40000000 != piVar9);\n          }\n        }\n      }\n      else if ((extraout_ECX != local_124) && (1 < (int)param_1)) {\n        piVar9 = extraout_ECX + 1;\n        piVar8 = local_124;\n        do {\n          piVar8 = piVar8 + 1;\n          iVar10 = *piVar9;\n          piVar9 = piVar9 + 1;\n          *piVar8 = iVar10;\n        } while (extraout_ECX + param_1 + 0x40000000 != piVar9);\n      }\nLAB_0004ef98:\n      iVar10 = local_124[local_134];\n    }" if (parenthesized_expression "(local_124 == (int *)0x0)" ( (binary_expression "local_124 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      iVar10 = *extraout_ECX + -1;\n    }" { (expression_statement "iVar10 = *extraout_ECX + -1;" (assignment_expression "iVar10 = *extraout_ECX + -1" identifier = (binary_expression "*extraout_ECX + -1" (pointer_expression "*extraout_ECX" * identifier) + number_literal)) ;) }) (else_clause "else {\n      iVar10 = *extraout_ECX;\n      *local_124 = iVar10 + -1;\n      if (iVar10 == 0) {\n        if (1 < (int)param_1) {\n          iVar10 = extraout_ECX[1];\n          local_124[1] = iVar10 + -1;\n          if (iVar10 == 0) {\n            if (param_1 == 2) goto LAB_0004ef98;\n            iVar10 = extraout_ECX[2];\n            uVar11 = 3;\n            local_124[2] = iVar10 + -1;\n            while (iVar10 == 0) {\n              if (param_1 == uVar11) goto LAB_0004ef98;\n              iVar10 = extraout_ECX[uVar11];\n              local_124[uVar11] = iVar10 + -1;\n              uVar11 = uVar11 + 1;\n            }\n          }\n          else {\n            uVar11 = 2;\n          }\n          if ((extraout_ECX != local_124) && ((int)uVar11 < (int)param_1)) {\n            piVar9 = extraout_ECX + uVar11;\n            piVar8 = local_124 + uVar11;\n            do {\n              iVar10 = *piVar9;\n              piVar9 = piVar9 + 1;\n              *piVar8 = iVar10;\n              piVar8 = piVar8 + 1;\n            } while (extraout_ECX + param_1 + 0x40000000 != piVar9);\n          }\n        }\n      }\n      else if ((extraout_ECX != local_124) && (1 < (int)param_1)) {\n        piVar9 = extraout_ECX + 1;\n        piVar8 = local_124;\n        do {\n          piVar8 = piVar8 + 1;\n          iVar10 = *piVar9;\n          piVar9 = piVar9 + 1;\n          *piVar8 = iVar10;\n        } while (extraout_ECX + param_1 + 0x40000000 != piVar9);\n      }\nLAB_0004ef98:\n      iVar10 = local_124[local_134];\n    }" else (compound_statement "{\n      iVar10 = *extraout_ECX;\n      *local_124 = iVar10 + -1;\n      if (iVar10 == 0) {\n        if (1 < (int)param_1) {\n          iVar10 = extraout_ECX[1];\n          local_124[1] = iVar10 + -1;\n          if (iVar10 == 0) {\n            if (param_1 == 2) goto LAB_0004ef98;\n            iVar10 = extraout_ECX[2];\n            uVar11 = 3;\n            local_124[2] = iVar10 + -1;\n            while (iVar10 == 0) {\n              if (param_1 == uVar11) goto LAB_0004ef98;\n              iVar10 = extraout_ECX[uVar11];\n              local_124[uVar11] = iVar10 + -1;\n              uVar11 = uVar11 + 1;\n            }\n          }\n          else {\n            uVar11 = 2;\n          }\n          if ((extraout_ECX != local_124) && ((int)uVar11 < (int)param_1)) {\n            piVar9 = extraout_ECX + uVar11;\n            piVar8 = local_124 + uVar11;\n            do {\n              iVar10 = *piVar9;\n              piVar9 = piVar9 + 1;\n              *piVar8 = iVar10;\n              piVar8 = piVar8 + 1;\n            } while (extraout_ECX + param_1 + 0x40000000 != piVar9);\n          }\n        }\n      }\n      else if ((extraout_ECX != local_124) && (1 < (int)param_1)) {\n        piVar9 = extraout_ECX + 1;\n        piVar8 = local_124;\n        do {\n          piVar8 = piVar8 + 1;\n          iVar10 = *piVar9;\n          piVar9 = piVar9 + 1;\n          *piVar8 = iVar10;\n        } while (extraout_ECX + param_1 + 0x40000000 != piVar9);\n      }\nLAB_0004ef98:\n      iVar10 = local_124[local_134];\n    }" { (expression_statement "iVar10 = *extraout_ECX;" (assignment_expression "iVar10 = *extraout_ECX" identifier = (pointer_expression "*extraout_ECX" * identifier)) ;) (expression_statement "*local_124 = iVar10 + -1;" (assignment_expression "*local_124 = iVar10 + -1" (pointer_expression "*local_124" * identifier) = (binary_expression "iVar10 + -1" identifier + number_literal)) ;) (if_statement "if (iVar10 == 0) {\n        if (1 < (int)param_1) {\n          iVar10 = extraout_ECX[1];\n          local_124[1] = iVar10 + -1;\n          if (iVar10 == 0) {\n            if (param_1 == 2) goto LAB_0004ef98;\n            iVar10 = extraout_ECX[2];\n            uVar11 = 3;\n            local_124[2] = iVar10 + -1;\n            while (iVar10 == 0) {\n              if (param_1 == uVar11) goto LAB_0004ef98;\n              iVar10 = extraout_ECX[uVar11];\n              local_124[uVar11] = iVar10 + -1;\n              uVar11 = uVar11 + 1;\n            }\n          }\n          else {\n            uVar11 = 2;\n          }\n          if ((extraout_ECX != local_124) && ((int)uVar11 < (int)param_1)) {\n            piVar9 = extraout_ECX + uVar11;\n            piVar8 = local_124 + uVar11;\n            do {\n              iVar10 = *piVar9;\n              piVar9 = piVar9 + 1;\n              *piVar8 = iVar10;\n              piVar8 = piVar8 + 1;\n            } while (extraout_ECX + param_1 + 0x40000000 != piVar9);\n          }\n        }\n      }\n      else if ((extraout_ECX != local_124) && (1 < (int)param_1)) {\n        piVar9 = extraout_ECX + 1;\n        piVar8 = local_124;\n        do {\n          piVar8 = piVar8 + 1;\n          iVar10 = *piVar9;\n          piVar9 = piVar9 + 1;\n          *piVar8 = iVar10;\n        } while (extraout_ECX + param_1 + 0x40000000 != piVar9);\n      }" if (parenthesized_expression "(iVar10 == 0)" ( (binary_expression "iVar10 == 0" identifier == number_literal) )) (compound_statement "{\n        if (1 < (int)param_1) {\n          iVar10 = extraout_ECX[1];\n          local_124[1] = iVar10 + -1;\n          if (iVar10 == 0) {\n            if (param_1 == 2) goto LAB_0004ef98;\n            iVar10 = extraout_ECX[2];\n            uVar11 = 3;\n            local_124[2] = iVar10 + -1;\n            while (iVar10 == 0) {\n              if (param_1 == uVar11) goto LAB_0004ef98;\n              iVar10 = extraout_ECX[uVar11];\n              local_124[uVar11] = iVar10 + -1;\n              uVar11 = uVar11 + 1;\n            }\n          }\n          else {\n            uVar11 = 2;\n          }\n          if ((extraout_ECX != local_124) && ((int)uVar11 < (int)param_1)) {\n            piVar9 = extraout_ECX + uVar11;\n            piVar8 = local_124 + uVar11;\n            do {\n              iVar10 = *piVar9;\n              piVar9 = piVar9 + 1;\n              *piVar8 = iVar10;\n              piVar8 = piVar8 + 1;\n            } while (extraout_ECX + param_1 + 0x40000000 != piVar9);\n          }\n        }\n      }" { (if_statement "if (1 < (int)param_1) {\n          iVar10 = extraout_ECX[1];\n          local_124[1] = iVar10 + -1;\n          if (iVar10 == 0) {\n            if (param_1 == 2) goto LAB_0004ef98;\n            iVar10 = extraout_ECX[2];\n            uVar11 = 3;\n            local_124[2] = iVar10 + -1;\n            while (iVar10 == 0) {\n              if (param_1 == uVar11) goto LAB_0004ef98;\n              iVar10 = extraout_ECX[uVar11];\n              local_124[uVar11] = iVar10 + -1;\n              uVar11 = uVar11 + 1;\n            }\n          }\n          else {\n            uVar11 = 2;\n          }\n          if ((extraout_ECX != local_124) && ((int)uVar11 < (int)param_1)) {\n            piVar9 = extraout_ECX + uVar11;\n            piVar8 = local_124 + uVar11;\n            do {\n              iVar10 = *piVar9;\n              piVar9 = piVar9 + 1;\n              *piVar8 = iVar10;\n              piVar8 = piVar8 + 1;\n            } while (extraout_ECX + param_1 + 0x40000000 != piVar9);\n          }\n        }" if (parenthesized_expression "(1 < (int)param_1)" ( (binary_expression "1 < (int)param_1" number_literal < (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n          iVar10 = extraout_ECX[1];\n          local_124[1] = iVar10 + -1;\n          if (iVar10 == 0) {\n            if (param_1 == 2) goto LAB_0004ef98;\n            iVar10 = extraout_ECX[2];\n            uVar11 = 3;\n            local_124[2] = iVar10 + -1;\n            while (iVar10 == 0) {\n              if (param_1 == uVar11) goto LAB_0004ef98;\n              iVar10 = extraout_ECX[uVar11];\n              local_124[uVar11] = iVar10 + -1;\n              uVar11 = uVar11 + 1;\n            }\n          }\n          else {\n            uVar11 = 2;\n          }\n          if ((extraout_ECX != local_124) && ((int)uVar11 < (int)param_1)) {\n            piVar9 = extraout_ECX + uVar11;\n            piVar8 = local_124 + uVar11;\n            do {\n              iVar10 = *piVar9;\n              piVar9 = piVar9 + 1;\n              *piVar8 = iVar10;\n              piVar8 = piVar8 + 1;\n            } while (extraout_ECX + param_1 + 0x40000000 != piVar9);\n          }\n        }" { (expression_statement "iVar10 = extraout_ECX[1];" (assignment_expression "iVar10 = extraout_ECX[1]" identifier = (subscript_expression "extraout_ECX[1]" identifier [ number_literal ])) ;) (expression_statement "local_124[1] = iVar10 + -1;" (assignment_expression "local_124[1] = iVar10 + -1" (subscript_expression "local_124[1]" identifier [ number_literal ]) = (binary_expression "iVar10 + -1" identifier + number_literal)) ;) (if_statement "if (iVar10 == 0) {\n            if (param_1 == 2) goto LAB_0004ef98;\n            iVar10 = extraout_ECX[2];\n            uVar11 = 3;\n            local_124[2] = iVar10 + -1;\n            while (iVar10 == 0) {\n              if (param_1 == uVar11) goto LAB_0004ef98;\n              iVar10 = extraout_ECX[uVar11];\n              local_124[uVar11] = iVar10 + -1;\n              uVar11 = uVar11 + 1;\n            }\n          }\n          else {\n            uVar11 = 2;\n          }" if (parenthesized_expression "(iVar10 == 0)" ( (binary_expression "iVar10 == 0" identifier == number_literal) )) (compound_statement "{\n            if (param_1 == 2) goto LAB_0004ef98;\n            iVar10 = extraout_ECX[2];\n            uVar11 = 3;\n            local_124[2] = iVar10 + -1;\n            while (iVar10 == 0) {\n              if (param_1 == uVar11) goto LAB_0004ef98;\n              iVar10 = extraout_ECX[uVar11];\n              local_124[uVar11] = iVar10 + -1;\n              uVar11 = uVar11 + 1;\n            }\n          }" { (if_statement "if (param_1 == 2) goto LAB_0004ef98;" if (parenthesized_expression "(param_1 == 2)" ( (binary_expression "param_1 == 2" identifier == number_literal) )) (goto_statement "goto LAB_0004ef98;" goto statement_identifier ;)) (expression_statement "iVar10 = extraout_ECX[2];" (assignment_expression "iVar10 = extraout_ECX[2]" identifier = (subscript_expression "extraout_ECX[2]" identifier [ number_literal ])) ;) (expression_statement "uVar11 = 3;" (assignment_expression "uVar11 = 3" identifier = number_literal) ;) (expression_statement "local_124[2] = iVar10 + -1;" (assignment_expression "local_124[2] = iVar10 + -1" (subscript_expression "local_124[2]" identifier [ number_literal ]) = (binary_expression "iVar10 + -1" identifier + number_literal)) ;) (while_statement "while (iVar10 == 0) {\n              if (param_1 == uVar11) goto LAB_0004ef98;\n              iVar10 = extraout_ECX[uVar11];\n              local_124[uVar11] = iVar10 + -1;\n              uVar11 = uVar11 + 1;\n            }" while (parenthesized_expression "(iVar10 == 0)" ( (binary_expression "iVar10 == 0" identifier == number_literal) )) (compound_statement "{\n              if (param_1 == uVar11) goto LAB_0004ef98;\n              iVar10 = extraout_ECX[uVar11];\n              local_124[uVar11] = iVar10 + -1;\n              uVar11 = uVar11 + 1;\n            }" { (if_statement "if (param_1 == uVar11) goto LAB_0004ef98;" if (parenthesized_expression "(param_1 == uVar11)" ( (binary_expression "param_1 == uVar11" identifier == identifier) )) (goto_statement "goto LAB_0004ef98;" goto statement_identifier ;)) (expression_statement "iVar10 = extraout_ECX[uVar11];" (assignment_expression "iVar10 = extraout_ECX[uVar11]" identifier = (subscript_expression "extraout_ECX[uVar11]" identifier [ identifier ])) ;) (expression_statement "local_124[uVar11] = iVar10 + -1;" (assignment_expression "local_124[uVar11] = iVar10 + -1" (subscript_expression "local_124[uVar11]" identifier [ identifier ]) = (binary_expression "iVar10 + -1" identifier + number_literal)) ;) (expression_statement "uVar11 = uVar11 + 1;" (assignment_expression "uVar11 = uVar11 + 1" identifier = (binary_expression "uVar11 + 1" identifier + number_literal)) ;) })) }) (else_clause "else {\n            uVar11 = 2;\n          }" else (compound_statement "{\n            uVar11 = 2;\n          }" { (expression_statement "uVar11 = 2;" (assignment_expression "uVar11 = 2" identifier = number_literal) ;) }))) (if_statement "if ((extraout_ECX != local_124) && ((int)uVar11 < (int)param_1)) {\n            piVar9 = extraout_ECX + uVar11;\n            piVar8 = local_124 + uVar11;\n            do {\n              iVar10 = *piVar9;\n              piVar9 = piVar9 + 1;\n              *piVar8 = iVar10;\n              piVar8 = piVar8 + 1;\n            } while (extraout_ECX + param_1 + 0x40000000 != piVar9);\n          }" if (parenthesized_expression "((extraout_ECX != local_124) && ((int)uVar11 < (int)param_1))" ( (binary_expression "(extraout_ECX != local_124) && ((int)uVar11 < (int)param_1)" (parenthesized_expression "(extraout_ECX != local_124)" ( (binary_expression "extraout_ECX != local_124" identifier != identifier) )) && (parenthesized_expression "((int)uVar11 < (int)param_1)" ( (binary_expression "(int)uVar11 < (int)param_1" (cast_expression "(int)uVar11" ( (type_descriptor "int" primitive_type) ) identifier) < (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier)) ))) )) (compound_statement "{\n            piVar9 = extraout_ECX + uVar11;\n            piVar8 = local_124 + uVar11;\n            do {\n              iVar10 = *piVar9;\n              piVar9 = piVar9 + 1;\n              *piVar8 = iVar10;\n              piVar8 = piVar8 + 1;\n            } while (extraout_ECX + param_1 + 0x40000000 != piVar9);\n          }" { (expression_statement "piVar9 = extraout_ECX + uVar11;" (assignment_expression "piVar9 = extraout_ECX + uVar11" identifier = (binary_expression "extraout_ECX + uVar11" identifier + identifier)) ;) (expression_statement "piVar8 = local_124 + uVar11;" (assignment_expression "piVar8 = local_124 + uVar11" identifier = (binary_expression "local_124 + uVar11" identifier + identifier)) ;) (do_statement "do {\n              iVar10 = *piVar9;\n              piVar9 = piVar9 + 1;\n              *piVar8 = iVar10;\n              piVar8 = piVar8 + 1;\n            } while (extraout_ECX + param_1 + 0x40000000 != piVar9);" do (compound_statement "{\n              iVar10 = *piVar9;\n              piVar9 = piVar9 + 1;\n              *piVar8 = iVar10;\n              piVar8 = piVar8 + 1;\n            }" { (expression_statement "iVar10 = *piVar9;" (assignment_expression "iVar10 = *piVar9" identifier = (pointer_expression "*piVar9" * identifier)) ;) (expression_statement "piVar9 = piVar9 + 1;" (assignment_expression "piVar9 = piVar9 + 1" identifier = (binary_expression "piVar9 + 1" identifier + number_literal)) ;) (expression_statement "*piVar8 = iVar10;" (assignment_expression "*piVar8 = iVar10" (pointer_expression "*piVar8" * identifier) = identifier) ;) (expression_statement "piVar8 = piVar8 + 1;" (assignment_expression "piVar8 = piVar8 + 1" identifier = (binary_expression "piVar8 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(extraout_ECX + param_1 + 0x40000000 != piVar9)" ( (binary_expression "extraout_ECX + param_1 + 0x40000000 != piVar9" (binary_expression "extraout_ECX + param_1 + 0x40000000" (binary_expression "extraout_ECX + param_1" identifier + identifier) + number_literal) != identifier) )) ;) })) })) }) (else_clause "else if ((extraout_ECX != local_124) && (1 < (int)param_1)) {\n        piVar9 = extraout_ECX + 1;\n        piVar8 = local_124;\n        do {\n          piVar8 = piVar8 + 1;\n          iVar10 = *piVar9;\n          piVar9 = piVar9 + 1;\n          *piVar8 = iVar10;\n        } while (extraout_ECX + param_1 + 0x40000000 != piVar9);\n      }" else (if_statement "if ((extraout_ECX != local_124) && (1 < (int)param_1)) {\n        piVar9 = extraout_ECX + 1;\n        piVar8 = local_124;\n        do {\n          piVar8 = piVar8 + 1;\n          iVar10 = *piVar9;\n          piVar9 = piVar9 + 1;\n          *piVar8 = iVar10;\n        } while (extraout_ECX + param_1 + 0x40000000 != piVar9);\n      }" if (parenthesized_expression "((extraout_ECX != local_124) && (1 < (int)param_1))" ( (binary_expression "(extraout_ECX != local_124) && (1 < (int)param_1)" (parenthesized_expression "(extraout_ECX != local_124)" ( (binary_expression "extraout_ECX != local_124" identifier != identifier) )) && (parenthesized_expression "(1 < (int)param_1)" ( (binary_expression "1 < (int)param_1" number_literal < (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier)) ))) )) (compound_statement "{\n        piVar9 = extraout_ECX + 1;\n        piVar8 = local_124;\n        do {\n          piVar8 = piVar8 + 1;\n          iVar10 = *piVar9;\n          piVar9 = piVar9 + 1;\n          *piVar8 = iVar10;\n        } while (extraout_ECX + param_1 + 0x40000000 != piVar9);\n      }" { (expression_statement "piVar9 = extraout_ECX + 1;" (assignment_expression "piVar9 = extraout_ECX + 1" identifier = (binary_expression "extraout_ECX + 1" identifier + number_literal)) ;) (expression_statement "piVar8 = local_124;" (assignment_expression "piVar8 = local_124" identifier = identifier) ;) (do_statement "do {\n          piVar8 = piVar8 + 1;\n          iVar10 = *piVar9;\n          piVar9 = piVar9 + 1;\n          *piVar8 = iVar10;\n        } while (extraout_ECX + param_1 + 0x40000000 != piVar9);" do (compound_statement "{\n          piVar8 = piVar8 + 1;\n          iVar10 = *piVar9;\n          piVar9 = piVar9 + 1;\n          *piVar8 = iVar10;\n        }" { (expression_statement "piVar8 = piVar8 + 1;" (assignment_expression "piVar8 = piVar8 + 1" identifier = (binary_expression "piVar8 + 1" identifier + number_literal)) ;) (expression_statement "iVar10 = *piVar9;" (assignment_expression "iVar10 = *piVar9" identifier = (pointer_expression "*piVar9" * identifier)) ;) (expression_statement "piVar9 = piVar9 + 1;" (assignment_expression "piVar9 = piVar9 + 1" identifier = (binary_expression "piVar9 + 1" identifier + number_literal)) ;) (expression_statement "*piVar8 = iVar10;" (assignment_expression "*piVar8 = iVar10" (pointer_expression "*piVar8" * identifier) = identifier) ;) }) while (parenthesized_expression "(extraout_ECX + param_1 + 0x40000000 != piVar9)" ( (binary_expression "extraout_ECX + param_1 + 0x40000000 != piVar9" (binary_expression "extraout_ECX + param_1 + 0x40000000" (binary_expression "extraout_ECX + param_1" identifier + identifier) + number_literal) != identifier) )) ;) })))) (labeled_statement "LAB_0004ef98:\n      iVar10 = local_124[local_134];" statement_identifier : (expression_statement "iVar10 = local_124[local_134];" (assignment_expression "iVar10 = local_124[local_134]" identifier = (subscript_expression "local_124[local_134]" identifier [ identifier ])) ;)) }))) (expression_statement "uStack_d8 = param_1 - (iVar10 == 0);" (assignment_expression "uStack_d8 = param_1 - (iVar10 == 0)" identifier = (binary_expression "param_1 - (iVar10 == 0)" identifier - (parenthesized_expression "(iVar10 == 0)" ( (binary_expression "iVar10 == 0" identifier == number_literal) )))) ;) (goto_statement "goto LAB_0004e9ee;" goto statement_identifier ;) })) (if_statement "if (iVar10 == 0x20) {\n    uVar11 = extraout_ECX[param_1 + 0x3ffffffe];\n  }\n  else {\n    uVar11 = (uint)extraout_ECX[(param_1 - 1) - (uint)(param_1 != 1)] >>\n             (0x20 - (byte)iVar10 & 0x1f) | uVar11 << ((byte)iVar10 & 0x1f);\n  }" if (parenthesized_expression "(iVar10 == 0x20)" ( (binary_expression "iVar10 == 0x20" identifier == number_literal) )) (compound_statement "{\n    uVar11 = extraout_ECX[param_1 + 0x3ffffffe];\n  }" { (expression_statement "uVar11 = extraout_ECX[param_1 + 0x3ffffffe];" (assignment_expression "uVar11 = extraout_ECX[param_1 + 0x3ffffffe]" identifier = (subscript_expression "extraout_ECX[param_1 + 0x3ffffffe]" identifier [ (binary_expression "param_1 + 0x3ffffffe" identifier + number_literal) ])) ;) }) (else_clause "else {\n    uVar11 = (uint)extraout_ECX[(param_1 - 1) - (uint)(param_1 != 1)] >>\n             (0x20 - (byte)iVar10 & 0x1f) | uVar11 << ((byte)iVar10 & 0x1f);\n  }" else (compound_statement "{\n    uVar11 = (uint)extraout_ECX[(param_1 - 1) - (uint)(param_1 != 1)] >>\n             (0x20 - (byte)iVar10 & 0x1f) | uVar11 << ((byte)iVar10 & 0x1f);\n  }" { (expression_statement "uVar11 = (uint)extraout_ECX[(param_1 - 1) - (uint)(param_1 != 1)] >>\n             (0x20 - (byte)iVar10 & 0x1f) | uVar11 << ((byte)iVar10 & 0x1f);" (assignment_expression "uVar11 = (uint)extraout_ECX[(param_1 - 1) - (uint)(param_1 != 1)] >>\n             (0x20 - (byte)iVar10 & 0x1f) | uVar11 << ((byte)iVar10 & 0x1f)" identifier = (binary_expression "(uint)extraout_ECX[(param_1 - 1) - (uint)(param_1 != 1)] >>\n             (0x20 - (byte)iVar10 & 0x1f) | uVar11 << ((byte)iVar10 & 0x1f)" (binary_expression "(uint)extraout_ECX[(param_1 - 1) - (uint)(param_1 != 1)] >>\n             (0x20 - (byte)iVar10 & 0x1f)" (cast_expression "(uint)extraout_ECX[(param_1 - 1) - (uint)(param_1 != 1)]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "extraout_ECX[(param_1 - 1) - (uint)(param_1 != 1)]" identifier [ (binary_expression "(param_1 - 1) - (uint)(param_1 != 1)" (parenthesized_expression "(param_1 - 1)" ( (binary_expression "param_1 - 1" identifier - number_literal) )) - (call_expression "(uint)(param_1 != 1)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(param_1 != 1)" ( (binary_expression "param_1 != 1" identifier != number_literal) )))) ])) >> (parenthesized_expression "(0x20 - (byte)iVar10 & 0x1f)" ( (binary_expression "0x20 - (byte)iVar10 & 0x1f" (binary_expression "0x20 - (byte)iVar10" number_literal - (cast_expression "(byte)iVar10" ( (type_descriptor "byte" type_identifier) ) identifier)) & number_literal) ))) | (binary_expression "uVar11 << ((byte)iVar10 & 0x1f)" identifier << (parenthesized_expression "((byte)iVar10 & 0x1f)" ( (binary_expression "(byte)iVar10 & 0x1f" (cast_expression "(byte)iVar10" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) ))))) ;) }))) (expression_statement "uVar11 = (uint)*(byte *)(unaff_EDI + 0x32bc7 + (uVar11 >> 0x18));" (assignment_expression "uVar11 = (uint)*(byte *)(unaff_EDI + 0x32bc7 + (uVar11 >> 0x18))" identifier = (binary_expression "(uint)*(byte *)(unaff_EDI + 0x32bc7 + (uVar11 >> 0x18))" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)(unaff_EDI + 0x32bc7 + (uVar11 >> 0x18))" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x32bc7 + (uVar11 >> 0x18))" ( (binary_expression "unaff_EDI + 0x32bc7 + (uVar11 >> 0x18)" (binary_expression "unaff_EDI + 0x32bc7" identifier + number_literal) + (parenthesized_expression "(uVar11 >> 0x18)" ( (binary_expression "uVar11 >> 0x18" identifier >> number_literal) ))) ))))) ;) (if_statement "if (uVar5 < 0x1000000) {\n    uStack_e8 = (uVar5 * 0x100 | uVar11) / param_2;\n    uVar11 = uStack_e8 & 0xff;\n    uStack_e8 = uStack_e8 >> 8;\n  }\n  else {\n    uStack_e8 = uVar5 / param_2;\n    uVar11 = (uVar5 % param_2 << 8 | uVar11) / param_2;\n  }" if (parenthesized_expression "(uVar5 < 0x1000000)" ( (binary_expression "uVar5 < 0x1000000" identifier < number_literal) )) (compound_statement "{\n    uStack_e8 = (uVar5 * 0x100 | uVar11) / param_2;\n    uVar11 = uStack_e8 & 0xff;\n    uStack_e8 = uStack_e8 >> 8;\n  }" { (expression_statement "uStack_e8 = (uVar5 * 0x100 | uVar11) / param_2;" (assignment_expression "uStack_e8 = (uVar5 * 0x100 | uVar11) / param_2" identifier = (binary_expression "(uVar5 * 0x100 | uVar11) / param_2" (parenthesized_expression "(uVar5 * 0x100 | uVar11)" ( (binary_expression "uVar5 * 0x100 | uVar11" (binary_expression "uVar5 * 0x100" identifier * number_literal) | identifier) )) / identifier)) ;) (expression_statement "uVar11 = uStack_e8 & 0xff;" (assignment_expression "uVar11 = uStack_e8 & 0xff" identifier = (binary_expression "uStack_e8 & 0xff" identifier & number_literal)) ;) (expression_statement "uStack_e8 = uStack_e8 >> 8;" (assignment_expression "uStack_e8 = uStack_e8 >> 8" identifier = (binary_expression "uStack_e8 >> 8" identifier >> number_literal)) ;) }) (else_clause "else {\n    uStack_e8 = uVar5 / param_2;\n    uVar11 = (uVar5 % param_2 << 8 | uVar11) / param_2;\n  }" else (compound_statement "{\n    uStack_e8 = uVar5 / param_2;\n    uVar11 = (uVar5 % param_2 << 8 | uVar11) / param_2;\n  }" { (expression_statement "uStack_e8 = uVar5 / param_2;" (assignment_expression "uStack_e8 = uVar5 / param_2" identifier = (binary_expression "uVar5 / param_2" identifier / identifier)) ;) (expression_statement "uVar11 = (uVar5 % param_2 << 8 | uVar11) / param_2;" (assignment_expression "uVar11 = (uVar5 % param_2 << 8 | uVar11) / param_2" identifier = (binary_expression "(uVar5 % param_2 << 8 | uVar11) / param_2" (parenthesized_expression "(uVar5 % param_2 << 8 | uVar11)" ( (binary_expression "uVar5 % param_2 << 8 | uVar11" (binary_expression "uVar5 % param_2 << 8" (binary_expression "uVar5 % param_2" identifier % identifier) << number_literal) | identifier) )) / identifier)) ;) }))) (expression_statement "iVar10 = uStack_e8 * param_2;" (assignment_expression "iVar10 = uStack_e8 * param_2" identifier = (binary_expression "uStack_e8 * param_2" identifier * identifier)) ;) (expression_statement "bVar1 = *(byte *)(unaff_EDI + 0x32ac7 + uVar11);" (assignment_expression "bVar1 = *(byte *)(unaff_EDI + 0x32ac7 + uVar11)" identifier = (pointer_expression "*(byte *)(unaff_EDI + 0x32ac7 + uVar11)" * (cast_expression "(byte *)(unaff_EDI + 0x32ac7 + uVar11)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x32ac7 + uVar11)" ( (binary_expression "unaff_EDI + 0x32ac7 + uVar11" (binary_expression "unaff_EDI + 0x32ac7" identifier + number_literal) + identifier) ))))) ;) (expression_statement "uStack_ec = param_2 - 1;" (assignment_expression "uStack_ec = param_2 - 1" identifier = (binary_expression "param_2 - 1" identifier - number_literal)) ;) (expression_statement "uVar11 = 3;" (assignment_expression "uVar11 = 3" identifier = number_literal) ;) (for_statement "for (uVar5 = uStack_ec >> 2; uVar5 != 0; uVar5 = uVar5 >> 1) {\n    uVar11 = uVar11 + 1;\n  }" for ( (assignment_expression "uVar5 = uStack_ec >> 2" identifier = (binary_expression "uStack_ec >> 2" identifier >> number_literal)) ; (binary_expression "uVar5 != 0" identifier != number_literal) ; (assignment_expression "uVar5 = uVar5 >> 1" identifier = (binary_expression "uVar5 >> 1" identifier >> number_literal)) ) (compound_statement "{\n    uVar11 = uVar11 + 1;\n  }" { (expression_statement "uVar11 = uVar11 + 1;" (assignment_expression "uVar11 = uVar11 + 1" identifier = (binary_expression "uVar11 + 1" identifier + number_literal)) ;) })) (expression_statement "puStack_fc = auStack_a4;" (assignment_expression "puStack_fc = auStack_a4" identifier = identifier) ;) (expression_statement "iVar15 = 0;" (assignment_expression "iVar15 = 0" identifier = number_literal) ;) (expression_statement "auStack_a4[0] = uStack_e8;" (assignment_expression "auStack_a4[0] = uStack_e8" (subscript_expression "auStack_a4[0]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (8 < uStack_e8) {\n    iVar4 = 0;\n    do {\n      while (iVar15 = iVar4, uVar11 < uStack_e8) {\n        uStack_e8 = uStack_e8 + uVar11 >> 1;\n        puStack_fc[iVar15 + 1] = uStack_e8;\n        iVar4 = iVar15 + 1;\n        if (uStack_e8 < 9) goto LAB_0004e56d;\n      }\n      uStack_e8 = uStack_e8 - 1;\n      puStack_fc[iVar15 + 1] = uStack_e8;\n      iVar4 = iVar15 + 1;\n    } while (uStack_e8 != 8);\n    uStack_e8 = 8;\nLAB_0004e56d:\n    iVar15 = iVar15 + 1;\n  }" if (parenthesized_expression "(8 < uStack_e8)" ( (binary_expression "8 < uStack_e8" number_literal < identifier) )) (compound_statement "{\n    iVar4 = 0;\n    do {\n      while (iVar15 = iVar4, uVar11 < uStack_e8) {\n        uStack_e8 = uStack_e8 + uVar11 >> 1;\n        puStack_fc[iVar15 + 1] = uStack_e8;\n        iVar4 = iVar15 + 1;\n        if (uStack_e8 < 9) goto LAB_0004e56d;\n      }\n      uStack_e8 = uStack_e8 - 1;\n      puStack_fc[iVar15 + 1] = uStack_e8;\n      iVar4 = iVar15 + 1;\n    } while (uStack_e8 != 8);\n    uStack_e8 = 8;\nLAB_0004e56d:\n    iVar15 = iVar15 + 1;\n  }" { (expression_statement "iVar4 = 0;" (assignment_expression "iVar4 = 0" identifier = number_literal) ;) (do_statement "do {\n      while (iVar15 = iVar4, uVar11 < uStack_e8) {\n        uStack_e8 = uStack_e8 + uVar11 >> 1;\n        puStack_fc[iVar15 + 1] = uStack_e8;\n        iVar4 = iVar15 + 1;\n        if (uStack_e8 < 9) goto LAB_0004e56d;\n      }\n      uStack_e8 = uStack_e8 - 1;\n      puStack_fc[iVar15 + 1] = uStack_e8;\n      iVar4 = iVar15 + 1;\n    } while (uStack_e8 != 8);" do (compound_statement "{\n      while (iVar15 = iVar4, uVar11 < uStack_e8) {\n        uStack_e8 = uStack_e8 + uVar11 >> 1;\n        puStack_fc[iVar15 + 1] = uStack_e8;\n        iVar4 = iVar15 + 1;\n        if (uStack_e8 < 9) goto LAB_0004e56d;\n      }\n      uStack_e8 = uStack_e8 - 1;\n      puStack_fc[iVar15 + 1] = uStack_e8;\n      iVar4 = iVar15 + 1;\n    }" { (while_statement "while (iVar15 = iVar4, uVar11 < uStack_e8) {\n        uStack_e8 = uStack_e8 + uVar11 >> 1;\n        puStack_fc[iVar15 + 1] = uStack_e8;\n        iVar4 = iVar15 + 1;\n        if (uStack_e8 < 9) goto LAB_0004e56d;\n      }" while (parenthesized_expression "(iVar15 = iVar4, uVar11 < uStack_e8)" ( (comma_expression "iVar15 = iVar4, uVar11 < uStack_e8" (assignment_expression "iVar15 = iVar4" identifier = identifier) , (binary_expression "uVar11 < uStack_e8" identifier < identifier)) )) (compound_statement "{\n        uStack_e8 = uStack_e8 + uVar11 >> 1;\n        puStack_fc[iVar15 + 1] = uStack_e8;\n        iVar4 = iVar15 + 1;\n        if (uStack_e8 < 9) goto LAB_0004e56d;\n      }" { (expression_statement "uStack_e8 = uStack_e8 + uVar11 >> 1;" (assignment_expression "uStack_e8 = uStack_e8 + uVar11 >> 1" identifier = (binary_expression "uStack_e8 + uVar11 >> 1" (binary_expression "uStack_e8 + uVar11" identifier + identifier) >> number_literal)) ;) (expression_statement "puStack_fc[iVar15 + 1] = uStack_e8;" (assignment_expression "puStack_fc[iVar15 + 1] = uStack_e8" (subscript_expression "puStack_fc[iVar15 + 1]" identifier [ (binary_expression "iVar15 + 1" identifier + number_literal) ]) = identifier) ;) (expression_statement "iVar4 = iVar15 + 1;" (assignment_expression "iVar4 = iVar15 + 1" identifier = (binary_expression "iVar15 + 1" identifier + number_literal)) ;) (if_statement "if (uStack_e8 < 9) goto LAB_0004e56d;" if (parenthesized_expression "(uStack_e8 < 9)" ( (binary_expression "uStack_e8 < 9" identifier < number_literal) )) (goto_statement "goto LAB_0004e56d;" goto statement_identifier ;)) })) (expression_statement "uStack_e8 = uStack_e8 - 1;" (assignment_expression "uStack_e8 = uStack_e8 - 1" identifier = (binary_expression "uStack_e8 - 1" identifier - number_literal)) ;) (expression_statement "puStack_fc[iVar15 + 1] = uStack_e8;" (assignment_expression "puStack_fc[iVar15 + 1] = uStack_e8" (subscript_expression "puStack_fc[iVar15 + 1]" identifier [ (binary_expression "iVar15 + 1" identifier + number_literal) ]) = identifier) ;) (expression_statement "iVar4 = iVar15 + 1;" (assignment_expression "iVar4 = iVar15 + 1" identifier = (binary_expression "iVar15 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uStack_e8 != 8)" ( (binary_expression "uStack_e8 != 8" identifier != number_literal) )) ;) (expression_statement "uStack_e8 = 8;" (assignment_expression "uStack_e8 = 8" identifier = number_literal) ;) (labeled_statement "LAB_0004e56d:\n    iVar15 = iVar15 + 1;" statement_identifier : (expression_statement "iVar15 = iVar15 + 1;" (assignment_expression "iVar15 = iVar15 + 1" identifier = (binary_expression "iVar15 + 1" identifier + number_literal)) ;)) })) (expression_statement "iStack_a8 = 0;" (assignment_expression "iStack_a8 = 0" identifier = number_literal) ;) (expression_statement "uStack_f4 = iVar10 - uStack_e8;" (assignment_expression "uStack_f4 = iVar10 - uStack_e8" identifier = (binary_expression "iVar10 - uStack_e8" identifier - identifier)) ;) (expression_statement "*local_c0 = (bVar1 | 0x100) >> (8U - (char)uStack_e8 & 0x1f);" (assignment_expression "*local_c0 = (bVar1 | 0x100) >> (8U - (char)uStack_e8 & 0x1f)" (pointer_expression "*local_c0" * identifier) = (binary_expression "(bVar1 | 0x100) >> (8U - (char)uStack_e8 & 0x1f)" (parenthesized_expression "(bVar1 | 0x100)" ( (binary_expression "bVar1 | 0x100" identifier | number_literal) )) >> (parenthesized_expression "(8U - (char)uStack_e8 & 0x1f)" ( (binary_expression "8U - (char)uStack_e8 & 0x1f" (binary_expression "8U - (char)uStack_e8" number_literal - (cast_expression "(char)uStack_e8" ( (type_descriptor "char" primitive_type) ) identifier)) & number_literal) )))) ;) (expression_statement "uStack_c8 = 0;" (assignment_expression "uStack_c8 = 0" identifier = number_literal) ;) (expression_statement "uStack_b8 = in_FPUControlWord | 0xc00;" (assignment_expression "uStack_b8 = in_FPUControlWord | 0xc00" identifier = (binary_expression "in_FPUControlWord | 0xc00" identifier | number_literal)) ;) (expression_statement "iStack_bc = (int)ROUND((double)param_2 * *(double *)(unaff_EDI + 0x32cc7) *\n                         (double)*(float *)(&UNK_00032ccf + unaff_EDI));" (assignment_expression "iStack_bc = (int)ROUND((double)param_2 * *(double *)(unaff_EDI + 0x32cc7) *\n                         (double)*(float *)(&UNK_00032ccf + unaff_EDI))" identifier = (cast_expression "(int)ROUND((double)param_2 * *(double *)(unaff_EDI + 0x32cc7) *\n                         (double)*(float *)(&UNK_00032ccf + unaff_EDI))" ( (type_descriptor "int" primitive_type) ) (call_expression "ROUND((double)param_2 * *(double *)(unaff_EDI + 0x32cc7) *\n                         (double)*(float *)(&UNK_00032ccf + unaff_EDI))" identifier (argument_list "((double)param_2 * *(double *)(unaff_EDI + 0x32cc7) *\n                         (double)*(float *)(&UNK_00032ccf + unaff_EDI))" ( (binary_expression "(double)param_2 * *(double *)(unaff_EDI + 0x32cc7) *\n                         (double)*(float *)(&UNK_00032ccf + unaff_EDI)" (binary_expression "(double)param_2 * *(double *)(unaff_EDI + 0x32cc7)" (cast_expression "(double)param_2" ( (type_descriptor "double" primitive_type) ) identifier) * (pointer_expression "*(double *)(unaff_EDI + 0x32cc7)" * (cast_expression "(double *)(unaff_EDI + 0x32cc7)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x32cc7)" ( (binary_expression "unaff_EDI + 0x32cc7" identifier + number_literal) ))))) * (cast_expression "(double)*(float *)(&UNK_00032ccf + unaff_EDI)" ( (type_descriptor "double" primitive_type) ) (pointer_expression "*(float *)(&UNK_00032ccf + unaff_EDI)" * (cast_expression "(float *)(&UNK_00032ccf + unaff_EDI)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&UNK_00032ccf + unaff_EDI)" ( (binary_expression "&UNK_00032ccf + unaff_EDI" (pointer_expression "&UNK_00032ccf" & identifier) + identifier) )))))) ))))) ;) (expression_statement "iStack_cc = param_1 + 2 + iStack_bc;" (assignment_expression "iStack_cc = param_1 + 2 + iStack_bc" identifier = (binary_expression "param_1 + 2 + iStack_bc" (binary_expression "param_1 + 2" identifier + number_literal) + identifier)) ;) (expression_statement "uVar11 = (param_1 + 1 + iStack_cc * 2) * 4;" (assignment_expression "uVar11 = (param_1 + 1 + iStack_cc * 2) * 4" identifier = (binary_expression "(param_1 + 1 + iStack_cc * 2) * 4" (parenthesized_expression "(param_1 + 1 + iStack_cc * 2)" ( (binary_expression "param_1 + 1 + iStack_cc * 2" (binary_expression "param_1 + 1" identifier + number_literal) + (binary_expression "iStack_cc * 2" identifier * number_literal)) )) * number_literal)) ;) (expression_statement "local_f8 = extraout_ECX;" (assignment_expression "local_f8 = extraout_ECX" identifier = identifier) ;) (if_statement "if (uVar11 < 0x7f01) {\n    iStack_120 = -(uVar11 + 0x1b & 0xfffffff0);\n    puVar14 = auStack_13c + iStack_120;\n    iStack_120 = (int)&uStack_130 + iStack_120;\n  }\n  else {\n    iStack_120 = __gmp_tmp_reentrant_alloc(&iStack_a8,uVar11);\n    uVar16 = CONCAT44(local_124,local_c0);\n    puVar14 = auStack_13c;\n  }" if (parenthesized_expression "(uVar11 < 0x7f01)" ( (binary_expression "uVar11 < 0x7f01" identifier < number_literal) )) (compound_statement "{\n    iStack_120 = -(uVar11 + 0x1b & 0xfffffff0);\n    puVar14 = auStack_13c + iStack_120;\n    iStack_120 = (int)&uStack_130 + iStack_120;\n  }" { (expression_statement "iStack_120 = -(uVar11 + 0x1b & 0xfffffff0);" (assignment_expression "iStack_120 = -(uVar11 + 0x1b & 0xfffffff0)" identifier = (unary_expression "-(uVar11 + 0x1b & 0xfffffff0)" - (parenthesized_expression "(uVar11 + 0x1b & 0xfffffff0)" ( (binary_expression "uVar11 + 0x1b & 0xfffffff0" (binary_expression "uVar11 + 0x1b" identifier + number_literal) & number_literal) )))) ;) (expression_statement "puVar14 = auStack_13c + iStack_120;" (assignment_expression "puVar14 = auStack_13c + iStack_120" identifier = (binary_expression "auStack_13c + iStack_120" identifier + identifier)) ;) (expression_statement "iStack_120 = (int)&uStack_130 + iStack_120;" (assignment_expression "iStack_120 = (int)&uStack_130 + iStack_120" identifier = (binary_expression "(int)&uStack_130 + iStack_120" (cast_expression "(int)&uStack_130" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&uStack_130" & identifier)) + identifier)) ;) }) (else_clause "else {\n    iStack_120 = __gmp_tmp_reentrant_alloc(&iStack_a8,uVar11);\n    uVar16 = CONCAT44(local_124,local_c0);\n    puVar14 = auStack_13c;\n  }" else (compound_statement "{\n    iStack_120 = __gmp_tmp_reentrant_alloc(&iStack_a8,uVar11);\n    uVar16 = CONCAT44(local_124,local_c0);\n    puVar14 = auStack_13c;\n  }" { (expression_statement "iStack_120 = __gmp_tmp_reentrant_alloc(&iStack_a8,uVar11);" (assignment_expression "iStack_120 = __gmp_tmp_reentrant_alloc(&iStack_a8,uVar11)" identifier = (call_expression "__gmp_tmp_reentrant_alloc(&iStack_a8,uVar11)" identifier (argument_list "(&iStack_a8,uVar11)" ( (pointer_expression "&iStack_a8" & identifier) , identifier )))) ;) (expression_statement "uVar16 = CONCAT44(local_124,local_c0);" (assignment_expression "uVar16 = CONCAT44(local_124,local_c0)" identifier = (call_expression "CONCAT44(local_124,local_c0)" identifier (argument_list "(local_124,local_c0)" ( identifier , identifier )))) ;) (expression_statement "puVar14 = auStack_13c;" (assignment_expression "puVar14 = auStack_13c" identifier = identifier) ;) }))) (expression_statement "local_124 = (int *)((ulonglong)uVar16 >> 0x20);" (assignment_expression "local_124 = (int *)((ulonglong)uVar16 >> 0x20)" identifier = (cast_expression "(int *)((ulonglong)uVar16 >> 0x20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((ulonglong)uVar16 >> 0x20)" ( (binary_expression "(ulonglong)uVar16 >> 0x20" (cast_expression "(ulonglong)uVar16" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "iVar10 = iStack_120 + local_128 + 8;" (assignment_expression "iVar10 = iStack_120 + local_128 + 8" identifier = (binary_expression "iStack_120 + local_128 + 8" (binary_expression "iStack_120 + local_128" identifier + identifier) + number_literal)) ;) (expression_statement "iStack_d0 = iVar10 + iStack_cc * 4;" (assignment_expression "iStack_d0 = iVar10 + iStack_cc * 4" identifier = (binary_expression "iVar10 + iStack_cc * 4" identifier + (binary_expression "iStack_cc * 4" identifier * number_literal))) ;) (expression_statement "iStack_d4 = (int)local_124;" (assignment_expression "iStack_d4 = (int)local_124" identifier = (cast_expression "(int)local_124" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (if_statement "if (local_124 == (int *)0x0) {\n    iStack_d4 = iStack_120;\n  }" if (parenthesized_expression "(local_124 == (int *)0x0)" ( (binary_expression "local_124 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    iStack_d4 = iStack_120;\n  }" { (expression_statement "iStack_d4 = iStack_120;" (assignment_expression "iStack_d4 = iStack_120" identifier = identifier) ;) })) (if_statement "if (iVar15 != 0) {\n    iStack_104 = iVar15 + -1;\n    puStack_fc = auStack_a4;\n    iStack_cc = 1;\n    iStack_e0 = *(int *)(local_c4 + -0x26c);\n    iStack_dc = iVar10;\nLAB_0004e690:\n    local_124 = (int *)((ulonglong)uVar16 >> 0x20);\n    local_c0 = (uint *)uVar16;\n    uStack_e4 = uStack_f4 - uStack_e8 * uStack_ec;\n    iVar10 = param_1 - (uStack_e4 >> 5);\n    piVar9 = local_f8 + (uStack_e4 >> 5);\n    if ((uStack_e4 & 0x1f) == 0) {\n      *(int *)(puVar14 + -8) = iVar10;\n      *(int **)(puVar14 + -0xc) = piVar9;\n      iVar15 = iStack_e0;\n      *(int *)(puVar14 + -0x10) = iStack_d4;\n      pcVar2 = *(code **)(iVar15 + 0x28);\n      *(undefined4 *)(puVar14 + -0x14) = 0x4ed34;\n      (*pcVar2)();\n    }\n    else {\n      *(uint *)(puVar14 + -4) = uStack_e4 & 0x1f;\n      *(int *)(puVar14 + -8) = iVar10;\n      *(int **)(puVar14 + -0xc) = piVar9;\n      iVar15 = iStack_e0;\n      *(int *)(puVar14 + -0x10) = iStack_d4;\n      pcVar2 = *(code **)(iVar15 + 0x80);\n      *(undefined4 *)(puVar14 + -0x14) = 0x4e6dc;\n      (*pcVar2)();\n    }\n    iVar4 = iStack_d4;\n    iVar15 = iStack_dc;\n    uStack_d8 = iVar10 - (uint)(*(int *)(iStack_d4 + (iVar10 + -1) * 4) == 0);\n    do {\n      *(int *)(puVar14 + -0x10) = iVar15;\n      *(uint *)(puVar14 + -0x14) = uStack_ec;\n      *(int *)(puVar14 + -0x18) = iStack_cc;\n      *(uint **)(puVar14 + -0x1c) = local_c0;\n      *(int *)(puVar14 + -0x20) = iStack_d0;\n      *(undefined4 *)(puVar14 + -0x24) = 0x4e727;\n      iVar10 = __gmpn_pow_1();\n      *(int *)(puVar14 + -0x10) = iStack_cc;\n      *(uint **)(puVar14 + -0x14) = local_c0;\n      *(int *)(puVar14 + -0x18) = iVar10;\n      *(int *)(puVar14 + -0x1c) = iStack_d0;\n      *(int *)(puVar14 + -0x20) = iVar15;\n      iStack_dc = iVar10;\n      *(undefined4 *)(puVar14 + -0x24) = 0x4e74f;\n      __gmpn_mul();\n      iVar10 = iStack_d4;\n      uVar11 = uStack_d8;\n      iVar6 = (iStack_cc + iStack_dc) -\n              (uint)(*(int *)(iVar15 + -4 + (iStack_cc + iStack_dc) * 4) == 0);\n      puVar7 = local_c0;\n      if (iVar6 <= (int)uStack_d8) {\n        uVar5 = uStack_d8;\n        if (uStack_d8 != iVar6) goto LAB_0004eb66;\n        do {\n          uVar5 = uVar5 + -1;\n          if ((int)uVar5 < 0) {\n            iStack_108 = iStack_dc;\n            uStack_114 = 0;\n            iStack_10c = iStack_104;\n            uStack_e8 = puStack_fc[iStack_104] - puStack_fc[iStack_104 + 1];\n            iStack_118 = puStack_fc[iStack_104 + 1] - puStack_fc[iStack_104];\n            uStack_f0 = uStack_e8 >> 5;\n            uStack_f4 = iStack_118 + uStack_e4;\n            uVar11 = uStack_e4 - 1;\n            uStack_e4 = uStack_e8 & 0x1f;\n            puVar12 = (uint *)((uVar11 >> 5) - (uStack_f4 >> 5));\n            uStack_100 = uStack_f0 * 4;\n            uVar11 = 0;\n            iStack_110 = (int)puVar12 + 1;\n            uVar5 = uStack_f4 >> 5;\n            puVar7 = (uint *)(iStack_d4 + uStack_f0 * 4);\n            iStack_dc = iVar15;\n            uStack_d8 = uStack_f0;\n            goto LAB_0004e83d;\n          }\n          uVar13 = *(uint *)(iVar4 + uVar5 * 4);\n          uVar3 = *(uint *)(iVar15 + uVar5 * 4);\n        } while (uVar3 == uVar13);\n        if (uVar3 <= uVar13) goto LAB_0004eb66;\n      }\n      do {\n        uVar11 = *puVar7;\n        *puVar7 = *puVar7 - 1;\n        puVar7 = puVar7 + 1;\n      } while (uVar11 == 0);\n    } while( true );\n  }" if (parenthesized_expression "(iVar15 != 0)" ( (binary_expression "iVar15 != 0" identifier != number_literal) )) (compound_statement "{\n    iStack_104 = iVar15 + -1;\n    puStack_fc = auStack_a4;\n    iStack_cc = 1;\n    iStack_e0 = *(int *)(local_c4 + -0x26c);\n    iStack_dc = iVar10;\nLAB_0004e690:\n    local_124 = (int *)((ulonglong)uVar16 >> 0x20);\n    local_c0 = (uint *)uVar16;\n    uStack_e4 = uStack_f4 - uStack_e8 * uStack_ec;\n    iVar10 = param_1 - (uStack_e4 >> 5);\n    piVar9 = local_f8 + (uStack_e4 >> 5);\n    if ((uStack_e4 & 0x1f) == 0) {\n      *(int *)(puVar14 + -8) = iVar10;\n      *(int **)(puVar14 + -0xc) = piVar9;\n      iVar15 = iStack_e0;\n      *(int *)(puVar14 + -0x10) = iStack_d4;\n      pcVar2 = *(code **)(iVar15 + 0x28);\n      *(undefined4 *)(puVar14 + -0x14) = 0x4ed34;\n      (*pcVar2)();\n    }\n    else {\n      *(uint *)(puVar14 + -4) = uStack_e4 & 0x1f;\n      *(int *)(puVar14 + -8) = iVar10;\n      *(int **)(puVar14 + -0xc) = piVar9;\n      iVar15 = iStack_e0;\n      *(int *)(puVar14 + -0x10) = iStack_d4;\n      pcVar2 = *(code **)(iVar15 + 0x80);\n      *(undefined4 *)(puVar14 + -0x14) = 0x4e6dc;\n      (*pcVar2)();\n    }\n    iVar4 = iStack_d4;\n    iVar15 = iStack_dc;\n    uStack_d8 = iVar10 - (uint)(*(int *)(iStack_d4 + (iVar10 + -1) * 4) == 0);\n    do {\n      *(int *)(puVar14 + -0x10) = iVar15;\n      *(uint *)(puVar14 + -0x14) = uStack_ec;\n      *(int *)(puVar14 + -0x18) = iStack_cc;\n      *(uint **)(puVar14 + -0x1c) = local_c0;\n      *(int *)(puVar14 + -0x20) = iStack_d0;\n      *(undefined4 *)(puVar14 + -0x24) = 0x4e727;\n      iVar10 = __gmpn_pow_1();\n      *(int *)(puVar14 + -0x10) = iStack_cc;\n      *(uint **)(puVar14 + -0x14) = local_c0;\n      *(int *)(puVar14 + -0x18) = iVar10;\n      *(int *)(puVar14 + -0x1c) = iStack_d0;\n      *(int *)(puVar14 + -0x20) = iVar15;\n      iStack_dc = iVar10;\n      *(undefined4 *)(puVar14 + -0x24) = 0x4e74f;\n      __gmpn_mul();\n      iVar10 = iStack_d4;\n      uVar11 = uStack_d8;\n      iVar6 = (iStack_cc + iStack_dc) -\n              (uint)(*(int *)(iVar15 + -4 + (iStack_cc + iStack_dc) * 4) == 0);\n      puVar7 = local_c0;\n      if (iVar6 <= (int)uStack_d8) {\n        uVar5 = uStack_d8;\n        if (uStack_d8 != iVar6) goto LAB_0004eb66;\n        do {\n          uVar5 = uVar5 + -1;\n          if ((int)uVar5 < 0) {\n            iStack_108 = iStack_dc;\n            uStack_114 = 0;\n            iStack_10c = iStack_104;\n            uStack_e8 = puStack_fc[iStack_104] - puStack_fc[iStack_104 + 1];\n            iStack_118 = puStack_fc[iStack_104 + 1] - puStack_fc[iStack_104];\n            uStack_f0 = uStack_e8 >> 5;\n            uStack_f4 = iStack_118 + uStack_e4;\n            uVar11 = uStack_e4 - 1;\n            uStack_e4 = uStack_e8 & 0x1f;\n            puVar12 = (uint *)((uVar11 >> 5) - (uStack_f4 >> 5));\n            uStack_100 = uStack_f0 * 4;\n            uVar11 = 0;\n            iStack_110 = (int)puVar12 + 1;\n            uVar5 = uStack_f4 >> 5;\n            puVar7 = (uint *)(iStack_d4 + uStack_f0 * 4);\n            iStack_dc = iVar15;\n            uStack_d8 = uStack_f0;\n            goto LAB_0004e83d;\n          }\n          uVar13 = *(uint *)(iVar4 + uVar5 * 4);\n          uVar3 = *(uint *)(iVar15 + uVar5 * 4);\n        } while (uVar3 == uVar13);\n        if (uVar3 <= uVar13) goto LAB_0004eb66;\n      }\n      do {\n        uVar11 = *puVar7;\n        *puVar7 = *puVar7 - 1;\n        puVar7 = puVar7 + 1;\n      } while (uVar11 == 0);\n    } while( true );\n  }" { (expression_statement "iStack_104 = iVar15 + -1;" (assignment_expression "iStack_104 = iVar15 + -1" identifier = (binary_expression "iVar15 + -1" identifier + number_literal)) ;) (expression_statement "puStack_fc = auStack_a4;" (assignment_expression "puStack_fc = auStack_a4" identifier = identifier) ;) (expression_statement "iStack_cc = 1;" (assignment_expression "iStack_cc = 1" identifier = number_literal) ;) (expression_statement "iStack_e0 = *(int *)(local_c4 + -0x26c);" (assignment_expression "iStack_e0 = *(int *)(local_c4 + -0x26c)" identifier = (pointer_expression "*(int *)(local_c4 + -0x26c)" * (cast_expression "(int *)(local_c4 + -0x26c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_c4 + -0x26c)" ( (binary_expression "local_c4 + -0x26c" identifier + number_literal) ))))) ;) (expression_statement "iStack_dc = iVar10;" (assignment_expression "iStack_dc = iVar10" identifier = identifier) ;) (labeled_statement "LAB_0004e690:\n    local_124 = (int *)((ulonglong)uVar16 >> 0x20);" statement_identifier : (expression_statement "local_124 = (int *)((ulonglong)uVar16 >> 0x20);" (assignment_expression "local_124 = (int *)((ulonglong)uVar16 >> 0x20)" identifier = (cast_expression "(int *)((ulonglong)uVar16 >> 0x20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((ulonglong)uVar16 >> 0x20)" ( (binary_expression "(ulonglong)uVar16 >> 0x20" (cast_expression "(ulonglong)uVar16" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;)) (expression_statement "local_c0 = (uint *)uVar16;" (assignment_expression "local_c0 = (uint *)uVar16" identifier = (cast_expression "(uint *)uVar16" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "uStack_e4 = uStack_f4 - uStack_e8 * uStack_ec;" (assignment_expression "uStack_e4 = uStack_f4 - uStack_e8 * uStack_ec" identifier = (binary_expression "uStack_f4 - uStack_e8 * uStack_ec" identifier - (binary_expression "uStack_e8 * uStack_ec" identifier * identifier))) ;) (expression_statement "iVar10 = param_1 - (uStack_e4 >> 5);" (assignment_expression "iVar10 = param_1 - (uStack_e4 >> 5)" identifier = (binary_expression "param_1 - (uStack_e4 >> 5)" identifier - (parenthesized_expression "(uStack_e4 >> 5)" ( (binary_expression "uStack_e4 >> 5" identifier >> number_literal) )))) ;) (expression_statement "piVar9 = local_f8 + (uStack_e4 >> 5);" (assignment_expression "piVar9 = local_f8 + (uStack_e4 >> 5)" identifier = (binary_expression "local_f8 + (uStack_e4 >> 5)" identifier + (parenthesized_expression "(uStack_e4 >> 5)" ( (binary_expression "uStack_e4 >> 5" identifier >> number_literal) )))) ;) (if_statement "if ((uStack_e4 & 0x1f) == 0) {\n      *(int *)(puVar14 + -8) = iVar10;\n      *(int **)(puVar14 + -0xc) = piVar9;\n      iVar15 = iStack_e0;\n      *(int *)(puVar14 + -0x10) = iStack_d4;\n      pcVar2 = *(code **)(iVar15 + 0x28);\n      *(undefined4 *)(puVar14 + -0x14) = 0x4ed34;\n      (*pcVar2)();\n    }\n    else {\n      *(uint *)(puVar14 + -4) = uStack_e4 & 0x1f;\n      *(int *)(puVar14 + -8) = iVar10;\n      *(int **)(puVar14 + -0xc) = piVar9;\n      iVar15 = iStack_e0;\n      *(int *)(puVar14 + -0x10) = iStack_d4;\n      pcVar2 = *(code **)(iVar15 + 0x80);\n      *(undefined4 *)(puVar14 + -0x14) = 0x4e6dc;\n      (*pcVar2)();\n    }" if (parenthesized_expression "((uStack_e4 & 0x1f) == 0)" ( (binary_expression "(uStack_e4 & 0x1f) == 0" (parenthesized_expression "(uStack_e4 & 0x1f)" ( (binary_expression "uStack_e4 & 0x1f" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n      *(int *)(puVar14 + -8) = iVar10;\n      *(int **)(puVar14 + -0xc) = piVar9;\n      iVar15 = iStack_e0;\n      *(int *)(puVar14 + -0x10) = iStack_d4;\n      pcVar2 = *(code **)(iVar15 + 0x28);\n      *(undefined4 *)(puVar14 + -0x14) = 0x4ed34;\n      (*pcVar2)();\n    }" { (expression_statement "*(int *)(puVar14 + -8) = iVar10;" (assignment_expression "*(int *)(puVar14 + -8) = iVar10" (pointer_expression "*(int *)(puVar14 + -8)" * (cast_expression "(int *)(puVar14 + -8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar14 + -8)" ( (binary_expression "puVar14 + -8" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int **)(puVar14 + -0xc) = piVar9;" (assignment_expression "*(int **)(puVar14 + -0xc) = piVar9" (pointer_expression "*(int **)(puVar14 + -0xc)" * (cast_expression "(int **)(puVar14 + -0xc)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar14 + -0xc)" ( (binary_expression "puVar14 + -0xc" identifier + number_literal) )))) = identifier) ;) (expression_statement "iVar15 = iStack_e0;" (assignment_expression "iVar15 = iStack_e0" identifier = identifier) ;) (expression_statement "*(int *)(puVar14 + -0x10) = iStack_d4;" (assignment_expression "*(int *)(puVar14 + -0x10) = iStack_d4" (pointer_expression "*(int *)(puVar14 + -0x10)" * (cast_expression "(int *)(puVar14 + -0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar14 + -0x10)" ( (binary_expression "puVar14 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "pcVar2 = *(code **)(iVar15 + 0x28);" (assignment_expression "pcVar2 = *(code **)(iVar15 + 0x28)" identifier = (pointer_expression "*(code **)(iVar15 + 0x28)" * (cast_expression "(code **)(iVar15 + 0x28)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar15 + 0x28)" ( (binary_expression "iVar15 + 0x28" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar14 + -0x14) = 0x4ed34;" (assignment_expression "*(undefined4 *)(puVar14 + -0x14) = 0x4ed34" (pointer_expression "*(undefined4 *)(puVar14 + -0x14)" * (cast_expression "(undefined4 *)(puVar14 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar14 + -0x14)" ( (binary_expression "puVar14 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "(*pcVar2)();" (call_expression "(*pcVar2)()" (parenthesized_expression "(*pcVar2)" ( (pointer_expression "*pcVar2" * identifier) )) (argument_list "()" ( ))) ;) }) (else_clause "else {\n      *(uint *)(puVar14 + -4) = uStack_e4 & 0x1f;\n      *(int *)(puVar14 + -8) = iVar10;\n      *(int **)(puVar14 + -0xc) = piVar9;\n      iVar15 = iStack_e0;\n      *(int *)(puVar14 + -0x10) = iStack_d4;\n      pcVar2 = *(code **)(iVar15 + 0x80);\n      *(undefined4 *)(puVar14 + -0x14) = 0x4e6dc;\n      (*pcVar2)();\n    }" else (compound_statement "{\n      *(uint *)(puVar14 + -4) = uStack_e4 & 0x1f;\n      *(int *)(puVar14 + -8) = iVar10;\n      *(int **)(puVar14 + -0xc) = piVar9;\n      iVar15 = iStack_e0;\n      *(int *)(puVar14 + -0x10) = iStack_d4;\n      pcVar2 = *(code **)(iVar15 + 0x80);\n      *(undefined4 *)(puVar14 + -0x14) = 0x4e6dc;\n      (*pcVar2)();\n    }" { (expression_statement "*(uint *)(puVar14 + -4) = uStack_e4 & 0x1f;" (assignment_expression "*(uint *)(puVar14 + -4) = uStack_e4 & 0x1f" (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) )))) = (binary_expression "uStack_e4 & 0x1f" identifier & number_literal)) ;) (expression_statement "*(int *)(puVar14 + -8) = iVar10;" (assignment_expression "*(int *)(puVar14 + -8) = iVar10" (pointer_expression "*(int *)(puVar14 + -8)" * (cast_expression "(int *)(puVar14 + -8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar14 + -8)" ( (binary_expression "puVar14 + -8" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int **)(puVar14 + -0xc) = piVar9;" (assignment_expression "*(int **)(puVar14 + -0xc) = piVar9" (pointer_expression "*(int **)(puVar14 + -0xc)" * (cast_expression "(int **)(puVar14 + -0xc)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar14 + -0xc)" ( (binary_expression "puVar14 + -0xc" identifier + number_literal) )))) = identifier) ;) (expression_statement "iVar15 = iStack_e0;" (assignment_expression "iVar15 = iStack_e0" identifier = identifier) ;) (expression_statement "*(int *)(puVar14 + -0x10) = iStack_d4;" (assignment_expression "*(int *)(puVar14 + -0x10) = iStack_d4" (pointer_expression "*(int *)(puVar14 + -0x10)" * (cast_expression "(int *)(puVar14 + -0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar14 + -0x10)" ( (binary_expression "puVar14 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "pcVar2 = *(code **)(iVar15 + 0x80);" (assignment_expression "pcVar2 = *(code **)(iVar15 + 0x80)" identifier = (pointer_expression "*(code **)(iVar15 + 0x80)" * (cast_expression "(code **)(iVar15 + 0x80)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar15 + 0x80)" ( (binary_expression "iVar15 + 0x80" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar14 + -0x14) = 0x4e6dc;" (assignment_expression "*(undefined4 *)(puVar14 + -0x14) = 0x4e6dc" (pointer_expression "*(undefined4 *)(puVar14 + -0x14)" * (cast_expression "(undefined4 *)(puVar14 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar14 + -0x14)" ( (binary_expression "puVar14 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "(*pcVar2)();" (call_expression "(*pcVar2)()" (parenthesized_expression "(*pcVar2)" ( (pointer_expression "*pcVar2" * identifier) )) (argument_list "()" ( ))) ;) }))) (expression_statement "iVar4 = iStack_d4;" (assignment_expression "iVar4 = iStack_d4" identifier = identifier) ;) (expression_statement "iVar15 = iStack_dc;" (assignment_expression "iVar15 = iStack_dc" identifier = identifier) ;) (expression_statement "uStack_d8 = iVar10 - (uint)(*(int *)(iStack_d4 + (iVar10 + -1) * 4) == 0);" (assignment_expression "uStack_d8 = iVar10 - (uint)(*(int *)(iStack_d4 + (iVar10 + -1) * 4) == 0)" identifier = (binary_expression "iVar10 - (uint)(*(int *)(iStack_d4 + (iVar10 + -1) * 4) == 0)" identifier - (call_expression "(uint)(*(int *)(iStack_d4 + (iVar10 + -1) * 4) == 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(*(int *)(iStack_d4 + (iVar10 + -1) * 4) == 0)" ( (binary_expression "*(int *)(iStack_d4 + (iVar10 + -1) * 4) == 0" (pointer_expression "*(int *)(iStack_d4 + (iVar10 + -1) * 4)" * (cast_expression "(int *)(iStack_d4 + (iVar10 + -1) * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iStack_d4 + (iVar10 + -1) * 4)" ( (binary_expression "iStack_d4 + (iVar10 + -1) * 4" identifier + (binary_expression "(iVar10 + -1) * 4" (parenthesized_expression "(iVar10 + -1)" ( (binary_expression "iVar10 + -1" identifier + number_literal) )) * number_literal)) )))) == number_literal) ))))) ;) (do_statement "do {\n      *(int *)(puVar14 + -0x10) = iVar15;\n      *(uint *)(puVar14 + -0x14) = uStack_ec;\n      *(int *)(puVar14 + -0x18) = iStack_cc;\n      *(uint **)(puVar14 + -0x1c) = local_c0;\n      *(int *)(puVar14 + -0x20) = iStack_d0;\n      *(undefined4 *)(puVar14 + -0x24) = 0x4e727;\n      iVar10 = __gmpn_pow_1();\n      *(int *)(puVar14 + -0x10) = iStack_cc;\n      *(uint **)(puVar14 + -0x14) = local_c0;\n      *(int *)(puVar14 + -0x18) = iVar10;\n      *(int *)(puVar14 + -0x1c) = iStack_d0;\n      *(int *)(puVar14 + -0x20) = iVar15;\n      iStack_dc = iVar10;\n      *(undefined4 *)(puVar14 + -0x24) = 0x4e74f;\n      __gmpn_mul();\n      iVar10 = iStack_d4;\n      uVar11 = uStack_d8;\n      iVar6 = (iStack_cc + iStack_dc) -\n              (uint)(*(int *)(iVar15 + -4 + (iStack_cc + iStack_dc) * 4) == 0);\n      puVar7 = local_c0;\n      if (iVar6 <= (int)uStack_d8) {\n        uVar5 = uStack_d8;\n        if (uStack_d8 != iVar6) goto LAB_0004eb66;\n        do {\n          uVar5 = uVar5 + -1;\n          if ((int)uVar5 < 0) {\n            iStack_108 = iStack_dc;\n            uStack_114 = 0;\n            iStack_10c = iStack_104;\n            uStack_e8 = puStack_fc[iStack_104] - puStack_fc[iStack_104 + 1];\n            iStack_118 = puStack_fc[iStack_104 + 1] - puStack_fc[iStack_104];\n            uStack_f0 = uStack_e8 >> 5;\n            uStack_f4 = iStack_118 + uStack_e4;\n            uVar11 = uStack_e4 - 1;\n            uStack_e4 = uStack_e8 & 0x1f;\n            puVar12 = (uint *)((uVar11 >> 5) - (uStack_f4 >> 5));\n            uStack_100 = uStack_f0 * 4;\n            uVar11 = 0;\n            iStack_110 = (int)puVar12 + 1;\n            uVar5 = uStack_f4 >> 5;\n            puVar7 = (uint *)(iStack_d4 + uStack_f0 * 4);\n            iStack_dc = iVar15;\n            uStack_d8 = uStack_f0;\n            goto LAB_0004e83d;\n          }\n          uVar13 = *(uint *)(iVar4 + uVar5 * 4);\n          uVar3 = *(uint *)(iVar15 + uVar5 * 4);\n        } while (uVar3 == uVar13);\n        if (uVar3 <= uVar13) goto LAB_0004eb66;\n      }\n      do {\n        uVar11 = *puVar7;\n        *puVar7 = *puVar7 - 1;\n        puVar7 = puVar7 + 1;\n      } while (uVar11 == 0);\n    } while( true );" do (compound_statement "{\n      *(int *)(puVar14 + -0x10) = iVar15;\n      *(uint *)(puVar14 + -0x14) = uStack_ec;\n      *(int *)(puVar14 + -0x18) = iStack_cc;\n      *(uint **)(puVar14 + -0x1c) = local_c0;\n      *(int *)(puVar14 + -0x20) = iStack_d0;\n      *(undefined4 *)(puVar14 + -0x24) = 0x4e727;\n      iVar10 = __gmpn_pow_1();\n      *(int *)(puVar14 + -0x10) = iStack_cc;\n      *(uint **)(puVar14 + -0x14) = local_c0;\n      *(int *)(puVar14 + -0x18) = iVar10;\n      *(int *)(puVar14 + -0x1c) = iStack_d0;\n      *(int *)(puVar14 + -0x20) = iVar15;\n      iStack_dc = iVar10;\n      *(undefined4 *)(puVar14 + -0x24) = 0x4e74f;\n      __gmpn_mul();\n      iVar10 = iStack_d4;\n      uVar11 = uStack_d8;\n      iVar6 = (iStack_cc + iStack_dc) -\n              (uint)(*(int *)(iVar15 + -4 + (iStack_cc + iStack_dc) * 4) == 0);\n      puVar7 = local_c0;\n      if (iVar6 <= (int)uStack_d8) {\n        uVar5 = uStack_d8;\n        if (uStack_d8 != iVar6) goto LAB_0004eb66;\n        do {\n          uVar5 = uVar5 + -1;\n          if ((int)uVar5 < 0) {\n            iStack_108 = iStack_dc;\n            uStack_114 = 0;\n            iStack_10c = iStack_104;\n            uStack_e8 = puStack_fc[iStack_104] - puStack_fc[iStack_104 + 1];\n            iStack_118 = puStack_fc[iStack_104 + 1] - puStack_fc[iStack_104];\n            uStack_f0 = uStack_e8 >> 5;\n            uStack_f4 = iStack_118 + uStack_e4;\n            uVar11 = uStack_e4 - 1;\n            uStack_e4 = uStack_e8 & 0x1f;\n            puVar12 = (uint *)((uVar11 >> 5) - (uStack_f4 >> 5));\n            uStack_100 = uStack_f0 * 4;\n            uVar11 = 0;\n            iStack_110 = (int)puVar12 + 1;\n            uVar5 = uStack_f4 >> 5;\n            puVar7 = (uint *)(iStack_d4 + uStack_f0 * 4);\n            iStack_dc = iVar15;\n            uStack_d8 = uStack_f0;\n            goto LAB_0004e83d;\n          }\n          uVar13 = *(uint *)(iVar4 + uVar5 * 4);\n          uVar3 = *(uint *)(iVar15 + uVar5 * 4);\n        } while (uVar3 == uVar13);\n        if (uVar3 <= uVar13) goto LAB_0004eb66;\n      }\n      do {\n        uVar11 = *puVar7;\n        *puVar7 = *puVar7 - 1;\n        puVar7 = puVar7 + 1;\n      } while (uVar11 == 0);\n    }" { (expression_statement "*(int *)(puVar14 + -0x10) = iVar15;" (assignment_expression "*(int *)(puVar14 + -0x10) = iVar15" (pointer_expression "*(int *)(puVar14 + -0x10)" * (cast_expression "(int *)(puVar14 + -0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar14 + -0x10)" ( (binary_expression "puVar14 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(uint *)(puVar14 + -0x14) = uStack_ec;" (assignment_expression "*(uint *)(puVar14 + -0x14) = uStack_ec" (pointer_expression "*(uint *)(puVar14 + -0x14)" * (cast_expression "(uint *)(puVar14 + -0x14)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar14 + -0x14)" ( (binary_expression "puVar14 + -0x14" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(puVar14 + -0x18) = iStack_cc;" (assignment_expression "*(int *)(puVar14 + -0x18) = iStack_cc" (pointer_expression "*(int *)(puVar14 + -0x18)" * (cast_expression "(int *)(puVar14 + -0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar14 + -0x18)" ( (binary_expression "puVar14 + -0x18" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(uint **)(puVar14 + -0x1c) = local_c0;" (assignment_expression "*(uint **)(puVar14 + -0x1c) = local_c0" (pointer_expression "*(uint **)(puVar14 + -0x1c)" * (cast_expression "(uint **)(puVar14 + -0x1c)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar14 + -0x1c)" ( (binary_expression "puVar14 + -0x1c" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(puVar14 + -0x20) = iStack_d0;" (assignment_expression "*(int *)(puVar14 + -0x20) = iStack_d0" (pointer_expression "*(int *)(puVar14 + -0x20)" * (cast_expression "(int *)(puVar14 + -0x20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar14 + -0x20)" ( (binary_expression "puVar14 + -0x20" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar14 + -0x24) = 0x4e727;" (assignment_expression "*(undefined4 *)(puVar14 + -0x24) = 0x4e727" (pointer_expression "*(undefined4 *)(puVar14 + -0x24)" * (cast_expression "(undefined4 *)(puVar14 + -0x24)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar14 + -0x24)" ( (binary_expression "puVar14 + -0x24" identifier + number_literal) )))) = number_literal) ;) (expression_statement "iVar10 = __gmpn_pow_1();" (assignment_expression "iVar10 = __gmpn_pow_1()" identifier = (call_expression "__gmpn_pow_1()" identifier (argument_list "()" ( )))) ;) (expression_statement "*(int *)(puVar14 + -0x10) = iStack_cc;" (assignment_expression "*(int *)(puVar14 + -0x10) = iStack_cc" (pointer_expression "*(int *)(puVar14 + -0x10)" * (cast_expression "(int *)(puVar14 + -0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar14 + -0x10)" ( (binary_expression "puVar14 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(uint **)(puVar14 + -0x14) = local_c0;" (assignment_expression "*(uint **)(puVar14 + -0x14) = local_c0" (pointer_expression "*(uint **)(puVar14 + -0x14)" * (cast_expression "(uint **)(puVar14 + -0x14)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar14 + -0x14)" ( (binary_expression "puVar14 + -0x14" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(puVar14 + -0x18) = iVar10;" (assignment_expression "*(int *)(puVar14 + -0x18) = iVar10" (pointer_expression "*(int *)(puVar14 + -0x18)" * (cast_expression "(int *)(puVar14 + -0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar14 + -0x18)" ( (binary_expression "puVar14 + -0x18" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(puVar14 + -0x1c) = iStack_d0;" (assignment_expression "*(int *)(puVar14 + -0x1c) = iStack_d0" (pointer_expression "*(int *)(puVar14 + -0x1c)" * (cast_expression "(int *)(puVar14 + -0x1c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar14 + -0x1c)" ( (binary_expression "puVar14 + -0x1c" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(puVar14 + -0x20) = iVar15;" (assignment_expression "*(int *)(puVar14 + -0x20) = iVar15" (pointer_expression "*(int *)(puVar14 + -0x20)" * (cast_expression "(int *)(puVar14 + -0x20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar14 + -0x20)" ( (binary_expression "puVar14 + -0x20" identifier + number_literal) )))) = identifier) ;) (expression_statement "iStack_dc = iVar10;" (assignment_expression "iStack_dc = iVar10" identifier = identifier) ;) (expression_statement "*(undefined4 *)(puVar14 + -0x24) = 0x4e74f;" (assignment_expression "*(undefined4 *)(puVar14 + -0x24) = 0x4e74f" (pointer_expression "*(undefined4 *)(puVar14 + -0x24)" * (cast_expression "(undefined4 *)(puVar14 + -0x24)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar14 + -0x24)" ( (binary_expression "puVar14 + -0x24" identifier + number_literal) )))) = number_literal) ;) (expression_statement "__gmpn_mul();" (call_expression "__gmpn_mul()" identifier (argument_list "()" ( ))) ;) (expression_statement "iVar10 = iStack_d4;" (assignment_expression "iVar10 = iStack_d4" identifier = identifier) ;) (expression_statement "uVar11 = uStack_d8;" (assignment_expression "uVar11 = uStack_d8" identifier = identifier) ;) (expression_statement "iVar6 = (iStack_cc + iStack_dc) -\n              (uint)(*(int *)(iVar15 + -4 + (iStack_cc + iStack_dc) * 4) == 0);" (assignment_expression "iVar6 = (iStack_cc + iStack_dc) -\n              (uint)(*(int *)(iVar15 + -4 + (iStack_cc + iStack_dc) * 4) == 0)" identifier = (binary_expression "(iStack_cc + iStack_dc) -\n              (uint)(*(int *)(iVar15 + -4 + (iStack_cc + iStack_dc) * 4) == 0)" (parenthesized_expression "(iStack_cc + iStack_dc)" ( (binary_expression "iStack_cc + iStack_dc" identifier + identifier) )) - (call_expression "(uint)(*(int *)(iVar15 + -4 + (iStack_cc + iStack_dc) * 4) == 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(*(int *)(iVar15 + -4 + (iStack_cc + iStack_dc) * 4) == 0)" ( (binary_expression "*(int *)(iVar15 + -4 + (iStack_cc + iStack_dc) * 4) == 0" (pointer_expression "*(int *)(iVar15 + -4 + (iStack_cc + iStack_dc) * 4)" * (cast_expression "(int *)(iVar15 + -4 + (iStack_cc + iStack_dc) * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar15 + -4 + (iStack_cc + iStack_dc) * 4)" ( (binary_expression "iVar15 + -4 + (iStack_cc + iStack_dc) * 4" (binary_expression "iVar15 + -4" identifier + number_literal) + (binary_expression "(iStack_cc + iStack_dc) * 4" (parenthesized_expression "(iStack_cc + iStack_dc)" ( (binary_expression "iStack_cc + iStack_dc" identifier + identifier) )) * number_literal)) )))) == number_literal) ))))) ;) (expression_statement "puVar7 = local_c0;" (assignment_expression "puVar7 = local_c0" identifier = identifier) ;) (if_statement "if (iVar6 <= (int)uStack_d8) {\n        uVar5 = uStack_d8;\n        if (uStack_d8 != iVar6) goto LAB_0004eb66;\n        do {\n          uVar5 = uVar5 + -1;\n          if ((int)uVar5 < 0) {\n            iStack_108 = iStack_dc;\n            uStack_114 = 0;\n            iStack_10c = iStack_104;\n            uStack_e8 = puStack_fc[iStack_104] - puStack_fc[iStack_104 + 1];\n            iStack_118 = puStack_fc[iStack_104 + 1] - puStack_fc[iStack_104];\n            uStack_f0 = uStack_e8 >> 5;\n            uStack_f4 = iStack_118 + uStack_e4;\n            uVar11 = uStack_e4 - 1;\n            uStack_e4 = uStack_e8 & 0x1f;\n            puVar12 = (uint *)((uVar11 >> 5) - (uStack_f4 >> 5));\n            uStack_100 = uStack_f0 * 4;\n            uVar11 = 0;\n            iStack_110 = (int)puVar12 + 1;\n            uVar5 = uStack_f4 >> 5;\n            puVar7 = (uint *)(iStack_d4 + uStack_f0 * 4);\n            iStack_dc = iVar15;\n            uStack_d8 = uStack_f0;\n            goto LAB_0004e83d;\n          }\n          uVar13 = *(uint *)(iVar4 + uVar5 * 4);\n          uVar3 = *(uint *)(iVar15 + uVar5 * 4);\n        } while (uVar3 == uVar13);\n        if (uVar3 <= uVar13) goto LAB_0004eb66;\n      }" if (parenthesized_expression "(iVar6 <= (int)uStack_d8)" ( (binary_expression "iVar6 <= (int)uStack_d8" identifier <= (cast_expression "(int)uStack_d8" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n        uVar5 = uStack_d8;\n        if (uStack_d8 != iVar6) goto LAB_0004eb66;\n        do {\n          uVar5 = uVar5 + -1;\n          if ((int)uVar5 < 0) {\n            iStack_108 = iStack_dc;\n            uStack_114 = 0;\n            iStack_10c = iStack_104;\n            uStack_e8 = puStack_fc[iStack_104] - puStack_fc[iStack_104 + 1];\n            iStack_118 = puStack_fc[iStack_104 + 1] - puStack_fc[iStack_104];\n            uStack_f0 = uStack_e8 >> 5;\n            uStack_f4 = iStack_118 + uStack_e4;\n            uVar11 = uStack_e4 - 1;\n            uStack_e4 = uStack_e8 & 0x1f;\n            puVar12 = (uint *)((uVar11 >> 5) - (uStack_f4 >> 5));\n            uStack_100 = uStack_f0 * 4;\n            uVar11 = 0;\n            iStack_110 = (int)puVar12 + 1;\n            uVar5 = uStack_f4 >> 5;\n            puVar7 = (uint *)(iStack_d4 + uStack_f0 * 4);\n            iStack_dc = iVar15;\n            uStack_d8 = uStack_f0;\n            goto LAB_0004e83d;\n          }\n          uVar13 = *(uint *)(iVar4 + uVar5 * 4);\n          uVar3 = *(uint *)(iVar15 + uVar5 * 4);\n        } while (uVar3 == uVar13);\n        if (uVar3 <= uVar13) goto LAB_0004eb66;\n      }" { (expression_statement "uVar5 = uStack_d8;" (assignment_expression "uVar5 = uStack_d8" identifier = identifier) ;) (if_statement "if (uStack_d8 != iVar6) goto LAB_0004eb66;" if (parenthesized_expression "(uStack_d8 != iVar6)" ( (binary_expression "uStack_d8 != iVar6" identifier != identifier) )) (goto_statement "goto LAB_0004eb66;" goto statement_identifier ;)) (do_statement "do {\n          uVar5 = uVar5 + -1;\n          if ((int)uVar5 < 0) {\n            iStack_108 = iStack_dc;\n            uStack_114 = 0;\n            iStack_10c = iStack_104;\n            uStack_e8 = puStack_fc[iStack_104] - puStack_fc[iStack_104 + 1];\n            iStack_118 = puStack_fc[iStack_104 + 1] - puStack_fc[iStack_104];\n            uStack_f0 = uStack_e8 >> 5;\n            uStack_f4 = iStack_118 + uStack_e4;\n            uVar11 = uStack_e4 - 1;\n            uStack_e4 = uStack_e8 & 0x1f;\n            puVar12 = (uint *)((uVar11 >> 5) - (uStack_f4 >> 5));\n            uStack_100 = uStack_f0 * 4;\n            uVar11 = 0;\n            iStack_110 = (int)puVar12 + 1;\n            uVar5 = uStack_f4 >> 5;\n            puVar7 = (uint *)(iStack_d4 + uStack_f0 * 4);\n            iStack_dc = iVar15;\n            uStack_d8 = uStack_f0;\n            goto LAB_0004e83d;\n          }\n          uVar13 = *(uint *)(iVar4 + uVar5 * 4);\n          uVar3 = *(uint *)(iVar15 + uVar5 * 4);\n        } while (uVar3 == uVar13);" do (compound_statement "{\n          uVar5 = uVar5 + -1;\n          if ((int)uVar5 < 0) {\n            iStack_108 = iStack_dc;\n            uStack_114 = 0;\n            iStack_10c = iStack_104;\n            uStack_e8 = puStack_fc[iStack_104] - puStack_fc[iStack_104 + 1];\n            iStack_118 = puStack_fc[iStack_104 + 1] - puStack_fc[iStack_104];\n            uStack_f0 = uStack_e8 >> 5;\n            uStack_f4 = iStack_118 + uStack_e4;\n            uVar11 = uStack_e4 - 1;\n            uStack_e4 = uStack_e8 & 0x1f;\n            puVar12 = (uint *)((uVar11 >> 5) - (uStack_f4 >> 5));\n            uStack_100 = uStack_f0 * 4;\n            uVar11 = 0;\n            iStack_110 = (int)puVar12 + 1;\n            uVar5 = uStack_f4 >> 5;\n            puVar7 = (uint *)(iStack_d4 + uStack_f0 * 4);\n            iStack_dc = iVar15;\n            uStack_d8 = uStack_f0;\n            goto LAB_0004e83d;\n          }\n          uVar13 = *(uint *)(iVar4 + uVar5 * 4);\n          uVar3 = *(uint *)(iVar15 + uVar5 * 4);\n        }" { (expression_statement "uVar5 = uVar5 + -1;" (assignment_expression "uVar5 = uVar5 + -1" identifier = (binary_expression "uVar5 + -1" identifier + number_literal)) ;) (if_statement "if ((int)uVar5 < 0) {\n            iStack_108 = iStack_dc;\n            uStack_114 = 0;\n            iStack_10c = iStack_104;\n            uStack_e8 = puStack_fc[iStack_104] - puStack_fc[iStack_104 + 1];\n            iStack_118 = puStack_fc[iStack_104 + 1] - puStack_fc[iStack_104];\n            uStack_f0 = uStack_e8 >> 5;\n            uStack_f4 = iStack_118 + uStack_e4;\n            uVar11 = uStack_e4 - 1;\n            uStack_e4 = uStack_e8 & 0x1f;\n            puVar12 = (uint *)((uVar11 >> 5) - (uStack_f4 >> 5));\n            uStack_100 = uStack_f0 * 4;\n            uVar11 = 0;\n            iStack_110 = (int)puVar12 + 1;\n            uVar5 = uStack_f4 >> 5;\n            puVar7 = (uint *)(iStack_d4 + uStack_f0 * 4);\n            iStack_dc = iVar15;\n            uStack_d8 = uStack_f0;\n            goto LAB_0004e83d;\n          }" if (parenthesized_expression "((int)uVar5 < 0)" ( (binary_expression "(int)uVar5 < 0" (cast_expression "(int)uVar5" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n            iStack_108 = iStack_dc;\n            uStack_114 = 0;\n            iStack_10c = iStack_104;\n            uStack_e8 = puStack_fc[iStack_104] - puStack_fc[iStack_104 + 1];\n            iStack_118 = puStack_fc[iStack_104 + 1] - puStack_fc[iStack_104];\n            uStack_f0 = uStack_e8 >> 5;\n            uStack_f4 = iStack_118 + uStack_e4;\n            uVar11 = uStack_e4 - 1;\n            uStack_e4 = uStack_e8 & 0x1f;\n            puVar12 = (uint *)((uVar11 >> 5) - (uStack_f4 >> 5));\n            uStack_100 = uStack_f0 * 4;\n            uVar11 = 0;\n            iStack_110 = (int)puVar12 + 1;\n            uVar5 = uStack_f4 >> 5;\n            puVar7 = (uint *)(iStack_d4 + uStack_f0 * 4);\n            iStack_dc = iVar15;\n            uStack_d8 = uStack_f0;\n            goto LAB_0004e83d;\n          }" { (expression_statement "iStack_108 = iStack_dc;" (assignment_expression "iStack_108 = iStack_dc" identifier = identifier) ;) (expression_statement "uStack_114 = 0;" (assignment_expression "uStack_114 = 0" identifier = number_literal) ;) (expression_statement "iStack_10c = iStack_104;" (assignment_expression "iStack_10c = iStack_104" identifier = identifier) ;) (expression_statement "uStack_e8 = puStack_fc[iStack_104] - puStack_fc[iStack_104 + 1];" (assignment_expression "uStack_e8 = puStack_fc[iStack_104] - puStack_fc[iStack_104 + 1]" identifier = (binary_expression "puStack_fc[iStack_104] - puStack_fc[iStack_104 + 1]" (subscript_expression "puStack_fc[iStack_104]" identifier [ identifier ]) - (subscript_expression "puStack_fc[iStack_104 + 1]" identifier [ (binary_expression "iStack_104 + 1" identifier + number_literal) ]))) ;) (expression_statement "iStack_118 = puStack_fc[iStack_104 + 1] - puStack_fc[iStack_104];" (assignment_expression "iStack_118 = puStack_fc[iStack_104 + 1] - puStack_fc[iStack_104]" identifier = (binary_expression "puStack_fc[iStack_104 + 1] - puStack_fc[iStack_104]" (subscript_expression "puStack_fc[iStack_104 + 1]" identifier [ (binary_expression "iStack_104 + 1" identifier + number_literal) ]) - (subscript_expression "puStack_fc[iStack_104]" identifier [ identifier ]))) ;) (expression_statement "uStack_f0 = uStack_e8 >> 5;" (assignment_expression "uStack_f0 = uStack_e8 >> 5" identifier = (binary_expression "uStack_e8 >> 5" identifier >> number_literal)) ;) (expression_statement "uStack_f4 = iStack_118 + uStack_e4;" (assignment_expression "uStack_f4 = iStack_118 + uStack_e4" identifier = (binary_expression "iStack_118 + uStack_e4" identifier + identifier)) ;) (expression_statement "uVar11 = uStack_e4 - 1;" (assignment_expression "uVar11 = uStack_e4 - 1" identifier = (binary_expression "uStack_e4 - 1" identifier - number_literal)) ;) (expression_statement "uStack_e4 = uStack_e8 & 0x1f;" (assignment_expression "uStack_e4 = uStack_e8 & 0x1f" identifier = (binary_expression "uStack_e8 & 0x1f" identifier & number_literal)) ;) (expression_statement "puVar12 = (uint *)((uVar11 >> 5) - (uStack_f4 >> 5));" (assignment_expression "puVar12 = (uint *)((uVar11 >> 5) - (uStack_f4 >> 5))" identifier = (cast_expression "(uint *)((uVar11 >> 5) - (uStack_f4 >> 5))" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((uVar11 >> 5) - (uStack_f4 >> 5))" ( (binary_expression "(uVar11 >> 5) - (uStack_f4 >> 5)" (parenthesized_expression "(uVar11 >> 5)" ( (binary_expression "uVar11 >> 5" identifier >> number_literal) )) - (parenthesized_expression "(uStack_f4 >> 5)" ( (binary_expression "uStack_f4 >> 5" identifier >> number_literal) ))) )))) ;) (expression_statement "uStack_100 = uStack_f0 * 4;" (assignment_expression "uStack_100 = uStack_f0 * 4" identifier = (binary_expression "uStack_f0 * 4" identifier * number_literal)) ;) (expression_statement "uVar11 = 0;" (assignment_expression "uVar11 = 0" identifier = number_literal) ;) (expression_statement "iStack_110 = (int)puVar12 + 1;" (assignment_expression "iStack_110 = (int)puVar12 + 1" identifier = (binary_expression "(int)puVar12 + 1" (cast_expression "(int)puVar12" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal)) ;) (expression_statement "uVar5 = uStack_f4 >> 5;" (assignment_expression "uVar5 = uStack_f4 >> 5" identifier = (binary_expression "uStack_f4 >> 5" identifier >> number_literal)) ;) (expression_statement "puVar7 = (uint *)(iStack_d4 + uStack_f0 * 4);" (assignment_expression "puVar7 = (uint *)(iStack_d4 + uStack_f0 * 4)" identifier = (cast_expression "(uint *)(iStack_d4 + uStack_f0 * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iStack_d4 + uStack_f0 * 4)" ( (binary_expression "iStack_d4 + uStack_f0 * 4" identifier + (binary_expression "uStack_f0 * 4" identifier * number_literal)) )))) ;) (expression_statement "iStack_dc = iVar15;" (assignment_expression "iStack_dc = iVar15" identifier = identifier) ;) (expression_statement "uStack_d8 = uStack_f0;" (assignment_expression "uStack_d8 = uStack_f0" identifier = identifier) ;) (goto_statement "goto LAB_0004e83d;" goto statement_identifier ;) })) (expression_statement "uVar13 = *(uint *)(iVar4 + uVar5 * 4);" (assignment_expression "uVar13 = *(uint *)(iVar4 + uVar5 * 4)" identifier = (pointer_expression "*(uint *)(iVar4 + uVar5 * 4)" * (cast_expression "(uint *)(iVar4 + uVar5 * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + uVar5 * 4)" ( (binary_expression "iVar4 + uVar5 * 4" identifier + (binary_expression "uVar5 * 4" identifier * number_literal)) ))))) ;) (expression_statement "uVar3 = *(uint *)(iVar15 + uVar5 * 4);" (assignment_expression "uVar3 = *(uint *)(iVar15 + uVar5 * 4)" identifier = (pointer_expression "*(uint *)(iVar15 + uVar5 * 4)" * (cast_expression "(uint *)(iVar15 + uVar5 * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar15 + uVar5 * 4)" ( (binary_expression "iVar15 + uVar5 * 4" identifier + (binary_expression "uVar5 * 4" identifier * number_literal)) ))))) ;) }) while (parenthesized_expression "(uVar3 == uVar13)" ( (binary_expression "uVar3 == uVar13" identifier == identifier) )) ;) (if_statement "if (uVar3 <= uVar13) goto LAB_0004eb66;" if (parenthesized_expression "(uVar3 <= uVar13)" ( (binary_expression "uVar3 <= uVar13" identifier <= identifier) )) (goto_statement "goto LAB_0004eb66;" goto statement_identifier ;)) })) (do_statement "do {\n        uVar11 = *puVar7;\n        *puVar7 = *puVar7 - 1;\n        puVar7 = puVar7 + 1;\n      } while (uVar11 == 0);" do (compound_statement "{\n        uVar11 = *puVar7;\n        *puVar7 = *puVar7 - 1;\n        puVar7 = puVar7 + 1;\n      }" { (expression_statement "uVar11 = *puVar7;" (assignment_expression "uVar11 = *puVar7" identifier = (pointer_expression "*puVar7" * identifier)) ;) (expression_statement "*puVar7 = *puVar7 - 1;" (assignment_expression "*puVar7 = *puVar7 - 1" (pointer_expression "*puVar7" * identifier) = (binary_expression "*puVar7 - 1" (pointer_expression "*puVar7" * identifier) - number_literal)) ;) (expression_statement "puVar7 = puVar7 + 1;" (assignment_expression "puVar7 = puVar7 + 1" identifier = (binary_expression "puVar7 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar11 == 0)" ( (binary_expression "uVar11 == 0" identifier == number_literal) )) ;) }) while (parenthesized_expression "( true )" ( true )) ;) })) (expression_statement "iStack_cc = 1;" (assignment_expression "iStack_cc = 1" identifier = number_literal) ;) (labeled_statement "LAB_0004e9ce:\n  piVar9 = local_f8;" statement_identifier : (expression_statement "piVar9 = local_f8;" (assignment_expression "piVar9 = local_f8" identifier = identifier) ;)) (expression_statement "local_c0 = (uint *)uVar16;" (assignment_expression "local_c0 = (uint *)uVar16" identifier = (cast_expression "(uint *)uVar16" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (if_statement "if ((param_3 == 0) || (*local_c0 < 2)) {\n    do {\n      local_124 = (int *)((ulonglong)uVar16 >> 0x20);\n      local_c0 = (uint *)uVar16;\n      *(int *)(puVar14 + -0x10) = iStack_d0;\n      *(uint *)(puVar14 + -0x14) = param_2;\n      *(int *)(puVar14 + -0x18) = iStack_cc;\n      *(uint **)(puVar14 + -0x1c) = local_c0;\n      *(int *)(puVar14 + -0x20) = iVar10;\n      *(undefined4 *)(puVar14 + -0x24) = 0x4ea47;\n      uVar11 = __gmpn_pow_1();\n      uVar16 = CONCAT44(local_124,local_c0);\n      if ((int)uVar11 <= (int)param_1) {\n        uVar5 = param_1;\n        if (param_1 != uVar11) goto LAB_0004efbf;\n        do {\n          uVar5 = uVar5 - 1;\n          if ((int)uVar5 < 0) {\n            uStack_d8 = 0;\n            uVar16 = CONCAT44(local_124,local_c0);\n            goto LAB_0004e9e0;\n          }\n          uVar13 = *(uint *)(iVar10 + uVar5 * 4);\n        } while (uVar13 == piVar9[uVar5]);\n        if (uVar13 <= (uint)piVar9[uVar5]) goto LAB_0004efbf;\n      }\n      do {\n        iVar15 = *local_c0;\n        *local_c0 = *local_c0 + -1;\n        local_c0 = (uint *)((int *)local_c0 + 1);\n      } while (iVar15 == 0);\n    } while( true );\n  }" if (parenthesized_expression "((param_3 == 0) || (*local_c0 < 2))" ( (binary_expression "(param_3 == 0) || (*local_c0 < 2)" (parenthesized_expression "(param_3 == 0)" ( (binary_expression "param_3 == 0" identifier == number_literal) )) || (parenthesized_expression "(*local_c0 < 2)" ( (binary_expression "*local_c0 < 2" (pointer_expression "*local_c0" * identifier) < number_literal) ))) )) (compound_statement "{\n    do {\n      local_124 = (int *)((ulonglong)uVar16 >> 0x20);\n      local_c0 = (uint *)uVar16;\n      *(int *)(puVar14 + -0x10) = iStack_d0;\n      *(uint *)(puVar14 + -0x14) = param_2;\n      *(int *)(puVar14 + -0x18) = iStack_cc;\n      *(uint **)(puVar14 + -0x1c) = local_c0;\n      *(int *)(puVar14 + -0x20) = iVar10;\n      *(undefined4 *)(puVar14 + -0x24) = 0x4ea47;\n      uVar11 = __gmpn_pow_1();\n      uVar16 = CONCAT44(local_124,local_c0);\n      if ((int)uVar11 <= (int)param_1) {\n        uVar5 = param_1;\n        if (param_1 != uVar11) goto LAB_0004efbf;\n        do {\n          uVar5 = uVar5 - 1;\n          if ((int)uVar5 < 0) {\n            uStack_d8 = 0;\n            uVar16 = CONCAT44(local_124,local_c0);\n            goto LAB_0004e9e0;\n          }\n          uVar13 = *(uint *)(iVar10 + uVar5 * 4);\n        } while (uVar13 == piVar9[uVar5]);\n        if (uVar13 <= (uint)piVar9[uVar5]) goto LAB_0004efbf;\n      }\n      do {\n        iVar15 = *local_c0;\n        *local_c0 = *local_c0 + -1;\n        local_c0 = (uint *)((int *)local_c0 + 1);\n      } while (iVar15 == 0);\n    } while( true );\n  }" { (do_statement "do {\n      local_124 = (int *)((ulonglong)uVar16 >> 0x20);\n      local_c0 = (uint *)uVar16;\n      *(int *)(puVar14 + -0x10) = iStack_d0;\n      *(uint *)(puVar14 + -0x14) = param_2;\n      *(int *)(puVar14 + -0x18) = iStack_cc;\n      *(uint **)(puVar14 + -0x1c) = local_c0;\n      *(int *)(puVar14 + -0x20) = iVar10;\n      *(undefined4 *)(puVar14 + -0x24) = 0x4ea47;\n      uVar11 = __gmpn_pow_1();\n      uVar16 = CONCAT44(local_124,local_c0);\n      if ((int)uVar11 <= (int)param_1) {\n        uVar5 = param_1;\n        if (param_1 != uVar11) goto LAB_0004efbf;\n        do {\n          uVar5 = uVar5 - 1;\n          if ((int)uVar5 < 0) {\n            uStack_d8 = 0;\n            uVar16 = CONCAT44(local_124,local_c0);\n            goto LAB_0004e9e0;\n          }\n          uVar13 = *(uint *)(iVar10 + uVar5 * 4);\n        } while (uVar13 == piVar9[uVar5]);\n        if (uVar13 <= (uint)piVar9[uVar5]) goto LAB_0004efbf;\n      }\n      do {\n        iVar15 = *local_c0;\n        *local_c0 = *local_c0 + -1;\n        local_c0 = (uint *)((int *)local_c0 + 1);\n      } while (iVar15 == 0);\n    } while( true );" do (compound_statement "{\n      local_124 = (int *)((ulonglong)uVar16 >> 0x20);\n      local_c0 = (uint *)uVar16;\n      *(int *)(puVar14 + -0x10) = iStack_d0;\n      *(uint *)(puVar14 + -0x14) = param_2;\n      *(int *)(puVar14 + -0x18) = iStack_cc;\n      *(uint **)(puVar14 + -0x1c) = local_c0;\n      *(int *)(puVar14 + -0x20) = iVar10;\n      *(undefined4 *)(puVar14 + -0x24) = 0x4ea47;\n      uVar11 = __gmpn_pow_1();\n      uVar16 = CONCAT44(local_124,local_c0);\n      if ((int)uVar11 <= (int)param_1) {\n        uVar5 = param_1;\n        if (param_1 != uVar11) goto LAB_0004efbf;\n        do {\n          uVar5 = uVar5 - 1;\n          if ((int)uVar5 < 0) {\n            uStack_d8 = 0;\n            uVar16 = CONCAT44(local_124,local_c0);\n            goto LAB_0004e9e0;\n          }\n          uVar13 = *(uint *)(iVar10 + uVar5 * 4);\n        } while (uVar13 == piVar9[uVar5]);\n        if (uVar13 <= (uint)piVar9[uVar5]) goto LAB_0004efbf;\n      }\n      do {\n        iVar15 = *local_c0;\n        *local_c0 = *local_c0 + -1;\n        local_c0 = (uint *)((int *)local_c0 + 1);\n      } while (iVar15 == 0);\n    }" { (expression_statement "local_124 = (int *)((ulonglong)uVar16 >> 0x20);" (assignment_expression "local_124 = (int *)((ulonglong)uVar16 >> 0x20)" identifier = (cast_expression "(int *)((ulonglong)uVar16 >> 0x20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((ulonglong)uVar16 >> 0x20)" ( (binary_expression "(ulonglong)uVar16 >> 0x20" (cast_expression "(ulonglong)uVar16" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "local_c0 = (uint *)uVar16;" (assignment_expression "local_c0 = (uint *)uVar16" identifier = (cast_expression "(uint *)uVar16" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "*(int *)(puVar14 + -0x10) = iStack_d0;" (assignment_expression "*(int *)(puVar14 + -0x10) = iStack_d0" (pointer_expression "*(int *)(puVar14 + -0x10)" * (cast_expression "(int *)(puVar14 + -0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar14 + -0x10)" ( (binary_expression "puVar14 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(uint *)(puVar14 + -0x14) = param_2;" (assignment_expression "*(uint *)(puVar14 + -0x14) = param_2" (pointer_expression "*(uint *)(puVar14 + -0x14)" * (cast_expression "(uint *)(puVar14 + -0x14)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar14 + -0x14)" ( (binary_expression "puVar14 + -0x14" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(puVar14 + -0x18) = iStack_cc;" (assignment_expression "*(int *)(puVar14 + -0x18) = iStack_cc" (pointer_expression "*(int *)(puVar14 + -0x18)" * (cast_expression "(int *)(puVar14 + -0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar14 + -0x18)" ( (binary_expression "puVar14 + -0x18" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(uint **)(puVar14 + -0x1c) = local_c0;" (assignment_expression "*(uint **)(puVar14 + -0x1c) = local_c0" (pointer_expression "*(uint **)(puVar14 + -0x1c)" * (cast_expression "(uint **)(puVar14 + -0x1c)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar14 + -0x1c)" ( (binary_expression "puVar14 + -0x1c" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(puVar14 + -0x20) = iVar10;" (assignment_expression "*(int *)(puVar14 + -0x20) = iVar10" (pointer_expression "*(int *)(puVar14 + -0x20)" * (cast_expression "(int *)(puVar14 + -0x20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar14 + -0x20)" ( (binary_expression "puVar14 + -0x20" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar14 + -0x24) = 0x4ea47;" (assignment_expression "*(undefined4 *)(puVar14 + -0x24) = 0x4ea47" (pointer_expression "*(undefined4 *)(puVar14 + -0x24)" * (cast_expression "(undefined4 *)(puVar14 + -0x24)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar14 + -0x24)" ( (binary_expression "puVar14 + -0x24" identifier + number_literal) )))) = number_literal) ;) (expression_statement "uVar11 = __gmpn_pow_1();" (assignment_expression "uVar11 = __gmpn_pow_1()" identifier = (call_expression "__gmpn_pow_1()" identifier (argument_list "()" ( )))) ;) (expression_statement "uVar16 = CONCAT44(local_124,local_c0);" (assignment_expression "uVar16 = CONCAT44(local_124,local_c0)" identifier = (call_expression "CONCAT44(local_124,local_c0)" identifier (argument_list "(local_124,local_c0)" ( identifier , identifier )))) ;) (if_statement "if ((int)uVar11 <= (int)param_1) {\n        uVar5 = param_1;\n        if (param_1 != uVar11) goto LAB_0004efbf;\n        do {\n          uVar5 = uVar5 - 1;\n          if ((int)uVar5 < 0) {\n            uStack_d8 = 0;\n            uVar16 = CONCAT44(local_124,local_c0);\n            goto LAB_0004e9e0;\n          }\n          uVar13 = *(uint *)(iVar10 + uVar5 * 4);\n        } while (uVar13 == piVar9[uVar5]);\n        if (uVar13 <= (uint)piVar9[uVar5]) goto LAB_0004efbf;\n      }" if (parenthesized_expression "((int)uVar11 <= (int)param_1)" ( (binary_expression "(int)uVar11 <= (int)param_1" (cast_expression "(int)uVar11" ( (type_descriptor "int" primitive_type) ) identifier) <= (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n        uVar5 = param_1;\n        if (param_1 != uVar11) goto LAB_0004efbf;\n        do {\n          uVar5 = uVar5 - 1;\n          if ((int)uVar5 < 0) {\n            uStack_d8 = 0;\n            uVar16 = CONCAT44(local_124,local_c0);\n            goto LAB_0004e9e0;\n          }\n          uVar13 = *(uint *)(iVar10 + uVar5 * 4);\n        } while (uVar13 == piVar9[uVar5]);\n        if (uVar13 <= (uint)piVar9[uVar5]) goto LAB_0004efbf;\n      }" { (expression_statement "uVar5 = param_1;" (assignment_expression "uVar5 = param_1" identifier = identifier) ;) (if_statement "if (param_1 != uVar11) goto LAB_0004efbf;" if (parenthesized_expression "(param_1 != uVar11)" ( (binary_expression "param_1 != uVar11" identifier != identifier) )) (goto_statement "goto LAB_0004efbf;" goto statement_identifier ;)) (do_statement "do {\n          uVar5 = uVar5 - 1;\n          if ((int)uVar5 < 0) {\n            uStack_d8 = 0;\n            uVar16 = CONCAT44(local_124,local_c0);\n            goto LAB_0004e9e0;\n          }\n          uVar13 = *(uint *)(iVar10 + uVar5 * 4);\n        } while (uVar13 == piVar9[uVar5]);" do (compound_statement "{\n          uVar5 = uVar5 - 1;\n          if ((int)uVar5 < 0) {\n            uStack_d8 = 0;\n            uVar16 = CONCAT44(local_124,local_c0);\n            goto LAB_0004e9e0;\n          }\n          uVar13 = *(uint *)(iVar10 + uVar5 * 4);\n        }" { (expression_statement "uVar5 = uVar5 - 1;" (assignment_expression "uVar5 = uVar5 - 1" identifier = (binary_expression "uVar5 - 1" identifier - number_literal)) ;) (if_statement "if ((int)uVar5 < 0) {\n            uStack_d8 = 0;\n            uVar16 = CONCAT44(local_124,local_c0);\n            goto LAB_0004e9e0;\n          }" if (parenthesized_expression "((int)uVar5 < 0)" ( (binary_expression "(int)uVar5 < 0" (cast_expression "(int)uVar5" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n            uStack_d8 = 0;\n            uVar16 = CONCAT44(local_124,local_c0);\n            goto LAB_0004e9e0;\n          }" { (expression_statement "uStack_d8 = 0;" (assignment_expression "uStack_d8 = 0" identifier = number_literal) ;) (expression_statement "uVar16 = CONCAT44(local_124,local_c0);" (assignment_expression "uVar16 = CONCAT44(local_124,local_c0)" identifier = (call_expression "CONCAT44(local_124,local_c0)" identifier (argument_list "(local_124,local_c0)" ( identifier , identifier )))) ;) (goto_statement "goto LAB_0004e9e0;" goto statement_identifier ;) })) (expression_statement "uVar13 = *(uint *)(iVar10 + uVar5 * 4);" (assignment_expression "uVar13 = *(uint *)(iVar10 + uVar5 * 4)" identifier = (pointer_expression "*(uint *)(iVar10 + uVar5 * 4)" * (cast_expression "(uint *)(iVar10 + uVar5 * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar10 + uVar5 * 4)" ( (binary_expression "iVar10 + uVar5 * 4" identifier + (binary_expression "uVar5 * 4" identifier * number_literal)) ))))) ;) }) while (parenthesized_expression "(uVar13 == piVar9[uVar5])" ( (binary_expression "uVar13 == piVar9[uVar5]" identifier == (subscript_expression "piVar9[uVar5]" identifier [ identifier ])) )) ;) (if_statement "if (uVar13 <= (uint)piVar9[uVar5]) goto LAB_0004efbf;" if (parenthesized_expression "(uVar13 <= (uint)piVar9[uVar5])" ( (binary_expression "uVar13 <= (uint)piVar9[uVar5]" identifier <= (cast_expression "(uint)piVar9[uVar5]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "piVar9[uVar5]" identifier [ identifier ]))) )) (goto_statement "goto LAB_0004efbf;" goto statement_identifier ;)) })) (do_statement "do {\n        iVar15 = *local_c0;\n        *local_c0 = *local_c0 + -1;\n        local_c0 = (uint *)((int *)local_c0 + 1);\n      } while (iVar15 == 0);" do (compound_statement "{\n        iVar15 = *local_c0;\n        *local_c0 = *local_c0 + -1;\n        local_c0 = (uint *)((int *)local_c0 + 1);\n      }" { (expression_statement "iVar15 = *local_c0;" (assignment_expression "iVar15 = *local_c0" identifier = (pointer_expression "*local_c0" * identifier)) ;) (expression_statement "*local_c0 = *local_c0 + -1;" (assignment_expression "*local_c0 = *local_c0 + -1" (pointer_expression "*local_c0" * identifier) = (binary_expression "*local_c0 + -1" (pointer_expression "*local_c0" * identifier) + number_literal)) ;) (expression_statement "local_c0 = (uint *)((int *)local_c0 + 1);" (assignment_expression "local_c0 = (uint *)((int *)local_c0 + 1)" identifier = (cast_expression "(uint *)((int *)local_c0 + 1)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int *)local_c0 + 1)" ( (binary_expression "(int *)local_c0 + 1" (cast_expression "(int *)local_c0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) + number_literal) )))) ;) }) while (parenthesized_expression "(iVar15 == 0)" ( (binary_expression "iVar15 == 0" identifier == number_literal) )) ;) }) while (parenthesized_expression "( true )" ( true )) ;) })) (labeled_statement "LAB_0004e9e0:\n  local_124 = (int *)((ulonglong)uVar16 >> 0x20);" statement_identifier : (expression_statement "local_124 = (int *)((ulonglong)uVar16 >> 0x20);" (assignment_expression "local_124 = (int *)((ulonglong)uVar16 >> 0x20)" identifier = (cast_expression "(int *)((ulonglong)uVar16 >> 0x20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((ulonglong)uVar16 >> 0x20)" ( (binary_expression "(ulonglong)uVar16 >> 0x20" (cast_expression "(ulonglong)uVar16" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;)) (expression_statement "local_c0 = (uint *)uVar16;" (assignment_expression "local_c0 = (uint *)uVar16" identifier = (cast_expression "(uint *)uVar16" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (if_statement "if (iStack_a8 != 0) {\n    *(int *)(puVar14 + -0x10) = iStack_a8;\n    *(undefined4 *)(puVar14 + -0x14) = 0x4f1a9;\n    __gmp_tmp_reentrant_free();\n    uVar16 = CONCAT44(local_124,local_c0);\n  }" if (parenthesized_expression "(iStack_a8 != 0)" ( (binary_expression "iStack_a8 != 0" identifier != number_literal) )) (compound_statement "{\n    *(int *)(puVar14 + -0x10) = iStack_a8;\n    *(undefined4 *)(puVar14 + -0x14) = 0x4f1a9;\n    __gmp_tmp_reentrant_free();\n    uVar16 = CONCAT44(local_124,local_c0);\n  }" { (expression_statement "*(int *)(puVar14 + -0x10) = iStack_a8;" (assignment_expression "*(int *)(puVar14 + -0x10) = iStack_a8" (pointer_expression "*(int *)(puVar14 + -0x10)" * (cast_expression "(int *)(puVar14 + -0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar14 + -0x10)" ( (binary_expression "puVar14 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar14 + -0x14) = 0x4f1a9;" (assignment_expression "*(undefined4 *)(puVar14 + -0x14) = 0x4f1a9" (pointer_expression "*(undefined4 *)(puVar14 + -0x14)" * (cast_expression "(undefined4 *)(puVar14 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar14 + -0x14)" ( (binary_expression "puVar14 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "__gmp_tmp_reentrant_free();" (call_expression "__gmp_tmp_reentrant_free()" identifier (argument_list "()" ( ))) ;) (expression_statement "uVar16 = CONCAT44(local_124,local_c0);" (assignment_expression "uVar16 = CONCAT44(local_124,local_c0)" identifier = (call_expression "CONCAT44(local_124,local_c0)" identifier (argument_list "(local_124,local_c0)" ( identifier , identifier )))) ;) })) (labeled_statement "LAB_0004e9ee:\n  local_124 = (int *)((ulonglong)uVar16 >> 0x20);" statement_identifier : (expression_statement "local_124 = (int *)((ulonglong)uVar16 >> 0x20);" (assignment_expression "local_124 = (int *)((ulonglong)uVar16 >> 0x20)" identifier = (cast_expression "(int *)((ulonglong)uVar16 >> 0x20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((ulonglong)uVar16 >> 0x20)" ( (binary_expression "(ulonglong)uVar16 >> 0x20" (cast_expression "(ulonglong)uVar16" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;)) (expression_statement "local_c0 = (uint *)uVar16;" (assignment_expression "local_c0 = (uint *)uVar16" identifier = (cast_expression "(uint *)uVar16" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (if_statement "if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return uStack_d8;\n  }" if (parenthesized_expression "(local_20 == *(int *)(in_GS_OFFSET + 0x14))" ( (binary_expression "local_20 == *(int *)(in_GS_OFFSET + 0x14)" identifier == (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) )) (compound_statement "{\n    return uStack_d8;\n  }" { (return_statement "return uStack_d8;" return identifier ;) })) (expression_statement "*(undefined **)(puVar14 + -4) = &UNK_0004f214;" (assignment_expression "*(undefined **)(puVar14 + -4) = &UNK_0004f214" (pointer_expression "*(undefined **)(puVar14 + -4)" * (cast_expression "(undefined **)(puVar14 + -4)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar14 + -4)" ( (binary_expression "puVar14 + -4" identifier + number_literal) )))) = (pointer_expression "&UNK_0004f214" & identifier)) ;) (expression_statement "FUN_0007ebe0();" (call_expression "FUN_0007ebe0()" identifier (argument_list "()" ( ))) ;) (labeled_statement "LAB_0004eb66:\n  iStack_108 = iStack_dc;" statement_identifier : (expression_statement "iStack_108 = iStack_dc;" (assignment_expression "iStack_108 = iStack_dc" identifier = identifier) ;)) (expression_statement "iStack_10c = iStack_104;" (assignment_expression "iStack_10c = iStack_104" identifier = identifier) ;) (expression_statement "uStack_e8 = puStack_fc[iStack_104] - puStack_fc[iStack_104 + 1];" (assignment_expression "uStack_e8 = puStack_fc[iStack_104] - puStack_fc[iStack_104 + 1]" identifier = (binary_expression "puStack_fc[iStack_104] - puStack_fc[iStack_104 + 1]" (subscript_expression "puStack_fc[iStack_104]" identifier [ identifier ]) - (subscript_expression "puStack_fc[iStack_104 + 1]" identifier [ (binary_expression "iStack_104 + 1" identifier + number_literal) ]))) ;) (expression_statement "iStack_118 = puStack_fc[iStack_104 + 1] - puStack_fc[iStack_104];" (assignment_expression "iStack_118 = puStack_fc[iStack_104 + 1] - puStack_fc[iStack_104]" identifier = (binary_expression "puStack_fc[iStack_104 + 1] - puStack_fc[iStack_104]" (subscript_expression "puStack_fc[iStack_104 + 1]" identifier [ (binary_expression "iStack_104 + 1" identifier + number_literal) ]) - (subscript_expression "puStack_fc[iStack_104]" identifier [ identifier ]))) ;) (expression_statement "uStack_f0 = uStack_e8 >> 5;" (assignment_expression "uStack_f0 = uStack_e8 >> 5" identifier = (binary_expression "uStack_e8 >> 5" identifier >> number_literal)) ;) (expression_statement "uStack_f4 = iStack_118 + uStack_e4;" (assignment_expression "uStack_f4 = iStack_118 + uStack_e4" identifier = (binary_expression "iStack_118 + uStack_e4" identifier + identifier)) ;) (expression_statement "uVar5 = uStack_f4 >> 5;" (assignment_expression "uVar5 = uStack_f4 >> 5" identifier = (binary_expression "uStack_f4 >> 5" identifier >> number_literal)) ;) (expression_statement "puStack_11c = (uint *)((uStack_e4 - 1 >> 5) - uVar5);" (assignment_expression "puStack_11c = (uint *)((uStack_e4 - 1 >> 5) - uVar5)" identifier = (cast_expression "(uint *)((uStack_e4 - 1 >> 5) - uVar5)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((uStack_e4 - 1 >> 5) - uVar5)" ( (binary_expression "(uStack_e4 - 1 >> 5) - uVar5" (parenthesized_expression "(uStack_e4 - 1 >> 5)" ( (binary_expression "uStack_e4 - 1 >> 5" (binary_expression "uStack_e4 - 1" identifier - number_literal) >> number_literal) )) - identifier) )))) ;) (expression_statement "iStack_110 = (int)puStack_11c + 1;" (assignment_expression "iStack_110 = (int)puStack_11c + 1" identifier = (binary_expression "(int)puStack_11c + 1" (cast_expression "(int)puStack_11c" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal)) ;) (expression_statement "uStack_e4 = uVar5;" (assignment_expression "uStack_e4 = uVar5" identifier = identifier) ;) (expression_statement "iStack_dc = iVar15;" (assignment_expression "iStack_dc = iVar15" identifier = identifier) ;) (if_statement "if (iVar6 != 0) {\n    *(int *)(puVar14 + -4) = iVar6;\n    *(int *)(puVar14 + -8) = iStack_dc;\n    *(int *)(puVar14 + -0xc) = iVar10;\n    *(int *)(puVar14 + -0x10) = iVar10;\n    uStack_d8 = iVar6;\n    *(undefined4 *)(puVar14 + -0x14) = 0x4ee32;\n    iVar10 = __gmpn_sub_n();\n    if ((iVar10 != 0) && (uVar11 != uStack_d8)) {\n      piVar9 = (int *)(iStack_d4 + uStack_d8 * 4);\n      iVar10 = *piVar9;\n      *piVar9 = iVar10 + -1;\n      if ((iVar10 == 0) && ((int)(uStack_d8 + 1) < (int)uVar11)) {\n        piVar9 = (int *)(iStack_d4 + (uStack_d8 + 1) * 4);\n        iVar15 = uStack_d8 + 2;\n        iVar10 = *piVar9;\n        *piVar9 = iVar10 + -1;\n        for (; (iVar10 == 0 && (uVar11 != iVar15)); iVar15 = iVar15 + 1) {\n          iVar10 = *(int *)(iStack_d4 + iVar15 * 4);\n          *(int *)(iStack_d4 + iVar15 * 4) = iVar10 + -1;\n        }\n      }\n    }\n  }" if (parenthesized_expression "(iVar6 != 0)" ( (binary_expression "iVar6 != 0" identifier != number_literal) )) (compound_statement "{\n    *(int *)(puVar14 + -4) = iVar6;\n    *(int *)(puVar14 + -8) = iStack_dc;\n    *(int *)(puVar14 + -0xc) = iVar10;\n    *(int *)(puVar14 + -0x10) = iVar10;\n    uStack_d8 = iVar6;\n    *(undefined4 *)(puVar14 + -0x14) = 0x4ee32;\n    iVar10 = __gmpn_sub_n();\n    if ((iVar10 != 0) && (uVar11 != uStack_d8)) {\n      piVar9 = (int *)(iStack_d4 + uStack_d8 * 4);\n      iVar10 = *piVar9;\n      *piVar9 = iVar10 + -1;\n      if ((iVar10 == 0) && ((int)(uStack_d8 + 1) < (int)uVar11)) {\n        piVar9 = (int *)(iStack_d4 + (uStack_d8 + 1) * 4);\n        iVar15 = uStack_d8 + 2;\n        iVar10 = *piVar9;\n        *piVar9 = iVar10 + -1;\n        for (; (iVar10 == 0 && (uVar11 != iVar15)); iVar15 = iVar15 + 1) {\n          iVar10 = *(int *)(iStack_d4 + iVar15 * 4);\n          *(int *)(iStack_d4 + iVar15 * 4) = iVar10 + -1;\n        }\n      }\n    }\n  }" { (expression_statement "*(int *)(puVar14 + -4) = iVar6;" (assignment_expression "*(int *)(puVar14 + -4) = iVar6" (pointer_expression "*(int *)(puVar14 + -4)" * (cast_expression "(int *)(puVar14 + -4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar14 + -4)" ( (binary_expression "puVar14 + -4" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(puVar14 + -8) = iStack_dc;" (assignment_expression "*(int *)(puVar14 + -8) = iStack_dc" (pointer_expression "*(int *)(puVar14 + -8)" * (cast_expression "(int *)(puVar14 + -8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar14 + -8)" ( (binary_expression "puVar14 + -8" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(puVar14 + -0xc) = iVar10;" (assignment_expression "*(int *)(puVar14 + -0xc) = iVar10" (pointer_expression "*(int *)(puVar14 + -0xc)" * (cast_expression "(int *)(puVar14 + -0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar14 + -0xc)" ( (binary_expression "puVar14 + -0xc" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(puVar14 + -0x10) = iVar10;" (assignment_expression "*(int *)(puVar14 + -0x10) = iVar10" (pointer_expression "*(int *)(puVar14 + -0x10)" * (cast_expression "(int *)(puVar14 + -0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar14 + -0x10)" ( (binary_expression "puVar14 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "uStack_d8 = iVar6;" (assignment_expression "uStack_d8 = iVar6" identifier = identifier) ;) (expression_statement "*(undefined4 *)(puVar14 + -0x14) = 0x4ee32;" (assignment_expression "*(undefined4 *)(puVar14 + -0x14) = 0x4ee32" (pointer_expression "*(undefined4 *)(puVar14 + -0x14)" * (cast_expression "(undefined4 *)(puVar14 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar14 + -0x14)" ( (binary_expression "puVar14 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "iVar10 = __gmpn_sub_n();" (assignment_expression "iVar10 = __gmpn_sub_n()" identifier = (call_expression "__gmpn_sub_n()" identifier (argument_list "()" ( )))) ;) (if_statement "if ((iVar10 != 0) && (uVar11 != uStack_d8)) {\n      piVar9 = (int *)(iStack_d4 + uStack_d8 * 4);\n      iVar10 = *piVar9;\n      *piVar9 = iVar10 + -1;\n      if ((iVar10 == 0) && ((int)(uStack_d8 + 1) < (int)uVar11)) {\n        piVar9 = (int *)(iStack_d4 + (uStack_d8 + 1) * 4);\n        iVar15 = uStack_d8 + 2;\n        iVar10 = *piVar9;\n        *piVar9 = iVar10 + -1;\n        for (; (iVar10 == 0 && (uVar11 != iVar15)); iVar15 = iVar15 + 1) {\n          iVar10 = *(int *)(iStack_d4 + iVar15 * 4);\n          *(int *)(iStack_d4 + iVar15 * 4) = iVar10 + -1;\n        }\n      }\n    }" if (parenthesized_expression "((iVar10 != 0) && (uVar11 != uStack_d8))" ( (binary_expression "(iVar10 != 0) && (uVar11 != uStack_d8)" (parenthesized_expression "(iVar10 != 0)" ( (binary_expression "iVar10 != 0" identifier != number_literal) )) && (parenthesized_expression "(uVar11 != uStack_d8)" ( (binary_expression "uVar11 != uStack_d8" identifier != identifier) ))) )) (compound_statement "{\n      piVar9 = (int *)(iStack_d4 + uStack_d8 * 4);\n      iVar10 = *piVar9;\n      *piVar9 = iVar10 + -1;\n      if ((iVar10 == 0) && ((int)(uStack_d8 + 1) < (int)uVar11)) {\n        piVar9 = (int *)(iStack_d4 + (uStack_d8 + 1) * 4);\n        iVar15 = uStack_d8 + 2;\n        iVar10 = *piVar9;\n        *piVar9 = iVar10 + -1;\n        for (; (iVar10 == 0 && (uVar11 != iVar15)); iVar15 = iVar15 + 1) {\n          iVar10 = *(int *)(iStack_d4 + iVar15 * 4);\n          *(int *)(iStack_d4 + iVar15 * 4) = iVar10 + -1;\n        }\n      }\n    }" { (expression_statement "piVar9 = (int *)(iStack_d4 + uStack_d8 * 4);" (assignment_expression "piVar9 = (int *)(iStack_d4 + uStack_d8 * 4)" identifier = (cast_expression "(int *)(iStack_d4 + uStack_d8 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iStack_d4 + uStack_d8 * 4)" ( (binary_expression "iStack_d4 + uStack_d8 * 4" identifier + (binary_expression "uStack_d8 * 4" identifier * number_literal)) )))) ;) (expression_statement "iVar10 = *piVar9;" (assignment_expression "iVar10 = *piVar9" identifier = (pointer_expression "*piVar9" * identifier)) ;) (expression_statement "*piVar9 = iVar10 + -1;" (assignment_expression "*piVar9 = iVar10 + -1" (pointer_expression "*piVar9" * identifier) = (binary_expression "iVar10 + -1" identifier + number_literal)) ;) (if_statement "if ((iVar10 == 0) && ((int)(uStack_d8 + 1) < (int)uVar11)) {\n        piVar9 = (int *)(iStack_d4 + (uStack_d8 + 1) * 4);\n        iVar15 = uStack_d8 + 2;\n        iVar10 = *piVar9;\n        *piVar9 = iVar10 + -1;\n        for (; (iVar10 == 0 && (uVar11 != iVar15)); iVar15 = iVar15 + 1) {\n          iVar10 = *(int *)(iStack_d4 + iVar15 * 4);\n          *(int *)(iStack_d4 + iVar15 * 4) = iVar10 + -1;\n        }\n      }" if (parenthesized_expression "((iVar10 == 0) && ((int)(uStack_d8 + 1) < (int)uVar11))" ( (binary_expression "(iVar10 == 0) && ((int)(uStack_d8 + 1) < (int)uVar11)" (parenthesized_expression "(iVar10 == 0)" ( (binary_expression "iVar10 == 0" identifier == number_literal) )) && (parenthesized_expression "((int)(uStack_d8 + 1) < (int)uVar11)" ( (binary_expression "(int)(uStack_d8 + 1) < (int)uVar11" (cast_expression "(int)(uStack_d8 + 1)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(uStack_d8 + 1)" ( (binary_expression "uStack_d8 + 1" identifier + number_literal) ))) < (cast_expression "(int)uVar11" ( (type_descriptor "int" primitive_type) ) identifier)) ))) )) (compound_statement "{\n        piVar9 = (int *)(iStack_d4 + (uStack_d8 + 1) * 4);\n        iVar15 = uStack_d8 + 2;\n        iVar10 = *piVar9;\n        *piVar9 = iVar10 + -1;\n        for (; (iVar10 == 0 && (uVar11 != iVar15)); iVar15 = iVar15 + 1) {\n          iVar10 = *(int *)(iStack_d4 + iVar15 * 4);\n          *(int *)(iStack_d4 + iVar15 * 4) = iVar10 + -1;\n        }\n      }" { (expression_statement "piVar9 = (int *)(iStack_d4 + (uStack_d8 + 1) * 4);" (assignment_expression "piVar9 = (int *)(iStack_d4 + (uStack_d8 + 1) * 4)" identifier = (cast_expression "(int *)(iStack_d4 + (uStack_d8 + 1) * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iStack_d4 + (uStack_d8 + 1) * 4)" ( (binary_expression "iStack_d4 + (uStack_d8 + 1) * 4" identifier + (binary_expression "(uStack_d8 + 1) * 4" (parenthesized_expression "(uStack_d8 + 1)" ( (binary_expression "uStack_d8 + 1" identifier + number_literal) )) * number_literal)) )))) ;) (expression_statement "iVar15 = uStack_d8 + 2;" (assignment_expression "iVar15 = uStack_d8 + 2" identifier = (binary_expression "uStack_d8 + 2" identifier + number_literal)) ;) (expression_statement "iVar10 = *piVar9;" (assignment_expression "iVar10 = *piVar9" identifier = (pointer_expression "*piVar9" * identifier)) ;) (expression_statement "*piVar9 = iVar10 + -1;" (assignment_expression "*piVar9 = iVar10 + -1" (pointer_expression "*piVar9" * identifier) = (binary_expression "iVar10 + -1" identifier + number_literal)) ;) (for_statement "for (; (iVar10 == 0 && (uVar11 != iVar15)); iVar15 = iVar15 + 1) {\n          iVar10 = *(int *)(iStack_d4 + iVar15 * 4);\n          *(int *)(iStack_d4 + iVar15 * 4) = iVar10 + -1;\n        }" for ( ; (parenthesized_expression "(iVar10 == 0 && (uVar11 != iVar15))" ( (binary_expression "iVar10 == 0 && (uVar11 != iVar15)" (binary_expression "iVar10 == 0" identifier == number_literal) && (parenthesized_expression "(uVar11 != iVar15)" ( (binary_expression "uVar11 != iVar15" identifier != identifier) ))) )) ; (assignment_expression "iVar15 = iVar15 + 1" identifier = (binary_expression "iVar15 + 1" identifier + number_literal)) ) (compound_statement "{\n          iVar10 = *(int *)(iStack_d4 + iVar15 * 4);\n          *(int *)(iStack_d4 + iVar15 * 4) = iVar10 + -1;\n        }" { (expression_statement "iVar10 = *(int *)(iStack_d4 + iVar15 * 4);" (assignment_expression "iVar10 = *(int *)(iStack_d4 + iVar15 * 4)" identifier = (pointer_expression "*(int *)(iStack_d4 + iVar15 * 4)" * (cast_expression "(int *)(iStack_d4 + iVar15 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iStack_d4 + iVar15 * 4)" ( (binary_expression "iStack_d4 + iVar15 * 4" identifier + (binary_expression "iVar15 * 4" identifier * number_literal)) ))))) ;) (expression_statement "*(int *)(iStack_d4 + iVar15 * 4) = iVar10 + -1;" (assignment_expression "*(int *)(iStack_d4 + iVar15 * 4) = iVar10 + -1" (pointer_expression "*(int *)(iStack_d4 + iVar15 * 4)" * (cast_expression "(int *)(iStack_d4 + iVar15 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iStack_d4 + iVar15 * 4)" ( (binary_expression "iStack_d4 + iVar15 * 4" identifier + (binary_expression "iVar15 * 4" identifier * number_literal)) )))) = (binary_expression "iVar10 + -1" identifier + number_literal)) ;) })) })) })) })) (expression_statement "iVar4 = iStack_d4;" (assignment_expression "iVar4 = iStack_d4" identifier = identifier) ;) (expression_statement "iVar15 = iStack_e0;" (assignment_expression "iVar15 = iStack_e0" identifier = identifier) ;) (expression_statement "iVar10 = *(int *)(iStack_d4 + (uVar11 + -1) * 4);" (assignment_expression "iVar10 = *(int *)(iStack_d4 + (uVar11 + -1) * 4)" identifier = (pointer_expression "*(int *)(iStack_d4 + (uVar11 + -1) * 4)" * (cast_expression "(int *)(iStack_d4 + (uVar11 + -1) * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iStack_d4 + (uVar11 + -1) * 4)" ( (binary_expression "iStack_d4 + (uVar11 + -1) * 4" identifier + (binary_expression "(uVar11 + -1) * 4" (parenthesized_expression "(uVar11 + -1)" ( (binary_expression "uVar11 + -1" identifier + number_literal) )) * number_literal)) ))))) ;) (while_statement "while (iVar10 == 0) {\n    iVar10 = *(int *)(iStack_d4 + (uVar11 + -2) * 4);\n    uVar11 = uVar11 + -1;\n  }" while (parenthesized_expression "(iVar10 == 0)" ( (binary_expression "iVar10 == 0" identifier == number_literal) )) (compound_statement "{\n    iVar10 = *(int *)(iStack_d4 + (uVar11 + -2) * 4);\n    uVar11 = uVar11 + -1;\n  }" { (expression_statement "iVar10 = *(int *)(iStack_d4 + (uVar11 + -2) * 4);" (assignment_expression "iVar10 = *(int *)(iStack_d4 + (uVar11 + -2) * 4)" identifier = (pointer_expression "*(int *)(iStack_d4 + (uVar11 + -2) * 4)" * (cast_expression "(int *)(iStack_d4 + (uVar11 + -2) * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iStack_d4 + (uVar11 + -2) * 4)" ( (binary_expression "iStack_d4 + (uVar11 + -2) * 4" identifier + (binary_expression "(uVar11 + -2) * 4" (parenthesized_expression "(uVar11 + -2)" ( (binary_expression "uVar11 + -2" identifier + number_literal) )) * number_literal)) ))))) ;) (expression_statement "uVar11 = uVar11 + -1;" (assignment_expression "uVar11 = uVar11 + -1" identifier = (binary_expression "uVar11 + -1" identifier + number_literal)) ;) })) (expression_statement "uStack_100 = uStack_f0 * 4;" (assignment_expression "uStack_100 = uStack_f0 * 4" identifier = (binary_expression "uStack_f0 * 4" identifier * number_literal)) ;) (expression_statement "puVar7 = (uint *)(iStack_d4 + uStack_f0 * 4);" (assignment_expression "puVar7 = (uint *)(iStack_d4 + uStack_f0 * 4)" identifier = (cast_expression "(uint *)(iStack_d4 + uStack_f0 * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iStack_d4 + uStack_f0 * 4)" ( (binary_expression "iStack_d4 + uStack_f0 * 4" identifier + (binary_expression "uStack_f0 * 4" identifier * number_literal)) )))) ;) (expression_statement "uStack_d8 = uStack_f0 + uVar11;" (assignment_expression "uStack_d8 = uStack_f0 + uVar11" identifier = (binary_expression "uStack_f0 + uVar11" identifier + identifier)) ;) (expression_statement "uVar5 = uStack_e8 & 0x1f;" (assignment_expression "uVar5 = uStack_e8 & 0x1f" identifier = (binary_expression "uStack_e8 & 0x1f" identifier & number_literal)) ;) (expression_statement "uStack_130 = uStack_e4;" (assignment_expression "uStack_130 = uStack_e4" identifier = identifier) ;) (expression_statement "puStack_12c = puVar7;" (assignment_expression "puStack_12c = puVar7" identifier = identifier) ;) (if_statement "if (uVar5 == 0) {\n    uStack_e4 = uVar5;\n    *(uint *)(puVar14 + -8) = uVar11;\n    *(int *)(puVar14 + -0xc) = iStack_d4;\n    *(uint **)(puVar14 + -0x10) = puVar7;\n    pcVar2 = *(code **)(iVar15 + 0x24);\n    *(undefined4 *)(puVar14 + -0x14) = 0x4ed9a;\n    (*pcVar2)();\n  }\n  else {\n    uStack_e4 = uVar5;\n    *(uint *)(puVar14 + -4) = uVar5;\n    *(uint *)(puVar14 + -8) = uVar11;\n    *(int *)(puVar14 + -0xc) = iVar4;\n    iVar10 = iStack_e0;\n    *(uint **)(puVar14 + -0x10) = puVar7;\n    pcVar2 = *(code **)(iVar10 + 0x38);\n    *(undefined4 *)(puVar14 + -0x14) = 0x4ec66;\n    iVar10 = (*pcVar2)();\n    if (iVar10 != 0) {\n      *(int *)(iStack_d4 + uStack_d8 * 4) = iVar10;\n      uStack_d8 = uStack_d8 + 1;\n    }\n  }" if (parenthesized_expression "(uVar5 == 0)" ( (binary_expression "uVar5 == 0" identifier == number_literal) )) (compound_statement "{\n    uStack_e4 = uVar5;\n    *(uint *)(puVar14 + -8) = uVar11;\n    *(int *)(puVar14 + -0xc) = iStack_d4;\n    *(uint **)(puVar14 + -0x10) = puVar7;\n    pcVar2 = *(code **)(iVar15 + 0x24);\n    *(undefined4 *)(puVar14 + -0x14) = 0x4ed9a;\n    (*pcVar2)();\n  }" { (expression_statement "uStack_e4 = uVar5;" (assignment_expression "uStack_e4 = uVar5" identifier = identifier) ;) (expression_statement "*(uint *)(puVar14 + -8) = uVar11;" (assignment_expression "*(uint *)(puVar14 + -8) = uVar11" (pointer_expression "*(uint *)(puVar14 + -8)" * (cast_expression "(uint *)(puVar14 + -8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar14 + -8)" ( (binary_expression "puVar14 + -8" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(puVar14 + -0xc) = iStack_d4;" (assignment_expression "*(int *)(puVar14 + -0xc) = iStack_d4" (pointer_expression "*(int *)(puVar14 + -0xc)" * (cast_expression "(int *)(puVar14 + -0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar14 + -0xc)" ( (binary_expression "puVar14 + -0xc" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(uint **)(puVar14 + -0x10) = puVar7;" (assignment_expression "*(uint **)(puVar14 + -0x10) = puVar7" (pointer_expression "*(uint **)(puVar14 + -0x10)" * (cast_expression "(uint **)(puVar14 + -0x10)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar14 + -0x10)" ( (binary_expression "puVar14 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "pcVar2 = *(code **)(iVar15 + 0x24);" (assignment_expression "pcVar2 = *(code **)(iVar15 + 0x24)" identifier = (pointer_expression "*(code **)(iVar15 + 0x24)" * (cast_expression "(code **)(iVar15 + 0x24)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar15 + 0x24)" ( (binary_expression "iVar15 + 0x24" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar14 + -0x14) = 0x4ed9a;" (assignment_expression "*(undefined4 *)(puVar14 + -0x14) = 0x4ed9a" (pointer_expression "*(undefined4 *)(puVar14 + -0x14)" * (cast_expression "(undefined4 *)(puVar14 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar14 + -0x14)" ( (binary_expression "puVar14 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "(*pcVar2)();" (call_expression "(*pcVar2)()" (parenthesized_expression "(*pcVar2)" ( (pointer_expression "*pcVar2" * identifier) )) (argument_list "()" ( ))) ;) }) (else_clause "else {\n    uStack_e4 = uVar5;\n    *(uint *)(puVar14 + -4) = uVar5;\n    *(uint *)(puVar14 + -8) = uVar11;\n    *(int *)(puVar14 + -0xc) = iVar4;\n    iVar10 = iStack_e0;\n    *(uint **)(puVar14 + -0x10) = puVar7;\n    pcVar2 = *(code **)(iVar10 + 0x38);\n    *(undefined4 *)(puVar14 + -0x14) = 0x4ec66;\n    iVar10 = (*pcVar2)();\n    if (iVar10 != 0) {\n      *(int *)(iStack_d4 + uStack_d8 * 4) = iVar10;\n      uStack_d8 = uStack_d8 + 1;\n    }\n  }" else (compound_statement "{\n    uStack_e4 = uVar5;\n    *(uint *)(puVar14 + -4) = uVar5;\n    *(uint *)(puVar14 + -8) = uVar11;\n    *(int *)(puVar14 + -0xc) = iVar4;\n    iVar10 = iStack_e0;\n    *(uint **)(puVar14 + -0x10) = puVar7;\n    pcVar2 = *(code **)(iVar10 + 0x38);\n    *(undefined4 *)(puVar14 + -0x14) = 0x4ec66;\n    iVar10 = (*pcVar2)();\n    if (iVar10 != 0) {\n      *(int *)(iStack_d4 + uStack_d8 * 4) = iVar10;\n      uStack_d8 = uStack_d8 + 1;\n    }\n  }" { (expression_statement "uStack_e4 = uVar5;" (assignment_expression "uStack_e4 = uVar5" identifier = identifier) ;) (expression_statement "*(uint *)(puVar14 + -4) = uVar5;" (assignment_expression "*(uint *)(puVar14 + -4) = uVar5" (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) ;) (expression_statement "*(uint *)(puVar14 + -8) = uVar11;" (assignment_expression "*(uint *)(puVar14 + -8) = uVar11" (pointer_expression "*(uint *)(puVar14 + -8)" * (cast_expression "(uint *)(puVar14 + -8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar14 + -8)" ( (binary_expression "puVar14 + -8" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(puVar14 + -0xc) = iVar4;" (assignment_expression "*(int *)(puVar14 + -0xc) = iVar4" (pointer_expression "*(int *)(puVar14 + -0xc)" * (cast_expression "(int *)(puVar14 + -0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar14 + -0xc)" ( (binary_expression "puVar14 + -0xc" identifier + number_literal) )))) = identifier) ;) (expression_statement "iVar10 = iStack_e0;" (assignment_expression "iVar10 = iStack_e0" identifier = identifier) ;) (expression_statement "*(uint **)(puVar14 + -0x10) = puVar7;" (assignment_expression "*(uint **)(puVar14 + -0x10) = puVar7" (pointer_expression "*(uint **)(puVar14 + -0x10)" * (cast_expression "(uint **)(puVar14 + -0x10)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar14 + -0x10)" ( (binary_expression "puVar14 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "pcVar2 = *(code **)(iVar10 + 0x38);" (assignment_expression "pcVar2 = *(code **)(iVar10 + 0x38)" identifier = (pointer_expression "*(code **)(iVar10 + 0x38)" * (cast_expression "(code **)(iVar10 + 0x38)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar10 + 0x38)" ( (binary_expression "iVar10 + 0x38" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar14 + -0x14) = 0x4ec66;" (assignment_expression "*(undefined4 *)(puVar14 + -0x14) = 0x4ec66" (pointer_expression "*(undefined4 *)(puVar14 + -0x14)" * (cast_expression "(undefined4 *)(puVar14 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar14 + -0x14)" ( (binary_expression "puVar14 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "iVar10 = (*pcVar2)();" (assignment_expression "iVar10 = (*pcVar2)()" identifier = (call_expression "(*pcVar2)()" (parenthesized_expression "(*pcVar2)" ( (pointer_expression "*pcVar2" * identifier) )) (argument_list "()" ( )))) ;) (if_statement "if (iVar10 != 0) {\n      *(int *)(iStack_d4 + uStack_d8 * 4) = iVar10;\n      uStack_d8 = uStack_d8 + 1;\n    }" if (parenthesized_expression "(iVar10 != 0)" ( (binary_expression "iVar10 != 0" identifier != number_literal) )) (compound_statement "{\n      *(int *)(iStack_d4 + uStack_d8 * 4) = iVar10;\n      uStack_d8 = uStack_d8 + 1;\n    }" { (expression_statement "*(int *)(iStack_d4 + uStack_d8 * 4) = iVar10;" (assignment_expression "*(int *)(iStack_d4 + uStack_d8 * 4) = iVar10" (pointer_expression "*(int *)(iStack_d4 + uStack_d8 * 4)" * (cast_expression "(int *)(iStack_d4 + uStack_d8 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iStack_d4 + uStack_d8 * 4)" ( (binary_expression "iStack_d4 + uStack_d8 * 4" identifier + (binary_expression "uStack_d8 * 4" identifier * number_literal)) )))) = identifier) ;) (expression_statement "uStack_d8 = uStack_d8 + 1;" (assignment_expression "uStack_d8 = uStack_d8 + 1" identifier = (binary_expression "uStack_d8 + 1" identifier + number_literal)) ;) })) }))) (expression_statement "uVar11 = *puStack_12c;" (assignment_expression "uVar11 = *puStack_12c" identifier = (pointer_expression "*puStack_12c" * identifier)) ;) (expression_statement "uVar5 = uStack_130;" (assignment_expression "uVar5 = uStack_130" identifier = identifier) ;) (expression_statement "puVar7 = puStack_12c;" (assignment_expression "puVar7 = puStack_12c" identifier = identifier) ;) (expression_statement "puVar12 = puStack_11c;" (assignment_expression "puVar12 = puStack_11c" identifier = identifier) ;) (if_statement "if ((int)uStack_f0 < (int)puStack_11c) {\n    uStack_114 = *(undefined4 *)(iStack_d4 + uStack_100 + 4);\n  }" if (parenthesized_expression "((int)uStack_f0 < (int)puStack_11c)" ( (binary_expression "(int)uStack_f0 < (int)puStack_11c" (cast_expression "(int)uStack_f0" ( (type_descriptor "int" primitive_type) ) identifier) < (cast_expression "(int)puStack_11c" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n    uStack_114 = *(undefined4 *)(iStack_d4 + uStack_100 + 4);\n  }" { (expression_statement "uStack_114 = *(undefined4 *)(iStack_d4 + uStack_100 + 4);" (assignment_expression "uStack_114 = *(undefined4 *)(iStack_d4 + uStack_100 + 4)" identifier = (pointer_expression "*(undefined4 *)(iStack_d4 + uStack_100 + 4)" * (cast_expression "(undefined4 *)(iStack_d4 + uStack_100 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iStack_d4 + uStack_100 + 4)" ( (binary_expression "iStack_d4 + uStack_100 + 4" (binary_expression "iStack_d4 + uStack_100" identifier + identifier) + number_literal) ))))) ;) })) (labeled_statement "LAB_0004e83d:\n  piVar9 = local_f8 + uVar5;" statement_identifier : (expression_statement "piVar9 = local_f8 + uVar5;" (assignment_expression "piVar9 = local_f8 + uVar5" identifier = (binary_expression "local_f8 + uVar5" identifier + identifier)) ;)) (expression_statement "puStack_11c = puVar7;" (assignment_expression "puStack_11c = puVar7" identifier = identifier) ;) (if_statement "if ((uStack_f4 & 0x1f) == 0) {\n    *(int *)(puVar14 + -8) = iStack_110;\n    *(int **)(puVar14 + -0xc) = piVar9;\n    *(int *)(puVar14 + -0x10) = iStack_d4;\n    pcVar2 = *(code **)(iStack_e0 + 0x28);\n    *(undefined4 *)(puVar14 + -0x14) = 0x4ed09;\n    (*pcVar2)();\n  }\n  else {\n    *(uint *)(puVar14 + -4) = uStack_f4 & 0x1f;\n    *(int *)(puVar14 + -8) = iStack_110;\n    *(int **)(puVar14 + -0xc) = piVar9;\n    iVar10 = iStack_e0;\n    *(int *)(puVar14 + -0x10) = iStack_d4;\n    pcVar2 = *(code **)(iVar10 + 0x80);\n    *(undefined4 *)(puVar14 + -0x14) = 0x4e875;\n    (*pcVar2)();\n  }" if (parenthesized_expression "((uStack_f4 & 0x1f) == 0)" ( (binary_expression "(uStack_f4 & 0x1f) == 0" (parenthesized_expression "(uStack_f4 & 0x1f)" ( (binary_expression "uStack_f4 & 0x1f" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n    *(int *)(puVar14 + -8) = iStack_110;\n    *(int **)(puVar14 + -0xc) = piVar9;\n    *(int *)(puVar14 + -0x10) = iStack_d4;\n    pcVar2 = *(code **)(iStack_e0 + 0x28);\n    *(undefined4 *)(puVar14 + -0x14) = 0x4ed09;\n    (*pcVar2)();\n  }" { (expression_statement "*(int *)(puVar14 + -8) = iStack_110;" (assignment_expression "*(int *)(puVar14 + -8) = iStack_110" (pointer_expression "*(int *)(puVar14 + -8)" * (cast_expression "(int *)(puVar14 + -8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar14 + -8)" ( (binary_expression "puVar14 + -8" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int **)(puVar14 + -0xc) = piVar9;" (assignment_expression "*(int **)(puVar14 + -0xc) = piVar9" (pointer_expression "*(int **)(puVar14 + -0xc)" * (cast_expression "(int **)(puVar14 + -0xc)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar14 + -0xc)" ( (binary_expression "puVar14 + -0xc" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(puVar14 + -0x10) = iStack_d4;" (assignment_expression "*(int *)(puVar14 + -0x10) = iStack_d4" (pointer_expression "*(int *)(puVar14 + -0x10)" * (cast_expression "(int *)(puVar14 + -0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar14 + -0x10)" ( (binary_expression "puVar14 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "pcVar2 = *(code **)(iStack_e0 + 0x28);" (assignment_expression "pcVar2 = *(code **)(iStack_e0 + 0x28)" identifier = (pointer_expression "*(code **)(iStack_e0 + 0x28)" * (cast_expression "(code **)(iStack_e0 + 0x28)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iStack_e0 + 0x28)" ( (binary_expression "iStack_e0 + 0x28" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar14 + -0x14) = 0x4ed09;" (assignment_expression "*(undefined4 *)(puVar14 + -0x14) = 0x4ed09" (pointer_expression "*(undefined4 *)(puVar14 + -0x14)" * (cast_expression "(undefined4 *)(puVar14 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar14 + -0x14)" ( (binary_expression "puVar14 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "(*pcVar2)();" (call_expression "(*pcVar2)()" (parenthesized_expression "(*pcVar2)" ( (pointer_expression "*pcVar2" * identifier) )) (argument_list "()" ( ))) ;) }) (else_clause "else {\n    *(uint *)(puVar14 + -4) = uStack_f4 & 0x1f;\n    *(int *)(puVar14 + -8) = iStack_110;\n    *(int **)(puVar14 + -0xc) = piVar9;\n    iVar10 = iStack_e0;\n    *(int *)(puVar14 + -0x10) = iStack_d4;\n    pcVar2 = *(code **)(iVar10 + 0x80);\n    *(undefined4 *)(puVar14 + -0x14) = 0x4e875;\n    (*pcVar2)();\n  }" else (compound_statement "{\n    *(uint *)(puVar14 + -4) = uStack_f4 & 0x1f;\n    *(int *)(puVar14 + -8) = iStack_110;\n    *(int **)(puVar14 + -0xc) = piVar9;\n    iVar10 = iStack_e0;\n    *(int *)(puVar14 + -0x10) = iStack_d4;\n    pcVar2 = *(code **)(iVar10 + 0x80);\n    *(undefined4 *)(puVar14 + -0x14) = 0x4e875;\n    (*pcVar2)();\n  }" { (expression_statement "*(uint *)(puVar14 + -4) = uStack_f4 & 0x1f;" (assignment_expression "*(uint *)(puVar14 + -4) = uStack_f4 & 0x1f" (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) )))) = (binary_expression "uStack_f4 & 0x1f" identifier & number_literal)) ;) (expression_statement "*(int *)(puVar14 + -8) = iStack_110;" (assignment_expression "*(int *)(puVar14 + -8) = iStack_110" (pointer_expression "*(int *)(puVar14 + -8)" * (cast_expression "(int *)(puVar14 + -8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar14 + -8)" ( (binary_expression "puVar14 + -8" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int **)(puVar14 + -0xc) = piVar9;" (assignment_expression "*(int **)(puVar14 + -0xc) = piVar9" (pointer_expression "*(int **)(puVar14 + -0xc)" * (cast_expression "(int **)(puVar14 + -0xc)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar14 + -0xc)" ( (binary_expression "puVar14 + -0xc" identifier + number_literal) )))) = identifier) ;) (expression_statement "iVar10 = iStack_e0;" (assignment_expression "iVar10 = iStack_e0" identifier = identifier) ;) (expression_statement "*(int *)(puVar14 + -0x10) = iStack_d4;" (assignment_expression "*(int *)(puVar14 + -0x10) = iStack_d4" (pointer_expression "*(int *)(puVar14 + -0x10)" * (cast_expression "(int *)(puVar14 + -0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar14 + -0x10)" ( (binary_expression "puVar14 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "pcVar2 = *(code **)(iVar10 + 0x80);" (assignment_expression "pcVar2 = *(code **)(iVar10 + 0x80)" identifier = (pointer_expression "*(code **)(iVar10 + 0x80)" * (cast_expression "(code **)(iVar10 + 0x80)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar10 + 0x80)" ( (binary_expression "iVar10 + 0x80" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar14 + -0x14) = 0x4e875;" (assignment_expression "*(undefined4 *)(puVar14 + -0x14) = 0x4e875" (pointer_expression "*(undefined4 *)(puVar14 + -0x14)" * (cast_expression "(undefined4 *)(puVar14 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar14 + -0x14)" ( (binary_expression "puVar14 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "(*pcVar2)();" (call_expression "(*pcVar2)()" (parenthesized_expression "(*pcVar2)" ( (pointer_expression "*pcVar2" * identifier) )) (argument_list "()" ( ))) ;) }))) (expression_statement "iVar15 = iStack_d0;" (assignment_expression "iVar15 = iStack_d0" identifier = identifier) ;) (expression_statement "iVar10 = iStack_108;" (assignment_expression "iVar10 = iStack_108" identifier = identifier) ;) (expression_statement "*puStack_11c = uVar11 | ~(-1 << ((byte)uStack_e4 & 0x1f)) & *puStack_11c;" (assignment_expression "*puStack_11c = uVar11 | ~(-1 << ((byte)uStack_e4 & 0x1f)) & *puStack_11c" (pointer_expression "*puStack_11c" * identifier) = (binary_expression "uVar11 | ~(-1 << ((byte)uStack_e4 & 0x1f)) & *puStack_11c" identifier | (binary_expression "~(-1 << ((byte)uStack_e4 & 0x1f)) & *puStack_11c" (unary_expression "~(-1 << ((byte)uStack_e4 & 0x1f))" ~ (parenthesized_expression "(-1 << ((byte)uStack_e4 & 0x1f))" ( (binary_expression "-1 << ((byte)uStack_e4 & 0x1f)" number_literal << (parenthesized_expression "((byte)uStack_e4 & 0x1f)" ( (binary_expression "(byte)uStack_e4 & 0x1f" (cast_expression "(byte)uStack_e4" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) ))) ))) & (pointer_expression "*puStack_11c" * identifier)))) ;) (if_statement "if ((int)uStack_f0 < (int)puVar12) {\n    *(undefined4 *)(iStack_d4 + (uStack_f0 + 1) * 4) = uStack_114;\n  }" if (parenthesized_expression "((int)uStack_f0 < (int)puVar12)" ( (binary_expression "(int)uStack_f0 < (int)puVar12" (cast_expression "(int)uStack_f0" ( (type_descriptor "int" primitive_type) ) identifier) < (cast_expression "(int)puVar12" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n    *(undefined4 *)(iStack_d4 + (uStack_f0 + 1) * 4) = uStack_114;\n  }" { (expression_statement "*(undefined4 *)(iStack_d4 + (uStack_f0 + 1) * 4) = uStack_114;" (assignment_expression "*(undefined4 *)(iStack_d4 + (uStack_f0 + 1) * 4) = uStack_114" (pointer_expression "*(undefined4 *)(iStack_d4 + (uStack_f0 + 1) * 4)" * (cast_expression "(undefined4 *)(iStack_d4 + (uStack_f0 + 1) * 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iStack_d4 + (uStack_f0 + 1) * 4)" ( (binary_expression "iStack_d4 + (uStack_f0 + 1) * 4" identifier + (binary_expression "(uStack_f0 + 1) * 4" (parenthesized_expression "(uStack_f0 + 1)" ( (binary_expression "uStack_f0 + 1" identifier + number_literal) )) * number_literal)) )))) = identifier) ;) })) (expression_statement "*(uint *)(puVar14 + -4) = param_2;" (assignment_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) ;) (expression_statement "iVar4 = iStack_e0;" (assignment_expression "iVar4 = iStack_e0" identifier = identifier) ;) (expression_statement "*(int *)(puVar14 + -8) = iVar10;" (assignment_expression "*(int *)(puVar14 + -8) = iVar10" (pointer_expression "*(int *)(puVar14 + -8)" * (cast_expression "(int *)(puVar14 + -8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar14 + -8)" ( (binary_expression "puVar14 + -8" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(puVar14 + -0xc) = iVar15;" (assignment_expression "*(int *)(puVar14 + -0xc) = iVar15" (pointer_expression "*(int *)(puVar14 + -0xc)" * (cast_expression "(int *)(puVar14 + -0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar14 + -0xc)" ( (binary_expression "puVar14 + -0xc" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(puVar14 + -0x10) = iVar15;" (assignment_expression "*(int *)(puVar14 + -0x10) = iVar15" (pointer_expression "*(int *)(puVar14 + -0x10)" * (cast_expression "(int *)(puVar14 + -0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar14 + -0x10)" ( (binary_expression "puVar14 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "pcVar2 = *(code **)(iVar4 + 100);" (assignment_expression "pcVar2 = *(code **)(iVar4 + 100)" identifier = (pointer_expression "*(code **)(iVar4 + 100)" * (cast_expression "(code **)(iVar4 + 100)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar4 + 100)" ( (binary_expression "iVar4 + 100" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar14 + -0x14) = 0x4e8c9;" (assignment_expression "*(undefined4 *)(puVar14 + -0x14) = 0x4e8c9" (pointer_expression "*(undefined4 *)(puVar14 + -0x14)" * (cast_expression "(undefined4 *)(puVar14 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar14 + -0x14)" ( (binary_expression "puVar14 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "iVar6 = (*pcVar2)();" (assignment_expression "iVar6 = (*pcVar2)()" identifier = (call_expression "(*pcVar2)()" (parenthesized_expression "(*pcVar2)" ( (pointer_expression "*pcVar2" * identifier) )) (argument_list "()" ( )))) ;) (expression_statement "puVar7 = local_c0;" (assignment_expression "puVar7 = local_c0" identifier = identifier) ;) (expression_statement "iVar4 = iStack_cc;" (assignment_expression "iVar4 = iStack_cc" identifier = identifier) ;) (expression_statement "*(int *)(iVar15 + iVar10 * 4) = iVar6;" (assignment_expression "*(int *)(iVar15 + iVar10 * 4) = iVar6" (pointer_expression "*(int *)(iVar15 + iVar10 * 4)" * (cast_expression "(int *)(iVar15 + iVar10 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar15 + iVar10 * 4)" ( (binary_expression "iVar15 + iVar10 * 4" identifier + (binary_expression "iVar10 * 4" identifier * number_literal)) )))) = identifier) ;) (expression_statement "iVar10 = (uint)(iVar6 != 0) + iVar10;" (assignment_expression "iVar10 = (uint)(iVar6 != 0) + iVar10" identifier = (binary_expression "(uint)(iVar6 != 0) + iVar10" (call_expression "(uint)(iVar6 != 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(iVar6 != 0)" ( (binary_expression "iVar6 != 0" identifier != number_literal) ))) + identifier)) ;) (expression_statement "puVar12 = (uint *)(uStack_100 + (int)local_c0);" (assignment_expression "puVar12 = (uint *)(uStack_100 + (int)local_c0)" identifier = (cast_expression "(uint *)(uStack_100 + (int)local_c0)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uStack_100 + (int)local_c0)" ( (binary_expression "uStack_100 + (int)local_c0" identifier + (cast_expression "(int)local_c0" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) (expression_statement "iVar15 = uStack_f0 + iStack_cc;" (assignment_expression "iVar15 = uStack_f0 + iStack_cc" identifier = (binary_expression "uStack_f0 + iStack_cc" identifier + identifier)) ;) (if_statement "if (uStack_e4 == 0) {\n    *(int *)(puVar14 + -8) = iStack_cc;\n    *(uint **)(puVar14 + -0xc) = local_c0;\n    *(uint **)(puVar14 + -0x10) = puVar12;\n    pcVar2 = *(code **)(iStack_e0 + 0x24);\n    *(undefined4 *)(puVar14 + -0x14) = 0x4ecd9;\n    (*pcVar2)();\nLAB_0004ecdc:\n    iStack_cc = iVar15;\n  }\n  else {\n    *(uint *)(puVar14 + -4) = uStack_e4;\n    *(int *)(puVar14 + -8) = iVar4;\n    *(uint **)(puVar14 + -0xc) = puVar7;\n    *(uint **)(puVar14 + -0x10) = puVar12;\n    pcVar2 = *(code **)(iStack_e0 + 0x38);\n    *(undefined4 *)(puVar14 + -0x14) = 0x4e915;\n    uVar11 = (*pcVar2)();\n    if (uVar11 == 0) goto LAB_0004ecdc;\n    local_c0[iVar15] = uVar11;\n    iStack_cc = iVar15 + 1;\n  }" if (parenthesized_expression "(uStack_e4 == 0)" ( (binary_expression "uStack_e4 == 0" identifier == number_literal) )) (compound_statement "{\n    *(int *)(puVar14 + -8) = iStack_cc;\n    *(uint **)(puVar14 + -0xc) = local_c0;\n    *(uint **)(puVar14 + -0x10) = puVar12;\n    pcVar2 = *(code **)(iStack_e0 + 0x24);\n    *(undefined4 *)(puVar14 + -0x14) = 0x4ecd9;\n    (*pcVar2)();\nLAB_0004ecdc:\n    iStack_cc = iVar15;\n  }" { (expression_statement "*(int *)(puVar14 + -8) = iStack_cc;" (assignment_expression "*(int *)(puVar14 + -8) = iStack_cc" (pointer_expression "*(int *)(puVar14 + -8)" * (cast_expression "(int *)(puVar14 + -8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar14 + -8)" ( (binary_expression "puVar14 + -8" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(uint **)(puVar14 + -0xc) = local_c0;" (assignment_expression "*(uint **)(puVar14 + -0xc) = local_c0" (pointer_expression "*(uint **)(puVar14 + -0xc)" * (cast_expression "(uint **)(puVar14 + -0xc)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar14 + -0xc)" ( (binary_expression "puVar14 + -0xc" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(uint **)(puVar14 + -0x10) = puVar12;" (assignment_expression "*(uint **)(puVar14 + -0x10) = puVar12" (pointer_expression "*(uint **)(puVar14 + -0x10)" * (cast_expression "(uint **)(puVar14 + -0x10)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar14 + -0x10)" ( (binary_expression "puVar14 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "pcVar2 = *(code **)(iStack_e0 + 0x24);" (assignment_expression "pcVar2 = *(code **)(iStack_e0 + 0x24)" identifier = (pointer_expression "*(code **)(iStack_e0 + 0x24)" * (cast_expression "(code **)(iStack_e0 + 0x24)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iStack_e0 + 0x24)" ( (binary_expression "iStack_e0 + 0x24" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar14 + -0x14) = 0x4ecd9;" (assignment_expression "*(undefined4 *)(puVar14 + -0x14) = 0x4ecd9" (pointer_expression "*(undefined4 *)(puVar14 + -0x14)" * (cast_expression "(undefined4 *)(puVar14 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar14 + -0x14)" ( (binary_expression "puVar14 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "(*pcVar2)();" (call_expression "(*pcVar2)()" (parenthesized_expression "(*pcVar2)" ( (pointer_expression "*pcVar2" * identifier) )) (argument_list "()" ( ))) ;) (labeled_statement "LAB_0004ecdc:\n    iStack_cc = iVar15;" statement_identifier : (expression_statement "iStack_cc = iVar15;" (assignment_expression "iStack_cc = iVar15" identifier = identifier) ;)) }) (else_clause "else {\n    *(uint *)(puVar14 + -4) = uStack_e4;\n    *(int *)(puVar14 + -8) = iVar4;\n    *(uint **)(puVar14 + -0xc) = puVar7;\n    *(uint **)(puVar14 + -0x10) = puVar12;\n    pcVar2 = *(code **)(iStack_e0 + 0x38);\n    *(undefined4 *)(puVar14 + -0x14) = 0x4e915;\n    uVar11 = (*pcVar2)();\n    if (uVar11 == 0) goto LAB_0004ecdc;\n    local_c0[iVar15] = uVar11;\n    iStack_cc = iVar15 + 1;\n  }" else (compound_statement "{\n    *(uint *)(puVar14 + -4) = uStack_e4;\n    *(int *)(puVar14 + -8) = iVar4;\n    *(uint **)(puVar14 + -0xc) = puVar7;\n    *(uint **)(puVar14 + -0x10) = puVar12;\n    pcVar2 = *(code **)(iStack_e0 + 0x38);\n    *(undefined4 *)(puVar14 + -0x14) = 0x4e915;\n    uVar11 = (*pcVar2)();\n    if (uVar11 == 0) goto LAB_0004ecdc;\n    local_c0[iVar15] = uVar11;\n    iStack_cc = iVar15 + 1;\n  }" { (expression_statement "*(uint *)(puVar14 + -4) = uStack_e4;" (assignment_expression "*(uint *)(puVar14 + -4) = uStack_e4" (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) ;) (expression_statement "*(int *)(puVar14 + -8) = iVar4;" (assignment_expression "*(int *)(puVar14 + -8) = iVar4" (pointer_expression "*(int *)(puVar14 + -8)" * (cast_expression "(int *)(puVar14 + -8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar14 + -8)" ( (binary_expression "puVar14 + -8" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(uint **)(puVar14 + -0xc) = puVar7;" (assignment_expression "*(uint **)(puVar14 + -0xc) = puVar7" (pointer_expression "*(uint **)(puVar14 + -0xc)" * (cast_expression "(uint **)(puVar14 + -0xc)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar14 + -0xc)" ( (binary_expression "puVar14 + -0xc" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(uint **)(puVar14 + -0x10) = puVar12;" (assignment_expression "*(uint **)(puVar14 + -0x10) = puVar12" (pointer_expression "*(uint **)(puVar14 + -0x10)" * (cast_expression "(uint **)(puVar14 + -0x10)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar14 + -0x10)" ( (binary_expression "puVar14 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "pcVar2 = *(code **)(iStack_e0 + 0x38);" (assignment_expression "pcVar2 = *(code **)(iStack_e0 + 0x38)" identifier = (pointer_expression "*(code **)(iStack_e0 + 0x38)" * (cast_expression "(code **)(iStack_e0 + 0x38)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iStack_e0 + 0x38)" ( (binary_expression "iStack_e0 + 0x38" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar14 + -0x14) = 0x4e915;" (assignment_expression "*(undefined4 *)(puVar14 + -0x14) = 0x4e915" (pointer_expression "*(undefined4 *)(puVar14 + -0x14)" * (cast_expression "(undefined4 *)(puVar14 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar14 + -0x14)" ( (binary_expression "puVar14 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "uVar11 = (*pcVar2)();" (assignment_expression "uVar11 = (*pcVar2)()" identifier = (call_expression "(*pcVar2)()" (parenthesized_expression "(*pcVar2)" ( (pointer_expression "*pcVar2" * identifier) )) (argument_list "()" ( )))) ;) (if_statement "if (uVar11 == 0) goto LAB_0004ecdc;" if (parenthesized_expression "(uVar11 == 0)" ( (binary_expression "uVar11 == 0" identifier == number_literal) )) (goto_statement "goto LAB_0004ecdc;" goto statement_identifier ;)) (expression_statement "local_c0[iVar15] = uVar11;" (assignment_expression "local_c0[iVar15] = uVar11" (subscript_expression "local_c0[iVar15]" identifier [ identifier ]) = identifier) ;) (expression_statement "iStack_cc = iVar15 + 1;" (assignment_expression "iStack_cc = iVar15 + 1" identifier = (binary_expression "iVar15 + 1" identifier + number_literal)) ;) }))) (expression_statement "uStack_f0 = *puVar12;" (assignment_expression "uStack_f0 = *puVar12" identifier = (pointer_expression "*puVar12" * identifier)) ;) (expression_statement "uVar5 = uStack_e8 - 1 >> 5;" (assignment_expression "uVar5 = uStack_e8 - 1 >> 5" identifier = (binary_expression "uStack_e8 - 1 >> 5" (binary_expression "uStack_e8 - 1" identifier - number_literal) >> number_literal)) ;) (expression_statement "uVar11 = uVar5 + 1;" (assignment_expression "uVar11 = uVar5 + 1" identifier = (binary_expression "uVar5 + 1" identifier + number_literal)) ;) (if_statement "if ((int)uStack_d8 < iVar10) {\n    *(uint *)(puVar14 + -8) = uVar11 * 4;\n    *(undefined4 *)(puVar14 + -0xc) = 0;\n    *(uint **)(puVar14 + -0x10) = local_c0;\n    *(undefined4 *)(puVar14 + -0x14) = 0x4ee04;\n    memset(*(void **)(puVar14 + -0x10),*(int *)(puVar14 + -0xc),*(size_t *)(puVar14 + -8));\n    goto LAB_0004e9ab;\n  }" if (parenthesized_expression "((int)uStack_d8 < iVar10)" ( (binary_expression "(int)uStack_d8 < iVar10" (cast_expression "(int)uStack_d8" ( (type_descriptor "int" primitive_type) ) identifier) < identifier) )) (compound_statement "{\n    *(uint *)(puVar14 + -8) = uVar11 * 4;\n    *(undefined4 *)(puVar14 + -0xc) = 0;\n    *(uint **)(puVar14 + -0x10) = local_c0;\n    *(undefined4 *)(puVar14 + -0x14) = 0x4ee04;\n    memset(*(void **)(puVar14 + -0x10),*(int *)(puVar14 + -0xc),*(size_t *)(puVar14 + -8));\n    goto LAB_0004e9ab;\n  }" { (expression_statement "*(uint *)(puVar14 + -8) = uVar11 * 4;" (assignment_expression "*(uint *)(puVar14 + -8) = uVar11 * 4" (pointer_expression "*(uint *)(puVar14 + -8)" * (cast_expression "(uint *)(puVar14 + -8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar14 + -8)" ( (binary_expression "puVar14 + -8" identifier + number_literal) )))) = (binary_expression "uVar11 * 4" identifier * number_literal)) ;) (expression_statement "*(undefined4 *)(puVar14 + -0xc) = 0;" (assignment_expression "*(undefined4 *)(puVar14 + -0xc) = 0" (pointer_expression "*(undefined4 *)(puVar14 + -0xc)" * (cast_expression "(undefined4 *)(puVar14 + -0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar14 + -0xc)" ( (binary_expression "puVar14 + -0xc" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(uint **)(puVar14 + -0x10) = local_c0;" (assignment_expression "*(uint **)(puVar14 + -0x10) = local_c0" (pointer_expression "*(uint **)(puVar14 + -0x10)" * (cast_expression "(uint **)(puVar14 + -0x10)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar14 + -0x10)" ( (binary_expression "puVar14 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar14 + -0x14) = 0x4ee04;" (assignment_expression "*(undefined4 *)(puVar14 + -0x14) = 0x4ee04" (pointer_expression "*(undefined4 *)(puVar14 + -0x14)" * (cast_expression "(undefined4 *)(puVar14 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar14 + -0x14)" ( (binary_expression "puVar14 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "memset(*(void **)(puVar14 + -0x10),*(int *)(puVar14 + -0xc),*(size_t *)(puVar14 + -8));" (call_expression "memset(*(void **)(puVar14 + -0x10),*(int *)(puVar14 + -0xc),*(size_t *)(puVar14 + -8))" identifier (argument_list "(*(void **)(puVar14 + -0x10),*(int *)(puVar14 + -0xc),*(size_t *)(puVar14 + -8))" ( (pointer_expression "*(void **)(puVar14 + -0x10)" * (cast_expression "(void **)(puVar14 + -0x10)" ( (type_descriptor "void **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar14 + -0x10)" ( (binary_expression "puVar14 + -0x10" identifier + number_literal) )))) , (pointer_expression "*(int *)(puVar14 + -0xc)" * (cast_expression "(int *)(puVar14 + -0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar14 + -0xc)" ( (binary_expression "puVar14 + -0xc" identifier + number_literal) )))) , (pointer_expression "*(size_t *)(puVar14 + -8)" * (cast_expression "(size_t *)(puVar14 + -8)" ( (type_descriptor "size_t *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar14 + -8)" ( (binary_expression "puVar14 + -8" identifier + number_literal) )))) ))) ;) (goto_statement "goto LAB_0004e9ab;" goto statement_identifier ;) })) (expression_statement "iVar15 = uStack_d8 - iVar10;" (assignment_expression "iVar15 = uStack_d8 - iVar10" identifier = (binary_expression "uStack_d8 - iVar10" identifier - identifier)) ;) (if_statement "if (iVar15 <= (int)uVar11) {\n    *(int *)(puVar14 + -0xc) = iStack_120;\n    *(int *)(puVar14 + -0x10) = iVar10;\n    *(int *)(puVar14 + -0x14) = iStack_d0;\n    *(uint *)(puVar14 + -0x18) = uStack_d8;\n    *(int *)(puVar14 + -0x1c) = iStack_d4;\n    *(int *)(puVar14 + -0x20) = iStack_dc;\n    iStack_108 = iVar15;\n    uStack_100 = uVar11;\n    *(undefined4 *)(puVar14 + -0x24) = 0x4ead1;\n    __gmpn_div_q();\n    puVar7 = local_c0;\n    iVar10 = iStack_e0;\n    uVar13 = (uint)(*(int *)(iStack_dc + iStack_108 * 4) != 0) + iStack_108;\n    uVar11 = uStack_100;\n    if ((int)uVar13 <= (int)uStack_100) {\n      if ((uStack_100 != uVar13) || (uStack_e4 == 0)) {\n        uStack_e4 = uStack_100;\n        *(uint *)(puVar14 + -8) = uVar13;\n        *(int *)(puVar14 + -0xc) = iStack_dc;\n        *(uint **)(puVar14 + -0x10) = puVar7;\n        pcVar2 = *(code **)(iVar10 + 0x28);\n        *(undefined4 *)(puVar14 + -0x14) = 0x4eb2a;\n        (*pcVar2)();\n        if (uStack_e4 != uVar13) {\n          *(uint *)(puVar14 + -8) = (uStack_e4 - uVar13) * 4;\n          *(undefined4 *)(puVar14 + -0xc) = 0;\n          *(uint **)(puVar14 + -0x10) = puVar7 + uVar13;\n          *(undefined4 *)(puVar14 + -0x14) = 0x4eb55;\n          memset(*(void **)(puVar14 + -0x10),*(int *)(puVar14 + -0xc),*(size_t *)(puVar14 + -8));\n        }\n        goto LAB_0004e9ab;\n      }\n      if (*(uint *)(iStack_dc + -4 + uVar13 * 4) >> ((byte)uStack_e4 & 0x1f) == 0) {\n        *(uint *)(puVar14 + -8) = uVar13;\n        *(int *)(puVar14 + -0xc) = iStack_dc;\n        *(uint **)(puVar14 + -0x10) = local_c0;\n        pcVar2 = *(code **)(iVar10 + 0x28);\n        *(undefined4 *)(puVar14 + -0x14) = 0x4ede2;\n        (*pcVar2)();\n        goto LAB_0004e9ab;\n      }\n    }\n  }" if (parenthesized_expression "(iVar15 <= (int)uVar11)" ( (binary_expression "iVar15 <= (int)uVar11" identifier <= (cast_expression "(int)uVar11" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n    *(int *)(puVar14 + -0xc) = iStack_120;\n    *(int *)(puVar14 + -0x10) = iVar10;\n    *(int *)(puVar14 + -0x14) = iStack_d0;\n    *(uint *)(puVar14 + -0x18) = uStack_d8;\n    *(int *)(puVar14 + -0x1c) = iStack_d4;\n    *(int *)(puVar14 + -0x20) = iStack_dc;\n    iStack_108 = iVar15;\n    uStack_100 = uVar11;\n    *(undefined4 *)(puVar14 + -0x24) = 0x4ead1;\n    __gmpn_div_q();\n    puVar7 = local_c0;\n    iVar10 = iStack_e0;\n    uVar13 = (uint)(*(int *)(iStack_dc + iStack_108 * 4) != 0) + iStack_108;\n    uVar11 = uStack_100;\n    if ((int)uVar13 <= (int)uStack_100) {\n      if ((uStack_100 != uVar13) || (uStack_e4 == 0)) {\n        uStack_e4 = uStack_100;\n        *(uint *)(puVar14 + -8) = uVar13;\n        *(int *)(puVar14 + -0xc) = iStack_dc;\n        *(uint **)(puVar14 + -0x10) = puVar7;\n        pcVar2 = *(code **)(iVar10 + 0x28);\n        *(undefined4 *)(puVar14 + -0x14) = 0x4eb2a;\n        (*pcVar2)();\n        if (uStack_e4 != uVar13) {\n          *(uint *)(puVar14 + -8) = (uStack_e4 - uVar13) * 4;\n          *(undefined4 *)(puVar14 + -0xc) = 0;\n          *(uint **)(puVar14 + -0x10) = puVar7 + uVar13;\n          *(undefined4 *)(puVar14 + -0x14) = 0x4eb55;\n          memset(*(void **)(puVar14 + -0x10),*(int *)(puVar14 + -0xc),*(size_t *)(puVar14 + -8));\n        }\n        goto LAB_0004e9ab;\n      }\n      if (*(uint *)(iStack_dc + -4 + uVar13 * 4) >> ((byte)uStack_e4 & 0x1f) == 0) {\n        *(uint *)(puVar14 + -8) = uVar13;\n        *(int *)(puVar14 + -0xc) = iStack_dc;\n        *(uint **)(puVar14 + -0x10) = local_c0;\n        pcVar2 = *(code **)(iVar10 + 0x28);\n        *(undefined4 *)(puVar14 + -0x14) = 0x4ede2;\n        (*pcVar2)();\n        goto LAB_0004e9ab;\n      }\n    }\n  }" { (expression_statement "*(int *)(puVar14 + -0xc) = iStack_120;" (assignment_expression "*(int *)(puVar14 + -0xc) = iStack_120" (pointer_expression "*(int *)(puVar14 + -0xc)" * (cast_expression "(int *)(puVar14 + -0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar14 + -0xc)" ( (binary_expression "puVar14 + -0xc" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(puVar14 + -0x10) = iVar10;" (assignment_expression "*(int *)(puVar14 + -0x10) = iVar10" (pointer_expression "*(int *)(puVar14 + -0x10)" * (cast_expression "(int *)(puVar14 + -0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar14 + -0x10)" ( (binary_expression "puVar14 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(puVar14 + -0x14) = iStack_d0;" (assignment_expression "*(int *)(puVar14 + -0x14) = iStack_d0" (pointer_expression "*(int *)(puVar14 + -0x14)" * (cast_expression "(int *)(puVar14 + -0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar14 + -0x14)" ( (binary_expression "puVar14 + -0x14" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(uint *)(puVar14 + -0x18) = uStack_d8;" (assignment_expression "*(uint *)(puVar14 + -0x18) = uStack_d8" (pointer_expression "*(uint *)(puVar14 + -0x18)" * (cast_expression "(uint *)(puVar14 + -0x18)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar14 + -0x18)" ( (binary_expression "puVar14 + -0x18" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(puVar14 + -0x1c) = iStack_d4;" (assignment_expression "*(int *)(puVar14 + -0x1c) = iStack_d4" (pointer_expression "*(int *)(puVar14 + -0x1c)" * (cast_expression "(int *)(puVar14 + -0x1c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar14 + -0x1c)" ( (binary_expression "puVar14 + -0x1c" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(puVar14 + -0x20) = iStack_dc;" (assignment_expression "*(int *)(puVar14 + -0x20) = iStack_dc" (pointer_expression "*(int *)(puVar14 + -0x20)" * (cast_expression "(int *)(puVar14 + -0x20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar14 + -0x20)" ( (binary_expression "puVar14 + -0x20" identifier + number_literal) )))) = identifier) ;) (expression_statement "iStack_108 = iVar15;" (assignment_expression "iStack_108 = iVar15" identifier = identifier) ;) (expression_statement "uStack_100 = uVar11;" (assignment_expression "uStack_100 = uVar11" identifier = identifier) ;) (expression_statement "*(undefined4 *)(puVar14 + -0x24) = 0x4ead1;" (assignment_expression "*(undefined4 *)(puVar14 + -0x24) = 0x4ead1" (pointer_expression "*(undefined4 *)(puVar14 + -0x24)" * (cast_expression "(undefined4 *)(puVar14 + -0x24)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar14 + -0x24)" ( (binary_expression "puVar14 + -0x24" identifier + number_literal) )))) = number_literal) ;) (expression_statement "__gmpn_div_q();" (call_expression "__gmpn_div_q()" identifier (argument_list "()" ( ))) ;) (expression_statement "puVar7 = local_c0;" (assignment_expression "puVar7 = local_c0" identifier = identifier) ;) (expression_statement "iVar10 = iStack_e0;" (assignment_expression "iVar10 = iStack_e0" identifier = identifier) ;) (expression_statement "uVar13 = (uint)(*(int *)(iStack_dc + iStack_108 * 4) != 0) + iStack_108;" (assignment_expression "uVar13 = (uint)(*(int *)(iStack_dc + iStack_108 * 4) != 0) + iStack_108" identifier = (binary_expression "(uint)(*(int *)(iStack_dc + iStack_108 * 4) != 0) + iStack_108" (call_expression "(uint)(*(int *)(iStack_dc + iStack_108 * 4) != 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(*(int *)(iStack_dc + iStack_108 * 4) != 0)" ( (binary_expression "*(int *)(iStack_dc + iStack_108 * 4) != 0" (pointer_expression "*(int *)(iStack_dc + iStack_108 * 4)" * (cast_expression "(int *)(iStack_dc + iStack_108 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iStack_dc + iStack_108 * 4)" ( (binary_expression "iStack_dc + iStack_108 * 4" identifier + (binary_expression "iStack_108 * 4" identifier * number_literal)) )))) != number_literal) ))) + identifier)) ;) (expression_statement "uVar11 = uStack_100;" (assignment_expression "uVar11 = uStack_100" identifier = identifier) ;) (if_statement "if ((int)uVar13 <= (int)uStack_100) {\n      if ((uStack_100 != uVar13) || (uStack_e4 == 0)) {\n        uStack_e4 = uStack_100;\n        *(uint *)(puVar14 + -8) = uVar13;\n        *(int *)(puVar14 + -0xc) = iStack_dc;\n        *(uint **)(puVar14 + -0x10) = puVar7;\n        pcVar2 = *(code **)(iVar10 + 0x28);\n        *(undefined4 *)(puVar14 + -0x14) = 0x4eb2a;\n        (*pcVar2)();\n        if (uStack_e4 != uVar13) {\n          *(uint *)(puVar14 + -8) = (uStack_e4 - uVar13) * 4;\n          *(undefined4 *)(puVar14 + -0xc) = 0;\n          *(uint **)(puVar14 + -0x10) = puVar7 + uVar13;\n          *(undefined4 *)(puVar14 + -0x14) = 0x4eb55;\n          memset(*(void **)(puVar14 + -0x10),*(int *)(puVar14 + -0xc),*(size_t *)(puVar14 + -8));\n        }\n        goto LAB_0004e9ab;\n      }\n      if (*(uint *)(iStack_dc + -4 + uVar13 * 4) >> ((byte)uStack_e4 & 0x1f) == 0) {\n        *(uint *)(puVar14 + -8) = uVar13;\n        *(int *)(puVar14 + -0xc) = iStack_dc;\n        *(uint **)(puVar14 + -0x10) = local_c0;\n        pcVar2 = *(code **)(iVar10 + 0x28);\n        *(undefined4 *)(puVar14 + -0x14) = 0x4ede2;\n        (*pcVar2)();\n        goto LAB_0004e9ab;\n      }\n    }" if (parenthesized_expression "((int)uVar13 <= (int)uStack_100)" ( (binary_expression "(int)uVar13 <= (int)uStack_100" (cast_expression "(int)uVar13" ( (type_descriptor "int" primitive_type) ) identifier) <= (cast_expression "(int)uStack_100" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n      if ((uStack_100 != uVar13) || (uStack_e4 == 0)) {\n        uStack_e4 = uStack_100;\n        *(uint *)(puVar14 + -8) = uVar13;\n        *(int *)(puVar14 + -0xc) = iStack_dc;\n        *(uint **)(puVar14 + -0x10) = puVar7;\n        pcVar2 = *(code **)(iVar10 + 0x28);\n        *(undefined4 *)(puVar14 + -0x14) = 0x4eb2a;\n        (*pcVar2)();\n        if (uStack_e4 != uVar13) {\n          *(uint *)(puVar14 + -8) = (uStack_e4 - uVar13) * 4;\n          *(undefined4 *)(puVar14 + -0xc) = 0;\n          *(uint **)(puVar14 + -0x10) = puVar7 + uVar13;\n          *(undefined4 *)(puVar14 + -0x14) = 0x4eb55;\n          memset(*(void **)(puVar14 + -0x10),*(int *)(puVar14 + -0xc),*(size_t *)(puVar14 + -8));\n        }\n        goto LAB_0004e9ab;\n      }\n      if (*(uint *)(iStack_dc + -4 + uVar13 * 4) >> ((byte)uStack_e4 & 0x1f) == 0) {\n        *(uint *)(puVar14 + -8) = uVar13;\n        *(int *)(puVar14 + -0xc) = iStack_dc;\n        *(uint **)(puVar14 + -0x10) = local_c0;\n        pcVar2 = *(code **)(iVar10 + 0x28);\n        *(undefined4 *)(puVar14 + -0x14) = 0x4ede2;\n        (*pcVar2)();\n        goto LAB_0004e9ab;\n      }\n    }" { (if_statement "if ((uStack_100 != uVar13) || (uStack_e4 == 0)) {\n        uStack_e4 = uStack_100;\n        *(uint *)(puVar14 + -8) = uVar13;\n        *(int *)(puVar14 + -0xc) = iStack_dc;\n        *(uint **)(puVar14 + -0x10) = puVar7;\n        pcVar2 = *(code **)(iVar10 + 0x28);\n        *(undefined4 *)(puVar14 + -0x14) = 0x4eb2a;\n        (*pcVar2)();\n        if (uStack_e4 != uVar13) {\n          *(uint *)(puVar14 + -8) = (uStack_e4 - uVar13) * 4;\n          *(undefined4 *)(puVar14 + -0xc) = 0;\n          *(uint **)(puVar14 + -0x10) = puVar7 + uVar13;\n          *(undefined4 *)(puVar14 + -0x14) = 0x4eb55;\n          memset(*(void **)(puVar14 + -0x10),*(int *)(puVar14 + -0xc),*(size_t *)(puVar14 + -8));\n        }\n        goto LAB_0004e9ab;\n      }" if (parenthesized_expression "((uStack_100 != uVar13) || (uStack_e4 == 0))" ( (binary_expression "(uStack_100 != uVar13) || (uStack_e4 == 0)" (parenthesized_expression "(uStack_100 != uVar13)" ( (binary_expression "uStack_100 != uVar13" identifier != identifier) )) || (parenthesized_expression "(uStack_e4 == 0)" ( (binary_expression "uStack_e4 == 0" identifier == number_literal) ))) )) (compound_statement "{\n        uStack_e4 = uStack_100;\n        *(uint *)(puVar14 + -8) = uVar13;\n        *(int *)(puVar14 + -0xc) = iStack_dc;\n        *(uint **)(puVar14 + -0x10) = puVar7;\n        pcVar2 = *(code **)(iVar10 + 0x28);\n        *(undefined4 *)(puVar14 + -0x14) = 0x4eb2a;\n        (*pcVar2)();\n        if (uStack_e4 != uVar13) {\n          *(uint *)(puVar14 + -8) = (uStack_e4 - uVar13) * 4;\n          *(undefined4 *)(puVar14 + -0xc) = 0;\n          *(uint **)(puVar14 + -0x10) = puVar7 + uVar13;\n          *(undefined4 *)(puVar14 + -0x14) = 0x4eb55;\n          memset(*(void **)(puVar14 + -0x10),*(int *)(puVar14 + -0xc),*(size_t *)(puVar14 + -8));\n        }\n        goto LAB_0004e9ab;\n      }" { (expression_statement "uStack_e4 = uStack_100;" (assignment_expression "uStack_e4 = uStack_100" identifier = identifier) ;) (expression_statement "*(uint *)(puVar14 + -8) = uVar13;" (assignment_expression "*(uint *)(puVar14 + -8) = uVar13" (pointer_expression "*(uint *)(puVar14 + -8)" * (cast_expression "(uint *)(puVar14 + -8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar14 + -8)" ( (binary_expression "puVar14 + -8" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(puVar14 + -0xc) = iStack_dc;" (assignment_expression "*(int *)(puVar14 + -0xc) = iStack_dc" (pointer_expression "*(int *)(puVar14 + -0xc)" * (cast_expression "(int *)(puVar14 + -0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar14 + -0xc)" ( (binary_expression "puVar14 + -0xc" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(uint **)(puVar14 + -0x10) = puVar7;" (assignment_expression "*(uint **)(puVar14 + -0x10) = puVar7" (pointer_expression "*(uint **)(puVar14 + -0x10)" * (cast_expression "(uint **)(puVar14 + -0x10)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar14 + -0x10)" ( (binary_expression "puVar14 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "pcVar2 = *(code **)(iVar10 + 0x28);" (assignment_expression "pcVar2 = *(code **)(iVar10 + 0x28)" identifier = (pointer_expression "*(code **)(iVar10 + 0x28)" * (cast_expression "(code **)(iVar10 + 0x28)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar10 + 0x28)" ( (binary_expression "iVar10 + 0x28" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar14 + -0x14) = 0x4eb2a;" (assignment_expression "*(undefined4 *)(puVar14 + -0x14) = 0x4eb2a" (pointer_expression "*(undefined4 *)(puVar14 + -0x14)" * (cast_expression "(undefined4 *)(puVar14 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar14 + -0x14)" ( (binary_expression "puVar14 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "(*pcVar2)();" (call_expression "(*pcVar2)()" (parenthesized_expression "(*pcVar2)" ( (pointer_expression "*pcVar2" * identifier) )) (argument_list "()" ( ))) ;) (if_statement "if (uStack_e4 != uVar13) {\n          *(uint *)(puVar14 + -8) = (uStack_e4 - uVar13) * 4;\n          *(undefined4 *)(puVar14 + -0xc) = 0;\n          *(uint **)(puVar14 + -0x10) = puVar7 + uVar13;\n          *(undefined4 *)(puVar14 + -0x14) = 0x4eb55;\n          memset(*(void **)(puVar14 + -0x10),*(int *)(puVar14 + -0xc),*(size_t *)(puVar14 + -8));\n        }" if (parenthesized_expression "(uStack_e4 != uVar13)" ( (binary_expression "uStack_e4 != uVar13" identifier != identifier) )) (compound_statement "{\n          *(uint *)(puVar14 + -8) = (uStack_e4 - uVar13) * 4;\n          *(undefined4 *)(puVar14 + -0xc) = 0;\n          *(uint **)(puVar14 + -0x10) = puVar7 + uVar13;\n          *(undefined4 *)(puVar14 + -0x14) = 0x4eb55;\n          memset(*(void **)(puVar14 + -0x10),*(int *)(puVar14 + -0xc),*(size_t *)(puVar14 + -8));\n        }" { (expression_statement "*(uint *)(puVar14 + -8) = (uStack_e4 - uVar13) * 4;" (assignment_expression "*(uint *)(puVar14 + -8) = (uStack_e4 - uVar13) * 4" (pointer_expression "*(uint *)(puVar14 + -8)" * (cast_expression "(uint *)(puVar14 + -8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar14 + -8)" ( (binary_expression "puVar14 + -8" identifier + number_literal) )))) = (binary_expression "(uStack_e4 - uVar13) * 4" (parenthesized_expression "(uStack_e4 - uVar13)" ( (binary_expression "uStack_e4 - uVar13" identifier - identifier) )) * number_literal)) ;) (expression_statement "*(undefined4 *)(puVar14 + -0xc) = 0;" (assignment_expression "*(undefined4 *)(puVar14 + -0xc) = 0" (pointer_expression "*(undefined4 *)(puVar14 + -0xc)" * (cast_expression "(undefined4 *)(puVar14 + -0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar14 + -0xc)" ( (binary_expression "puVar14 + -0xc" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(uint **)(puVar14 + -0x10) = puVar7 + uVar13;" (assignment_expression "*(uint **)(puVar14 + -0x10) = puVar7 + uVar13" (pointer_expression "*(uint **)(puVar14 + -0x10)" * (cast_expression "(uint **)(puVar14 + -0x10)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar14 + -0x10)" ( (binary_expression "puVar14 + -0x10" identifier + number_literal) )))) = (binary_expression "puVar7 + uVar13" identifier + identifier)) ;) (expression_statement "*(undefined4 *)(puVar14 + -0x14) = 0x4eb55;" (assignment_expression "*(undefined4 *)(puVar14 + -0x14) = 0x4eb55" (pointer_expression "*(undefined4 *)(puVar14 + -0x14)" * (cast_expression "(undefined4 *)(puVar14 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar14 + -0x14)" ( (binary_expression "puVar14 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "memset(*(void **)(puVar14 + -0x10),*(int *)(puVar14 + -0xc),*(size_t *)(puVar14 + -8));" (call_expression "memset(*(void **)(puVar14 + -0x10),*(int *)(puVar14 + -0xc),*(size_t *)(puVar14 + -8))" identifier (argument_list "(*(void **)(puVar14 + -0x10),*(int *)(puVar14 + -0xc),*(size_t *)(puVar14 + -8))" ( (pointer_expression "*(void **)(puVar14 + -0x10)" * (cast_expression "(void **)(puVar14 + -0x10)" ( (type_descriptor "void **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar14 + -0x10)" ( (binary_expression "puVar14 + -0x10" identifier + number_literal) )))) , (pointer_expression "*(int *)(puVar14 + -0xc)" * (cast_expression "(int *)(puVar14 + -0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar14 + -0xc)" ( (binary_expression "puVar14 + -0xc" identifier + number_literal) )))) , (pointer_expression "*(size_t *)(puVar14 + -8)" * (cast_expression "(size_t *)(puVar14 + -8)" ( (type_descriptor "size_t *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar14 + -8)" ( (binary_expression "puVar14 + -8" identifier + number_literal) )))) ))) ;) })) (goto_statement "goto LAB_0004e9ab;" goto statement_identifier ;) })) (if_statement "if (*(uint *)(iStack_dc + -4 + uVar13 * 4) >> ((byte)uStack_e4 & 0x1f) == 0) {\n        *(uint *)(puVar14 + -8) = uVar13;\n        *(int *)(puVar14 + -0xc) = iStack_dc;\n        *(uint **)(puVar14 + -0x10) = local_c0;\n        pcVar2 = *(code **)(iVar10 + 0x28);\n        *(undefined4 *)(puVar14 + -0x14) = 0x4ede2;\n        (*pcVar2)();\n        goto LAB_0004e9ab;\n      }" if (parenthesized_expression "(*(uint *)(iStack_dc + -4 + uVar13 * 4) >> ((byte)uStack_e4 & 0x1f) == 0)" ( (binary_expression "*(uint *)(iStack_dc + -4 + uVar13 * 4) >> ((byte)uStack_e4 & 0x1f) == 0" (binary_expression "*(uint *)(iStack_dc + -4 + uVar13 * 4) >> ((byte)uStack_e4 & 0x1f)" (pointer_expression "*(uint *)(iStack_dc + -4 + uVar13 * 4)" * (cast_expression "(uint *)(iStack_dc + -4 + uVar13 * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iStack_dc + -4 + uVar13 * 4)" ( (binary_expression "iStack_dc + -4 + uVar13 * 4" (binary_expression "iStack_dc + -4" identifier + number_literal) + (binary_expression "uVar13 * 4" identifier * number_literal)) )))) >> (parenthesized_expression "((byte)uStack_e4 & 0x1f)" ( (binary_expression "(byte)uStack_e4 & 0x1f" (cast_expression "(byte)uStack_e4" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) ))) == number_literal) )) (compound_statement "{\n        *(uint *)(puVar14 + -8) = uVar13;\n        *(int *)(puVar14 + -0xc) = iStack_dc;\n        *(uint **)(puVar14 + -0x10) = local_c0;\n        pcVar2 = *(code **)(iVar10 + 0x28);\n        *(undefined4 *)(puVar14 + -0x14) = 0x4ede2;\n        (*pcVar2)();\n        goto LAB_0004e9ab;\n      }" { (expression_statement "*(uint *)(puVar14 + -8) = uVar13;" (assignment_expression "*(uint *)(puVar14 + -8) = uVar13" (pointer_expression "*(uint *)(puVar14 + -8)" * (cast_expression "(uint *)(puVar14 + -8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar14 + -8)" ( (binary_expression "puVar14 + -8" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(puVar14 + -0xc) = iStack_dc;" (assignment_expression "*(int *)(puVar14 + -0xc) = iStack_dc" (pointer_expression "*(int *)(puVar14 + -0xc)" * (cast_expression "(int *)(puVar14 + -0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar14 + -0xc)" ( (binary_expression "puVar14 + -0xc" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(uint **)(puVar14 + -0x10) = local_c0;" (assignment_expression "*(uint **)(puVar14 + -0x10) = local_c0" (pointer_expression "*(uint **)(puVar14 + -0x10)" * (cast_expression "(uint **)(puVar14 + -0x10)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar14 + -0x10)" ( (binary_expression "puVar14 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "pcVar2 = *(code **)(iVar10 + 0x28);" (assignment_expression "pcVar2 = *(code **)(iVar10 + 0x28)" identifier = (pointer_expression "*(code **)(iVar10 + 0x28)" * (cast_expression "(code **)(iVar10 + 0x28)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar10 + 0x28)" ( (binary_expression "iVar10 + 0x28" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar14 + -0x14) = 0x4ede2;" (assignment_expression "*(undefined4 *)(puVar14 + -0x14) = 0x4ede2" (pointer_expression "*(undefined4 *)(puVar14 + -0x14)" * (cast_expression "(undefined4 *)(puVar14 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar14 + -0x14)" ( (binary_expression "puVar14 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "(*pcVar2)();" (call_expression "(*pcVar2)()" (parenthesized_expression "(*pcVar2)" ( (pointer_expression "*pcVar2" * identifier) )) (argument_list "()" ( ))) ;) (goto_statement "goto LAB_0004e9ab;" goto statement_identifier ;) })) })) })) (expression_statement "puVar7 = local_c0;" (assignment_expression "puVar7 = local_c0" identifier = identifier) ;) (if_statement "if (uVar11 != 1) {\n    *(uint *)(puVar14 + -8) = uVar5 * 4;\n    *(undefined4 *)(puVar14 + -0xc) = 0xff;\n    *(uint **)(puVar14 + -0x10) = local_c0;\n    *(undefined4 *)(puVar14 + -0x14) = 0x4e98f;\n    memset(*(void **)(puVar14 + -0x10),*(int *)(puVar14 + -0xc),*(size_t *)(puVar14 + -8));\n    puVar7 = local_c0 + uVar5;\n  }" if (parenthesized_expression "(uVar11 != 1)" ( (binary_expression "uVar11 != 1" identifier != number_literal) )) (compound_statement "{\n    *(uint *)(puVar14 + -8) = uVar5 * 4;\n    *(undefined4 *)(puVar14 + -0xc) = 0xff;\n    *(uint **)(puVar14 + -0x10) = local_c0;\n    *(undefined4 *)(puVar14 + -0x14) = 0x4e98f;\n    memset(*(void **)(puVar14 + -0x10),*(int *)(puVar14 + -0xc),*(size_t *)(puVar14 + -8));\n    puVar7 = local_c0 + uVar5;\n  }" { (expression_statement "*(uint *)(puVar14 + -8) = uVar5 * 4;" (assignment_expression "*(uint *)(puVar14 + -8) = uVar5 * 4" (pointer_expression "*(uint *)(puVar14 + -8)" * (cast_expression "(uint *)(puVar14 + -8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar14 + -8)" ( (binary_expression "puVar14 + -8" identifier + number_literal) )))) = (binary_expression "uVar5 * 4" identifier * number_literal)) ;) (expression_statement "*(undefined4 *)(puVar14 + -0xc) = 0xff;" (assignment_expression "*(undefined4 *)(puVar14 + -0xc) = 0xff" (pointer_expression "*(undefined4 *)(puVar14 + -0xc)" * (cast_expression "(undefined4 *)(puVar14 + -0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar14 + -0xc)" ( (binary_expression "puVar14 + -0xc" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(uint **)(puVar14 + -0x10) = local_c0;" (assignment_expression "*(uint **)(puVar14 + -0x10) = local_c0" (pointer_expression "*(uint **)(puVar14 + -0x10)" * (cast_expression "(uint **)(puVar14 + -0x10)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar14 + -0x10)" ( (binary_expression "puVar14 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar14 + -0x14) = 0x4e98f;" (assignment_expression "*(undefined4 *)(puVar14 + -0x14) = 0x4e98f" (pointer_expression "*(undefined4 *)(puVar14 + -0x14)" * (cast_expression "(undefined4 *)(puVar14 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar14 + -0x14)" ( (binary_expression "puVar14 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "memset(*(void **)(puVar14 + -0x10),*(int *)(puVar14 + -0xc),*(size_t *)(puVar14 + -8));" (call_expression "memset(*(void **)(puVar14 + -0x10),*(int *)(puVar14 + -0xc),*(size_t *)(puVar14 + -8))" identifier (argument_list "(*(void **)(puVar14 + -0x10),*(int *)(puVar14 + -0xc),*(size_t *)(puVar14 + -8))" ( (pointer_expression "*(void **)(puVar14 + -0x10)" * (cast_expression "(void **)(puVar14 + -0x10)" ( (type_descriptor "void **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar14 + -0x10)" ( (binary_expression "puVar14 + -0x10" identifier + number_literal) )))) , (pointer_expression "*(int *)(puVar14 + -0xc)" * (cast_expression "(int *)(puVar14 + -0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar14 + -0xc)" ( (binary_expression "puVar14 + -0xc" identifier + number_literal) )))) , (pointer_expression "*(size_t *)(puVar14 + -8)" * (cast_expression "(size_t *)(puVar14 + -8)" ( (type_descriptor "size_t *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar14 + -8)" ( (binary_expression "puVar14 + -8" identifier + number_literal) )))) ))) ;) (expression_statement "puVar7 = local_c0 + uVar5;" (assignment_expression "puVar7 = local_c0 + uVar5" identifier = (binary_expression "local_c0 + uVar5" identifier + identifier)) ;) })) (expression_statement "*puVar7 = 0xffffffff >> ((byte)iStack_118 & 0x1f);" (assignment_expression "*puVar7 = 0xffffffff >> ((byte)iStack_118 & 0x1f)" (pointer_expression "*puVar7" * identifier) = (binary_expression "0xffffffff >> ((byte)iStack_118 & 0x1f)" number_literal >> (parenthesized_expression "((byte)iStack_118 & 0x1f)" ( (binary_expression "(byte)iStack_118 & 0x1f" (cast_expression "(byte)iStack_118" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) )))) ;) (labeled_statement "LAB_0004e9ab:\n  uVar16 = CONCAT44(local_124,local_c0);" statement_identifier : (expression_statement "uVar16 = CONCAT44(local_124,local_c0);" (assignment_expression "uVar16 = CONCAT44(local_124,local_c0)" identifier = (call_expression "CONCAT44(local_124,local_c0)" identifier (argument_list "(local_124,local_c0)" ( identifier , identifier )))) ;)) (expression_statement "iStack_104 = iStack_104 + -1;" (assignment_expression "iStack_104 = iStack_104 + -1" identifier = (binary_expression "iStack_104 + -1" identifier + number_literal)) ;) (expression_statement "*puVar12 = *puVar12 | uStack_f0;" (assignment_expression "*puVar12 = *puVar12 | uStack_f0" (pointer_expression "*puVar12" * identifier) = (binary_expression "*puVar12 | uStack_f0" (pointer_expression "*puVar12" * identifier) | identifier)) ;) (expression_statement "iVar10 = iStack_dc;" (assignment_expression "iVar10 = iStack_dc" identifier = identifier) ;) (if_statement "if (iStack_10c == 0) goto LAB_0004e9ce;" if (parenthesized_expression "(iStack_10c == 0)" ( (binary_expression "iStack_10c == 0" identifier == number_literal) )) (goto_statement "goto LAB_0004e9ce;" goto statement_identifier ;)) (goto_statement "goto LAB_0004e690;" goto statement_identifier ;) (labeled_statement "LAB_0004efbf:\n  if (local_124 == (int *)0x0) {\n    uStack_d8 = 1;\n  }\n  else {\n    uVar5 = uVar11;\n    if (uVar11 == 0) {\nLAB_0004efd7:\n      if ((local_f8 != local_124) && ((int)uVar5 < (int)param_1)) {\n        piVar9 = local_f8 + uVar5;\n        piVar8 = local_124 + uVar5;\n        do {\n          iVar10 = *piVar9;\n          piVar9 = piVar9 + 1;\n          *piVar8 = iVar10;\n          piVar8 = piVar8 + 1;\n        } while ((int *)((int)local_f8 + local_128 + 4) != piVar9);\n      }\n    }\n    else {\n      *(uint *)(puVar14 + -4) = uVar11;\n      *(int *)(puVar14 + -8) = iVar10;\n      *(int **)(puVar14 + -0xc) = local_f8;\n      *(int **)(puVar14 + -0x10) = local_124;\n      *(undefined4 *)(puVar14 + -0x14) = 0x4f0a5;\n      iVar10 = __gmpn_sub_n();\n      if (iVar10 == 0) goto LAB_0004efd7;\n      if (param_1 != uVar11) {\n        local_c0 = (uint *)(uVar11 * 4);\n        uVar5 = uVar11 + 1;\n        iVar10 = local_f8[uVar11];\n        local_124[uVar11] = iVar10 + -1;\n        if (iVar10 == 0) {\n          if ((int)param_1 <= (int)uVar5) goto LAB_0004f017;\n          iVar10 = local_f8[uVar11 + 1];\n          local_124[uVar11 + 1] = iVar10 + -1;\n          uVar5 = uVar11 + 2;\n          while (iVar10 == 0) {\n            if (param_1 == uVar5) goto LAB_0004f017;\n            iVar10 = local_f8[uVar5];\n            local_124[uVar5] = iVar10 + -1;\n            uVar5 = uVar5 + 1;\n          }\n        }\n        goto LAB_0004efd7;\n      }\n    }\nLAB_0004f017:\n    iVar10 = local_124[local_134];\n    uStack_d8 = param_1;\n    while (uVar16 = CONCAT44(local_124,local_c0), iVar10 == 0) {\n      iVar10 = local_124[uStack_d8 - 2];\n      uStack_d8 = uStack_d8 - 1;\n    }\n  }" statement_identifier : (if_statement "if (local_124 == (int *)0x0) {\n    uStack_d8 = 1;\n  }\n  else {\n    uVar5 = uVar11;\n    if (uVar11 == 0) {\nLAB_0004efd7:\n      if ((local_f8 != local_124) && ((int)uVar5 < (int)param_1)) {\n        piVar9 = local_f8 + uVar5;\n        piVar8 = local_124 + uVar5;\n        do {\n          iVar10 = *piVar9;\n          piVar9 = piVar9 + 1;\n          *piVar8 = iVar10;\n          piVar8 = piVar8 + 1;\n        } while ((int *)((int)local_f8 + local_128 + 4) != piVar9);\n      }\n    }\n    else {\n      *(uint *)(puVar14 + -4) = uVar11;\n      *(int *)(puVar14 + -8) = iVar10;\n      *(int **)(puVar14 + -0xc) = local_f8;\n      *(int **)(puVar14 + -0x10) = local_124;\n      *(undefined4 *)(puVar14 + -0x14) = 0x4f0a5;\n      iVar10 = __gmpn_sub_n();\n      if (iVar10 == 0) goto LAB_0004efd7;\n      if (param_1 != uVar11) {\n        local_c0 = (uint *)(uVar11 * 4);\n        uVar5 = uVar11 + 1;\n        iVar10 = local_f8[uVar11];\n        local_124[uVar11] = iVar10 + -1;\n        if (iVar10 == 0) {\n          if ((int)param_1 <= (int)uVar5) goto LAB_0004f017;\n          iVar10 = local_f8[uVar11 + 1];\n          local_124[uVar11 + 1] = iVar10 + -1;\n          uVar5 = uVar11 + 2;\n          while (iVar10 == 0) {\n            if (param_1 == uVar5) goto LAB_0004f017;\n            iVar10 = local_f8[uVar5];\n            local_124[uVar5] = iVar10 + -1;\n            uVar5 = uVar5 + 1;\n          }\n        }\n        goto LAB_0004efd7;\n      }\n    }\nLAB_0004f017:\n    iVar10 = local_124[local_134];\n    uStack_d8 = param_1;\n    while (uVar16 = CONCAT44(local_124,local_c0), iVar10 == 0) {\n      iVar10 = local_124[uStack_d8 - 2];\n      uStack_d8 = uStack_d8 - 1;\n    }\n  }" if (parenthesized_expression "(local_124 == (int *)0x0)" ( (binary_expression "local_124 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    uStack_d8 = 1;\n  }" { (expression_statement "uStack_d8 = 1;" (assignment_expression "uStack_d8 = 1" identifier = number_literal) ;) }) (else_clause "else {\n    uVar5 = uVar11;\n    if (uVar11 == 0) {\nLAB_0004efd7:\n      if ((local_f8 != local_124) && ((int)uVar5 < (int)param_1)) {\n        piVar9 = local_f8 + uVar5;\n        piVar8 = local_124 + uVar5;\n        do {\n          iVar10 = *piVar9;\n          piVar9 = piVar9 + 1;\n          *piVar8 = iVar10;\n          piVar8 = piVar8 + 1;\n        } while ((int *)((int)local_f8 + local_128 + 4) != piVar9);\n      }\n    }\n    else {\n      *(uint *)(puVar14 + -4) = uVar11;\n      *(int *)(puVar14 + -8) = iVar10;\n      *(int **)(puVar14 + -0xc) = local_f8;\n      *(int **)(puVar14 + -0x10) = local_124;\n      *(undefined4 *)(puVar14 + -0x14) = 0x4f0a5;\n      iVar10 = __gmpn_sub_n();\n      if (iVar10 == 0) goto LAB_0004efd7;\n      if (param_1 != uVar11) {\n        local_c0 = (uint *)(uVar11 * 4);\n        uVar5 = uVar11 + 1;\n        iVar10 = local_f8[uVar11];\n        local_124[uVar11] = iVar10 + -1;\n        if (iVar10 == 0) {\n          if ((int)param_1 <= (int)uVar5) goto LAB_0004f017;\n          iVar10 = local_f8[uVar11 + 1];\n          local_124[uVar11 + 1] = iVar10 + -1;\n          uVar5 = uVar11 + 2;\n          while (iVar10 == 0) {\n            if (param_1 == uVar5) goto LAB_0004f017;\n            iVar10 = local_f8[uVar5];\n            local_124[uVar5] = iVar10 + -1;\n            uVar5 = uVar5 + 1;\n          }\n        }\n        goto LAB_0004efd7;\n      }\n    }\nLAB_0004f017:\n    iVar10 = local_124[local_134];\n    uStack_d8 = param_1;\n    while (uVar16 = CONCAT44(local_124,local_c0), iVar10 == 0) {\n      iVar10 = local_124[uStack_d8 - 2];\n      uStack_d8 = uStack_d8 - 1;\n    }\n  }" else (compound_statement "{\n    uVar5 = uVar11;\n    if (uVar11 == 0) {\nLAB_0004efd7:\n      if ((local_f8 != local_124) && ((int)uVar5 < (int)param_1)) {\n        piVar9 = local_f8 + uVar5;\n        piVar8 = local_124 + uVar5;\n        do {\n          iVar10 = *piVar9;\n          piVar9 = piVar9 + 1;\n          *piVar8 = iVar10;\n          piVar8 = piVar8 + 1;\n        } while ((int *)((int)local_f8 + local_128 + 4) != piVar9);\n      }\n    }\n    else {\n      *(uint *)(puVar14 + -4) = uVar11;\n      *(int *)(puVar14 + -8) = iVar10;\n      *(int **)(puVar14 + -0xc) = local_f8;\n      *(int **)(puVar14 + -0x10) = local_124;\n      *(undefined4 *)(puVar14 + -0x14) = 0x4f0a5;\n      iVar10 = __gmpn_sub_n();\n      if (iVar10 == 0) goto LAB_0004efd7;\n      if (param_1 != uVar11) {\n        local_c0 = (uint *)(uVar11 * 4);\n        uVar5 = uVar11 + 1;\n        iVar10 = local_f8[uVar11];\n        local_124[uVar11] = iVar10 + -1;\n        if (iVar10 == 0) {\n          if ((int)param_1 <= (int)uVar5) goto LAB_0004f017;\n          iVar10 = local_f8[uVar11 + 1];\n          local_124[uVar11 + 1] = iVar10 + -1;\n          uVar5 = uVar11 + 2;\n          while (iVar10 == 0) {\n            if (param_1 == uVar5) goto LAB_0004f017;\n            iVar10 = local_f8[uVar5];\n            local_124[uVar5] = iVar10 + -1;\n            uVar5 = uVar5 + 1;\n          }\n        }\n        goto LAB_0004efd7;\n      }\n    }\nLAB_0004f017:\n    iVar10 = local_124[local_134];\n    uStack_d8 = param_1;\n    while (uVar16 = CONCAT44(local_124,local_c0), iVar10 == 0) {\n      iVar10 = local_124[uStack_d8 - 2];\n      uStack_d8 = uStack_d8 - 1;\n    }\n  }" { (expression_statement "uVar5 = uVar11;" (assignment_expression "uVar5 = uVar11" identifier = identifier) ;) (if_statement "if (uVar11 == 0) {\nLAB_0004efd7:\n      if ((local_f8 != local_124) && ((int)uVar5 < (int)param_1)) {\n        piVar9 = local_f8 + uVar5;\n        piVar8 = local_124 + uVar5;\n        do {\n          iVar10 = *piVar9;\n          piVar9 = piVar9 + 1;\n          *piVar8 = iVar10;\n          piVar8 = piVar8 + 1;\n        } while ((int *)((int)local_f8 + local_128 + 4) != piVar9);\n      }\n    }\n    else {\n      *(uint *)(puVar14 + -4) = uVar11;\n      *(int *)(puVar14 + -8) = iVar10;\n      *(int **)(puVar14 + -0xc) = local_f8;\n      *(int **)(puVar14 + -0x10) = local_124;\n      *(undefined4 *)(puVar14 + -0x14) = 0x4f0a5;\n      iVar10 = __gmpn_sub_n();\n      if (iVar10 == 0) goto LAB_0004efd7;\n      if (param_1 != uVar11) {\n        local_c0 = (uint *)(uVar11 * 4);\n        uVar5 = uVar11 + 1;\n        iVar10 = local_f8[uVar11];\n        local_124[uVar11] = iVar10 + -1;\n        if (iVar10 == 0) {\n          if ((int)param_1 <= (int)uVar5) goto LAB_0004f017;\n          iVar10 = local_f8[uVar11 + 1];\n          local_124[uVar11 + 1] = iVar10 + -1;\n          uVar5 = uVar11 + 2;\n          while (iVar10 == 0) {\n            if (param_1 == uVar5) goto LAB_0004f017;\n            iVar10 = local_f8[uVar5];\n            local_124[uVar5] = iVar10 + -1;\n            uVar5 = uVar5 + 1;\n          }\n        }\n        goto LAB_0004efd7;\n      }\n    }" if (parenthesized_expression "(uVar11 == 0)" ( (binary_expression "uVar11 == 0" identifier == number_literal) )) (compound_statement "{\nLAB_0004efd7:\n      if ((local_f8 != local_124) && ((int)uVar5 < (int)param_1)) {\n        piVar9 = local_f8 + uVar5;\n        piVar8 = local_124 + uVar5;\n        do {\n          iVar10 = *piVar9;\n          piVar9 = piVar9 + 1;\n          *piVar8 = iVar10;\n          piVar8 = piVar8 + 1;\n        } while ((int *)((int)local_f8 + local_128 + 4) != piVar9);\n      }\n    }" { (labeled_statement "LAB_0004efd7:\n      if ((local_f8 != local_124) && ((int)uVar5 < (int)param_1)) {\n        piVar9 = local_f8 + uVar5;\n        piVar8 = local_124 + uVar5;\n        do {\n          iVar10 = *piVar9;\n          piVar9 = piVar9 + 1;\n          *piVar8 = iVar10;\n          piVar8 = piVar8 + 1;\n        } while ((int *)((int)local_f8 + local_128 + 4) != piVar9);\n      }" statement_identifier : (if_statement "if ((local_f8 != local_124) && ((int)uVar5 < (int)param_1)) {\n        piVar9 = local_f8 + uVar5;\n        piVar8 = local_124 + uVar5;\n        do {\n          iVar10 = *piVar9;\n          piVar9 = piVar9 + 1;\n          *piVar8 = iVar10;\n          piVar8 = piVar8 + 1;\n        } while ((int *)((int)local_f8 + local_128 + 4) != piVar9);\n      }" if (parenthesized_expression "((local_f8 != local_124) && ((int)uVar5 < (int)param_1))" ( (binary_expression "(local_f8 != local_124) && ((int)uVar5 < (int)param_1)" (parenthesized_expression "(local_f8 != local_124)" ( (binary_expression "local_f8 != local_124" identifier != identifier) )) && (parenthesized_expression "((int)uVar5 < (int)param_1)" ( (binary_expression "(int)uVar5 < (int)param_1" (cast_expression "(int)uVar5" ( (type_descriptor "int" primitive_type) ) identifier) < (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier)) ))) )) (compound_statement "{\n        piVar9 = local_f8 + uVar5;\n        piVar8 = local_124 + uVar5;\n        do {\n          iVar10 = *piVar9;\n          piVar9 = piVar9 + 1;\n          *piVar8 = iVar10;\n          piVar8 = piVar8 + 1;\n        } while ((int *)((int)local_f8 + local_128 + 4) != piVar9);\n      }" { (expression_statement "piVar9 = local_f8 + uVar5;" (assignment_expression "piVar9 = local_f8 + uVar5" identifier = (binary_expression "local_f8 + uVar5" identifier + identifier)) ;) (expression_statement "piVar8 = local_124 + uVar5;" (assignment_expression "piVar8 = local_124 + uVar5" identifier = (binary_expression "local_124 + uVar5" identifier + identifier)) ;) (do_statement "do {\n          iVar10 = *piVar9;\n          piVar9 = piVar9 + 1;\n          *piVar8 = iVar10;\n          piVar8 = piVar8 + 1;\n        } while ((int *)((int)local_f8 + local_128 + 4) != piVar9);" do (compound_statement "{\n          iVar10 = *piVar9;\n          piVar9 = piVar9 + 1;\n          *piVar8 = iVar10;\n          piVar8 = piVar8 + 1;\n        }" { (expression_statement "iVar10 = *piVar9;" (assignment_expression "iVar10 = *piVar9" identifier = (pointer_expression "*piVar9" * identifier)) ;) (expression_statement "piVar9 = piVar9 + 1;" (assignment_expression "piVar9 = piVar9 + 1" identifier = (binary_expression "piVar9 + 1" identifier + number_literal)) ;) (expression_statement "*piVar8 = iVar10;" (assignment_expression "*piVar8 = iVar10" (pointer_expression "*piVar8" * identifier) = identifier) ;) (expression_statement "piVar8 = piVar8 + 1;" (assignment_expression "piVar8 = piVar8 + 1" identifier = (binary_expression "piVar8 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "((int *)((int)local_f8 + local_128 + 4) != piVar9)" ( (binary_expression "(int *)((int)local_f8 + local_128 + 4) != piVar9" (cast_expression "(int *)((int)local_f8 + local_128 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_f8 + local_128 + 4)" ( (binary_expression "(int)local_f8 + local_128 + 4" (binary_expression "(int)local_f8 + local_128" (cast_expression "(int)local_f8" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) + number_literal) ))) != identifier) )) ;) }))) }) (else_clause "else {\n      *(uint *)(puVar14 + -4) = uVar11;\n      *(int *)(puVar14 + -8) = iVar10;\n      *(int **)(puVar14 + -0xc) = local_f8;\n      *(int **)(puVar14 + -0x10) = local_124;\n      *(undefined4 *)(puVar14 + -0x14) = 0x4f0a5;\n      iVar10 = __gmpn_sub_n();\n      if (iVar10 == 0) goto LAB_0004efd7;\n      if (param_1 != uVar11) {\n        local_c0 = (uint *)(uVar11 * 4);\n        uVar5 = uVar11 + 1;\n        iVar10 = local_f8[uVar11];\n        local_124[uVar11] = iVar10 + -1;\n        if (iVar10 == 0) {\n          if ((int)param_1 <= (int)uVar5) goto LAB_0004f017;\n          iVar10 = local_f8[uVar11 + 1];\n          local_124[uVar11 + 1] = iVar10 + -1;\n          uVar5 = uVar11 + 2;\n          while (iVar10 == 0) {\n            if (param_1 == uVar5) goto LAB_0004f017;\n            iVar10 = local_f8[uVar5];\n            local_124[uVar5] = iVar10 + -1;\n            uVar5 = uVar5 + 1;\n          }\n        }\n        goto LAB_0004efd7;\n      }\n    }" else (compound_statement "{\n      *(uint *)(puVar14 + -4) = uVar11;\n      *(int *)(puVar14 + -8) = iVar10;\n      *(int **)(puVar14 + -0xc) = local_f8;\n      *(int **)(puVar14 + -0x10) = local_124;\n      *(undefined4 *)(puVar14 + -0x14) = 0x4f0a5;\n      iVar10 = __gmpn_sub_n();\n      if (iVar10 == 0) goto LAB_0004efd7;\n      if (param_1 != uVar11) {\n        local_c0 = (uint *)(uVar11 * 4);\n        uVar5 = uVar11 + 1;\n        iVar10 = local_f8[uVar11];\n        local_124[uVar11] = iVar10 + -1;\n        if (iVar10 == 0) {\n          if ((int)param_1 <= (int)uVar5) goto LAB_0004f017;\n          iVar10 = local_f8[uVar11 + 1];\n          local_124[uVar11 + 1] = iVar10 + -1;\n          uVar5 = uVar11 + 2;\n          while (iVar10 == 0) {\n            if (param_1 == uVar5) goto LAB_0004f017;\n            iVar10 = local_f8[uVar5];\n            local_124[uVar5] = iVar10 + -1;\n            uVar5 = uVar5 + 1;\n          }\n        }\n        goto LAB_0004efd7;\n      }\n    }" { (expression_statement "*(uint *)(puVar14 + -4) = uVar11;" (assignment_expression "*(uint *)(puVar14 + -4) = uVar11" (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) ;) (expression_statement "*(int *)(puVar14 + -8) = iVar10;" (assignment_expression "*(int *)(puVar14 + -8) = iVar10" (pointer_expression "*(int *)(puVar14 + -8)" * (cast_expression "(int *)(puVar14 + -8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar14 + -8)" ( (binary_expression "puVar14 + -8" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int **)(puVar14 + -0xc) = local_f8;" (assignment_expression "*(int **)(puVar14 + -0xc) = local_f8" (pointer_expression "*(int **)(puVar14 + -0xc)" * (cast_expression "(int **)(puVar14 + -0xc)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar14 + -0xc)" ( (binary_expression "puVar14 + -0xc" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int **)(puVar14 + -0x10) = local_124;" (assignment_expression "*(int **)(puVar14 + -0x10) = local_124" (pointer_expression "*(int **)(puVar14 + -0x10)" * (cast_expression "(int **)(puVar14 + -0x10)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar14 + -0x10)" ( (binary_expression "puVar14 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar14 + -0x14) = 0x4f0a5;" (assignment_expression "*(undefined4 *)(puVar14 + -0x14) = 0x4f0a5" (pointer_expression "*(undefined4 *)(puVar14 + -0x14)" * (cast_expression "(undefined4 *)(puVar14 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar14 + -0x14)" ( (binary_expression "puVar14 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "iVar10 = __gmpn_sub_n();" (assignment_expression "iVar10 = __gmpn_sub_n()" identifier = (call_expression "__gmpn_sub_n()" identifier (argument_list "()" ( )))) ;) (if_statement "if (iVar10 == 0) goto LAB_0004efd7;" if (parenthesized_expression "(iVar10 == 0)" ( (binary_expression "iVar10 == 0" identifier == number_literal) )) (goto_statement "goto LAB_0004efd7;" goto statement_identifier ;)) (if_statement "if (param_1 != uVar11) {\n        local_c0 = (uint *)(uVar11 * 4);\n        uVar5 = uVar11 + 1;\n        iVar10 = local_f8[uVar11];\n        local_124[uVar11] = iVar10 + -1;\n        if (iVar10 == 0) {\n          if ((int)param_1 <= (int)uVar5) goto LAB_0004f017;\n          iVar10 = local_f8[uVar11 + 1];\n          local_124[uVar11 + 1] = iVar10 + -1;\n          uVar5 = uVar11 + 2;\n          while (iVar10 == 0) {\n            if (param_1 == uVar5) goto LAB_0004f017;\n            iVar10 = local_f8[uVar5];\n            local_124[uVar5] = iVar10 + -1;\n            uVar5 = uVar5 + 1;\n          }\n        }\n        goto LAB_0004efd7;\n      }" if (parenthesized_expression "(param_1 != uVar11)" ( (binary_expression "param_1 != uVar11" identifier != identifier) )) (compound_statement "{\n        local_c0 = (uint *)(uVar11 * 4);\n        uVar5 = uVar11 + 1;\n        iVar10 = local_f8[uVar11];\n        local_124[uVar11] = iVar10 + -1;\n        if (iVar10 == 0) {\n          if ((int)param_1 <= (int)uVar5) goto LAB_0004f017;\n          iVar10 = local_f8[uVar11 + 1];\n          local_124[uVar11 + 1] = iVar10 + -1;\n          uVar5 = uVar11 + 2;\n          while (iVar10 == 0) {\n            if (param_1 == uVar5) goto LAB_0004f017;\n            iVar10 = local_f8[uVar5];\n            local_124[uVar5] = iVar10 + -1;\n            uVar5 = uVar5 + 1;\n          }\n        }\n        goto LAB_0004efd7;\n      }" { (expression_statement "local_c0 = (uint *)(uVar11 * 4);" (assignment_expression "local_c0 = (uint *)(uVar11 * 4)" identifier = (cast_expression "(uint *)(uVar11 * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar11 * 4)" ( (binary_expression "uVar11 * 4" identifier * number_literal) )))) ;) (expression_statement "uVar5 = uVar11 + 1;" (assignment_expression "uVar5 = uVar11 + 1" identifier = (binary_expression "uVar11 + 1" identifier + number_literal)) ;) (expression_statement "iVar10 = local_f8[uVar11];" (assignment_expression "iVar10 = local_f8[uVar11]" identifier = (subscript_expression "local_f8[uVar11]" identifier [ identifier ])) ;) (expression_statement "local_124[uVar11] = iVar10 + -1;" (assignment_expression "local_124[uVar11] = iVar10 + -1" (subscript_expression "local_124[uVar11]" identifier [ identifier ]) = (binary_expression "iVar10 + -1" identifier + number_literal)) ;) (if_statement "if (iVar10 == 0) {\n          if ((int)param_1 <= (int)uVar5) goto LAB_0004f017;\n          iVar10 = local_f8[uVar11 + 1];\n          local_124[uVar11 + 1] = iVar10 + -1;\n          uVar5 = uVar11 + 2;\n          while (iVar10 == 0) {\n            if (param_1 == uVar5) goto LAB_0004f017;\n            iVar10 = local_f8[uVar5];\n            local_124[uVar5] = iVar10 + -1;\n            uVar5 = uVar5 + 1;\n          }\n        }" if (parenthesized_expression "(iVar10 == 0)" ( (binary_expression "iVar10 == 0" identifier == number_literal) )) (compound_statement "{\n          if ((int)param_1 <= (int)uVar5) goto LAB_0004f017;\n          iVar10 = local_f8[uVar11 + 1];\n          local_124[uVar11 + 1] = iVar10 + -1;\n          uVar5 = uVar11 + 2;\n          while (iVar10 == 0) {\n            if (param_1 == uVar5) goto LAB_0004f017;\n            iVar10 = local_f8[uVar5];\n            local_124[uVar5] = iVar10 + -1;\n            uVar5 = uVar5 + 1;\n          }\n        }" { (if_statement "if ((int)param_1 <= (int)uVar5) goto LAB_0004f017;" if (parenthesized_expression "((int)param_1 <= (int)uVar5)" ( (binary_expression "(int)param_1 <= (int)uVar5" (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier) <= (cast_expression "(int)uVar5" ( (type_descriptor "int" primitive_type) ) identifier)) )) (goto_statement "goto LAB_0004f017;" goto statement_identifier ;)) (expression_statement "iVar10 = local_f8[uVar11 + 1];" (assignment_expression "iVar10 = local_f8[uVar11 + 1]" identifier = (subscript_expression "local_f8[uVar11 + 1]" identifier [ (binary_expression "uVar11 + 1" identifier + number_literal) ])) ;) (expression_statement "local_124[uVar11 + 1] = iVar10 + -1;" (assignment_expression "local_124[uVar11 + 1] = iVar10 + -1" (subscript_expression "local_124[uVar11 + 1]" identifier [ (binary_expression "uVar11 + 1" identifier + number_literal) ]) = (binary_expression "iVar10 + -1" identifier + number_literal)) ;) (expression_statement "uVar5 = uVar11 + 2;" (assignment_expression "uVar5 = uVar11 + 2" identifier = (binary_expression "uVar11 + 2" identifier + number_literal)) ;) (while_statement "while (iVar10 == 0) {\n            if (param_1 == uVar5) goto LAB_0004f017;\n            iVar10 = local_f8[uVar5];\n            local_124[uVar5] = iVar10 + -1;\n            uVar5 = uVar5 + 1;\n          }" while (parenthesized_expression "(iVar10 == 0)" ( (binary_expression "iVar10 == 0" identifier == number_literal) )) (compound_statement "{\n            if (param_1 == uVar5) goto LAB_0004f017;\n            iVar10 = local_f8[uVar5];\n            local_124[uVar5] = iVar10 + -1;\n            uVar5 = uVar5 + 1;\n          }" { (if_statement "if (param_1 == uVar5) goto LAB_0004f017;" if (parenthesized_expression "(param_1 == uVar5)" ( (binary_expression "param_1 == uVar5" identifier == identifier) )) (goto_statement "goto LAB_0004f017;" goto statement_identifier ;)) (expression_statement "iVar10 = local_f8[uVar5];" (assignment_expression "iVar10 = local_f8[uVar5]" identifier = (subscript_expression "local_f8[uVar5]" identifier [ identifier ])) ;) (expression_statement "local_124[uVar5] = iVar10 + -1;" (assignment_expression "local_124[uVar5] = iVar10 + -1" (subscript_expression "local_124[uVar5]" identifier [ identifier ]) = (binary_expression "iVar10 + -1" identifier + number_literal)) ;) (expression_statement "uVar5 = uVar5 + 1;" (assignment_expression "uVar5 = uVar5 + 1" identifier = (binary_expression "uVar5 + 1" identifier + number_literal)) ;) })) })) (goto_statement "goto LAB_0004efd7;" goto statement_identifier ;) })) }))) (labeled_statement "LAB_0004f017:\n    iVar10 = local_124[local_134];" statement_identifier : (expression_statement "iVar10 = local_124[local_134];" (assignment_expression "iVar10 = local_124[local_134]" identifier = (subscript_expression "local_124[local_134]" identifier [ identifier ])) ;)) (expression_statement "uStack_d8 = param_1;" (assignment_expression "uStack_d8 = param_1" identifier = identifier) ;) (while_statement "while (uVar16 = CONCAT44(local_124,local_c0), iVar10 == 0) {\n      iVar10 = local_124[uStack_d8 - 2];\n      uStack_d8 = uStack_d8 - 1;\n    }" while (parenthesized_expression "(uVar16 = CONCAT44(local_124,local_c0), iVar10 == 0)" ( (comma_expression "uVar16 = CONCAT44(local_124,local_c0), iVar10 == 0" (assignment_expression "uVar16 = CONCAT44(local_124,local_c0)" identifier = (call_expression "CONCAT44(local_124,local_c0)" identifier (argument_list "(local_124,local_c0)" ( identifier , identifier )))) , (binary_expression "iVar10 == 0" identifier == number_literal)) )) (compound_statement "{\n      iVar10 = local_124[uStack_d8 - 2];\n      uStack_d8 = uStack_d8 - 1;\n    }" { (expression_statement "iVar10 = local_124[uStack_d8 - 2];" (assignment_expression "iVar10 = local_124[uStack_d8 - 2]" identifier = (subscript_expression "local_124[uStack_d8 - 2]" identifier [ (binary_expression "uStack_d8 - 2" identifier - number_literal) ])) ;) (expression_statement "uStack_d8 = uStack_d8 - 1;" (assignment_expression "uStack_d8 = uStack_d8 - 1" identifier = (binary_expression "uStack_d8 - 1" identifier - number_literal)) ;) })) })))) (goto_statement "goto LAB_0004e9e0;" goto statement_identifier ;) })))
(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 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 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 IDENT ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE 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 IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE 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 IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ IDENT ])) ;) (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 { (for_statement for ( ; (binary_expression (binary_expression IDENT >> IDENT) == LIT) ; (assignment_expression IDENT = (binary_expression IDENT - LIT)) ) (compound_statement { })) })) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression IDENT ^ LIT) )) + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT * LIT) - IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (expression_statement (assignment_expression (pointer_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 = (binary_expression (pointer_expression * IDENT) + LIT)) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression LIT < (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression IDENT + LIT)) ;) (while_statement while (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ IDENT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ IDENT ]) = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) })) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) }))) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != IDENT) )) && (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < (cast_expression ( (type_descriptor TYPE) ) IDENT)) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression (binary_expression (binary_expression IDENT + IDENT) + LIT) != IDENT) )) ;) })) })) }) (else_clause else (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != IDENT) )) && (parenthesized_expression ( (binary_expression LIT < (cast_expression ( (type_descriptor TYPE) ) IDENT)) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) }) while (parenthesized_expression ( (binary_expression (binary_expression (binary_expression IDENT + IDENT) + LIT) != IDENT) )) ;) })))) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ IDENT ])) ;)) }))) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - (parenthesized_expression ( (binary_expression IDENT == LIT) )))) ;) (goto_statement goto statement_identifier ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ (binary_expression IDENT + LIT) ])) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ (binary_expression (parenthesized_expression ( (binary_expression IDENT - LIT) )) - (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT != LIT) )))) ])) >> (parenthesized_expression ( (binary_expression (binary_expression LIT - (cast_expression ( (type_descriptor TYPE) ) IDENT)) & LIT) ))) | (binary_expression IDENT << (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) & LIT) ))))) ;) }))) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( IDENT )) * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) + (parenthesized_expression ( (binary_expression IDENT >> LIT) ))) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression (binary_expression IDENT * LIT) | IDENT) )) / IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT & LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT >> LIT)) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT / IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression (binary_expression (binary_expression IDENT % IDENT) << LIT) | IDENT) )) / IDENT)) ;) }))) (expression_statement (assignment_expression IDENT = (binary_expression IDENT * IDENT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) + IDENT) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - LIT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (for_statement for ( (assignment_expression IDENT = (binary_expression IDENT >> LIT)) ; (binary_expression IDENT != LIT) ; (assignment_expression IDENT = (binary_expression IDENT >> LIT)) ) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) })) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (do_statement do (compound_statement { (while_statement while (parenthesized_expression ( (comma_expression (assignment_expression IDENT = IDENT) , (binary_expression IDENT < IDENT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + IDENT) >> LIT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ (binary_expression IDENT + LIT) ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (goto_statement goto statement_identifier ;)) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - LIT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ (binary_expression IDENT + LIT) ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != LIT) )) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;)) })) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression (parenthesized_expression ( (binary_expression IDENT | LIT) )) >> (parenthesized_expression ( (binary_expression (binary_expression LIT - (cast_expression ( (type_descriptor TYPE) ) IDENT)) & LIT) )))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT | LIT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (call_expression IDENT (argument_list ( (binary_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) ))))) * (cast_expression ( (type_descriptor TYPE) ) (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression & IDENT) + IDENT) )))))) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + LIT) + IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) + (binary_expression IDENT * LIT)) )) * LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (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 (cast_expression ( (type_descriptor TYPE) ) (pointer_expression & IDENT)) + IDENT)) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (pointer_expression & IDENT) , IDENT )))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }))) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + IDENT) + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (binary_expression IDENT * LIT))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_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) ;) (labeled_statement statement_identifier : (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 *)) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_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 = (binary_expression IDENT + (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 (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 = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( ))) ;) }) (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) )))) = (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 = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( ))) ;) }))) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression (parenthesized_expression ( (binary_expression IDENT + LIT) )) * LIT)) )))) == LIT) ))))) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = 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 *)) ) (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 = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression IDENT + IDENT) )) - (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) + (binary_expression (parenthesized_expression ( (binary_expression IDENT + IDENT) )) * LIT)) )))) == LIT) ))))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT <= (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != IDENT) )) (goto_statement goto statement_identifier ;)) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression (subscript_expression IDENT [ IDENT ]) - (subscript_expression IDENT [ (binary_expression IDENT + LIT) ]))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (subscript_expression IDENT [ (binary_expression IDENT + LIT) ]) - (subscript_expression IDENT [ IDENT ]))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT >> LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_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 *)) ) (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT >> LIT) )) - (parenthesized_expression ( (binary_expression IDENT >> LIT) ))) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT * LIT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT)) ;) (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 + (binary_expression IDENT * LIT)) )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression 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 + (binary_expression IDENT * LIT)) ))))) ;) }) while (parenthesized_expression ( (binary_expression IDENT == IDENT) )) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT <= IDENT) )) (goto_statement goto statement_identifier ;)) })) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression (pointer_expression * IDENT) - LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT == LIT) )) ;) }) while (parenthesized_expression ( BOOL )) ;) })) (expression_statement (assignment_expression IDENT = LIT) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = IDENT) ;)) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == LIT) )) || (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) < LIT) ))) )) (compound_statement { (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (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 = (call_expression IDENT (argument_list ( )))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( 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) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != IDENT) )) (goto_statement goto statement_identifier ;)) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT - LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT )))) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression IDENT * LIT)) ))))) ;) }) while (parenthesized_expression ( (binary_expression IDENT == (subscript_expression IDENT [ IDENT ])) )) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT <= (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ IDENT ]))) )) (goto_statement goto statement_identifier ;)) })) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression (pointer_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 (abstract_pointer_declarator *)) ) IDENT) + LIT) )))) ;) }) while (parenthesized_expression ( (binary_expression IDENT == LIT) )) ;) }) while (parenthesized_expression ( BOOL )) ;) })) (labeled_statement statement_identifier : (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 *)) ) 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 *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT )))) ;) })) (labeled_statement statement_identifier : (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 *)) ) IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (compound_statement { (return_statement return IDENT ;) })) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (pointer_expression & IDENT)) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = IDENT) ;)) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression (subscript_expression IDENT [ IDENT ]) - (subscript_expression IDENT [ (binary_expression IDENT + LIT) ]))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (subscript_expression IDENT [ (binary_expression IDENT + LIT) ]) - (subscript_expression IDENT [ IDENT ]))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT >> LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression 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 (parenthesized_expression ( (binary_expression (binary_expression IDENT - LIT) >> LIT) )) - IDENT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT)) ;) (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 (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 = 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 = (call_expression IDENT (argument_list ( )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != LIT) )) && (parenthesized_expression ( (binary_expression IDENT != IDENT) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression IDENT * LIT)) )))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == LIT) )) && (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))) < (cast_expression ( (type_descriptor TYPE) ) IDENT)) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression (parenthesized_expression ( (binary_expression IDENT + LIT) )) * LIT)) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression IDENT + LIT)) ;) (for_statement for ( ; (parenthesized_expression ( (binary_expression (binary_expression IDENT == LIT) && (parenthesized_expression ( (binary_expression IDENT != IDENT) ))) )) ; (assignment_expression IDENT = (binary_expression IDENT + LIT)) ) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression IDENT * LIT)) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression IDENT * LIT)) )))) = (binary_expression IDENT + LIT)) ;) })) })) })) })) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression (parenthesized_expression ( (binary_expression IDENT + LIT) )) * LIT)) ))))) ;) (while_statement while (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression (parenthesized_expression ( (binary_expression IDENT + 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 = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression IDENT * LIT)) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT & LIT)) ;) (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 (assignment_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 (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 *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( ))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = 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 = 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 *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( )))) ;) (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 + (binary_expression IDENT * LIT)) )))) = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) })) }))) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (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 (cast_expression ( (type_descriptor TYPE) ) IDENT) < (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (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 = (binary_expression IDENT + IDENT)) ;)) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) == LIT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( ))) ;) }) (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) )))) = (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 = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( ))) ;) }))) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression IDENT | (binary_expression (unary_expression ~ (parenthesized_expression ( (binary_expression LIT << (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) & LIT) ))) ))) & (pointer_expression * IDENT)))) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression (parenthesized_expression ( (binary_expression IDENT + LIT) )) * 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 = 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 = (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) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression IDENT * LIT)) )))) = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT != LIT) ))) + IDENT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (cast_expression ( (type_descriptor TYPE) ) IDENT)) )))) ;) (expression_statement (assignment_expression IDENT = (binary_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 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) )))) = LIT) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( ))) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression 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) )))) = 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 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) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression (subscript_expression IDENT [ IDENT ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }))) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT - LIT) >> LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < IDENT) )) (compound_statement { (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 (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 (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (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) )))) , (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 = (binary_expression IDENT - IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT <= (cast_expression ( (type_descriptor TYPE) ) 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 (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression IDENT * LIT)) )))) != LIT) ))) + IDENT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) <= (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != IDENT) )) || (parenthesized_expression ( (binary_expression IDENT == LIT) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = 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 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) )))) = LIT) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( ))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != IDENT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression (parenthesized_expression ( (binary_expression IDENT - 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 * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (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) )))) , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ))) ;) })) (goto_statement goto statement_identifier ;) })) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) + (binary_expression IDENT * LIT)) )))) >> (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) & LIT) ))) == LIT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (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 *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( ))) ;) (goto_statement goto statement_identifier ;) })) })) })) (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) )))) = (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 (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 (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (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) )))) , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) })) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression LIT >> (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) & LIT) )))) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT )))) ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression (pointer_expression * IDENT) | IDENT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;)) (goto_statement goto statement_identifier ;) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != IDENT) )) && (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < (cast_expression ( (type_descriptor TYPE) ) IDENT)) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + IDENT) + LIT) ))) != 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) )))) = 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 *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT != IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT * LIT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ IDENT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ IDENT ]) = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) <= (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ (binary_expression IDENT + LIT) ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ (binary_expression IDENT + LIT) ]) = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (while_statement while (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ IDENT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ IDENT ]) = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) })) })) (goto_statement goto statement_identifier ;) })) }))) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ IDENT ])) ;)) (expression_statement (assignment_expression IDENT = IDENT) ;) (while_statement while (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT )))) , (binary_expression IDENT == LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ (binary_expression IDENT - LIT) ])) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - LIT)) ;) })) })))) (goto_statement goto statement_identifier ;) })))
(function_definition "uint FUN_0004e410(uint param_1,uint param_2,int param_3)\n\n{\n  byte bVar1;\n  code *pcVar2;\n  uint uVar3;\n  int iVar4;\n  uint uVar5;\n  int iVar6;\n  uint *puVar7;\n  int *piVar8;\n  int *piVar9;\n  int *extraout_ECX;\n  int iVar10;\n  uint uVar11;\n  uint *puVar12;\n  uint uVar13;\n  undefined1 *puVar14;\n  int iVar15;\n  int unaff_EDI;\n  int in_GS_OFFSET;\n  ushort in_FPUControlWord;\n  undefined8 uVar16;\n  undefined1 auStack_13c [8];\n  int local_134;\n  uint uStack_130;\n  uint *puStack_12c;\n  int local_128;\n  int *local_124;\n  int iStack_120;\n  uint *puStack_11c;\n  int iStack_118;\n  undefined4 uStack_114;\n  int iStack_110;\n  int iStack_10c;\n  int iStack_108;\n  int iStack_104;\n  uint uStack_100;\n  uint *puStack_fc;\n  int *local_f8;\n  uint uStack_f4;\n  uint uStack_f0;\n  uint uStack_ec;\n  uint uStack_e8;\n  uint uStack_e4;\n  int iStack_e0;\n  int iStack_dc;\n  uint uStack_d8;\n  int iStack_d4;\n  int iStack_d0;\n  int iStack_cc;\n  undefined4 uStack_c8;\n  int local_c4;\n  uint *local_c0;\n  int iStack_bc;\n  ushort uStack_b8;\n  int iStack_a8;\n  uint auStack_a4 [33];\n  int local_20;\n  \n  uVar16 = FUN_00025194();\n  local_124 = (int *)((ulonglong)uVar16 >> 0x20);\n  local_c0 = (uint *)uVar16;\n  local_c4 = unaff_EDI + 0x4fbe7;\n  puVar14 = auStack_13c;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  local_134 = param_1 + 0x3fffffff;\n  uVar11 = extraout_ECX[local_134];\n  local_128 = local_134 * 4;\n  uVar5 = 0x1f;\n  if (uVar11 != 0) {\n    for (; uVar11 >> uVar5 == 0; uVar5 = uVar5 - 1) {\n    }\n  }\n  iVar10 = (uVar5 ^ 0x1f) + 1;\n  uVar5 = param_1 * 0x20 - iVar10;\n  if (uVar5 < param_2) {\n    *local_c0 = 1;\n    if (local_124 == (int *)0x0) {\n      iVar10 = *extraout_ECX + -1;\n    }\n    else {\n      iVar10 = *extraout_ECX;\n      *local_124 = iVar10 + -1;\n      if (iVar10 == 0) {\n        if (1 < (int)param_1) {\n          iVar10 = extraout_ECX[1];\n          local_124[1] = iVar10 + -1;\n          if (iVar10 == 0) {\n            if (param_1 == 2) goto LAB_0004ef98;\n            iVar10 = extraout_ECX[2];\n            uVar11 = 3;\n            local_124[2] = iVar10 + -1;\n            while (iVar10 == 0) {\n              if (param_1 == uVar11) goto LAB_0004ef98;\n              iVar10 = extraout_ECX[uVar11];\n              local_124[uVar11] = iVar10 + -1;\n              uVar11 = uVar11 + 1;\n            }\n          }\n          else {\n            uVar11 = 2;\n          }\n          if ((extraout_ECX != local_124) && ((int)uVar11 < (int)param_1)) {\n            piVar9 = extraout_ECX + uVar11;\n            piVar8 = local_124 + uVar11;\n            do {\n              iVar10 = *piVar9;\n              piVar9 = piVar9 + 1;\n              *piVar8 = iVar10;\n              piVar8 = piVar8 + 1;\n            } while (extraout_ECX + param_1 + 0x40000000 != piVar9);\n          }\n        }\n      }\n      else if ((extraout_ECX != local_124) && (1 < (int)param_1)) {\n        piVar9 = extraout_ECX + 1;\n        piVar8 = local_124;\n        do {\n          piVar8 = piVar8 + 1;\n          iVar10 = *piVar9;\n          piVar9 = piVar9 + 1;\n          *piVar8 = iVar10;\n        } while (extraout_ECX + param_1 + 0x40000000 != piVar9);\n      }\nLAB_0004ef98:\n      iVar10 = local_124[local_134];\n    }\n    uStack_d8 = param_1 - (iVar10 == 0);\n    goto LAB_0004e9ee;\n  }\n  if (iVar10 == 0x20) {\n    uVar11 = extraout_ECX[param_1 + 0x3ffffffe];\n  }\n  else {\n    uVar11 = (uint)extraout_ECX[(param_1 - 1) - (uint)(param_1 != 1)] >>\n             (0x20 - (byte)iVar10 & 0x1f) | uVar11 << ((byte)iVar10 & 0x1f);\n  }\n  uVar11 = (uint)*(byte *)(unaff_EDI + 0x32bc7 + (uVar11 >> 0x18));\n  if (uVar5 < 0x1000000) {\n    uStack_e8 = (uVar5 * 0x100 | uVar11) / param_2;\n    uVar11 = uStack_e8 & 0xff;\n    uStack_e8 = uStack_e8 >> 8;\n  }\n  else {\n    uStack_e8 = uVar5 / param_2;\n    uVar11 = (uVar5 % param_2 << 8 | uVar11) / param_2;\n  }\n  iVar10 = uStack_e8 * param_2;\n  bVar1 = *(byte *)(unaff_EDI + 0x32ac7 + uVar11);\n  uStack_ec = param_2 - 1;\n  uVar11 = 3;\n  for (uVar5 = uStack_ec >> 2; uVar5 != 0; uVar5 = uVar5 >> 1) {\n    uVar11 = uVar11 + 1;\n  }\n  puStack_fc = auStack_a4;\n  iVar15 = 0;\n  auStack_a4[0] = uStack_e8;\n  if (8 < uStack_e8) {\n    iVar4 = 0;\n    do {\n      while (iVar15 = iVar4, uVar11 < uStack_e8) {\n        uStack_e8 = uStack_e8 + uVar11 >> 1;\n        puStack_fc[iVar15 + 1] = uStack_e8;\n        iVar4 = iVar15 + 1;\n        if (uStack_e8 < 9) goto LAB_0004e56d;\n      }\n      uStack_e8 = uStack_e8 - 1;\n      puStack_fc[iVar15 + 1] = uStack_e8;\n      iVar4 = iVar15 + 1;\n    } while (uStack_e8 != 8);\n    uStack_e8 = 8;\nLAB_0004e56d:\n    iVar15 = iVar15 + 1;\n  }\n  iStack_a8 = 0;\n  uStack_f4 = iVar10 - uStack_e8;\n  *local_c0 = (bVar1 | 0x100) >> (8U - (char)uStack_e8 & 0x1f);\n  uStack_c8 = 0;\n  uStack_b8 = in_FPUControlWord | 0xc00;\n  iStack_bc = (int)ROUND((double)param_2 * *(double *)(unaff_EDI + 0x32cc7) *\n                         (double)*(float *)(&UNK_00032ccf + unaff_EDI));\n  iStack_cc = param_1 + 2 + iStack_bc;\n  uVar11 = (param_1 + 1 + iStack_cc * 2) * 4;\n  local_f8 = extraout_ECX;\n  if (uVar11 < 0x7f01) {\n    iStack_120 = -(uVar11 + 0x1b & 0xfffffff0);\n    puVar14 = auStack_13c + iStack_120;\n    iStack_120 = (int)&uStack_130 + iStack_120;\n  }\n  else {\n    iStack_120 = __gmp_tmp_reentrant_alloc(&iStack_a8,uVar11);\n    uVar16 = CONCAT44(local_124,local_c0);\n    puVar14 = auStack_13c;\n  }\n  local_124 = (int *)((ulonglong)uVar16 >> 0x20);\n  iVar10 = iStack_120 + local_128 + 8;\n  iStack_d0 = iVar10 + iStack_cc * 4;\n  iStack_d4 = (int)local_124;\n  if (local_124 == (int *)0x0) {\n    iStack_d4 = iStack_120;\n  }\n  if (iVar15 != 0) {\n    iStack_104 = iVar15 + -1;\n    puStack_fc = auStack_a4;\n    iStack_cc = 1;\n    iStack_e0 = *(int *)(local_c4 + -0x26c);\n    iStack_dc = iVar10;\nLAB_0004e690:\n    local_124 = (int *)((ulonglong)uVar16 >> 0x20);\n    local_c0 = (uint *)uVar16;\n    uStack_e4 = uStack_f4 - uStack_e8 * uStack_ec;\n    iVar10 = param_1 - (uStack_e4 >> 5);\n    piVar9 = local_f8 + (uStack_e4 >> 5);\n    if ((uStack_e4 & 0x1f) == 0) {\n      *(int *)(puVar14 + -8) = iVar10;\n      *(int **)(puVar14 + -0xc) = piVar9;\n      iVar15 = iStack_e0;\n      *(int *)(puVar14 + -0x10) = iStack_d4;\n      pcVar2 = *(code **)(iVar15 + 0x28);\n      *(undefined4 *)(puVar14 + -0x14) = 0x4ed34;\n      (*pcVar2)();\n    }\n    else {\n      *(uint *)(puVar14 + -4) = uStack_e4 & 0x1f;\n      *(int *)(puVar14 + -8) = iVar10;\n      *(int **)(puVar14 + -0xc) = piVar9;\n      iVar15 = iStack_e0;\n      *(int *)(puVar14 + -0x10) = iStack_d4;\n      pcVar2 = *(code **)(iVar15 + 0x80);\n      *(undefined4 *)(puVar14 + -0x14) = 0x4e6dc;\n      (*pcVar2)();\n    }\n    iVar4 = iStack_d4;\n    iVar15 = iStack_dc;\n    uStack_d8 = iVar10 - (uint)(*(int *)(iStack_d4 + (iVar10 + -1) * 4) == 0);\n    do {\n      *(int *)(puVar14 + -0x10) = iVar15;\n      *(uint *)(puVar14 + -0x14) = uStack_ec;\n      *(int *)(puVar14 + -0x18) = iStack_cc;\n      *(uint **)(puVar14 + -0x1c) = local_c0;\n      *(int *)(puVar14 + -0x20) = iStack_d0;\n      *(undefined4 *)(puVar14 + -0x24) = 0x4e727;\n      iVar10 = __gmpn_pow_1();\n      *(int *)(puVar14 + -0x10) = iStack_cc;\n      *(uint **)(puVar14 + -0x14) = local_c0;\n      *(int *)(puVar14 + -0x18) = iVar10;\n      *(int *)(puVar14 + -0x1c) = iStack_d0;\n      *(int *)(puVar14 + -0x20) = iVar15;\n      iStack_dc = iVar10;\n      *(undefined4 *)(puVar14 + -0x24) = 0x4e74f;\n      __gmpn_mul();\n      iVar10 = iStack_d4;\n      uVar11 = uStack_d8;\n      iVar6 = (iStack_cc + iStack_dc) -\n              (uint)(*(int *)(iVar15 + -4 + (iStack_cc + iStack_dc) * 4) == 0);\n      puVar7 = local_c0;\n      if (iVar6 <= (int)uStack_d8) {\n        uVar5 = uStack_d8;\n        if (uStack_d8 != iVar6) goto LAB_0004eb66;\n        do {\n          uVar5 = uVar5 + -1;\n          if ((int)uVar5 < 0) {\n            iStack_108 = iStack_dc;\n            uStack_114 = 0;\n            iStack_10c = iStack_104;\n            uStack_e8 = puStack_fc[iStack_104] - puStack_fc[iStack_104 + 1];\n            iStack_118 = puStack_fc[iStack_104 + 1] - puStack_fc[iStack_104];\n            uStack_f0 = uStack_e8 >> 5;\n            uStack_f4 = iStack_118 + uStack_e4;\n            uVar11 = uStack_e4 - 1;\n            uStack_e4 = uStack_e8 & 0x1f;\n            puVar12 = (uint *)((uVar11 >> 5) - (uStack_f4 >> 5));\n            uStack_100 = uStack_f0 * 4;\n            uVar11 = 0;\n            iStack_110 = (int)puVar12 + 1;\n            uVar5 = uStack_f4 >> 5;\n            puVar7 = (uint *)(iStack_d4 + uStack_f0 * 4);\n            iStack_dc = iVar15;\n            uStack_d8 = uStack_f0;\n            goto LAB_0004e83d;\n          }\n          uVar13 = *(uint *)(iVar4 + uVar5 * 4);\n          uVar3 = *(uint *)(iVar15 + uVar5 * 4);\n        } while (uVar3 == uVar13);\n        if (uVar3 <= uVar13) goto LAB_0004eb66;\n      }\n      do {\n        uVar11 = *puVar7;\n        *puVar7 = *puVar7 - 1;\n        puVar7 = puVar7 + 1;\n      } while (uVar11 == 0);\n    } while( true );\n  }\n  iStack_cc = 1;\nLAB_0004e9ce:\n  piVar9 = local_f8;\n  local_c0 = (uint *)uVar16;\n  if ((param_3 == 0) || (*local_c0 < 2)) {\n    do {\n      local_124 = (int *)((ulonglong)uVar16 >> 0x20);\n      local_c0 = (uint *)uVar16;\n      *(int *)(puVar14 + -0x10) = iStack_d0;\n      *(uint *)(puVar14 + -0x14) = param_2;\n      *(int *)(puVar14 + -0x18) = iStack_cc;\n      *(uint **)(puVar14 + -0x1c) = local_c0;\n      *(int *)(puVar14 + -0x20) = iVar10;\n      *(undefined4 *)(puVar14 + -0x24) = 0x4ea47;\n      uVar11 = __gmpn_pow_1();\n      uVar16 = CONCAT44(local_124,local_c0);\n      if ((int)uVar11 <= (int)param_1) {\n        uVar5 = param_1;\n        if (param_1 != uVar11) goto LAB_0004efbf;\n        do {\n          uVar5 = uVar5 - 1;\n          if ((int)uVar5 < 0) {\n            uStack_d8 = 0;\n            uVar16 = CONCAT44(local_124,local_c0);\n            goto LAB_0004e9e0;\n          }\n          uVar13 = *(uint *)(iVar10 + uVar5 * 4);\n        } while (uVar13 == piVar9[uVar5]);\n        if (uVar13 <= (uint)piVar9[uVar5]) goto LAB_0004efbf;\n      }\n      do {\n        iVar15 = *local_c0;\n        *local_c0 = *local_c0 + -1;\n        local_c0 = (uint *)((int *)local_c0 + 1);\n      } while (iVar15 == 0);\n    } while( true );\n  }\nLAB_0004e9e0:\n  local_124 = (int *)((ulonglong)uVar16 >> 0x20);\n  local_c0 = (uint *)uVar16;\n  if (iStack_a8 != 0) {\n    *(int *)(puVar14 + -0x10) = iStack_a8;\n    *(undefined4 *)(puVar14 + -0x14) = 0x4f1a9;\n    __gmp_tmp_reentrant_free();\n    uVar16 = CONCAT44(local_124,local_c0);\n  }\nLAB_0004e9ee:\n  local_124 = (int *)((ulonglong)uVar16 >> 0x20);\n  local_c0 = (uint *)uVar16;\n  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return uStack_d8;\n  }\n                    \n  *(undefined **)(puVar14 + -4) = &UNK_0004f214;\n  FUN_0007ebe0();\nLAB_0004eb66:\n  iStack_108 = iStack_dc;\n  iStack_10c = iStack_104;\n  uStack_e8 = puStack_fc[iStack_104] - puStack_fc[iStack_104 + 1];\n  iStack_118 = puStack_fc[iStack_104 + 1] - puStack_fc[iStack_104];\n  uStack_f0 = uStack_e8 >> 5;\n  uStack_f4 = iStack_118 + uStack_e4;\n  uVar5 = uStack_f4 >> 5;\n  puStack_11c = (uint *)((uStack_e4 - 1 >> 5) - uVar5);\n  iStack_110 = (int)puStack_11c + 1;\n  uStack_e4 = uVar5;\n  iStack_dc = iVar15;\n  if (iVar6 != 0) {\n    *(int *)(puVar14 + -4) = iVar6;\n    *(int *)(puVar14 + -8) = iStack_dc;\n    *(int *)(puVar14 + -0xc) = iVar10;\n    *(int *)(puVar14 + -0x10) = iVar10;\n    uStack_d8 = iVar6;\n    *(undefined4 *)(puVar14 + -0x14) = 0x4ee32;\n    iVar10 = __gmpn_sub_n();\n    if ((iVar10 != 0) && (uVar11 != uStack_d8)) {\n      piVar9 = (int *)(iStack_d4 + uStack_d8 * 4);\n      iVar10 = *piVar9;\n      *piVar9 = iVar10 + -1;\n      if ((iVar10 == 0) && ((int)(uStack_d8 + 1) < (int)uVar11)) {\n        piVar9 = (int *)(iStack_d4 + (uStack_d8 + 1) * 4);\n        iVar15 = uStack_d8 + 2;\n        iVar10 = *piVar9;\n        *piVar9 = iVar10 + -1;\n        for (; (iVar10 == 0 && (uVar11 != iVar15)); iVar15 = iVar15 + 1) {\n          iVar10 = *(int *)(iStack_d4 + iVar15 * 4);\n          *(int *)(iStack_d4 + iVar15 * 4) = iVar10 + -1;\n        }\n      }\n    }\n  }\n  iVar4 = iStack_d4;\n  iVar15 = iStack_e0;\n  iVar10 = *(int *)(iStack_d4 + (uVar11 + -1) * 4);\n  while (iVar10 == 0) {\n    iVar10 = *(int *)(iStack_d4 + (uVar11 + -2) * 4);\n    uVar11 = uVar11 + -1;\n  }\n  uStack_100 = uStack_f0 * 4;\n  puVar7 = (uint *)(iStack_d4 + uStack_f0 * 4);\n  uStack_d8 = uStack_f0 + uVar11;\n  uVar5 = uStack_e8 & 0x1f;\n  uStack_130 = uStack_e4;\n  puStack_12c = puVar7;\n  if (uVar5 == 0) {\n    uStack_e4 = uVar5;\n    *(uint *)(puVar14 + -8) = uVar11;\n    *(int *)(puVar14 + -0xc) = iStack_d4;\n    *(uint **)(puVar14 + -0x10) = puVar7;\n    pcVar2 = *(code **)(iVar15 + 0x24);\n    *(undefined4 *)(puVar14 + -0x14) = 0x4ed9a;\n    (*pcVar2)();\n  }\n  else {\n    uStack_e4 = uVar5;\n    *(uint *)(puVar14 + -4) = uVar5;\n    *(uint *)(puVar14 + -8) = uVar11;\n    *(int *)(puVar14 + -0xc) = iVar4;\n    iVar10 = iStack_e0;\n    *(uint **)(puVar14 + -0x10) = puVar7;\n    pcVar2 = *(code **)(iVar10 + 0x38);\n    *(undefined4 *)(puVar14 + -0x14) = 0x4ec66;\n    iVar10 = (*pcVar2)();\n    if (iVar10 != 0) {\n      *(int *)(iStack_d4 + uStack_d8 * 4) = iVar10;\n      uStack_d8 = uStack_d8 + 1;\n    }\n  }\n  uVar11 = *puStack_12c;\n  uVar5 = uStack_130;\n  puVar7 = puStack_12c;\n  puVar12 = puStack_11c;\n  if ((int)uStack_f0 < (int)puStack_11c) {\n    uStack_114 = *(undefined4 *)(iStack_d4 + uStack_100 + 4);\n  }\nLAB_0004e83d:\n  piVar9 = local_f8 + uVar5;\n  puStack_11c = puVar7;\n  if ((uStack_f4 & 0x1f) == 0) {\n    *(int *)(puVar14 + -8) = iStack_110;\n    *(int **)(puVar14 + -0xc) = piVar9;\n    *(int *)(puVar14 + -0x10) = iStack_d4;\n    pcVar2 = *(code **)(iStack_e0 + 0x28);\n    *(undefined4 *)(puVar14 + -0x14) = 0x4ed09;\n    (*pcVar2)();\n  }\n  else {\n    *(uint *)(puVar14 + -4) = uStack_f4 & 0x1f;\n    *(int *)(puVar14 + -8) = iStack_110;\n    *(int **)(puVar14 + -0xc) = piVar9;\n    iVar10 = iStack_e0;\n    *(int *)(puVar14 + -0x10) = iStack_d4;\n    pcVar2 = *(code **)(iVar10 + 0x80);\n    *(undefined4 *)(puVar14 + -0x14) = 0x4e875;\n    (*pcVar2)();\n  }\n  iVar15 = iStack_d0;\n  iVar10 = iStack_108;\n  *puStack_11c = uVar11 | ~(-1 << ((byte)uStack_e4 & 0x1f)) & *puStack_11c;\n  if ((int)uStack_f0 < (int)puVar12) {\n    *(undefined4 *)(iStack_d4 + (uStack_f0 + 1) * 4) = uStack_114;\n  }\n  *(uint *)(puVar14 + -4) = param_2;\n  iVar4 = iStack_e0;\n  *(int *)(puVar14 + -8) = iVar10;\n  *(int *)(puVar14 + -0xc) = iVar15;\n  *(int *)(puVar14 + -0x10) = iVar15;\n  pcVar2 = *(code **)(iVar4 + 100);\n  *(undefined4 *)(puVar14 + -0x14) = 0x4e8c9;\n  iVar6 = (*pcVar2)();\n  puVar7 = local_c0;\n  iVar4 = iStack_cc;\n  *(int *)(iVar15 + iVar10 * 4) = iVar6;\n  iVar10 = (uint)(iVar6 != 0) + iVar10;\n  puVar12 = (uint *)(uStack_100 + (int)local_c0);\n  iVar15 = uStack_f0 + iStack_cc;\n  if (uStack_e4 == 0) {\n    *(int *)(puVar14 + -8) = iStack_cc;\n    *(uint **)(puVar14 + -0xc) = local_c0;\n    *(uint **)(puVar14 + -0x10) = puVar12;\n    pcVar2 = *(code **)(iStack_e0 + 0x24);\n    *(undefined4 *)(puVar14 + -0x14) = 0x4ecd9;\n    (*pcVar2)();\nLAB_0004ecdc:\n    iStack_cc = iVar15;\n  }\n  else {\n    *(uint *)(puVar14 + -4) = uStack_e4;\n    *(int *)(puVar14 + -8) = iVar4;\n    *(uint **)(puVar14 + -0xc) = puVar7;\n    *(uint **)(puVar14 + -0x10) = puVar12;\n    pcVar2 = *(code **)(iStack_e0 + 0x38);\n    *(undefined4 *)(puVar14 + -0x14) = 0x4e915;\n    uVar11 = (*pcVar2)();\n    if (uVar11 == 0) goto LAB_0004ecdc;\n    local_c0[iVar15] = uVar11;\n    iStack_cc = iVar15 + 1;\n  }\n  uStack_f0 = *puVar12;\n  uVar5 = uStack_e8 - 1 >> 5;\n  uVar11 = uVar5 + 1;\n  if ((int)uStack_d8 < iVar10) {\n    *(uint *)(puVar14 + -8) = uVar11 * 4;\n    *(undefined4 *)(puVar14 + -0xc) = 0;\n    *(uint **)(puVar14 + -0x10) = local_c0;\n    *(undefined4 *)(puVar14 + -0x14) = 0x4ee04;\n    memset(*(void **)(puVar14 + -0x10),*(int *)(puVar14 + -0xc),*(size_t *)(puVar14 + -8));\n    goto LAB_0004e9ab;\n  }\n  iVar15 = uStack_d8 - iVar10;\n  if (iVar15 <= (int)uVar11) {\n    *(int *)(puVar14 + -0xc) = iStack_120;\n    *(int *)(puVar14 + -0x10) = iVar10;\n    *(int *)(puVar14 + -0x14) = iStack_d0;\n    *(uint *)(puVar14 + -0x18) = uStack_d8;\n    *(int *)(puVar14 + -0x1c) = iStack_d4;\n    *(int *)(puVar14 + -0x20) = iStack_dc;\n    iStack_108 = iVar15;\n    uStack_100 = uVar11;\n    *(undefined4 *)(puVar14 + -0x24) = 0x4ead1;\n    __gmpn_div_q();\n    puVar7 = local_c0;\n    iVar10 = iStack_e0;\n    uVar13 = (uint)(*(int *)(iStack_dc + iStack_108 * 4) != 0) + iStack_108;\n    uVar11 = uStack_100;\n    if ((int)uVar13 <= (int)uStack_100) {\n      if ((uStack_100 != uVar13) || (uStack_e4 == 0)) {\n        uStack_e4 = uStack_100;\n        *(uint *)(puVar14 + -8) = uVar13;\n        *(int *)(puVar14 + -0xc) = iStack_dc;\n        *(uint **)(puVar14 + -0x10) = puVar7;\n        pcVar2 = *(code **)(iVar10 + 0x28);\n        *(undefined4 *)(puVar14 + -0x14) = 0x4eb2a;\n        (*pcVar2)();\n        if (uStack_e4 != uVar13) {\n          *(uint *)(puVar14 + -8) = (uStack_e4 - uVar13) * 4;\n          *(undefined4 *)(puVar14 + -0xc) = 0;\n          *(uint **)(puVar14 + -0x10) = puVar7 + uVar13;\n          *(undefined4 *)(puVar14 + -0x14) = 0x4eb55;\n          memset(*(void **)(puVar14 + -0x10),*(int *)(puVar14 + -0xc),*(size_t *)(puVar14 + -8));\n        }\n        goto LAB_0004e9ab;\n      }\n      if (*(uint *)(iStack_dc + -4 + uVar13 * 4) >> ((byte)uStack_e4 & 0x1f) == 0) {\n        *(uint *)(puVar14 + -8) = uVar13;\n        *(int *)(puVar14 + -0xc) = iStack_dc;\n        *(uint **)(puVar14 + -0x10) = local_c0;\n        pcVar2 = *(code **)(iVar10 + 0x28);\n        *(undefined4 *)(puVar14 + -0x14) = 0x4ede2;\n        (*pcVar2)();\n        goto LAB_0004e9ab;\n      }\n    }\n  }\n  puVar7 = local_c0;\n  if (uVar11 != 1) {\n    *(uint *)(puVar14 + -8) = uVar5 * 4;\n    *(undefined4 *)(puVar14 + -0xc) = 0xff;\n    *(uint **)(puVar14 + -0x10) = local_c0;\n    *(undefined4 *)(puVar14 + -0x14) = 0x4e98f;\n    memset(*(void **)(puVar14 + -0x10),*(int *)(puVar14 + -0xc),*(size_t *)(puVar14 + -8));\n    puVar7 = local_c0 + uVar5;\n  }\n  *puVar7 = 0xffffffff >> ((byte)iStack_118 & 0x1f);\nLAB_0004e9ab:\n  uVar16 = CONCAT44(local_124,local_c0);\n  iStack_104 = iStack_104 + -1;\n  *puVar12 = *puVar12 | uStack_f0;\n  iVar10 = iStack_dc;\n  if (iStack_10c == 0) goto LAB_0004e9ce;\n  goto LAB_0004e690;\nLAB_0004efbf:\n  if (local_124 == (int *)0x0) {\n    uStack_d8 = 1;\n  }\n  else {\n    uVar5 = uVar11;\n    if (uVar11 == 0) {\nLAB_0004efd7:\n      if ((local_f8 != local_124) && ((int)uVar5 < (int)param_1)) {\n        piVar9 = local_f8 + uVar5;\n        piVar8 = local_124 + uVar5;\n        do {\n          iVar10 = *piVar9;\n          piVar9 = piVar9 + 1;\n          *piVar8 = iVar10;\n          piVar8 = piVar8 + 1;\n        } while ((int *)((int)local_f8 + local_128 + 4) != piVar9);\n      }\n    }\n    else {\n      *(uint *)(puVar14 + -4) = uVar11;\n      *(int *)(puVar14 + -8) = iVar10;\n      *(int **)(puVar14 + -0xc) = local_f8;\n      *(int **)(puVar14 + -0x10) = local_124;\n      *(undefined4 *)(puVar14 + -0x14) = 0x4f0a5;\n      iVar10 = __gmpn_sub_n();\n      if (iVar10 == 0) goto LAB_0004efd7;\n      if (param_1 != uVar11) {\n        local_c0 = (uint *)(uVar11 * 4);\n        uVar5 = uVar11 + 1;\n        iVar10 = local_f8[uVar11];\n        local_124[uVar11] = iVar10 + -1;\n        if (iVar10 == 0) {\n          if ((int)param_1 <= (int)uVar5) goto LAB_0004f017;\n          iVar10 = local_f8[uVar11 + 1];\n          local_124[uVar11 + 1] = iVar10 + -1;\n          uVar5 = uVar11 + 2;\n          while (iVar10 == 0) {\n            if (param_1 == uVar5) goto LAB_0004f017;\n            iVar10 = local_f8[uVar5];\n            local_124[uVar5] = iVar10 + -1;\n            uVar5 = uVar5 + 1;\n          }\n        }\n        goto LAB_0004efd7;\n      }\n    }\nLAB_0004f017:\n    iVar10 = local_124[local_134];\n    uStack_d8 = param_1;\n    while (uVar16 = CONCAT44(local_124,local_c0), iVar10 == 0) {\n      iVar10 = local_124[uStack_d8 - 2];\n      uStack_d8 = uStack_d8 - 1;\n    }\n  }\n  goto LAB_0004e9e0;\n}" (type_identifier "uint") (function_declarator "FUN_0004e410(uint param_1,uint param_2,int param_3)" (identifier "FUN_0004e410") (parameter_list "(uint param_1,uint param_2,int param_3)" (( "(") (parameter_declaration "uint param_1" (type_identifier "uint") (identifier "param_1")) (, ",") (parameter_declaration "uint param_2" (type_identifier "uint") (identifier "param_2")) (, ",") (parameter_declaration "int param_3" (primitive_type "int") (identifier "param_3")) () ")"))) (compound_statement "{\n  byte bVar1;\n  code *pcVar2;\n  uint uVar3;\n  int iVar4;\n  uint uVar5;\n  int iVar6;\n  uint *puVar7;\n  int *piVar8;\n  int *piVar9;\n  int *extraout_ECX;\n  int iVar10;\n  uint uVar11;\n  uint *puVar12;\n  uint uVar13;\n  undefined1 *puVar14;\n  int iVar15;\n  int unaff_EDI;\n  int in_GS_OFFSET;\n  ushort in_FPUControlWord;\n  undefined8 uVar16;\n  undefined1 auStack_13c [8];\n  int local_134;\n  uint uStack_130;\n  uint *puStack_12c;\n  int local_128;\n  int *local_124;\n  int iStack_120;\n  uint *puStack_11c;\n  int iStack_118;\n  undefined4 uStack_114;\n  int iStack_110;\n  int iStack_10c;\n  int iStack_108;\n  int iStack_104;\n  uint uStack_100;\n  uint *puStack_fc;\n  int *local_f8;\n  uint uStack_f4;\n  uint uStack_f0;\n  uint uStack_ec;\n  uint uStack_e8;\n  uint uStack_e4;\n  int iStack_e0;\n  int iStack_dc;\n  uint uStack_d8;\n  int iStack_d4;\n  int iStack_d0;\n  int iStack_cc;\n  undefined4 uStack_c8;\n  int local_c4;\n  uint *local_c0;\n  int iStack_bc;\n  ushort uStack_b8;\n  int iStack_a8;\n  uint auStack_a4 [33];\n  int local_20;\n  \n  uVar16 = FUN_00025194();\n  local_124 = (int *)((ulonglong)uVar16 >> 0x20);\n  local_c0 = (uint *)uVar16;\n  local_c4 = unaff_EDI + 0x4fbe7;\n  puVar14 = auStack_13c;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  local_134 = param_1 + 0x3fffffff;\n  uVar11 = extraout_ECX[local_134];\n  local_128 = local_134 * 4;\n  uVar5 = 0x1f;\n  if (uVar11 != 0) {\n    for (; uVar11 >> uVar5 == 0; uVar5 = uVar5 - 1) {\n    }\n  }\n  iVar10 = (uVar5 ^ 0x1f) + 1;\n  uVar5 = param_1 * 0x20 - iVar10;\n  if (uVar5 < param_2) {\n    *local_c0 = 1;\n    if (local_124 == (int *)0x0) {\n      iVar10 = *extraout_ECX + -1;\n    }\n    else {\n      iVar10 = *extraout_ECX;\n      *local_124 = iVar10 + -1;\n      if (iVar10 == 0) {\n        if (1 < (int)param_1) {\n          iVar10 = extraout_ECX[1];\n          local_124[1] = iVar10 + -1;\n          if (iVar10 == 0) {\n            if (param_1 == 2) goto LAB_0004ef98;\n            iVar10 = extraout_ECX[2];\n            uVar11 = 3;\n            local_124[2] = iVar10 + -1;\n            while (iVar10 == 0) {\n              if (param_1 == uVar11) goto LAB_0004ef98;\n              iVar10 = extraout_ECX[uVar11];\n              local_124[uVar11] = iVar10 + -1;\n              uVar11 = uVar11 + 1;\n            }\n          }\n          else {\n            uVar11 = 2;\n          }\n          if ((extraout_ECX != local_124) && ((int)uVar11 < (int)param_1)) {\n            piVar9 = extraout_ECX + uVar11;\n            piVar8 = local_124 + uVar11;\n            do {\n              iVar10 = *piVar9;\n              piVar9 = piVar9 + 1;\n              *piVar8 = iVar10;\n              piVar8 = piVar8 + 1;\n            } while (extraout_ECX + param_1 + 0x40000000 != piVar9);\n          }\n        }\n      }\n      else if ((extraout_ECX != local_124) && (1 < (int)param_1)) {\n        piVar9 = extraout_ECX + 1;\n        piVar8 = local_124;\n        do {\n          piVar8 = piVar8 + 1;\n          iVar10 = *piVar9;\n          piVar9 = piVar9 + 1;\n          *piVar8 = iVar10;\n        } while (extraout_ECX + param_1 + 0x40000000 != piVar9);\n      }\nLAB_0004ef98:\n      iVar10 = local_124[local_134];\n    }\n    uStack_d8 = param_1 - (iVar10 == 0);\n    goto LAB_0004e9ee;\n  }\n  if (iVar10 == 0x20) {\n    uVar11 = extraout_ECX[param_1 + 0x3ffffffe];\n  }\n  else {\n    uVar11 = (uint)extraout_ECX[(param_1 - 1) - (uint)(param_1 != 1)] >>\n             (0x20 - (byte)iVar10 & 0x1f) | uVar11 << ((byte)iVar10 & 0x1f);\n  }\n  uVar11 = (uint)*(byte *)(unaff_EDI + 0x32bc7 + (uVar11 >> 0x18));\n  if (uVar5 < 0x1000000) {\n    uStack_e8 = (uVar5 * 0x100 | uVar11) / param_2;\n    uVar11 = uStack_e8 & 0xff;\n    uStack_e8 = uStack_e8 >> 8;\n  }\n  else {\n    uStack_e8 = uVar5 / param_2;\n    uVar11 = (uVar5 % param_2 << 8 | uVar11) / param_2;\n  }\n  iVar10 = uStack_e8 * param_2;\n  bVar1 = *(byte *)(unaff_EDI + 0x32ac7 + uVar11);\n  uStack_ec = param_2 - 1;\n  uVar11 = 3;\n  for (uVar5 = uStack_ec >> 2; uVar5 != 0; uVar5 = uVar5 >> 1) {\n    uVar11 = uVar11 + 1;\n  }\n  puStack_fc = auStack_a4;\n  iVar15 = 0;\n  auStack_a4[0] = uStack_e8;\n  if (8 < uStack_e8) {\n    iVar4 = 0;\n    do {\n      while (iVar15 = iVar4, uVar11 < uStack_e8) {\n        uStack_e8 = uStack_e8 + uVar11 >> 1;\n        puStack_fc[iVar15 + 1] = uStack_e8;\n        iVar4 = iVar15 + 1;\n        if (uStack_e8 < 9) goto LAB_0004e56d;\n      }\n      uStack_e8 = uStack_e8 - 1;\n      puStack_fc[iVar15 + 1] = uStack_e8;\n      iVar4 = iVar15 + 1;\n    } while (uStack_e8 != 8);\n    uStack_e8 = 8;\nLAB_0004e56d:\n    iVar15 = iVar15 + 1;\n  }\n  iStack_a8 = 0;\n  uStack_f4 = iVar10 - uStack_e8;\n  *local_c0 = (bVar1 | 0x100) >> (8U - (char)uStack_e8 & 0x1f);\n  uStack_c8 = 0;\n  uStack_b8 = in_FPUControlWord | 0xc00;\n  iStack_bc = (int)ROUND((double)param_2 * *(double *)(unaff_EDI + 0x32cc7) *\n                         (double)*(float *)(&UNK_00032ccf + unaff_EDI));\n  iStack_cc = param_1 + 2 + iStack_bc;\n  uVar11 = (param_1 + 1 + iStack_cc * 2) * 4;\n  local_f8 = extraout_ECX;\n  if (uVar11 < 0x7f01) {\n    iStack_120 = -(uVar11 + 0x1b & 0xfffffff0);\n    puVar14 = auStack_13c + iStack_120;\n    iStack_120 = (int)&uStack_130 + iStack_120;\n  }\n  else {\n    iStack_120 = __gmp_tmp_reentrant_alloc(&iStack_a8,uVar11);\n    uVar16 = CONCAT44(local_124,local_c0);\n    puVar14 = auStack_13c;\n  }\n  local_124 = (int *)((ulonglong)uVar16 >> 0x20);\n  iVar10 = iStack_120 + local_128 + 8;\n  iStack_d0 = iVar10 + iStack_cc * 4;\n  iStack_d4 = (int)local_124;\n  if (local_124 == (int *)0x0) {\n    iStack_d4 = iStack_120;\n  }\n  if (iVar15 != 0) {\n    iStack_104 = iVar15 + -1;\n    puStack_fc = auStack_a4;\n    iStack_cc = 1;\n    iStack_e0 = *(int *)(local_c4 + -0x26c);\n    iStack_dc = iVar10;\nLAB_0004e690:\n    local_124 = (int *)((ulonglong)uVar16 >> 0x20);\n    local_c0 = (uint *)uVar16;\n    uStack_e4 = uStack_f4 - uStack_e8 * uStack_ec;\n    iVar10 = param_1 - (uStack_e4 >> 5);\n    piVar9 = local_f8 + (uStack_e4 >> 5);\n    if ((uStack_e4 & 0x1f) == 0) {\n      *(int *)(puVar14 + -8) = iVar10;\n      *(int **)(puVar14 + -0xc) = piVar9;\n      iVar15 = iStack_e0;\n      *(int *)(puVar14 + -0x10) = iStack_d4;\n      pcVar2 = *(code **)(iVar15 + 0x28);\n      *(undefined4 *)(puVar14 + -0x14) = 0x4ed34;\n      (*pcVar2)();\n    }\n    else {\n      *(uint *)(puVar14 + -4) = uStack_e4 & 0x1f;\n      *(int *)(puVar14 + -8) = iVar10;\n      *(int **)(puVar14 + -0xc) = piVar9;\n      iVar15 = iStack_e0;\n      *(int *)(puVar14 + -0x10) = iStack_d4;\n      pcVar2 = *(code **)(iVar15 + 0x80);\n      *(undefined4 *)(puVar14 + -0x14) = 0x4e6dc;\n      (*pcVar2)();\n    }\n    iVar4 = iStack_d4;\n    iVar15 = iStack_dc;\n    uStack_d8 = iVar10 - (uint)(*(int *)(iStack_d4 + (iVar10 + -1) * 4) == 0);\n    do {\n      *(int *)(puVar14 + -0x10) = iVar15;\n      *(uint *)(puVar14 + -0x14) = uStack_ec;\n      *(int *)(puVar14 + -0x18) = iStack_cc;\n      *(uint **)(puVar14 + -0x1c) = local_c0;\n      *(int *)(puVar14 + -0x20) = iStack_d0;\n      *(undefined4 *)(puVar14 + -0x24) = 0x4e727;\n      iVar10 = __gmpn_pow_1();\n      *(int *)(puVar14 + -0x10) = iStack_cc;\n      *(uint **)(puVar14 + -0x14) = local_c0;\n      *(int *)(puVar14 + -0x18) = iVar10;\n      *(int *)(puVar14 + -0x1c) = iStack_d0;\n      *(int *)(puVar14 + -0x20) = iVar15;\n      iStack_dc = iVar10;\n      *(undefined4 *)(puVar14 + -0x24) = 0x4e74f;\n      __gmpn_mul();\n      iVar10 = iStack_d4;\n      uVar11 = uStack_d8;\n      iVar6 = (iStack_cc + iStack_dc) -\n              (uint)(*(int *)(iVar15 + -4 + (iStack_cc + iStack_dc) * 4) == 0);\n      puVar7 = local_c0;\n      if (iVar6 <= (int)uStack_d8) {\n        uVar5 = uStack_d8;\n        if (uStack_d8 != iVar6) goto LAB_0004eb66;\n        do {\n          uVar5 = uVar5 + -1;\n          if ((int)uVar5 < 0) {\n            iStack_108 = iStack_dc;\n            uStack_114 = 0;\n            iStack_10c = iStack_104;\n            uStack_e8 = puStack_fc[iStack_104] - puStack_fc[iStack_104 + 1];\n            iStack_118 = puStack_fc[iStack_104 + 1] - puStack_fc[iStack_104];\n            uStack_f0 = uStack_e8 >> 5;\n            uStack_f4 = iStack_118 + uStack_e4;\n            uVar11 = uStack_e4 - 1;\n            uStack_e4 = uStack_e8 & 0x1f;\n            puVar12 = (uint *)((uVar11 >> 5) - (uStack_f4 >> 5));\n            uStack_100 = uStack_f0 * 4;\n            uVar11 = 0;\n            iStack_110 = (int)puVar12 + 1;\n            uVar5 = uStack_f4 >> 5;\n            puVar7 = (uint *)(iStack_d4 + uStack_f0 * 4);\n            iStack_dc = iVar15;\n            uStack_d8 = uStack_f0;\n            goto LAB_0004e83d;\n          }\n          uVar13 = *(uint *)(iVar4 + uVar5 * 4);\n          uVar3 = *(uint *)(iVar15 + uVar5 * 4);\n        } while (uVar3 == uVar13);\n        if (uVar3 <= uVar13) goto LAB_0004eb66;\n      }\n      do {\n        uVar11 = *puVar7;\n        *puVar7 = *puVar7 - 1;\n        puVar7 = puVar7 + 1;\n      } while (uVar11 == 0);\n    } while( true );\n  }\n  iStack_cc = 1;\nLAB_0004e9ce:\n  piVar9 = local_f8;\n  local_c0 = (uint *)uVar16;\n  if ((param_3 == 0) || (*local_c0 < 2)) {\n    do {\n      local_124 = (int *)((ulonglong)uVar16 >> 0x20);\n      local_c0 = (uint *)uVar16;\n      *(int *)(puVar14 + -0x10) = iStack_d0;\n      *(uint *)(puVar14 + -0x14) = param_2;\n      *(int *)(puVar14 + -0x18) = iStack_cc;\n      *(uint **)(puVar14 + -0x1c) = local_c0;\n      *(int *)(puVar14 + -0x20) = iVar10;\n      *(undefined4 *)(puVar14 + -0x24) = 0x4ea47;\n      uVar11 = __gmpn_pow_1();\n      uVar16 = CONCAT44(local_124,local_c0);\n      if ((int)uVar11 <= (int)param_1) {\n        uVar5 = param_1;\n        if (param_1 != uVar11) goto LAB_0004efbf;\n        do {\n          uVar5 = uVar5 - 1;\n          if ((int)uVar5 < 0) {\n            uStack_d8 = 0;\n            uVar16 = CONCAT44(local_124,local_c0);\n            goto LAB_0004e9e0;\n          }\n          uVar13 = *(uint *)(iVar10 + uVar5 * 4);\n        } while (uVar13 == piVar9[uVar5]);\n        if (uVar13 <= (uint)piVar9[uVar5]) goto LAB_0004efbf;\n      }\n      do {\n        iVar15 = *local_c0;\n        *local_c0 = *local_c0 + -1;\n        local_c0 = (uint *)((int *)local_c0 + 1);\n      } while (iVar15 == 0);\n    } while( true );\n  }\nLAB_0004e9e0:\n  local_124 = (int *)((ulonglong)uVar16 >> 0x20);\n  local_c0 = (uint *)uVar16;\n  if (iStack_a8 != 0) {\n    *(int *)(puVar14 + -0x10) = iStack_a8;\n    *(undefined4 *)(puVar14 + -0x14) = 0x4f1a9;\n    __gmp_tmp_reentrant_free();\n    uVar16 = CONCAT44(local_124,local_c0);\n  }\nLAB_0004e9ee:\n  local_124 = (int *)((ulonglong)uVar16 >> 0x20);\n  local_c0 = (uint *)uVar16;\n  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return uStack_d8;\n  }\n                    \n  *(undefined **)(puVar14 + -4) = &UNK_0004f214;\n  FUN_0007ebe0();\nLAB_0004eb66:\n  iStack_108 = iStack_dc;\n  iStack_10c = iStack_104;\n  uStack_e8 = puStack_fc[iStack_104] - puStack_fc[iStack_104 + 1];\n  iStack_118 = puStack_fc[iStack_104 + 1] - puStack_fc[iStack_104];\n  uStack_f0 = uStack_e8 >> 5;\n  uStack_f4 = iStack_118 + uStack_e4;\n  uVar5 = uStack_f4 >> 5;\n  puStack_11c = (uint *)((uStack_e4 - 1 >> 5) - uVar5);\n  iStack_110 = (int)puStack_11c + 1;\n  uStack_e4 = uVar5;\n  iStack_dc = iVar15;\n  if (iVar6 != 0) {\n    *(int *)(puVar14 + -4) = iVar6;\n    *(int *)(puVar14 + -8) = iStack_dc;\n    *(int *)(puVar14 + -0xc) = iVar10;\n    *(int *)(puVar14 + -0x10) = iVar10;\n    uStack_d8 = iVar6;\n    *(undefined4 *)(puVar14 + -0x14) = 0x4ee32;\n    iVar10 = __gmpn_sub_n();\n    if ((iVar10 != 0) && (uVar11 != uStack_d8)) {\n      piVar9 = (int *)(iStack_d4 + uStack_d8 * 4);\n      iVar10 = *piVar9;\n      *piVar9 = iVar10 + -1;\n      if ((iVar10 == 0) && ((int)(uStack_d8 + 1) < (int)uVar11)) {\n        piVar9 = (int *)(iStack_d4 + (uStack_d8 + 1) * 4);\n        iVar15 = uStack_d8 + 2;\n        iVar10 = *piVar9;\n        *piVar9 = iVar10 + -1;\n        for (; (iVar10 == 0 && (uVar11 != iVar15)); iVar15 = iVar15 + 1) {\n          iVar10 = *(int *)(iStack_d4 + iVar15 * 4);\n          *(int *)(iStack_d4 + iVar15 * 4) = iVar10 + -1;\n        }\n      }\n    }\n  }\n  iVar4 = iStack_d4;\n  iVar15 = iStack_e0;\n  iVar10 = *(int *)(iStack_d4 + (uVar11 + -1) * 4);\n  while (iVar10 == 0) {\n    iVar10 = *(int *)(iStack_d4 + (uVar11 + -2) * 4);\n    uVar11 = uVar11 + -1;\n  }\n  uStack_100 = uStack_f0 * 4;\n  puVar7 = (uint *)(iStack_d4 + uStack_f0 * 4);\n  uStack_d8 = uStack_f0 + uVar11;\n  uVar5 = uStack_e8 & 0x1f;\n  uStack_130 = uStack_e4;\n  puStack_12c = puVar7;\n  if (uVar5 == 0) {\n    uStack_e4 = uVar5;\n    *(uint *)(puVar14 + -8) = uVar11;\n    *(int *)(puVar14 + -0xc) = iStack_d4;\n    *(uint **)(puVar14 + -0x10) = puVar7;\n    pcVar2 = *(code **)(iVar15 + 0x24);\n    *(undefined4 *)(puVar14 + -0x14) = 0x4ed9a;\n    (*pcVar2)();\n  }\n  else {\n    uStack_e4 = uVar5;\n    *(uint *)(puVar14 + -4) = uVar5;\n    *(uint *)(puVar14 + -8) = uVar11;\n    *(int *)(puVar14 + -0xc) = iVar4;\n    iVar10 = iStack_e0;\n    *(uint **)(puVar14 + -0x10) = puVar7;\n    pcVar2 = *(code **)(iVar10 + 0x38);\n    *(undefined4 *)(puVar14 + -0x14) = 0x4ec66;\n    iVar10 = (*pcVar2)();\n    if (iVar10 != 0) {\n      *(int *)(iStack_d4 + uStack_d8 * 4) = iVar10;\n      uStack_d8 = uStack_d8 + 1;\n    }\n  }\n  uVar11 = *puStack_12c;\n  uVar5 = uStack_130;\n  puVar7 = puStack_12c;\n  puVar12 = puStack_11c;\n  if ((int)uStack_f0 < (int)puStack_11c) {\n    uStack_114 = *(undefined4 *)(iStack_d4 + uStack_100 + 4);\n  }\nLAB_0004e83d:\n  piVar9 = local_f8 + uVar5;\n  puStack_11c = puVar7;\n  if ((uStack_f4 & 0x1f) == 0) {\n    *(int *)(puVar14 + -8) = iStack_110;\n    *(int **)(puVar14 + -0xc) = piVar9;\n    *(int *)(puVar14 + -0x10) = iStack_d4;\n    pcVar2 = *(code **)(iStack_e0 + 0x28);\n    *(undefined4 *)(puVar14 + -0x14) = 0x4ed09;\n    (*pcVar2)();\n  }\n  else {\n    *(uint *)(puVar14 + -4) = uStack_f4 & 0x1f;\n    *(int *)(puVar14 + -8) = iStack_110;\n    *(int **)(puVar14 + -0xc) = piVar9;\n    iVar10 = iStack_e0;\n    *(int *)(puVar14 + -0x10) = iStack_d4;\n    pcVar2 = *(code **)(iVar10 + 0x80);\n    *(undefined4 *)(puVar14 + -0x14) = 0x4e875;\n    (*pcVar2)();\n  }\n  iVar15 = iStack_d0;\n  iVar10 = iStack_108;\n  *puStack_11c = uVar11 | ~(-1 << ((byte)uStack_e4 & 0x1f)) & *puStack_11c;\n  if ((int)uStack_f0 < (int)puVar12) {\n    *(undefined4 *)(iStack_d4 + (uStack_f0 + 1) * 4) = uStack_114;\n  }\n  *(uint *)(puVar14 + -4) = param_2;\n  iVar4 = iStack_e0;\n  *(int *)(puVar14 + -8) = iVar10;\n  *(int *)(puVar14 + -0xc) = iVar15;\n  *(int *)(puVar14 + -0x10) = iVar15;\n  pcVar2 = *(code **)(iVar4 + 100);\n  *(undefined4 *)(puVar14 + -0x14) = 0x4e8c9;\n  iVar6 = (*pcVar2)();\n  puVar7 = local_c0;\n  iVar4 = iStack_cc;\n  *(int *)(iVar15 + iVar10 * 4) = iVar6;\n  iVar10 = (uint)(iVar6 != 0) + iVar10;\n  puVar12 = (uint *)(uStack_100 + (int)local_c0);\n  iVar15 = uStack_f0 + iStack_cc;\n  if (uStack_e4 == 0) {\n    *(int *)(puVar14 + -8) = iStack_cc;\n    *(uint **)(puVar14 + -0xc) = local_c0;\n    *(uint **)(puVar14 + -0x10) = puVar12;\n    pcVar2 = *(code **)(iStack_e0 + 0x24);\n    *(undefined4 *)(puVar14 + -0x14) = 0x4ecd9;\n    (*pcVar2)();\nLAB_0004ecdc:\n    iStack_cc = iVar15;\n  }\n  else {\n    *(uint *)(puVar14 + -4) = uStack_e4;\n    *(int *)(puVar14 + -8) = iVar4;\n    *(uint **)(puVar14 + -0xc) = puVar7;\n    *(uint **)(puVar14 + -0x10) = puVar12;\n    pcVar2 = *(code **)(iStack_e0 + 0x38);\n    *(undefined4 *)(puVar14 + -0x14) = 0x4e915;\n    uVar11 = (*pcVar2)();\n    if (uVar11 == 0) goto LAB_0004ecdc;\n    local_c0[iVar15] = uVar11;\n    iStack_cc = iVar15 + 1;\n  }\n  uStack_f0 = *puVar12;\n  uVar5 = uStack_e8 - 1 >> 5;\n  uVar11 = uVar5 + 1;\n  if ((int)uStack_d8 < iVar10) {\n    *(uint *)(puVar14 + -8) = uVar11 * 4;\n    *(undefined4 *)(puVar14 + -0xc) = 0;\n    *(uint **)(puVar14 + -0x10) = local_c0;\n    *(undefined4 *)(puVar14 + -0x14) = 0x4ee04;\n    memset(*(void **)(puVar14 + -0x10),*(int *)(puVar14 + -0xc),*(size_t *)(puVar14 + -8));\n    goto LAB_0004e9ab;\n  }\n  iVar15 = uStack_d8 - iVar10;\n  if (iVar15 <= (int)uVar11) {\n    *(int *)(puVar14 + -0xc) = iStack_120;\n    *(int *)(puVar14 + -0x10) = iVar10;\n    *(int *)(puVar14 + -0x14) = iStack_d0;\n    *(uint *)(puVar14 + -0x18) = uStack_d8;\n    *(int *)(puVar14 + -0x1c) = iStack_d4;\n    *(int *)(puVar14 + -0x20) = iStack_dc;\n    iStack_108 = iVar15;\n    uStack_100 = uVar11;\n    *(undefined4 *)(puVar14 + -0x24) = 0x4ead1;\n    __gmpn_div_q();\n    puVar7 = local_c0;\n    iVar10 = iStack_e0;\n    uVar13 = (uint)(*(int *)(iStack_dc + iStack_108 * 4) != 0) + iStack_108;\n    uVar11 = uStack_100;\n    if ((int)uVar13 <= (int)uStack_100) {\n      if ((uStack_100 != uVar13) || (uStack_e4 == 0)) {\n        uStack_e4 = uStack_100;\n        *(uint *)(puVar14 + -8) = uVar13;\n        *(int *)(puVar14 + -0xc) = iStack_dc;\n        *(uint **)(puVar14 + -0x10) = puVar7;\n        pcVar2 = *(code **)(iVar10 + 0x28);\n        *(undefined4 *)(puVar14 + -0x14) = 0x4eb2a;\n        (*pcVar2)();\n        if (uStack_e4 != uVar13) {\n          *(uint *)(puVar14 + -8) = (uStack_e4 - uVar13) * 4;\n          *(undefined4 *)(puVar14 + -0xc) = 0;\n          *(uint **)(puVar14 + -0x10) = puVar7 + uVar13;\n          *(undefined4 *)(puVar14 + -0x14) = 0x4eb55;\n          memset(*(void **)(puVar14 + -0x10),*(int *)(puVar14 + -0xc),*(size_t *)(puVar14 + -8));\n        }\n        goto LAB_0004e9ab;\n      }\n      if (*(uint *)(iStack_dc + -4 + uVar13 * 4) >> ((byte)uStack_e4 & 0x1f) == 0) {\n        *(uint *)(puVar14 + -8) = uVar13;\n        *(int *)(puVar14 + -0xc) = iStack_dc;\n        *(uint **)(puVar14 + -0x10) = local_c0;\n        pcVar2 = *(code **)(iVar10 + 0x28);\n        *(undefined4 *)(puVar14 + -0x14) = 0x4ede2;\n        (*pcVar2)();\n        goto LAB_0004e9ab;\n      }\n    }\n  }\n  puVar7 = local_c0;\n  if (uVar11 != 1) {\n    *(uint *)(puVar14 + -8) = uVar5 * 4;\n    *(undefined4 *)(puVar14 + -0xc) = 0xff;\n    *(uint **)(puVar14 + -0x10) = local_c0;\n    *(undefined4 *)(puVar14 + -0x14) = 0x4e98f;\n    memset(*(void **)(puVar14 + -0x10),*(int *)(puVar14 + -0xc),*(size_t *)(puVar14 + -8));\n    puVar7 = local_c0 + uVar5;\n  }\n  *puVar7 = 0xffffffff >> ((byte)iStack_118 & 0x1f);\nLAB_0004e9ab:\n  uVar16 = CONCAT44(local_124,local_c0);\n  iStack_104 = iStack_104 + -1;\n  *puVar12 = *puVar12 | uStack_f0;\n  iVar10 = iStack_dc;\n  if (iStack_10c == 0) goto LAB_0004e9ce;\n  goto LAB_0004e690;\nLAB_0004efbf:\n  if (local_124 == (int *)0x0) {\n    uStack_d8 = 1;\n  }\n  else {\n    uVar5 = uVar11;\n    if (uVar11 == 0) {\nLAB_0004efd7:\n      if ((local_f8 != local_124) && ((int)uVar5 < (int)param_1)) {\n        piVar9 = local_f8 + uVar5;\n        piVar8 = local_124 + uVar5;\n        do {\n          iVar10 = *piVar9;\n          piVar9 = piVar9 + 1;\n          *piVar8 = iVar10;\n          piVar8 = piVar8 + 1;\n        } while ((int *)((int)local_f8 + local_128 + 4) != piVar9);\n      }\n    }\n    else {\n      *(uint *)(puVar14 + -4) = uVar11;\n      *(int *)(puVar14 + -8) = iVar10;\n      *(int **)(puVar14 + -0xc) = local_f8;\n      *(int **)(puVar14 + -0x10) = local_124;\n      *(undefined4 *)(puVar14 + -0x14) = 0x4f0a5;\n      iVar10 = __gmpn_sub_n();\n      if (iVar10 == 0) goto LAB_0004efd7;\n      if (param_1 != uVar11) {\n        local_c0 = (uint *)(uVar11 * 4);\n        uVar5 = uVar11 + 1;\n        iVar10 = local_f8[uVar11];\n        local_124[uVar11] = iVar10 + -1;\n        if (iVar10 == 0) {\n          if ((int)param_1 <= (int)uVar5) goto LAB_0004f017;\n          iVar10 = local_f8[uVar11 + 1];\n          local_124[uVar11 + 1] = iVar10 + -1;\n          uVar5 = uVar11 + 2;\n          while (iVar10 == 0) {\n            if (param_1 == uVar5) goto LAB_0004f017;\n            iVar10 = local_f8[uVar5];\n            local_124[uVar5] = iVar10 + -1;\n            uVar5 = uVar5 + 1;\n          }\n        }\n        goto LAB_0004efd7;\n      }\n    }\nLAB_0004f017:\n    iVar10 = local_124[local_134];\n    uStack_d8 = param_1;\n    while (uVar16 = CONCAT44(local_124,local_c0), iVar10 == 0) {\n      iVar10 = local_124[uStack_d8 - 2];\n      uStack_d8 = uStack_d8 - 1;\n    }\n  }\n  goto LAB_0004e9e0;\n}" ({ "{") (declaration "byte bVar1;" (type_identifier "byte") (identifier "bVar1") (; ";")) (declaration "code *pcVar2;" (type_identifier "code") (pointer_declarator "*pcVar2" (* "*") (identifier "pcVar2")) (; ";")) (declaration "uint uVar3;" (type_identifier "uint") (identifier "uVar3") (; ";")) (declaration "int iVar4;" (primitive_type "int") (identifier "iVar4") (; ";")) (declaration "uint uVar5;" (type_identifier "uint") (identifier "uVar5") (; ";")) (declaration "int iVar6;" (primitive_type "int") (identifier "iVar6") (; ";")) (declaration "uint *puVar7;" (type_identifier "uint") (pointer_declarator "*puVar7" (* "*") (identifier "puVar7")) (; ";")) (declaration "int *piVar8;" (primitive_type "int") (pointer_declarator "*piVar8" (* "*") (identifier "piVar8")) (; ";")) (declaration "int *piVar9;" (primitive_type "int") (pointer_declarator "*piVar9" (* "*") (identifier "piVar9")) (; ";")) (declaration "int *extraout_ECX;" (primitive_type "int") (pointer_declarator "*extraout_ECX" (* "*") (identifier "extraout_ECX")) (; ";")) (declaration "int iVar10;" (primitive_type "int") (identifier "iVar10") (; ";")) (declaration "uint uVar11;" (type_identifier "uint") (identifier "uVar11") (; ";")) (declaration "uint *puVar12;" (type_identifier "uint") (pointer_declarator "*puVar12" (* "*") (identifier "puVar12")) (; ";")) (declaration "uint uVar13;" (type_identifier "uint") (identifier "uVar13") (; ";")) (declaration "undefined1 *puVar14;" (type_identifier "undefined1") (pointer_declarator "*puVar14" (* "*") (identifier "puVar14")) (; ";")) (declaration "int iVar15;" (primitive_type "int") (identifier "iVar15") (; ";")) (declaration "int unaff_EDI;" (primitive_type "int") (identifier "unaff_EDI") (; ";")) (declaration "int in_GS_OFFSET;" (primitive_type "int") (identifier "in_GS_OFFSET") (; ";")) (declaration "ushort in_FPUControlWord;" (type_identifier "ushort") (identifier "in_FPUControlWord") (; ";")) (declaration "undefined8 uVar16;" (type_identifier "undefined8") (identifier "uVar16") (; ";")) (declaration "undefined1 auStack_13c [8];" (type_identifier "undefined1") (array_declarator "auStack_13c [8]" (identifier "auStack_13c") ([ "[") (number_literal "8") (] "]")) (; ";")) (declaration "int local_134;" (primitive_type "int") (identifier "local_134") (; ";")) (declaration "uint uStack_130;" (type_identifier "uint") (identifier "uStack_130") (; ";")) (declaration "uint *puStack_12c;" (type_identifier "uint") (pointer_declarator "*puStack_12c" (* "*") (identifier "puStack_12c")) (; ";")) (declaration "int local_128;" (primitive_type "int") (identifier "local_128") (; ";")) (declaration "int *local_124;" (primitive_type "int") (pointer_declarator "*local_124" (* "*") (identifier "local_124")) (; ";")) (declaration "int iStack_120;" (primitive_type "int") (identifier "iStack_120") (; ";")) (declaration "uint *puStack_11c;" (type_identifier "uint") (pointer_declarator "*puStack_11c" (* "*") (identifier "puStack_11c")) (; ";")) (declaration "int iStack_118;" (primitive_type "int") (identifier "iStack_118") (; ";")) (declaration "undefined4 uStack_114;" (type_identifier "undefined4") (identifier "uStack_114") (; ";")) (declaration "int iStack_110;" (primitive_type "int") (identifier "iStack_110") (; ";")) (declaration "int iStack_10c;" (primitive_type "int") (identifier "iStack_10c") (; ";")) (declaration "int iStack_108;" (primitive_type "int") (identifier "iStack_108") (; ";")) (declaration "int iStack_104;" (primitive_type "int") (identifier "iStack_104") (; ";")) (declaration "uint uStack_100;" (type_identifier "uint") (identifier "uStack_100") (; ";")) (declaration "uint *puStack_fc;" (type_identifier "uint") (pointer_declarator "*puStack_fc" (* "*") (identifier "puStack_fc")) (; ";")) (declaration "int *local_f8;" (primitive_type "int") (pointer_declarator "*local_f8" (* "*") (identifier "local_f8")) (; ";")) (declaration "uint uStack_f4;" (type_identifier "uint") (identifier "uStack_f4") (; ";")) (declaration "uint uStack_f0;" (type_identifier "uint") (identifier "uStack_f0") (; ";")) (declaration "uint uStack_ec;" (type_identifier "uint") (identifier "uStack_ec") (; ";")) (declaration "uint uStack_e8;" (type_identifier "uint") (identifier "uStack_e8") (; ";")) (declaration "uint uStack_e4;" (type_identifier "uint") (identifier "uStack_e4") (; ";")) (declaration "int iStack_e0;" (primitive_type "int") (identifier "iStack_e0") (; ";")) (declaration "int iStack_dc;" (primitive_type "int") (identifier "iStack_dc") (; ";")) (declaration "uint uStack_d8;" (type_identifier "uint") (identifier "uStack_d8") (; ";")) (declaration "int iStack_d4;" (primitive_type "int") (identifier "iStack_d4") (; ";")) (declaration "int iStack_d0;" (primitive_type "int") (identifier "iStack_d0") (; ";")) (declaration "int iStack_cc;" (primitive_type "int") (identifier "iStack_cc") (; ";")) (declaration "undefined4 uStack_c8;" (type_identifier "undefined4") (identifier "uStack_c8") (; ";")) (declaration "int local_c4;" (primitive_type "int") (identifier "local_c4") (; ";")) (declaration "uint *local_c0;" (type_identifier "uint") (pointer_declarator "*local_c0" (* "*") (identifier "local_c0")) (; ";")) (declaration "int iStack_bc;" (primitive_type "int") (identifier "iStack_bc") (; ";")) (declaration "ushort uStack_b8;" (type_identifier "ushort") (identifier "uStack_b8") (; ";")) (declaration "int iStack_a8;" (primitive_type "int") (identifier "iStack_a8") (; ";")) (declaration "uint auStack_a4 [33];" (type_identifier "uint") (array_declarator "auStack_a4 [33]" (identifier "auStack_a4") ([ "[") (number_literal "33") (] "]")) (; ";")) (declaration "int local_20;" (primitive_type "int") (identifier "local_20") (; ";")) (expression_statement "uVar16 = FUN_00025194();" (assignment_expression "uVar16 = FUN_00025194()" (identifier "uVar16") (= "=") (call_expression "FUN_00025194()" (identifier "FUN_00025194") (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "local_124 = (int *)((ulonglong)uVar16 >> 0x20);" (assignment_expression "local_124 = (int *)((ulonglong)uVar16 >> 0x20)" (identifier "local_124") (= "=") (cast_expression "(int *)((ulonglong)uVar16 >> 0x20)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((ulonglong)uVar16 >> 0x20)" (( "(") (binary_expression "(ulonglong)uVar16 >> 0x20" (cast_expression "(ulonglong)uVar16" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "uVar16")) (>> ">>") (number_literal "0x20")) () ")")))) (; ";")) (expression_statement "local_c0 = (uint *)uVar16;" (assignment_expression "local_c0 = (uint *)uVar16" (identifier "local_c0") (= "=") (cast_expression "(uint *)uVar16" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "uVar16"))) (; ";")) (expression_statement "local_c4 = unaff_EDI + 0x4fbe7;" (assignment_expression "local_c4 = unaff_EDI + 0x4fbe7" (identifier "local_c4") (= "=") (binary_expression "unaff_EDI + 0x4fbe7" (identifier "unaff_EDI") (+ "+") (number_literal "0x4fbe7"))) (; ";")) (expression_statement "puVar14 = auStack_13c;" (assignment_expression "puVar14 = auStack_13c" (identifier "puVar14") (= "=") (identifier "auStack_13c")) (; ";")) (expression_statement "local_20 = *(int *)(in_GS_OFFSET + 0x14);" (assignment_expression "local_20 = *(int *)(in_GS_OFFSET + 0x14)" (identifier "local_20") (= "=") (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" (* "*") (cast_expression "(int *)(in_GS_OFFSET + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(in_GS_OFFSET + 0x14)" (( "(") (binary_expression "in_GS_OFFSET + 0x14" (identifier "in_GS_OFFSET") (+ "+") (number_literal "0x14")) () ")"))))) (; ";")) (expression_statement "local_134 = param_1 + 0x3fffffff;" (assignment_expression "local_134 = param_1 + 0x3fffffff" (identifier "local_134") (= "=") (binary_expression "param_1 + 0x3fffffff" (identifier "param_1") (+ "+") (number_literal "0x3fffffff"))) (; ";")) (expression_statement "uVar11 = extraout_ECX[local_134];" (assignment_expression "uVar11 = extraout_ECX[local_134]" (identifier "uVar11") (= "=") (subscript_expression "extraout_ECX[local_134]" (identifier "extraout_ECX") ([ "[") (identifier "local_134") (] "]"))) (; ";")) (expression_statement "local_128 = local_134 * 4;" (assignment_expression "local_128 = local_134 * 4" (identifier "local_128") (= "=") (binary_expression "local_134 * 4" (identifier "local_134") (* "*") (number_literal "4"))) (; ";")) (expression_statement "uVar5 = 0x1f;" (assignment_expression "uVar5 = 0x1f" (identifier "uVar5") (= "=") (number_literal "0x1f")) (; ";")) (if_statement "if (uVar11 != 0) {\n    for (; uVar11 >> uVar5 == 0; uVar5 = uVar5 - 1) {\n    }\n  }" (if "if") (parenthesized_expression "(uVar11 != 0)" (( "(") (binary_expression "uVar11 != 0" (identifier "uVar11") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    for (; uVar11 >> uVar5 == 0; uVar5 = uVar5 - 1) {\n    }\n  }" ({ "{") (for_statement "for (; uVar11 >> uVar5 == 0; uVar5 = uVar5 - 1) {\n    }" (for "for") (( "(") (; ";") (binary_expression "uVar11 >> uVar5 == 0" (binary_expression "uVar11 >> uVar5" (identifier "uVar11") (>> ">>") (identifier "uVar5")) (== "==") (number_literal "0")) (; ";") (assignment_expression "uVar5 = uVar5 - 1" (identifier "uVar5") (= "=") (binary_expression "uVar5 - 1" (identifier "uVar5") (- "-") (number_literal "1"))) () ")") (compound_statement "{\n    }" ({ "{") (} "}"))) (} "}"))) (expression_statement "iVar10 = (uVar5 ^ 0x1f) + 1;" (assignment_expression "iVar10 = (uVar5 ^ 0x1f) + 1" (identifier "iVar10") (= "=") (binary_expression "(uVar5 ^ 0x1f) + 1" (parenthesized_expression "(uVar5 ^ 0x1f)" (( "(") (binary_expression "uVar5 ^ 0x1f" (identifier "uVar5") (^ "^") (number_literal "0x1f")) () ")")) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "uVar5 = param_1 * 0x20 - iVar10;" (assignment_expression "uVar5 = param_1 * 0x20 - iVar10" (identifier "uVar5") (= "=") (binary_expression "param_1 * 0x20 - iVar10" (binary_expression "param_1 * 0x20" (identifier "param_1") (* "*") (number_literal "0x20")) (- "-") (identifier "iVar10"))) (; ";")) (if_statement "if (uVar5 < param_2) {\n    *local_c0 = 1;\n    if (local_124 == (int *)0x0) {\n      iVar10 = *extraout_ECX + -1;\n    }\n    else {\n      iVar10 = *extraout_ECX;\n      *local_124 = iVar10 + -1;\n      if (iVar10 == 0) {\n        if (1 < (int)param_1) {\n          iVar10 = extraout_ECX[1];\n          local_124[1] = iVar10 + -1;\n          if (iVar10 == 0) {\n            if (param_1 == 2) goto LAB_0004ef98;\n            iVar10 = extraout_ECX[2];\n            uVar11 = 3;\n            local_124[2] = iVar10 + -1;\n            while (iVar10 == 0) {\n              if (param_1 == uVar11) goto LAB_0004ef98;\n              iVar10 = extraout_ECX[uVar11];\n              local_124[uVar11] = iVar10 + -1;\n              uVar11 = uVar11 + 1;\n            }\n          }\n          else {\n            uVar11 = 2;\n          }\n          if ((extraout_ECX != local_124) && ((int)uVar11 < (int)param_1)) {\n            piVar9 = extraout_ECX + uVar11;\n            piVar8 = local_124 + uVar11;\n            do {\n              iVar10 = *piVar9;\n              piVar9 = piVar9 + 1;\n              *piVar8 = iVar10;\n              piVar8 = piVar8 + 1;\n            } while (extraout_ECX + param_1 + 0x40000000 != piVar9);\n          }\n        }\n      }\n      else if ((extraout_ECX != local_124) && (1 < (int)param_1)) {\n        piVar9 = extraout_ECX + 1;\n        piVar8 = local_124;\n        do {\n          piVar8 = piVar8 + 1;\n          iVar10 = *piVar9;\n          piVar9 = piVar9 + 1;\n          *piVar8 = iVar10;\n        } while (extraout_ECX + param_1 + 0x40000000 != piVar9);\n      }\nLAB_0004ef98:\n      iVar10 = local_124[local_134];\n    }\n    uStack_d8 = param_1 - (iVar10 == 0);\n    goto LAB_0004e9ee;\n  }" (if "if") (parenthesized_expression "(uVar5 < param_2)" (( "(") (binary_expression "uVar5 < param_2" (identifier "uVar5") (< "<") (identifier "param_2")) () ")")) (compound_statement "{\n    *local_c0 = 1;\n    if (local_124 == (int *)0x0) {\n      iVar10 = *extraout_ECX + -1;\n    }\n    else {\n      iVar10 = *extraout_ECX;\n      *local_124 = iVar10 + -1;\n      if (iVar10 == 0) {\n        if (1 < (int)param_1) {\n          iVar10 = extraout_ECX[1];\n          local_124[1] = iVar10 + -1;\n          if (iVar10 == 0) {\n            if (param_1 == 2) goto LAB_0004ef98;\n            iVar10 = extraout_ECX[2];\n            uVar11 = 3;\n            local_124[2] = iVar10 + -1;\n            while (iVar10 == 0) {\n              if (param_1 == uVar11) goto LAB_0004ef98;\n              iVar10 = extraout_ECX[uVar11];\n              local_124[uVar11] = iVar10 + -1;\n              uVar11 = uVar11 + 1;\n            }\n          }\n          else {\n            uVar11 = 2;\n          }\n          if ((extraout_ECX != local_124) && ((int)uVar11 < (int)param_1)) {\n            piVar9 = extraout_ECX + uVar11;\n            piVar8 = local_124 + uVar11;\n            do {\n              iVar10 = *piVar9;\n              piVar9 = piVar9 + 1;\n              *piVar8 = iVar10;\n              piVar8 = piVar8 + 1;\n            } while (extraout_ECX + param_1 + 0x40000000 != piVar9);\n          }\n        }\n      }\n      else if ((extraout_ECX != local_124) && (1 < (int)param_1)) {\n        piVar9 = extraout_ECX + 1;\n        piVar8 = local_124;\n        do {\n          piVar8 = piVar8 + 1;\n          iVar10 = *piVar9;\n          piVar9 = piVar9 + 1;\n          *piVar8 = iVar10;\n        } while (extraout_ECX + param_1 + 0x40000000 != piVar9);\n      }\nLAB_0004ef98:\n      iVar10 = local_124[local_134];\n    }\n    uStack_d8 = param_1 - (iVar10 == 0);\n    goto LAB_0004e9ee;\n  }" ({ "{") (expression_statement "*local_c0 = 1;" (assignment_expression "*local_c0 = 1" (pointer_expression "*local_c0" (* "*") (identifier "local_c0")) (= "=") (number_literal "1")) (; ";")) (if_statement "if (local_124 == (int *)0x0) {\n      iVar10 = *extraout_ECX + -1;\n    }\n    else {\n      iVar10 = *extraout_ECX;\n      *local_124 = iVar10 + -1;\n      if (iVar10 == 0) {\n        if (1 < (int)param_1) {\n          iVar10 = extraout_ECX[1];\n          local_124[1] = iVar10 + -1;\n          if (iVar10 == 0) {\n            if (param_1 == 2) goto LAB_0004ef98;\n            iVar10 = extraout_ECX[2];\n            uVar11 = 3;\n            local_124[2] = iVar10 + -1;\n            while (iVar10 == 0) {\n              if (param_1 == uVar11) goto LAB_0004ef98;\n              iVar10 = extraout_ECX[uVar11];\n              local_124[uVar11] = iVar10 + -1;\n              uVar11 = uVar11 + 1;\n            }\n          }\n          else {\n            uVar11 = 2;\n          }\n          if ((extraout_ECX != local_124) && ((int)uVar11 < (int)param_1)) {\n            piVar9 = extraout_ECX + uVar11;\n            piVar8 = local_124 + uVar11;\n            do {\n              iVar10 = *piVar9;\n              piVar9 = piVar9 + 1;\n              *piVar8 = iVar10;\n              piVar8 = piVar8 + 1;\n            } while (extraout_ECX + param_1 + 0x40000000 != piVar9);\n          }\n        }\n      }\n      else if ((extraout_ECX != local_124) && (1 < (int)param_1)) {\n        piVar9 = extraout_ECX + 1;\n        piVar8 = local_124;\n        do {\n          piVar8 = piVar8 + 1;\n          iVar10 = *piVar9;\n          piVar9 = piVar9 + 1;\n          *piVar8 = iVar10;\n        } while (extraout_ECX + param_1 + 0x40000000 != piVar9);\n      }\nLAB_0004ef98:\n      iVar10 = local_124[local_134];\n    }" (if "if") (parenthesized_expression "(local_124 == (int *)0x0)" (( "(") (binary_expression "local_124 == (int *)0x0" (identifier "local_124") (== "==") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n      iVar10 = *extraout_ECX + -1;\n    }" ({ "{") (expression_statement "iVar10 = *extraout_ECX + -1;" (assignment_expression "iVar10 = *extraout_ECX + -1" (identifier "iVar10") (= "=") (binary_expression "*extraout_ECX + -1" (pointer_expression "*extraout_ECX" (* "*") (identifier "extraout_ECX")) (+ "+") (number_literal "-1"))) (; ";")) (} "}")) (else_clause "else {\n      iVar10 = *extraout_ECX;\n      *local_124 = iVar10 + -1;\n      if (iVar10 == 0) {\n        if (1 < (int)param_1) {\n          iVar10 = extraout_ECX[1];\n          local_124[1] = iVar10 + -1;\n          if (iVar10 == 0) {\n            if (param_1 == 2) goto LAB_0004ef98;\n            iVar10 = extraout_ECX[2];\n            uVar11 = 3;\n            local_124[2] = iVar10 + -1;\n            while (iVar10 == 0) {\n              if (param_1 == uVar11) goto LAB_0004ef98;\n              iVar10 = extraout_ECX[uVar11];\n              local_124[uVar11] = iVar10 + -1;\n              uVar11 = uVar11 + 1;\n            }\n          }\n          else {\n            uVar11 = 2;\n          }\n          if ((extraout_ECX != local_124) && ((int)uVar11 < (int)param_1)) {\n            piVar9 = extraout_ECX + uVar11;\n            piVar8 = local_124 + uVar11;\n            do {\n              iVar10 = *piVar9;\n              piVar9 = piVar9 + 1;\n              *piVar8 = iVar10;\n              piVar8 = piVar8 + 1;\n            } while (extraout_ECX + param_1 + 0x40000000 != piVar9);\n          }\n        }\n      }\n      else if ((extraout_ECX != local_124) && (1 < (int)param_1)) {\n        piVar9 = extraout_ECX + 1;\n        piVar8 = local_124;\n        do {\n          piVar8 = piVar8 + 1;\n          iVar10 = *piVar9;\n          piVar9 = piVar9 + 1;\n          *piVar8 = iVar10;\n        } while (extraout_ECX + param_1 + 0x40000000 != piVar9);\n      }\nLAB_0004ef98:\n      iVar10 = local_124[local_134];\n    }" (else "else") (compound_statement "{\n      iVar10 = *extraout_ECX;\n      *local_124 = iVar10 + -1;\n      if (iVar10 == 0) {\n        if (1 < (int)param_1) {\n          iVar10 = extraout_ECX[1];\n          local_124[1] = iVar10 + -1;\n          if (iVar10 == 0) {\n            if (param_1 == 2) goto LAB_0004ef98;\n            iVar10 = extraout_ECX[2];\n            uVar11 = 3;\n            local_124[2] = iVar10 + -1;\n            while (iVar10 == 0) {\n              if (param_1 == uVar11) goto LAB_0004ef98;\n              iVar10 = extraout_ECX[uVar11];\n              local_124[uVar11] = iVar10 + -1;\n              uVar11 = uVar11 + 1;\n            }\n          }\n          else {\n            uVar11 = 2;\n          }\n          if ((extraout_ECX != local_124) && ((int)uVar11 < (int)param_1)) {\n            piVar9 = extraout_ECX + uVar11;\n            piVar8 = local_124 + uVar11;\n            do {\n              iVar10 = *piVar9;\n              piVar9 = piVar9 + 1;\n              *piVar8 = iVar10;\n              piVar8 = piVar8 + 1;\n            } while (extraout_ECX + param_1 + 0x40000000 != piVar9);\n          }\n        }\n      }\n      else if ((extraout_ECX != local_124) && (1 < (int)param_1)) {\n        piVar9 = extraout_ECX + 1;\n        piVar8 = local_124;\n        do {\n          piVar8 = piVar8 + 1;\n          iVar10 = *piVar9;\n          piVar9 = piVar9 + 1;\n          *piVar8 = iVar10;\n        } while (extraout_ECX + param_1 + 0x40000000 != piVar9);\n      }\nLAB_0004ef98:\n      iVar10 = local_124[local_134];\n    }" ({ "{") (expression_statement "iVar10 = *extraout_ECX;" (assignment_expression "iVar10 = *extraout_ECX" (identifier "iVar10") (= "=") (pointer_expression "*extraout_ECX" (* "*") (identifier "extraout_ECX"))) (; ";")) (expression_statement "*local_124 = iVar10 + -1;" (assignment_expression "*local_124 = iVar10 + -1" (pointer_expression "*local_124" (* "*") (identifier "local_124")) (= "=") (binary_expression "iVar10 + -1" (identifier "iVar10") (+ "+") (number_literal "-1"))) (; ";")) (if_statement "if (iVar10 == 0) {\n        if (1 < (int)param_1) {\n          iVar10 = extraout_ECX[1];\n          local_124[1] = iVar10 + -1;\n          if (iVar10 == 0) {\n            if (param_1 == 2) goto LAB_0004ef98;\n            iVar10 = extraout_ECX[2];\n            uVar11 = 3;\n            local_124[2] = iVar10 + -1;\n            while (iVar10 == 0) {\n              if (param_1 == uVar11) goto LAB_0004ef98;\n              iVar10 = extraout_ECX[uVar11];\n              local_124[uVar11] = iVar10 + -1;\n              uVar11 = uVar11 + 1;\n            }\n          }\n          else {\n            uVar11 = 2;\n          }\n          if ((extraout_ECX != local_124) && ((int)uVar11 < (int)param_1)) {\n            piVar9 = extraout_ECX + uVar11;\n            piVar8 = local_124 + uVar11;\n            do {\n              iVar10 = *piVar9;\n              piVar9 = piVar9 + 1;\n              *piVar8 = iVar10;\n              piVar8 = piVar8 + 1;\n            } while (extraout_ECX + param_1 + 0x40000000 != piVar9);\n          }\n        }\n      }\n      else if ((extraout_ECX != local_124) && (1 < (int)param_1)) {\n        piVar9 = extraout_ECX + 1;\n        piVar8 = local_124;\n        do {\n          piVar8 = piVar8 + 1;\n          iVar10 = *piVar9;\n          piVar9 = piVar9 + 1;\n          *piVar8 = iVar10;\n        } while (extraout_ECX + param_1 + 0x40000000 != piVar9);\n      }" (if "if") (parenthesized_expression "(iVar10 == 0)" (( "(") (binary_expression "iVar10 == 0" (identifier "iVar10") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n        if (1 < (int)param_1) {\n          iVar10 = extraout_ECX[1];\n          local_124[1] = iVar10 + -1;\n          if (iVar10 == 0) {\n            if (param_1 == 2) goto LAB_0004ef98;\n            iVar10 = extraout_ECX[2];\n            uVar11 = 3;\n            local_124[2] = iVar10 + -1;\n            while (iVar10 == 0) {\n              if (param_1 == uVar11) goto LAB_0004ef98;\n              iVar10 = extraout_ECX[uVar11];\n              local_124[uVar11] = iVar10 + -1;\n              uVar11 = uVar11 + 1;\n            }\n          }\n          else {\n            uVar11 = 2;\n          }\n          if ((extraout_ECX != local_124) && ((int)uVar11 < (int)param_1)) {\n            piVar9 = extraout_ECX + uVar11;\n            piVar8 = local_124 + uVar11;\n            do {\n              iVar10 = *piVar9;\n              piVar9 = piVar9 + 1;\n              *piVar8 = iVar10;\n              piVar8 = piVar8 + 1;\n            } while (extraout_ECX + param_1 + 0x40000000 != piVar9);\n          }\n        }\n      }" ({ "{") (if_statement "if (1 < (int)param_1) {\n          iVar10 = extraout_ECX[1];\n          local_124[1] = iVar10 + -1;\n          if (iVar10 == 0) {\n            if (param_1 == 2) goto LAB_0004ef98;\n            iVar10 = extraout_ECX[2];\n            uVar11 = 3;\n            local_124[2] = iVar10 + -1;\n            while (iVar10 == 0) {\n              if (param_1 == uVar11) goto LAB_0004ef98;\n              iVar10 = extraout_ECX[uVar11];\n              local_124[uVar11] = iVar10 + -1;\n              uVar11 = uVar11 + 1;\n            }\n          }\n          else {\n            uVar11 = 2;\n          }\n          if ((extraout_ECX != local_124) && ((int)uVar11 < (int)param_1)) {\n            piVar9 = extraout_ECX + uVar11;\n            piVar8 = local_124 + uVar11;\n            do {\n              iVar10 = *piVar9;\n              piVar9 = piVar9 + 1;\n              *piVar8 = iVar10;\n              piVar8 = piVar8 + 1;\n            } while (extraout_ECX + param_1 + 0x40000000 != piVar9);\n          }\n        }" (if "if") (parenthesized_expression "(1 < (int)param_1)" (( "(") (binary_expression "1 < (int)param_1" (number_literal "1") (< "<") (cast_expression "(int)param_1" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_1"))) () ")")) (compound_statement "{\n          iVar10 = extraout_ECX[1];\n          local_124[1] = iVar10 + -1;\n          if (iVar10 == 0) {\n            if (param_1 == 2) goto LAB_0004ef98;\n            iVar10 = extraout_ECX[2];\n            uVar11 = 3;\n            local_124[2] = iVar10 + -1;\n            while (iVar10 == 0) {\n              if (param_1 == uVar11) goto LAB_0004ef98;\n              iVar10 = extraout_ECX[uVar11];\n              local_124[uVar11] = iVar10 + -1;\n              uVar11 = uVar11 + 1;\n            }\n          }\n          else {\n            uVar11 = 2;\n          }\n          if ((extraout_ECX != local_124) && ((int)uVar11 < (int)param_1)) {\n            piVar9 = extraout_ECX + uVar11;\n            piVar8 = local_124 + uVar11;\n            do {\n              iVar10 = *piVar9;\n              piVar9 = piVar9 + 1;\n              *piVar8 = iVar10;\n              piVar8 = piVar8 + 1;\n            } while (extraout_ECX + param_1 + 0x40000000 != piVar9);\n          }\n        }" ({ "{") (expression_statement "iVar10 = extraout_ECX[1];" (assignment_expression "iVar10 = extraout_ECX[1]" (identifier "iVar10") (= "=") (subscript_expression "extraout_ECX[1]" (identifier "extraout_ECX") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "local_124[1] = iVar10 + -1;" (assignment_expression "local_124[1] = iVar10 + -1" (subscript_expression "local_124[1]" (identifier "local_124") ([ "[") (number_literal "1") (] "]")) (= "=") (binary_expression "iVar10 + -1" (identifier "iVar10") (+ "+") (number_literal "-1"))) (; ";")) (if_statement "if (iVar10 == 0) {\n            if (param_1 == 2) goto LAB_0004ef98;\n            iVar10 = extraout_ECX[2];\n            uVar11 = 3;\n            local_124[2] = iVar10 + -1;\n            while (iVar10 == 0) {\n              if (param_1 == uVar11) goto LAB_0004ef98;\n              iVar10 = extraout_ECX[uVar11];\n              local_124[uVar11] = iVar10 + -1;\n              uVar11 = uVar11 + 1;\n            }\n          }\n          else {\n            uVar11 = 2;\n          }" (if "if") (parenthesized_expression "(iVar10 == 0)" (( "(") (binary_expression "iVar10 == 0" (identifier "iVar10") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n            if (param_1 == 2) goto LAB_0004ef98;\n            iVar10 = extraout_ECX[2];\n            uVar11 = 3;\n            local_124[2] = iVar10 + -1;\n            while (iVar10 == 0) {\n              if (param_1 == uVar11) goto LAB_0004ef98;\n              iVar10 = extraout_ECX[uVar11];\n              local_124[uVar11] = iVar10 + -1;\n              uVar11 = uVar11 + 1;\n            }\n          }" ({ "{") (if_statement "if (param_1 == 2) goto LAB_0004ef98;" (if "if") (parenthesized_expression "(param_1 == 2)" (( "(") (binary_expression "param_1 == 2" (identifier "param_1") (== "==") (number_literal "2")) () ")")) (goto_statement "goto LAB_0004ef98;" (goto "goto") (statement_identifier "LAB_0004ef98") (; ";"))) (expression_statement "iVar10 = extraout_ECX[2];" (assignment_expression "iVar10 = extraout_ECX[2]" (identifier "iVar10") (= "=") (subscript_expression "extraout_ECX[2]" (identifier "extraout_ECX") ([ "[") (number_literal "2") (] "]"))) (; ";")) (expression_statement "uVar11 = 3;" (assignment_expression "uVar11 = 3" (identifier "uVar11") (= "=") (number_literal "3")) (; ";")) (expression_statement "local_124[2] = iVar10 + -1;" (assignment_expression "local_124[2] = iVar10 + -1" (subscript_expression "local_124[2]" (identifier "local_124") ([ "[") (number_literal "2") (] "]")) (= "=") (binary_expression "iVar10 + -1" (identifier "iVar10") (+ "+") (number_literal "-1"))) (; ";")) (while_statement "while (iVar10 == 0) {\n              if (param_1 == uVar11) goto LAB_0004ef98;\n              iVar10 = extraout_ECX[uVar11];\n              local_124[uVar11] = iVar10 + -1;\n              uVar11 = uVar11 + 1;\n            }" (while "while") (parenthesized_expression "(iVar10 == 0)" (( "(") (binary_expression "iVar10 == 0" (identifier "iVar10") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n              if (param_1 == uVar11) goto LAB_0004ef98;\n              iVar10 = extraout_ECX[uVar11];\n              local_124[uVar11] = iVar10 + -1;\n              uVar11 = uVar11 + 1;\n            }" ({ "{") (if_statement "if (param_1 == uVar11) goto LAB_0004ef98;" (if "if") (parenthesized_expression "(param_1 == uVar11)" (( "(") (binary_expression "param_1 == uVar11" (identifier "param_1") (== "==") (identifier "uVar11")) () ")")) (goto_statement "goto LAB_0004ef98;" (goto "goto") (statement_identifier "LAB_0004ef98") (; ";"))) (expression_statement "iVar10 = extraout_ECX[uVar11];" (assignment_expression "iVar10 = extraout_ECX[uVar11]" (identifier "iVar10") (= "=") (subscript_expression "extraout_ECX[uVar11]" (identifier "extraout_ECX") ([ "[") (identifier "uVar11") (] "]"))) (; ";")) (expression_statement "local_124[uVar11] = iVar10 + -1;" (assignment_expression "local_124[uVar11] = iVar10 + -1" (subscript_expression "local_124[uVar11]" (identifier "local_124") ([ "[") (identifier "uVar11") (] "]")) (= "=") (binary_expression "iVar10 + -1" (identifier "iVar10") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "uVar11 = uVar11 + 1;" (assignment_expression "uVar11 = uVar11 + 1" (identifier "uVar11") (= "=") (binary_expression "uVar11 + 1" (identifier "uVar11") (+ "+") (number_literal "1"))) (; ";")) (} "}"))) (} "}")) (else_clause "else {\n            uVar11 = 2;\n          }" (else "else") (compound_statement "{\n            uVar11 = 2;\n          }" ({ "{") (expression_statement "uVar11 = 2;" (assignment_expression "uVar11 = 2" (identifier "uVar11") (= "=") (number_literal "2")) (; ";")) (} "}")))) (if_statement "if ((extraout_ECX != local_124) && ((int)uVar11 < (int)param_1)) {\n            piVar9 = extraout_ECX + uVar11;\n            piVar8 = local_124 + uVar11;\n            do {\n              iVar10 = *piVar9;\n              piVar9 = piVar9 + 1;\n              *piVar8 = iVar10;\n              piVar8 = piVar8 + 1;\n            } while (extraout_ECX + param_1 + 0x40000000 != piVar9);\n          }" (if "if") (parenthesized_expression "((extraout_ECX != local_124) && ((int)uVar11 < (int)param_1))" (( "(") (binary_expression "(extraout_ECX != local_124) && ((int)uVar11 < (int)param_1)" (parenthesized_expression "(extraout_ECX != local_124)" (( "(") (binary_expression "extraout_ECX != local_124" (identifier "extraout_ECX") (!= "!=") (identifier "local_124")) () ")")) (&& "&&") (parenthesized_expression "((int)uVar11 < (int)param_1)" (( "(") (binary_expression "(int)uVar11 < (int)param_1" (cast_expression "(int)uVar11" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar11")) (< "<") (cast_expression "(int)param_1" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_1"))) () ")"))) () ")")) (compound_statement "{\n            piVar9 = extraout_ECX + uVar11;\n            piVar8 = local_124 + uVar11;\n            do {\n              iVar10 = *piVar9;\n              piVar9 = piVar9 + 1;\n              *piVar8 = iVar10;\n              piVar8 = piVar8 + 1;\n            } while (extraout_ECX + param_1 + 0x40000000 != piVar9);\n          }" ({ "{") (expression_statement "piVar9 = extraout_ECX + uVar11;" (assignment_expression "piVar9 = extraout_ECX + uVar11" (identifier "piVar9") (= "=") (binary_expression "extraout_ECX + uVar11" (identifier "extraout_ECX") (+ "+") (identifier "uVar11"))) (; ";")) (expression_statement "piVar8 = local_124 + uVar11;" (assignment_expression "piVar8 = local_124 + uVar11" (identifier "piVar8") (= "=") (binary_expression "local_124 + uVar11" (identifier "local_124") (+ "+") (identifier "uVar11"))) (; ";")) (do_statement "do {\n              iVar10 = *piVar9;\n              piVar9 = piVar9 + 1;\n              *piVar8 = iVar10;\n              piVar8 = piVar8 + 1;\n            } while (extraout_ECX + param_1 + 0x40000000 != piVar9);" (do "do") (compound_statement "{\n              iVar10 = *piVar9;\n              piVar9 = piVar9 + 1;\n              *piVar8 = iVar10;\n              piVar8 = piVar8 + 1;\n            }" ({ "{") (expression_statement "iVar10 = *piVar9;" (assignment_expression "iVar10 = *piVar9" (identifier "iVar10") (= "=") (pointer_expression "*piVar9" (* "*") (identifier "piVar9"))) (; ";")) (expression_statement "piVar9 = piVar9 + 1;" (assignment_expression "piVar9 = piVar9 + 1" (identifier "piVar9") (= "=") (binary_expression "piVar9 + 1" (identifier "piVar9") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "*piVar8 = iVar10;" (assignment_expression "*piVar8 = iVar10" (pointer_expression "*piVar8" (* "*") (identifier "piVar8")) (= "=") (identifier "iVar10")) (; ";")) (expression_statement "piVar8 = piVar8 + 1;" (assignment_expression "piVar8 = piVar8 + 1" (identifier "piVar8") (= "=") (binary_expression "piVar8 + 1" (identifier "piVar8") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(extraout_ECX + param_1 + 0x40000000 != piVar9)" (( "(") (binary_expression "extraout_ECX + param_1 + 0x40000000 != piVar9" (binary_expression "extraout_ECX + param_1 + 0x40000000" (binary_expression "extraout_ECX + param_1" (identifier "extraout_ECX") (+ "+") (identifier "param_1")) (+ "+") (number_literal "0x40000000")) (!= "!=") (identifier "piVar9")) () ")")) (; ";")) (} "}"))) (} "}"))) (} "}")) (else_clause "else if ((extraout_ECX != local_124) && (1 < (int)param_1)) {\n        piVar9 = extraout_ECX + 1;\n        piVar8 = local_124;\n        do {\n          piVar8 = piVar8 + 1;\n          iVar10 = *piVar9;\n          piVar9 = piVar9 + 1;\n          *piVar8 = iVar10;\n        } while (extraout_ECX + param_1 + 0x40000000 != piVar9);\n      }" (else "else") (if_statement "if ((extraout_ECX != local_124) && (1 < (int)param_1)) {\n        piVar9 = extraout_ECX + 1;\n        piVar8 = local_124;\n        do {\n          piVar8 = piVar8 + 1;\n          iVar10 = *piVar9;\n          piVar9 = piVar9 + 1;\n          *piVar8 = iVar10;\n        } while (extraout_ECX + param_1 + 0x40000000 != piVar9);\n      }" (if "if") (parenthesized_expression "((extraout_ECX != local_124) && (1 < (int)param_1))" (( "(") (binary_expression "(extraout_ECX != local_124) && (1 < (int)param_1)" (parenthesized_expression "(extraout_ECX != local_124)" (( "(") (binary_expression "extraout_ECX != local_124" (identifier "extraout_ECX") (!= "!=") (identifier "local_124")) () ")")) (&& "&&") (parenthesized_expression "(1 < (int)param_1)" (( "(") (binary_expression "1 < (int)param_1" (number_literal "1") (< "<") (cast_expression "(int)param_1" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_1"))) () ")"))) () ")")) (compound_statement "{\n        piVar9 = extraout_ECX + 1;\n        piVar8 = local_124;\n        do {\n          piVar8 = piVar8 + 1;\n          iVar10 = *piVar9;\n          piVar9 = piVar9 + 1;\n          *piVar8 = iVar10;\n        } while (extraout_ECX + param_1 + 0x40000000 != piVar9);\n      }" ({ "{") (expression_statement "piVar9 = extraout_ECX + 1;" (assignment_expression "piVar9 = extraout_ECX + 1" (identifier "piVar9") (= "=") (binary_expression "extraout_ECX + 1" (identifier "extraout_ECX") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "piVar8 = local_124;" (assignment_expression "piVar8 = local_124" (identifier "piVar8") (= "=") (identifier "local_124")) (; ";")) (do_statement "do {\n          piVar8 = piVar8 + 1;\n          iVar10 = *piVar9;\n          piVar9 = piVar9 + 1;\n          *piVar8 = iVar10;\n        } while (extraout_ECX + param_1 + 0x40000000 != piVar9);" (do "do") (compound_statement "{\n          piVar8 = piVar8 + 1;\n          iVar10 = *piVar9;\n          piVar9 = piVar9 + 1;\n          *piVar8 = iVar10;\n        }" ({ "{") (expression_statement "piVar8 = piVar8 + 1;" (assignment_expression "piVar8 = piVar8 + 1" (identifier "piVar8") (= "=") (binary_expression "piVar8 + 1" (identifier "piVar8") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "iVar10 = *piVar9;" (assignment_expression "iVar10 = *piVar9" (identifier "iVar10") (= "=") (pointer_expression "*piVar9" (* "*") (identifier "piVar9"))) (; ";")) (expression_statement "piVar9 = piVar9 + 1;" (assignment_expression "piVar9 = piVar9 + 1" (identifier "piVar9") (= "=") (binary_expression "piVar9 + 1" (identifier "piVar9") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "*piVar8 = iVar10;" (assignment_expression "*piVar8 = iVar10" (pointer_expression "*piVar8" (* "*") (identifier "piVar8")) (= "=") (identifier "iVar10")) (; ";")) (} "}")) (while "while") (parenthesized_expression "(extraout_ECX + param_1 + 0x40000000 != piVar9)" (( "(") (binary_expression "extraout_ECX + param_1 + 0x40000000 != piVar9" (binary_expression "extraout_ECX + param_1 + 0x40000000" (binary_expression "extraout_ECX + param_1" (identifier "extraout_ECX") (+ "+") (identifier "param_1")) (+ "+") (number_literal "0x40000000")) (!= "!=") (identifier "piVar9")) () ")")) (; ";")) (} "}"))))) (labeled_statement "LAB_0004ef98:\n      iVar10 = local_124[local_134];" (statement_identifier "LAB_0004ef98") (: ":") (expression_statement "iVar10 = local_124[local_134];" (assignment_expression "iVar10 = local_124[local_134]" (identifier "iVar10") (= "=") (subscript_expression "local_124[local_134]" (identifier "local_124") ([ "[") (identifier "local_134") (] "]"))) (; ";"))) (} "}")))) (expression_statement "uStack_d8 = param_1 - (iVar10 == 0);" (assignment_expression "uStack_d8 = param_1 - (iVar10 == 0)" (identifier "uStack_d8") (= "=") (binary_expression "param_1 - (iVar10 == 0)" (identifier "param_1") (- "-") (parenthesized_expression "(iVar10 == 0)" (( "(") (binary_expression "iVar10 == 0" (identifier "iVar10") (== "==") (number_literal "0")) () ")")))) (; ";")) (goto_statement "goto LAB_0004e9ee;" (goto "goto") (statement_identifier "LAB_0004e9ee") (; ";")) (} "}"))) (if_statement "if (iVar10 == 0x20) {\n    uVar11 = extraout_ECX[param_1 + 0x3ffffffe];\n  }\n  else {\n    uVar11 = (uint)extraout_ECX[(param_1 - 1) - (uint)(param_1 != 1)] >>\n             (0x20 - (byte)iVar10 & 0x1f) | uVar11 << ((byte)iVar10 & 0x1f);\n  }" (if "if") (parenthesized_expression "(iVar10 == 0x20)" (( "(") (binary_expression "iVar10 == 0x20" (identifier "iVar10") (== "==") (number_literal "0x20")) () ")")) (compound_statement "{\n    uVar11 = extraout_ECX[param_1 + 0x3ffffffe];\n  }" ({ "{") (expression_statement "uVar11 = extraout_ECX[param_1 + 0x3ffffffe];" (assignment_expression "uVar11 = extraout_ECX[param_1 + 0x3ffffffe]" (identifier "uVar11") (= "=") (subscript_expression "extraout_ECX[param_1 + 0x3ffffffe]" (identifier "extraout_ECX") ([ "[") (binary_expression "param_1 + 0x3ffffffe" (identifier "param_1") (+ "+") (number_literal "0x3ffffffe")) (] "]"))) (; ";")) (} "}")) (else_clause "else {\n    uVar11 = (uint)extraout_ECX[(param_1 - 1) - (uint)(param_1 != 1)] >>\n             (0x20 - (byte)iVar10 & 0x1f) | uVar11 << ((byte)iVar10 & 0x1f);\n  }" (else "else") (compound_statement "{\n    uVar11 = (uint)extraout_ECX[(param_1 - 1) - (uint)(param_1 != 1)] >>\n             (0x20 - (byte)iVar10 & 0x1f) | uVar11 << ((byte)iVar10 & 0x1f);\n  }" ({ "{") (expression_statement "uVar11 = (uint)extraout_ECX[(param_1 - 1) - (uint)(param_1 != 1)] >>\n             (0x20 - (byte)iVar10 & 0x1f) | uVar11 << ((byte)iVar10 & 0x1f);" (assignment_expression "uVar11 = (uint)extraout_ECX[(param_1 - 1) - (uint)(param_1 != 1)] >>\n             (0x20 - (byte)iVar10 & 0x1f) | uVar11 << ((byte)iVar10 & 0x1f)" (identifier "uVar11") (= "=") (binary_expression "(uint)extraout_ECX[(param_1 - 1) - (uint)(param_1 != 1)] >>\n             (0x20 - (byte)iVar10 & 0x1f) | uVar11 << ((byte)iVar10 & 0x1f)" (binary_expression "(uint)extraout_ECX[(param_1 - 1) - (uint)(param_1 != 1)] >>\n             (0x20 - (byte)iVar10 & 0x1f)" (cast_expression "(uint)extraout_ECX[(param_1 - 1) - (uint)(param_1 != 1)]" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (subscript_expression "extraout_ECX[(param_1 - 1) - (uint)(param_1 != 1)]" (identifier "extraout_ECX") ([ "[") (binary_expression "(param_1 - 1) - (uint)(param_1 != 1)" (parenthesized_expression "(param_1 - 1)" (( "(") (binary_expression "param_1 - 1" (identifier "param_1") (- "-") (number_literal "1")) () ")")) (- "-") (call_expression "(uint)(param_1 != 1)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(param_1 != 1)" (( "(") (binary_expression "param_1 != 1" (identifier "param_1") (!= "!=") (number_literal "1")) () ")")))) (] "]"))) (>> ">>") (parenthesized_expression "(0x20 - (byte)iVar10 & 0x1f)" (( "(") (binary_expression "0x20 - (byte)iVar10 & 0x1f" (binary_expression "0x20 - (byte)iVar10" (number_literal "0x20") (- "-") (cast_expression "(byte)iVar10" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "iVar10"))) (& "&") (number_literal "0x1f")) () ")"))) (| "|") (binary_expression "uVar11 << ((byte)iVar10 & 0x1f)" (identifier "uVar11") (<< "<<") (parenthesized_expression "((byte)iVar10 & 0x1f)" (( "(") (binary_expression "(byte)iVar10 & 0x1f" (cast_expression "(byte)iVar10" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "iVar10")) (& "&") (number_literal "0x1f")) () ")"))))) (; ";")) (} "}")))) (expression_statement "uVar11 = (uint)*(byte *)(unaff_EDI + 0x32bc7 + (uVar11 >> 0x18));" (assignment_expression "uVar11 = (uint)*(byte *)(unaff_EDI + 0x32bc7 + (uVar11 >> 0x18))" (identifier "uVar11") (= "=") (binary_expression "(uint)*(byte *)(unaff_EDI + 0x32bc7 + (uVar11 >> 0x18))" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (cast_expression "(byte *)(unaff_EDI + 0x32bc7 + (uVar11 >> 0x18))" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(unaff_EDI + 0x32bc7 + (uVar11 >> 0x18))" (( "(") (binary_expression "unaff_EDI + 0x32bc7 + (uVar11 >> 0x18)" (binary_expression "unaff_EDI + 0x32bc7" (identifier "unaff_EDI") (+ "+") (number_literal "0x32bc7")) (+ "+") (parenthesized_expression "(uVar11 >> 0x18)" (( "(") (binary_expression "uVar11 >> 0x18" (identifier "uVar11") (>> ">>") (number_literal "0x18")) () ")"))) () ")"))))) (; ";")) (if_statement "if (uVar5 < 0x1000000) {\n    uStack_e8 = (uVar5 * 0x100 | uVar11) / param_2;\n    uVar11 = uStack_e8 & 0xff;\n    uStack_e8 = uStack_e8 >> 8;\n  }\n  else {\n    uStack_e8 = uVar5 / param_2;\n    uVar11 = (uVar5 % param_2 << 8 | uVar11) / param_2;\n  }" (if "if") (parenthesized_expression "(uVar5 < 0x1000000)" (( "(") (binary_expression "uVar5 < 0x1000000" (identifier "uVar5") (< "<") (number_literal "0x1000000")) () ")")) (compound_statement "{\n    uStack_e8 = (uVar5 * 0x100 | uVar11) / param_2;\n    uVar11 = uStack_e8 & 0xff;\n    uStack_e8 = uStack_e8 >> 8;\n  }" ({ "{") (expression_statement "uStack_e8 = (uVar5 * 0x100 | uVar11) / param_2;" (assignment_expression "uStack_e8 = (uVar5 * 0x100 | uVar11) / param_2" (identifier "uStack_e8") (= "=") (binary_expression "(uVar5 * 0x100 | uVar11) / param_2" (parenthesized_expression "(uVar5 * 0x100 | uVar11)" (( "(") (binary_expression "uVar5 * 0x100 | uVar11" (binary_expression "uVar5 * 0x100" (identifier "uVar5") (* "*") (number_literal "0x100")) (| "|") (identifier "uVar11")) () ")")) (/ "/") (identifier "param_2"))) (; ";")) (expression_statement "uVar11 = uStack_e8 & 0xff;" (assignment_expression "uVar11 = uStack_e8 & 0xff" (identifier "uVar11") (= "=") (binary_expression "uStack_e8 & 0xff" (identifier "uStack_e8") (& "&") (number_literal "0xff"))) (; ";")) (expression_statement "uStack_e8 = uStack_e8 >> 8;" (assignment_expression "uStack_e8 = uStack_e8 >> 8" (identifier "uStack_e8") (= "=") (binary_expression "uStack_e8 >> 8" (identifier "uStack_e8") (>> ">>") (number_literal "8"))) (; ";")) (} "}")) (else_clause "else {\n    uStack_e8 = uVar5 / param_2;\n    uVar11 = (uVar5 % param_2 << 8 | uVar11) / param_2;\n  }" (else "else") (compound_statement "{\n    uStack_e8 = uVar5 / param_2;\n    uVar11 = (uVar5 % param_2 << 8 | uVar11) / param_2;\n  }" ({ "{") (expression_statement "uStack_e8 = uVar5 / param_2;" (assignment_expression "uStack_e8 = uVar5 / param_2" (identifier "uStack_e8") (= "=") (binary_expression "uVar5 / param_2" (identifier "uVar5") (/ "/") (identifier "param_2"))) (; ";")) (expression_statement "uVar11 = (uVar5 % param_2 << 8 | uVar11) / param_2;" (assignment_expression "uVar11 = (uVar5 % param_2 << 8 | uVar11) / param_2" (identifier "uVar11") (= "=") (binary_expression "(uVar5 % param_2 << 8 | uVar11) / param_2" (parenthesized_expression "(uVar5 % param_2 << 8 | uVar11)" (( "(") (binary_expression "uVar5 % param_2 << 8 | uVar11" (binary_expression "uVar5 % param_2 << 8" (binary_expression "uVar5 % param_2" (identifier "uVar5") (% "%") (identifier "param_2")) (<< "<<") (number_literal "8")) (| "|") (identifier "uVar11")) () ")")) (/ "/") (identifier "param_2"))) (; ";")) (} "}")))) (expression_statement "iVar10 = uStack_e8 * param_2;" (assignment_expression "iVar10 = uStack_e8 * param_2" (identifier "iVar10") (= "=") (binary_expression "uStack_e8 * param_2" (identifier "uStack_e8") (* "*") (identifier "param_2"))) (; ";")) (expression_statement "bVar1 = *(byte *)(unaff_EDI + 0x32ac7 + uVar11);" (assignment_expression "bVar1 = *(byte *)(unaff_EDI + 0x32ac7 + uVar11)" (identifier "bVar1") (= "=") (pointer_expression "*(byte *)(unaff_EDI + 0x32ac7 + uVar11)" (* "*") (cast_expression "(byte *)(unaff_EDI + 0x32ac7 + uVar11)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(unaff_EDI + 0x32ac7 + uVar11)" (( "(") (binary_expression "unaff_EDI + 0x32ac7 + uVar11" (binary_expression "unaff_EDI + 0x32ac7" (identifier "unaff_EDI") (+ "+") (number_literal "0x32ac7")) (+ "+") (identifier "uVar11")) () ")"))))) (; ";")) (expression_statement "uStack_ec = param_2 - 1;" (assignment_expression "uStack_ec = param_2 - 1" (identifier "uStack_ec") (= "=") (binary_expression "param_2 - 1" (identifier "param_2") (- "-") (number_literal "1"))) (; ";")) (expression_statement "uVar11 = 3;" (assignment_expression "uVar11 = 3" (identifier "uVar11") (= "=") (number_literal "3")) (; ";")) (for_statement "for (uVar5 = uStack_ec >> 2; uVar5 != 0; uVar5 = uVar5 >> 1) {\n    uVar11 = uVar11 + 1;\n  }" (for "for") (( "(") (assignment_expression "uVar5 = uStack_ec >> 2" (identifier "uVar5") (= "=") (binary_expression "uStack_ec >> 2" (identifier "uStack_ec") (>> ">>") (number_literal "2"))) (; ";") (binary_expression "uVar5 != 0" (identifier "uVar5") (!= "!=") (number_literal "0")) (; ";") (assignment_expression "uVar5 = uVar5 >> 1" (identifier "uVar5") (= "=") (binary_expression "uVar5 >> 1" (identifier "uVar5") (>> ">>") (number_literal "1"))) () ")") (compound_statement "{\n    uVar11 = uVar11 + 1;\n  }" ({ "{") (expression_statement "uVar11 = uVar11 + 1;" (assignment_expression "uVar11 = uVar11 + 1" (identifier "uVar11") (= "=") (binary_expression "uVar11 + 1" (identifier "uVar11") (+ "+") (number_literal "1"))) (; ";")) (} "}"))) (expression_statement "puStack_fc = auStack_a4;" (assignment_expression "puStack_fc = auStack_a4" (identifier "puStack_fc") (= "=") (identifier "auStack_a4")) (; ";")) (expression_statement "iVar15 = 0;" (assignment_expression "iVar15 = 0" (identifier "iVar15") (= "=") (number_literal "0")) (; ";")) (expression_statement "auStack_a4[0] = uStack_e8;" (assignment_expression "auStack_a4[0] = uStack_e8" (subscript_expression "auStack_a4[0]" (identifier "auStack_a4") ([ "[") (number_literal "0") (] "]")) (= "=") (identifier "uStack_e8")) (; ";")) (if_statement "if (8 < uStack_e8) {\n    iVar4 = 0;\n    do {\n      while (iVar15 = iVar4, uVar11 < uStack_e8) {\n        uStack_e8 = uStack_e8 + uVar11 >> 1;\n        puStack_fc[iVar15 + 1] = uStack_e8;\n        iVar4 = iVar15 + 1;\n        if (uStack_e8 < 9) goto LAB_0004e56d;\n      }\n      uStack_e8 = uStack_e8 - 1;\n      puStack_fc[iVar15 + 1] = uStack_e8;\n      iVar4 = iVar15 + 1;\n    } while (uStack_e8 != 8);\n    uStack_e8 = 8;\nLAB_0004e56d:\n    iVar15 = iVar15 + 1;\n  }" (if "if") (parenthesized_expression "(8 < uStack_e8)" (( "(") (binary_expression "8 < uStack_e8" (number_literal "8") (< "<") (identifier "uStack_e8")) () ")")) (compound_statement "{\n    iVar4 = 0;\n    do {\n      while (iVar15 = iVar4, uVar11 < uStack_e8) {\n        uStack_e8 = uStack_e8 + uVar11 >> 1;\n        puStack_fc[iVar15 + 1] = uStack_e8;\n        iVar4 = iVar15 + 1;\n        if (uStack_e8 < 9) goto LAB_0004e56d;\n      }\n      uStack_e8 = uStack_e8 - 1;\n      puStack_fc[iVar15 + 1] = uStack_e8;\n      iVar4 = iVar15 + 1;\n    } while (uStack_e8 != 8);\n    uStack_e8 = 8;\nLAB_0004e56d:\n    iVar15 = iVar15 + 1;\n  }" ({ "{") (expression_statement "iVar4 = 0;" (assignment_expression "iVar4 = 0" (identifier "iVar4") (= "=") (number_literal "0")) (; ";")) (do_statement "do {\n      while (iVar15 = iVar4, uVar11 < uStack_e8) {\n        uStack_e8 = uStack_e8 + uVar11 >> 1;\n        puStack_fc[iVar15 + 1] = uStack_e8;\n        iVar4 = iVar15 + 1;\n        if (uStack_e8 < 9) goto LAB_0004e56d;\n      }\n      uStack_e8 = uStack_e8 - 1;\n      puStack_fc[iVar15 + 1] = uStack_e8;\n      iVar4 = iVar15 + 1;\n    } while (uStack_e8 != 8);" (do "do") (compound_statement "{\n      while (iVar15 = iVar4, uVar11 < uStack_e8) {\n        uStack_e8 = uStack_e8 + uVar11 >> 1;\n        puStack_fc[iVar15 + 1] = uStack_e8;\n        iVar4 = iVar15 + 1;\n        if (uStack_e8 < 9) goto LAB_0004e56d;\n      }\n      uStack_e8 = uStack_e8 - 1;\n      puStack_fc[iVar15 + 1] = uStack_e8;\n      iVar4 = iVar15 + 1;\n    }" ({ "{") (while_statement "while (iVar15 = iVar4, uVar11 < uStack_e8) {\n        uStack_e8 = uStack_e8 + uVar11 >> 1;\n        puStack_fc[iVar15 + 1] = uStack_e8;\n        iVar4 = iVar15 + 1;\n        if (uStack_e8 < 9) goto LAB_0004e56d;\n      }" (while "while") (parenthesized_expression "(iVar15 = iVar4, uVar11 < uStack_e8)" (( "(") (comma_expression "iVar15 = iVar4, uVar11 < uStack_e8" (assignment_expression "iVar15 = iVar4" (identifier "iVar15") (= "=") (identifier "iVar4")) (, ",") (binary_expression "uVar11 < uStack_e8" (identifier "uVar11") (< "<") (identifier "uStack_e8"))) () ")")) (compound_statement "{\n        uStack_e8 = uStack_e8 + uVar11 >> 1;\n        puStack_fc[iVar15 + 1] = uStack_e8;\n        iVar4 = iVar15 + 1;\n        if (uStack_e8 < 9) goto LAB_0004e56d;\n      }" ({ "{") (expression_statement "uStack_e8 = uStack_e8 + uVar11 >> 1;" (assignment_expression "uStack_e8 = uStack_e8 + uVar11 >> 1" (identifier "uStack_e8") (= "=") (binary_expression "uStack_e8 + uVar11 >> 1" (binary_expression "uStack_e8 + uVar11" (identifier "uStack_e8") (+ "+") (identifier "uVar11")) (>> ">>") (number_literal "1"))) (; ";")) (expression_statement "puStack_fc[iVar15 + 1] = uStack_e8;" (assignment_expression "puStack_fc[iVar15 + 1] = uStack_e8" (subscript_expression "puStack_fc[iVar15 + 1]" (identifier "puStack_fc") ([ "[") (binary_expression "iVar15 + 1" (identifier "iVar15") (+ "+") (number_literal "1")) (] "]")) (= "=") (identifier "uStack_e8")) (; ";")) (expression_statement "iVar4 = iVar15 + 1;" (assignment_expression "iVar4 = iVar15 + 1" (identifier "iVar4") (= "=") (binary_expression "iVar15 + 1" (identifier "iVar15") (+ "+") (number_literal "1"))) (; ";")) (if_statement "if (uStack_e8 < 9) goto LAB_0004e56d;" (if "if") (parenthesized_expression "(uStack_e8 < 9)" (( "(") (binary_expression "uStack_e8 < 9" (identifier "uStack_e8") (< "<") (number_literal "9")) () ")")) (goto_statement "goto LAB_0004e56d;" (goto "goto") (statement_identifier "LAB_0004e56d") (; ";"))) (} "}"))) (expression_statement "uStack_e8 = uStack_e8 - 1;" (assignment_expression "uStack_e8 = uStack_e8 - 1" (identifier "uStack_e8") (= "=") (binary_expression "uStack_e8 - 1" (identifier "uStack_e8") (- "-") (number_literal "1"))) (; ";")) (expression_statement "puStack_fc[iVar15 + 1] = uStack_e8;" (assignment_expression "puStack_fc[iVar15 + 1] = uStack_e8" (subscript_expression "puStack_fc[iVar15 + 1]" (identifier "puStack_fc") ([ "[") (binary_expression "iVar15 + 1" (identifier "iVar15") (+ "+") (number_literal "1")) (] "]")) (= "=") (identifier "uStack_e8")) (; ";")) (expression_statement "iVar4 = iVar15 + 1;" (assignment_expression "iVar4 = iVar15 + 1" (identifier "iVar4") (= "=") (binary_expression "iVar15 + 1" (identifier "iVar15") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(uStack_e8 != 8)" (( "(") (binary_expression "uStack_e8 != 8" (identifier "uStack_e8") (!= "!=") (number_literal "8")) () ")")) (; ";")) (expression_statement "uStack_e8 = 8;" (assignment_expression "uStack_e8 = 8" (identifier "uStack_e8") (= "=") (number_literal "8")) (; ";")) (labeled_statement "LAB_0004e56d:\n    iVar15 = iVar15 + 1;" (statement_identifier "LAB_0004e56d") (: ":") (expression_statement "iVar15 = iVar15 + 1;" (assignment_expression "iVar15 = iVar15 + 1" (identifier "iVar15") (= "=") (binary_expression "iVar15 + 1" (identifier "iVar15") (+ "+") (number_literal "1"))) (; ";"))) (} "}"))) (expression_statement "iStack_a8 = 0;" (assignment_expression "iStack_a8 = 0" (identifier "iStack_a8") (= "=") (number_literal "0")) (; ";")) (expression_statement "uStack_f4 = iVar10 - uStack_e8;" (assignment_expression "uStack_f4 = iVar10 - uStack_e8" (identifier "uStack_f4") (= "=") (binary_expression "iVar10 - uStack_e8" (identifier "iVar10") (- "-") (identifier "uStack_e8"))) (; ";")) (expression_statement "*local_c0 = (bVar1 | 0x100) >> (8U - (char)uStack_e8 & 0x1f);" (assignment_expression "*local_c0 = (bVar1 | 0x100) >> (8U - (char)uStack_e8 & 0x1f)" (pointer_expression "*local_c0" (* "*") (identifier "local_c0")) (= "=") (binary_expression "(bVar1 | 0x100) >> (8U - (char)uStack_e8 & 0x1f)" (parenthesized_expression "(bVar1 | 0x100)" (( "(") (binary_expression "bVar1 | 0x100" (identifier "bVar1") (| "|") (number_literal "0x100")) () ")")) (>> ">>") (parenthesized_expression "(8U - (char)uStack_e8 & 0x1f)" (( "(") (binary_expression "8U - (char)uStack_e8 & 0x1f" (binary_expression "8U - (char)uStack_e8" (number_literal "8U") (- "-") (cast_expression "(char)uStack_e8" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "uStack_e8"))) (& "&") (number_literal "0x1f")) () ")")))) (; ";")) (expression_statement "uStack_c8 = 0;" (assignment_expression "uStack_c8 = 0" (identifier "uStack_c8") (= "=") (number_literal "0")) (; ";")) (expression_statement "uStack_b8 = in_FPUControlWord | 0xc00;" (assignment_expression "uStack_b8 = in_FPUControlWord | 0xc00" (identifier "uStack_b8") (= "=") (binary_expression "in_FPUControlWord | 0xc00" (identifier "in_FPUControlWord") (| "|") (number_literal "0xc00"))) (; ";")) (expression_statement "iStack_bc = (int)ROUND((double)param_2 * *(double *)(unaff_EDI + 0x32cc7) *\n                         (double)*(float *)(&UNK_00032ccf + unaff_EDI));" (assignment_expression "iStack_bc = (int)ROUND((double)param_2 * *(double *)(unaff_EDI + 0x32cc7) *\n                         (double)*(float *)(&UNK_00032ccf + unaff_EDI))" (identifier "iStack_bc") (= "=") (cast_expression "(int)ROUND((double)param_2 * *(double *)(unaff_EDI + 0x32cc7) *\n                         (double)*(float *)(&UNK_00032ccf + unaff_EDI))" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (call_expression "ROUND((double)param_2 * *(double *)(unaff_EDI + 0x32cc7) *\n                         (double)*(float *)(&UNK_00032ccf + unaff_EDI))" (identifier "ROUND") (argument_list "((double)param_2 * *(double *)(unaff_EDI + 0x32cc7) *\n                         (double)*(float *)(&UNK_00032ccf + unaff_EDI))" (( "(") (binary_expression "(double)param_2 * *(double *)(unaff_EDI + 0x32cc7) *\n                         (double)*(float *)(&UNK_00032ccf + unaff_EDI)" (binary_expression "(double)param_2 * *(double *)(unaff_EDI + 0x32cc7)" (cast_expression "(double)param_2" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "param_2")) (* "*") (pointer_expression "*(double *)(unaff_EDI + 0x32cc7)" (* "*") (cast_expression "(double *)(unaff_EDI + 0x32cc7)" (( "(") (type_descriptor "double *" (primitive_type "double") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(unaff_EDI + 0x32cc7)" (( "(") (binary_expression "unaff_EDI + 0x32cc7" (identifier "unaff_EDI") (+ "+") (number_literal "0x32cc7")) () ")"))))) (* "*") (cast_expression "(double)*(float *)(&UNK_00032ccf + unaff_EDI)" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (pointer_expression "*(float *)(&UNK_00032ccf + unaff_EDI)" (* "*") (cast_expression "(float *)(&UNK_00032ccf + unaff_EDI)" (( "(") (type_descriptor "float *" (primitive_type "float") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(&UNK_00032ccf + unaff_EDI)" (( "(") (binary_expression "&UNK_00032ccf + unaff_EDI" (pointer_expression "&UNK_00032ccf" (& "&") (identifier "UNK_00032ccf")) (+ "+") (identifier "unaff_EDI")) () ")")))))) () ")"))))) (; ";")) (expression_statement "iStack_cc = param_1 + 2 + iStack_bc;" (assignment_expression "iStack_cc = param_1 + 2 + iStack_bc" (identifier "iStack_cc") (= "=") (binary_expression "param_1 + 2 + iStack_bc" (binary_expression "param_1 + 2" (identifier "param_1") (+ "+") (number_literal "2")) (+ "+") (identifier "iStack_bc"))) (; ";")) (expression_statement "uVar11 = (param_1 + 1 + iStack_cc * 2) * 4;" (assignment_expression "uVar11 = (param_1 + 1 + iStack_cc * 2) * 4" (identifier "uVar11") (= "=") (binary_expression "(param_1 + 1 + iStack_cc * 2) * 4" (parenthesized_expression "(param_1 + 1 + iStack_cc * 2)" (( "(") (binary_expression "param_1 + 1 + iStack_cc * 2" (binary_expression "param_1 + 1" (identifier "param_1") (+ "+") (number_literal "1")) (+ "+") (binary_expression "iStack_cc * 2" (identifier "iStack_cc") (* "*") (number_literal "2"))) () ")")) (* "*") (number_literal "4"))) (; ";")) (expression_statement "local_f8 = extraout_ECX;" (assignment_expression "local_f8 = extraout_ECX" (identifier "local_f8") (= "=") (identifier "extraout_ECX")) (; ";")) (if_statement "if (uVar11 < 0x7f01) {\n    iStack_120 = -(uVar11 + 0x1b & 0xfffffff0);\n    puVar14 = auStack_13c + iStack_120;\n    iStack_120 = (int)&uStack_130 + iStack_120;\n  }\n  else {\n    iStack_120 = __gmp_tmp_reentrant_alloc(&iStack_a8,uVar11);\n    uVar16 = CONCAT44(local_124,local_c0);\n    puVar14 = auStack_13c;\n  }" (if "if") (parenthesized_expression "(uVar11 < 0x7f01)" (( "(") (binary_expression "uVar11 < 0x7f01" (identifier "uVar11") (< "<") (number_literal "0x7f01")) () ")")) (compound_statement "{\n    iStack_120 = -(uVar11 + 0x1b & 0xfffffff0);\n    puVar14 = auStack_13c + iStack_120;\n    iStack_120 = (int)&uStack_130 + iStack_120;\n  }" ({ "{") (expression_statement "iStack_120 = -(uVar11 + 0x1b & 0xfffffff0);" (assignment_expression "iStack_120 = -(uVar11 + 0x1b & 0xfffffff0)" (identifier "iStack_120") (= "=") (unary_expression "-(uVar11 + 0x1b & 0xfffffff0)" (- "-") (parenthesized_expression "(uVar11 + 0x1b & 0xfffffff0)" (( "(") (binary_expression "uVar11 + 0x1b & 0xfffffff0" (binary_expression "uVar11 + 0x1b" (identifier "uVar11") (+ "+") (number_literal "0x1b")) (& "&") (number_literal "0xfffffff0")) () ")")))) (; ";")) (expression_statement "puVar14 = auStack_13c + iStack_120;" (assignment_expression "puVar14 = auStack_13c + iStack_120" (identifier "puVar14") (= "=") (binary_expression "auStack_13c + iStack_120" (identifier "auStack_13c") (+ "+") (identifier "iStack_120"))) (; ";")) (expression_statement "iStack_120 = (int)&uStack_130 + iStack_120;" (assignment_expression "iStack_120 = (int)&uStack_130 + iStack_120" (identifier "iStack_120") (= "=") (binary_expression "(int)&uStack_130 + iStack_120" (cast_expression "(int)&uStack_130" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (pointer_expression "&uStack_130" (& "&") (identifier "uStack_130"))) (+ "+") (identifier "iStack_120"))) (; ";")) (} "}")) (else_clause "else {\n    iStack_120 = __gmp_tmp_reentrant_alloc(&iStack_a8,uVar11);\n    uVar16 = CONCAT44(local_124,local_c0);\n    puVar14 = auStack_13c;\n  }" (else "else") (compound_statement "{\n    iStack_120 = __gmp_tmp_reentrant_alloc(&iStack_a8,uVar11);\n    uVar16 = CONCAT44(local_124,local_c0);\n    puVar14 = auStack_13c;\n  }" ({ "{") (expression_statement "iStack_120 = __gmp_tmp_reentrant_alloc(&iStack_a8,uVar11);" (assignment_expression "iStack_120 = __gmp_tmp_reentrant_alloc(&iStack_a8,uVar11)" (identifier "iStack_120") (= "=") (call_expression "__gmp_tmp_reentrant_alloc(&iStack_a8,uVar11)" (identifier "__gmp_tmp_reentrant_alloc") (argument_list "(&iStack_a8,uVar11)" (( "(") (pointer_expression "&iStack_a8" (& "&") (identifier "iStack_a8")) (, ",") (identifier "uVar11") () ")")))) (; ";")) (expression_statement "uVar16 = CONCAT44(local_124,local_c0);" (assignment_expression "uVar16 = CONCAT44(local_124,local_c0)" (identifier "uVar16") (= "=") (call_expression "CONCAT44(local_124,local_c0)" (identifier "CONCAT44") (argument_list "(local_124,local_c0)" (( "(") (identifier "local_124") (, ",") (identifier "local_c0") () ")")))) (; ";")) (expression_statement "puVar14 = auStack_13c;" (assignment_expression "puVar14 = auStack_13c" (identifier "puVar14") (= "=") (identifier "auStack_13c")) (; ";")) (} "}")))) (expression_statement "local_124 = (int *)((ulonglong)uVar16 >> 0x20);" (assignment_expression "local_124 = (int *)((ulonglong)uVar16 >> 0x20)" (identifier "local_124") (= "=") (cast_expression "(int *)((ulonglong)uVar16 >> 0x20)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((ulonglong)uVar16 >> 0x20)" (( "(") (binary_expression "(ulonglong)uVar16 >> 0x20" (cast_expression "(ulonglong)uVar16" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "uVar16")) (>> ">>") (number_literal "0x20")) () ")")))) (; ";")) (expression_statement "iVar10 = iStack_120 + local_128 + 8;" (assignment_expression "iVar10 = iStack_120 + local_128 + 8" (identifier "iVar10") (= "=") (binary_expression "iStack_120 + local_128 + 8" (binary_expression "iStack_120 + local_128" (identifier "iStack_120") (+ "+") (identifier "local_128")) (+ "+") (number_literal "8"))) (; ";")) (expression_statement "iStack_d0 = iVar10 + iStack_cc * 4;" (assignment_expression "iStack_d0 = iVar10 + iStack_cc * 4" (identifier "iStack_d0") (= "=") (binary_expression "iVar10 + iStack_cc * 4" (identifier "iVar10") (+ "+") (binary_expression "iStack_cc * 4" (identifier "iStack_cc") (* "*") (number_literal "4")))) (; ";")) (expression_statement "iStack_d4 = (int)local_124;" (assignment_expression "iStack_d4 = (int)local_124" (identifier "iStack_d4") (= "=") (cast_expression "(int)local_124" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_124"))) (; ";")) (if_statement "if (local_124 == (int *)0x0) {\n    iStack_d4 = iStack_120;\n  }" (if "if") (parenthesized_expression "(local_124 == (int *)0x0)" (( "(") (binary_expression "local_124 == (int *)0x0" (identifier "local_124") (== "==") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n    iStack_d4 = iStack_120;\n  }" ({ "{") (expression_statement "iStack_d4 = iStack_120;" (assignment_expression "iStack_d4 = iStack_120" (identifier "iStack_d4") (= "=") (identifier "iStack_120")) (; ";")) (} "}"))) (if_statement "if (iVar15 != 0) {\n    iStack_104 = iVar15 + -1;\n    puStack_fc = auStack_a4;\n    iStack_cc = 1;\n    iStack_e0 = *(int *)(local_c4 + -0x26c);\n    iStack_dc = iVar10;\nLAB_0004e690:\n    local_124 = (int *)((ulonglong)uVar16 >> 0x20);\n    local_c0 = (uint *)uVar16;\n    uStack_e4 = uStack_f4 - uStack_e8 * uStack_ec;\n    iVar10 = param_1 - (uStack_e4 >> 5);\n    piVar9 = local_f8 + (uStack_e4 >> 5);\n    if ((uStack_e4 & 0x1f) == 0) {\n      *(int *)(puVar14 + -8) = iVar10;\n      *(int **)(puVar14 + -0xc) = piVar9;\n      iVar15 = iStack_e0;\n      *(int *)(puVar14 + -0x10) = iStack_d4;\n      pcVar2 = *(code **)(iVar15 + 0x28);\n      *(undefined4 *)(puVar14 + -0x14) = 0x4ed34;\n      (*pcVar2)();\n    }\n    else {\n      *(uint *)(puVar14 + -4) = uStack_e4 & 0x1f;\n      *(int *)(puVar14 + -8) = iVar10;\n      *(int **)(puVar14 + -0xc) = piVar9;\n      iVar15 = iStack_e0;\n      *(int *)(puVar14 + -0x10) = iStack_d4;\n      pcVar2 = *(code **)(iVar15 + 0x80);\n      *(undefined4 *)(puVar14 + -0x14) = 0x4e6dc;\n      (*pcVar2)();\n    }\n    iVar4 = iStack_d4;\n    iVar15 = iStack_dc;\n    uStack_d8 = iVar10 - (uint)(*(int *)(iStack_d4 + (iVar10 + -1) * 4) == 0);\n    do {\n      *(int *)(puVar14 + -0x10) = iVar15;\n      *(uint *)(puVar14 + -0x14) = uStack_ec;\n      *(int *)(puVar14 + -0x18) = iStack_cc;\n      *(uint **)(puVar14 + -0x1c) = local_c0;\n      *(int *)(puVar14 + -0x20) = iStack_d0;\n      *(undefined4 *)(puVar14 + -0x24) = 0x4e727;\n      iVar10 = __gmpn_pow_1();\n      *(int *)(puVar14 + -0x10) = iStack_cc;\n      *(uint **)(puVar14 + -0x14) = local_c0;\n      *(int *)(puVar14 + -0x18) = iVar10;\n      *(int *)(puVar14 + -0x1c) = iStack_d0;\n      *(int *)(puVar14 + -0x20) = iVar15;\n      iStack_dc = iVar10;\n      *(undefined4 *)(puVar14 + -0x24) = 0x4e74f;\n      __gmpn_mul();\n      iVar10 = iStack_d4;\n      uVar11 = uStack_d8;\n      iVar6 = (iStack_cc + iStack_dc) -\n              (uint)(*(int *)(iVar15 + -4 + (iStack_cc + iStack_dc) * 4) == 0);\n      puVar7 = local_c0;\n      if (iVar6 <= (int)uStack_d8) {\n        uVar5 = uStack_d8;\n        if (uStack_d8 != iVar6) goto LAB_0004eb66;\n        do {\n          uVar5 = uVar5 + -1;\n          if ((int)uVar5 < 0) {\n            iStack_108 = iStack_dc;\n            uStack_114 = 0;\n            iStack_10c = iStack_104;\n            uStack_e8 = puStack_fc[iStack_104] - puStack_fc[iStack_104 + 1];\n            iStack_118 = puStack_fc[iStack_104 + 1] - puStack_fc[iStack_104];\n            uStack_f0 = uStack_e8 >> 5;\n            uStack_f4 = iStack_118 + uStack_e4;\n            uVar11 = uStack_e4 - 1;\n            uStack_e4 = uStack_e8 & 0x1f;\n            puVar12 = (uint *)((uVar11 >> 5) - (uStack_f4 >> 5));\n            uStack_100 = uStack_f0 * 4;\n            uVar11 = 0;\n            iStack_110 = (int)puVar12 + 1;\n            uVar5 = uStack_f4 >> 5;\n            puVar7 = (uint *)(iStack_d4 + uStack_f0 * 4);\n            iStack_dc = iVar15;\n            uStack_d8 = uStack_f0;\n            goto LAB_0004e83d;\n          }\n          uVar13 = *(uint *)(iVar4 + uVar5 * 4);\n          uVar3 = *(uint *)(iVar15 + uVar5 * 4);\n        } while (uVar3 == uVar13);\n        if (uVar3 <= uVar13) goto LAB_0004eb66;\n      }\n      do {\n        uVar11 = *puVar7;\n        *puVar7 = *puVar7 - 1;\n        puVar7 = puVar7 + 1;\n      } while (uVar11 == 0);\n    } while( true );\n  }" (if "if") (parenthesized_expression "(iVar15 != 0)" (( "(") (binary_expression "iVar15 != 0" (identifier "iVar15") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    iStack_104 = iVar15 + -1;\n    puStack_fc = auStack_a4;\n    iStack_cc = 1;\n    iStack_e0 = *(int *)(local_c4 + -0x26c);\n    iStack_dc = iVar10;\nLAB_0004e690:\n    local_124 = (int *)((ulonglong)uVar16 >> 0x20);\n    local_c0 = (uint *)uVar16;\n    uStack_e4 = uStack_f4 - uStack_e8 * uStack_ec;\n    iVar10 = param_1 - (uStack_e4 >> 5);\n    piVar9 = local_f8 + (uStack_e4 >> 5);\n    if ((uStack_e4 & 0x1f) == 0) {\n      *(int *)(puVar14 + -8) = iVar10;\n      *(int **)(puVar14 + -0xc) = piVar9;\n      iVar15 = iStack_e0;\n      *(int *)(puVar14 + -0x10) = iStack_d4;\n      pcVar2 = *(code **)(iVar15 + 0x28);\n      *(undefined4 *)(puVar14 + -0x14) = 0x4ed34;\n      (*pcVar2)();\n    }\n    else {\n      *(uint *)(puVar14 + -4) = uStack_e4 & 0x1f;\n      *(int *)(puVar14 + -8) = iVar10;\n      *(int **)(puVar14 + -0xc) = piVar9;\n      iVar15 = iStack_e0;\n      *(int *)(puVar14 + -0x10) = iStack_d4;\n      pcVar2 = *(code **)(iVar15 + 0x80);\n      *(undefined4 *)(puVar14 + -0x14) = 0x4e6dc;\n      (*pcVar2)();\n    }\n    iVar4 = iStack_d4;\n    iVar15 = iStack_dc;\n    uStack_d8 = iVar10 - (uint)(*(int *)(iStack_d4 + (iVar10 + -1) * 4) == 0);\n    do {\n      *(int *)(puVar14 + -0x10) = iVar15;\n      *(uint *)(puVar14 + -0x14) = uStack_ec;\n      *(int *)(puVar14 + -0x18) = iStack_cc;\n      *(uint **)(puVar14 + -0x1c) = local_c0;\n      *(int *)(puVar14 + -0x20) = iStack_d0;\n      *(undefined4 *)(puVar14 + -0x24) = 0x4e727;\n      iVar10 = __gmpn_pow_1();\n      *(int *)(puVar14 + -0x10) = iStack_cc;\n      *(uint **)(puVar14 + -0x14) = local_c0;\n      *(int *)(puVar14 + -0x18) = iVar10;\n      *(int *)(puVar14 + -0x1c) = iStack_d0;\n      *(int *)(puVar14 + -0x20) = iVar15;\n      iStack_dc = iVar10;\n      *(undefined4 *)(puVar14 + -0x24) = 0x4e74f;\n      __gmpn_mul();\n      iVar10 = iStack_d4;\n      uVar11 = uStack_d8;\n      iVar6 = (iStack_cc + iStack_dc) -\n              (uint)(*(int *)(iVar15 + -4 + (iStack_cc + iStack_dc) * 4) == 0);\n      puVar7 = local_c0;\n      if (iVar6 <= (int)uStack_d8) {\n        uVar5 = uStack_d8;\n        if (uStack_d8 != iVar6) goto LAB_0004eb66;\n        do {\n          uVar5 = uVar5 + -1;\n          if ((int)uVar5 < 0) {\n            iStack_108 = iStack_dc;\n            uStack_114 = 0;\n            iStack_10c = iStack_104;\n            uStack_e8 = puStack_fc[iStack_104] - puStack_fc[iStack_104 + 1];\n            iStack_118 = puStack_fc[iStack_104 + 1] - puStack_fc[iStack_104];\n            uStack_f0 = uStack_e8 >> 5;\n            uStack_f4 = iStack_118 + uStack_e4;\n            uVar11 = uStack_e4 - 1;\n            uStack_e4 = uStack_e8 & 0x1f;\n            puVar12 = (uint *)((uVar11 >> 5) - (uStack_f4 >> 5));\n            uStack_100 = uStack_f0 * 4;\n            uVar11 = 0;\n            iStack_110 = (int)puVar12 + 1;\n            uVar5 = uStack_f4 >> 5;\n            puVar7 = (uint *)(iStack_d4 + uStack_f0 * 4);\n            iStack_dc = iVar15;\n            uStack_d8 = uStack_f0;\n            goto LAB_0004e83d;\n          }\n          uVar13 = *(uint *)(iVar4 + uVar5 * 4);\n          uVar3 = *(uint *)(iVar15 + uVar5 * 4);\n        } while (uVar3 == uVar13);\n        if (uVar3 <= uVar13) goto LAB_0004eb66;\n      }\n      do {\n        uVar11 = *puVar7;\n        *puVar7 = *puVar7 - 1;\n        puVar7 = puVar7 + 1;\n      } while (uVar11 == 0);\n    } while( true );\n  }" ({ "{") (expression_statement "iStack_104 = iVar15 + -1;" (assignment_expression "iStack_104 = iVar15 + -1" (identifier "iStack_104") (= "=") (binary_expression "iVar15 + -1" (identifier "iVar15") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "puStack_fc = auStack_a4;" (assignment_expression "puStack_fc = auStack_a4" (identifier "puStack_fc") (= "=") (identifier "auStack_a4")) (; ";")) (expression_statement "iStack_cc = 1;" (assignment_expression "iStack_cc = 1" (identifier "iStack_cc") (= "=") (number_literal "1")) (; ";")) (expression_statement "iStack_e0 = *(int *)(local_c4 + -0x26c);" (assignment_expression "iStack_e0 = *(int *)(local_c4 + -0x26c)" (identifier "iStack_e0") (= "=") (pointer_expression "*(int *)(local_c4 + -0x26c)" (* "*") (cast_expression "(int *)(local_c4 + -0x26c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_c4 + -0x26c)" (( "(") (binary_expression "local_c4 + -0x26c" (identifier "local_c4") (+ "+") (number_literal "-0x26c")) () ")"))))) (; ";")) (expression_statement "iStack_dc = iVar10;" (assignment_expression "iStack_dc = iVar10" (identifier "iStack_dc") (= "=") (identifier "iVar10")) (; ";")) (labeled_statement "LAB_0004e690:\n    local_124 = (int *)((ulonglong)uVar16 >> 0x20);" (statement_identifier "LAB_0004e690") (: ":") (expression_statement "local_124 = (int *)((ulonglong)uVar16 >> 0x20);" (assignment_expression "local_124 = (int *)((ulonglong)uVar16 >> 0x20)" (identifier "local_124") (= "=") (cast_expression "(int *)((ulonglong)uVar16 >> 0x20)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((ulonglong)uVar16 >> 0x20)" (( "(") (binary_expression "(ulonglong)uVar16 >> 0x20" (cast_expression "(ulonglong)uVar16" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "uVar16")) (>> ">>") (number_literal "0x20")) () ")")))) (; ";"))) (expression_statement "local_c0 = (uint *)uVar16;" (assignment_expression "local_c0 = (uint *)uVar16" (identifier "local_c0") (= "=") (cast_expression "(uint *)uVar16" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "uVar16"))) (; ";")) (expression_statement "uStack_e4 = uStack_f4 - uStack_e8 * uStack_ec;" (assignment_expression "uStack_e4 = uStack_f4 - uStack_e8 * uStack_ec" (identifier "uStack_e4") (= "=") (binary_expression "uStack_f4 - uStack_e8 * uStack_ec" (identifier "uStack_f4") (- "-") (binary_expression "uStack_e8 * uStack_ec" (identifier "uStack_e8") (* "*") (identifier "uStack_ec")))) (; ";")) (expression_statement "iVar10 = param_1 - (uStack_e4 >> 5);" (assignment_expression "iVar10 = param_1 - (uStack_e4 >> 5)" (identifier "iVar10") (= "=") (binary_expression "param_1 - (uStack_e4 >> 5)" (identifier "param_1") (- "-") (parenthesized_expression "(uStack_e4 >> 5)" (( "(") (binary_expression "uStack_e4 >> 5" (identifier "uStack_e4") (>> ">>") (number_literal "5")) () ")")))) (; ";")) (expression_statement "piVar9 = local_f8 + (uStack_e4 >> 5);" (assignment_expression "piVar9 = local_f8 + (uStack_e4 >> 5)" (identifier "piVar9") (= "=") (binary_expression "local_f8 + (uStack_e4 >> 5)" (identifier "local_f8") (+ "+") (parenthesized_expression "(uStack_e4 >> 5)" (( "(") (binary_expression "uStack_e4 >> 5" (identifier "uStack_e4") (>> ">>") (number_literal "5")) () ")")))) (; ";")) (if_statement "if ((uStack_e4 & 0x1f) == 0) {\n      *(int *)(puVar14 + -8) = iVar10;\n      *(int **)(puVar14 + -0xc) = piVar9;\n      iVar15 = iStack_e0;\n      *(int *)(puVar14 + -0x10) = iStack_d4;\n      pcVar2 = *(code **)(iVar15 + 0x28);\n      *(undefined4 *)(puVar14 + -0x14) = 0x4ed34;\n      (*pcVar2)();\n    }\n    else {\n      *(uint *)(puVar14 + -4) = uStack_e4 & 0x1f;\n      *(int *)(puVar14 + -8) = iVar10;\n      *(int **)(puVar14 + -0xc) = piVar9;\n      iVar15 = iStack_e0;\n      *(int *)(puVar14 + -0x10) = iStack_d4;\n      pcVar2 = *(code **)(iVar15 + 0x80);\n      *(undefined4 *)(puVar14 + -0x14) = 0x4e6dc;\n      (*pcVar2)();\n    }" (if "if") (parenthesized_expression "((uStack_e4 & 0x1f) == 0)" (( "(") (binary_expression "(uStack_e4 & 0x1f) == 0" (parenthesized_expression "(uStack_e4 & 0x1f)" (( "(") (binary_expression "uStack_e4 & 0x1f" (identifier "uStack_e4") (& "&") (number_literal "0x1f")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      *(int *)(puVar14 + -8) = iVar10;\n      *(int **)(puVar14 + -0xc) = piVar9;\n      iVar15 = iStack_e0;\n      *(int *)(puVar14 + -0x10) = iStack_d4;\n      pcVar2 = *(code **)(iVar15 + 0x28);\n      *(undefined4 *)(puVar14 + -0x14) = 0x4ed34;\n      (*pcVar2)();\n    }" ({ "{") (expression_statement "*(int *)(puVar14 + -8) = iVar10;" (assignment_expression "*(int *)(puVar14 + -8) = iVar10" (pointer_expression "*(int *)(puVar14 + -8)" (* "*") (cast_expression "(int *)(puVar14 + -8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar14 + -8)" (( "(") (binary_expression "puVar14 + -8" (identifier "puVar14") (+ "+") (number_literal "-8")) () ")")))) (= "=") (identifier "iVar10")) (; ";")) (expression_statement "*(int **)(puVar14 + -0xc) = piVar9;" (assignment_expression "*(int **)(puVar14 + -0xc) = piVar9" (pointer_expression "*(int **)(puVar14 + -0xc)" (* "*") (cast_expression "(int **)(puVar14 + -0xc)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar14 + -0xc)" (( "(") (binary_expression "puVar14 + -0xc" (identifier "puVar14") (+ "+") (number_literal "-0xc")) () ")")))) (= "=") (identifier "piVar9")) (; ";")) (expression_statement "iVar15 = iStack_e0;" (assignment_expression "iVar15 = iStack_e0" (identifier "iVar15") (= "=") (identifier "iStack_e0")) (; ";")) (expression_statement "*(int *)(puVar14 + -0x10) = iStack_d4;" (assignment_expression "*(int *)(puVar14 + -0x10) = iStack_d4" (pointer_expression "*(int *)(puVar14 + -0x10)" (* "*") (cast_expression "(int *)(puVar14 + -0x10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar14 + -0x10)" (( "(") (binary_expression "puVar14 + -0x10" (identifier "puVar14") (+ "+") (number_literal "-0x10")) () ")")))) (= "=") (identifier "iStack_d4")) (; ";")) (expression_statement "pcVar2 = *(code **)(iVar15 + 0x28);" (assignment_expression "pcVar2 = *(code **)(iVar15 + 0x28)" (identifier "pcVar2") (= "=") (pointer_expression "*(code **)(iVar15 + 0x28)" (* "*") (cast_expression "(code **)(iVar15 + 0x28)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar15 + 0x28)" (( "(") (binary_expression "iVar15 + 0x28" (identifier "iVar15") (+ "+") (number_literal "0x28")) () ")"))))) (; ";")) (expression_statement "*(undefined4 *)(puVar14 + -0x14) = 0x4ed34;" (assignment_expression "*(undefined4 *)(puVar14 + -0x14) = 0x4ed34" (pointer_expression "*(undefined4 *)(puVar14 + -0x14)" (* "*") (cast_expression "(undefined4 *)(puVar14 + -0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar14 + -0x14)" (( "(") (binary_expression "puVar14 + -0x14" (identifier "puVar14") (+ "+") (number_literal "-0x14")) () ")")))) (= "=") (number_literal "0x4ed34")) (; ";")) (expression_statement "(*pcVar2)();" (call_expression "(*pcVar2)()" (parenthesized_expression "(*pcVar2)" (( "(") (pointer_expression "*pcVar2" (* "*") (identifier "pcVar2")) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (} "}")) (else_clause "else {\n      *(uint *)(puVar14 + -4) = uStack_e4 & 0x1f;\n      *(int *)(puVar14 + -8) = iVar10;\n      *(int **)(puVar14 + -0xc) = piVar9;\n      iVar15 = iStack_e0;\n      *(int *)(puVar14 + -0x10) = iStack_d4;\n      pcVar2 = *(code **)(iVar15 + 0x80);\n      *(undefined4 *)(puVar14 + -0x14) = 0x4e6dc;\n      (*pcVar2)();\n    }" (else "else") (compound_statement "{\n      *(uint *)(puVar14 + -4) = uStack_e4 & 0x1f;\n      *(int *)(puVar14 + -8) = iVar10;\n      *(int **)(puVar14 + -0xc) = piVar9;\n      iVar15 = iStack_e0;\n      *(int *)(puVar14 + -0x10) = iStack_d4;\n      pcVar2 = *(code **)(iVar15 + 0x80);\n      *(undefined4 *)(puVar14 + -0x14) = 0x4e6dc;\n      (*pcVar2)();\n    }" ({ "{") (expression_statement "*(uint *)(puVar14 + -4) = uStack_e4 & 0x1f;" (assignment_expression "*(uint *)(puVar14 + -4) = uStack_e4 & 0x1f" (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")) () ")")))) (= "=") (binary_expression "uStack_e4 & 0x1f" (identifier "uStack_e4") (& "&") (number_literal "0x1f"))) (; ";")) (expression_statement "*(int *)(puVar14 + -8) = iVar10;" (assignment_expression "*(int *)(puVar14 + -8) = iVar10" (pointer_expression "*(int *)(puVar14 + -8)" (* "*") (cast_expression "(int *)(puVar14 + -8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar14 + -8)" (( "(") (binary_expression "puVar14 + -8" (identifier "puVar14") (+ "+") (number_literal "-8")) () ")")))) (= "=") (identifier "iVar10")) (; ";")) (expression_statement "*(int **)(puVar14 + -0xc) = piVar9;" (assignment_expression "*(int **)(puVar14 + -0xc) = piVar9" (pointer_expression "*(int **)(puVar14 + -0xc)" (* "*") (cast_expression "(int **)(puVar14 + -0xc)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar14 + -0xc)" (( "(") (binary_expression "puVar14 + -0xc" (identifier "puVar14") (+ "+") (number_literal "-0xc")) () ")")))) (= "=") (identifier "piVar9")) (; ";")) (expression_statement "iVar15 = iStack_e0;" (assignment_expression "iVar15 = iStack_e0" (identifier "iVar15") (= "=") (identifier "iStack_e0")) (; ";")) (expression_statement "*(int *)(puVar14 + -0x10) = iStack_d4;" (assignment_expression "*(int *)(puVar14 + -0x10) = iStack_d4" (pointer_expression "*(int *)(puVar14 + -0x10)" (* "*") (cast_expression "(int *)(puVar14 + -0x10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar14 + -0x10)" (( "(") (binary_expression "puVar14 + -0x10" (identifier "puVar14") (+ "+") (number_literal "-0x10")) () ")")))) (= "=") (identifier "iStack_d4")) (; ";")) (expression_statement "pcVar2 = *(code **)(iVar15 + 0x80);" (assignment_expression "pcVar2 = *(code **)(iVar15 + 0x80)" (identifier "pcVar2") (= "=") (pointer_expression "*(code **)(iVar15 + 0x80)" (* "*") (cast_expression "(code **)(iVar15 + 0x80)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar15 + 0x80)" (( "(") (binary_expression "iVar15 + 0x80" (identifier "iVar15") (+ "+") (number_literal "0x80")) () ")"))))) (; ";")) (expression_statement "*(undefined4 *)(puVar14 + -0x14) = 0x4e6dc;" (assignment_expression "*(undefined4 *)(puVar14 + -0x14) = 0x4e6dc" (pointer_expression "*(undefined4 *)(puVar14 + -0x14)" (* "*") (cast_expression "(undefined4 *)(puVar14 + -0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar14 + -0x14)" (( "(") (binary_expression "puVar14 + -0x14" (identifier "puVar14") (+ "+") (number_literal "-0x14")) () ")")))) (= "=") (number_literal "0x4e6dc")) (; ";")) (expression_statement "(*pcVar2)();" (call_expression "(*pcVar2)()" (parenthesized_expression "(*pcVar2)" (( "(") (pointer_expression "*pcVar2" (* "*") (identifier "pcVar2")) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (} "}")))) (expression_statement "iVar4 = iStack_d4;" (assignment_expression "iVar4 = iStack_d4" (identifier "iVar4") (= "=") (identifier "iStack_d4")) (; ";")) (expression_statement "iVar15 = iStack_dc;" (assignment_expression "iVar15 = iStack_dc" (identifier "iVar15") (= "=") (identifier "iStack_dc")) (; ";")) (expression_statement "uStack_d8 = iVar10 - (uint)(*(int *)(iStack_d4 + (iVar10 + -1) * 4) == 0);" (assignment_expression "uStack_d8 = iVar10 - (uint)(*(int *)(iStack_d4 + (iVar10 + -1) * 4) == 0)" (identifier "uStack_d8") (= "=") (binary_expression "iVar10 - (uint)(*(int *)(iStack_d4 + (iVar10 + -1) * 4) == 0)" (identifier "iVar10") (- "-") (call_expression "(uint)(*(int *)(iStack_d4 + (iVar10 + -1) * 4) == 0)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(*(int *)(iStack_d4 + (iVar10 + -1) * 4) == 0)" (( "(") (binary_expression "*(int *)(iStack_d4 + (iVar10 + -1) * 4) == 0" (pointer_expression "*(int *)(iStack_d4 + (iVar10 + -1) * 4)" (* "*") (cast_expression "(int *)(iStack_d4 + (iVar10 + -1) * 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iStack_d4 + (iVar10 + -1) * 4)" (( "(") (binary_expression "iStack_d4 + (iVar10 + -1) * 4" (identifier "iStack_d4") (+ "+") (binary_expression "(iVar10 + -1) * 4" (parenthesized_expression "(iVar10 + -1)" (( "(") (binary_expression "iVar10 + -1" (identifier "iVar10") (+ "+") (number_literal "-1")) () ")")) (* "*") (number_literal "4"))) () ")")))) (== "==") (number_literal "0")) () ")"))))) (; ";")) (do_statement "do {\n      *(int *)(puVar14 + -0x10) = iVar15;\n      *(uint *)(puVar14 + -0x14) = uStack_ec;\n      *(int *)(puVar14 + -0x18) = iStack_cc;\n      *(uint **)(puVar14 + -0x1c) = local_c0;\n      *(int *)(puVar14 + -0x20) = iStack_d0;\n      *(undefined4 *)(puVar14 + -0x24) = 0x4e727;\n      iVar10 = __gmpn_pow_1();\n      *(int *)(puVar14 + -0x10) = iStack_cc;\n      *(uint **)(puVar14 + -0x14) = local_c0;\n      *(int *)(puVar14 + -0x18) = iVar10;\n      *(int *)(puVar14 + -0x1c) = iStack_d0;\n      *(int *)(puVar14 + -0x20) = iVar15;\n      iStack_dc = iVar10;\n      *(undefined4 *)(puVar14 + -0x24) = 0x4e74f;\n      __gmpn_mul();\n      iVar10 = iStack_d4;\n      uVar11 = uStack_d8;\n      iVar6 = (iStack_cc + iStack_dc) -\n              (uint)(*(int *)(iVar15 + -4 + (iStack_cc + iStack_dc) * 4) == 0);\n      puVar7 = local_c0;\n      if (iVar6 <= (int)uStack_d8) {\n        uVar5 = uStack_d8;\n        if (uStack_d8 != iVar6) goto LAB_0004eb66;\n        do {\n          uVar5 = uVar5 + -1;\n          if ((int)uVar5 < 0) {\n            iStack_108 = iStack_dc;\n            uStack_114 = 0;\n            iStack_10c = iStack_104;\n            uStack_e8 = puStack_fc[iStack_104] - puStack_fc[iStack_104 + 1];\n            iStack_118 = puStack_fc[iStack_104 + 1] - puStack_fc[iStack_104];\n            uStack_f0 = uStack_e8 >> 5;\n            uStack_f4 = iStack_118 + uStack_e4;\n            uVar11 = uStack_e4 - 1;\n            uStack_e4 = uStack_e8 & 0x1f;\n            puVar12 = (uint *)((uVar11 >> 5) - (uStack_f4 >> 5));\n            uStack_100 = uStack_f0 * 4;\n            uVar11 = 0;\n            iStack_110 = (int)puVar12 + 1;\n            uVar5 = uStack_f4 >> 5;\n            puVar7 = (uint *)(iStack_d4 + uStack_f0 * 4);\n            iStack_dc = iVar15;\n            uStack_d8 = uStack_f0;\n            goto LAB_0004e83d;\n          }\n          uVar13 = *(uint *)(iVar4 + uVar5 * 4);\n          uVar3 = *(uint *)(iVar15 + uVar5 * 4);\n        } while (uVar3 == uVar13);\n        if (uVar3 <= uVar13) goto LAB_0004eb66;\n      }\n      do {\n        uVar11 = *puVar7;\n        *puVar7 = *puVar7 - 1;\n        puVar7 = puVar7 + 1;\n      } while (uVar11 == 0);\n    } while( true );" (do "do") (compound_statement "{\n      *(int *)(puVar14 + -0x10) = iVar15;\n      *(uint *)(puVar14 + -0x14) = uStack_ec;\n      *(int *)(puVar14 + -0x18) = iStack_cc;\n      *(uint **)(puVar14 + -0x1c) = local_c0;\n      *(int *)(puVar14 + -0x20) = iStack_d0;\n      *(undefined4 *)(puVar14 + -0x24) = 0x4e727;\n      iVar10 = __gmpn_pow_1();\n      *(int *)(puVar14 + -0x10) = iStack_cc;\n      *(uint **)(puVar14 + -0x14) = local_c0;\n      *(int *)(puVar14 + -0x18) = iVar10;\n      *(int *)(puVar14 + -0x1c) = iStack_d0;\n      *(int *)(puVar14 + -0x20) = iVar15;\n      iStack_dc = iVar10;\n      *(undefined4 *)(puVar14 + -0x24) = 0x4e74f;\n      __gmpn_mul();\n      iVar10 = iStack_d4;\n      uVar11 = uStack_d8;\n      iVar6 = (iStack_cc + iStack_dc) -\n              (uint)(*(int *)(iVar15 + -4 + (iStack_cc + iStack_dc) * 4) == 0);\n      puVar7 = local_c0;\n      if (iVar6 <= (int)uStack_d8) {\n        uVar5 = uStack_d8;\n        if (uStack_d8 != iVar6) goto LAB_0004eb66;\n        do {\n          uVar5 = uVar5 + -1;\n          if ((int)uVar5 < 0) {\n            iStack_108 = iStack_dc;\n            uStack_114 = 0;\n            iStack_10c = iStack_104;\n            uStack_e8 = puStack_fc[iStack_104] - puStack_fc[iStack_104 + 1];\n            iStack_118 = puStack_fc[iStack_104 + 1] - puStack_fc[iStack_104];\n            uStack_f0 = uStack_e8 >> 5;\n            uStack_f4 = iStack_118 + uStack_e4;\n            uVar11 = uStack_e4 - 1;\n            uStack_e4 = uStack_e8 & 0x1f;\n            puVar12 = (uint *)((uVar11 >> 5) - (uStack_f4 >> 5));\n            uStack_100 = uStack_f0 * 4;\n            uVar11 = 0;\n            iStack_110 = (int)puVar12 + 1;\n            uVar5 = uStack_f4 >> 5;\n            puVar7 = (uint *)(iStack_d4 + uStack_f0 * 4);\n            iStack_dc = iVar15;\n            uStack_d8 = uStack_f0;\n            goto LAB_0004e83d;\n          }\n          uVar13 = *(uint *)(iVar4 + uVar5 * 4);\n          uVar3 = *(uint *)(iVar15 + uVar5 * 4);\n        } while (uVar3 == uVar13);\n        if (uVar3 <= uVar13) goto LAB_0004eb66;\n      }\n      do {\n        uVar11 = *puVar7;\n        *puVar7 = *puVar7 - 1;\n        puVar7 = puVar7 + 1;\n      } while (uVar11 == 0);\n    }" ({ "{") (expression_statement "*(int *)(puVar14 + -0x10) = iVar15;" (assignment_expression "*(int *)(puVar14 + -0x10) = iVar15" (pointer_expression "*(int *)(puVar14 + -0x10)" (* "*") (cast_expression "(int *)(puVar14 + -0x10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar14 + -0x10)" (( "(") (binary_expression "puVar14 + -0x10" (identifier "puVar14") (+ "+") (number_literal "-0x10")) () ")")))) (= "=") (identifier "iVar15")) (; ";")) (expression_statement "*(uint *)(puVar14 + -0x14) = uStack_ec;" (assignment_expression "*(uint *)(puVar14 + -0x14) = uStack_ec" (pointer_expression "*(uint *)(puVar14 + -0x14)" (* "*") (cast_expression "(uint *)(puVar14 + -0x14)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar14 + -0x14)" (( "(") (binary_expression "puVar14 + -0x14" (identifier "puVar14") (+ "+") (number_literal "-0x14")) () ")")))) (= "=") (identifier "uStack_ec")) (; ";")) (expression_statement "*(int *)(puVar14 + -0x18) = iStack_cc;" (assignment_expression "*(int *)(puVar14 + -0x18) = iStack_cc" (pointer_expression "*(int *)(puVar14 + -0x18)" (* "*") (cast_expression "(int *)(puVar14 + -0x18)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar14 + -0x18)" (( "(") (binary_expression "puVar14 + -0x18" (identifier "puVar14") (+ "+") (number_literal "-0x18")) () ")")))) (= "=") (identifier "iStack_cc")) (; ";")) (expression_statement "*(uint **)(puVar14 + -0x1c) = local_c0;" (assignment_expression "*(uint **)(puVar14 + -0x1c) = local_c0" (pointer_expression "*(uint **)(puVar14 + -0x1c)" (* "*") (cast_expression "(uint **)(puVar14 + -0x1c)" (( "(") (type_descriptor "uint **" (type_identifier "uint") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar14 + -0x1c)" (( "(") (binary_expression "puVar14 + -0x1c" (identifier "puVar14") (+ "+") (number_literal "-0x1c")) () ")")))) (= "=") (identifier "local_c0")) (; ";")) (expression_statement "*(int *)(puVar14 + -0x20) = iStack_d0;" (assignment_expression "*(int *)(puVar14 + -0x20) = iStack_d0" (pointer_expression "*(int *)(puVar14 + -0x20)" (* "*") (cast_expression "(int *)(puVar14 + -0x20)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar14 + -0x20)" (( "(") (binary_expression "puVar14 + -0x20" (identifier "puVar14") (+ "+") (number_literal "-0x20")) () ")")))) (= "=") (identifier "iStack_d0")) (; ";")) (expression_statement "*(undefined4 *)(puVar14 + -0x24) = 0x4e727;" (assignment_expression "*(undefined4 *)(puVar14 + -0x24) = 0x4e727" (pointer_expression "*(undefined4 *)(puVar14 + -0x24)" (* "*") (cast_expression "(undefined4 *)(puVar14 + -0x24)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar14 + -0x24)" (( "(") (binary_expression "puVar14 + -0x24" (identifier "puVar14") (+ "+") (number_literal "-0x24")) () ")")))) (= "=") (number_literal "0x4e727")) (; ";")) (expression_statement "iVar10 = __gmpn_pow_1();" (assignment_expression "iVar10 = __gmpn_pow_1()" (identifier "iVar10") (= "=") (call_expression "__gmpn_pow_1()" (identifier "__gmpn_pow_1") (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "*(int *)(puVar14 + -0x10) = iStack_cc;" (assignment_expression "*(int *)(puVar14 + -0x10) = iStack_cc" (pointer_expression "*(int *)(puVar14 + -0x10)" (* "*") (cast_expression "(int *)(puVar14 + -0x10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar14 + -0x10)" (( "(") (binary_expression "puVar14 + -0x10" (identifier "puVar14") (+ "+") (number_literal "-0x10")) () ")")))) (= "=") (identifier "iStack_cc")) (; ";")) (expression_statement "*(uint **)(puVar14 + -0x14) = local_c0;" (assignment_expression "*(uint **)(puVar14 + -0x14) = local_c0" (pointer_expression "*(uint **)(puVar14 + -0x14)" (* "*") (cast_expression "(uint **)(puVar14 + -0x14)" (( "(") (type_descriptor "uint **" (type_identifier "uint") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar14 + -0x14)" (( "(") (binary_expression "puVar14 + -0x14" (identifier "puVar14") (+ "+") (number_literal "-0x14")) () ")")))) (= "=") (identifier "local_c0")) (; ";")) (expression_statement "*(int *)(puVar14 + -0x18) = iVar10;" (assignment_expression "*(int *)(puVar14 + -0x18) = iVar10" (pointer_expression "*(int *)(puVar14 + -0x18)" (* "*") (cast_expression "(int *)(puVar14 + -0x18)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar14 + -0x18)" (( "(") (binary_expression "puVar14 + -0x18" (identifier "puVar14") (+ "+") (number_literal "-0x18")) () ")")))) (= "=") (identifier "iVar10")) (; ";")) (expression_statement "*(int *)(puVar14 + -0x1c) = iStack_d0;" (assignment_expression "*(int *)(puVar14 + -0x1c) = iStack_d0" (pointer_expression "*(int *)(puVar14 + -0x1c)" (* "*") (cast_expression "(int *)(puVar14 + -0x1c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar14 + -0x1c)" (( "(") (binary_expression "puVar14 + -0x1c" (identifier "puVar14") (+ "+") (number_literal "-0x1c")) () ")")))) (= "=") (identifier "iStack_d0")) (; ";")) (expression_statement "*(int *)(puVar14 + -0x20) = iVar15;" (assignment_expression "*(int *)(puVar14 + -0x20) = iVar15" (pointer_expression "*(int *)(puVar14 + -0x20)" (* "*") (cast_expression "(int *)(puVar14 + -0x20)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar14 + -0x20)" (( "(") (binary_expression "puVar14 + -0x20" (identifier "puVar14") (+ "+") (number_literal "-0x20")) () ")")))) (= "=") (identifier "iVar15")) (; ";")) (expression_statement "iStack_dc = iVar10;" (assignment_expression "iStack_dc = iVar10" (identifier "iStack_dc") (= "=") (identifier "iVar10")) (; ";")) (expression_statement "*(undefined4 *)(puVar14 + -0x24) = 0x4e74f;" (assignment_expression "*(undefined4 *)(puVar14 + -0x24) = 0x4e74f" (pointer_expression "*(undefined4 *)(puVar14 + -0x24)" (* "*") (cast_expression "(undefined4 *)(puVar14 + -0x24)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar14 + -0x24)" (( "(") (binary_expression "puVar14 + -0x24" (identifier "puVar14") (+ "+") (number_literal "-0x24")) () ")")))) (= "=") (number_literal "0x4e74f")) (; ";")) (expression_statement "__gmpn_mul();" (call_expression "__gmpn_mul()" (identifier "__gmpn_mul") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "iVar10 = iStack_d4;" (assignment_expression "iVar10 = iStack_d4" (identifier "iVar10") (= "=") (identifier "iStack_d4")) (; ";")) (expression_statement "uVar11 = uStack_d8;" (assignment_expression "uVar11 = uStack_d8" (identifier "uVar11") (= "=") (identifier "uStack_d8")) (; ";")) (expression_statement "iVar6 = (iStack_cc + iStack_dc) -\n              (uint)(*(int *)(iVar15 + -4 + (iStack_cc + iStack_dc) * 4) == 0);" (assignment_expression "iVar6 = (iStack_cc + iStack_dc) -\n              (uint)(*(int *)(iVar15 + -4 + (iStack_cc + iStack_dc) * 4) == 0)" (identifier "iVar6") (= "=") (binary_expression "(iStack_cc + iStack_dc) -\n              (uint)(*(int *)(iVar15 + -4 + (iStack_cc + iStack_dc) * 4) == 0)" (parenthesized_expression "(iStack_cc + iStack_dc)" (( "(") (binary_expression "iStack_cc + iStack_dc" (identifier "iStack_cc") (+ "+") (identifier "iStack_dc")) () ")")) (- "-") (call_expression "(uint)(*(int *)(iVar15 + -4 + (iStack_cc + iStack_dc) * 4) == 0)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(*(int *)(iVar15 + -4 + (iStack_cc + iStack_dc) * 4) == 0)" (( "(") (binary_expression "*(int *)(iVar15 + -4 + (iStack_cc + iStack_dc) * 4) == 0" (pointer_expression "*(int *)(iVar15 + -4 + (iStack_cc + iStack_dc) * 4)" (* "*") (cast_expression "(int *)(iVar15 + -4 + (iStack_cc + iStack_dc) * 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar15 + -4 + (iStack_cc + iStack_dc) * 4)" (( "(") (binary_expression "iVar15 + -4 + (iStack_cc + iStack_dc) * 4" (binary_expression "iVar15 + -4" (identifier "iVar15") (+ "+") (number_literal "-4")) (+ "+") (binary_expression "(iStack_cc + iStack_dc) * 4" (parenthesized_expression "(iStack_cc + iStack_dc)" (( "(") (binary_expression "iStack_cc + iStack_dc" (identifier "iStack_cc") (+ "+") (identifier "iStack_dc")) () ")")) (* "*") (number_literal "4"))) () ")")))) (== "==") (number_literal "0")) () ")"))))) (; ";")) (expression_statement "puVar7 = local_c0;" (assignment_expression "puVar7 = local_c0" (identifier "puVar7") (= "=") (identifier "local_c0")) (; ";")) (if_statement "if (iVar6 <= (int)uStack_d8) {\n        uVar5 = uStack_d8;\n        if (uStack_d8 != iVar6) goto LAB_0004eb66;\n        do {\n          uVar5 = uVar5 + -1;\n          if ((int)uVar5 < 0) {\n            iStack_108 = iStack_dc;\n            uStack_114 = 0;\n            iStack_10c = iStack_104;\n            uStack_e8 = puStack_fc[iStack_104] - puStack_fc[iStack_104 + 1];\n            iStack_118 = puStack_fc[iStack_104 + 1] - puStack_fc[iStack_104];\n            uStack_f0 = uStack_e8 >> 5;\n            uStack_f4 = iStack_118 + uStack_e4;\n            uVar11 = uStack_e4 - 1;\n            uStack_e4 = uStack_e8 & 0x1f;\n            puVar12 = (uint *)((uVar11 >> 5) - (uStack_f4 >> 5));\n            uStack_100 = uStack_f0 * 4;\n            uVar11 = 0;\n            iStack_110 = (int)puVar12 + 1;\n            uVar5 = uStack_f4 >> 5;\n            puVar7 = (uint *)(iStack_d4 + uStack_f0 * 4);\n            iStack_dc = iVar15;\n            uStack_d8 = uStack_f0;\n            goto LAB_0004e83d;\n          }\n          uVar13 = *(uint *)(iVar4 + uVar5 * 4);\n          uVar3 = *(uint *)(iVar15 + uVar5 * 4);\n        } while (uVar3 == uVar13);\n        if (uVar3 <= uVar13) goto LAB_0004eb66;\n      }" (if "if") (parenthesized_expression "(iVar6 <= (int)uStack_d8)" (( "(") (binary_expression "iVar6 <= (int)uStack_d8" (identifier "iVar6") (<= "<=") (cast_expression "(int)uStack_d8" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uStack_d8"))) () ")")) (compound_statement "{\n        uVar5 = uStack_d8;\n        if (uStack_d8 != iVar6) goto LAB_0004eb66;\n        do {\n          uVar5 = uVar5 + -1;\n          if ((int)uVar5 < 0) {\n            iStack_108 = iStack_dc;\n            uStack_114 = 0;\n            iStack_10c = iStack_104;\n            uStack_e8 = puStack_fc[iStack_104] - puStack_fc[iStack_104 + 1];\n            iStack_118 = puStack_fc[iStack_104 + 1] - puStack_fc[iStack_104];\n            uStack_f0 = uStack_e8 >> 5;\n            uStack_f4 = iStack_118 + uStack_e4;\n            uVar11 = uStack_e4 - 1;\n            uStack_e4 = uStack_e8 & 0x1f;\n            puVar12 = (uint *)((uVar11 >> 5) - (uStack_f4 >> 5));\n            uStack_100 = uStack_f0 * 4;\n            uVar11 = 0;\n            iStack_110 = (int)puVar12 + 1;\n            uVar5 = uStack_f4 >> 5;\n            puVar7 = (uint *)(iStack_d4 + uStack_f0 * 4);\n            iStack_dc = iVar15;\n            uStack_d8 = uStack_f0;\n            goto LAB_0004e83d;\n          }\n          uVar13 = *(uint *)(iVar4 + uVar5 * 4);\n          uVar3 = *(uint *)(iVar15 + uVar5 * 4);\n        } while (uVar3 == uVar13);\n        if (uVar3 <= uVar13) goto LAB_0004eb66;\n      }" ({ "{") (expression_statement "uVar5 = uStack_d8;" (assignment_expression "uVar5 = uStack_d8" (identifier "uVar5") (= "=") (identifier "uStack_d8")) (; ";")) (if_statement "if (uStack_d8 != iVar6) goto LAB_0004eb66;" (if "if") (parenthesized_expression "(uStack_d8 != iVar6)" (( "(") (binary_expression "uStack_d8 != iVar6" (identifier "uStack_d8") (!= "!=") (identifier "iVar6")) () ")")) (goto_statement "goto LAB_0004eb66;" (goto "goto") (statement_identifier "LAB_0004eb66") (; ";"))) (do_statement "do {\n          uVar5 = uVar5 + -1;\n          if ((int)uVar5 < 0) {\n            iStack_108 = iStack_dc;\n            uStack_114 = 0;\n            iStack_10c = iStack_104;\n            uStack_e8 = puStack_fc[iStack_104] - puStack_fc[iStack_104 + 1];\n            iStack_118 = puStack_fc[iStack_104 + 1] - puStack_fc[iStack_104];\n            uStack_f0 = uStack_e8 >> 5;\n            uStack_f4 = iStack_118 + uStack_e4;\n            uVar11 = uStack_e4 - 1;\n            uStack_e4 = uStack_e8 & 0x1f;\n            puVar12 = (uint *)((uVar11 >> 5) - (uStack_f4 >> 5));\n            uStack_100 = uStack_f0 * 4;\n            uVar11 = 0;\n            iStack_110 = (int)puVar12 + 1;\n            uVar5 = uStack_f4 >> 5;\n            puVar7 = (uint *)(iStack_d4 + uStack_f0 * 4);\n            iStack_dc = iVar15;\n            uStack_d8 = uStack_f0;\n            goto LAB_0004e83d;\n          }\n          uVar13 = *(uint *)(iVar4 + uVar5 * 4);\n          uVar3 = *(uint *)(iVar15 + uVar5 * 4);\n        } while (uVar3 == uVar13);" (do "do") (compound_statement "{\n          uVar5 = uVar5 + -1;\n          if ((int)uVar5 < 0) {\n            iStack_108 = iStack_dc;\n            uStack_114 = 0;\n            iStack_10c = iStack_104;\n            uStack_e8 = puStack_fc[iStack_104] - puStack_fc[iStack_104 + 1];\n            iStack_118 = puStack_fc[iStack_104 + 1] - puStack_fc[iStack_104];\n            uStack_f0 = uStack_e8 >> 5;\n            uStack_f4 = iStack_118 + uStack_e4;\n            uVar11 = uStack_e4 - 1;\n            uStack_e4 = uStack_e8 & 0x1f;\n            puVar12 = (uint *)((uVar11 >> 5) - (uStack_f4 >> 5));\n            uStack_100 = uStack_f0 * 4;\n            uVar11 = 0;\n            iStack_110 = (int)puVar12 + 1;\n            uVar5 = uStack_f4 >> 5;\n            puVar7 = (uint *)(iStack_d4 + uStack_f0 * 4);\n            iStack_dc = iVar15;\n            uStack_d8 = uStack_f0;\n            goto LAB_0004e83d;\n          }\n          uVar13 = *(uint *)(iVar4 + uVar5 * 4);\n          uVar3 = *(uint *)(iVar15 + uVar5 * 4);\n        }" ({ "{") (expression_statement "uVar5 = uVar5 + -1;" (assignment_expression "uVar5 = uVar5 + -1" (identifier "uVar5") (= "=") (binary_expression "uVar5 + -1" (identifier "uVar5") (+ "+") (number_literal "-1"))) (; ";")) (if_statement "if ((int)uVar5 < 0) {\n            iStack_108 = iStack_dc;\n            uStack_114 = 0;\n            iStack_10c = iStack_104;\n            uStack_e8 = puStack_fc[iStack_104] - puStack_fc[iStack_104 + 1];\n            iStack_118 = puStack_fc[iStack_104 + 1] - puStack_fc[iStack_104];\n            uStack_f0 = uStack_e8 >> 5;\n            uStack_f4 = iStack_118 + uStack_e4;\n            uVar11 = uStack_e4 - 1;\n            uStack_e4 = uStack_e8 & 0x1f;\n            puVar12 = (uint *)((uVar11 >> 5) - (uStack_f4 >> 5));\n            uStack_100 = uStack_f0 * 4;\n            uVar11 = 0;\n            iStack_110 = (int)puVar12 + 1;\n            uVar5 = uStack_f4 >> 5;\n            puVar7 = (uint *)(iStack_d4 + uStack_f0 * 4);\n            iStack_dc = iVar15;\n            uStack_d8 = uStack_f0;\n            goto LAB_0004e83d;\n          }" (if "if") (parenthesized_expression "((int)uVar5 < 0)" (( "(") (binary_expression "(int)uVar5 < 0" (cast_expression "(int)uVar5" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar5")) (< "<") (number_literal "0")) () ")")) (compound_statement "{\n            iStack_108 = iStack_dc;\n            uStack_114 = 0;\n            iStack_10c = iStack_104;\n            uStack_e8 = puStack_fc[iStack_104] - puStack_fc[iStack_104 + 1];\n            iStack_118 = puStack_fc[iStack_104 + 1] - puStack_fc[iStack_104];\n            uStack_f0 = uStack_e8 >> 5;\n            uStack_f4 = iStack_118 + uStack_e4;\n            uVar11 = uStack_e4 - 1;\n            uStack_e4 = uStack_e8 & 0x1f;\n            puVar12 = (uint *)((uVar11 >> 5) - (uStack_f4 >> 5));\n            uStack_100 = uStack_f0 * 4;\n            uVar11 = 0;\n            iStack_110 = (int)puVar12 + 1;\n            uVar5 = uStack_f4 >> 5;\n            puVar7 = (uint *)(iStack_d4 + uStack_f0 * 4);\n            iStack_dc = iVar15;\n            uStack_d8 = uStack_f0;\n            goto LAB_0004e83d;\n          }" ({ "{") (expression_statement "iStack_108 = iStack_dc;" (assignment_expression "iStack_108 = iStack_dc" (identifier "iStack_108") (= "=") (identifier "iStack_dc")) (; ";")) (expression_statement "uStack_114 = 0;" (assignment_expression "uStack_114 = 0" (identifier "uStack_114") (= "=") (number_literal "0")) (; ";")) (expression_statement "iStack_10c = iStack_104;" (assignment_expression "iStack_10c = iStack_104" (identifier "iStack_10c") (= "=") (identifier "iStack_104")) (; ";")) (expression_statement "uStack_e8 = puStack_fc[iStack_104] - puStack_fc[iStack_104 + 1];" (assignment_expression "uStack_e8 = puStack_fc[iStack_104] - puStack_fc[iStack_104 + 1]" (identifier "uStack_e8") (= "=") (binary_expression "puStack_fc[iStack_104] - puStack_fc[iStack_104 + 1]" (subscript_expression "puStack_fc[iStack_104]" (identifier "puStack_fc") ([ "[") (identifier "iStack_104") (] "]")) (- "-") (subscript_expression "puStack_fc[iStack_104 + 1]" (identifier "puStack_fc") ([ "[") (binary_expression "iStack_104 + 1" (identifier "iStack_104") (+ "+") (number_literal "1")) (] "]")))) (; ";")) (expression_statement "iStack_118 = puStack_fc[iStack_104 + 1] - puStack_fc[iStack_104];" (assignment_expression "iStack_118 = puStack_fc[iStack_104 + 1] - puStack_fc[iStack_104]" (identifier "iStack_118") (= "=") (binary_expression "puStack_fc[iStack_104 + 1] - puStack_fc[iStack_104]" (subscript_expression "puStack_fc[iStack_104 + 1]" (identifier "puStack_fc") ([ "[") (binary_expression "iStack_104 + 1" (identifier "iStack_104") (+ "+") (number_literal "1")) (] "]")) (- "-") (subscript_expression "puStack_fc[iStack_104]" (identifier "puStack_fc") ([ "[") (identifier "iStack_104") (] "]")))) (; ";")) (expression_statement "uStack_f0 = uStack_e8 >> 5;" (assignment_expression "uStack_f0 = uStack_e8 >> 5" (identifier "uStack_f0") (= "=") (binary_expression "uStack_e8 >> 5" (identifier "uStack_e8") (>> ">>") (number_literal "5"))) (; ";")) (expression_statement "uStack_f4 = iStack_118 + uStack_e4;" (assignment_expression "uStack_f4 = iStack_118 + uStack_e4" (identifier "uStack_f4") (= "=") (binary_expression "iStack_118 + uStack_e4" (identifier "iStack_118") (+ "+") (identifier "uStack_e4"))) (; ";")) (expression_statement "uVar11 = uStack_e4 - 1;" (assignment_expression "uVar11 = uStack_e4 - 1" (identifier "uVar11") (= "=") (binary_expression "uStack_e4 - 1" (identifier "uStack_e4") (- "-") (number_literal "1"))) (; ";")) (expression_statement "uStack_e4 = uStack_e8 & 0x1f;" (assignment_expression "uStack_e4 = uStack_e8 & 0x1f" (identifier "uStack_e4") (= "=") (binary_expression "uStack_e8 & 0x1f" (identifier "uStack_e8") (& "&") (number_literal "0x1f"))) (; ";")) (expression_statement "puVar12 = (uint *)((uVar11 >> 5) - (uStack_f4 >> 5));" (assignment_expression "puVar12 = (uint *)((uVar11 >> 5) - (uStack_f4 >> 5))" (identifier "puVar12") (= "=") (cast_expression "(uint *)((uVar11 >> 5) - (uStack_f4 >> 5))" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((uVar11 >> 5) - (uStack_f4 >> 5))" (( "(") (binary_expression "(uVar11 >> 5) - (uStack_f4 >> 5)" (parenthesized_expression "(uVar11 >> 5)" (( "(") (binary_expression "uVar11 >> 5" (identifier "uVar11") (>> ">>") (number_literal "5")) () ")")) (- "-") (parenthesized_expression "(uStack_f4 >> 5)" (( "(") (binary_expression "uStack_f4 >> 5" (identifier "uStack_f4") (>> ">>") (number_literal "5")) () ")"))) () ")")))) (; ";")) (expression_statement "uStack_100 = uStack_f0 * 4;" (assignment_expression "uStack_100 = uStack_f0 * 4" (identifier "uStack_100") (= "=") (binary_expression "uStack_f0 * 4" (identifier "uStack_f0") (* "*") (number_literal "4"))) (; ";")) (expression_statement "uVar11 = 0;" (assignment_expression "uVar11 = 0" (identifier "uVar11") (= "=") (number_literal "0")) (; ";")) (expression_statement "iStack_110 = (int)puVar12 + 1;" (assignment_expression "iStack_110 = (int)puVar12 + 1" (identifier "iStack_110") (= "=") (binary_expression "(int)puVar12 + 1" (cast_expression "(int)puVar12" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar12")) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "uVar5 = uStack_f4 >> 5;" (assignment_expression "uVar5 = uStack_f4 >> 5" (identifier "uVar5") (= "=") (binary_expression "uStack_f4 >> 5" (identifier "uStack_f4") (>> ">>") (number_literal "5"))) (; ";")) (expression_statement "puVar7 = (uint *)(iStack_d4 + uStack_f0 * 4);" (assignment_expression "puVar7 = (uint *)(iStack_d4 + uStack_f0 * 4)" (identifier "puVar7") (= "=") (cast_expression "(uint *)(iStack_d4 + uStack_f0 * 4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iStack_d4 + uStack_f0 * 4)" (( "(") (binary_expression "iStack_d4 + uStack_f0 * 4" (identifier "iStack_d4") (+ "+") (binary_expression "uStack_f0 * 4" (identifier "uStack_f0") (* "*") (number_literal "4"))) () ")")))) (; ";")) (expression_statement "iStack_dc = iVar15;" (assignment_expression "iStack_dc = iVar15" (identifier "iStack_dc") (= "=") (identifier "iVar15")) (; ";")) (expression_statement "uStack_d8 = uStack_f0;" (assignment_expression "uStack_d8 = uStack_f0" (identifier "uStack_d8") (= "=") (identifier "uStack_f0")) (; ";")) (goto_statement "goto LAB_0004e83d;" (goto "goto") (statement_identifier "LAB_0004e83d") (; ";")) (} "}"))) (expression_statement "uVar13 = *(uint *)(iVar4 + uVar5 * 4);" (assignment_expression "uVar13 = *(uint *)(iVar4 + uVar5 * 4)" (identifier "uVar13") (= "=") (pointer_expression "*(uint *)(iVar4 + uVar5 * 4)" (* "*") (cast_expression "(uint *)(iVar4 + uVar5 * 4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar4 + uVar5 * 4)" (( "(") (binary_expression "iVar4 + uVar5 * 4" (identifier "iVar4") (+ "+") (binary_expression "uVar5 * 4" (identifier "uVar5") (* "*") (number_literal "4"))) () ")"))))) (; ";")) (expression_statement "uVar3 = *(uint *)(iVar15 + uVar5 * 4);" (assignment_expression "uVar3 = *(uint *)(iVar15 + uVar5 * 4)" (identifier "uVar3") (= "=") (pointer_expression "*(uint *)(iVar15 + uVar5 * 4)" (* "*") (cast_expression "(uint *)(iVar15 + uVar5 * 4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar15 + uVar5 * 4)" (( "(") (binary_expression "iVar15 + uVar5 * 4" (identifier "iVar15") (+ "+") (binary_expression "uVar5 * 4" (identifier "uVar5") (* "*") (number_literal "4"))) () ")"))))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(uVar3 == uVar13)" (( "(") (binary_expression "uVar3 == uVar13" (identifier "uVar3") (== "==") (identifier "uVar13")) () ")")) (; ";")) (if_statement "if (uVar3 <= uVar13) goto LAB_0004eb66;" (if "if") (parenthesized_expression "(uVar3 <= uVar13)" (( "(") (binary_expression "uVar3 <= uVar13" (identifier "uVar3") (<= "<=") (identifier "uVar13")) () ")")) (goto_statement "goto LAB_0004eb66;" (goto "goto") (statement_identifier "LAB_0004eb66") (; ";"))) (} "}"))) (do_statement "do {\n        uVar11 = *puVar7;\n        *puVar7 = *puVar7 - 1;\n        puVar7 = puVar7 + 1;\n      } while (uVar11 == 0);" (do "do") (compound_statement "{\n        uVar11 = *puVar7;\n        *puVar7 = *puVar7 - 1;\n        puVar7 = puVar7 + 1;\n      }" ({ "{") (expression_statement "uVar11 = *puVar7;" (assignment_expression "uVar11 = *puVar7" (identifier "uVar11") (= "=") (pointer_expression "*puVar7" (* "*") (identifier "puVar7"))) (; ";")) (expression_statement "*puVar7 = *puVar7 - 1;" (assignment_expression "*puVar7 = *puVar7 - 1" (pointer_expression "*puVar7" (* "*") (identifier "puVar7")) (= "=") (binary_expression "*puVar7 - 1" (pointer_expression "*puVar7" (* "*") (identifier "puVar7")) (- "-") (number_literal "1"))) (; ";")) (expression_statement "puVar7 = puVar7 + 1;" (assignment_expression "puVar7 = puVar7 + 1" (identifier "puVar7") (= "=") (binary_expression "puVar7 + 1" (identifier "puVar7") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(uVar11 == 0)" (( "(") (binary_expression "uVar11 == 0" (identifier "uVar11") (== "==") (number_literal "0")) () ")")) (; ";")) (} "}")) (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (; ";")) (} "}"))) (expression_statement "iStack_cc = 1;" (assignment_expression "iStack_cc = 1" (identifier "iStack_cc") (= "=") (number_literal "1")) (; ";")) (labeled_statement "LAB_0004e9ce:\n  piVar9 = local_f8;" (statement_identifier "LAB_0004e9ce") (: ":") (expression_statement "piVar9 = local_f8;" (assignment_expression "piVar9 = local_f8" (identifier "piVar9") (= "=") (identifier "local_f8")) (; ";"))) (expression_statement "local_c0 = (uint *)uVar16;" (assignment_expression "local_c0 = (uint *)uVar16" (identifier "local_c0") (= "=") (cast_expression "(uint *)uVar16" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "uVar16"))) (; ";")) (if_statement "if ((param_3 == 0) || (*local_c0 < 2)) {\n    do {\n      local_124 = (int *)((ulonglong)uVar16 >> 0x20);\n      local_c0 = (uint *)uVar16;\n      *(int *)(puVar14 + -0x10) = iStack_d0;\n      *(uint *)(puVar14 + -0x14) = param_2;\n      *(int *)(puVar14 + -0x18) = iStack_cc;\n      *(uint **)(puVar14 + -0x1c) = local_c0;\n      *(int *)(puVar14 + -0x20) = iVar10;\n      *(undefined4 *)(puVar14 + -0x24) = 0x4ea47;\n      uVar11 = __gmpn_pow_1();\n      uVar16 = CONCAT44(local_124,local_c0);\n      if ((int)uVar11 <= (int)param_1) {\n        uVar5 = param_1;\n        if (param_1 != uVar11) goto LAB_0004efbf;\n        do {\n          uVar5 = uVar5 - 1;\n          if ((int)uVar5 < 0) {\n            uStack_d8 = 0;\n            uVar16 = CONCAT44(local_124,local_c0);\n            goto LAB_0004e9e0;\n          }\n          uVar13 = *(uint *)(iVar10 + uVar5 * 4);\n        } while (uVar13 == piVar9[uVar5]);\n        if (uVar13 <= (uint)piVar9[uVar5]) goto LAB_0004efbf;\n      }\n      do {\n        iVar15 = *local_c0;\n        *local_c0 = *local_c0 + -1;\n        local_c0 = (uint *)((int *)local_c0 + 1);\n      } while (iVar15 == 0);\n    } while( true );\n  }" (if "if") (parenthesized_expression "((param_3 == 0) || (*local_c0 < 2))" (( "(") (binary_expression "(param_3 == 0) || (*local_c0 < 2)" (parenthesized_expression "(param_3 == 0)" (( "(") (binary_expression "param_3 == 0" (identifier "param_3") (== "==") (number_literal "0")) () ")")) (|| "||") (parenthesized_expression "(*local_c0 < 2)" (( "(") (binary_expression "*local_c0 < 2" (pointer_expression "*local_c0" (* "*") (identifier "local_c0")) (< "<") (number_literal "2")) () ")"))) () ")")) (compound_statement "{\n    do {\n      local_124 = (int *)((ulonglong)uVar16 >> 0x20);\n      local_c0 = (uint *)uVar16;\n      *(int *)(puVar14 + -0x10) = iStack_d0;\n      *(uint *)(puVar14 + -0x14) = param_2;\n      *(int *)(puVar14 + -0x18) = iStack_cc;\n      *(uint **)(puVar14 + -0x1c) = local_c0;\n      *(int *)(puVar14 + -0x20) = iVar10;\n      *(undefined4 *)(puVar14 + -0x24) = 0x4ea47;\n      uVar11 = __gmpn_pow_1();\n      uVar16 = CONCAT44(local_124,local_c0);\n      if ((int)uVar11 <= (int)param_1) {\n        uVar5 = param_1;\n        if (param_1 != uVar11) goto LAB_0004efbf;\n        do {\n          uVar5 = uVar5 - 1;\n          if ((int)uVar5 < 0) {\n            uStack_d8 = 0;\n            uVar16 = CONCAT44(local_124,local_c0);\n            goto LAB_0004e9e0;\n          }\n          uVar13 = *(uint *)(iVar10 + uVar5 * 4);\n        } while (uVar13 == piVar9[uVar5]);\n        if (uVar13 <= (uint)piVar9[uVar5]) goto LAB_0004efbf;\n      }\n      do {\n        iVar15 = *local_c0;\n        *local_c0 = *local_c0 + -1;\n        local_c0 = (uint *)((int *)local_c0 + 1);\n      } while (iVar15 == 0);\n    } while( true );\n  }" ({ "{") (do_statement "do {\n      local_124 = (int *)((ulonglong)uVar16 >> 0x20);\n      local_c0 = (uint *)uVar16;\n      *(int *)(puVar14 + -0x10) = iStack_d0;\n      *(uint *)(puVar14 + -0x14) = param_2;\n      *(int *)(puVar14 + -0x18) = iStack_cc;\n      *(uint **)(puVar14 + -0x1c) = local_c0;\n      *(int *)(puVar14 + -0x20) = iVar10;\n      *(undefined4 *)(puVar14 + -0x24) = 0x4ea47;\n      uVar11 = __gmpn_pow_1();\n      uVar16 = CONCAT44(local_124,local_c0);\n      if ((int)uVar11 <= (int)param_1) {\n        uVar5 = param_1;\n        if (param_1 != uVar11) goto LAB_0004efbf;\n        do {\n          uVar5 = uVar5 - 1;\n          if ((int)uVar5 < 0) {\n            uStack_d8 = 0;\n            uVar16 = CONCAT44(local_124,local_c0);\n            goto LAB_0004e9e0;\n          }\n          uVar13 = *(uint *)(iVar10 + uVar5 * 4);\n        } while (uVar13 == piVar9[uVar5]);\n        if (uVar13 <= (uint)piVar9[uVar5]) goto LAB_0004efbf;\n      }\n      do {\n        iVar15 = *local_c0;\n        *local_c0 = *local_c0 + -1;\n        local_c0 = (uint *)((int *)local_c0 + 1);\n      } while (iVar15 == 0);\n    } while( true );" (do "do") (compound_statement "{\n      local_124 = (int *)((ulonglong)uVar16 >> 0x20);\n      local_c0 = (uint *)uVar16;\n      *(int *)(puVar14 + -0x10) = iStack_d0;\n      *(uint *)(puVar14 + -0x14) = param_2;\n      *(int *)(puVar14 + -0x18) = iStack_cc;\n      *(uint **)(puVar14 + -0x1c) = local_c0;\n      *(int *)(puVar14 + -0x20) = iVar10;\n      *(undefined4 *)(puVar14 + -0x24) = 0x4ea47;\n      uVar11 = __gmpn_pow_1();\n      uVar16 = CONCAT44(local_124,local_c0);\n      if ((int)uVar11 <= (int)param_1) {\n        uVar5 = param_1;\n        if (param_1 != uVar11) goto LAB_0004efbf;\n        do {\n          uVar5 = uVar5 - 1;\n          if ((int)uVar5 < 0) {\n            uStack_d8 = 0;\n            uVar16 = CONCAT44(local_124,local_c0);\n            goto LAB_0004e9e0;\n          }\n          uVar13 = *(uint *)(iVar10 + uVar5 * 4);\n        } while (uVar13 == piVar9[uVar5]);\n        if (uVar13 <= (uint)piVar9[uVar5]) goto LAB_0004efbf;\n      }\n      do {\n        iVar15 = *local_c0;\n        *local_c0 = *local_c0 + -1;\n        local_c0 = (uint *)((int *)local_c0 + 1);\n      } while (iVar15 == 0);\n    }" ({ "{") (expression_statement "local_124 = (int *)((ulonglong)uVar16 >> 0x20);" (assignment_expression "local_124 = (int *)((ulonglong)uVar16 >> 0x20)" (identifier "local_124") (= "=") (cast_expression "(int *)((ulonglong)uVar16 >> 0x20)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((ulonglong)uVar16 >> 0x20)" (( "(") (binary_expression "(ulonglong)uVar16 >> 0x20" (cast_expression "(ulonglong)uVar16" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "uVar16")) (>> ">>") (number_literal "0x20")) () ")")))) (; ";")) (expression_statement "local_c0 = (uint *)uVar16;" (assignment_expression "local_c0 = (uint *)uVar16" (identifier "local_c0") (= "=") (cast_expression "(uint *)uVar16" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "uVar16"))) (; ";")) (expression_statement "*(int *)(puVar14 + -0x10) = iStack_d0;" (assignment_expression "*(int *)(puVar14 + -0x10) = iStack_d0" (pointer_expression "*(int *)(puVar14 + -0x10)" (* "*") (cast_expression "(int *)(puVar14 + -0x10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar14 + -0x10)" (( "(") (binary_expression "puVar14 + -0x10" (identifier "puVar14") (+ "+") (number_literal "-0x10")) () ")")))) (= "=") (identifier "iStack_d0")) (; ";")) (expression_statement "*(uint *)(puVar14 + -0x14) = param_2;" (assignment_expression "*(uint *)(puVar14 + -0x14) = param_2" (pointer_expression "*(uint *)(puVar14 + -0x14)" (* "*") (cast_expression "(uint *)(puVar14 + -0x14)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar14 + -0x14)" (( "(") (binary_expression "puVar14 + -0x14" (identifier "puVar14") (+ "+") (number_literal "-0x14")) () ")")))) (= "=") (identifier "param_2")) (; ";")) (expression_statement "*(int *)(puVar14 + -0x18) = iStack_cc;" (assignment_expression "*(int *)(puVar14 + -0x18) = iStack_cc" (pointer_expression "*(int *)(puVar14 + -0x18)" (* "*") (cast_expression "(int *)(puVar14 + -0x18)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar14 + -0x18)" (( "(") (binary_expression "puVar14 + -0x18" (identifier "puVar14") (+ "+") (number_literal "-0x18")) () ")")))) (= "=") (identifier "iStack_cc")) (; ";")) (expression_statement "*(uint **)(puVar14 + -0x1c) = local_c0;" (assignment_expression "*(uint **)(puVar14 + -0x1c) = local_c0" (pointer_expression "*(uint **)(puVar14 + -0x1c)" (* "*") (cast_expression "(uint **)(puVar14 + -0x1c)" (( "(") (type_descriptor "uint **" (type_identifier "uint") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar14 + -0x1c)" (( "(") (binary_expression "puVar14 + -0x1c" (identifier "puVar14") (+ "+") (number_literal "-0x1c")) () ")")))) (= "=") (identifier "local_c0")) (; ";")) (expression_statement "*(int *)(puVar14 + -0x20) = iVar10;" (assignment_expression "*(int *)(puVar14 + -0x20) = iVar10" (pointer_expression "*(int *)(puVar14 + -0x20)" (* "*") (cast_expression "(int *)(puVar14 + -0x20)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar14 + -0x20)" (( "(") (binary_expression "puVar14 + -0x20" (identifier "puVar14") (+ "+") (number_literal "-0x20")) () ")")))) (= "=") (identifier "iVar10")) (; ";")) (expression_statement "*(undefined4 *)(puVar14 + -0x24) = 0x4ea47;" (assignment_expression "*(undefined4 *)(puVar14 + -0x24) = 0x4ea47" (pointer_expression "*(undefined4 *)(puVar14 + -0x24)" (* "*") (cast_expression "(undefined4 *)(puVar14 + -0x24)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar14 + -0x24)" (( "(") (binary_expression "puVar14 + -0x24" (identifier "puVar14") (+ "+") (number_literal "-0x24")) () ")")))) (= "=") (number_literal "0x4ea47")) (; ";")) (expression_statement "uVar11 = __gmpn_pow_1();" (assignment_expression "uVar11 = __gmpn_pow_1()" (identifier "uVar11") (= "=") (call_expression "__gmpn_pow_1()" (identifier "__gmpn_pow_1") (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "uVar16 = CONCAT44(local_124,local_c0);" (assignment_expression "uVar16 = CONCAT44(local_124,local_c0)" (identifier "uVar16") (= "=") (call_expression "CONCAT44(local_124,local_c0)" (identifier "CONCAT44") (argument_list "(local_124,local_c0)" (( "(") (identifier "local_124") (, ",") (identifier "local_c0") () ")")))) (; ";")) (if_statement "if ((int)uVar11 <= (int)param_1) {\n        uVar5 = param_1;\n        if (param_1 != uVar11) goto LAB_0004efbf;\n        do {\n          uVar5 = uVar5 - 1;\n          if ((int)uVar5 < 0) {\n            uStack_d8 = 0;\n            uVar16 = CONCAT44(local_124,local_c0);\n            goto LAB_0004e9e0;\n          }\n          uVar13 = *(uint *)(iVar10 + uVar5 * 4);\n        } while (uVar13 == piVar9[uVar5]);\n        if (uVar13 <= (uint)piVar9[uVar5]) goto LAB_0004efbf;\n      }" (if "if") (parenthesized_expression "((int)uVar11 <= (int)param_1)" (( "(") (binary_expression "(int)uVar11 <= (int)param_1" (cast_expression "(int)uVar11" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar11")) (<= "<=") (cast_expression "(int)param_1" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_1"))) () ")")) (compound_statement "{\n        uVar5 = param_1;\n        if (param_1 != uVar11) goto LAB_0004efbf;\n        do {\n          uVar5 = uVar5 - 1;\n          if ((int)uVar5 < 0) {\n            uStack_d8 = 0;\n            uVar16 = CONCAT44(local_124,local_c0);\n            goto LAB_0004e9e0;\n          }\n          uVar13 = *(uint *)(iVar10 + uVar5 * 4);\n        } while (uVar13 == piVar9[uVar5]);\n        if (uVar13 <= (uint)piVar9[uVar5]) goto LAB_0004efbf;\n      }" ({ "{") (expression_statement "uVar5 = param_1;" (assignment_expression "uVar5 = param_1" (identifier "uVar5") (= "=") (identifier "param_1")) (; ";")) (if_statement "if (param_1 != uVar11) goto LAB_0004efbf;" (if "if") (parenthesized_expression "(param_1 != uVar11)" (( "(") (binary_expression "param_1 != uVar11" (identifier "param_1") (!= "!=") (identifier "uVar11")) () ")")) (goto_statement "goto LAB_0004efbf;" (goto "goto") (statement_identifier "LAB_0004efbf") (; ";"))) (do_statement "do {\n          uVar5 = uVar5 - 1;\n          if ((int)uVar5 < 0) {\n            uStack_d8 = 0;\n            uVar16 = CONCAT44(local_124,local_c0);\n            goto LAB_0004e9e0;\n          }\n          uVar13 = *(uint *)(iVar10 + uVar5 * 4);\n        } while (uVar13 == piVar9[uVar5]);" (do "do") (compound_statement "{\n          uVar5 = uVar5 - 1;\n          if ((int)uVar5 < 0) {\n            uStack_d8 = 0;\n            uVar16 = CONCAT44(local_124,local_c0);\n            goto LAB_0004e9e0;\n          }\n          uVar13 = *(uint *)(iVar10 + uVar5 * 4);\n        }" ({ "{") (expression_statement "uVar5 = uVar5 - 1;" (assignment_expression "uVar5 = uVar5 - 1" (identifier "uVar5") (= "=") (binary_expression "uVar5 - 1" (identifier "uVar5") (- "-") (number_literal "1"))) (; ";")) (if_statement "if ((int)uVar5 < 0) {\n            uStack_d8 = 0;\n            uVar16 = CONCAT44(local_124,local_c0);\n            goto LAB_0004e9e0;\n          }" (if "if") (parenthesized_expression "((int)uVar5 < 0)" (( "(") (binary_expression "(int)uVar5 < 0" (cast_expression "(int)uVar5" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar5")) (< "<") (number_literal "0")) () ")")) (compound_statement "{\n            uStack_d8 = 0;\n            uVar16 = CONCAT44(local_124,local_c0);\n            goto LAB_0004e9e0;\n          }" ({ "{") (expression_statement "uStack_d8 = 0;" (assignment_expression "uStack_d8 = 0" (identifier "uStack_d8") (= "=") (number_literal "0")) (; ";")) (expression_statement "uVar16 = CONCAT44(local_124,local_c0);" (assignment_expression "uVar16 = CONCAT44(local_124,local_c0)" (identifier "uVar16") (= "=") (call_expression "CONCAT44(local_124,local_c0)" (identifier "CONCAT44") (argument_list "(local_124,local_c0)" (( "(") (identifier "local_124") (, ",") (identifier "local_c0") () ")")))) (; ";")) (goto_statement "goto LAB_0004e9e0;" (goto "goto") (statement_identifier "LAB_0004e9e0") (; ";")) (} "}"))) (expression_statement "uVar13 = *(uint *)(iVar10 + uVar5 * 4);" (assignment_expression "uVar13 = *(uint *)(iVar10 + uVar5 * 4)" (identifier "uVar13") (= "=") (pointer_expression "*(uint *)(iVar10 + uVar5 * 4)" (* "*") (cast_expression "(uint *)(iVar10 + uVar5 * 4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar10 + uVar5 * 4)" (( "(") (binary_expression "iVar10 + uVar5 * 4" (identifier "iVar10") (+ "+") (binary_expression "uVar5 * 4" (identifier "uVar5") (* "*") (number_literal "4"))) () ")"))))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(uVar13 == piVar9[uVar5])" (( "(") (binary_expression "uVar13 == piVar9[uVar5]" (identifier "uVar13") (== "==") (subscript_expression "piVar9[uVar5]" (identifier "piVar9") ([ "[") (identifier "uVar5") (] "]"))) () ")")) (; ";")) (if_statement "if (uVar13 <= (uint)piVar9[uVar5]) goto LAB_0004efbf;" (if "if") (parenthesized_expression "(uVar13 <= (uint)piVar9[uVar5])" (( "(") (binary_expression "uVar13 <= (uint)piVar9[uVar5]" (identifier "uVar13") (<= "<=") (cast_expression "(uint)piVar9[uVar5]" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (subscript_expression "piVar9[uVar5]" (identifier "piVar9") ([ "[") (identifier "uVar5") (] "]")))) () ")")) (goto_statement "goto LAB_0004efbf;" (goto "goto") (statement_identifier "LAB_0004efbf") (; ";"))) (} "}"))) (do_statement "do {\n        iVar15 = *local_c0;\n        *local_c0 = *local_c0 + -1;\n        local_c0 = (uint *)((int *)local_c0 + 1);\n      } while (iVar15 == 0);" (do "do") (compound_statement "{\n        iVar15 = *local_c0;\n        *local_c0 = *local_c0 + -1;\n        local_c0 = (uint *)((int *)local_c0 + 1);\n      }" ({ "{") (expression_statement "iVar15 = *local_c0;" (assignment_expression "iVar15 = *local_c0" (identifier "iVar15") (= "=") (pointer_expression "*local_c0" (* "*") (identifier "local_c0"))) (; ";")) (expression_statement "*local_c0 = *local_c0 + -1;" (assignment_expression "*local_c0 = *local_c0 + -1" (pointer_expression "*local_c0" (* "*") (identifier "local_c0")) (= "=") (binary_expression "*local_c0 + -1" (pointer_expression "*local_c0" (* "*") (identifier "local_c0")) (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "local_c0 = (uint *)((int *)local_c0 + 1);" (assignment_expression "local_c0 = (uint *)((int *)local_c0 + 1)" (identifier "local_c0") (= "=") (cast_expression "(uint *)((int *)local_c0 + 1)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int *)local_c0 + 1)" (( "(") (binary_expression "(int *)local_c0 + 1" (cast_expression "(int *)local_c0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "local_c0")) (+ "+") (number_literal "1")) () ")")))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(iVar15 == 0)" (( "(") (binary_expression "iVar15 == 0" (identifier "iVar15") (== "==") (number_literal "0")) () ")")) (; ";")) (} "}")) (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (; ";")) (} "}"))) (labeled_statement "LAB_0004e9e0:\n  local_124 = (int *)((ulonglong)uVar16 >> 0x20);" (statement_identifier "LAB_0004e9e0") (: ":") (expression_statement "local_124 = (int *)((ulonglong)uVar16 >> 0x20);" (assignment_expression "local_124 = (int *)((ulonglong)uVar16 >> 0x20)" (identifier "local_124") (= "=") (cast_expression "(int *)((ulonglong)uVar16 >> 0x20)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((ulonglong)uVar16 >> 0x20)" (( "(") (binary_expression "(ulonglong)uVar16 >> 0x20" (cast_expression "(ulonglong)uVar16" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "uVar16")) (>> ">>") (number_literal "0x20")) () ")")))) (; ";"))) (expression_statement "local_c0 = (uint *)uVar16;" (assignment_expression "local_c0 = (uint *)uVar16" (identifier "local_c0") (= "=") (cast_expression "(uint *)uVar16" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "uVar16"))) (; ";")) (if_statement "if (iStack_a8 != 0) {\n    *(int *)(puVar14 + -0x10) = iStack_a8;\n    *(undefined4 *)(puVar14 + -0x14) = 0x4f1a9;\n    __gmp_tmp_reentrant_free();\n    uVar16 = CONCAT44(local_124,local_c0);\n  }" (if "if") (parenthesized_expression "(iStack_a8 != 0)" (( "(") (binary_expression "iStack_a8 != 0" (identifier "iStack_a8") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    *(int *)(puVar14 + -0x10) = iStack_a8;\n    *(undefined4 *)(puVar14 + -0x14) = 0x4f1a9;\n    __gmp_tmp_reentrant_free();\n    uVar16 = CONCAT44(local_124,local_c0);\n  }" ({ "{") (expression_statement "*(int *)(puVar14 + -0x10) = iStack_a8;" (assignment_expression "*(int *)(puVar14 + -0x10) = iStack_a8" (pointer_expression "*(int *)(puVar14 + -0x10)" (* "*") (cast_expression "(int *)(puVar14 + -0x10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar14 + -0x10)" (( "(") (binary_expression "puVar14 + -0x10" (identifier "puVar14") (+ "+") (number_literal "-0x10")) () ")")))) (= "=") (identifier "iStack_a8")) (; ";")) (expression_statement "*(undefined4 *)(puVar14 + -0x14) = 0x4f1a9;" (assignment_expression "*(undefined4 *)(puVar14 + -0x14) = 0x4f1a9" (pointer_expression "*(undefined4 *)(puVar14 + -0x14)" (* "*") (cast_expression "(undefined4 *)(puVar14 + -0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar14 + -0x14)" (( "(") (binary_expression "puVar14 + -0x14" (identifier "puVar14") (+ "+") (number_literal "-0x14")) () ")")))) (= "=") (number_literal "0x4f1a9")) (; ";")) (expression_statement "__gmp_tmp_reentrant_free();" (call_expression "__gmp_tmp_reentrant_free()" (identifier "__gmp_tmp_reentrant_free") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "uVar16 = CONCAT44(local_124,local_c0);" (assignment_expression "uVar16 = CONCAT44(local_124,local_c0)" (identifier "uVar16") (= "=") (call_expression "CONCAT44(local_124,local_c0)" (identifier "CONCAT44") (argument_list "(local_124,local_c0)" (( "(") (identifier "local_124") (, ",") (identifier "local_c0") () ")")))) (; ";")) (} "}"))) (labeled_statement "LAB_0004e9ee:\n  local_124 = (int *)((ulonglong)uVar16 >> 0x20);" (statement_identifier "LAB_0004e9ee") (: ":") (expression_statement "local_124 = (int *)((ulonglong)uVar16 >> 0x20);" (assignment_expression "local_124 = (int *)((ulonglong)uVar16 >> 0x20)" (identifier "local_124") (= "=") (cast_expression "(int *)((ulonglong)uVar16 >> 0x20)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((ulonglong)uVar16 >> 0x20)" (( "(") (binary_expression "(ulonglong)uVar16 >> 0x20" (cast_expression "(ulonglong)uVar16" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "uVar16")) (>> ">>") (number_literal "0x20")) () ")")))) (; ";"))) (expression_statement "local_c0 = (uint *)uVar16;" (assignment_expression "local_c0 = (uint *)uVar16" (identifier "local_c0") (= "=") (cast_expression "(uint *)uVar16" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "uVar16"))) (; ";")) (if_statement "if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return uStack_d8;\n  }" (if "if") (parenthesized_expression "(local_20 == *(int *)(in_GS_OFFSET + 0x14))" (( "(") (binary_expression "local_20 == *(int *)(in_GS_OFFSET + 0x14)" (identifier "local_20") (== "==") (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" (* "*") (cast_expression "(int *)(in_GS_OFFSET + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(in_GS_OFFSET + 0x14)" (( "(") (binary_expression "in_GS_OFFSET + 0x14" (identifier "in_GS_OFFSET") (+ "+") (number_literal "0x14")) () ")"))))) () ")")) (compound_statement "{\n    return uStack_d8;\n  }" ({ "{") (return_statement "return uStack_d8;" (return "return") (identifier "uStack_d8") (; ";")) (} "}"))) (expression_statement "*(undefined **)(puVar14 + -4) = &UNK_0004f214;" (assignment_expression "*(undefined **)(puVar14 + -4) = &UNK_0004f214" (pointer_expression "*(undefined **)(puVar14 + -4)" (* "*") (cast_expression "(undefined **)(puVar14 + -4)" (( "(") (type_descriptor "undefined **" (type_identifier "undefined") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar14 + -4)" (( "(") (binary_expression "puVar14 + -4" (identifier "puVar14") (+ "+") (number_literal "-4")) () ")")))) (= "=") (pointer_expression "&UNK_0004f214" (& "&") (identifier "UNK_0004f214"))) (; ";")) (expression_statement "FUN_0007ebe0();" (call_expression "FUN_0007ebe0()" (identifier "FUN_0007ebe0") (argument_list "()" (( "(") () ")"))) (; ";")) (labeled_statement "LAB_0004eb66:\n  iStack_108 = iStack_dc;" (statement_identifier "LAB_0004eb66") (: ":") (expression_statement "iStack_108 = iStack_dc;" (assignment_expression "iStack_108 = iStack_dc" (identifier "iStack_108") (= "=") (identifier "iStack_dc")) (; ";"))) (expression_statement "iStack_10c = iStack_104;" (assignment_expression "iStack_10c = iStack_104" (identifier "iStack_10c") (= "=") (identifier "iStack_104")) (; ";")) (expression_statement "uStack_e8 = puStack_fc[iStack_104] - puStack_fc[iStack_104 + 1];" (assignment_expression "uStack_e8 = puStack_fc[iStack_104] - puStack_fc[iStack_104 + 1]" (identifier "uStack_e8") (= "=") (binary_expression "puStack_fc[iStack_104] - puStack_fc[iStack_104 + 1]" (subscript_expression "puStack_fc[iStack_104]" (identifier "puStack_fc") ([ "[") (identifier "iStack_104") (] "]")) (- "-") (subscript_expression "puStack_fc[iStack_104 + 1]" (identifier "puStack_fc") ([ "[") (binary_expression "iStack_104 + 1" (identifier "iStack_104") (+ "+") (number_literal "1")) (] "]")))) (; ";")) (expression_statement "iStack_118 = puStack_fc[iStack_104 + 1] - puStack_fc[iStack_104];" (assignment_expression "iStack_118 = puStack_fc[iStack_104 + 1] - puStack_fc[iStack_104]" (identifier "iStack_118") (= "=") (binary_expression "puStack_fc[iStack_104 + 1] - puStack_fc[iStack_104]" (subscript_expression "puStack_fc[iStack_104 + 1]" (identifier "puStack_fc") ([ "[") (binary_expression "iStack_104 + 1" (identifier "iStack_104") (+ "+") (number_literal "1")) (] "]")) (- "-") (subscript_expression "puStack_fc[iStack_104]" (identifier "puStack_fc") ([ "[") (identifier "iStack_104") (] "]")))) (; ";")) (expression_statement "uStack_f0 = uStack_e8 >> 5;" (assignment_expression "uStack_f0 = uStack_e8 >> 5" (identifier "uStack_f0") (= "=") (binary_expression "uStack_e8 >> 5" (identifier "uStack_e8") (>> ">>") (number_literal "5"))) (; ";")) (expression_statement "uStack_f4 = iStack_118 + uStack_e4;" (assignment_expression "uStack_f4 = iStack_118 + uStack_e4" (identifier "uStack_f4") (= "=") (binary_expression "iStack_118 + uStack_e4" (identifier "iStack_118") (+ "+") (identifier "uStack_e4"))) (; ";")) (expression_statement "uVar5 = uStack_f4 >> 5;" (assignment_expression "uVar5 = uStack_f4 >> 5" (identifier "uVar5") (= "=") (binary_expression "uStack_f4 >> 5" (identifier "uStack_f4") (>> ">>") (number_literal "5"))) (; ";")) (expression_statement "puStack_11c = (uint *)((uStack_e4 - 1 >> 5) - uVar5);" (assignment_expression "puStack_11c = (uint *)((uStack_e4 - 1 >> 5) - uVar5)" (identifier "puStack_11c") (= "=") (cast_expression "(uint *)((uStack_e4 - 1 >> 5) - uVar5)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((uStack_e4 - 1 >> 5) - uVar5)" (( "(") (binary_expression "(uStack_e4 - 1 >> 5) - uVar5" (parenthesized_expression "(uStack_e4 - 1 >> 5)" (( "(") (binary_expression "uStack_e4 - 1 >> 5" (binary_expression "uStack_e4 - 1" (identifier "uStack_e4") (- "-") (number_literal "1")) (>> ">>") (number_literal "5")) () ")")) (- "-") (identifier "uVar5")) () ")")))) (; ";")) (expression_statement "iStack_110 = (int)puStack_11c + 1;" (assignment_expression "iStack_110 = (int)puStack_11c + 1" (identifier "iStack_110") (= "=") (binary_expression "(int)puStack_11c + 1" (cast_expression "(int)puStack_11c" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puStack_11c")) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "uStack_e4 = uVar5;" (assignment_expression "uStack_e4 = uVar5" (identifier "uStack_e4") (= "=") (identifier "uVar5")) (; ";")) (expression_statement "iStack_dc = iVar15;" (assignment_expression "iStack_dc = iVar15" (identifier "iStack_dc") (= "=") (identifier "iVar15")) (; ";")) (if_statement "if (iVar6 != 0) {\n    *(int *)(puVar14 + -4) = iVar6;\n    *(int *)(puVar14 + -8) = iStack_dc;\n    *(int *)(puVar14 + -0xc) = iVar10;\n    *(int *)(puVar14 + -0x10) = iVar10;\n    uStack_d8 = iVar6;\n    *(undefined4 *)(puVar14 + -0x14) = 0x4ee32;\n    iVar10 = __gmpn_sub_n();\n    if ((iVar10 != 0) && (uVar11 != uStack_d8)) {\n      piVar9 = (int *)(iStack_d4 + uStack_d8 * 4);\n      iVar10 = *piVar9;\n      *piVar9 = iVar10 + -1;\n      if ((iVar10 == 0) && ((int)(uStack_d8 + 1) < (int)uVar11)) {\n        piVar9 = (int *)(iStack_d4 + (uStack_d8 + 1) * 4);\n        iVar15 = uStack_d8 + 2;\n        iVar10 = *piVar9;\n        *piVar9 = iVar10 + -1;\n        for (; (iVar10 == 0 && (uVar11 != iVar15)); iVar15 = iVar15 + 1) {\n          iVar10 = *(int *)(iStack_d4 + iVar15 * 4);\n          *(int *)(iStack_d4 + iVar15 * 4) = iVar10 + -1;\n        }\n      }\n    }\n  }" (if "if") (parenthesized_expression "(iVar6 != 0)" (( "(") (binary_expression "iVar6 != 0" (identifier "iVar6") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    *(int *)(puVar14 + -4) = iVar6;\n    *(int *)(puVar14 + -8) = iStack_dc;\n    *(int *)(puVar14 + -0xc) = iVar10;\n    *(int *)(puVar14 + -0x10) = iVar10;\n    uStack_d8 = iVar6;\n    *(undefined4 *)(puVar14 + -0x14) = 0x4ee32;\n    iVar10 = __gmpn_sub_n();\n    if ((iVar10 != 0) && (uVar11 != uStack_d8)) {\n      piVar9 = (int *)(iStack_d4 + uStack_d8 * 4);\n      iVar10 = *piVar9;\n      *piVar9 = iVar10 + -1;\n      if ((iVar10 == 0) && ((int)(uStack_d8 + 1) < (int)uVar11)) {\n        piVar9 = (int *)(iStack_d4 + (uStack_d8 + 1) * 4);\n        iVar15 = uStack_d8 + 2;\n        iVar10 = *piVar9;\n        *piVar9 = iVar10 + -1;\n        for (; (iVar10 == 0 && (uVar11 != iVar15)); iVar15 = iVar15 + 1) {\n          iVar10 = *(int *)(iStack_d4 + iVar15 * 4);\n          *(int *)(iStack_d4 + iVar15 * 4) = iVar10 + -1;\n        }\n      }\n    }\n  }" ({ "{") (expression_statement "*(int *)(puVar14 + -4) = iVar6;" (assignment_expression "*(int *)(puVar14 + -4) = iVar6" (pointer_expression "*(int *)(puVar14 + -4)" (* "*") (cast_expression "(int *)(puVar14 + -4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar14 + -4)" (( "(") (binary_expression "puVar14 + -4" (identifier "puVar14") (+ "+") (number_literal "-4")) () ")")))) (= "=") (identifier "iVar6")) (; ";")) (expression_statement "*(int *)(puVar14 + -8) = iStack_dc;" (assignment_expression "*(int *)(puVar14 + -8) = iStack_dc" (pointer_expression "*(int *)(puVar14 + -8)" (* "*") (cast_expression "(int *)(puVar14 + -8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar14 + -8)" (( "(") (binary_expression "puVar14 + -8" (identifier "puVar14") (+ "+") (number_literal "-8")) () ")")))) (= "=") (identifier "iStack_dc")) (; ";")) (expression_statement "*(int *)(puVar14 + -0xc) = iVar10;" (assignment_expression "*(int *)(puVar14 + -0xc) = iVar10" (pointer_expression "*(int *)(puVar14 + -0xc)" (* "*") (cast_expression "(int *)(puVar14 + -0xc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar14 + -0xc)" (( "(") (binary_expression "puVar14 + -0xc" (identifier "puVar14") (+ "+") (number_literal "-0xc")) () ")")))) (= "=") (identifier "iVar10")) (; ";")) (expression_statement "*(int *)(puVar14 + -0x10) = iVar10;" (assignment_expression "*(int *)(puVar14 + -0x10) = iVar10" (pointer_expression "*(int *)(puVar14 + -0x10)" (* "*") (cast_expression "(int *)(puVar14 + -0x10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar14 + -0x10)" (( "(") (binary_expression "puVar14 + -0x10" (identifier "puVar14") (+ "+") (number_literal "-0x10")) () ")")))) (= "=") (identifier "iVar10")) (; ";")) (expression_statement "uStack_d8 = iVar6;" (assignment_expression "uStack_d8 = iVar6" (identifier "uStack_d8") (= "=") (identifier "iVar6")) (; ";")) (expression_statement "*(undefined4 *)(puVar14 + -0x14) = 0x4ee32;" (assignment_expression "*(undefined4 *)(puVar14 + -0x14) = 0x4ee32" (pointer_expression "*(undefined4 *)(puVar14 + -0x14)" (* "*") (cast_expression "(undefined4 *)(puVar14 + -0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar14 + -0x14)" (( "(") (binary_expression "puVar14 + -0x14" (identifier "puVar14") (+ "+") (number_literal "-0x14")) () ")")))) (= "=") (number_literal "0x4ee32")) (; ";")) (expression_statement "iVar10 = __gmpn_sub_n();" (assignment_expression "iVar10 = __gmpn_sub_n()" (identifier "iVar10") (= "=") (call_expression "__gmpn_sub_n()" (identifier "__gmpn_sub_n") (argument_list "()" (( "(") () ")")))) (; ";")) (if_statement "if ((iVar10 != 0) && (uVar11 != uStack_d8)) {\n      piVar9 = (int *)(iStack_d4 + uStack_d8 * 4);\n      iVar10 = *piVar9;\n      *piVar9 = iVar10 + -1;\n      if ((iVar10 == 0) && ((int)(uStack_d8 + 1) < (int)uVar11)) {\n        piVar9 = (int *)(iStack_d4 + (uStack_d8 + 1) * 4);\n        iVar15 = uStack_d8 + 2;\n        iVar10 = *piVar9;\n        *piVar9 = iVar10 + -1;\n        for (; (iVar10 == 0 && (uVar11 != iVar15)); iVar15 = iVar15 + 1) {\n          iVar10 = *(int *)(iStack_d4 + iVar15 * 4);\n          *(int *)(iStack_d4 + iVar15 * 4) = iVar10 + -1;\n        }\n      }\n    }" (if "if") (parenthesized_expression "((iVar10 != 0) && (uVar11 != uStack_d8))" (( "(") (binary_expression "(iVar10 != 0) && (uVar11 != uStack_d8)" (parenthesized_expression "(iVar10 != 0)" (( "(") (binary_expression "iVar10 != 0" (identifier "iVar10") (!= "!=") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(uVar11 != uStack_d8)" (( "(") (binary_expression "uVar11 != uStack_d8" (identifier "uVar11") (!= "!=") (identifier "uStack_d8")) () ")"))) () ")")) (compound_statement "{\n      piVar9 = (int *)(iStack_d4 + uStack_d8 * 4);\n      iVar10 = *piVar9;\n      *piVar9 = iVar10 + -1;\n      if ((iVar10 == 0) && ((int)(uStack_d8 + 1) < (int)uVar11)) {\n        piVar9 = (int *)(iStack_d4 + (uStack_d8 + 1) * 4);\n        iVar15 = uStack_d8 + 2;\n        iVar10 = *piVar9;\n        *piVar9 = iVar10 + -1;\n        for (; (iVar10 == 0 && (uVar11 != iVar15)); iVar15 = iVar15 + 1) {\n          iVar10 = *(int *)(iStack_d4 + iVar15 * 4);\n          *(int *)(iStack_d4 + iVar15 * 4) = iVar10 + -1;\n        }\n      }\n    }" ({ "{") (expression_statement "piVar9 = (int *)(iStack_d4 + uStack_d8 * 4);" (assignment_expression "piVar9 = (int *)(iStack_d4 + uStack_d8 * 4)" (identifier "piVar9") (= "=") (cast_expression "(int *)(iStack_d4 + uStack_d8 * 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iStack_d4 + uStack_d8 * 4)" (( "(") (binary_expression "iStack_d4 + uStack_d8 * 4" (identifier "iStack_d4") (+ "+") (binary_expression "uStack_d8 * 4" (identifier "uStack_d8") (* "*") (number_literal "4"))) () ")")))) (; ";")) (expression_statement "iVar10 = *piVar9;" (assignment_expression "iVar10 = *piVar9" (identifier "iVar10") (= "=") (pointer_expression "*piVar9" (* "*") (identifier "piVar9"))) (; ";")) (expression_statement "*piVar9 = iVar10 + -1;" (assignment_expression "*piVar9 = iVar10 + -1" (pointer_expression "*piVar9" (* "*") (identifier "piVar9")) (= "=") (binary_expression "iVar10 + -1" (identifier "iVar10") (+ "+") (number_literal "-1"))) (; ";")) (if_statement "if ((iVar10 == 0) && ((int)(uStack_d8 + 1) < (int)uVar11)) {\n        piVar9 = (int *)(iStack_d4 + (uStack_d8 + 1) * 4);\n        iVar15 = uStack_d8 + 2;\n        iVar10 = *piVar9;\n        *piVar9 = iVar10 + -1;\n        for (; (iVar10 == 0 && (uVar11 != iVar15)); iVar15 = iVar15 + 1) {\n          iVar10 = *(int *)(iStack_d4 + iVar15 * 4);\n          *(int *)(iStack_d4 + iVar15 * 4) = iVar10 + -1;\n        }\n      }" (if "if") (parenthesized_expression "((iVar10 == 0) && ((int)(uStack_d8 + 1) < (int)uVar11))" (( "(") (binary_expression "(iVar10 == 0) && ((int)(uStack_d8 + 1) < (int)uVar11)" (parenthesized_expression "(iVar10 == 0)" (( "(") (binary_expression "iVar10 == 0" (identifier "iVar10") (== "==") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "((int)(uStack_d8 + 1) < (int)uVar11)" (( "(") (binary_expression "(int)(uStack_d8 + 1) < (int)uVar11" (cast_expression "(int)(uStack_d8 + 1)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "(uStack_d8 + 1)" (( "(") (binary_expression "uStack_d8 + 1" (identifier "uStack_d8") (+ "+") (number_literal "1")) () ")"))) (< "<") (cast_expression "(int)uVar11" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar11"))) () ")"))) () ")")) (compound_statement "{\n        piVar9 = (int *)(iStack_d4 + (uStack_d8 + 1) * 4);\n        iVar15 = uStack_d8 + 2;\n        iVar10 = *piVar9;\n        *piVar9 = iVar10 + -1;\n        for (; (iVar10 == 0 && (uVar11 != iVar15)); iVar15 = iVar15 + 1) {\n          iVar10 = *(int *)(iStack_d4 + iVar15 * 4);\n          *(int *)(iStack_d4 + iVar15 * 4) = iVar10 + -1;\n        }\n      }" ({ "{") (expression_statement "piVar9 = (int *)(iStack_d4 + (uStack_d8 + 1) * 4);" (assignment_expression "piVar9 = (int *)(iStack_d4 + (uStack_d8 + 1) * 4)" (identifier "piVar9") (= "=") (cast_expression "(int *)(iStack_d4 + (uStack_d8 + 1) * 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iStack_d4 + (uStack_d8 + 1) * 4)" (( "(") (binary_expression "iStack_d4 + (uStack_d8 + 1) * 4" (identifier "iStack_d4") (+ "+") (binary_expression "(uStack_d8 + 1) * 4" (parenthesized_expression "(uStack_d8 + 1)" (( "(") (binary_expression "uStack_d8 + 1" (identifier "uStack_d8") (+ "+") (number_literal "1")) () ")")) (* "*") (number_literal "4"))) () ")")))) (; ";")) (expression_statement "iVar15 = uStack_d8 + 2;" (assignment_expression "iVar15 = uStack_d8 + 2" (identifier "iVar15") (= "=") (binary_expression "uStack_d8 + 2" (identifier "uStack_d8") (+ "+") (number_literal "2"))) (; ";")) (expression_statement "iVar10 = *piVar9;" (assignment_expression "iVar10 = *piVar9" (identifier "iVar10") (= "=") (pointer_expression "*piVar9" (* "*") (identifier "piVar9"))) (; ";")) (expression_statement "*piVar9 = iVar10 + -1;" (assignment_expression "*piVar9 = iVar10 + -1" (pointer_expression "*piVar9" (* "*") (identifier "piVar9")) (= "=") (binary_expression "iVar10 + -1" (identifier "iVar10") (+ "+") (number_literal "-1"))) (; ";")) (for_statement "for (; (iVar10 == 0 && (uVar11 != iVar15)); iVar15 = iVar15 + 1) {\n          iVar10 = *(int *)(iStack_d4 + iVar15 * 4);\n          *(int *)(iStack_d4 + iVar15 * 4) = iVar10 + -1;\n        }" (for "for") (( "(") (; ";") (parenthesized_expression "(iVar10 == 0 && (uVar11 != iVar15))" (( "(") (binary_expression "iVar10 == 0 && (uVar11 != iVar15)" (binary_expression "iVar10 == 0" (identifier "iVar10") (== "==") (number_literal "0")) (&& "&&") (parenthesized_expression "(uVar11 != iVar15)" (( "(") (binary_expression "uVar11 != iVar15" (identifier "uVar11") (!= "!=") (identifier "iVar15")) () ")"))) () ")")) (; ";") (assignment_expression "iVar15 = iVar15 + 1" (identifier "iVar15") (= "=") (binary_expression "iVar15 + 1" (identifier "iVar15") (+ "+") (number_literal "1"))) () ")") (compound_statement "{\n          iVar10 = *(int *)(iStack_d4 + iVar15 * 4);\n          *(int *)(iStack_d4 + iVar15 * 4) = iVar10 + -1;\n        }" ({ "{") (expression_statement "iVar10 = *(int *)(iStack_d4 + iVar15 * 4);" (assignment_expression "iVar10 = *(int *)(iStack_d4 + iVar15 * 4)" (identifier "iVar10") (= "=") (pointer_expression "*(int *)(iStack_d4 + iVar15 * 4)" (* "*") (cast_expression "(int *)(iStack_d4 + iVar15 * 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iStack_d4 + iVar15 * 4)" (( "(") (binary_expression "iStack_d4 + iVar15 * 4" (identifier "iStack_d4") (+ "+") (binary_expression "iVar15 * 4" (identifier "iVar15") (* "*") (number_literal "4"))) () ")"))))) (; ";")) (expression_statement "*(int *)(iStack_d4 + iVar15 * 4) = iVar10 + -1;" (assignment_expression "*(int *)(iStack_d4 + iVar15 * 4) = iVar10 + -1" (pointer_expression "*(int *)(iStack_d4 + iVar15 * 4)" (* "*") (cast_expression "(int *)(iStack_d4 + iVar15 * 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iStack_d4 + iVar15 * 4)" (( "(") (binary_expression "iStack_d4 + iVar15 * 4" (identifier "iStack_d4") (+ "+") (binary_expression "iVar15 * 4" (identifier "iVar15") (* "*") (number_literal "4"))) () ")")))) (= "=") (binary_expression "iVar10 + -1" (identifier "iVar10") (+ "+") (number_literal "-1"))) (; ";")) (} "}"))) (} "}"))) (} "}"))) (} "}"))) (expression_statement "iVar4 = iStack_d4;" (assignment_expression "iVar4 = iStack_d4" (identifier "iVar4") (= "=") (identifier "iStack_d4")) (; ";")) (expression_statement "iVar15 = iStack_e0;" (assignment_expression "iVar15 = iStack_e0" (identifier "iVar15") (= "=") (identifier "iStack_e0")) (; ";")) (expression_statement "iVar10 = *(int *)(iStack_d4 + (uVar11 + -1) * 4);" (assignment_expression "iVar10 = *(int *)(iStack_d4 + (uVar11 + -1) * 4)" (identifier "iVar10") (= "=") (pointer_expression "*(int *)(iStack_d4 + (uVar11 + -1) * 4)" (* "*") (cast_expression "(int *)(iStack_d4 + (uVar11 + -1) * 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iStack_d4 + (uVar11 + -1) * 4)" (( "(") (binary_expression "iStack_d4 + (uVar11 + -1) * 4" (identifier "iStack_d4") (+ "+") (binary_expression "(uVar11 + -1) * 4" (parenthesized_expression "(uVar11 + -1)" (( "(") (binary_expression "uVar11 + -1" (identifier "uVar11") (+ "+") (number_literal "-1")) () ")")) (* "*") (number_literal "4"))) () ")"))))) (; ";")) (while_statement "while (iVar10 == 0) {\n    iVar10 = *(int *)(iStack_d4 + (uVar11 + -2) * 4);\n    uVar11 = uVar11 + -1;\n  }" (while "while") (parenthesized_expression "(iVar10 == 0)" (( "(") (binary_expression "iVar10 == 0" (identifier "iVar10") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    iVar10 = *(int *)(iStack_d4 + (uVar11 + -2) * 4);\n    uVar11 = uVar11 + -1;\n  }" ({ "{") (expression_statement "iVar10 = *(int *)(iStack_d4 + (uVar11 + -2) * 4);" (assignment_expression "iVar10 = *(int *)(iStack_d4 + (uVar11 + -2) * 4)" (identifier "iVar10") (= "=") (pointer_expression "*(int *)(iStack_d4 + (uVar11 + -2) * 4)" (* "*") (cast_expression "(int *)(iStack_d4 + (uVar11 + -2) * 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iStack_d4 + (uVar11 + -2) * 4)" (( "(") (binary_expression "iStack_d4 + (uVar11 + -2) * 4" (identifier "iStack_d4") (+ "+") (binary_expression "(uVar11 + -2) * 4" (parenthesized_expression "(uVar11 + -2)" (( "(") (binary_expression "uVar11 + -2" (identifier "uVar11") (+ "+") (number_literal "-2")) () ")")) (* "*") (number_literal "4"))) () ")"))))) (; ";")) (expression_statement "uVar11 = uVar11 + -1;" (assignment_expression "uVar11 = uVar11 + -1" (identifier "uVar11") (= "=") (binary_expression "uVar11 + -1" (identifier "uVar11") (+ "+") (number_literal "-1"))) (; ";")) (} "}"))) (expression_statement "uStack_100 = uStack_f0 * 4;" (assignment_expression "uStack_100 = uStack_f0 * 4" (identifier "uStack_100") (= "=") (binary_expression "uStack_f0 * 4" (identifier "uStack_f0") (* "*") (number_literal "4"))) (; ";")) (expression_statement "puVar7 = (uint *)(iStack_d4 + uStack_f0 * 4);" (assignment_expression "puVar7 = (uint *)(iStack_d4 + uStack_f0 * 4)" (identifier "puVar7") (= "=") (cast_expression "(uint *)(iStack_d4 + uStack_f0 * 4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iStack_d4 + uStack_f0 * 4)" (( "(") (binary_expression "iStack_d4 + uStack_f0 * 4" (identifier "iStack_d4") (+ "+") (binary_expression "uStack_f0 * 4" (identifier "uStack_f0") (* "*") (number_literal "4"))) () ")")))) (; ";")) (expression_statement "uStack_d8 = uStack_f0 + uVar11;" (assignment_expression "uStack_d8 = uStack_f0 + uVar11" (identifier "uStack_d8") (= "=") (binary_expression "uStack_f0 + uVar11" (identifier "uStack_f0") (+ "+") (identifier "uVar11"))) (; ";")) (expression_statement "uVar5 = uStack_e8 & 0x1f;" (assignment_expression "uVar5 = uStack_e8 & 0x1f" (identifier "uVar5") (= "=") (binary_expression "uStack_e8 & 0x1f" (identifier "uStack_e8") (& "&") (number_literal "0x1f"))) (; ";")) (expression_statement "uStack_130 = uStack_e4;" (assignment_expression "uStack_130 = uStack_e4" (identifier "uStack_130") (= "=") (identifier "uStack_e4")) (; ";")) (expression_statement "puStack_12c = puVar7;" (assignment_expression "puStack_12c = puVar7" (identifier "puStack_12c") (= "=") (identifier "puVar7")) (; ";")) (if_statement "if (uVar5 == 0) {\n    uStack_e4 = uVar5;\n    *(uint *)(puVar14 + -8) = uVar11;\n    *(int *)(puVar14 + -0xc) = iStack_d4;\n    *(uint **)(puVar14 + -0x10) = puVar7;\n    pcVar2 = *(code **)(iVar15 + 0x24);\n    *(undefined4 *)(puVar14 + -0x14) = 0x4ed9a;\n    (*pcVar2)();\n  }\n  else {\n    uStack_e4 = uVar5;\n    *(uint *)(puVar14 + -4) = uVar5;\n    *(uint *)(puVar14 + -8) = uVar11;\n    *(int *)(puVar14 + -0xc) = iVar4;\n    iVar10 = iStack_e0;\n    *(uint **)(puVar14 + -0x10) = puVar7;\n    pcVar2 = *(code **)(iVar10 + 0x38);\n    *(undefined4 *)(puVar14 + -0x14) = 0x4ec66;\n    iVar10 = (*pcVar2)();\n    if (iVar10 != 0) {\n      *(int *)(iStack_d4 + uStack_d8 * 4) = iVar10;\n      uStack_d8 = uStack_d8 + 1;\n    }\n  }" (if "if") (parenthesized_expression "(uVar5 == 0)" (( "(") (binary_expression "uVar5 == 0" (identifier "uVar5") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    uStack_e4 = uVar5;\n    *(uint *)(puVar14 + -8) = uVar11;\n    *(int *)(puVar14 + -0xc) = iStack_d4;\n    *(uint **)(puVar14 + -0x10) = puVar7;\n    pcVar2 = *(code **)(iVar15 + 0x24);\n    *(undefined4 *)(puVar14 + -0x14) = 0x4ed9a;\n    (*pcVar2)();\n  }" ({ "{") (expression_statement "uStack_e4 = uVar5;" (assignment_expression "uStack_e4 = uVar5" (identifier "uStack_e4") (= "=") (identifier "uVar5")) (; ";")) (expression_statement "*(uint *)(puVar14 + -8) = uVar11;" (assignment_expression "*(uint *)(puVar14 + -8) = uVar11" (pointer_expression "*(uint *)(puVar14 + -8)" (* "*") (cast_expression "(uint *)(puVar14 + -8)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar14 + -8)" (( "(") (binary_expression "puVar14 + -8" (identifier "puVar14") (+ "+") (number_literal "-8")) () ")")))) (= "=") (identifier "uVar11")) (; ";")) (expression_statement "*(int *)(puVar14 + -0xc) = iStack_d4;" (assignment_expression "*(int *)(puVar14 + -0xc) = iStack_d4" (pointer_expression "*(int *)(puVar14 + -0xc)" (* "*") (cast_expression "(int *)(puVar14 + -0xc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar14 + -0xc)" (( "(") (binary_expression "puVar14 + -0xc" (identifier "puVar14") (+ "+") (number_literal "-0xc")) () ")")))) (= "=") (identifier "iStack_d4")) (; ";")) (expression_statement "*(uint **)(puVar14 + -0x10) = puVar7;" (assignment_expression "*(uint **)(puVar14 + -0x10) = puVar7" (pointer_expression "*(uint **)(puVar14 + -0x10)" (* "*") (cast_expression "(uint **)(puVar14 + -0x10)" (( "(") (type_descriptor "uint **" (type_identifier "uint") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar14 + -0x10)" (( "(") (binary_expression "puVar14 + -0x10" (identifier "puVar14") (+ "+") (number_literal "-0x10")) () ")")))) (= "=") (identifier "puVar7")) (; ";")) (expression_statement "pcVar2 = *(code **)(iVar15 + 0x24);" (assignment_expression "pcVar2 = *(code **)(iVar15 + 0x24)" (identifier "pcVar2") (= "=") (pointer_expression "*(code **)(iVar15 + 0x24)" (* "*") (cast_expression "(code **)(iVar15 + 0x24)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar15 + 0x24)" (( "(") (binary_expression "iVar15 + 0x24" (identifier "iVar15") (+ "+") (number_literal "0x24")) () ")"))))) (; ";")) (expression_statement "*(undefined4 *)(puVar14 + -0x14) = 0x4ed9a;" (assignment_expression "*(undefined4 *)(puVar14 + -0x14) = 0x4ed9a" (pointer_expression "*(undefined4 *)(puVar14 + -0x14)" (* "*") (cast_expression "(undefined4 *)(puVar14 + -0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar14 + -0x14)" (( "(") (binary_expression "puVar14 + -0x14" (identifier "puVar14") (+ "+") (number_literal "-0x14")) () ")")))) (= "=") (number_literal "0x4ed9a")) (; ";")) (expression_statement "(*pcVar2)();" (call_expression "(*pcVar2)()" (parenthesized_expression "(*pcVar2)" (( "(") (pointer_expression "*pcVar2" (* "*") (identifier "pcVar2")) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (} "}")) (else_clause "else {\n    uStack_e4 = uVar5;\n    *(uint *)(puVar14 + -4) = uVar5;\n    *(uint *)(puVar14 + -8) = uVar11;\n    *(int *)(puVar14 + -0xc) = iVar4;\n    iVar10 = iStack_e0;\n    *(uint **)(puVar14 + -0x10) = puVar7;\n    pcVar2 = *(code **)(iVar10 + 0x38);\n    *(undefined4 *)(puVar14 + -0x14) = 0x4ec66;\n    iVar10 = (*pcVar2)();\n    if (iVar10 != 0) {\n      *(int *)(iStack_d4 + uStack_d8 * 4) = iVar10;\n      uStack_d8 = uStack_d8 + 1;\n    }\n  }" (else "else") (compound_statement "{\n    uStack_e4 = uVar5;\n    *(uint *)(puVar14 + -4) = uVar5;\n    *(uint *)(puVar14 + -8) = uVar11;\n    *(int *)(puVar14 + -0xc) = iVar4;\n    iVar10 = iStack_e0;\n    *(uint **)(puVar14 + -0x10) = puVar7;\n    pcVar2 = *(code **)(iVar10 + 0x38);\n    *(undefined4 *)(puVar14 + -0x14) = 0x4ec66;\n    iVar10 = (*pcVar2)();\n    if (iVar10 != 0) {\n      *(int *)(iStack_d4 + uStack_d8 * 4) = iVar10;\n      uStack_d8 = uStack_d8 + 1;\n    }\n  }" ({ "{") (expression_statement "uStack_e4 = uVar5;" (assignment_expression "uStack_e4 = uVar5" (identifier "uStack_e4") (= "=") (identifier "uVar5")) (; ";")) (expression_statement "*(uint *)(puVar14 + -4) = uVar5;" (assignment_expression "*(uint *)(puVar14 + -4) = uVar5" (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 "uVar5")) (; ";")) (expression_statement "*(uint *)(puVar14 + -8) = uVar11;" (assignment_expression "*(uint *)(puVar14 + -8) = uVar11" (pointer_expression "*(uint *)(puVar14 + -8)" (* "*") (cast_expression "(uint *)(puVar14 + -8)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar14 + -8)" (( "(") (binary_expression "puVar14 + -8" (identifier "puVar14") (+ "+") (number_literal "-8")) () ")")))) (= "=") (identifier "uVar11")) (; ";")) (expression_statement "*(int *)(puVar14 + -0xc) = iVar4;" (assignment_expression "*(int *)(puVar14 + -0xc) = iVar4" (pointer_expression "*(int *)(puVar14 + -0xc)" (* "*") (cast_expression "(int *)(puVar14 + -0xc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar14 + -0xc)" (( "(") (binary_expression "puVar14 + -0xc" (identifier "puVar14") (+ "+") (number_literal "-0xc")) () ")")))) (= "=") (identifier "iVar4")) (; ";")) (expression_statement "iVar10 = iStack_e0;" (assignment_expression "iVar10 = iStack_e0" (identifier "iVar10") (= "=") (identifier "iStack_e0")) (; ";")) (expression_statement "*(uint **)(puVar14 + -0x10) = puVar7;" (assignment_expression "*(uint **)(puVar14 + -0x10) = puVar7" (pointer_expression "*(uint **)(puVar14 + -0x10)" (* "*") (cast_expression "(uint **)(puVar14 + -0x10)" (( "(") (type_descriptor "uint **" (type_identifier "uint") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar14 + -0x10)" (( "(") (binary_expression "puVar14 + -0x10" (identifier "puVar14") (+ "+") (number_literal "-0x10")) () ")")))) (= "=") (identifier "puVar7")) (; ";")) (expression_statement "pcVar2 = *(code **)(iVar10 + 0x38);" (assignment_expression "pcVar2 = *(code **)(iVar10 + 0x38)" (identifier "pcVar2") (= "=") (pointer_expression "*(code **)(iVar10 + 0x38)" (* "*") (cast_expression "(code **)(iVar10 + 0x38)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar10 + 0x38)" (( "(") (binary_expression "iVar10 + 0x38" (identifier "iVar10") (+ "+") (number_literal "0x38")) () ")"))))) (; ";")) (expression_statement "*(undefined4 *)(puVar14 + -0x14) = 0x4ec66;" (assignment_expression "*(undefined4 *)(puVar14 + -0x14) = 0x4ec66" (pointer_expression "*(undefined4 *)(puVar14 + -0x14)" (* "*") (cast_expression "(undefined4 *)(puVar14 + -0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar14 + -0x14)" (( "(") (binary_expression "puVar14 + -0x14" (identifier "puVar14") (+ "+") (number_literal "-0x14")) () ")")))) (= "=") (number_literal "0x4ec66")) (; ";")) (expression_statement "iVar10 = (*pcVar2)();" (assignment_expression "iVar10 = (*pcVar2)()" (identifier "iVar10") (= "=") (call_expression "(*pcVar2)()" (parenthesized_expression "(*pcVar2)" (( "(") (pointer_expression "*pcVar2" (* "*") (identifier "pcVar2")) () ")")) (argument_list "()" (( "(") () ")")))) (; ";")) (if_statement "if (iVar10 != 0) {\n      *(int *)(iStack_d4 + uStack_d8 * 4) = iVar10;\n      uStack_d8 = uStack_d8 + 1;\n    }" (if "if") (parenthesized_expression "(iVar10 != 0)" (( "(") (binary_expression "iVar10 != 0" (identifier "iVar10") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      *(int *)(iStack_d4 + uStack_d8 * 4) = iVar10;\n      uStack_d8 = uStack_d8 + 1;\n    }" ({ "{") (expression_statement "*(int *)(iStack_d4 + uStack_d8 * 4) = iVar10;" (assignment_expression "*(int *)(iStack_d4 + uStack_d8 * 4) = iVar10" (pointer_expression "*(int *)(iStack_d4 + uStack_d8 * 4)" (* "*") (cast_expression "(int *)(iStack_d4 + uStack_d8 * 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iStack_d4 + uStack_d8 * 4)" (( "(") (binary_expression "iStack_d4 + uStack_d8 * 4" (identifier "iStack_d4") (+ "+") (binary_expression "uStack_d8 * 4" (identifier "uStack_d8") (* "*") (number_literal "4"))) () ")")))) (= "=") (identifier "iVar10")) (; ";")) (expression_statement "uStack_d8 = uStack_d8 + 1;" (assignment_expression "uStack_d8 = uStack_d8 + 1" (identifier "uStack_d8") (= "=") (binary_expression "uStack_d8 + 1" (identifier "uStack_d8") (+ "+") (number_literal "1"))) (; ";")) (} "}"))) (} "}")))) (expression_statement "uVar11 = *puStack_12c;" (assignment_expression "uVar11 = *puStack_12c" (identifier "uVar11") (= "=") (pointer_expression "*puStack_12c" (* "*") (identifier "puStack_12c"))) (; ";")) (expression_statement "uVar5 = uStack_130;" (assignment_expression "uVar5 = uStack_130" (identifier "uVar5") (= "=") (identifier "uStack_130")) (; ";")) (expression_statement "puVar7 = puStack_12c;" (assignment_expression "puVar7 = puStack_12c" (identifier "puVar7") (= "=") (identifier "puStack_12c")) (; ";")) (expression_statement "puVar12 = puStack_11c;" (assignment_expression "puVar12 = puStack_11c" (identifier "puVar12") (= "=") (identifier "puStack_11c")) (; ";")) (if_statement "if ((int)uStack_f0 < (int)puStack_11c) {\n    uStack_114 = *(undefined4 *)(iStack_d4 + uStack_100 + 4);\n  }" (if "if") (parenthesized_expression "((int)uStack_f0 < (int)puStack_11c)" (( "(") (binary_expression "(int)uStack_f0 < (int)puStack_11c" (cast_expression "(int)uStack_f0" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uStack_f0")) (< "<") (cast_expression "(int)puStack_11c" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puStack_11c"))) () ")")) (compound_statement "{\n    uStack_114 = *(undefined4 *)(iStack_d4 + uStack_100 + 4);\n  }" ({ "{") (expression_statement "uStack_114 = *(undefined4 *)(iStack_d4 + uStack_100 + 4);" (assignment_expression "uStack_114 = *(undefined4 *)(iStack_d4 + uStack_100 + 4)" (identifier "uStack_114") (= "=") (pointer_expression "*(undefined4 *)(iStack_d4 + uStack_100 + 4)" (* "*") (cast_expression "(undefined4 *)(iStack_d4 + uStack_100 + 4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iStack_d4 + uStack_100 + 4)" (( "(") (binary_expression "iStack_d4 + uStack_100 + 4" (binary_expression "iStack_d4 + uStack_100" (identifier "iStack_d4") (+ "+") (identifier "uStack_100")) (+ "+") (number_literal "4")) () ")"))))) (; ";")) (} "}"))) (labeled_statement "LAB_0004e83d:\n  piVar9 = local_f8 + uVar5;" (statement_identifier "LAB_0004e83d") (: ":") (expression_statement "piVar9 = local_f8 + uVar5;" (assignment_expression "piVar9 = local_f8 + uVar5" (identifier "piVar9") (= "=") (binary_expression "local_f8 + uVar5" (identifier "local_f8") (+ "+") (identifier "uVar5"))) (; ";"))) (expression_statement "puStack_11c = puVar7;" (assignment_expression "puStack_11c = puVar7" (identifier "puStack_11c") (= "=") (identifier "puVar7")) (; ";")) (if_statement "if ((uStack_f4 & 0x1f) == 0) {\n    *(int *)(puVar14 + -8) = iStack_110;\n    *(int **)(puVar14 + -0xc) = piVar9;\n    *(int *)(puVar14 + -0x10) = iStack_d4;\n    pcVar2 = *(code **)(iStack_e0 + 0x28);\n    *(undefined4 *)(puVar14 + -0x14) = 0x4ed09;\n    (*pcVar2)();\n  }\n  else {\n    *(uint *)(puVar14 + -4) = uStack_f4 & 0x1f;\n    *(int *)(puVar14 + -8) = iStack_110;\n    *(int **)(puVar14 + -0xc) = piVar9;\n    iVar10 = iStack_e0;\n    *(int *)(puVar14 + -0x10) = iStack_d4;\n    pcVar2 = *(code **)(iVar10 + 0x80);\n    *(undefined4 *)(puVar14 + -0x14) = 0x4e875;\n    (*pcVar2)();\n  }" (if "if") (parenthesized_expression "((uStack_f4 & 0x1f) == 0)" (( "(") (binary_expression "(uStack_f4 & 0x1f) == 0" (parenthesized_expression "(uStack_f4 & 0x1f)" (( "(") (binary_expression "uStack_f4 & 0x1f" (identifier "uStack_f4") (& "&") (number_literal "0x1f")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    *(int *)(puVar14 + -8) = iStack_110;\n    *(int **)(puVar14 + -0xc) = piVar9;\n    *(int *)(puVar14 + -0x10) = iStack_d4;\n    pcVar2 = *(code **)(iStack_e0 + 0x28);\n    *(undefined4 *)(puVar14 + -0x14) = 0x4ed09;\n    (*pcVar2)();\n  }" ({ "{") (expression_statement "*(int *)(puVar14 + -8) = iStack_110;" (assignment_expression "*(int *)(puVar14 + -8) = iStack_110" (pointer_expression "*(int *)(puVar14 + -8)" (* "*") (cast_expression "(int *)(puVar14 + -8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar14 + -8)" (( "(") (binary_expression "puVar14 + -8" (identifier "puVar14") (+ "+") (number_literal "-8")) () ")")))) (= "=") (identifier "iStack_110")) (; ";")) (expression_statement "*(int **)(puVar14 + -0xc) = piVar9;" (assignment_expression "*(int **)(puVar14 + -0xc) = piVar9" (pointer_expression "*(int **)(puVar14 + -0xc)" (* "*") (cast_expression "(int **)(puVar14 + -0xc)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar14 + -0xc)" (( "(") (binary_expression "puVar14 + -0xc" (identifier "puVar14") (+ "+") (number_literal "-0xc")) () ")")))) (= "=") (identifier "piVar9")) (; ";")) (expression_statement "*(int *)(puVar14 + -0x10) = iStack_d4;" (assignment_expression "*(int *)(puVar14 + -0x10) = iStack_d4" (pointer_expression "*(int *)(puVar14 + -0x10)" (* "*") (cast_expression "(int *)(puVar14 + -0x10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar14 + -0x10)" (( "(") (binary_expression "puVar14 + -0x10" (identifier "puVar14") (+ "+") (number_literal "-0x10")) () ")")))) (= "=") (identifier "iStack_d4")) (; ";")) (expression_statement "pcVar2 = *(code **)(iStack_e0 + 0x28);" (assignment_expression "pcVar2 = *(code **)(iStack_e0 + 0x28)" (identifier "pcVar2") (= "=") (pointer_expression "*(code **)(iStack_e0 + 0x28)" (* "*") (cast_expression "(code **)(iStack_e0 + 0x28)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iStack_e0 + 0x28)" (( "(") (binary_expression "iStack_e0 + 0x28" (identifier "iStack_e0") (+ "+") (number_literal "0x28")) () ")"))))) (; ";")) (expression_statement "*(undefined4 *)(puVar14 + -0x14) = 0x4ed09;" (assignment_expression "*(undefined4 *)(puVar14 + -0x14) = 0x4ed09" (pointer_expression "*(undefined4 *)(puVar14 + -0x14)" (* "*") (cast_expression "(undefined4 *)(puVar14 + -0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar14 + -0x14)" (( "(") (binary_expression "puVar14 + -0x14" (identifier "puVar14") (+ "+") (number_literal "-0x14")) () ")")))) (= "=") (number_literal "0x4ed09")) (; ";")) (expression_statement "(*pcVar2)();" (call_expression "(*pcVar2)()" (parenthesized_expression "(*pcVar2)" (( "(") (pointer_expression "*pcVar2" (* "*") (identifier "pcVar2")) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (} "}")) (else_clause "else {\n    *(uint *)(puVar14 + -4) = uStack_f4 & 0x1f;\n    *(int *)(puVar14 + -8) = iStack_110;\n    *(int **)(puVar14 + -0xc) = piVar9;\n    iVar10 = iStack_e0;\n    *(int *)(puVar14 + -0x10) = iStack_d4;\n    pcVar2 = *(code **)(iVar10 + 0x80);\n    *(undefined4 *)(puVar14 + -0x14) = 0x4e875;\n    (*pcVar2)();\n  }" (else "else") (compound_statement "{\n    *(uint *)(puVar14 + -4) = uStack_f4 & 0x1f;\n    *(int *)(puVar14 + -8) = iStack_110;\n    *(int **)(puVar14 + -0xc) = piVar9;\n    iVar10 = iStack_e0;\n    *(int *)(puVar14 + -0x10) = iStack_d4;\n    pcVar2 = *(code **)(iVar10 + 0x80);\n    *(undefined4 *)(puVar14 + -0x14) = 0x4e875;\n    (*pcVar2)();\n  }" ({ "{") (expression_statement "*(uint *)(puVar14 + -4) = uStack_f4 & 0x1f;" (assignment_expression "*(uint *)(puVar14 + -4) = uStack_f4 & 0x1f" (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")) () ")")))) (= "=") (binary_expression "uStack_f4 & 0x1f" (identifier "uStack_f4") (& "&") (number_literal "0x1f"))) (; ";")) (expression_statement "*(int *)(puVar14 + -8) = iStack_110;" (assignment_expression "*(int *)(puVar14 + -8) = iStack_110" (pointer_expression "*(int *)(puVar14 + -8)" (* "*") (cast_expression "(int *)(puVar14 + -8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar14 + -8)" (( "(") (binary_expression "puVar14 + -8" (identifier "puVar14") (+ "+") (number_literal "-8")) () ")")))) (= "=") (identifier "iStack_110")) (; ";")) (expression_statement "*(int **)(puVar14 + -0xc) = piVar9;" (assignment_expression "*(int **)(puVar14 + -0xc) = piVar9" (pointer_expression "*(int **)(puVar14 + -0xc)" (* "*") (cast_expression "(int **)(puVar14 + -0xc)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar14 + -0xc)" (( "(") (binary_expression "puVar14 + -0xc" (identifier "puVar14") (+ "+") (number_literal "-0xc")) () ")")))) (= "=") (identifier "piVar9")) (; ";")) (expression_statement "iVar10 = iStack_e0;" (assignment_expression "iVar10 = iStack_e0" (identifier "iVar10") (= "=") (identifier "iStack_e0")) (; ";")) (expression_statement "*(int *)(puVar14 + -0x10) = iStack_d4;" (assignment_expression "*(int *)(puVar14 + -0x10) = iStack_d4" (pointer_expression "*(int *)(puVar14 + -0x10)" (* "*") (cast_expression "(int *)(puVar14 + -0x10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar14 + -0x10)" (( "(") (binary_expression "puVar14 + -0x10" (identifier "puVar14") (+ "+") (number_literal "-0x10")) () ")")))) (= "=") (identifier "iStack_d4")) (; ";")) (expression_statement "pcVar2 = *(code **)(iVar10 + 0x80);" (assignment_expression "pcVar2 = *(code **)(iVar10 + 0x80)" (identifier "pcVar2") (= "=") (pointer_expression "*(code **)(iVar10 + 0x80)" (* "*") (cast_expression "(code **)(iVar10 + 0x80)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar10 + 0x80)" (( "(") (binary_expression "iVar10 + 0x80" (identifier "iVar10") (+ "+") (number_literal "0x80")) () ")"))))) (; ";")) (expression_statement "*(undefined4 *)(puVar14 + -0x14) = 0x4e875;" (assignment_expression "*(undefined4 *)(puVar14 + -0x14) = 0x4e875" (pointer_expression "*(undefined4 *)(puVar14 + -0x14)" (* "*") (cast_expression "(undefined4 *)(puVar14 + -0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar14 + -0x14)" (( "(") (binary_expression "puVar14 + -0x14" (identifier "puVar14") (+ "+") (number_literal "-0x14")) () ")")))) (= "=") (number_literal "0x4e875")) (; ";")) (expression_statement "(*pcVar2)();" (call_expression "(*pcVar2)()" (parenthesized_expression "(*pcVar2)" (( "(") (pointer_expression "*pcVar2" (* "*") (identifier "pcVar2")) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (} "}")))) (expression_statement "iVar15 = iStack_d0;" (assignment_expression "iVar15 = iStack_d0" (identifier "iVar15") (= "=") (identifier "iStack_d0")) (; ";")) (expression_statement "iVar10 = iStack_108;" (assignment_expression "iVar10 = iStack_108" (identifier "iVar10") (= "=") (identifier "iStack_108")) (; ";")) (expression_statement "*puStack_11c = uVar11 | ~(-1 << ((byte)uStack_e4 & 0x1f)) & *puStack_11c;" (assignment_expression "*puStack_11c = uVar11 | ~(-1 << ((byte)uStack_e4 & 0x1f)) & *puStack_11c" (pointer_expression "*puStack_11c" (* "*") (identifier "puStack_11c")) (= "=") (binary_expression "uVar11 | ~(-1 << ((byte)uStack_e4 & 0x1f)) & *puStack_11c" (identifier "uVar11") (| "|") (binary_expression "~(-1 << ((byte)uStack_e4 & 0x1f)) & *puStack_11c" (unary_expression "~(-1 << ((byte)uStack_e4 & 0x1f))" (~ "~") (parenthesized_expression "(-1 << ((byte)uStack_e4 & 0x1f))" (( "(") (binary_expression "-1 << ((byte)uStack_e4 & 0x1f)" (number_literal "-1") (<< "<<") (parenthesized_expression "((byte)uStack_e4 & 0x1f)" (( "(") (binary_expression "(byte)uStack_e4 & 0x1f" (cast_expression "(byte)uStack_e4" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "uStack_e4")) (& "&") (number_literal "0x1f")) () ")"))) () ")"))) (& "&") (pointer_expression "*puStack_11c" (* "*") (identifier "puStack_11c"))))) (; ";")) (if_statement "if ((int)uStack_f0 < (int)puVar12) {\n    *(undefined4 *)(iStack_d4 + (uStack_f0 + 1) * 4) = uStack_114;\n  }" (if "if") (parenthesized_expression "((int)uStack_f0 < (int)puVar12)" (( "(") (binary_expression "(int)uStack_f0 < (int)puVar12" (cast_expression "(int)uStack_f0" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uStack_f0")) (< "<") (cast_expression "(int)puVar12" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar12"))) () ")")) (compound_statement "{\n    *(undefined4 *)(iStack_d4 + (uStack_f0 + 1) * 4) = uStack_114;\n  }" ({ "{") (expression_statement "*(undefined4 *)(iStack_d4 + (uStack_f0 + 1) * 4) = uStack_114;" (assignment_expression "*(undefined4 *)(iStack_d4 + (uStack_f0 + 1) * 4) = uStack_114" (pointer_expression "*(undefined4 *)(iStack_d4 + (uStack_f0 + 1) * 4)" (* "*") (cast_expression "(undefined4 *)(iStack_d4 + (uStack_f0 + 1) * 4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iStack_d4 + (uStack_f0 + 1) * 4)" (( "(") (binary_expression "iStack_d4 + (uStack_f0 + 1) * 4" (identifier "iStack_d4") (+ "+") (binary_expression "(uStack_f0 + 1) * 4" (parenthesized_expression "(uStack_f0 + 1)" (( "(") (binary_expression "uStack_f0 + 1" (identifier "uStack_f0") (+ "+") (number_literal "1")) () ")")) (* "*") (number_literal "4"))) () ")")))) (= "=") (identifier "uStack_114")) (; ";")) (} "}"))) (expression_statement "*(uint *)(puVar14 + -4) = param_2;" (assignment_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")) (; ";")) (expression_statement "iVar4 = iStack_e0;" (assignment_expression "iVar4 = iStack_e0" (identifier "iVar4") (= "=") (identifier "iStack_e0")) (; ";")) (expression_statement "*(int *)(puVar14 + -8) = iVar10;" (assignment_expression "*(int *)(puVar14 + -8) = iVar10" (pointer_expression "*(int *)(puVar14 + -8)" (* "*") (cast_expression "(int *)(puVar14 + -8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar14 + -8)" (( "(") (binary_expression "puVar14 + -8" (identifier "puVar14") (+ "+") (number_literal "-8")) () ")")))) (= "=") (identifier "iVar10")) (; ";")) (expression_statement "*(int *)(puVar14 + -0xc) = iVar15;" (assignment_expression "*(int *)(puVar14 + -0xc) = iVar15" (pointer_expression "*(int *)(puVar14 + -0xc)" (* "*") (cast_expression "(int *)(puVar14 + -0xc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar14 + -0xc)" (( "(") (binary_expression "puVar14 + -0xc" (identifier "puVar14") (+ "+") (number_literal "-0xc")) () ")")))) (= "=") (identifier "iVar15")) (; ";")) (expression_statement "*(int *)(puVar14 + -0x10) = iVar15;" (assignment_expression "*(int *)(puVar14 + -0x10) = iVar15" (pointer_expression "*(int *)(puVar14 + -0x10)" (* "*") (cast_expression "(int *)(puVar14 + -0x10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar14 + -0x10)" (( "(") (binary_expression "puVar14 + -0x10" (identifier "puVar14") (+ "+") (number_literal "-0x10")) () ")")))) (= "=") (identifier "iVar15")) (; ";")) (expression_statement "pcVar2 = *(code **)(iVar4 + 100);" (assignment_expression "pcVar2 = *(code **)(iVar4 + 100)" (identifier "pcVar2") (= "=") (pointer_expression "*(code **)(iVar4 + 100)" (* "*") (cast_expression "(code **)(iVar4 + 100)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar4 + 100)" (( "(") (binary_expression "iVar4 + 100" (identifier "iVar4") (+ "+") (number_literal "100")) () ")"))))) (; ";")) (expression_statement "*(undefined4 *)(puVar14 + -0x14) = 0x4e8c9;" (assignment_expression "*(undefined4 *)(puVar14 + -0x14) = 0x4e8c9" (pointer_expression "*(undefined4 *)(puVar14 + -0x14)" (* "*") (cast_expression "(undefined4 *)(puVar14 + -0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar14 + -0x14)" (( "(") (binary_expression "puVar14 + -0x14" (identifier "puVar14") (+ "+") (number_literal "-0x14")) () ")")))) (= "=") (number_literal "0x4e8c9")) (; ";")) (expression_statement "iVar6 = (*pcVar2)();" (assignment_expression "iVar6 = (*pcVar2)()" (identifier "iVar6") (= "=") (call_expression "(*pcVar2)()" (parenthesized_expression "(*pcVar2)" (( "(") (pointer_expression "*pcVar2" (* "*") (identifier "pcVar2")) () ")")) (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "puVar7 = local_c0;" (assignment_expression "puVar7 = local_c0" (identifier "puVar7") (= "=") (identifier "local_c0")) (; ";")) (expression_statement "iVar4 = iStack_cc;" (assignment_expression "iVar4 = iStack_cc" (identifier "iVar4") (= "=") (identifier "iStack_cc")) (; ";")) (expression_statement "*(int *)(iVar15 + iVar10 * 4) = iVar6;" (assignment_expression "*(int *)(iVar15 + iVar10 * 4) = iVar6" (pointer_expression "*(int *)(iVar15 + iVar10 * 4)" (* "*") (cast_expression "(int *)(iVar15 + iVar10 * 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar15 + iVar10 * 4)" (( "(") (binary_expression "iVar15 + iVar10 * 4" (identifier "iVar15") (+ "+") (binary_expression "iVar10 * 4" (identifier "iVar10") (* "*") (number_literal "4"))) () ")")))) (= "=") (identifier "iVar6")) (; ";")) (expression_statement "iVar10 = (uint)(iVar6 != 0) + iVar10;" (assignment_expression "iVar10 = (uint)(iVar6 != 0) + iVar10" (identifier "iVar10") (= "=") (binary_expression "(uint)(iVar6 != 0) + iVar10" (call_expression "(uint)(iVar6 != 0)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(iVar6 != 0)" (( "(") (binary_expression "iVar6 != 0" (identifier "iVar6") (!= "!=") (number_literal "0")) () ")"))) (+ "+") (identifier "iVar10"))) (; ";")) (expression_statement "puVar12 = (uint *)(uStack_100 + (int)local_c0);" (assignment_expression "puVar12 = (uint *)(uStack_100 + (int)local_c0)" (identifier "puVar12") (= "=") (cast_expression "(uint *)(uStack_100 + (int)local_c0)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uStack_100 + (int)local_c0)" (( "(") (binary_expression "uStack_100 + (int)local_c0" (identifier "uStack_100") (+ "+") (cast_expression "(int)local_c0" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_c0"))) () ")")))) (; ";")) (expression_statement "iVar15 = uStack_f0 + iStack_cc;" (assignment_expression "iVar15 = uStack_f0 + iStack_cc" (identifier "iVar15") (= "=") (binary_expression "uStack_f0 + iStack_cc" (identifier "uStack_f0") (+ "+") (identifier "iStack_cc"))) (; ";")) (if_statement "if (uStack_e4 == 0) {\n    *(int *)(puVar14 + -8) = iStack_cc;\n    *(uint **)(puVar14 + -0xc) = local_c0;\n    *(uint **)(puVar14 + -0x10) = puVar12;\n    pcVar2 = *(code **)(iStack_e0 + 0x24);\n    *(undefined4 *)(puVar14 + -0x14) = 0x4ecd9;\n    (*pcVar2)();\nLAB_0004ecdc:\n    iStack_cc = iVar15;\n  }\n  else {\n    *(uint *)(puVar14 + -4) = uStack_e4;\n    *(int *)(puVar14 + -8) = iVar4;\n    *(uint **)(puVar14 + -0xc) = puVar7;\n    *(uint **)(puVar14 + -0x10) = puVar12;\n    pcVar2 = *(code **)(iStack_e0 + 0x38);\n    *(undefined4 *)(puVar14 + -0x14) = 0x4e915;\n    uVar11 = (*pcVar2)();\n    if (uVar11 == 0) goto LAB_0004ecdc;\n    local_c0[iVar15] = uVar11;\n    iStack_cc = iVar15 + 1;\n  }" (if "if") (parenthesized_expression "(uStack_e4 == 0)" (( "(") (binary_expression "uStack_e4 == 0" (identifier "uStack_e4") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    *(int *)(puVar14 + -8) = iStack_cc;\n    *(uint **)(puVar14 + -0xc) = local_c0;\n    *(uint **)(puVar14 + -0x10) = puVar12;\n    pcVar2 = *(code **)(iStack_e0 + 0x24);\n    *(undefined4 *)(puVar14 + -0x14) = 0x4ecd9;\n    (*pcVar2)();\nLAB_0004ecdc:\n    iStack_cc = iVar15;\n  }" ({ "{") (expression_statement "*(int *)(puVar14 + -8) = iStack_cc;" (assignment_expression "*(int *)(puVar14 + -8) = iStack_cc" (pointer_expression "*(int *)(puVar14 + -8)" (* "*") (cast_expression "(int *)(puVar14 + -8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar14 + -8)" (( "(") (binary_expression "puVar14 + -8" (identifier "puVar14") (+ "+") (number_literal "-8")) () ")")))) (= "=") (identifier "iStack_cc")) (; ";")) (expression_statement "*(uint **)(puVar14 + -0xc) = local_c0;" (assignment_expression "*(uint **)(puVar14 + -0xc) = local_c0" (pointer_expression "*(uint **)(puVar14 + -0xc)" (* "*") (cast_expression "(uint **)(puVar14 + -0xc)" (( "(") (type_descriptor "uint **" (type_identifier "uint") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar14 + -0xc)" (( "(") (binary_expression "puVar14 + -0xc" (identifier "puVar14") (+ "+") (number_literal "-0xc")) () ")")))) (= "=") (identifier "local_c0")) (; ";")) (expression_statement "*(uint **)(puVar14 + -0x10) = puVar12;" (assignment_expression "*(uint **)(puVar14 + -0x10) = puVar12" (pointer_expression "*(uint **)(puVar14 + -0x10)" (* "*") (cast_expression "(uint **)(puVar14 + -0x10)" (( "(") (type_descriptor "uint **" (type_identifier "uint") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar14 + -0x10)" (( "(") (binary_expression "puVar14 + -0x10" (identifier "puVar14") (+ "+") (number_literal "-0x10")) () ")")))) (= "=") (identifier "puVar12")) (; ";")) (expression_statement "pcVar2 = *(code **)(iStack_e0 + 0x24);" (assignment_expression "pcVar2 = *(code **)(iStack_e0 + 0x24)" (identifier "pcVar2") (= "=") (pointer_expression "*(code **)(iStack_e0 + 0x24)" (* "*") (cast_expression "(code **)(iStack_e0 + 0x24)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iStack_e0 + 0x24)" (( "(") (binary_expression "iStack_e0 + 0x24" (identifier "iStack_e0") (+ "+") (number_literal "0x24")) () ")"))))) (; ";")) (expression_statement "*(undefined4 *)(puVar14 + -0x14) = 0x4ecd9;" (assignment_expression "*(undefined4 *)(puVar14 + -0x14) = 0x4ecd9" (pointer_expression "*(undefined4 *)(puVar14 + -0x14)" (* "*") (cast_expression "(undefined4 *)(puVar14 + -0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar14 + -0x14)" (( "(") (binary_expression "puVar14 + -0x14" (identifier "puVar14") (+ "+") (number_literal "-0x14")) () ")")))) (= "=") (number_literal "0x4ecd9")) (; ";")) (expression_statement "(*pcVar2)();" (call_expression "(*pcVar2)()" (parenthesized_expression "(*pcVar2)" (( "(") (pointer_expression "*pcVar2" (* "*") (identifier "pcVar2")) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (labeled_statement "LAB_0004ecdc:\n    iStack_cc = iVar15;" (statement_identifier "LAB_0004ecdc") (: ":") (expression_statement "iStack_cc = iVar15;" (assignment_expression "iStack_cc = iVar15" (identifier "iStack_cc") (= "=") (identifier "iVar15")) (; ";"))) (} "}")) (else_clause "else {\n    *(uint *)(puVar14 + -4) = uStack_e4;\n    *(int *)(puVar14 + -8) = iVar4;\n    *(uint **)(puVar14 + -0xc) = puVar7;\n    *(uint **)(puVar14 + -0x10) = puVar12;\n    pcVar2 = *(code **)(iStack_e0 + 0x38);\n    *(undefined4 *)(puVar14 + -0x14) = 0x4e915;\n    uVar11 = (*pcVar2)();\n    if (uVar11 == 0) goto LAB_0004ecdc;\n    local_c0[iVar15] = uVar11;\n    iStack_cc = iVar15 + 1;\n  }" (else "else") (compound_statement "{\n    *(uint *)(puVar14 + -4) = uStack_e4;\n    *(int *)(puVar14 + -8) = iVar4;\n    *(uint **)(puVar14 + -0xc) = puVar7;\n    *(uint **)(puVar14 + -0x10) = puVar12;\n    pcVar2 = *(code **)(iStack_e0 + 0x38);\n    *(undefined4 *)(puVar14 + -0x14) = 0x4e915;\n    uVar11 = (*pcVar2)();\n    if (uVar11 == 0) goto LAB_0004ecdc;\n    local_c0[iVar15] = uVar11;\n    iStack_cc = iVar15 + 1;\n  }" ({ "{") (expression_statement "*(uint *)(puVar14 + -4) = uStack_e4;" (assignment_expression "*(uint *)(puVar14 + -4) = uStack_e4" (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 "uStack_e4")) (; ";")) (expression_statement "*(int *)(puVar14 + -8) = iVar4;" (assignment_expression "*(int *)(puVar14 + -8) = iVar4" (pointer_expression "*(int *)(puVar14 + -8)" (* "*") (cast_expression "(int *)(puVar14 + -8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar14 + -8)" (( "(") (binary_expression "puVar14 + -8" (identifier "puVar14") (+ "+") (number_literal "-8")) () ")")))) (= "=") (identifier "iVar4")) (; ";")) (expression_statement "*(uint **)(puVar14 + -0xc) = puVar7;" (assignment_expression "*(uint **)(puVar14 + -0xc) = puVar7" (pointer_expression "*(uint **)(puVar14 + -0xc)" (* "*") (cast_expression "(uint **)(puVar14 + -0xc)" (( "(") (type_descriptor "uint **" (type_identifier "uint") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar14 + -0xc)" (( "(") (binary_expression "puVar14 + -0xc" (identifier "puVar14") (+ "+") (number_literal "-0xc")) () ")")))) (= "=") (identifier "puVar7")) (; ";")) (expression_statement "*(uint **)(puVar14 + -0x10) = puVar12;" (assignment_expression "*(uint **)(puVar14 + -0x10) = puVar12" (pointer_expression "*(uint **)(puVar14 + -0x10)" (* "*") (cast_expression "(uint **)(puVar14 + -0x10)" (( "(") (type_descriptor "uint **" (type_identifier "uint") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar14 + -0x10)" (( "(") (binary_expression "puVar14 + -0x10" (identifier "puVar14") (+ "+") (number_literal "-0x10")) () ")")))) (= "=") (identifier "puVar12")) (; ";")) (expression_statement "pcVar2 = *(code **)(iStack_e0 + 0x38);" (assignment_expression "pcVar2 = *(code **)(iStack_e0 + 0x38)" (identifier "pcVar2") (= "=") (pointer_expression "*(code **)(iStack_e0 + 0x38)" (* "*") (cast_expression "(code **)(iStack_e0 + 0x38)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iStack_e0 + 0x38)" (( "(") (binary_expression "iStack_e0 + 0x38" (identifier "iStack_e0") (+ "+") (number_literal "0x38")) () ")"))))) (; ";")) (expression_statement "*(undefined4 *)(puVar14 + -0x14) = 0x4e915;" (assignment_expression "*(undefined4 *)(puVar14 + -0x14) = 0x4e915" (pointer_expression "*(undefined4 *)(puVar14 + -0x14)" (* "*") (cast_expression "(undefined4 *)(puVar14 + -0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar14 + -0x14)" (( "(") (binary_expression "puVar14 + -0x14" (identifier "puVar14") (+ "+") (number_literal "-0x14")) () ")")))) (= "=") (number_literal "0x4e915")) (; ";")) (expression_statement "uVar11 = (*pcVar2)();" (assignment_expression "uVar11 = (*pcVar2)()" (identifier "uVar11") (= "=") (call_expression "(*pcVar2)()" (parenthesized_expression "(*pcVar2)" (( "(") (pointer_expression "*pcVar2" (* "*") (identifier "pcVar2")) () ")")) (argument_list "()" (( "(") () ")")))) (; ";")) (if_statement "if (uVar11 == 0) goto LAB_0004ecdc;" (if "if") (parenthesized_expression "(uVar11 == 0)" (( "(") (binary_expression "uVar11 == 0" (identifier "uVar11") (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_0004ecdc;" (goto "goto") (statement_identifier "LAB_0004ecdc") (; ";"))) (expression_statement "local_c0[iVar15] = uVar11;" (assignment_expression "local_c0[iVar15] = uVar11" (subscript_expression "local_c0[iVar15]" (identifier "local_c0") ([ "[") (identifier "iVar15") (] "]")) (= "=") (identifier "uVar11")) (; ";")) (expression_statement "iStack_cc = iVar15 + 1;" (assignment_expression "iStack_cc = iVar15 + 1" (identifier "iStack_cc") (= "=") (binary_expression "iVar15 + 1" (identifier "iVar15") (+ "+") (number_literal "1"))) (; ";")) (} "}")))) (expression_statement "uStack_f0 = *puVar12;" (assignment_expression "uStack_f0 = *puVar12" (identifier "uStack_f0") (= "=") (pointer_expression "*puVar12" (* "*") (identifier "puVar12"))) (; ";")) (expression_statement "uVar5 = uStack_e8 - 1 >> 5;" (assignment_expression "uVar5 = uStack_e8 - 1 >> 5" (identifier "uVar5") (= "=") (binary_expression "uStack_e8 - 1 >> 5" (binary_expression "uStack_e8 - 1" (identifier "uStack_e8") (- "-") (number_literal "1")) (>> ">>") (number_literal "5"))) (; ";")) (expression_statement "uVar11 = uVar5 + 1;" (assignment_expression "uVar11 = uVar5 + 1" (identifier "uVar11") (= "=") (binary_expression "uVar5 + 1" (identifier "uVar5") (+ "+") (number_literal "1"))) (; ";")) (if_statement "if ((int)uStack_d8 < iVar10) {\n    *(uint *)(puVar14 + -8) = uVar11 * 4;\n    *(undefined4 *)(puVar14 + -0xc) = 0;\n    *(uint **)(puVar14 + -0x10) = local_c0;\n    *(undefined4 *)(puVar14 + -0x14) = 0x4ee04;\n    memset(*(void **)(puVar14 + -0x10),*(int *)(puVar14 + -0xc),*(size_t *)(puVar14 + -8));\n    goto LAB_0004e9ab;\n  }" (if "if") (parenthesized_expression "((int)uStack_d8 < iVar10)" (( "(") (binary_expression "(int)uStack_d8 < iVar10" (cast_expression "(int)uStack_d8" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uStack_d8")) (< "<") (identifier "iVar10")) () ")")) (compound_statement "{\n    *(uint *)(puVar14 + -8) = uVar11 * 4;\n    *(undefined4 *)(puVar14 + -0xc) = 0;\n    *(uint **)(puVar14 + -0x10) = local_c0;\n    *(undefined4 *)(puVar14 + -0x14) = 0x4ee04;\n    memset(*(void **)(puVar14 + -0x10),*(int *)(puVar14 + -0xc),*(size_t *)(puVar14 + -8));\n    goto LAB_0004e9ab;\n  }" ({ "{") (expression_statement "*(uint *)(puVar14 + -8) = uVar11 * 4;" (assignment_expression "*(uint *)(puVar14 + -8) = uVar11 * 4" (pointer_expression "*(uint *)(puVar14 + -8)" (* "*") (cast_expression "(uint *)(puVar14 + -8)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar14 + -8)" (( "(") (binary_expression "puVar14 + -8" (identifier "puVar14") (+ "+") (number_literal "-8")) () ")")))) (= "=") (binary_expression "uVar11 * 4" (identifier "uVar11") (* "*") (number_literal "4"))) (; ";")) (expression_statement "*(undefined4 *)(puVar14 + -0xc) = 0;" (assignment_expression "*(undefined4 *)(puVar14 + -0xc) = 0" (pointer_expression "*(undefined4 *)(puVar14 + -0xc)" (* "*") (cast_expression "(undefined4 *)(puVar14 + -0xc)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar14 + -0xc)" (( "(") (binary_expression "puVar14 + -0xc" (identifier "puVar14") (+ "+") (number_literal "-0xc")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(uint **)(puVar14 + -0x10) = local_c0;" (assignment_expression "*(uint **)(puVar14 + -0x10) = local_c0" (pointer_expression "*(uint **)(puVar14 + -0x10)" (* "*") (cast_expression "(uint **)(puVar14 + -0x10)" (( "(") (type_descriptor "uint **" (type_identifier "uint") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar14 + -0x10)" (( "(") (binary_expression "puVar14 + -0x10" (identifier "puVar14") (+ "+") (number_literal "-0x10")) () ")")))) (= "=") (identifier "local_c0")) (; ";")) (expression_statement "*(undefined4 *)(puVar14 + -0x14) = 0x4ee04;" (assignment_expression "*(undefined4 *)(puVar14 + -0x14) = 0x4ee04" (pointer_expression "*(undefined4 *)(puVar14 + -0x14)" (* "*") (cast_expression "(undefined4 *)(puVar14 + -0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar14 + -0x14)" (( "(") (binary_expression "puVar14 + -0x14" (identifier "puVar14") (+ "+") (number_literal "-0x14")) () ")")))) (= "=") (number_literal "0x4ee04")) (; ";")) (expression_statement "memset(*(void **)(puVar14 + -0x10),*(int *)(puVar14 + -0xc),*(size_t *)(puVar14 + -8));" (call_expression "memset(*(void **)(puVar14 + -0x10),*(int *)(puVar14 + -0xc),*(size_t *)(puVar14 + -8))" (identifier "memset") (argument_list "(*(void **)(puVar14 + -0x10),*(int *)(puVar14 + -0xc),*(size_t *)(puVar14 + -8))" (( "(") (pointer_expression "*(void **)(puVar14 + -0x10)" (* "*") (cast_expression "(void **)(puVar14 + -0x10)" (( "(") (type_descriptor "void **" (primitive_type "void") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar14 + -0x10)" (( "(") (binary_expression "puVar14 + -0x10" (identifier "puVar14") (+ "+") (number_literal "-0x10")) () ")")))) (, ",") (pointer_expression "*(int *)(puVar14 + -0xc)" (* "*") (cast_expression "(int *)(puVar14 + -0xc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar14 + -0xc)" (( "(") (binary_expression "puVar14 + -0xc" (identifier "puVar14") (+ "+") (number_literal "-0xc")) () ")")))) (, ",") (pointer_expression "*(size_t *)(puVar14 + -8)" (* "*") (cast_expression "(size_t *)(puVar14 + -8)" (( "(") (type_descriptor "size_t *" (primitive_type "size_t") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar14 + -8)" (( "(") (binary_expression "puVar14 + -8" (identifier "puVar14") (+ "+") (number_literal "-8")) () ")")))) () ")"))) (; ";")) (goto_statement "goto LAB_0004e9ab;" (goto "goto") (statement_identifier "LAB_0004e9ab") (; ";")) (} "}"))) (expression_statement "iVar15 = uStack_d8 - iVar10;" (assignment_expression "iVar15 = uStack_d8 - iVar10" (identifier "iVar15") (= "=") (binary_expression "uStack_d8 - iVar10" (identifier "uStack_d8") (- "-") (identifier "iVar10"))) (; ";")) (if_statement "if (iVar15 <= (int)uVar11) {\n    *(int *)(puVar14 + -0xc) = iStack_120;\n    *(int *)(puVar14 + -0x10) = iVar10;\n    *(int *)(puVar14 + -0x14) = iStack_d0;\n    *(uint *)(puVar14 + -0x18) = uStack_d8;\n    *(int *)(puVar14 + -0x1c) = iStack_d4;\n    *(int *)(puVar14 + -0x20) = iStack_dc;\n    iStack_108 = iVar15;\n    uStack_100 = uVar11;\n    *(undefined4 *)(puVar14 + -0x24) = 0x4ead1;\n    __gmpn_div_q();\n    puVar7 = local_c0;\n    iVar10 = iStack_e0;\n    uVar13 = (uint)(*(int *)(iStack_dc + iStack_108 * 4) != 0) + iStack_108;\n    uVar11 = uStack_100;\n    if ((int)uVar13 <= (int)uStack_100) {\n      if ((uStack_100 != uVar13) || (uStack_e4 == 0)) {\n        uStack_e4 = uStack_100;\n        *(uint *)(puVar14 + -8) = uVar13;\n        *(int *)(puVar14 + -0xc) = iStack_dc;\n        *(uint **)(puVar14 + -0x10) = puVar7;\n        pcVar2 = *(code **)(iVar10 + 0x28);\n        *(undefined4 *)(puVar14 + -0x14) = 0x4eb2a;\n        (*pcVar2)();\n        if (uStack_e4 != uVar13) {\n          *(uint *)(puVar14 + -8) = (uStack_e4 - uVar13) * 4;\n          *(undefined4 *)(puVar14 + -0xc) = 0;\n          *(uint **)(puVar14 + -0x10) = puVar7 + uVar13;\n          *(undefined4 *)(puVar14 + -0x14) = 0x4eb55;\n          memset(*(void **)(puVar14 + -0x10),*(int *)(puVar14 + -0xc),*(size_t *)(puVar14 + -8));\n        }\n        goto LAB_0004e9ab;\n      }\n      if (*(uint *)(iStack_dc + -4 + uVar13 * 4) >> ((byte)uStack_e4 & 0x1f) == 0) {\n        *(uint *)(puVar14 + -8) = uVar13;\n        *(int *)(puVar14 + -0xc) = iStack_dc;\n        *(uint **)(puVar14 + -0x10) = local_c0;\n        pcVar2 = *(code **)(iVar10 + 0x28);\n        *(undefined4 *)(puVar14 + -0x14) = 0x4ede2;\n        (*pcVar2)();\n        goto LAB_0004e9ab;\n      }\n    }\n  }" (if "if") (parenthesized_expression "(iVar15 <= (int)uVar11)" (( "(") (binary_expression "iVar15 <= (int)uVar11" (identifier "iVar15") (<= "<=") (cast_expression "(int)uVar11" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar11"))) () ")")) (compound_statement "{\n    *(int *)(puVar14 + -0xc) = iStack_120;\n    *(int *)(puVar14 + -0x10) = iVar10;\n    *(int *)(puVar14 + -0x14) = iStack_d0;\n    *(uint *)(puVar14 + -0x18) = uStack_d8;\n    *(int *)(puVar14 + -0x1c) = iStack_d4;\n    *(int *)(puVar14 + -0x20) = iStack_dc;\n    iStack_108 = iVar15;\n    uStack_100 = uVar11;\n    *(undefined4 *)(puVar14 + -0x24) = 0x4ead1;\n    __gmpn_div_q();\n    puVar7 = local_c0;\n    iVar10 = iStack_e0;\n    uVar13 = (uint)(*(int *)(iStack_dc + iStack_108 * 4) != 0) + iStack_108;\n    uVar11 = uStack_100;\n    if ((int)uVar13 <= (int)uStack_100) {\n      if ((uStack_100 != uVar13) || (uStack_e4 == 0)) {\n        uStack_e4 = uStack_100;\n        *(uint *)(puVar14 + -8) = uVar13;\n        *(int *)(puVar14 + -0xc) = iStack_dc;\n        *(uint **)(puVar14 + -0x10) = puVar7;\n        pcVar2 = *(code **)(iVar10 + 0x28);\n        *(undefined4 *)(puVar14 + -0x14) = 0x4eb2a;\n        (*pcVar2)();\n        if (uStack_e4 != uVar13) {\n          *(uint *)(puVar14 + -8) = (uStack_e4 - uVar13) * 4;\n          *(undefined4 *)(puVar14 + -0xc) = 0;\n          *(uint **)(puVar14 + -0x10) = puVar7 + uVar13;\n          *(undefined4 *)(puVar14 + -0x14) = 0x4eb55;\n          memset(*(void **)(puVar14 + -0x10),*(int *)(puVar14 + -0xc),*(size_t *)(puVar14 + -8));\n        }\n        goto LAB_0004e9ab;\n      }\n      if (*(uint *)(iStack_dc + -4 + uVar13 * 4) >> ((byte)uStack_e4 & 0x1f) == 0) {\n        *(uint *)(puVar14 + -8) = uVar13;\n        *(int *)(puVar14 + -0xc) = iStack_dc;\n        *(uint **)(puVar14 + -0x10) = local_c0;\n        pcVar2 = *(code **)(iVar10 + 0x28);\n        *(undefined4 *)(puVar14 + -0x14) = 0x4ede2;\n        (*pcVar2)();\n        goto LAB_0004e9ab;\n      }\n    }\n  }" ({ "{") (expression_statement "*(int *)(puVar14 + -0xc) = iStack_120;" (assignment_expression "*(int *)(puVar14 + -0xc) = iStack_120" (pointer_expression "*(int *)(puVar14 + -0xc)" (* "*") (cast_expression "(int *)(puVar14 + -0xc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar14 + -0xc)" (( "(") (binary_expression "puVar14 + -0xc" (identifier "puVar14") (+ "+") (number_literal "-0xc")) () ")")))) (= "=") (identifier "iStack_120")) (; ";")) (expression_statement "*(int *)(puVar14 + -0x10) = iVar10;" (assignment_expression "*(int *)(puVar14 + -0x10) = iVar10" (pointer_expression "*(int *)(puVar14 + -0x10)" (* "*") (cast_expression "(int *)(puVar14 + -0x10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar14 + -0x10)" (( "(") (binary_expression "puVar14 + -0x10" (identifier "puVar14") (+ "+") (number_literal "-0x10")) () ")")))) (= "=") (identifier "iVar10")) (; ";")) (expression_statement "*(int *)(puVar14 + -0x14) = iStack_d0;" (assignment_expression "*(int *)(puVar14 + -0x14) = iStack_d0" (pointer_expression "*(int *)(puVar14 + -0x14)" (* "*") (cast_expression "(int *)(puVar14 + -0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar14 + -0x14)" (( "(") (binary_expression "puVar14 + -0x14" (identifier "puVar14") (+ "+") (number_literal "-0x14")) () ")")))) (= "=") (identifier "iStack_d0")) (; ";")) (expression_statement "*(uint *)(puVar14 + -0x18) = uStack_d8;" (assignment_expression "*(uint *)(puVar14 + -0x18) = uStack_d8" (pointer_expression "*(uint *)(puVar14 + -0x18)" (* "*") (cast_expression "(uint *)(puVar14 + -0x18)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar14 + -0x18)" (( "(") (binary_expression "puVar14 + -0x18" (identifier "puVar14") (+ "+") (number_literal "-0x18")) () ")")))) (= "=") (identifier "uStack_d8")) (; ";")) (expression_statement "*(int *)(puVar14 + -0x1c) = iStack_d4;" (assignment_expression "*(int *)(puVar14 + -0x1c) = iStack_d4" (pointer_expression "*(int *)(puVar14 + -0x1c)" (* "*") (cast_expression "(int *)(puVar14 + -0x1c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar14 + -0x1c)" (( "(") (binary_expression "puVar14 + -0x1c" (identifier "puVar14") (+ "+") (number_literal "-0x1c")) () ")")))) (= "=") (identifier "iStack_d4")) (; ";")) (expression_statement "*(int *)(puVar14 + -0x20) = iStack_dc;" (assignment_expression "*(int *)(puVar14 + -0x20) = iStack_dc" (pointer_expression "*(int *)(puVar14 + -0x20)" (* "*") (cast_expression "(int *)(puVar14 + -0x20)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar14 + -0x20)" (( "(") (binary_expression "puVar14 + -0x20" (identifier "puVar14") (+ "+") (number_literal "-0x20")) () ")")))) (= "=") (identifier "iStack_dc")) (; ";")) (expression_statement "iStack_108 = iVar15;" (assignment_expression "iStack_108 = iVar15" (identifier "iStack_108") (= "=") (identifier "iVar15")) (; ";")) (expression_statement "uStack_100 = uVar11;" (assignment_expression "uStack_100 = uVar11" (identifier "uStack_100") (= "=") (identifier "uVar11")) (; ";")) (expression_statement "*(undefined4 *)(puVar14 + -0x24) = 0x4ead1;" (assignment_expression "*(undefined4 *)(puVar14 + -0x24) = 0x4ead1" (pointer_expression "*(undefined4 *)(puVar14 + -0x24)" (* "*") (cast_expression "(undefined4 *)(puVar14 + -0x24)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar14 + -0x24)" (( "(") (binary_expression "puVar14 + -0x24" (identifier "puVar14") (+ "+") (number_literal "-0x24")) () ")")))) (= "=") (number_literal "0x4ead1")) (; ";")) (expression_statement "__gmpn_div_q();" (call_expression "__gmpn_div_q()" (identifier "__gmpn_div_q") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "puVar7 = local_c0;" (assignment_expression "puVar7 = local_c0" (identifier "puVar7") (= "=") (identifier "local_c0")) (; ";")) (expression_statement "iVar10 = iStack_e0;" (assignment_expression "iVar10 = iStack_e0" (identifier "iVar10") (= "=") (identifier "iStack_e0")) (; ";")) (expression_statement "uVar13 = (uint)(*(int *)(iStack_dc + iStack_108 * 4) != 0) + iStack_108;" (assignment_expression "uVar13 = (uint)(*(int *)(iStack_dc + iStack_108 * 4) != 0) + iStack_108" (identifier "uVar13") (= "=") (binary_expression "(uint)(*(int *)(iStack_dc + iStack_108 * 4) != 0) + iStack_108" (call_expression "(uint)(*(int *)(iStack_dc + iStack_108 * 4) != 0)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(*(int *)(iStack_dc + iStack_108 * 4) != 0)" (( "(") (binary_expression "*(int *)(iStack_dc + iStack_108 * 4) != 0" (pointer_expression "*(int *)(iStack_dc + iStack_108 * 4)" (* "*") (cast_expression "(int *)(iStack_dc + iStack_108 * 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iStack_dc + iStack_108 * 4)" (( "(") (binary_expression "iStack_dc + iStack_108 * 4" (identifier "iStack_dc") (+ "+") (binary_expression "iStack_108 * 4" (identifier "iStack_108") (* "*") (number_literal "4"))) () ")")))) (!= "!=") (number_literal "0")) () ")"))) (+ "+") (identifier "iStack_108"))) (; ";")) (expression_statement "uVar11 = uStack_100;" (assignment_expression "uVar11 = uStack_100" (identifier "uVar11") (= "=") (identifier "uStack_100")) (; ";")) (if_statement "if ((int)uVar13 <= (int)uStack_100) {\n      if ((uStack_100 != uVar13) || (uStack_e4 == 0)) {\n        uStack_e4 = uStack_100;\n        *(uint *)(puVar14 + -8) = uVar13;\n        *(int *)(puVar14 + -0xc) = iStack_dc;\n        *(uint **)(puVar14 + -0x10) = puVar7;\n        pcVar2 = *(code **)(iVar10 + 0x28);\n        *(undefined4 *)(puVar14 + -0x14) = 0x4eb2a;\n        (*pcVar2)();\n        if (uStack_e4 != uVar13) {\n          *(uint *)(puVar14 + -8) = (uStack_e4 - uVar13) * 4;\n          *(undefined4 *)(puVar14 + -0xc) = 0;\n          *(uint **)(puVar14 + -0x10) = puVar7 + uVar13;\n          *(undefined4 *)(puVar14 + -0x14) = 0x4eb55;\n          memset(*(void **)(puVar14 + -0x10),*(int *)(puVar14 + -0xc),*(size_t *)(puVar14 + -8));\n        }\n        goto LAB_0004e9ab;\n      }\n      if (*(uint *)(iStack_dc + -4 + uVar13 * 4) >> ((byte)uStack_e4 & 0x1f) == 0) {\n        *(uint *)(puVar14 + -8) = uVar13;\n        *(int *)(puVar14 + -0xc) = iStack_dc;\n        *(uint **)(puVar14 + -0x10) = local_c0;\n        pcVar2 = *(code **)(iVar10 + 0x28);\n        *(undefined4 *)(puVar14 + -0x14) = 0x4ede2;\n        (*pcVar2)();\n        goto LAB_0004e9ab;\n      }\n    }" (if "if") (parenthesized_expression "((int)uVar13 <= (int)uStack_100)" (( "(") (binary_expression "(int)uVar13 <= (int)uStack_100" (cast_expression "(int)uVar13" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar13")) (<= "<=") (cast_expression "(int)uStack_100" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uStack_100"))) () ")")) (compound_statement "{\n      if ((uStack_100 != uVar13) || (uStack_e4 == 0)) {\n        uStack_e4 = uStack_100;\n        *(uint *)(puVar14 + -8) = uVar13;\n        *(int *)(puVar14 + -0xc) = iStack_dc;\n        *(uint **)(puVar14 + -0x10) = puVar7;\n        pcVar2 = *(code **)(iVar10 + 0x28);\n        *(undefined4 *)(puVar14 + -0x14) = 0x4eb2a;\n        (*pcVar2)();\n        if (uStack_e4 != uVar13) {\n          *(uint *)(puVar14 + -8) = (uStack_e4 - uVar13) * 4;\n          *(undefined4 *)(puVar14 + -0xc) = 0;\n          *(uint **)(puVar14 + -0x10) = puVar7 + uVar13;\n          *(undefined4 *)(puVar14 + -0x14) = 0x4eb55;\n          memset(*(void **)(puVar14 + -0x10),*(int *)(puVar14 + -0xc),*(size_t *)(puVar14 + -8));\n        }\n        goto LAB_0004e9ab;\n      }\n      if (*(uint *)(iStack_dc + -4 + uVar13 * 4) >> ((byte)uStack_e4 & 0x1f) == 0) {\n        *(uint *)(puVar14 + -8) = uVar13;\n        *(int *)(puVar14 + -0xc) = iStack_dc;\n        *(uint **)(puVar14 + -0x10) = local_c0;\n        pcVar2 = *(code **)(iVar10 + 0x28);\n        *(undefined4 *)(puVar14 + -0x14) = 0x4ede2;\n        (*pcVar2)();\n        goto LAB_0004e9ab;\n      }\n    }" ({ "{") (if_statement "if ((uStack_100 != uVar13) || (uStack_e4 == 0)) {\n        uStack_e4 = uStack_100;\n        *(uint *)(puVar14 + -8) = uVar13;\n        *(int *)(puVar14 + -0xc) = iStack_dc;\n        *(uint **)(puVar14 + -0x10) = puVar7;\n        pcVar2 = *(code **)(iVar10 + 0x28);\n        *(undefined4 *)(puVar14 + -0x14) = 0x4eb2a;\n        (*pcVar2)();\n        if (uStack_e4 != uVar13) {\n          *(uint *)(puVar14 + -8) = (uStack_e4 - uVar13) * 4;\n          *(undefined4 *)(puVar14 + -0xc) = 0;\n          *(uint **)(puVar14 + -0x10) = puVar7 + uVar13;\n          *(undefined4 *)(puVar14 + -0x14) = 0x4eb55;\n          memset(*(void **)(puVar14 + -0x10),*(int *)(puVar14 + -0xc),*(size_t *)(puVar14 + -8));\n        }\n        goto LAB_0004e9ab;\n      }" (if "if") (parenthesized_expression "((uStack_100 != uVar13) || (uStack_e4 == 0))" (( "(") (binary_expression "(uStack_100 != uVar13) || (uStack_e4 == 0)" (parenthesized_expression "(uStack_100 != uVar13)" (( "(") (binary_expression "uStack_100 != uVar13" (identifier "uStack_100") (!= "!=") (identifier "uVar13")) () ")")) (|| "||") (parenthesized_expression "(uStack_e4 == 0)" (( "(") (binary_expression "uStack_e4 == 0" (identifier "uStack_e4") (== "==") (number_literal "0")) () ")"))) () ")")) (compound_statement "{\n        uStack_e4 = uStack_100;\n        *(uint *)(puVar14 + -8) = uVar13;\n        *(int *)(puVar14 + -0xc) = iStack_dc;\n        *(uint **)(puVar14 + -0x10) = puVar7;\n        pcVar2 = *(code **)(iVar10 + 0x28);\n        *(undefined4 *)(puVar14 + -0x14) = 0x4eb2a;\n        (*pcVar2)();\n        if (uStack_e4 != uVar13) {\n          *(uint *)(puVar14 + -8) = (uStack_e4 - uVar13) * 4;\n          *(undefined4 *)(puVar14 + -0xc) = 0;\n          *(uint **)(puVar14 + -0x10) = puVar7 + uVar13;\n          *(undefined4 *)(puVar14 + -0x14) = 0x4eb55;\n          memset(*(void **)(puVar14 + -0x10),*(int *)(puVar14 + -0xc),*(size_t *)(puVar14 + -8));\n        }\n        goto LAB_0004e9ab;\n      }" ({ "{") (expression_statement "uStack_e4 = uStack_100;" (assignment_expression "uStack_e4 = uStack_100" (identifier "uStack_e4") (= "=") (identifier "uStack_100")) (; ";")) (expression_statement "*(uint *)(puVar14 + -8) = uVar13;" (assignment_expression "*(uint *)(puVar14 + -8) = uVar13" (pointer_expression "*(uint *)(puVar14 + -8)" (* "*") (cast_expression "(uint *)(puVar14 + -8)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar14 + -8)" (( "(") (binary_expression "puVar14 + -8" (identifier "puVar14") (+ "+") (number_literal "-8")) () ")")))) (= "=") (identifier "uVar13")) (; ";")) (expression_statement "*(int *)(puVar14 + -0xc) = iStack_dc;" (assignment_expression "*(int *)(puVar14 + -0xc) = iStack_dc" (pointer_expression "*(int *)(puVar14 + -0xc)" (* "*") (cast_expression "(int *)(puVar14 + -0xc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar14 + -0xc)" (( "(") (binary_expression "puVar14 + -0xc" (identifier "puVar14") (+ "+") (number_literal "-0xc")) () ")")))) (= "=") (identifier "iStack_dc")) (; ";")) (expression_statement "*(uint **)(puVar14 + -0x10) = puVar7;" (assignment_expression "*(uint **)(puVar14 + -0x10) = puVar7" (pointer_expression "*(uint **)(puVar14 + -0x10)" (* "*") (cast_expression "(uint **)(puVar14 + -0x10)" (( "(") (type_descriptor "uint **" (type_identifier "uint") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar14 + -0x10)" (( "(") (binary_expression "puVar14 + -0x10" (identifier "puVar14") (+ "+") (number_literal "-0x10")) () ")")))) (= "=") (identifier "puVar7")) (; ";")) (expression_statement "pcVar2 = *(code **)(iVar10 + 0x28);" (assignment_expression "pcVar2 = *(code **)(iVar10 + 0x28)" (identifier "pcVar2") (= "=") (pointer_expression "*(code **)(iVar10 + 0x28)" (* "*") (cast_expression "(code **)(iVar10 + 0x28)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar10 + 0x28)" (( "(") (binary_expression "iVar10 + 0x28" (identifier "iVar10") (+ "+") (number_literal "0x28")) () ")"))))) (; ";")) (expression_statement "*(undefined4 *)(puVar14 + -0x14) = 0x4eb2a;" (assignment_expression "*(undefined4 *)(puVar14 + -0x14) = 0x4eb2a" (pointer_expression "*(undefined4 *)(puVar14 + -0x14)" (* "*") (cast_expression "(undefined4 *)(puVar14 + -0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar14 + -0x14)" (( "(") (binary_expression "puVar14 + -0x14" (identifier "puVar14") (+ "+") (number_literal "-0x14")) () ")")))) (= "=") (number_literal "0x4eb2a")) (; ";")) (expression_statement "(*pcVar2)();" (call_expression "(*pcVar2)()" (parenthesized_expression "(*pcVar2)" (( "(") (pointer_expression "*pcVar2" (* "*") (identifier "pcVar2")) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (if_statement "if (uStack_e4 != uVar13) {\n          *(uint *)(puVar14 + -8) = (uStack_e4 - uVar13) * 4;\n          *(undefined4 *)(puVar14 + -0xc) = 0;\n          *(uint **)(puVar14 + -0x10) = puVar7 + uVar13;\n          *(undefined4 *)(puVar14 + -0x14) = 0x4eb55;\n          memset(*(void **)(puVar14 + -0x10),*(int *)(puVar14 + -0xc),*(size_t *)(puVar14 + -8));\n        }" (if "if") (parenthesized_expression "(uStack_e4 != uVar13)" (( "(") (binary_expression "uStack_e4 != uVar13" (identifier "uStack_e4") (!= "!=") (identifier "uVar13")) () ")")) (compound_statement "{\n          *(uint *)(puVar14 + -8) = (uStack_e4 - uVar13) * 4;\n          *(undefined4 *)(puVar14 + -0xc) = 0;\n          *(uint **)(puVar14 + -0x10) = puVar7 + uVar13;\n          *(undefined4 *)(puVar14 + -0x14) = 0x4eb55;\n          memset(*(void **)(puVar14 + -0x10),*(int *)(puVar14 + -0xc),*(size_t *)(puVar14 + -8));\n        }" ({ "{") (expression_statement "*(uint *)(puVar14 + -8) = (uStack_e4 - uVar13) * 4;" (assignment_expression "*(uint *)(puVar14 + -8) = (uStack_e4 - uVar13) * 4" (pointer_expression "*(uint *)(puVar14 + -8)" (* "*") (cast_expression "(uint *)(puVar14 + -8)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar14 + -8)" (( "(") (binary_expression "puVar14 + -8" (identifier "puVar14") (+ "+") (number_literal "-8")) () ")")))) (= "=") (binary_expression "(uStack_e4 - uVar13) * 4" (parenthesized_expression "(uStack_e4 - uVar13)" (( "(") (binary_expression "uStack_e4 - uVar13" (identifier "uStack_e4") (- "-") (identifier "uVar13")) () ")")) (* "*") (number_literal "4"))) (; ";")) (expression_statement "*(undefined4 *)(puVar14 + -0xc) = 0;" (assignment_expression "*(undefined4 *)(puVar14 + -0xc) = 0" (pointer_expression "*(undefined4 *)(puVar14 + -0xc)" (* "*") (cast_expression "(undefined4 *)(puVar14 + -0xc)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar14 + -0xc)" (( "(") (binary_expression "puVar14 + -0xc" (identifier "puVar14") (+ "+") (number_literal "-0xc")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(uint **)(puVar14 + -0x10) = puVar7 + uVar13;" (assignment_expression "*(uint **)(puVar14 + -0x10) = puVar7 + uVar13" (pointer_expression "*(uint **)(puVar14 + -0x10)" (* "*") (cast_expression "(uint **)(puVar14 + -0x10)" (( "(") (type_descriptor "uint **" (type_identifier "uint") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar14 + -0x10)" (( "(") (binary_expression "puVar14 + -0x10" (identifier "puVar14") (+ "+") (number_literal "-0x10")) () ")")))) (= "=") (binary_expression "puVar7 + uVar13" (identifier "puVar7") (+ "+") (identifier "uVar13"))) (; ";")) (expression_statement "*(undefined4 *)(puVar14 + -0x14) = 0x4eb55;" (assignment_expression "*(undefined4 *)(puVar14 + -0x14) = 0x4eb55" (pointer_expression "*(undefined4 *)(puVar14 + -0x14)" (* "*") (cast_expression "(undefined4 *)(puVar14 + -0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar14 + -0x14)" (( "(") (binary_expression "puVar14 + -0x14" (identifier "puVar14") (+ "+") (number_literal "-0x14")) () ")")))) (= "=") (number_literal "0x4eb55")) (; ";")) (expression_statement "memset(*(void **)(puVar14 + -0x10),*(int *)(puVar14 + -0xc),*(size_t *)(puVar14 + -8));" (call_expression "memset(*(void **)(puVar14 + -0x10),*(int *)(puVar14 + -0xc),*(size_t *)(puVar14 + -8))" (identifier "memset") (argument_list "(*(void **)(puVar14 + -0x10),*(int *)(puVar14 + -0xc),*(size_t *)(puVar14 + -8))" (( "(") (pointer_expression "*(void **)(puVar14 + -0x10)" (* "*") (cast_expression "(void **)(puVar14 + -0x10)" (( "(") (type_descriptor "void **" (primitive_type "void") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar14 + -0x10)" (( "(") (binary_expression "puVar14 + -0x10" (identifier "puVar14") (+ "+") (number_literal "-0x10")) () ")")))) (, ",") (pointer_expression "*(int *)(puVar14 + -0xc)" (* "*") (cast_expression "(int *)(puVar14 + -0xc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar14 + -0xc)" (( "(") (binary_expression "puVar14 + -0xc" (identifier "puVar14") (+ "+") (number_literal "-0xc")) () ")")))) (, ",") (pointer_expression "*(size_t *)(puVar14 + -8)" (* "*") (cast_expression "(size_t *)(puVar14 + -8)" (( "(") (type_descriptor "size_t *" (primitive_type "size_t") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar14 + -8)" (( "(") (binary_expression "puVar14 + -8" (identifier "puVar14") (+ "+") (number_literal "-8")) () ")")))) () ")"))) (; ";")) (} "}"))) (goto_statement "goto LAB_0004e9ab;" (goto "goto") (statement_identifier "LAB_0004e9ab") (; ";")) (} "}"))) (if_statement "if (*(uint *)(iStack_dc + -4 + uVar13 * 4) >> ((byte)uStack_e4 & 0x1f) == 0) {\n        *(uint *)(puVar14 + -8) = uVar13;\n        *(int *)(puVar14 + -0xc) = iStack_dc;\n        *(uint **)(puVar14 + -0x10) = local_c0;\n        pcVar2 = *(code **)(iVar10 + 0x28);\n        *(undefined4 *)(puVar14 + -0x14) = 0x4ede2;\n        (*pcVar2)();\n        goto LAB_0004e9ab;\n      }" (if "if") (parenthesized_expression "(*(uint *)(iStack_dc + -4 + uVar13 * 4) >> ((byte)uStack_e4 & 0x1f) == 0)" (( "(") (binary_expression "*(uint *)(iStack_dc + -4 + uVar13 * 4) >> ((byte)uStack_e4 & 0x1f) == 0" (binary_expression "*(uint *)(iStack_dc + -4 + uVar13 * 4) >> ((byte)uStack_e4 & 0x1f)" (pointer_expression "*(uint *)(iStack_dc + -4 + uVar13 * 4)" (* "*") (cast_expression "(uint *)(iStack_dc + -4 + uVar13 * 4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iStack_dc + -4 + uVar13 * 4)" (( "(") (binary_expression "iStack_dc + -4 + uVar13 * 4" (binary_expression "iStack_dc + -4" (identifier "iStack_dc") (+ "+") (number_literal "-4")) (+ "+") (binary_expression "uVar13 * 4" (identifier "uVar13") (* "*") (number_literal "4"))) () ")")))) (>> ">>") (parenthesized_expression "((byte)uStack_e4 & 0x1f)" (( "(") (binary_expression "(byte)uStack_e4 & 0x1f" (cast_expression "(byte)uStack_e4" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "uStack_e4")) (& "&") (number_literal "0x1f")) () ")"))) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n        *(uint *)(puVar14 + -8) = uVar13;\n        *(int *)(puVar14 + -0xc) = iStack_dc;\n        *(uint **)(puVar14 + -0x10) = local_c0;\n        pcVar2 = *(code **)(iVar10 + 0x28);\n        *(undefined4 *)(puVar14 + -0x14) = 0x4ede2;\n        (*pcVar2)();\n        goto LAB_0004e9ab;\n      }" ({ "{") (expression_statement "*(uint *)(puVar14 + -8) = uVar13;" (assignment_expression "*(uint *)(puVar14 + -8) = uVar13" (pointer_expression "*(uint *)(puVar14 + -8)" (* "*") (cast_expression "(uint *)(puVar14 + -8)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar14 + -8)" (( "(") (binary_expression "puVar14 + -8" (identifier "puVar14") (+ "+") (number_literal "-8")) () ")")))) (= "=") (identifier "uVar13")) (; ";")) (expression_statement "*(int *)(puVar14 + -0xc) = iStack_dc;" (assignment_expression "*(int *)(puVar14 + -0xc) = iStack_dc" (pointer_expression "*(int *)(puVar14 + -0xc)" (* "*") (cast_expression "(int *)(puVar14 + -0xc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar14 + -0xc)" (( "(") (binary_expression "puVar14 + -0xc" (identifier "puVar14") (+ "+") (number_literal "-0xc")) () ")")))) (= "=") (identifier "iStack_dc")) (; ";")) (expression_statement "*(uint **)(puVar14 + -0x10) = local_c0;" (assignment_expression "*(uint **)(puVar14 + -0x10) = local_c0" (pointer_expression "*(uint **)(puVar14 + -0x10)" (* "*") (cast_expression "(uint **)(puVar14 + -0x10)" (( "(") (type_descriptor "uint **" (type_identifier "uint") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar14 + -0x10)" (( "(") (binary_expression "puVar14 + -0x10" (identifier "puVar14") (+ "+") (number_literal "-0x10")) () ")")))) (= "=") (identifier "local_c0")) (; ";")) (expression_statement "pcVar2 = *(code **)(iVar10 + 0x28);" (assignment_expression "pcVar2 = *(code **)(iVar10 + 0x28)" (identifier "pcVar2") (= "=") (pointer_expression "*(code **)(iVar10 + 0x28)" (* "*") (cast_expression "(code **)(iVar10 + 0x28)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar10 + 0x28)" (( "(") (binary_expression "iVar10 + 0x28" (identifier "iVar10") (+ "+") (number_literal "0x28")) () ")"))))) (; ";")) (expression_statement "*(undefined4 *)(puVar14 + -0x14) = 0x4ede2;" (assignment_expression "*(undefined4 *)(puVar14 + -0x14) = 0x4ede2" (pointer_expression "*(undefined4 *)(puVar14 + -0x14)" (* "*") (cast_expression "(undefined4 *)(puVar14 + -0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar14 + -0x14)" (( "(") (binary_expression "puVar14 + -0x14" (identifier "puVar14") (+ "+") (number_literal "-0x14")) () ")")))) (= "=") (number_literal "0x4ede2")) (; ";")) (expression_statement "(*pcVar2)();" (call_expression "(*pcVar2)()" (parenthesized_expression "(*pcVar2)" (( "(") (pointer_expression "*pcVar2" (* "*") (identifier "pcVar2")) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (goto_statement "goto LAB_0004e9ab;" (goto "goto") (statement_identifier "LAB_0004e9ab") (; ";")) (} "}"))) (} "}"))) (} "}"))) (expression_statement "puVar7 = local_c0;" (assignment_expression "puVar7 = local_c0" (identifier "puVar7") (= "=") (identifier "local_c0")) (; ";")) (if_statement "if (uVar11 != 1) {\n    *(uint *)(puVar14 + -8) = uVar5 * 4;\n    *(undefined4 *)(puVar14 + -0xc) = 0xff;\n    *(uint **)(puVar14 + -0x10) = local_c0;\n    *(undefined4 *)(puVar14 + -0x14) = 0x4e98f;\n    memset(*(void **)(puVar14 + -0x10),*(int *)(puVar14 + -0xc),*(size_t *)(puVar14 + -8));\n    puVar7 = local_c0 + uVar5;\n  }" (if "if") (parenthesized_expression "(uVar11 != 1)" (( "(") (binary_expression "uVar11 != 1" (identifier "uVar11") (!= "!=") (number_literal "1")) () ")")) (compound_statement "{\n    *(uint *)(puVar14 + -8) = uVar5 * 4;\n    *(undefined4 *)(puVar14 + -0xc) = 0xff;\n    *(uint **)(puVar14 + -0x10) = local_c0;\n    *(undefined4 *)(puVar14 + -0x14) = 0x4e98f;\n    memset(*(void **)(puVar14 + -0x10),*(int *)(puVar14 + -0xc),*(size_t *)(puVar14 + -8));\n    puVar7 = local_c0 + uVar5;\n  }" ({ "{") (expression_statement "*(uint *)(puVar14 + -8) = uVar5 * 4;" (assignment_expression "*(uint *)(puVar14 + -8) = uVar5 * 4" (pointer_expression "*(uint *)(puVar14 + -8)" (* "*") (cast_expression "(uint *)(puVar14 + -8)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar14 + -8)" (( "(") (binary_expression "puVar14 + -8" (identifier "puVar14") (+ "+") (number_literal "-8")) () ")")))) (= "=") (binary_expression "uVar5 * 4" (identifier "uVar5") (* "*") (number_literal "4"))) (; ";")) (expression_statement "*(undefined4 *)(puVar14 + -0xc) = 0xff;" (assignment_expression "*(undefined4 *)(puVar14 + -0xc) = 0xff" (pointer_expression "*(undefined4 *)(puVar14 + -0xc)" (* "*") (cast_expression "(undefined4 *)(puVar14 + -0xc)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar14 + -0xc)" (( "(") (binary_expression "puVar14 + -0xc" (identifier "puVar14") (+ "+") (number_literal "-0xc")) () ")")))) (= "=") (number_literal "0xff")) (; ";")) (expression_statement "*(uint **)(puVar14 + -0x10) = local_c0;" (assignment_expression "*(uint **)(puVar14 + -0x10) = local_c0" (pointer_expression "*(uint **)(puVar14 + -0x10)" (* "*") (cast_expression "(uint **)(puVar14 + -0x10)" (( "(") (type_descriptor "uint **" (type_identifier "uint") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar14 + -0x10)" (( "(") (binary_expression "puVar14 + -0x10" (identifier "puVar14") (+ "+") (number_literal "-0x10")) () ")")))) (= "=") (identifier "local_c0")) (; ";")) (expression_statement "*(undefined4 *)(puVar14 + -0x14) = 0x4e98f;" (assignment_expression "*(undefined4 *)(puVar14 + -0x14) = 0x4e98f" (pointer_expression "*(undefined4 *)(puVar14 + -0x14)" (* "*") (cast_expression "(undefined4 *)(puVar14 + -0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar14 + -0x14)" (( "(") (binary_expression "puVar14 + -0x14" (identifier "puVar14") (+ "+") (number_literal "-0x14")) () ")")))) (= "=") (number_literal "0x4e98f")) (; ";")) (expression_statement "memset(*(void **)(puVar14 + -0x10),*(int *)(puVar14 + -0xc),*(size_t *)(puVar14 + -8));" (call_expression "memset(*(void **)(puVar14 + -0x10),*(int *)(puVar14 + -0xc),*(size_t *)(puVar14 + -8))" (identifier "memset") (argument_list "(*(void **)(puVar14 + -0x10),*(int *)(puVar14 + -0xc),*(size_t *)(puVar14 + -8))" (( "(") (pointer_expression "*(void **)(puVar14 + -0x10)" (* "*") (cast_expression "(void **)(puVar14 + -0x10)" (( "(") (type_descriptor "void **" (primitive_type "void") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar14 + -0x10)" (( "(") (binary_expression "puVar14 + -0x10" (identifier "puVar14") (+ "+") (number_literal "-0x10")) () ")")))) (, ",") (pointer_expression "*(int *)(puVar14 + -0xc)" (* "*") (cast_expression "(int *)(puVar14 + -0xc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar14 + -0xc)" (( "(") (binary_expression "puVar14 + -0xc" (identifier "puVar14") (+ "+") (number_literal "-0xc")) () ")")))) (, ",") (pointer_expression "*(size_t *)(puVar14 + -8)" (* "*") (cast_expression "(size_t *)(puVar14 + -8)" (( "(") (type_descriptor "size_t *" (primitive_type "size_t") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar14 + -8)" (( "(") (binary_expression "puVar14 + -8" (identifier "puVar14") (+ "+") (number_literal "-8")) () ")")))) () ")"))) (; ";")) (expression_statement "puVar7 = local_c0 + uVar5;" (assignment_expression "puVar7 = local_c0 + uVar5" (identifier "puVar7") (= "=") (binary_expression "local_c0 + uVar5" (identifier "local_c0") (+ "+") (identifier "uVar5"))) (; ";")) (} "}"))) (expression_statement "*puVar7 = 0xffffffff >> ((byte)iStack_118 & 0x1f);" (assignment_expression "*puVar7 = 0xffffffff >> ((byte)iStack_118 & 0x1f)" (pointer_expression "*puVar7" (* "*") (identifier "puVar7")) (= "=") (binary_expression "0xffffffff >> ((byte)iStack_118 & 0x1f)" (number_literal "0xffffffff") (>> ">>") (parenthesized_expression "((byte)iStack_118 & 0x1f)" (( "(") (binary_expression "(byte)iStack_118 & 0x1f" (cast_expression "(byte)iStack_118" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "iStack_118")) (& "&") (number_literal "0x1f")) () ")")))) (; ";")) (labeled_statement "LAB_0004e9ab:\n  uVar16 = CONCAT44(local_124,local_c0);" (statement_identifier "LAB_0004e9ab") (: ":") (expression_statement "uVar16 = CONCAT44(local_124,local_c0);" (assignment_expression "uVar16 = CONCAT44(local_124,local_c0)" (identifier "uVar16") (= "=") (call_expression "CONCAT44(local_124,local_c0)" (identifier "CONCAT44") (argument_list "(local_124,local_c0)" (( "(") (identifier "local_124") (, ",") (identifier "local_c0") () ")")))) (; ";"))) (expression_statement "iStack_104 = iStack_104 + -1;" (assignment_expression "iStack_104 = iStack_104 + -1" (identifier "iStack_104") (= "=") (binary_expression "iStack_104 + -1" (identifier "iStack_104") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "*puVar12 = *puVar12 | uStack_f0;" (assignment_expression "*puVar12 = *puVar12 | uStack_f0" (pointer_expression "*puVar12" (* "*") (identifier "puVar12")) (= "=") (binary_expression "*puVar12 | uStack_f0" (pointer_expression "*puVar12" (* "*") (identifier "puVar12")) (| "|") (identifier "uStack_f0"))) (; ";")) (expression_statement "iVar10 = iStack_dc;" (assignment_expression "iVar10 = iStack_dc" (identifier "iVar10") (= "=") (identifier "iStack_dc")) (; ";")) (if_statement "if (iStack_10c == 0) goto LAB_0004e9ce;" (if "if") (parenthesized_expression "(iStack_10c == 0)" (( "(") (binary_expression "iStack_10c == 0" (identifier "iStack_10c") (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_0004e9ce;" (goto "goto") (statement_identifier "LAB_0004e9ce") (; ";"))) (goto_statement "goto LAB_0004e690;" (goto "goto") (statement_identifier "LAB_0004e690") (; ";")) (labeled_statement "LAB_0004efbf:\n  if (local_124 == (int *)0x0) {\n    uStack_d8 = 1;\n  }\n  else {\n    uVar5 = uVar11;\n    if (uVar11 == 0) {\nLAB_0004efd7:\n      if ((local_f8 != local_124) && ((int)uVar5 < (int)param_1)) {\n        piVar9 = local_f8 + uVar5;\n        piVar8 = local_124 + uVar5;\n        do {\n          iVar10 = *piVar9;\n          piVar9 = piVar9 + 1;\n          *piVar8 = iVar10;\n          piVar8 = piVar8 + 1;\n        } while ((int *)((int)local_f8 + local_128 + 4) != piVar9);\n      }\n    }\n    else {\n      *(uint *)(puVar14 + -4) = uVar11;\n      *(int *)(puVar14 + -8) = iVar10;\n      *(int **)(puVar14 + -0xc) = local_f8;\n      *(int **)(puVar14 + -0x10) = local_124;\n      *(undefined4 *)(puVar14 + -0x14) = 0x4f0a5;\n      iVar10 = __gmpn_sub_n();\n      if (iVar10 == 0) goto LAB_0004efd7;\n      if (param_1 != uVar11) {\n        local_c0 = (uint *)(uVar11 * 4);\n        uVar5 = uVar11 + 1;\n        iVar10 = local_f8[uVar11];\n        local_124[uVar11] = iVar10 + -1;\n        if (iVar10 == 0) {\n          if ((int)param_1 <= (int)uVar5) goto LAB_0004f017;\n          iVar10 = local_f8[uVar11 + 1];\n          local_124[uVar11 + 1] = iVar10 + -1;\n          uVar5 = uVar11 + 2;\n          while (iVar10 == 0) {\n            if (param_1 == uVar5) goto LAB_0004f017;\n            iVar10 = local_f8[uVar5];\n            local_124[uVar5] = iVar10 + -1;\n            uVar5 = uVar5 + 1;\n          }\n        }\n        goto LAB_0004efd7;\n      }\n    }\nLAB_0004f017:\n    iVar10 = local_124[local_134];\n    uStack_d8 = param_1;\n    while (uVar16 = CONCAT44(local_124,local_c0), iVar10 == 0) {\n      iVar10 = local_124[uStack_d8 - 2];\n      uStack_d8 = uStack_d8 - 1;\n    }\n  }" (statement_identifier "LAB_0004efbf") (: ":") (if_statement "if (local_124 == (int *)0x0) {\n    uStack_d8 = 1;\n  }\n  else {\n    uVar5 = uVar11;\n    if (uVar11 == 0) {\nLAB_0004efd7:\n      if ((local_f8 != local_124) && ((int)uVar5 < (int)param_1)) {\n        piVar9 = local_f8 + uVar5;\n        piVar8 = local_124 + uVar5;\n        do {\n          iVar10 = *piVar9;\n          piVar9 = piVar9 + 1;\n          *piVar8 = iVar10;\n          piVar8 = piVar8 + 1;\n        } while ((int *)((int)local_f8 + local_128 + 4) != piVar9);\n      }\n    }\n    else {\n      *(uint *)(puVar14 + -4) = uVar11;\n      *(int *)(puVar14 + -8) = iVar10;\n      *(int **)(puVar14 + -0xc) = local_f8;\n      *(int **)(puVar14 + -0x10) = local_124;\n      *(undefined4 *)(puVar14 + -0x14) = 0x4f0a5;\n      iVar10 = __gmpn_sub_n();\n      if (iVar10 == 0) goto LAB_0004efd7;\n      if (param_1 != uVar11) {\n        local_c0 = (uint *)(uVar11 * 4);\n        uVar5 = uVar11 + 1;\n        iVar10 = local_f8[uVar11];\n        local_124[uVar11] = iVar10 + -1;\n        if (iVar10 == 0) {\n          if ((int)param_1 <= (int)uVar5) goto LAB_0004f017;\n          iVar10 = local_f8[uVar11 + 1];\n          local_124[uVar11 + 1] = iVar10 + -1;\n          uVar5 = uVar11 + 2;\n          while (iVar10 == 0) {\n            if (param_1 == uVar5) goto LAB_0004f017;\n            iVar10 = local_f8[uVar5];\n            local_124[uVar5] = iVar10 + -1;\n            uVar5 = uVar5 + 1;\n          }\n        }\n        goto LAB_0004efd7;\n      }\n    }\nLAB_0004f017:\n    iVar10 = local_124[local_134];\n    uStack_d8 = param_1;\n    while (uVar16 = CONCAT44(local_124,local_c0), iVar10 == 0) {\n      iVar10 = local_124[uStack_d8 - 2];\n      uStack_d8 = uStack_d8 - 1;\n    }\n  }" (if "if") (parenthesized_expression "(local_124 == (int *)0x0)" (( "(") (binary_expression "local_124 == (int *)0x0" (identifier "local_124") (== "==") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n    uStack_d8 = 1;\n  }" ({ "{") (expression_statement "uStack_d8 = 1;" (assignment_expression "uStack_d8 = 1" (identifier "uStack_d8") (= "=") (number_literal "1")) (; ";")) (} "}")) (else_clause "else {\n    uVar5 = uVar11;\n    if (uVar11 == 0) {\nLAB_0004efd7:\n      if ((local_f8 != local_124) && ((int)uVar5 < (int)param_1)) {\n        piVar9 = local_f8 + uVar5;\n        piVar8 = local_124 + uVar5;\n        do {\n          iVar10 = *piVar9;\n          piVar9 = piVar9 + 1;\n          *piVar8 = iVar10;\n          piVar8 = piVar8 + 1;\n        } while ((int *)((int)local_f8 + local_128 + 4) != piVar9);\n      }\n    }\n    else {\n      *(uint *)(puVar14 + -4) = uVar11;\n      *(int *)(puVar14 + -8) = iVar10;\n      *(int **)(puVar14 + -0xc) = local_f8;\n      *(int **)(puVar14 + -0x10) = local_124;\n      *(undefined4 *)(puVar14 + -0x14) = 0x4f0a5;\n      iVar10 = __gmpn_sub_n();\n      if (iVar10 == 0) goto LAB_0004efd7;\n      if (param_1 != uVar11) {\n        local_c0 = (uint *)(uVar11 * 4);\n        uVar5 = uVar11 + 1;\n        iVar10 = local_f8[uVar11];\n        local_124[uVar11] = iVar10 + -1;\n        if (iVar10 == 0) {\n          if ((int)param_1 <= (int)uVar5) goto LAB_0004f017;\n          iVar10 = local_f8[uVar11 + 1];\n          local_124[uVar11 + 1] = iVar10 + -1;\n          uVar5 = uVar11 + 2;\n          while (iVar10 == 0) {\n            if (param_1 == uVar5) goto LAB_0004f017;\n            iVar10 = local_f8[uVar5];\n            local_124[uVar5] = iVar10 + -1;\n            uVar5 = uVar5 + 1;\n          }\n        }\n        goto LAB_0004efd7;\n      }\n    }\nLAB_0004f017:\n    iVar10 = local_124[local_134];\n    uStack_d8 = param_1;\n    while (uVar16 = CONCAT44(local_124,local_c0), iVar10 == 0) {\n      iVar10 = local_124[uStack_d8 - 2];\n      uStack_d8 = uStack_d8 - 1;\n    }\n  }" (else "else") (compound_statement "{\n    uVar5 = uVar11;\n    if (uVar11 == 0) {\nLAB_0004efd7:\n      if ((local_f8 != local_124) && ((int)uVar5 < (int)param_1)) {\n        piVar9 = local_f8 + uVar5;\n        piVar8 = local_124 + uVar5;\n        do {\n          iVar10 = *piVar9;\n          piVar9 = piVar9 + 1;\n          *piVar8 = iVar10;\n          piVar8 = piVar8 + 1;\n        } while ((int *)((int)local_f8 + local_128 + 4) != piVar9);\n      }\n    }\n    else {\n      *(uint *)(puVar14 + -4) = uVar11;\n      *(int *)(puVar14 + -8) = iVar10;\n      *(int **)(puVar14 + -0xc) = local_f8;\n      *(int **)(puVar14 + -0x10) = local_124;\n      *(undefined4 *)(puVar14 + -0x14) = 0x4f0a5;\n      iVar10 = __gmpn_sub_n();\n      if (iVar10 == 0) goto LAB_0004efd7;\n      if (param_1 != uVar11) {\n        local_c0 = (uint *)(uVar11 * 4);\n        uVar5 = uVar11 + 1;\n        iVar10 = local_f8[uVar11];\n        local_124[uVar11] = iVar10 + -1;\n        if (iVar10 == 0) {\n          if ((int)param_1 <= (int)uVar5) goto LAB_0004f017;\n          iVar10 = local_f8[uVar11 + 1];\n          local_124[uVar11 + 1] = iVar10 + -1;\n          uVar5 = uVar11 + 2;\n          while (iVar10 == 0) {\n            if (param_1 == uVar5) goto LAB_0004f017;\n            iVar10 = local_f8[uVar5];\n            local_124[uVar5] = iVar10 + -1;\n            uVar5 = uVar5 + 1;\n          }\n        }\n        goto LAB_0004efd7;\n      }\n    }\nLAB_0004f017:\n    iVar10 = local_124[local_134];\n    uStack_d8 = param_1;\n    while (uVar16 = CONCAT44(local_124,local_c0), iVar10 == 0) {\n      iVar10 = local_124[uStack_d8 - 2];\n      uStack_d8 = uStack_d8 - 1;\n    }\n  }" ({ "{") (expression_statement "uVar5 = uVar11;" (assignment_expression "uVar5 = uVar11" (identifier "uVar5") (= "=") (identifier "uVar11")) (; ";")) (if_statement "if (uVar11 == 0) {\nLAB_0004efd7:\n      if ((local_f8 != local_124) && ((int)uVar5 < (int)param_1)) {\n        piVar9 = local_f8 + uVar5;\n        piVar8 = local_124 + uVar5;\n        do {\n          iVar10 = *piVar9;\n          piVar9 = piVar9 + 1;\n          *piVar8 = iVar10;\n          piVar8 = piVar8 + 1;\n        } while ((int *)((int)local_f8 + local_128 + 4) != piVar9);\n      }\n    }\n    else {\n      *(uint *)(puVar14 + -4) = uVar11;\n      *(int *)(puVar14 + -8) = iVar10;\n      *(int **)(puVar14 + -0xc) = local_f8;\n      *(int **)(puVar14 + -0x10) = local_124;\n      *(undefined4 *)(puVar14 + -0x14) = 0x4f0a5;\n      iVar10 = __gmpn_sub_n();\n      if (iVar10 == 0) goto LAB_0004efd7;\n      if (param_1 != uVar11) {\n        local_c0 = (uint *)(uVar11 * 4);\n        uVar5 = uVar11 + 1;\n        iVar10 = local_f8[uVar11];\n        local_124[uVar11] = iVar10 + -1;\n        if (iVar10 == 0) {\n          if ((int)param_1 <= (int)uVar5) goto LAB_0004f017;\n          iVar10 = local_f8[uVar11 + 1];\n          local_124[uVar11 + 1] = iVar10 + -1;\n          uVar5 = uVar11 + 2;\n          while (iVar10 == 0) {\n            if (param_1 == uVar5) goto LAB_0004f017;\n            iVar10 = local_f8[uVar5];\n            local_124[uVar5] = iVar10 + -1;\n            uVar5 = uVar5 + 1;\n          }\n        }\n        goto LAB_0004efd7;\n      }\n    }" (if "if") (parenthesized_expression "(uVar11 == 0)" (( "(") (binary_expression "uVar11 == 0" (identifier "uVar11") (== "==") (number_literal "0")) () ")")) (compound_statement "{\nLAB_0004efd7:\n      if ((local_f8 != local_124) && ((int)uVar5 < (int)param_1)) {\n        piVar9 = local_f8 + uVar5;\n        piVar8 = local_124 + uVar5;\n        do {\n          iVar10 = *piVar9;\n          piVar9 = piVar9 + 1;\n          *piVar8 = iVar10;\n          piVar8 = piVar8 + 1;\n        } while ((int *)((int)local_f8 + local_128 + 4) != piVar9);\n      }\n    }" ({ "{") (labeled_statement "LAB_0004efd7:\n      if ((local_f8 != local_124) && ((int)uVar5 < (int)param_1)) {\n        piVar9 = local_f8 + uVar5;\n        piVar8 = local_124 + uVar5;\n        do {\n          iVar10 = *piVar9;\n          piVar9 = piVar9 + 1;\n          *piVar8 = iVar10;\n          piVar8 = piVar8 + 1;\n        } while ((int *)((int)local_f8 + local_128 + 4) != piVar9);\n      }" (statement_identifier "LAB_0004efd7") (: ":") (if_statement "if ((local_f8 != local_124) && ((int)uVar5 < (int)param_1)) {\n        piVar9 = local_f8 + uVar5;\n        piVar8 = local_124 + uVar5;\n        do {\n          iVar10 = *piVar9;\n          piVar9 = piVar9 + 1;\n          *piVar8 = iVar10;\n          piVar8 = piVar8 + 1;\n        } while ((int *)((int)local_f8 + local_128 + 4) != piVar9);\n      }" (if "if") (parenthesized_expression "((local_f8 != local_124) && ((int)uVar5 < (int)param_1))" (( "(") (binary_expression "(local_f8 != local_124) && ((int)uVar5 < (int)param_1)" (parenthesized_expression "(local_f8 != local_124)" (( "(") (binary_expression "local_f8 != local_124" (identifier "local_f8") (!= "!=") (identifier "local_124")) () ")")) (&& "&&") (parenthesized_expression "((int)uVar5 < (int)param_1)" (( "(") (binary_expression "(int)uVar5 < (int)param_1" (cast_expression "(int)uVar5" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar5")) (< "<") (cast_expression "(int)param_1" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_1"))) () ")"))) () ")")) (compound_statement "{\n        piVar9 = local_f8 + uVar5;\n        piVar8 = local_124 + uVar5;\n        do {\n          iVar10 = *piVar9;\n          piVar9 = piVar9 + 1;\n          *piVar8 = iVar10;\n          piVar8 = piVar8 + 1;\n        } while ((int *)((int)local_f8 + local_128 + 4) != piVar9);\n      }" ({ "{") (expression_statement "piVar9 = local_f8 + uVar5;" (assignment_expression "piVar9 = local_f8 + uVar5" (identifier "piVar9") (= "=") (binary_expression "local_f8 + uVar5" (identifier "local_f8") (+ "+") (identifier "uVar5"))) (; ";")) (expression_statement "piVar8 = local_124 + uVar5;" (assignment_expression "piVar8 = local_124 + uVar5" (identifier "piVar8") (= "=") (binary_expression "local_124 + uVar5" (identifier "local_124") (+ "+") (identifier "uVar5"))) (; ";")) (do_statement "do {\n          iVar10 = *piVar9;\n          piVar9 = piVar9 + 1;\n          *piVar8 = iVar10;\n          piVar8 = piVar8 + 1;\n        } while ((int *)((int)local_f8 + local_128 + 4) != piVar9);" (do "do") (compound_statement "{\n          iVar10 = *piVar9;\n          piVar9 = piVar9 + 1;\n          *piVar8 = iVar10;\n          piVar8 = piVar8 + 1;\n        }" ({ "{") (expression_statement "iVar10 = *piVar9;" (assignment_expression "iVar10 = *piVar9" (identifier "iVar10") (= "=") (pointer_expression "*piVar9" (* "*") (identifier "piVar9"))) (; ";")) (expression_statement "piVar9 = piVar9 + 1;" (assignment_expression "piVar9 = piVar9 + 1" (identifier "piVar9") (= "=") (binary_expression "piVar9 + 1" (identifier "piVar9") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "*piVar8 = iVar10;" (assignment_expression "*piVar8 = iVar10" (pointer_expression "*piVar8" (* "*") (identifier "piVar8")) (= "=") (identifier "iVar10")) (; ";")) (expression_statement "piVar8 = piVar8 + 1;" (assignment_expression "piVar8 = piVar8 + 1" (identifier "piVar8") (= "=") (binary_expression "piVar8 + 1" (identifier "piVar8") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "((int *)((int)local_f8 + local_128 + 4) != piVar9)" (( "(") (binary_expression "(int *)((int)local_f8 + local_128 + 4) != piVar9" (cast_expression "(int *)((int)local_f8 + local_128 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)local_f8 + local_128 + 4)" (( "(") (binary_expression "(int)local_f8 + local_128 + 4" (binary_expression "(int)local_f8 + local_128" (cast_expression "(int)local_f8" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_f8")) (+ "+") (identifier "local_128")) (+ "+") (number_literal "4")) () ")"))) (!= "!=") (identifier "piVar9")) () ")")) (; ";")) (} "}")))) (} "}")) (else_clause "else {\n      *(uint *)(puVar14 + -4) = uVar11;\n      *(int *)(puVar14 + -8) = iVar10;\n      *(int **)(puVar14 + -0xc) = local_f8;\n      *(int **)(puVar14 + -0x10) = local_124;\n      *(undefined4 *)(puVar14 + -0x14) = 0x4f0a5;\n      iVar10 = __gmpn_sub_n();\n      if (iVar10 == 0) goto LAB_0004efd7;\n      if (param_1 != uVar11) {\n        local_c0 = (uint *)(uVar11 * 4);\n        uVar5 = uVar11 + 1;\n        iVar10 = local_f8[uVar11];\n        local_124[uVar11] = iVar10 + -1;\n        if (iVar10 == 0) {\n          if ((int)param_1 <= (int)uVar5) goto LAB_0004f017;\n          iVar10 = local_f8[uVar11 + 1];\n          local_124[uVar11 + 1] = iVar10 + -1;\n          uVar5 = uVar11 + 2;\n          while (iVar10 == 0) {\n            if (param_1 == uVar5) goto LAB_0004f017;\n            iVar10 = local_f8[uVar5];\n            local_124[uVar5] = iVar10 + -1;\n            uVar5 = uVar5 + 1;\n          }\n        }\n        goto LAB_0004efd7;\n      }\n    }" (else "else") (compound_statement "{\n      *(uint *)(puVar14 + -4) = uVar11;\n      *(int *)(puVar14 + -8) = iVar10;\n      *(int **)(puVar14 + -0xc) = local_f8;\n      *(int **)(puVar14 + -0x10) = local_124;\n      *(undefined4 *)(puVar14 + -0x14) = 0x4f0a5;\n      iVar10 = __gmpn_sub_n();\n      if (iVar10 == 0) goto LAB_0004efd7;\n      if (param_1 != uVar11) {\n        local_c0 = (uint *)(uVar11 * 4);\n        uVar5 = uVar11 + 1;\n        iVar10 = local_f8[uVar11];\n        local_124[uVar11] = iVar10 + -1;\n        if (iVar10 == 0) {\n          if ((int)param_1 <= (int)uVar5) goto LAB_0004f017;\n          iVar10 = local_f8[uVar11 + 1];\n          local_124[uVar11 + 1] = iVar10 + -1;\n          uVar5 = uVar11 + 2;\n          while (iVar10 == 0) {\n            if (param_1 == uVar5) goto LAB_0004f017;\n            iVar10 = local_f8[uVar5];\n            local_124[uVar5] = iVar10 + -1;\n            uVar5 = uVar5 + 1;\n          }\n        }\n        goto LAB_0004efd7;\n      }\n    }" ({ "{") (expression_statement "*(uint *)(puVar14 + -4) = uVar11;" (assignment_expression "*(uint *)(puVar14 + -4) = uVar11" (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 "uVar11")) (; ";")) (expression_statement "*(int *)(puVar14 + -8) = iVar10;" (assignment_expression "*(int *)(puVar14 + -8) = iVar10" (pointer_expression "*(int *)(puVar14 + -8)" (* "*") (cast_expression "(int *)(puVar14 + -8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar14 + -8)" (( "(") (binary_expression "puVar14 + -8" (identifier "puVar14") (+ "+") (number_literal "-8")) () ")")))) (= "=") (identifier "iVar10")) (; ";")) (expression_statement "*(int **)(puVar14 + -0xc) = local_f8;" (assignment_expression "*(int **)(puVar14 + -0xc) = local_f8" (pointer_expression "*(int **)(puVar14 + -0xc)" (* "*") (cast_expression "(int **)(puVar14 + -0xc)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar14 + -0xc)" (( "(") (binary_expression "puVar14 + -0xc" (identifier "puVar14") (+ "+") (number_literal "-0xc")) () ")")))) (= "=") (identifier "local_f8")) (; ";")) (expression_statement "*(int **)(puVar14 + -0x10) = local_124;" (assignment_expression "*(int **)(puVar14 + -0x10) = local_124" (pointer_expression "*(int **)(puVar14 + -0x10)" (* "*") (cast_expression "(int **)(puVar14 + -0x10)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar14 + -0x10)" (( "(") (binary_expression "puVar14 + -0x10" (identifier "puVar14") (+ "+") (number_literal "-0x10")) () ")")))) (= "=") (identifier "local_124")) (; ";")) (expression_statement "*(undefined4 *)(puVar14 + -0x14) = 0x4f0a5;" (assignment_expression "*(undefined4 *)(puVar14 + -0x14) = 0x4f0a5" (pointer_expression "*(undefined4 *)(puVar14 + -0x14)" (* "*") (cast_expression "(undefined4 *)(puVar14 + -0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar14 + -0x14)" (( "(") (binary_expression "puVar14 + -0x14" (identifier "puVar14") (+ "+") (number_literal "-0x14")) () ")")))) (= "=") (number_literal "0x4f0a5")) (; ";")) (expression_statement "iVar10 = __gmpn_sub_n();" (assignment_expression "iVar10 = __gmpn_sub_n()" (identifier "iVar10") (= "=") (call_expression "__gmpn_sub_n()" (identifier "__gmpn_sub_n") (argument_list "()" (( "(") () ")")))) (; ";")) (if_statement "if (iVar10 == 0) goto LAB_0004efd7;" (if "if") (parenthesized_expression "(iVar10 == 0)" (( "(") (binary_expression "iVar10 == 0" (identifier "iVar10") (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_0004efd7;" (goto "goto") (statement_identifier "LAB_0004efd7") (; ";"))) (if_statement "if (param_1 != uVar11) {\n        local_c0 = (uint *)(uVar11 * 4);\n        uVar5 = uVar11 + 1;\n        iVar10 = local_f8[uVar11];\n        local_124[uVar11] = iVar10 + -1;\n        if (iVar10 == 0) {\n          if ((int)param_1 <= (int)uVar5) goto LAB_0004f017;\n          iVar10 = local_f8[uVar11 + 1];\n          local_124[uVar11 + 1] = iVar10 + -1;\n          uVar5 = uVar11 + 2;\n          while (iVar10 == 0) {\n            if (param_1 == uVar5) goto LAB_0004f017;\n            iVar10 = local_f8[uVar5];\n            local_124[uVar5] = iVar10 + -1;\n            uVar5 = uVar5 + 1;\n          }\n        }\n        goto LAB_0004efd7;\n      }" (if "if") (parenthesized_expression "(param_1 != uVar11)" (( "(") (binary_expression "param_1 != uVar11" (identifier "param_1") (!= "!=") (identifier "uVar11")) () ")")) (compound_statement "{\n        local_c0 = (uint *)(uVar11 * 4);\n        uVar5 = uVar11 + 1;\n        iVar10 = local_f8[uVar11];\n        local_124[uVar11] = iVar10 + -1;\n        if (iVar10 == 0) {\n          if ((int)param_1 <= (int)uVar5) goto LAB_0004f017;\n          iVar10 = local_f8[uVar11 + 1];\n          local_124[uVar11 + 1] = iVar10 + -1;\n          uVar5 = uVar11 + 2;\n          while (iVar10 == 0) {\n            if (param_1 == uVar5) goto LAB_0004f017;\n            iVar10 = local_f8[uVar5];\n            local_124[uVar5] = iVar10 + -1;\n            uVar5 = uVar5 + 1;\n          }\n        }\n        goto LAB_0004efd7;\n      }" ({ "{") (expression_statement "local_c0 = (uint *)(uVar11 * 4);" (assignment_expression "local_c0 = (uint *)(uVar11 * 4)" (identifier "local_c0") (= "=") (cast_expression "(uint *)(uVar11 * 4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar11 * 4)" (( "(") (binary_expression "uVar11 * 4" (identifier "uVar11") (* "*") (number_literal "4")) () ")")))) (; ";")) (expression_statement "uVar5 = uVar11 + 1;" (assignment_expression "uVar5 = uVar11 + 1" (identifier "uVar5") (= "=") (binary_expression "uVar11 + 1" (identifier "uVar11") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "iVar10 = local_f8[uVar11];" (assignment_expression "iVar10 = local_f8[uVar11]" (identifier "iVar10") (= "=") (subscript_expression "local_f8[uVar11]" (identifier "local_f8") ([ "[") (identifier "uVar11") (] "]"))) (; ";")) (expression_statement "local_124[uVar11] = iVar10 + -1;" (assignment_expression "local_124[uVar11] = iVar10 + -1" (subscript_expression "local_124[uVar11]" (identifier "local_124") ([ "[") (identifier "uVar11") (] "]")) (= "=") (binary_expression "iVar10 + -1" (identifier "iVar10") (+ "+") (number_literal "-1"))) (; ";")) (if_statement "if (iVar10 == 0) {\n          if ((int)param_1 <= (int)uVar5) goto LAB_0004f017;\n          iVar10 = local_f8[uVar11 + 1];\n          local_124[uVar11 + 1] = iVar10 + -1;\n          uVar5 = uVar11 + 2;\n          while (iVar10 == 0) {\n            if (param_1 == uVar5) goto LAB_0004f017;\n            iVar10 = local_f8[uVar5];\n            local_124[uVar5] = iVar10 + -1;\n            uVar5 = uVar5 + 1;\n          }\n        }" (if "if") (parenthesized_expression "(iVar10 == 0)" (( "(") (binary_expression "iVar10 == 0" (identifier "iVar10") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n          if ((int)param_1 <= (int)uVar5) goto LAB_0004f017;\n          iVar10 = local_f8[uVar11 + 1];\n          local_124[uVar11 + 1] = iVar10 + -1;\n          uVar5 = uVar11 + 2;\n          while (iVar10 == 0) {\n            if (param_1 == uVar5) goto LAB_0004f017;\n            iVar10 = local_f8[uVar5];\n            local_124[uVar5] = iVar10 + -1;\n            uVar5 = uVar5 + 1;\n          }\n        }" ({ "{") (if_statement "if ((int)param_1 <= (int)uVar5) goto LAB_0004f017;" (if "if") (parenthesized_expression "((int)param_1 <= (int)uVar5)" (( "(") (binary_expression "(int)param_1 <= (int)uVar5" (cast_expression "(int)param_1" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_1")) (<= "<=") (cast_expression "(int)uVar5" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar5"))) () ")")) (goto_statement "goto LAB_0004f017;" (goto "goto") (statement_identifier "LAB_0004f017") (; ";"))) (expression_statement "iVar10 = local_f8[uVar11 + 1];" (assignment_expression "iVar10 = local_f8[uVar11 + 1]" (identifier "iVar10") (= "=") (subscript_expression "local_f8[uVar11 + 1]" (identifier "local_f8") ([ "[") (binary_expression "uVar11 + 1" (identifier "uVar11") (+ "+") (number_literal "1")) (] "]"))) (; ";")) (expression_statement "local_124[uVar11 + 1] = iVar10 + -1;" (assignment_expression "local_124[uVar11 + 1] = iVar10 + -1" (subscript_expression "local_124[uVar11 + 1]" (identifier "local_124") ([ "[") (binary_expression "uVar11 + 1" (identifier "uVar11") (+ "+") (number_literal "1")) (] "]")) (= "=") (binary_expression "iVar10 + -1" (identifier "iVar10") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "uVar5 = uVar11 + 2;" (assignment_expression "uVar5 = uVar11 + 2" (identifier "uVar5") (= "=") (binary_expression "uVar11 + 2" (identifier "uVar11") (+ "+") (number_literal "2"))) (; ";")) (while_statement "while (iVar10 == 0) {\n            if (param_1 == uVar5) goto LAB_0004f017;\n            iVar10 = local_f8[uVar5];\n            local_124[uVar5] = iVar10 + -1;\n            uVar5 = uVar5 + 1;\n          }" (while "while") (parenthesized_expression "(iVar10 == 0)" (( "(") (binary_expression "iVar10 == 0" (identifier "iVar10") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n            if (param_1 == uVar5) goto LAB_0004f017;\n            iVar10 = local_f8[uVar5];\n            local_124[uVar5] = iVar10 + -1;\n            uVar5 = uVar5 + 1;\n          }" ({ "{") (if_statement "if (param_1 == uVar5) goto LAB_0004f017;" (if "if") (parenthesized_expression "(param_1 == uVar5)" (( "(") (binary_expression "param_1 == uVar5" (identifier "param_1") (== "==") (identifier "uVar5")) () ")")) (goto_statement "goto LAB_0004f017;" (goto "goto") (statement_identifier "LAB_0004f017") (; ";"))) (expression_statement "iVar10 = local_f8[uVar5];" (assignment_expression "iVar10 = local_f8[uVar5]" (identifier "iVar10") (= "=") (subscript_expression "local_f8[uVar5]" (identifier "local_f8") ([ "[") (identifier "uVar5") (] "]"))) (; ";")) (expression_statement "local_124[uVar5] = iVar10 + -1;" (assignment_expression "local_124[uVar5] = iVar10 + -1" (subscript_expression "local_124[uVar5]" (identifier "local_124") ([ "[") (identifier "uVar5") (] "]")) (= "=") (binary_expression "iVar10 + -1" (identifier "iVar10") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "uVar5 = uVar5 + 1;" (assignment_expression "uVar5 = uVar5 + 1" (identifier "uVar5") (= "=") (binary_expression "uVar5 + 1" (identifier "uVar5") (+ "+") (number_literal "1"))) (; ";")) (} "}"))) (} "}"))) (goto_statement "goto LAB_0004efd7;" (goto "goto") (statement_identifier "LAB_0004efd7") (; ";")) (} "}"))) (} "}")))) (labeled_statement "LAB_0004f017:\n    iVar10 = local_124[local_134];" (statement_identifier "LAB_0004f017") (: ":") (expression_statement "iVar10 = local_124[local_134];" (assignment_expression "iVar10 = local_124[local_134]" (identifier "iVar10") (= "=") (subscript_expression "local_124[local_134]" (identifier "local_124") ([ "[") (identifier "local_134") (] "]"))) (; ";"))) (expression_statement "uStack_d8 = param_1;" (assignment_expression "uStack_d8 = param_1" (identifier "uStack_d8") (= "=") (identifier "param_1")) (; ";")) (while_statement "while (uVar16 = CONCAT44(local_124,local_c0), iVar10 == 0) {\n      iVar10 = local_124[uStack_d8 - 2];\n      uStack_d8 = uStack_d8 - 1;\n    }" (while "while") (parenthesized_expression "(uVar16 = CONCAT44(local_124,local_c0), iVar10 == 0)" (( "(") (comma_expression "uVar16 = CONCAT44(local_124,local_c0), iVar10 == 0" (assignment_expression "uVar16 = CONCAT44(local_124,local_c0)" (identifier "uVar16") (= "=") (call_expression "CONCAT44(local_124,local_c0)" (identifier "CONCAT44") (argument_list "(local_124,local_c0)" (( "(") (identifier "local_124") (, ",") (identifier "local_c0") () ")")))) (, ",") (binary_expression "iVar10 == 0" (identifier "iVar10") (== "==") (number_literal "0"))) () ")")) (compound_statement "{\n      iVar10 = local_124[uStack_d8 - 2];\n      uStack_d8 = uStack_d8 - 1;\n    }" ({ "{") (expression_statement "iVar10 = local_124[uStack_d8 - 2];" (assignment_expression "iVar10 = local_124[uStack_d8 - 2]" (identifier "iVar10") (= "=") (subscript_expression "local_124[uStack_d8 - 2]" (identifier "local_124") ([ "[") (binary_expression "uStack_d8 - 2" (identifier "uStack_d8") (- "-") (number_literal "2")) (] "]"))) (; ";")) (expression_statement "uStack_d8 = uStack_d8 - 1;" (assignment_expression "uStack_d8 = uStack_d8 - 1" (identifier "uStack_d8") (= "=") (binary_expression "uStack_d8 - 1" (identifier "uStack_d8") (- "-") (number_literal "1"))) (; ";")) (} "}"))) (} "}"))))) (goto_statement "goto LAB_0004e9e0;" (goto "goto") (statement_identifier "LAB_0004e9e0") (; ";")) (} "}")))

type_1 function_1
                    (type_2 var_11,type_2 var_9,type_3 var_39,type_1 un,type_4 k,int approx)

{
  int var_42;
  type_5 var_17;
  type_6 *pcVar3;
  int var_47;
  type_2 var_8;
  type_7 var_6;
  type_1 mVar7;
  type_2 var_56;
  int var_48;
  type_7 *var_38;
  int *var_14;
  int *var_13;
  int *var_12;
  int var_7;
  type_7 var_5;
  type_7 *var_49;
  type_7 var_53;
  type_8 *var_30;
  int var_16;
  int var_2;
  int var_3;
  type_9 var_18;
  type_10 uVar19;
  type_8 var_22 [8];
  int var_4;
  type_7 uStack_130;
  type_7 *puStack_12c;
  int var_24;
  int *var_10;
  int *piStack_120;
  type_7 *puStack_11c;
  int var_36;
  int iStack_114;
  int iStack_110;
  int var_55;
  int var_52;
  int var_35;
  type_7 var_45;
  type_11 *pmStack_fc;
  int *var_29;
  type_7 var_26;
  type_2 pmStack_f0;
  type_7 var_27;
  type_7 var_15;
  type_7 var_28;
  int var_46;
  int var_33;
  type_2 var_34;
  int *var_37;
  int iStack_d0;
  int var_21;
  type_12 uStack_c8;
  int var_25;
  type_7 *var_54;
  int var_20;
  type_9 uStack_b8;
  type_9 uStack_b6;
  type_13 *var_40;
  type_11 sizes [33];
  
  uVar19 = var_1();
  var_10 = (int *)((type_14)uVar19 >> 0x20);
  var_54 = (type_7 *)uVar19;
  var_30 = var_22;
  var_29 = var_12;
  var_25 = var_2 + 0x4fbe7;
  var_42 = *(int *)(var_3 + 0x14);
  var_4 = (int)var_11 + 0x3fffffff;
  var_5 = var_12[var_4];
  var_24 = var_4 * 4;
  var_6 = 0x1f;
  if (var_5 != 0) {
    for (; var_5 >> var_6 == 0; var_6 = var_6 - 1) {
    }
  }
  var_7 = (var_6 ^ 0x1f) + 1;
  var_8 = (type_2)((int)var_11 * 0x20 - var_7);
  if (var_8 < var_9) {
    *var_54 = 1;
    if (var_10 == (int *)0x0) {
      var_7 = *var_12 + -1;
    }
    else {
      var_7 = *var_12;
      *var_10 = var_7 + -1;
      if (var_7 == 0) {
        if (1 < (int)var_11) {
          var_7 = var_12[1];
          var_10[1] = var_7 + -1;
          if (var_7 == 0) {
            if (var_11 == (type_2)0x2) goto LAB_0004ef98;
            var_7 = var_12[2];
            var_8 = (type_2)0x3;
            var_10[2] = var_7 + -1;
            while (var_7 == 0) {
              if (var_11 == var_8) goto LAB_0004ef98;
              var_7 = var_12[(int)var_8];
              var_10[(int)var_8] = var_7 + -1;
              var_8 = (type_2)((int)var_8 + 1);
            }
          }
          else {
            var_8 = (type_2)0x2;
          }
          if ((var_12 != var_10) && ((int)var_8 < (int)var_11)) {
            var_13 = var_12 + (int)var_8;
            var_14 = var_10 + (int)var_8;
            do {
              var_7 = *var_13;
              var_13 = var_13 + 1;
              *var_14 = var_7;
              var_14 = var_14 + 1;
            } while (var_12 + (int)(var_11 + 0x10000000) != var_13);
          }
        }
      }
      else if ((var_12 != var_10) && (1 < (int)var_11)) {
        var_13 = var_12 + 1;
        var_14 = var_10;
        do {
          var_14 = var_14 + 1;
          var_7 = *var_13;
          var_13 = var_13 + 1;
          *var_14 = var_7;
        } while (var_12 + (int)(var_11 + 0x10000000) != var_13);
      }
LAB_0004ef98:
      var_7 = var_10[var_4];
    }
    var_34 = (type_2)((int)var_11 - (type_7)(var_7 == 0));
    goto LAB_0004e9ee;
  }
  if (var_7 == 0x20) {
    var_5 = var_12[(int)var_11 + 0x3ffffffe];
  }
  else {
    var_5 = (type_7)var_12[(int)var_11 + (-1 - (type_7)(var_11 != (type_2)0x1))] >>
             (0x20 - (type_5)var_7 & 0x1f) | var_5 << ((type_5)var_7 & 0x1f);
  }
  var_5 = (type_7)*(type_5 *)(var_2 + 0x32bc7 + (var_5 >> 0x18));
  if (var_8 < (type_2)0x1000000) {
    var_6 = ((int)var_8 * 0x100 | var_5) / (type_7)var_9;
    var_5 = var_6 & 0xff;
    var_15 = var_6 >> 8;
  }
  else {
    var_15 = (type_7)var_8 / (type_7)var_9;
    var_5 = ((type_7)var_8 % (type_7)var_9 << 8 | var_5) / (type_7)var_9;
  }
  var_7 = var_15 * (int)var_9;
  var_17 = *(type_5 *)(var_2 + 0x32ac7 + var_5);
  var_27 = (int)var_9 - 1U;
  var_5 = 3;
  for (var_6 = (int)var_9 - 1U >> 2; var_6 != 0; var_6 = var_6 >> 1) {
    var_5 = var_5 + 1;
  }
  var_16 = 0;
  pmStack_fc = sizes;
  sizes[0] = var_15;
  if (8 < var_15) {
    var_47 = 0;
    do {
      while (var_16 = var_47, var_5 < var_15) {
        var_15 = var_15 + var_5 >> 1;
        sizes[var_16 + 1] = var_15;
        var_47 = var_16 + 1;
        if (var_15 < 9) goto LAB_0004e56d;
      }
      var_15 = var_15 - 1;
      sizes[var_16 + 1] = var_15;
      var_47 = var_16 + 1;
    } while (var_15 != 8);
    var_15 = 8;
LAB_0004e56d:
    var_16 = var_16 + 1;
  }
  var_40 = (type_13 *)0x0;
  var_26 = var_7 - var_15;
  *var_54 = (var_17 | 0x100) >> (8U - (char)var_15 & 0x1f);
  uStack_b6 = var_18;
  uStack_c8 = 0;
  uStack_b8 = var_18 | 0xc00;
  var_20 = (int)var_19((double)var_9 * *(double *)(var_2 + 0x32cc7) *
                         (double)*(float *)(&UNK_00032ccf + var_2));
  var_21 = (int)var_11 + var_20 + 2;
  var_5 = ((int)var_11 + var_21 * 2 + 1) * 4;
  if (var_5 < 0x7f01) {
    var_7 = -(var_5 + 0x1b & 0xfffffff0);
    var_30 = var_22 + var_7;
    piStack_120 = (int *)((int)&uStack_130 + var_7);
  }
  else {
    piStack_120 = (int *)var_23(&var_40,var_5);
    var_30 = var_22;
  }
  var_7 = (int)piStack_120 + var_24 + 8;
  iStack_d0 = var_7 + var_21 * 4;
  var_37 = var_10;
  if (var_10 == (int *)0x0) {
    var_37 = piStack_120;
  }
  if (var_16 != 0) {
    var_35 = var_16 + -1;
    pmStack_fc = sizes;
    var_21 = 1;
    var_46 = *(int *)(var_25 + -0x26c);
    var_33 = var_7;
LAB_0004e690:
    var_28 = var_26 - var_15 * var_27;
    var_7 = (int)var_11 - (var_28 >> 5);
    var_13 = var_29 + (var_28 >> 5);
    if ((var_28 & 0x1f) == 0) {
      *(int *)(var_30 + -8) = var_7;
      *(int **)(var_30 + -0xc) = var_13;
      var_16 = var_46;
      *(int **)(var_30 + -0x10) = var_37;
      pcVar3 = *(type_6 **)(var_16 + 0x28);
      *(type_12 *)(var_30 + -0x14) = 0x4ed34;
      (*pcVar3)();
    }
    else {
      *(type_7 *)(var_30 + -4) = var_28 & 0x1f;
      *(int *)(var_30 + -8) = var_7;
      *(int **)(var_30 + -0xc) = var_13;
      var_16 = var_46;
      *(int **)(var_30 + -0x10) = var_37;
      pcVar3 = *(type_6 **)(var_16 + 0x80);
      *(type_12 *)(var_30 + -0x14) = 0x4e6dc;
      (*pcVar3)();
    }
    var_13 = var_37;
    var_16 = var_33;
    var_34 = (type_2)(var_7 - (type_7)(var_37[var_7 + -1] == 0));
    do {
      *(int *)(var_30 + -0x10) = var_16;
      *(type_7 *)(var_30 + -0x14) = var_27;
      *(int *)(var_30 + -0x18) = var_21;
      *(type_7 **)(var_30 + -0x1c) = var_54;
      *(int *)(var_30 + -0x20) = iStack_d0;
      *(type_12 *)(var_30 + -0x24) = 0x4e727;
      mVar7 = var_31(*(type_2 *)(var_30 + -0x20),*(type_3 *)(var_30 + -0x1c),
                           *(type_1 *)(var_30 + -0x18),*(type_4 *)(var_30 + -0x14),
                           *(type_2 *)(var_30 + -0x10));
      *(int *)(var_30 + -0x10) = var_21;
      *(type_7 **)(var_30 + -0x14) = var_54;
      *(type_1 *)(var_30 + -0x18) = mVar7;
      *(int *)(var_30 + -0x1c) = iStack_d0;
      *(int *)(var_30 + -0x20) = var_16;
      var_33 = mVar7;
      *(type_12 *)(var_30 + -0x24) = 0x4e74f;
      var_32(*(type_2 *)(var_30 + -0x20),*(type_3 *)(var_30 + -0x1c),
                 *(type_1 *)(var_30 + -0x18),*(type_3 *)(var_30 + -0x14),
                 *(type_1 *)(var_30 + -0x10));
      var_14 = var_37;
      var_8 = var_34;
      var_7 = (var_21 + var_33) -
               (type_7)(*(int *)(var_16 + -4 + (var_21 + var_33) * 4) == 0);
      var_38 = var_54;
      if (var_7 <= (int)var_34) {
        var_56 = var_34;
        if (var_34 != (type_2)var_7) goto LAB_0004eb66;
        do {
          var_56 = (type_2)((int)var_56 + -1);
          if ((int)var_56 < 0) {
            var_52 = var_33;
            iStack_114 = 0;
            var_55 = var_35;
            var_15 = pmStack_fc[var_35] - pmStack_fc[var_35 + 1];
            var_36 = pmStack_fc[var_35 + 1] - pmStack_fc[var_35];
            pmStack_f0 = (type_2)(var_15 >> 5);
            var_26 = var_36 + var_28;
            var_5 = var_28 - 1;
            var_28 = var_15 & 0x1f;
            var_49 = (type_7 *)((var_5 >> 5) - (var_26 >> 5));
            var_45 = (int)pmStack_f0 * 4;
            var_5 = 0;
            iStack_110 = (int)var_49 + 1;
            var_6 = var_26 >> 5;
            var_38 = (type_7 *)(var_37 + (int)pmStack_f0);
            var_33 = var_16;
            var_34 = pmStack_f0;
            goto LAB_0004e83d;
          }
          var_5 = *(type_7 *)(var_16 + (int)var_56 * 4);
        } while (var_5 == var_13[(int)var_56]);
        if (var_5 <= (type_7)var_13[(int)var_56]) goto LAB_0004eb66;
      }
      do {
        var_5 = *var_38;
        *var_38 = *var_38 - 1;
        var_38 = var_38 + 1;
      } while (var_5 == 0);
    } while( true );
  }
  var_21 = 1;
LAB_0004e9ce:
  var_13 = var_29;
  if ((var_39 == (type_3)0x0) || (*var_54 < 2)) {
    do {
      *(int *)(var_30 + -0x10) = iStack_d0;
      *(type_2 *)(var_30 + -0x14) = var_9;
      *(int *)(var_30 + -0x18) = var_21;
      *(type_7 **)(var_30 + -0x1c) = var_54;
      *(int *)(var_30 + -0x20) = var_7;
      *(type_12 *)(var_30 + -0x24) = 0x4ea47;
      var_8 = (type_2)var_31(*(type_2 *)(var_30 + -0x20),*(type_3 *)(var_30 + -0x1c),
                                    *(type_1 *)(var_30 + -0x18),*(type_4 *)(var_30 + -0x14),
                                    *(type_2 *)(var_30 + -0x10));
      var_38 = var_54;
      if ((int)var_8 <= (int)var_11) {
        var_56 = var_11;
        if (var_11 != var_8) goto LAB_0004efbf;
        do {
          var_56 = (type_2)((int)var_56 + -1);
          if ((int)var_56 < 0) {
            var_34 = (type_2)0x0;
            goto LAB_0004e9e0;
          }
          var_5 = *(type_7 *)(var_7 + (int)var_56 * 4);
        } while (var_5 == var_13[(int)var_56]);
        if (var_5 <= (type_7)var_13[(int)var_56]) goto LAB_0004efbf;
      }
      do {
        var_5 = *var_38;
        *var_38 = *var_38 - 1;
        var_38 = var_38 + 1;
      } while (var_5 == 0);
    } while( true );
  }
LAB_0004e9e0:
  if (var_40 != (type_13 *)0x0) {
    *(type_13 **)(var_30 + -0x10) = var_40;
    *(type_12 *)(var_30 + -0x14) = 0x4f1a9;
    var_41(*(type_13 **)(var_30 + -0x10));
  }
LAB_0004e9ee:
  if (var_42 == *(int *)(var_3 + 0x14)) {
    return (type_1)var_34;
  }
                    /* WARNING: Subroutine does not return */
  *(type_15 **)(var_30 + -4) = &UNK_0004f214;
  var_43();
LAB_0004eb66:
  var_52 = var_33;
  var_55 = var_35;
  var_15 = pmStack_fc[var_35] - pmStack_fc[var_35 + 1];
  var_36 = pmStack_fc[var_35 + 1] - pmStack_fc[var_35];
  pmStack_f0 = (type_2)(var_15 >> 5);
  var_26 = var_36 + var_28;
  var_5 = var_26 >> 5;
  puStack_11c = (type_7 *)((var_28 - 1 >> 5) - var_5);
  iStack_110 = (int)puStack_11c + 1;
  var_28 = var_5;
  var_33 = var_16;
  if (var_7 != 0) {
    *(int *)(var_30 + -4) = var_7;
    *(int *)(var_30 + -8) = var_33;
    *(int **)(var_30 + -0xc) = var_14;
    *(int **)(var_30 + -0x10) = var_14;
    var_34 = (type_2)var_7;
    *(type_12 *)(var_30 + -0x14) = 0x4ee32;
    var_7 = var_44();
    if ((var_7 != 0) && (var_8 != var_34)) {
      var_7 = var_37[(int)var_34];
      var_37[(int)var_34] = var_7 + -1;
      if ((var_7 == 0) && ((int)var_34 + 1 < (int)var_8)) {
        var_16 = (int)var_34 + 2;
        var_7 = var_37[(int)var_34 + 1];
        var_37[(int)var_34 + 1] = var_7 + -1;
        for (; (var_7 == 0 && (var_8 != (type_2)var_16)); var_16 = var_16 + 1) {
          var_7 = var_37[var_16];
          var_37[var_16] = var_7 + -1;
        }
      }
    }
  }
  var_13 = var_37;
  var_16 = var_46;
  var_7 = var_37[(int)var_8 + -1];
  while (var_7 == 0) {
    var_7 = var_37[(int)var_8 + -2];
    var_8 = (type_2)((int)var_8 + -1);
  }
  var_45 = (int)pmStack_f0 * 4;
  var_38 = (type_7 *)(var_37 + (int)pmStack_f0);
  var_34 = (type_2)((int)pmStack_f0 + (int)var_8);
  var_5 = var_15 & 0x1f;
  uStack_130 = var_28;
  puStack_12c = var_38;
  if (var_5 == 0) {
    var_28 = var_5;
    *(type_2 *)(var_30 + -8) = var_8;
    *(int **)(var_30 + -0xc) = var_37;
    *(type_7 **)(var_30 + -0x10) = var_38;
    pcVar3 = *(type_6 **)(var_16 + 0x24);
    *(type_12 *)(var_30 + -0x14) = 0x4ed9a;
    (*pcVar3)();
  }
  else {
    var_28 = var_5;
    *(type_7 *)(var_30 + -4) = var_5;
    *(type_2 *)(var_30 + -8) = var_8;
    *(int **)(var_30 + -0xc) = var_13;
    var_7 = var_46;
    *(type_7 **)(var_30 + -0x10) = var_38;
    pcVar3 = *(type_6 **)(var_7 + 0x38);
    *(type_12 *)(var_30 + -0x14) = 0x4ec66;
    var_7 = (*pcVar3)();
    if (var_7 != 0) {
      var_37[(int)var_34] = var_7;
      var_34 = (type_2)((int)var_34 + 1);
    }
  }
  var_5 = *puStack_12c;
  var_6 = uStack_130;
  var_38 = puStack_12c;
  var_49 = puStack_11c;
  if ((int)pmStack_f0 < (int)puStack_11c) {
    iStack_114 = *(int *)((int)var_37 + var_45 + 4);
  }
LAB_0004e83d:
  var_13 = var_29 + var_6;
  puStack_11c = var_38;
  if ((var_26 & 0x1f) == 0) {
    *(int *)(var_30 + -8) = iStack_110;
    *(int **)(var_30 + -0xc) = var_13;
    *(int **)(var_30 + -0x10) = var_37;
    pcVar3 = *(type_6 **)(var_46 + 0x28);
    *(type_12 *)(var_30 + -0x14) = 0x4ed09;
    (*pcVar3)();
  }
  else {
    *(type_7 *)(var_30 + -4) = var_26 & 0x1f;
    *(int *)(var_30 + -8) = iStack_110;
    *(int **)(var_30 + -0xc) = var_13;
    var_7 = var_46;
    *(int **)(var_30 + -0x10) = var_37;
    pcVar3 = *(type_6 **)(var_7 + 0x80);
    *(type_12 *)(var_30 + -0x14) = 0x4e875;
    (*pcVar3)();
  }
  var_16 = iStack_d0;
  var_7 = var_52;
  *puStack_11c = var_5 | ~(-1 << ((type_5)var_28 & 0x1f)) & *puStack_11c;
  if ((int)pmStack_f0 < (int)var_49) {
    var_37[(int)pmStack_f0 + 1] = iStack_114;
  }
  *(type_2 *)(var_30 + -4) = var_9;
  var_47 = var_46;
  *(int *)(var_30 + -8) = var_7;
  *(int *)(var_30 + -0xc) = var_16;
  *(int *)(var_30 + -0x10) = var_16;
  pcVar3 = *(type_6 **)(var_47 + 100);
  *(type_12 *)(var_30 + -0x14) = 0x4e8c9;
  var_48 = (*pcVar3)();
  var_38 = var_54;
  var_47 = var_21;
  *(int *)(var_16 + var_7 * 4) = var_48;
  var_7 = (type_7)(var_48 != 0) + var_7;
  var_49 = (type_7 *)(var_45 + (int)var_54);
  var_16 = (int)pmStack_f0 + var_21;
  if (var_28 == 0) {
    *(int *)(var_30 + -8) = var_21;
    *(type_7 **)(var_30 + -0xc) = var_54;
    *(type_7 **)(var_30 + -0x10) = var_49;
    pcVar3 = *(type_6 **)(var_46 + 0x24);
    *(type_12 *)(var_30 + -0x14) = 0x4ecd9;
    (*pcVar3)();
LAB_0004ecdc:
    var_21 = var_16;
  }
  else {
    *(type_7 *)(var_30 + -4) = var_28;
    *(int *)(var_30 + -8) = var_47;
    *(type_7 **)(var_30 + -0xc) = var_38;
    *(type_7 **)(var_30 + -0x10) = var_49;
    pcVar3 = *(type_6 **)(var_46 + 0x38);
    *(type_12 *)(var_30 + -0x14) = 0x4e915;
    var_5 = (*pcVar3)();
    if (var_5 == 0) goto LAB_0004ecdc;
    var_54[var_16] = var_5;
    var_21 = var_16 + 1;
  }
  pmStack_f0 = (type_2)*var_49;
  var_6 = var_15 - 1 >> 5;
  var_5 = var_6 + 1;
  if ((int)var_34 < var_7) {
    *(type_7 *)(var_30 + -8) = var_5 * 4;
    *(type_12 *)(var_30 + -0xc) = 0;
    *(type_7 **)(var_30 + -0x10) = var_54;
    *(type_12 *)(var_30 + -0x14) = 0x4ee04;
    var_50(*(void **)(var_30 + -0x10),*(int *)(var_30 + -0xc),*(size_t *)(var_30 + -8));
    goto LAB_0004e9ab;
  }
  var_16 = (int)var_34 - var_7;
  if (var_16 <= (int)var_5) {
    *(int **)(var_30 + -0xc) = piStack_120;
    *(int *)(var_30 + -0x10) = var_7;
    *(int *)(var_30 + -0x14) = iStack_d0;
    *(type_2 *)(var_30 + -0x18) = var_34;
    *(int **)(var_30 + -0x1c) = var_37;
    *(int *)(var_30 + -0x20) = var_33;
    var_52 = var_16;
    var_45 = var_5;
    *(type_12 *)(var_30 + -0x24) = 0x4ead1;
    var_51(*(type_2 *)(var_30 + -0x20),*(type_3 *)(var_30 + -0x1c),
                 *(type_1 *)(var_30 + -0x18),*(type_3 *)(var_30 + -0x14),
                 *(type_1 *)(var_30 + -0x10),*(type_2 *)(var_30 + -0xc));
    var_38 = var_54;
    var_7 = var_46;
    var_53 = (type_7)(*(int *)(var_33 + var_52 * 4) != 0) + var_52;
    var_5 = var_45;
    if ((int)var_53 <= (int)var_45) {
      if ((var_45 != var_53) || (var_28 == 0)) {
        var_28 = var_45;
        *(type_7 *)(var_30 + -8) = var_53;
        *(int *)(var_30 + -0xc) = var_33;
        *(type_7 **)(var_30 + -0x10) = var_38;
        pcVar3 = *(type_6 **)(var_7 + 0x28);
        *(type_12 *)(var_30 + -0x14) = 0x4eb2a;
        (*pcVar3)();
        if (var_28 != var_53) {
          *(type_7 *)(var_30 + -8) = (var_28 - var_53) * 4;
          *(type_12 *)(var_30 + -0xc) = 0;
          *(type_7 **)(var_30 + -0x10) = var_38 + var_53;
          *(type_12 *)(var_30 + -0x14) = 0x4eb55;
          var_50(*(void **)(var_30 + -0x10),*(int *)(var_30 + -0xc),*(size_t *)(var_30 + -8));
        }
        goto LAB_0004e9ab;
      }
      if (*(type_7 *)(var_33 + -4 + var_53 * 4) >> ((type_5)var_28 & 0x1f) == 0) {
        *(type_7 *)(var_30 + -8) = var_53;
        *(int *)(var_30 + -0xc) = var_33;
        *(type_7 **)(var_30 + -0x10) = var_54;
        pcVar3 = *(type_6 **)(var_7 + 0x28);
        *(type_12 *)(var_30 + -0x14) = 0x4ede2;
        (*pcVar3)();
        goto LAB_0004e9ab;
      }
    }
  }
  var_38 = var_54;
  if (var_5 != 1) {
    *(type_7 *)(var_30 + -8) = var_6 * 4;
    *(type_12 *)(var_30 + -0xc) = 0xff;
    *(type_7 **)(var_30 + -0x10) = var_54;
    *(type_12 *)(var_30 + -0x14) = 0x4e98f;
    var_50(*(void **)(var_30 + -0x10),*(int *)(var_30 + -0xc),*(size_t *)(var_30 + -8));
    var_38 = var_54 + var_6;
  }
  *var_38 = 0xffffffff >> ((type_5)var_36 & 0x1f);
LAB_0004e9ab:
  var_35 = var_35 + -1;
  *var_49 = *var_49 | (type_7)pmStack_f0;
  var_7 = var_33;
  if (var_55 == 0) goto LAB_0004e9ce;
  goto LAB_0004e690;
LAB_0004efbf:
  if (var_10 == (int *)0x0) {
    var_34 = (type_2)0x1;
  }
  else {
    var_56 = var_8;
    if (var_8 == (type_2)0x0) {
LAB_0004efd7:
      if ((var_29 != var_10) && ((int)var_56 < (int)var_11)) {
        var_13 = var_29 + (int)var_56;
        var_14 = var_10 + (int)var_56;
        do {
          var_7 = *var_13;
          var_13 = var_13 + 1;
          *var_14 = var_7;
          var_14 = var_14 + 1;
        } while ((int *)((int)var_29 + var_24 + 4) != var_13);
      }
    }
    else {
      *(type_2 *)(var_30 + -4) = var_8;
      *(int *)(var_30 + -8) = var_7;
      *(int **)(var_30 + -0xc) = var_29;
      *(int **)(var_30 + -0x10) = var_10;
      *(type_12 *)(var_30 + -0x14) = 0x4f0a5;
      var_7 = var_44();
      if (var_7 == 0) goto LAB_0004efd7;
      if (var_11 != var_8) {
        var_56 = (type_2)((int)var_8 + 1);
        var_54 = (type_7 *)((int)var_8 * 4);
        var_7 = var_29[(int)var_8];
        var_10[(int)var_8] = var_7 + -1;
        if (var_7 == 0) {
          if ((int)var_11 <= (int)var_56) goto LAB_0004f017;
          var_7 = var_29[(int)var_8 + 1];
          var_10[(int)var_8 + 1] = var_7 + -1;
          var_56 = (type_2)((int)var_8 + 2);
          while (var_7 == 0) {
            if (var_11 == var_56) goto LAB_0004f017;
            var_7 = var_29[(int)var_56];
            var_10[(int)var_56] = var_7 + -1;
            var_56 = (type_2)((int)var_56 + 1);
          }
        }
        goto LAB_0004efd7;
      }
    }
LAB_0004f017:
    var_7 = var_10[var_4];
    while (var_7 == 0) {
      var_7 = var_10[(int)var_11 - 2];
      var_11 = (type_2)((int)var_11 - 1);
    }
    var_34 = var_11;
  }
  goto LAB_0004e9e0;
}


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

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

{
  byte bVar1;
  code *pcVar2;
  uint uVar3;
  int iVar4;
  uint uVar5;
  int iVar6;
  uint *puVar7;
  int *piVar8;
  int *piVar9;
  int *extraout_ECX;
  int iVar10;
  uint uVar11;
  uint *puVar12;
  uint uVar13;
  undefined1 *puVar14;
  int iVar15;
  int unaff_EDI;
  int in_GS_OFFSET;
  ushort in_FPUControlWord;
  undefined8 uVar16;
  undefined1 auStack_13c [8];
  int local_134;
  uint uStack_130;
  uint *puStack_12c;
  int local_128;
  int *local_124;
  int iStack_120;
  uint *puStack_11c;
  int iStack_118;
  undefined4 uStack_114;
  int iStack_110;
  int iStack_10c;
  int iStack_108;
  int iStack_104;
  uint uStack_100;
  uint *puStack_fc;
  int *local_f8;
  uint uStack_f4;
  uint uStack_f0;
  uint uStack_ec;
  uint uStack_e8;
  uint uStack_e4;
  int iStack_e0;
  int iStack_dc;
  uint uStack_d8;
  int iStack_d4;
  int iStack_d0;
  int iStack_cc;
  undefined4 uStack_c8;
  int local_c4;
  uint *local_c0;
  int iStack_bc;
  ushort uStack_b8;
  int iStack_a8;
  uint auStack_a4 [33];
  int local_20;
  
  uVar16 = FUN_00025194();
  local_124 = (int *)((ulonglong)uVar16 >> 0x20);
  local_c0 = (uint *)uVar16;
  local_c4 = unaff_EDI + 0x4fbe7;
  puVar14 = auStack_13c;
  local_20 = *(int *)(in_GS_OFFSET + 0x14);
  local_134 = param_1 + 0x3fffffff;
  uVar11 = extraout_ECX[local_134];
  local_128 = local_134 * 4;
  uVar5 = 0x1f;
  if (uVar11 != 0) {
    for (; uVar11 >> uVar5 == 0; uVar5 = uVar5 - 1) {
    }
  }
  iVar10 = (uVar5 ^ 0x1f) + 1;
  uVar5 = param_1 * 0x20 - iVar10;
  if (uVar5 < param_2) {
    *local_c0 = 1;
    if (local_124 == (int *)0x0) {
      iVar10 = *extraout_ECX + -1;
    }
    else {
      iVar10 = *extraout_ECX;
      *local_124 = iVar10 + -1;
      if (iVar10 == 0) {
        if (1 < (int)param_1) {
          iVar10 = extraout_ECX[1];
          local_124[1] = iVar10 + -1;
          if (iVar10 == 0) {
            if (param_1 == 2) goto LAB_0004ef98;
            iVar10 = extraout_ECX[2];
            uVar11 = 3;
            local_124[2] = iVar10 + -1;
            while (iVar10 == 0) {
              if (param_1 == uVar11) goto LAB_0004ef98;
              iVar10 = extraout_ECX[uVar11];
              local_124[uVar11] = iVar10 + -1;
              uVar11 = uVar11 + 1;
            }
          }
          else {
            uVar11 = 2;
          }
          if ((extraout_ECX != local_124) && ((int)uVar11 < (int)param_1)) {
            piVar9 = extraout_ECX + uVar11;
            piVar8 = local_124 + uVar11;
            do {
              iVar10 = *piVar9;
              piVar9 = piVar9 + 1;
              *piVar8 = iVar10;
              piVar8 = piVar8 + 1;
            } while (extraout_ECX + param_1 + 0x40000000 != piVar9);
          }
        }
      }
      else if ((extraout_ECX != local_124) && (1 < (int)param_1)) {
        piVar9 = extraout_ECX + 1;
        piVar8 = local_124;
        do {
          piVar8 = piVar8 + 1;
          iVar10 = *piVar9;
          piVar9 = piVar9 + 1;
          *piVar8 = iVar10;
        } while (extraout_ECX + param_1 + 0x40000000 != piVar9);
      }
LAB_0004ef98:
      iVar10 = local_124[local_134];
    }
    uStack_d8 = param_1 - (iVar10 == 0);
    goto LAB_0004e9ee;
  }
  if (iVar10 == 0x20) {
    uVar11 = extraout_ECX[param_1 + 0x3ffffffe];
  }
  else {
    uVar11 = (uint)extraout_ECX[(param_1 - 1) - (uint)(param_1 != 1)] >>
             (0x20 - (byte)iVar10 & 0x1f) | uVar11 << ((byte)iVar10 & 0x1f);
  }
  uVar11 = (uint)*(byte *)(unaff_EDI + 0x32bc7 + (uVar11 >> 0x18));
  if (uVar5 < 0x1000000) {
    uStack_e8 = (uVar5 * 0x100 | uVar11) / param_2;
    uVar11 = uStack_e8 & 0xff;
    uStack_e8 = uStack_e8 >> 8;
  }
  else {
    uStack_e8 = uVar5 / param_2;
    uVar11 = (uVar5 % param_2 << 8 | uVar11) / param_2;
  }
  iVar10 = uStack_e8 * param_2;
  bVar1 = *(byte *)(unaff_EDI + 0x32ac7 + uVar11);
  uStack_ec = param_2 - 1;
  uVar11 = 3;
  for (uVar5 = uStack_ec >> 2; uVar5 != 0; uVar5 = uVar5 >> 1) {
    uVar11 = uVar11 + 1;
  }
  puStack_fc = auStack_a4;
  iVar15 = 0;
  auStack_a4[0] = uStack_e8;
  if (8 < uStack_e8) {
    iVar4 = 0;
    do {
      while (iVar15 = iVar4, uVar11 < uStack_e8) {
        uStack_e8 = uStack_e8 + uVar11 >> 1;
        puStack_fc[iVar15 + 1] = uStack_e8;
        iVar4 = iVar15 + 1;
        if (uStack_e8 < 9) goto LAB_0004e56d;
      }
      uStack_e8 = uStack_e8 - 1;
      puStack_fc[iVar15 + 1] = uStack_e8;
      iVar4 = iVar15 + 1;
    } while (uStack_e8 != 8);
    uStack_e8 = 8;
LAB_0004e56d:
    iVar15 = iVar15 + 1;
  }
  iStack_a8 = 0;
  uStack_f4 = iVar10 - uStack_e8;
  *local_c0 = (bVar1 | 0x100) >> (8U - (char)uStack_e8 & 0x1f);
  uStack_c8 = 0;
  uStack_b8 = in_FPUControlWord | 0xc00;
  iStack_bc = (int)ROUND((double)param_2 * *(double *)(unaff_EDI + 0x32cc7) *
                         (double)*(float *)(&UNK_00032ccf + unaff_EDI));
  iStack_cc = param_1 + 2 + iStack_bc;
  uVar11 = (param_1 + 1 + iStack_cc * 2) * 4;
  local_f8 = extraout_ECX;
  if (uVar11 < 0x7f01) {
    iStack_120 = -(uVar11 + 0x1b & 0xfffffff0);
    puVar14 = auStack_13c + iStack_120;
    iStack_120 = (int)&uStack_130 + iStack_120;
  }
  else {
    iStack_120 = __gmp_tmp_reentrant_alloc(&iStack_a8,uVar11);
    uVar16 = CONCAT44(local_124,local_c0);
    puVar14 = auStack_13c;
  }
  local_124 = (int *)((ulonglong)uVar16 >> 0x20);
  iVar10 = iStack_120 + local_128 + 8;
  iStack_d0 = iVar10 + iStack_cc * 4;
  iStack_d4 = (int)local_124;
  if (local_124 == (int *)0x0) {
    iStack_d4 = iStack_120;
  }
  if (iVar15 != 0) {
    iStack_104 = iVar15 + -1;
    puStack_fc = auStack_a4;
    iStack_cc = 1;
    iStack_e0 = *(int *)(local_c4 + -0x26c);
    iStack_dc = iVar10;
LAB_0004e690:
    local_124 = (int *)((ulonglong)uVar16 >> 0x20);
    local_c0 = (uint *)uVar16;
    uStack_e4 = uStack_f4 - uStack_e8 * uStack_ec;
    iVar10 = param_1 - (uStack_e4 >> 5);
    piVar9 = local_f8 + (uStack_e4 >> 5);
    if ((uStack_e4 & 0x1f) == 0) {
      *(int *)(puVar14 + -8) = iVar10;
      *(int **)(puVar14 + -0xc) = piVar9;
      iVar15 = iStack_e0;
      *(int *)(puVar14 + -0x10) = iStack_d4;
      pcVar2 = *(code **)(iVar15 + 0x28);
      *(undefined4 *)(puVar14 + -0x14) = 0x4ed34;
      (*pcVar2)();
    }
    else {
      *(uint *)(puVar14 + -4) = uStack_e4 & 0x1f;
      *(int *)(puVar14 + -8) = iVar10;
      *(int **)(puVar14 + -0xc) = piVar9;
      iVar15 = iStack_e0;
      *(int *)(puVar14 + -0x10) = iStack_d4;
      pcVar2 = *(code **)(iVar15 + 0x80);
      *(undefined4 *)(puVar14 + -0x14) = 0x4e6dc;
      (*pcVar2)();
    }
    iVar4 = iStack_d4;
    iVar15 = iStack_dc;
    uStack_d8 = iVar10 - (uint)(*(int *)(iStack_d4 + (iVar10 + -1) * 4) == 0);
    do {
      *(int *)(puVar14 + -0x10) = iVar15;
      *(uint *)(puVar14 + -0x14) = uStack_ec;
      *(int *)(puVar14 + -0x18) = iStack_cc;
      *(uint **)(puVar14 + -0x1c) = local_c0;
      *(int *)(puVar14 + -0x20) = iStack_d0;
      *(undefined4 *)(puVar14 + -0x24) = 0x4e727;
      iVar10 = __gmpn_pow_1();
      *(int *)(puVar14 + -0x10) = iStack_cc;
      *(uint **)(puVar14 + -0x14) = local_c0;
      *(int *)(puVar14 + -0x18) = iVar10;
      *(int *)(puVar14 + -0x1c) = iStack_d0;
      *(int *)(puVar14 + -0x20) = iVar15;
      iStack_dc = iVar10;
      *(undefined4 *)(puVar14 + -0x24) = 0x4e74f;
      __gmpn_mul();
      iVar10 = iStack_d4;
      uVar11 = uStack_d8;
      iVar6 = (iStack_cc + iStack_dc) -
              (uint)(*(int *)(iVar15 + -4 + (iStack_cc + iStack_dc) * 4) == 0);
      puVar7 = local_c0;
      if (iVar6 <= (int)uStack_d8) {
        uVar5 = uStack_d8;
        if (uStack_d8 != iVar6) goto LAB_0004eb66;
        do {
          uVar5 = uVar5 + -1;
          if ((int)uVar5 < 0) {
            iStack_108 = iStack_dc;
            uStack_114 = 0;
            iStack_10c = iStack_104;
            uStack_e8 = puStack_fc[iStack_104] - puStack_fc[iStack_104 + 1];
            iStack_118 = puStack_fc[iStack_104 + 1] - puStack_fc[iStack_104];
            uStack_f0 = uStack_e8 >> 5;
            uStack_f4 = iStack_118 + uStack_e4;
            uVar11 = uStack_e4 - 1;
            uStack_e4 = uStack_e8 & 0x1f;
            puVar12 = (uint *)((uVar11 >> 5) - (uStack_f4 >> 5));
            uStack_100 = uStack_f0 * 4;
            uVar11 = 0;
            iStack_110 = (int)puVar12 + 1;
            uVar5 = uStack_f4 >> 5;
            puVar7 = (uint *)(iStack_d4 + uStack_f0 * 4);
            iStack_dc = iVar15;
            uStack_d8 = uStack_f0;
            goto LAB_0004e83d;
          }
          uVar13 = *(uint *)(iVar4 + uVar5 * 4);
          uVar3 = *(uint *)(iVar15 + uVar5 * 4);
        } while (uVar3 == uVar13);
        if (uVar3 <= uVar13) goto LAB_0004eb66;
      }
      do {
        uVar11 = *puVar7;
        *puVar7 = *puVar7 - 1;
        puVar7 = puVar7 + 1;
      } while (uVar11 == 0);
    } while( true );
  }
  iStack_cc = 1;
LAB_0004e9ce:
  piVar9 = local_f8;
  local_c0 = (uint *)uVar16;
  if ((param_3 == 0) || (*local_c0 < 2)) {
    do {
      local_124 = (int *)((ulonglong)uVar16 >> 0x20);
      local_c0 = (uint *)uVar16;
      *(int *)(puVar14 + -0x10) = iStack_d0;
      *(uint *)(puVar14 + -0x14) = param_2;
      *(int *)(puVar14 + -0x18) = iStack_cc;
      *(uint **)(puVar14 + -0x1c) = local_c0;
      *(int *)(puVar14 + -0x20) = iVar10;
      *(undefined4 *)(puVar14 + -0x24) = 0x4ea47;
      uVar11 = __gmpn_pow_1();
      uVar16 = CONCAT44(local_124,local_c0);
      if ((int)uVar11 <= (int)param_1) {
        uVar5 = param_1;
        if (param_1 != uVar11) goto LAB_0004efbf;
        do {
          uVar5 = uVar5 - 1;
          if ((int)uVar5 < 0) {
            uStack_d8 = 0;
            uVar16 = CONCAT44(local_124,local_c0);
            goto LAB_0004e9e0;
          }
          uVar13 = *(uint *)(iVar10 + uVar5 * 4);
        } while (uVar13 == piVar9[uVar5]);
        if (uVar13 <= (uint)piVar9[uVar5]) goto LAB_0004efbf;
      }
      do {
        iVar15 = *local_c0;
        *local_c0 = *local_c0 + -1;
        local_c0 = (uint *)((int *)local_c0 + 1);
      } while (iVar15 == 0);
    } while( true );
  }
LAB_0004e9e0:
  local_124 = (int *)((ulonglong)uVar16 >> 0x20);
  local_c0 = (uint *)uVar16;
  if (iStack_a8 != 0) {
    *(int *)(puVar14 + -0x10) = iStack_a8;
    *(undefined4 *)(puVar14 + -0x14) = 0x4f1a9;
    __gmp_tmp_reentrant_free();
    uVar16 = CONCAT44(local_124,local_c0);
  }
LAB_0004e9ee:
  local_124 = (int *)((ulonglong)uVar16 >> 0x20);
  local_c0 = (uint *)uVar16;
  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {
    return uStack_d8;
  }
                    /* WARNING: Subroutine does not return */
  *(undefined **)(puVar14 + -4) = &UNK_0004f214;
  FUN_0007ebe0();
LAB_0004eb66:
  iStack_108 = iStack_dc;
  iStack_10c = iStack_104;
  uStack_e8 = puStack_fc[iStack_104] - puStack_fc[iStack_104 + 1];
  iStack_118 = puStack_fc[iStack_104 + 1] - puStack_fc[iStack_104];
  uStack_f0 = uStack_e8 >> 5;
  uStack_f4 = iStack_118 + uStack_e4;
  uVar5 = uStack_f4 >> 5;
  puStack_11c = (uint *)((uStack_e4 - 1 >> 5) - uVar5);
  iStack_110 = (int)puStack_11c + 1;
  uStack_e4 = uVar5;
  iStack_dc = iVar15;
  if (iVar6 != 0) {
    *(int *)(puVar14 + -4) = iVar6;
    *(int *)(puVar14 + -8) = iStack_dc;
    *(int *)(puVar14 + -0xc) = iVar10;
    *(int *)(puVar14 + -0x10) = iVar10;
    uStack_d8 = iVar6;
    *(undefined4 *)(puVar14 + -0x14) = 0x4ee32;
    iVar10 = __gmpn_sub_n();
    if ((iVar10 != 0) && (uVar11 != uStack_d8)) {
      piVar9 = (int *)(iStack_d4 + uStack_d8 * 4);
      iVar10 = *piVar9;
      *piVar9 = iVar10 + -1;
      if ((iVar10 == 0) && ((int)(uStack_d8 + 1) < (int)uVar11)) {
        piVar9 = (int *)(iStack_d4 + (uStack_d8 + 1) * 4);
        iVar15 = uStack_d8 + 2;
        iVar10 = *piVar9;
        *piVar9 = iVar10 + -1;
        for (; (iVar10 == 0 && (uVar11 != iVar15)); iVar15 = iVar15 + 1) {
          iVar10 = *(int *)(iStack_d4 + iVar15 * 4);
          *(int *)(iStack_d4 + iVar15 * 4) = iVar10 + -1;
        }
      }
    }
  }
  iVar4 = iStack_d4;
  iVar15 = iStack_e0;
  iVar10 = *(int *)(iStack_d4 + (uVar11 + -1) * 4);
  while (iVar10 == 0) {
    iVar10 = *(int *)(iStack_d4 + (uVar11 + -2) * 4);
    uVar11 = uVar11 + -1;
  }
  uStack_100 = uStack_f0 * 4;
  puVar7 = (uint *)(iStack_d4 + uStack_f0 * 4);
  uStack_d8 = uStack_f0 + uVar11;
  uVar5 = uStack_e8 & 0x1f;
  uStack_130 = uStack_e4;
  puStack_12c = puVar7;
  if (uVar5 == 0) {
    uStack_e4 = uVar5;
    *(uint *)(puVar14 + -8) = uVar11;
    *(int *)(puVar14 + -0xc) = iStack_d4;
    *(uint **)(puVar14 + -0x10) = puVar7;
    pcVar2 = *(code **)(iVar15 + 0x24);
    *(undefined4 *)(puVar14 + -0x14) = 0x4ed9a;
    (*pcVar2)();
  }
  else {
    uStack_e4 = uVar5;
    *(uint *)(puVar14 + -4) = uVar5;
    *(uint *)(puVar14 + -8) = uVar11;
    *(int *)(puVar14 + -0xc) = iVar4;
    iVar10 = iStack_e0;
    *(uint **)(puVar14 + -0x10) = puVar7;
    pcVar2 = *(code **)(iVar10 + 0x38);
    *(undefined4 *)(puVar14 + -0x14) = 0x4ec66;
    iVar10 = (*pcVar2)();
    if (iVar10 != 0) {
      *(int *)(iStack_d4 + uStack_d8 * 4) = iVar10;
      uStack_d8 = uStack_d8 + 1;
    }
  }
  uVar11 = *puStack_12c;
  uVar5 = uStack_130;
  puVar7 = puStack_12c;
  puVar12 = puStack_11c;
  if ((int)uStack_f0 < (int)puStack_11c) {
    uStack_114 = *(undefined4 *)(iStack_d4 + uStack_100 + 4);
  }
LAB_0004e83d:
  piVar9 = local_f8 + uVar5;
  puStack_11c = puVar7;
  if ((uStack_f4 & 0x1f) == 0) {
    *(int *)(puVar14 + -8) = iStack_110;
    *(int **)(puVar14 + -0xc) = piVar9;
    *(int *)(puVar14 + -0x10) = iStack_d4;
    pcVar2 = *(code **)(iStack_e0 + 0x28);
    *(undefined4 *)(puVar14 + -0x14) = 0x4ed09;
    (*pcVar2)();
  }
  else {
    *(uint *)(puVar14 + -4) = uStack_f4 & 0x1f;
    *(int *)(puVar14 + -8) = iStack_110;
    *(int **)(puVar14 + -0xc) = piVar9;
    iVar10 = iStack_e0;
    *(int *)(puVar14 + -0x10) = iStack_d4;
    pcVar2 = *(code **)(iVar10 + 0x80);
    *(undefined4 *)(puVar14 + -0x14) = 0x4e875;
    (*pcVar2)();
  }
  iVar15 = iStack_d0;
  iVar10 = iStack_108;
  *puStack_11c = uVar11 | ~(-1 << ((byte)uStack_e4 & 0x1f)) & *puStack_11c;
  if ((int)uStack_f0 < (int)puVar12) {
    *(undefined4 *)(iStack_d4 + (uStack_f0 + 1) * 4) = uStack_114;
  }
  *(uint *)(puVar14 + -4) = param_2;
  iVar4 = iStack_e0;
  *(int *)(puVar14 + -8) = iVar10;
  *(int *)(puVar14 + -0xc) = iVar15;
  *(int *)(puVar14 + -0x10) = iVar15;
  pcVar2 = *(code **)(iVar4 + 100);
  *(undefined4 *)(puVar14 + -0x14) = 0x4e8c9;
  iVar6 = (*pcVar2)();
  puVar7 = local_c0;
  iVar4 = iStack_cc;
  *(int *)(iVar15 + iVar10 * 4) = iVar6;
  iVar10 = (uint)(iVar6 != 0) + iVar10;
  puVar12 = (uint *)(uStack_100 + (int)local_c0);
  iVar15 = uStack_f0 + iStack_cc;
  if (uStack_e4 == 0) {
    *(int *)(puVar14 + -8) = iStack_cc;
    *(uint **)(puVar14 + -0xc) = local_c0;
    *(uint **)(puVar14 + -0x10) = puVar12;
    pcVar2 = *(code **)(iStack_e0 + 0x24);
    *(undefined4 *)(puVar14 + -0x14) = 0x4ecd9;
    (*pcVar2)();
LAB_0004ecdc:
    iStack_cc = iVar15;
  }
  else {
    *(uint *)(puVar14 + -4) = uStack_e4;
    *(int *)(puVar14 + -8) = iVar4;
    *(uint **)(puVar14 + -0xc) = puVar7;
    *(uint **)(puVar14 + -0x10) = puVar12;
    pcVar2 = *(code **)(iStack_e0 + 0x38);
    *(undefined4 *)(puVar14 + -0x14) = 0x4e915;
    uVar11 = (*pcVar2)();
    if (uVar11 == 0) goto LAB_0004ecdc;
    local_c0[iVar15] = uVar11;
    iStack_cc = iVar15 + 1;
  }
  uStack_f0 = *puVar12;
  uVar5 = uStack_e8 - 1 >> 5;
  uVar11 = uVar5 + 1;
  if ((int)uStack_d8 < iVar10) {
    *(uint *)(puVar14 + -8) = uVar11 * 4;
    *(undefined4 *)(puVar14 + -0xc) = 0;
    *(uint **)(puVar14 + -0x10) = local_c0;
    *(undefined4 *)(puVar14 + -0x14) = 0x4ee04;
    memset(*(void **)(puVar14 + -0x10),*(int *)(puVar14 + -0xc),*(size_t *)(puVar14 + -8));
    goto LAB_0004e9ab;
  }
  iVar15 = uStack_d8 - iVar10;
  if (iVar15 <= (int)uVar11) {
    *(int *)(puVar14 + -0xc) = iStack_120;
    *(int *)(puVar14 + -0x10) = iVar10;
    *(int *)(puVar14 + -0x14) = iStack_d0;
    *(uint *)(puVar14 + -0x18) = uStack_d8;
    *(int *)(puVar14 + -0x1c) = iStack_d4;
    *(int *)(puVar14 + -0x20) = iStack_dc;
    iStack_108 = iVar15;
    uStack_100 = uVar11;
    *(undefined4 *)(puVar14 + -0x24) = 0x4ead1;
    __gmpn_div_q();
    puVar7 = local_c0;
    iVar10 = iStack_e0;
    uVar13 = (uint)(*(int *)(iStack_dc + iStack_108 * 4) != 0) + iStack_108;
    uVar11 = uStack_100;
    if ((int)uVar13 <= (int)uStack_100) {
      if ((uStack_100 != uVar13) || (uStack_e4 == 0)) {
        uStack_e4 = uStack_100;
        *(uint *)(puVar14 + -8) = uVar13;
        *(int *)(puVar14 + -0xc) = iStack_dc;
        *(uint **)(puVar14 + -0x10) = puVar7;
        pcVar2 = *(code **)(iVar10 + 0x28);
        *(undefined4 *)(puVar14 + -0x14) = 0x4eb2a;
        (*pcVar2)();
        if (uStack_e4 != uVar13) {
          *(uint *)(puVar14 + -8) = (uStack_e4 - uVar13) * 4;
          *(undefined4 *)(puVar14 + -0xc) = 0;
          *(uint **)(puVar14 + -0x10) = puVar7 + uVar13;
          *(undefined4 *)(puVar14 + -0x14) = 0x4eb55;
          memset(*(void **)(puVar14 + -0x10),*(int *)(puVar14 + -0xc),*(size_t *)(puVar14 + -8));
        }
        goto LAB_0004e9ab;
      }
      if (*(uint *)(iStack_dc + -4 + uVar13 * 4) >> ((byte)uStack_e4 & 0x1f) == 0) {
        *(uint *)(puVar14 + -8) = uVar13;
        *(int *)(puVar14 + -0xc) = iStack_dc;
        *(uint **)(puVar14 + -0x10) = local_c0;
        pcVar2 = *(code **)(iVar10 + 0x28);
        *(undefined4 *)(puVar14 + -0x14) = 0x4ede2;
        (*pcVar2)();
        goto LAB_0004e9ab;
      }
    }
  }
  puVar7 = local_c0;
  if (uVar11 != 1) {
    *(uint *)(puVar14 + -8) = uVar5 * 4;
    *(undefined4 *)(puVar14 + -0xc) = 0xff;
    *(uint **)(puVar14 + -0x10) = local_c0;
    *(undefined4 *)(puVar14 + -0x14) = 0x4e98f;
    memset(*(void **)(puVar14 + -0x10),*(int *)(puVar14 + -0xc),*(size_t *)(puVar14 + -8));
    puVar7 = local_c0 + uVar5;
  }
  *puVar7 = 0xffffffff >> ((byte)iStack_118 & 0x1f);
LAB_0004e9ab:
  uVar16 = CONCAT44(local_124,local_c0);
  iStack_104 = iStack_104 + -1;
  *puVar12 = *puVar12 | uStack_f0;
  iVar10 = iStack_dc;
  if (iStack_10c == 0) goto LAB_0004e9ce;
  goto LAB_0004e690;
LAB_0004efbf:
  if (local_124 == (int *)0x0) {
    uStack_d8 = 1;
  }
  else {
    uVar5 = uVar11;
    if (uVar11 == 0) {
LAB_0004efd7:
      if ((local_f8 != local_124) && ((int)uVar5 < (int)param_1)) {
        piVar9 = local_f8 + uVar5;
        piVar8 = local_124 + uVar5;
        do {
          iVar10 = *piVar9;
          piVar9 = piVar9 + 1;
          *piVar8 = iVar10;
          piVar8 = piVar8 + 1;
        } while ((int *)((int)local_f8 + local_128 + 4) != piVar9);
      }
    }
    else {
      *(uint *)(puVar14 + -4) = uVar11;
      *(int *)(puVar14 + -8) = iVar10;
      *(int **)(puVar14 + -0xc) = local_f8;
      *(int **)(puVar14 + -0x10) = local_124;
      *(undefined4 *)(puVar14 + -0x14) = 0x4f0a5;
      iVar10 = __gmpn_sub_n();
      if (iVar10 == 0) goto LAB_0004efd7;
      if (param_1 != uVar11) {
        local_c0 = (uint *)(uVar11 * 4);
        uVar5 = uVar11 + 1;
        iVar10 = local_f8[uVar11];
        local_124[uVar11] = iVar10 + -1;
        if (iVar10 == 0) {
          if ((int)param_1 <= (int)uVar5) goto LAB_0004f017;
          iVar10 = local_f8[uVar11 + 1];
          local_124[uVar11 + 1] = iVar10 + -1;
          uVar5 = uVar11 + 2;
          while (iVar10 == 0) {
            if (param_1 == uVar5) goto LAB_0004f017;
            iVar10 = local_f8[uVar5];
            local_124[uVar5] = iVar10 + -1;
            uVar5 = uVar5 + 1;
          }
        }
        goto LAB_0004efd7;
      }
    }
LAB_0004f017:
    iVar10 = local_124[local_134];
    uStack_d8 = param_1;
    while (uVar16 = CONCAT44(local_124,local_c0), iVar10 == 0) {
      iVar10 = local_124[uStack_d8 - 2];
      uStack_d8 = uStack_d8 - 1;
    }
  }
  goto LAB_0004e9e0;
}

