
mp_size_t __gmpn_hgcd_step(mp_size_t n,mp_ptr ap,mp_ptr bp,mp_size_t s,hgcd_matrix *M,mp_ptr tp)

{
  mp_ptr pmVar1;
  hgcd_matrix *phVar2;
  uint uVar3;
  mp_size_t mVar4;
  mp_ptr pmVar5;
  mp_ptr pmVar6;
  undefined4 *puVar7;
  mp_ptr pmVar8;
  int iVar9;
  undefined4 uVar10;
  mp_limb_t *pmVar11;
  undefined *puVar12;
  int iVar13;
  uint uVar14;
  int iVar15;
  int iVar16;
  mp_ptr pmVar17;
  uint uVar18;
  mp_ptr pmVar19;
  undefined4 uVar20;
  mp_limb_t mVar21;
  mp_limb_t *pmVar22;
  mp_limb_t mVar23;
  uint uVar24;
  mp_ptr pmVar25;
  mp_ptr pmVar26;
  uint uVar27;
  mp_ptr pmVar28;
  int iVar29;
  uint uVar30;
  hgcd_matrix1 *phVar31;
  int iVar32;
  undefined4 uVar33;
  undefined4 uVar34;
  mp_limb_t *pmVar35;
  mp_ptr pmVar36;
  undefined *puVar37;
  int *piVar38;
  mp_ptr pmVar39;
  int iVar40;
  hgcd_matrix1 *unaff_s5;
  int iVar41;
  code *pcVar42;
  undefined1 *puVar43;
  undefined1 *puVar44;
  undefined1 *puVar45;
  undefined4 uVar46;
  code *pcVar47;
  code *pcVar48;
  undefined1 auStack_c0 [24];
  mp_ptr apmStack_a8 [4];
  int iStack_98;
  int iStack_94;
  mp_limb_t *pmStack_90;
  undefined *puStack_8c;
  mp_ptr pmStack_88;
  mp_ptr pmStack_84;
  mp_size_t mStack_80;
  hgcd_matrix1 *phStack_7c;
  mp_size_t mStack_78;
  mp_ptr pmStack_74;
  hgcd_matrix *phStack_70;
  undefined4 uStack_6c;
  hgcd_matrix1 *local_58;
  hgcd_matrix *local_54;
  mp_ptr local_50;
  hgcd_matrix1 M1;
  
  puVar12 = PTR___stack_chk_guard_00097540;
  pmVar35 = (mp_limb_t *)(n * 4 + -4);
  pmVar17 = *(mp_ptr *)PTR___stack_chk_guard_00097540;
  uVar27 = bp[n + -1];
  uVar18 = ap[n + -1];
  uVar3 = uVar18 | uVar27;
  if (s + 1 == n) {
    if (3 < uVar3) {
      unaff_s5 = &M1;
      local_58 = unaff_s5;
      iVar13 = (*(code *)PTR___gmpn_hgcd2_00097460)(uVar18,ap[n + -2],uVar27,bp[n + -2]);
      if (iVar13 != 0) goto LAB_00052bb8;
    }
LAB_00052b18:
    local_50 = tp;
    local_58 = (hgcd_matrix1 *)(PTR_LAB_0009707c + 0x2960);
    local_54 = M;
    pmVar36 = bp;
    pmVar8 = (mp_ptr)n;
    pmVar26 = (mp_ptr)s;
    mVar4 = (*(code *)PTR___gmpn_gcd_subdiv_step_00097118)(ap);
  }
  else {
    uVar24 = ap[n + -2];
    uVar30 = bp[n + -2];
    if (-1 < (int)uVar3) {
      if (uVar3 < 0x10000) {
        iVar13 = 0x18;
        if (uVar3 < 0x100) {
          iVar13 = 0;
        }
        iVar32 = 9;
        if (uVar3 < 0x100) {
          iVar32 = 1;
        }
      }
      else {
        iVar13 = 8;
        if (uVar3 < 0x1000000) {
          iVar13 = 0x10;
        }
        iVar32 = 0x19;
        if (uVar3 < 0x1000000) {
          iVar32 = 0x11;
        }
      }
      uVar3 = iVar13 - (uint)(byte)PTR___gmpn_clz_tab_0009718c[uVar3 >> iVar32];
      uVar14 = 0x20 - uVar3;
      uVar18 = uVar18 << (uVar3 & 0x1f) | uVar24 >> (uVar14 & 0x1f);
      uVar24 = ap[n + -3] >> (uVar14 & 0x1f) | uVar24 << (uVar3 & 0x1f);
      uVar27 = uVar27 << (uVar3 & 0x1f) | uVar30 >> (uVar14 & 0x1f);
      uVar30 = bp[n + -3] >> (uVar14 & 0x1f) | uVar30 << (uVar3 & 0x1f);
    }
    unaff_s5 = &M1;
    local_58 = unaff_s5;
    iVar13 = (*(code *)PTR___gmpn_hgcd2_00097460)(uVar18,uVar24,uVar27,uVar30);
    if (iVar13 == 0) goto LAB_00052b18;
LAB_00052bb8:
    unaff_s5 = &M1;
    (*(code *)PTR___gmpn_hgcd_matrix_mul_1_000973f4)(M,unaff_s5,tp);
    if (n != 0) {
      iVar13 = n + -1;
      mVar21 = *ap;
      if (iVar13 == 0) {
        *tp = mVar21;
        pmVar35 = tp;
      }
      else {
        pmVar36 = tp;
        pmVar35 = ap + 1;
        do {
          *pmVar36 = mVar21;
          iVar13 = iVar13 + -1;
          mVar21 = *pmVar35;
          pmVar36 = pmVar36 + 1;
          pmVar35 = pmVar35 + 1;
        } while (iVar13 != 0);
        tp[n + -1] = mVar21;
        pmVar35 = tp + n + -1;
      }
    }
    pmVar36 = ap;
    pmVar8 = tp;
    pmVar26 = bp;
    local_58 = (hgcd_matrix1 *)n;
    mVar4 = (*(code *)PTR___gmpn_matrix22_mul1_inverse_vector_00097488)(unaff_s5);
  }
  if (pmVar17 == *(mp_ptr *)puVar12) {
    return mVar4;
  }
  uVar46 = 0x52c64;
  puVar37 = PTR___stack_chk_fail_000974d0;
  (*(code *)PTR___stack_chk_fail_000974d0)();
  phVar2 = local_54;
  apmStack_a8[0] = (mp_ptr)(puVar37 + 0x4c3d0);
  puVar43 = auStack_c0;
  phStack_70 = M;
  piVar38 = *(int **)(puVar37 + 0x448d0);
  iVar13 = (int)pmVar26 + (int)local_54;
  pmStack_74 = tp;
  puStack_8c = puVar12;
  iStack_98 = 0;
  iStack_94 = *piVar38;
  pmStack_90 = pmVar35;
  pmStack_88 = ap;
  pmStack_84 = bp;
  mStack_80 = n;
  phStack_7c = unaff_s5;
  mStack_78 = s;
  uStack_6c = uVar46;
  if ((uint)(iVar13 * 4) < 0x7f01) {
    iVar32 = -(iVar13 * 4 + 7U & 0xfffffff8);
    puVar43 = auStack_c0 + iVar32;
    pmVar6 = (mp_ptr)((int)apmStack_a8 + iVar32);
    phVar31 = local_58;
  }
  else {
    apmStack_a8[3] = (mp_ptr)local_58;
    pmVar6 = (mp_ptr)(**(code **)(puVar37 + 0x44680))(&iStack_98);
    phVar31 = (hgcd_matrix1 *)apmStack_a8[3];
  }
  pcVar42 = (code *)apmStack_a8[0][-0x1f63];
  *(hgcd_matrix **)(puVar43 + 0x10) = phVar2;
  pmVar25 = pmVar8;
  pmVar28 = pmVar26;
  (*pcVar42)(pmVar6);
  pmVar39 = (mp_ptr)(iVar13 - (uint)((int)pmVar36 < iVar13));
  if (((pmVar39 != (mp_ptr)0x0) &&
      (pmVar25 = pmVar17, pmVar28 = pmVar6, phVar31 = (hgcd_matrix1 *)pmVar39,
      iVar13 = (*(code *)apmStack_a8[0][-0x1ecb])(pmVar17), iVar13 != 0)) &&
     ((int)pmVar39 < (int)pmVar36)) {
    pmVar19 = pmVar17 + (int)pmVar39;
    mVar21 = *pmVar19;
    pmVar25 = (mp_ptr)(mVar21 - 1);
    *pmVar19 = (mp_limb_t)pmVar25;
    pmVar5 = pmVar39;
    while ((mVar21 == 0 && (pmVar5 = (mp_ptr)((int)pmVar5 + 1), pmVar36 != pmVar5))) {
      mVar21 = pmVar19[1];
      pmVar19 = pmVar19 + 1;
      pmVar25 = (mp_ptr)(mVar21 - 1);
      *pmVar19 = (mp_limb_t)pmVar25;
    }
  }
  if (iStack_98 != 0) {
    (*(code *)apmStack_a8[0][-0x1e8b])();
  }
  pmVar5 = pmVar36;
  if (((int)pmVar26 < (int)pmVar36) && (pmVar17[(int)pmVar36 + -1] == 0)) {
    pmVar19 = pmVar17 + (int)pmVar36;
    do {
      pmVar36 = (mp_ptr)((int)pmVar36 + -1);
      pmVar5 = pmVar26;
      if (pmVar26 == pmVar36) break;
      pmVar1 = pmVar19 + -2;
      pmVar5 = pmVar36;
      pmVar19 = pmVar19 + -1;
    } while (*pmVar1 == 0);
  }
  pcVar42 = (code *)apmStack_a8[0][-0x1edc];
  if (iStack_94 == *piVar38) {
    return (mp_size_t)pmVar5;
  }
  pcVar47 = hgcd_matrix_apply;
  iVar13 = iStack_94;
  (*pcVar42)();
  puVar45 = puVar43 + -0x88;
  puVar44 = puVar43 + -0x88;
  puVar7 = *(undefined4 **)(pcVar42 + 0x446d8);
  *(undefined1 **)(puVar43 + -8) = auStack_c0;
  *(mp_ptr *)(puVar43 + -0x10) = pmVar6;
  *(undefined4 **)(puVar43 + -0x4c) = puVar7;
  *(mp_ptr *)(puVar43 + -0x20) = pmVar26;
  *(mp_ptr *)(puVar43 + -0x24) = pmVar17;
  *(mp_ptr *)(puVar43 + -0x28) = pmVar36;
  *(code **)(puVar43 + -4) = pcVar47;
  *(mp_ptr *)(puVar43 + -0xc) = pmVar8;
  *(hgcd_matrix **)(puVar43 + -0x14) = phVar2;
  *(mp_ptr *)(puVar43 + -0x18) = pmVar39;
  *(int **)(puVar43 + -0x1c) = piVar38;
  *(code **)(puVar43 + -0x68) = pcVar42 + 0x4c1d8;
  *(undefined4 *)(puVar43 + -0x2c) = *puVar7;
  pmVar17 = (mp_ptr)phVar31;
  pmVar36 = (mp_ptr)phVar31;
  if (0 < (int)phVar31) {
    if (pmVar25[(int)((int)phVar31 + -1)] == 0) {
      pmVar8 = pmVar25 + (int)phVar31;
      do {
        pmVar36 = (mp_ptr)((int)pmVar36 + -1);
        if (pmVar36 == (mp_ptr)0x0) break;
        pmVar26 = pmVar8 + -2;
        pmVar8 = pmVar8 + -1;
      } while (*pmVar26 == 0);
    }
    if (pmVar28[(int)((int)phVar31 + -1)] == 0) {
      pmVar8 = pmVar28 + (int)phVar31;
      do {
        pmVar17 = (mp_ptr)((int)pmVar17 + -1);
        if (pmVar17 == (mp_ptr)0x0) break;
        pmVar26 = pmVar8 + -2;
        pmVar8 = pmVar8 + -1;
      } while (*pmVar26 == 0);
    }
  }
  iVar40 = *(int *)(iVar13 + 4);
  iVar32 = 8;
  do {
    iVar29 = iVar32 + -8;
    do {
      iVar16 = iVar40;
      if (0 < iVar40) {
        iVar9 = *(int *)(iVar13 + iVar29 + 8);
        iVar15 = *(int *)(iVar9 + iVar40 * 4 + -4);
        iVar9 = iVar9 + iVar40 * 4;
        while (iVar15 == 0) {
          iVar16 = iVar16 + -1;
          if (iVar16 == 0) break;
          iVar15 = *(int *)(iVar9 + -8);
          iVar9 = iVar9 + -4;
        }
      }
      iVar9 = iVar29 + -0x3c;
      iVar29 = iVar29 + 4;
      *(int *)(puVar43 + iVar9) = iVar16;
    } while (iVar32 != iVar29);
    iVar32 = iVar32 + 8;
    iVar29 = *(int *)(puVar43 + -0x34);
  } while (iVar32 != 0x18);
  iVar32 = *(int *)(puVar43 + -0x38);
  *(undefined4 *)(puVar43 + -0x40) = 0;
  if (iVar32 == 0) {
    uVar46 = *(undefined4 *)(iVar13 + 0x10);
    *(int *)(puVar43 + -0x74) = iVar29;
    *(undefined4 *)(puVar43 + -0x78) = uVar46;
    pmVar8 = pmVar28;
    pmVar26 = pmVar17;
    pmVar6 = pmVar25;
LAB_0005309c:
    iVar32 = submul(pmVar8,(mp_size_t)pmVar26,pmVar6,(mp_size_t)pmVar36,
                    *(mp_srcptr *)(puVar43 + -0x78),*(mp_size_t *)(puVar43 + -0x74));
    iVar40 = *(int *)(puVar43 + -0x68);
LAB_000530b4:
    pcVar42 = *(code **)(iVar40 + -0x7a2c);
    puVar45 = puVar44;
    if (*(int *)(puVar43 + -0x40) != 0) goto LAB_00053478;
  }
  else {
    if (iVar29 == 0) {
      uVar46 = *(undefined4 *)(iVar13 + 0xc);
      *(int *)(puVar43 + -0x74) = iVar32;
      *(undefined4 *)(puVar43 + -0x78) = uVar46;
      pmVar8 = pmVar25;
      pmVar26 = pmVar36;
      pmVar6 = pmVar28;
      pmVar36 = pmVar17;
      goto LAB_0005309c;
    }
    iVar9 = *(int *)(puVar43 + -0x30);
    pcVar42 = *(code **)(pcVar42 + 0x4454c);
    iVar16 = (int)pmVar36 - *(int *)(puVar43 + -0x3c);
    *(int *)(puVar43 + -0x50) = *(int *)(puVar43 + -0x3c);
    *(int *)(puVar43 + -0x44) = iVar32;
    if ((int)pmVar17 - iVar29 <= iVar16) {
      iVar16 = (int)pmVar17 - iVar29;
    }
    iVar15 = (int)pmVar36 - iVar32;
    if ((int)pmVar17 - iVar9 <= (int)pmVar36 - iVar32) {
      iVar15 = (int)pmVar17 - iVar9;
    }
    iVar32 = iVar15 + 1;
    if (iVar15 + 1 <= iVar16 + 1) {
      iVar32 = iVar16 + 1;
    }
    pmVar17 = (mp_ptr)(*pcVar42)(iVar32 + 1);
    iVar16 = (int)pmVar17 >> 1;
    iVar15 = *(int *)(puVar43 + -0x68);
    uVar46 = *(undefined4 *)(puVar43 + -0x44);
    if (iVar16 < (int)pmVar17) {
      if (iVar40 <= iVar16) {
        uVar18 = ((int)pmVar17 * 3 + iVar16 + 4) * 4;
        uVar3 = uVar18 + 7;
        if (0x7f00 < uVar18) {
          pcVar42 = *(code **)(iVar15 + -0x7d50);
          goto LAB_0005305c;
        }
        goto LAB_00053148;
      }
      uVar18 = ((int)pmVar17 * 4 + 4) * 4;
      uVar3 = uVar18 + 7;
      if (uVar18 < 0x7f01) goto LAB_00053148;
      pcVar42 = *(code **)(iVar15 + -0x7d50);
LAB_0005305c:
      *(mp_ptr *)(puVar43 + -0x48) = pmVar17;
      *(undefined4 *)(puVar43 + -0x44) = uVar46;
      pmVar35 = (mp_limb_t *)(*pcVar42)(puVar43 + -0x40);
      iVar15 = *(int *)(puVar43 + -0x68);
      pmVar17 = *(mp_ptr *)(puVar43 + -0x48);
      uVar46 = *(undefined4 *)(puVar43 + -0x44);
    }
    else {
      uVar3 = ((int)pmVar17 * 3 + 4) * 4;
      pcVar42 = *(code **)(iVar15 + -0x7d50);
      if (0x7f00 < uVar3) goto LAB_0005305c;
      uVar3 = uVar3 + 7;
LAB_00053148:
      puVar45 = puVar43 + -(uVar3 & 0xfffffff8) + -0x88;
      pmVar35 = (mp_limb_t *)(puVar43 + -(uVar3 & 0xfffffff8) + -0x68);
    }
    *(mp_limb_t **)(puVar43 + -0x44) = pmVar35 + (int)pmVar17;
    *(mp_limb_t **)(puVar43 + -0x48) = pmVar35 + (int)pmVar17 + (int)pmVar17;
    if ((int)pmVar17 < (int)phVar31) {
      pcVar42 = *(code **)(iVar15 + -0x7d0c);
      pmVar36 = (mp_ptr)((int)phVar31 - (int)pmVar17);
      *(undefined4 *)(puVar43 + -0x5c) = uVar46;
      *(mp_ptr *)(puVar43 + -0x58) = pmVar17;
      *(int *)(puVar43 + -0x54) = (int)pmVar17 * 4;
      iVar40 = (*pcVar42)(pmVar25,pmVar25,pmVar25 + (int)pmVar17,pmVar36);
      iVar15 = *(int *)(puVar43 + -0x68);
      iVar16 = *(int *)(puVar43 + -0x54);
      pmVar17 = *(mp_ptr *)(puVar43 + -0x58);
      uVar46 = *(undefined4 *)(puVar43 + -0x5c);
      if (iVar40 == 0) {
LAB_0005359c:
        pcVar42 = *(code **)(iVar15 + -0x7d0c);
      }
      else {
        pmVar8 = pmVar25;
        if ((int)pmVar17 <= (int)pmVar36) {
LAB_00053588:
          do {
            mVar21 = *pmVar8;
            *pmVar8 = mVar21 + 1;
            pmVar8 = pmVar8 + 1;
          } while (mVar21 + 1 == 0);
          goto LAB_0005359c;
        }
        pmVar6 = pmVar25 + (int)pmVar36;
        mVar21 = *pmVar6;
        *pmVar6 = mVar21 + 1;
        pmVar26 = pmVar36;
        if (mVar21 + 1 == 0) {
          do {
            pmVar26 = (mp_ptr)((int)pmVar26 + 1);
            if (pmVar17 == pmVar26) goto LAB_00053588;
            mVar21 = pmVar6[1];
            pmVar6 = pmVar6 + 1;
            *pmVar6 = mVar21 + 1;
          } while (mVar21 + 1 == 0);
          goto LAB_0005359c;
        }
        pcVar42 = *(code **)(iVar15 + -0x7d0c);
      }
      *(mp_ptr *)(puVar43 + -0x58) = pmVar17;
      *(undefined4 *)(puVar43 + -0x54) = uVar46;
      iVar40 = (*pcVar42)(pmVar28,pmVar28,(int)pmVar28 + iVar16,pmVar36);
      iVar15 = *(int *)(puVar43 + -0x68);
      uVar46 = *(undefined4 *)(puVar43 + -0x54);
      pmVar17 = *(mp_ptr *)(puVar43 + -0x58);
      phVar31 = (hgcd_matrix1 *)pmVar17;
      if (iVar40 != 0) {
        pmVar8 = pmVar28;
        if ((int)pmVar36 < (int)pmVar17) {
          pmVar11 = pmVar28 + (int)pmVar36;
          mVar21 = *pmVar11 + 1;
          *pmVar11 = mVar21;
          while (mVar21 == 0) {
            pmVar36 = (mp_ptr)((int)pmVar36 + 1);
            if (pmVar17 == pmVar36) goto LAB_0005361c;
            pmVar22 = pmVar11 + 1;
            pmVar11 = pmVar11 + 1;
            mVar21 = *pmVar22 + 1;
            *pmVar11 = mVar21;
          }
        }
        else {
LAB_0005361c:
          do {
            mVar21 = *pmVar8;
            *pmVar8 = mVar21 + 1;
            pmVar8 = pmVar8 + 1;
          } while (mVar21 + 1 == 0);
        }
      }
    }
    uVar10 = *(undefined4 *)(iVar13 + 0x14);
    pcVar42 = *(code **)(iVar15 + -0x7cd8);
    *(undefined4 *)(puVar43 + -0x5c) = uVar46;
    *(mp_ptr *)(puVar43 + -0x54) = pmVar17;
    *(undefined4 *)(puVar45 + 0x18) = *(undefined4 *)(puVar43 + -0x48);
    *(undefined4 *)(puVar45 + 0x10) = uVar10;
    *(int *)(puVar45 + 0x14) = iVar9;
    (*pcVar42)(pmVar35,pmVar17,pmVar25,phVar31);
    uVar46 = *(undefined4 *)(iVar13 + 0xc);
    uVar33 = *(undefined4 *)(puVar43 + -0x54);
    uVar34 = *(undefined4 *)(puVar43 + -0x5c);
    uVar10 = *(undefined4 *)(puVar43 + -0x48);
    pcVar42 = *(code **)(*(int *)(puVar43 + -0x68) + -0x7cd8);
    uVar20 = *(undefined4 *)(puVar43 + -0x44);
    *(undefined4 *)(puVar43 + -0x58) = uVar33;
    *(undefined4 *)(puVar45 + 0x14) = uVar34;
    *(undefined4 *)(puVar43 + -0x54) = uVar34;
    *(undefined4 *)(puVar45 + 0x10) = uVar46;
    *(undefined4 *)(puVar45 + 0x18) = uVar10;
    (*pcVar42)(uVar20,uVar33,pmVar28,phVar31);
    iVar40 = *(int *)(puVar43 + -0x58);
    iVar15 = *(int *)(puVar43 + -0x68);
    iVar16 = *(int *)(puVar43 + -0x54);
    if ((iVar9 + (int)phVar31 < iVar40) && (iVar9 != iVar40 - (int)phVar31)) {
      iVar41 = (iVar40 - (int)phVar31) - iVar9;
      pmVar11 = pmVar35 + (int)(iVar9 + (int)phVar31);
      do {
        iVar41 = iVar41 + -1;
        *pmVar11 = 0;
        pmVar11 = pmVar11 + 1;
      } while (iVar41 != 0);
    }
    pcVar42 = *(code **)(iVar15 + -0x7b2c);
    if (iVar16 + (int)phVar31 < iVar40) {
      if (iVar16 != iVar40 - (int)phVar31) {
        iVar9 = (iVar40 - (int)phVar31) - iVar16;
        puVar7 = (undefined4 *)(*(int *)(puVar43 + -0x44) + (int)(iVar16 + (int)phVar31) * 4);
        do {
          iVar9 = iVar9 + -1;
          *puVar7 = 0;
          puVar7 = puVar7 + 1;
        } while (iVar9 != 0);
        pcVar42 = *(code **)(iVar15 + -0x7b2c);
      }
    }
    *(int *)(puVar43 + -0x54) = iVar40;
    uVar3 = (*pcVar42)(pmVar35,pmVar35,*(undefined4 *)(puVar43 + -0x44),iVar40);
    uVar18 = *pmVar35;
    iVar40 = *(int *)(puVar43 + -0x68);
    uVar46 = *(undefined4 *)(puVar43 + -0x54);
    *pmVar35 = uVar18 - uVar3;
    pmVar11 = pmVar35;
    if (uVar18 < uVar3) {
      do {
        pmVar11 = pmVar11 + 1;
        mVar21 = *pmVar11;
        *pmVar11 = mVar21 - 1;
      } while (mVar21 == 0);
    }
    uVar10 = *(undefined4 *)(iVar13 + 0x10);
    pcVar42 = *(code **)(iVar40 + -0x7cd8);
    uVar20 = *(undefined4 *)(puVar43 + -0x44);
    *(undefined4 *)(puVar43 + -0x54) = uVar46;
    *(undefined4 *)(puVar45 + 0x18) = *(undefined4 *)(puVar43 + -0x48);
    *(int *)(puVar45 + 0x14) = iVar29;
    *(undefined4 *)(puVar45 + 0x10) = uVar10;
    (*pcVar42)(uVar20,uVar46,pmVar25,phVar31);
    iVar40 = *(int *)(puVar43 + -0x68);
    uVar46 = *(undefined4 *)(puVar43 + -0x54);
    if (iVar32 != 0) {
      iVar16 = iVar32 + -1;
      mVar21 = *pmVar35;
      pmVar22 = pmVar25;
      pmVar11 = pmVar35;
      if (iVar16 == 0) {
        *pmVar25 = mVar21;
      }
      else {
        do {
          *pmVar22 = mVar21;
          iVar16 = iVar16 + -1;
          mVar21 = pmVar11[1];
          pmVar22 = pmVar22 + 1;
          pmVar11 = pmVar11 + 1;
        } while (iVar16 != 0);
        pmVar25[iVar32 + -1] = mVar21;
      }
    }
    uVar10 = *(undefined4 *)(iVar13 + 8);
    pcVar42 = *(code **)(iVar40 + -0x7cd8);
    *(undefined4 *)(puVar45 + 0x18) = *(undefined4 *)(puVar43 + -0x48);
    *(undefined4 *)(puVar43 + -0x48) = uVar46;
    *(undefined4 *)(puVar45 + 0x10) = uVar10;
    *(undefined4 *)(puVar45 + 0x14) = *(undefined4 *)(puVar43 + -0x50);
    (*pcVar42)(pmVar35,uVar46,pmVar28,phVar31);
    iVar40 = *(int *)(puVar43 + -0x48);
    iVar16 = *(int *)(puVar43 + -0x68);
    if ((int)phVar31 + iVar29 < iVar40) {
      if (iVar29 != iVar40 - (int)phVar31) {
        iVar9 = (iVar40 - (int)phVar31) - iVar29;
        puVar7 = (undefined4 *)(*(int *)(puVar43 + -0x44) + (int)((int)phVar31 + iVar29) * 4);
        do {
          iVar9 = iVar9 + -1;
          *puVar7 = 0;
          puVar7 = puVar7 + 1;
        } while (iVar9 != 0);
      }
    }
    pcVar42 = *(code **)(iVar16 + -0x7b2c);
    if (*(int *)(puVar43 + -0x50) + (int)phVar31 < iVar40) {
      if (*(int *)(puVar43 + -0x50) != iVar40 - (int)phVar31) {
        iVar29 = (iVar40 - (int)phVar31) - *(int *)(puVar43 + -0x50);
        pmVar11 = pmVar35 + (int)(*(int *)(puVar43 + -0x50) + (int)phVar31);
        do {
          iVar29 = iVar29 + -1;
          *pmVar11 = 0;
          pmVar11 = pmVar11 + 1;
        } while (iVar29 != 0);
        pcVar42 = *(code **)(iVar16 + -0x7b2c);
      }
    }
    uVar3 = (*pcVar42)(pmVar35,pmVar35,*(undefined4 *)(puVar43 + -0x44),iVar40);
    uVar18 = *pmVar35;
    iVar40 = *(int *)(puVar43 + -0x68);
    pmVar26 = (mp_ptr)(uVar18 - uVar3);
    *pmVar35 = (mp_limb_t)pmVar26;
    pmVar11 = pmVar35;
    if (uVar18 < uVar3) {
      do {
        pmVar11 = pmVar11 + 1;
        mVar21 = *pmVar11;
        pmVar26 = (mp_ptr)(mVar21 - 1);
        *pmVar11 = (mp_limb_t)pmVar26;
      } while (mVar21 == 0);
    }
    iVar29 = iVar32 + -1;
    if (iVar32 == 0) {
      iVar29 = -4;
    }
    else {
      pmVar26 = (mp_ptr)*pmVar35;
      pmVar17 = pmVar28;
      if (iVar29 != 0) {
        do {
          pmVar35 = pmVar35 + 1;
          *pmVar17 = (mp_limb_t)pmVar26;
          iVar29 = iVar29 + -1;
          pmVar26 = (mp_ptr)*pmVar35;
          pmVar17 = pmVar17 + 1;
        } while (iVar29 != 0);
        pmVar17 = pmVar28 + iVar32 + -1;
      }
      *pmVar17 = (mp_limb_t)pmVar26;
      iVar29 = iVar32 * 4 + -4;
    }
    puVar44 = puVar45;
    if (*(int *)((int)pmVar25 + iVar29) != 0 || *(int *)((int)pmVar28 + iVar29) != 0)
    goto LAB_000530b4;
    pmVar25 = pmVar25 + iVar32 + -2;
    pmVar28 = pmVar28 + iVar32 + -2;
    do {
      mVar21 = *pmVar25;
      iVar32 = iVar32 + -1;
      mVar23 = *pmVar28;
      pmVar25 = pmVar25 + -1;
      pmVar28 = pmVar28 + -1;
    } while (mVar21 == 0 && mVar23 == 0);
    piVar38 = *(int **)(puVar43 + -0x4c);
    if (*(int *)(puVar43 + -0x40) == 0) goto LAB_000530c4;
    pcVar42 = *(code **)(iVar40 + -0x7a2c);
LAB_00053478:
    (*pcVar42)();
    iVar40 = *(int *)(puVar43 + -0x68);
    puVar45 = puVar44;
  }
  piVar38 = *(int **)(puVar43 + -0x4c);
LAB_000530c4:
  iVar29 = *(int *)(puVar43 + -0x2c);
  pcVar42 = *(code **)(iVar40 + -0x7b70);
  if (iVar29 == *piVar38) {
    return iVar32;
  }
  pcVar48 = __gmpn_hgcd_reduce_itch;
  (*pcVar42)();
  pcVar47 = *(code **)(pcVar42 + 0x43e08);
  *(mp_ptr *)(puVar45 + -0xc) = pmVar28;
  *(int *)(puVar45 + -8) = iVar13;
  *(mp_ptr *)(puVar45 + -0x10) = pmVar25;
  *(code **)(puVar45 + -0x18) = pcVar42 + 0x4b9e4;
  *(code **)(puVar45 + -4) = pcVar48;
  puVar12 = (undefined *)(*pcVar47)(iVar29 - (int)pmVar26);
  if (999 < iVar29) {
    return (mp_size_t)(puVar12 + (iVar29 - (int)pmVar26) * 2);
  }
  puVar37 = (undefined *)((int)pmVar26 + iVar29 + -1);
  if ((int)puVar12 <= (int)puVar37) {
    puVar12 = puVar37;
  }
  return (mp_size_t)puVar12;
}



uint * __gmpn_hgcd_step(uint *param_1,uint *param_2,uint *param_3,uint *param_4,int param_5,
                       uint *param_6)

{
  uint *puVar1;
  undefined *puVar2;
  uint uVar3;
  uint *puVar4;
  uint *puVar5;
  undefined4 *puVar6;
  int iVar7;
  undefined4 uVar8;
  int iVar9;
  uint uVar10;
  int iVar11;
  int iVar12;
  uint uVar13;
  uint *puVar14;
  undefined4 uVar15;
  uint uVar16;
  uint *puVar17;
  uint *puVar18;
  uint *puVar19;
  uint uVar20;
  uint *puVar21;
  int iVar22;
  uint uVar23;
  int iVar24;
  uint *puVar25;
  undefined4 uVar26;
  undefined4 uVar27;
  uint *puVar28;
  uint *puVar29;
  int *piVar30;
  uint *puVar31;
  int iVar32;
  undefined1 *unaff_s5;
  undefined *puVar33;
  code *pcVar34;
  code *pcVar35;
  undefined1 *puVar36;
  undefined1 *puVar37;
  undefined1 *puVar38;
  undefined4 uVar39;
  code *pcVar40;
  undefined1 auStack_c0 [24];
  uint *apuStack_a8 [4];
  int iStack_98;
  int iStack_94;
  uint *puStack_90;
  undefined *puStack_8c;
  uint *puStack_88;
  uint *puStack_84;
  uint *puStack_80;
  undefined1 *puStack_7c;
  uint *puStack_78;
  uint *puStack_74;
  int iStack_70;
  undefined4 uStack_6c;
  uint *local_58;
  int local_54;
  uint *local_50;
  undefined1 auStack_3c [16];
  uint *local_2c;
  
  puVar2 = PTR___stack_chk_guard_00097540;
  puVar28 = (uint *)((int)param_1 * 4 + -4);
  local_2c = *(uint **)PTR___stack_chk_guard_00097540;
  uVar20 = param_3[(int)param_1 + -1];
  uVar13 = param_2[(int)param_1 + -1];
  uVar3 = uVar13 | uVar20;
  if ((uint *)((int)param_4 + 1) == param_1) {
    if (3 < uVar3) {
      unaff_s5 = auStack_3c;
      local_58 = (uint *)unaff_s5;
      iVar9 = (*(code *)PTR___gmpn_hgcd2_00097460)
                        (uVar13,param_2[(int)param_1 + -2],uVar20,param_3[(int)param_1 + -2]);
      if (iVar9 != 0) goto LAB_00052bb8;
    }
LAB_00052b18:
    local_50 = param_6;
    local_58 = (uint *)(PTR_LAB_0009707c + 0x2960);
    local_54 = param_5;
    puVar29 = param_3;
    puVar25 = param_1;
    puVar18 = param_4;
    puVar4 = (uint *)(*(code *)PTR___gmpn_gcd_subdiv_step_00097118)(param_2);
  }
  else {
    uVar16 = param_2[(int)param_1 + -2];
    uVar23 = param_3[(int)param_1 + -2];
    if (-1 < (int)uVar3) {
      if (uVar3 < 0x10000) {
        iVar9 = 0x18;
        if (uVar3 < 0x100) {
          iVar9 = 0;
        }
        iVar24 = 9;
        if (uVar3 < 0x100) {
          iVar24 = 1;
        }
      }
      else {
        iVar9 = 8;
        if (uVar3 < 0x1000000) {
          iVar9 = 0x10;
        }
        iVar24 = 0x19;
        if (uVar3 < 0x1000000) {
          iVar24 = 0x11;
        }
      }
      uVar3 = iVar9 - (uint)(byte)PTR___gmpn_clz_tab_0009718c[uVar3 >> iVar24];
      uVar10 = 0x20 - uVar3;
      uVar13 = uVar13 << (uVar3 & 0x1f) | uVar16 >> (uVar10 & 0x1f);
      uVar16 = param_2[(int)param_1 + -3] >> (uVar10 & 0x1f) | uVar16 << (uVar3 & 0x1f);
      uVar20 = uVar20 << (uVar3 & 0x1f) | uVar23 >> (uVar10 & 0x1f);
      uVar23 = param_3[(int)param_1 + -3] >> (uVar10 & 0x1f) | uVar23 << (uVar3 & 0x1f);
    }
    unaff_s5 = auStack_3c;
    local_58 = (uint *)unaff_s5;
    iVar9 = (*(code *)PTR___gmpn_hgcd2_00097460)(uVar13,uVar16,uVar20,uVar23);
    if (iVar9 == 0) goto LAB_00052b18;
LAB_00052bb8:
    unaff_s5 = auStack_3c;
    (*(code *)PTR___gmpn_hgcd_matrix_mul_1_000973f4)(param_5,unaff_s5,param_6);
    if (param_1 != (uint *)0x0) {
      iVar9 = (int)param_1 + -1;
      uVar3 = *param_2;
      if (iVar9 == 0) {
        *param_6 = uVar3;
        puVar28 = param_6;
      }
      else {
        puVar28 = param_6;
        puVar29 = param_2 + 1;
        do {
          *puVar28 = uVar3;
          iVar9 = iVar9 + -1;
          uVar3 = *puVar29;
          puVar28 = puVar28 + 1;
          puVar29 = puVar29 + 1;
        } while (iVar9 != 0);
        param_6[(int)param_1 + -1] = uVar3;
        puVar28 = param_6 + (int)param_1 + -1;
      }
    }
    puVar29 = param_2;
    puVar25 = param_6;
    puVar18 = param_3;
    local_58 = param_1;
    puVar4 = (uint *)(*(code *)PTR___gmpn_matrix22_mul1_inverse_vector_00097488)(unaff_s5);
  }
  if (local_2c == *(uint **)puVar2) {
    return puVar4;
  }
  uVar39 = 0x52c64;
  puVar4 = local_2c;
  puVar33 = PTR___stack_chk_fail_000974d0;
  (*(code *)PTR___stack_chk_fail_000974d0)();
  iVar9 = local_54;
  apuStack_a8[0] = (uint *)(puVar33 + 0x4c3d0);
  puVar36 = auStack_c0;
  iStack_70 = param_5;
  piVar30 = *(int **)(puVar33 + 0x448d0);
  iVar24 = (int)puVar18 + local_54;
  puStack_74 = param_6;
  puStack_8c = puVar2;
  iStack_98 = 0;
  iStack_94 = *piVar30;
  puStack_90 = puVar28;
  puStack_88 = param_2;
  puStack_84 = param_3;
  puStack_80 = param_1;
  puStack_7c = unaff_s5;
  puStack_78 = param_4;
  uStack_6c = uVar39;
  if ((uint)(iVar24 * 4) < 0x7f01) {
    iVar32 = -(iVar24 * 4 + 7U & 0xfffffff8);
    puVar36 = auStack_c0 + iVar32;
    puVar19 = (uint *)((int)apuStack_a8 + iVar32);
    puVar28 = local_58;
  }
  else {
    apuStack_a8[3] = local_58;
    puVar19 = (uint *)(**(code **)(puVar33 + 0x44680))(&iStack_98);
    puVar28 = apuStack_a8[3];
  }
  pcVar34 = (code *)apuStack_a8[0][-0x1f63];
  *(int *)(puVar36 + 0x10) = iVar9;
  puVar17 = puVar25;
  puVar21 = puVar18;
  (*pcVar34)(puVar19);
  puVar31 = (uint *)(iVar24 - (uint)((int)puVar29 < iVar24));
  if (((puVar31 != (uint *)0x0) &&
      (puVar17 = puVar4, puVar21 = puVar19, puVar28 = puVar31,
      iVar24 = (*(code *)apuStack_a8[0][-0x1ecb])(puVar4), iVar24 != 0)) &&
     ((int)puVar31 < (int)puVar29)) {
    puVar14 = puVar4 + (int)puVar31;
    uVar3 = *puVar14;
    puVar17 = (uint *)(uVar3 - 1);
    *puVar14 = (uint)puVar17;
    puVar5 = puVar31;
    while ((uVar3 == 0 && (puVar5 = (uint *)((int)puVar5 + 1), puVar29 != puVar5))) {
      uVar3 = puVar14[1];
      puVar14 = puVar14 + 1;
      puVar17 = (uint *)(uVar3 - 1);
      *puVar14 = (uint)puVar17;
    }
  }
  if (iStack_98 != 0) {
    (*(code *)apuStack_a8[0][-0x1e8b])();
  }
  puVar5 = puVar29;
  if (((int)puVar18 < (int)puVar29) && (puVar4[(int)puVar29 + -1] == 0)) {
    puVar14 = puVar4 + (int)puVar29;
    do {
      puVar29 = (uint *)((int)puVar29 + -1);
      puVar5 = puVar18;
      if (puVar18 == puVar29) break;
      puVar1 = puVar14 + -2;
      puVar5 = puVar29;
      puVar14 = puVar14 + -1;
    } while (*puVar1 == 0);
  }
  pcVar34 = (code *)apuStack_a8[0][-0x1edc];
  if (iStack_94 == *piVar30) {
    return puVar5;
  }
  uVar39 = 0x52e68;
  iVar24 = iStack_94;
  (*pcVar34)();
  puVar38 = puVar36 + -0x88;
  puVar37 = puVar36 + -0x88;
  puVar6 = *(undefined4 **)(pcVar34 + 0x446d8);
  *(undefined1 **)(puVar36 + -8) = auStack_c0;
  *(uint **)(puVar36 + -0x10) = puVar19;
  *(undefined4 **)(puVar36 + -0x4c) = puVar6;
  *(uint **)(puVar36 + -0x20) = puVar18;
  *(uint **)(puVar36 + -0x24) = puVar4;
  *(uint **)(puVar36 + -0x28) = puVar29;
  *(undefined4 *)(puVar36 + -4) = uVar39;
  *(uint **)(puVar36 + -0xc) = puVar25;
  *(int *)(puVar36 + -0x14) = iVar9;
  *(uint **)(puVar36 + -0x18) = puVar31;
  *(int **)(puVar36 + -0x1c) = piVar30;
  *(code **)(puVar36 + -0x68) = pcVar34 + 0x4c1d8;
  *(undefined4 *)(puVar36 + -0x2c) = *puVar6;
  puVar29 = puVar28;
  puVar25 = puVar28;
  if (0 < (int)puVar28) {
    if (puVar17[(int)((int)puVar28 + -1)] == 0) {
      puVar18 = puVar17 + (int)puVar28;
      do {
        puVar25 = (uint *)((int)puVar25 + -1);
        if (puVar25 == (uint *)0x0) break;
        puVar4 = puVar18 + -2;
        puVar18 = puVar18 + -1;
      } while (*puVar4 == 0);
    }
    if (puVar21[(int)((int)puVar28 + -1)] == 0) {
      puVar18 = puVar21 + (int)puVar28;
      do {
        puVar29 = (uint *)((int)puVar29 + -1);
        if (puVar29 == (uint *)0x0) break;
        puVar4 = puVar18 + -2;
        puVar18 = puVar18 + -1;
      } while (*puVar4 == 0);
    }
  }
  iVar32 = *(int *)(iVar24 + 4);
  iVar9 = 8;
  do {
    iVar22 = iVar9 + -8;
    do {
      iVar12 = iVar32;
      if (0 < iVar32) {
        iVar7 = *(int *)(iVar24 + iVar22 + 8);
        iVar11 = *(int *)(iVar7 + iVar32 * 4 + -4);
        iVar7 = iVar7 + iVar32 * 4;
        while (iVar11 == 0) {
          iVar12 = iVar12 + -1;
          if (iVar12 == 0) break;
          iVar11 = *(int *)(iVar7 + -8);
          iVar7 = iVar7 + -4;
        }
      }
      iVar7 = iVar22 + -0x3c;
      iVar22 = iVar22 + 4;
      *(int *)(puVar36 + iVar7) = iVar12;
    } while (iVar9 != iVar22);
    iVar9 = iVar9 + 8;
    iVar22 = *(int *)(puVar36 + -0x34);
  } while (iVar9 != 0x18);
  iVar9 = *(int *)(puVar36 + -0x38);
  *(undefined4 *)(puVar36 + -0x40) = 0;
  if (iVar9 == 0) {
    uVar39 = *(undefined4 *)(iVar24 + 0x10);
    *(int *)(puVar36 + -0x74) = iVar22;
    *(undefined4 *)(puVar36 + -0x78) = uVar39;
    puVar28 = puVar21;
    puVar18 = puVar29;
    puVar4 = puVar17;
LAB_0005309c:
    puVar29 = (uint *)FUN_00052c70(puVar28,puVar18,puVar4,puVar25);
    iVar9 = *(int *)(puVar36 + -0x68);
LAB_000530b4:
    pcVar34 = *(code **)(iVar9 + -0x7a2c);
    puVar38 = puVar37;
    if (*(int *)(puVar36 + -0x40) != 0) goto LAB_00053478;
  }
  else {
    if (iVar22 == 0) {
      uVar39 = *(undefined4 *)(iVar24 + 0xc);
      *(int *)(puVar36 + -0x74) = iVar9;
      *(undefined4 *)(puVar36 + -0x78) = uVar39;
      puVar28 = puVar17;
      puVar18 = puVar25;
      puVar4 = puVar21;
      puVar25 = puVar29;
      goto LAB_0005309c;
    }
    iVar7 = *(int *)(puVar36 + -0x30);
    pcVar34 = *(code **)(pcVar34 + 0x4454c);
    iVar12 = (int)puVar25 - *(int *)(puVar36 + -0x3c);
    *(int *)(puVar36 + -0x50) = *(int *)(puVar36 + -0x3c);
    *(int *)(puVar36 + -0x44) = iVar9;
    if ((int)puVar29 - iVar22 <= iVar12) {
      iVar12 = (int)puVar29 - iVar22;
    }
    iVar11 = (int)puVar25 - iVar9;
    if ((int)puVar29 - iVar7 <= (int)puVar25 - iVar9) {
      iVar11 = (int)puVar29 - iVar7;
    }
    puVar29 = (uint *)(iVar11 + 1);
    if (iVar11 + 1 <= iVar12 + 1) {
      puVar29 = (uint *)(iVar12 + 1);
    }
    puVar25 = (uint *)(*pcVar34)((int)puVar29 + 1);
    iVar9 = (int)puVar25 >> 1;
    iVar12 = *(int *)(puVar36 + -0x68);
    uVar39 = *(undefined4 *)(puVar36 + -0x44);
    if (iVar9 < (int)puVar25) {
      if (iVar32 <= iVar9) {
        uVar13 = ((int)puVar25 * 3 + iVar9 + 4) * 4;
        uVar3 = uVar13 + 7;
        if (0x7f00 < uVar13) {
          pcVar34 = *(code **)(iVar12 + -0x7d50);
          goto LAB_0005305c;
        }
        goto LAB_00053148;
      }
      uVar13 = ((int)puVar25 * 4 + 4) * 4;
      uVar3 = uVar13 + 7;
      if (uVar13 < 0x7f01) goto LAB_00053148;
      pcVar34 = *(code **)(iVar12 + -0x7d50);
LAB_0005305c:
      *(uint **)(puVar36 + -0x48) = puVar25;
      *(undefined4 *)(puVar36 + -0x44) = uVar39;
      puVar4 = (uint *)(*pcVar34)(puVar36 + -0x40);
      iVar12 = *(int *)(puVar36 + -0x68);
      puVar25 = *(uint **)(puVar36 + -0x48);
      uVar39 = *(undefined4 *)(puVar36 + -0x44);
    }
    else {
      uVar3 = ((int)puVar25 * 3 + 4) * 4;
      pcVar34 = *(code **)(iVar12 + -0x7d50);
      if (0x7f00 < uVar3) goto LAB_0005305c;
      uVar3 = uVar3 + 7;
LAB_00053148:
      puVar38 = puVar36 + -(uVar3 & 0xfffffff8) + -0x88;
      puVar4 = (uint *)(puVar36 + -(uVar3 & 0xfffffff8) + -0x68);
    }
    *(uint **)(puVar36 + -0x44) = puVar4 + (int)puVar25;
    *(uint **)(puVar36 + -0x48) = puVar4 + (int)puVar25 + (int)puVar25;
    if ((int)puVar25 < (int)puVar28) {
      pcVar34 = *(code **)(iVar12 + -0x7d0c);
      puVar18 = (uint *)((int)puVar28 - (int)puVar25);
      *(undefined4 *)(puVar36 + -0x5c) = uVar39;
      *(uint **)(puVar36 + -0x58) = puVar25;
      *(int *)(puVar36 + -0x54) = (int)puVar25 * 4;
      iVar9 = (*pcVar34)(puVar17,puVar17,puVar17 + (int)puVar25,puVar18);
      iVar12 = *(int *)(puVar36 + -0x68);
      iVar32 = *(int *)(puVar36 + -0x54);
      puVar28 = *(uint **)(puVar36 + -0x58);
      uVar39 = *(undefined4 *)(puVar36 + -0x5c);
      if (iVar9 == 0) {
LAB_0005359c:
        pcVar34 = *(code **)(iVar12 + -0x7d0c);
      }
      else {
        puVar25 = puVar17;
        if ((int)puVar28 <= (int)puVar18) {
LAB_00053588:
          do {
            uVar3 = *puVar25;
            *puVar25 = uVar3 + 1;
            puVar25 = puVar25 + 1;
          } while (uVar3 + 1 == 0);
          goto LAB_0005359c;
        }
        puVar31 = puVar17 + (int)puVar18;
        uVar3 = *puVar31;
        *puVar31 = uVar3 + 1;
        puVar19 = puVar18;
        if (uVar3 + 1 == 0) {
          do {
            puVar19 = (uint *)((int)puVar19 + 1);
            if (puVar28 == puVar19) goto LAB_00053588;
            uVar3 = puVar31[1];
            puVar31 = puVar31 + 1;
            *puVar31 = uVar3 + 1;
          } while (uVar3 + 1 == 0);
          goto LAB_0005359c;
        }
        pcVar34 = *(code **)(iVar12 + -0x7d0c);
      }
      *(uint **)(puVar36 + -0x58) = puVar28;
      *(undefined4 *)(puVar36 + -0x54) = uVar39;
      iVar9 = (*pcVar34)(puVar21,puVar21,(int)puVar21 + iVar32,puVar18);
      iVar12 = *(int *)(puVar36 + -0x68);
      uVar39 = *(undefined4 *)(puVar36 + -0x54);
      puVar25 = *(uint **)(puVar36 + -0x58);
      puVar28 = puVar25;
      if (iVar9 != 0) {
        puVar19 = puVar21;
        if ((int)puVar18 < (int)puVar25) {
          puVar31 = puVar21 + (int)puVar18;
          uVar3 = *puVar31 + 1;
          *puVar31 = uVar3;
          while (uVar3 == 0) {
            puVar18 = (uint *)((int)puVar18 + 1);
            if (puVar25 == puVar18) goto LAB_0005361c;
            puVar5 = puVar31 + 1;
            puVar31 = puVar31 + 1;
            uVar3 = *puVar5 + 1;
            *puVar31 = uVar3;
          }
        }
        else {
LAB_0005361c:
          do {
            uVar3 = *puVar19;
            *puVar19 = uVar3 + 1;
            puVar19 = puVar19 + 1;
          } while (uVar3 + 1 == 0);
        }
      }
    }
    uVar8 = *(undefined4 *)(iVar24 + 0x14);
    pcVar34 = *(code **)(iVar12 + -0x7cd8);
    *(undefined4 *)(puVar36 + -0x5c) = uVar39;
    *(uint **)(puVar36 + -0x54) = puVar25;
    *(undefined4 *)(puVar38 + 0x18) = *(undefined4 *)(puVar36 + -0x48);
    *(undefined4 *)(puVar38 + 0x10) = uVar8;
    *(int *)(puVar38 + 0x14) = iVar7;
    (*pcVar34)(puVar4,puVar25,puVar17,puVar28);
    uVar39 = *(undefined4 *)(iVar24 + 0xc);
    uVar26 = *(undefined4 *)(puVar36 + -0x54);
    uVar27 = *(undefined4 *)(puVar36 + -0x5c);
    uVar8 = *(undefined4 *)(puVar36 + -0x48);
    pcVar34 = *(code **)(*(int *)(puVar36 + -0x68) + -0x7cd8);
    uVar15 = *(undefined4 *)(puVar36 + -0x44);
    *(undefined4 *)(puVar36 + -0x58) = uVar26;
    *(undefined4 *)(puVar38 + 0x14) = uVar27;
    *(undefined4 *)(puVar36 + -0x54) = uVar27;
    *(undefined4 *)(puVar38 + 0x10) = uVar39;
    *(undefined4 *)(puVar38 + 0x18) = uVar8;
    (*pcVar34)(uVar15,uVar26,puVar21,puVar28);
    iVar9 = *(int *)(puVar36 + -0x58);
    iVar12 = *(int *)(puVar36 + -0x68);
    iVar32 = *(int *)(puVar36 + -0x54);
    if ((iVar7 + (int)puVar28 < iVar9) && (iVar7 != iVar9 - (int)puVar28)) {
      iVar11 = (iVar9 - (int)puVar28) - iVar7;
      puVar25 = puVar4 + (int)(iVar7 + (int)puVar28);
      do {
        iVar11 = iVar11 + -1;
        *puVar25 = 0;
        puVar25 = puVar25 + 1;
      } while (iVar11 != 0);
    }
    pcVar34 = *(code **)(iVar12 + -0x7b2c);
    if (iVar32 + (int)puVar28 < iVar9) {
      if (iVar32 != iVar9 - (int)puVar28) {
        iVar7 = (iVar9 - (int)puVar28) - iVar32;
        puVar6 = (undefined4 *)(*(int *)(puVar36 + -0x44) + (int)(iVar32 + (int)puVar28) * 4);
        do {
          iVar7 = iVar7 + -1;
          *puVar6 = 0;
          puVar6 = puVar6 + 1;
        } while (iVar7 != 0);
        pcVar34 = *(code **)(iVar12 + -0x7b2c);
      }
    }
    *(int *)(puVar36 + -0x54) = iVar9;
    uVar3 = (*pcVar34)(puVar4,puVar4,*(undefined4 *)(puVar36 + -0x44),iVar9);
    uVar13 = *puVar4;
    iVar9 = *(int *)(puVar36 + -0x68);
    uVar39 = *(undefined4 *)(puVar36 + -0x54);
    *puVar4 = uVar13 - uVar3;
    puVar25 = puVar4;
    if (uVar13 < uVar3) {
      do {
        puVar25 = puVar25 + 1;
        uVar3 = *puVar25;
        *puVar25 = uVar3 - 1;
      } while (uVar3 == 0);
    }
    uVar8 = *(undefined4 *)(iVar24 + 0x10);
    pcVar34 = *(code **)(iVar9 + -0x7cd8);
    uVar15 = *(undefined4 *)(puVar36 + -0x44);
    *(undefined4 *)(puVar36 + -0x54) = uVar39;
    *(undefined4 *)(puVar38 + 0x18) = *(undefined4 *)(puVar36 + -0x48);
    *(int *)(puVar38 + 0x14) = iVar22;
    *(undefined4 *)(puVar38 + 0x10) = uVar8;
    (*pcVar34)(uVar15,uVar39,puVar17,puVar28);
    iVar9 = *(int *)(puVar36 + -0x68);
    uVar39 = *(undefined4 *)(puVar36 + -0x54);
    if (puVar29 != (uint *)0x0) {
      iVar32 = (int)puVar29 + -1;
      uVar3 = *puVar4;
      puVar18 = puVar17;
      puVar25 = puVar4;
      if (iVar32 == 0) {
        *puVar17 = uVar3;
      }
      else {
        do {
          *puVar18 = uVar3;
          iVar32 = iVar32 + -1;
          uVar3 = puVar25[1];
          puVar18 = puVar18 + 1;
          puVar25 = puVar25 + 1;
        } while (iVar32 != 0);
        puVar17[(int)puVar29 + -1] = uVar3;
      }
    }
    uVar8 = *(undefined4 *)(iVar24 + 8);
    pcVar34 = *(code **)(iVar9 + -0x7cd8);
    *(undefined4 *)(puVar38 + 0x18) = *(undefined4 *)(puVar36 + -0x48);
    *(undefined4 *)(puVar36 + -0x48) = uVar39;
    *(undefined4 *)(puVar38 + 0x10) = uVar8;
    *(undefined4 *)(puVar38 + 0x14) = *(undefined4 *)(puVar36 + -0x50);
    (*pcVar34)(puVar4,uVar39,puVar21,puVar28);
    iVar9 = *(int *)(puVar36 + -0x48);
    iVar32 = *(int *)(puVar36 + -0x68);
    if ((int)puVar28 + iVar22 < iVar9) {
      if (iVar22 != iVar9 - (int)puVar28) {
        iVar12 = (iVar9 - (int)puVar28) - iVar22;
        puVar6 = (undefined4 *)(*(int *)(puVar36 + -0x44) + (int)((int)puVar28 + iVar22) * 4);
        do {
          iVar12 = iVar12 + -1;
          *puVar6 = 0;
          puVar6 = puVar6 + 1;
        } while (iVar12 != 0);
      }
    }
    pcVar34 = *(code **)(iVar32 + -0x7b2c);
    if (*(int *)(puVar36 + -0x50) + (int)puVar28 < iVar9) {
      if (*(int *)(puVar36 + -0x50) != iVar9 - (int)puVar28) {
        iVar22 = (iVar9 - (int)puVar28) - *(int *)(puVar36 + -0x50);
        puVar28 = puVar4 + (int)(*(int *)(puVar36 + -0x50) + (int)puVar28);
        do {
          iVar22 = iVar22 + -1;
          *puVar28 = 0;
          puVar28 = puVar28 + 1;
        } while (iVar22 != 0);
        pcVar34 = *(code **)(iVar32 + -0x7b2c);
      }
    }
    uVar3 = (*pcVar34)(puVar4,puVar4,*(undefined4 *)(puVar36 + -0x44),iVar9);
    uVar13 = *puVar4;
    iVar9 = *(int *)(puVar36 + -0x68);
    puVar18 = (uint *)(uVar13 - uVar3);
    *puVar4 = (uint)puVar18;
    puVar28 = puVar4;
    if (uVar13 < uVar3) {
      do {
        puVar28 = puVar28 + 1;
        uVar3 = *puVar28;
        puVar18 = (uint *)(uVar3 - 1);
        *puVar28 = (uint)puVar18;
      } while (uVar3 == 0);
    }
    iVar32 = (int)puVar29 + -1;
    if (puVar29 == (uint *)0x0) {
      iVar32 = -4;
    }
    else {
      puVar18 = (uint *)*puVar4;
      puVar28 = puVar21;
      if (iVar32 != 0) {
        do {
          puVar4 = puVar4 + 1;
          *puVar28 = (uint)puVar18;
          iVar32 = iVar32 + -1;
          puVar18 = (uint *)*puVar4;
          puVar28 = puVar28 + 1;
        } while (iVar32 != 0);
        puVar28 = puVar21 + (int)puVar29 + -1;
      }
      *puVar28 = (uint)puVar18;
      iVar32 = (int)puVar29 * 4 + -4;
    }
    puVar37 = puVar38;
    if (*(int *)((int)puVar17 + iVar32) != 0 || *(int *)((int)puVar21 + iVar32) != 0)
    goto LAB_000530b4;
    puVar17 = puVar17 + (int)puVar29 + -2;
    puVar21 = puVar21 + (int)puVar29 + -2;
    do {
      uVar3 = *puVar17;
      puVar29 = (uint *)((int)puVar29 + -1);
      uVar13 = *puVar21;
      puVar17 = puVar17 + -1;
      puVar21 = puVar21 + -1;
    } while (uVar3 == 0 && uVar13 == 0);
    piVar30 = *(int **)(puVar36 + -0x4c);
    if (*(int *)(puVar36 + -0x40) == 0) goto LAB_000530c4;
    pcVar34 = *(code **)(iVar9 + -0x7a2c);
LAB_00053478:
    (*pcVar34)();
    iVar9 = *(int *)(puVar36 + -0x68);
    puVar38 = puVar37;
  }
  piVar30 = *(int **)(puVar36 + -0x4c);
LAB_000530c4:
  iVar32 = *(int *)(puVar36 + -0x2c);
  pcVar34 = *(code **)(iVar9 + -0x7b70);
  if (iVar32 == *piVar30) {
    return puVar29;
  }
  pcVar40 = __gmpn_hgcd_reduce_itch;
  (*pcVar34)();
  pcVar35 = *(code **)(pcVar34 + 0x43e08);
  *(uint **)(puVar38 + -0xc) = puVar21;
  *(int *)(puVar38 + -8) = iVar24;
  *(uint **)(puVar38 + -0x10) = puVar17;
  *(code **)(puVar38 + -0x18) = pcVar34 + 0x4b9e4;
  *(code **)(puVar38 + -4) = pcVar40;
  puVar28 = (uint *)(*pcVar35)(iVar32 - (int)puVar18);
  if (999 < iVar32) {
    return (uint *)((iVar32 - (int)puVar18) * 2 + (int)puVar28);
  }
  puVar18 = (uint *)((int)puVar18 + iVar32 + -1);
  if ((int)puVar28 <= (int)puVar18) {
    puVar28 = puVar18;
  }
  return puVar28;
}


lui gp,0x5
addiu gp,gp,-0x3990
addu gp,gp,t9
addiu sp,sp,-0x68
sw s1,0x44(sp)
sw s0,0x40(sp)
sll s0,a0,0x2
sw s4,0x50(sp)
or s4,a0,zero
lw s1,-0x7b00(gp)
addiu s0,s0,-0x4
sw s3,0x4c(sp)
or s3,a2,zero
addu v1,a1,s0
sw gp,0x20(sp)
addu v0,a2,s0
sw s8,0x60(sp)
lw a0,0x0(s1)
lw s8,0x78(sp)
lw a2,0x0(v0)
sw a0,0x3c(sp)
sw s7,0x5c(sp)
sw s6,0x58(sp)
or s6,a3,zero
sw s2,0x48(sp)
or s2,a1,zero
sw ra,0x64(sp)
sw s5,0x54(sp)
lw a0,0x0(v1)
addiu v1,a3,0x1
lw s7,0x7c(sp)
beq v1,s4,0x00052b84
_or v0,a0,a2
addiu v1,s0,-0x4
addu a1,a1,v1
addu v1,s3,v1
lw a1,0x0(a1)
bltz v0,0x00052b00
_lw a3,0x0(v1)
lui v1,0x1
sltu v1,v0,v1
bne v1,zero,0x00052c2c
_li t1,0x20
lui t0,0x100
li t1,0x10
li v1,0x8
sltu t0,v0,t0
movn v1,t1,t0
li t2,0x11
li t1,0x19
movn t1,t2,t0
or t0,t1,zero
lw t1,-0x7eb4(gp)
srlv v0,v0,t0
addiu t0,s0,-0x8
addu v0,t1,v0
addu t2,s2,t0
addu t0,s3,t0
lbu v0,0x0(v0)
lw t1,0x0(t2)
lw t0,0x0(t0)
subu v0,v1,v0
li v1,0x20
sllv a0,a0,v0
subu v1,v1,v0
sllv a2,a2,v0
srlv t3,a1,v1
srlv t2,a3,v1
srlv t1,t1,v1
sllv a1,a1,v0
srlv v1,t0,v1
sllv v0,a3,v0
or a0,a0,t3
or a1,t1,a1
or a2,a2,t2
or a3,v1,v0
lw t9,-0x7be0(gp)
addiu s5,sp,0x2c
jalr t9
_sw s5,0x10(sp)
bne v0,zero,0x00052bb8
_lw gp,0x20(sp)
lw v0,-0x7fc4(gp)
or a3,s6,zero
lw t9,-0x7f28(gp)
or a2,s4,zero
sw s7,0x18(sp)
or a1,s3,zero
addiu v0,v0,0x2960
sw s8,0x14(sp)
or a0,s2,zero
jalr t9
_sw v0,0x10(sp)
lw gp,0x20(sp)
lw a0,0x3c(sp)
lw v1,0x0(s1)
bne a0,v1,0x00052c58
_lw ra,0x64(sp)
lw s8,0x60(sp)
lw s7,0x5c(sp)
lw s6,0x58(sp)
lw s5,0x54(sp)
lw s4,0x50(sp)
lw s3,0x4c(sp)
lw s2,0x48(sp)
lw s1,0x44(sp)
lw s0,0x40(sp)
jr ra
_addiu sp,sp,0x68
sltiu v0,v0,0x4
bne v0,zero,0x00052b18
_addiu v0,s0,-0x4
lw t9,-0x7be0(gp)
addiu s5,sp,0x2c
addu v1,a1,v0
addu v0,s3,v0
lw a1,0x0(v1)
lw a3,0x0(v0)
jalr t9
_sw s5,0x10(sp)
beq v0,zero,0x00052b18
_lw gp,0x20(sp)
lw t9,-0x7c4c(gp)
or a2,s7,zero
or a1,s5,zero
jalr t9
_or a0,s8,zero
beq s4,zero,0x00052c08
_lw gp,0x20(sp)
addiu v0,s4,-0x1
beq v0,zero,0x00052c4c
_lw a1,0x0(s2)
addiu a0,s2,0x4
or v1,s7,zero
addiu v1,v1,0x4
sw a1,-0x4(v1)
addiu a0,a0,0x4
addiu v0,v0,-0x1
bne v0,zero,0x00052be8
_lw a1,-0x4(a0)
addu s0,s7,s0
sw a1,0x0(s0)
lw t9,-0x7bb8(gp)
or a3,s3,zero
sw s4,0x10(sp)
or a2,s7,zero
or a1,s2,zero
jalr t9
_or a0,s5,zero
b 0x00052b48
_lw gp,0x20(sp)
li v1,0x18
sltiu t0,v0,0x100
movn v1,t1,t0
li t2,0x1
li t1,0x9
movn t1,t2,t0
b 0x00052aa0
_or t0,t1,zero
or s0,s7,zero
b 0x00052c08
_sw a1,0x0(s0)
lw t9,-0x7b70(gp)
jalr t9
_nop
nop
nop
nop
(translation_unit "uint * __gmpn_hgcd_step(uint *param_1,uint *param_2,uint *param_3,uint *param_4,int param_5,\n                       uint *param_6)\n\n{\n  uint *puVar1;\n  undefined *puVar2;\n  uint uVar3;\n  uint *puVar4;\n  uint *puVar5;\n  undefined4 *puVar6;\n  int iVar7;\n  undefined4 uVar8;\n  int iVar9;\n  uint uVar10;\n  int iVar11;\n  int iVar12;\n  uint uVar13;\n  uint *puVar14;\n  undefined4 uVar15;\n  uint uVar16;\n  uint *puVar17;\n  uint *puVar18;\n  uint *puVar19;\n  uint uVar20;\n  uint *puVar21;\n  int iVar22;\n  uint uVar23;\n  int iVar24;\n  uint *puVar25;\n  undefined4 uVar26;\n  undefined4 uVar27;\n  uint *puVar28;\n  uint *puVar29;\n  int *piVar30;\n  uint *puVar31;\n  int iVar32;\n  undefined1 *unaff_s5;\n  undefined *puVar33;\n  code *pcVar34;\n  code *pcVar35;\n  undefined1 *puVar36;\n  undefined1 *puVar37;\n  undefined1 *puVar38;\n  undefined4 uVar39;\n  code *pcVar40;\n  undefined1 auStack_c0 [24];\n  uint *apuStack_a8 [4];\n  int iStack_98;\n  int iStack_94;\n  uint *puStack_90;\n  undefined *puStack_8c;\n  uint *puStack_88;\n  uint *puStack_84;\n  uint *puStack_80;\n  undefined1 *puStack_7c;\n  uint *puStack_78;\n  uint *puStack_74;\n  int iStack_70;\n  undefined4 uStack_6c;\n  uint *local_58;\n  int local_54;\n  uint *local_50;\n  undefined1 auStack_3c [16];\n  uint *local_2c;\n  \n  puVar2 = PTR___stack_chk_guard_00097540;\n  puVar28 = (uint *)((int)param_1 * 4 + -4);\n  local_2c = *(uint **)PTR___stack_chk_guard_00097540;\n  uVar20 = param_3[(int)param_1 + -1];\n  uVar13 = param_2[(int)param_1 + -1];\n  uVar3 = uVar13 | uVar20;\n  if ((uint *)((int)param_4 + 1) == param_1) {\n    if (3 < uVar3) {\n      unaff_s5 = auStack_3c;\n      local_58 = (uint *)unaff_s5;\n      iVar9 = (*(code *)PTR___gmpn_hgcd2_00097460)\n                        (uVar13,param_2[(int)param_1 + -2],uVar20,param_3[(int)param_1 + -2]);\n      if (iVar9 != 0) goto LAB_00052bb8;\n    }\nLAB_00052b18:\n    local_50 = param_6;\n    local_58 = (uint *)(PTR_LAB_0009707c + 0x2960);\n    local_54 = param_5;\n    puVar29 = param_3;\n    puVar25 = param_1;\n    puVar18 = param_4;\n    puVar4 = (uint *)(*(code *)PTR___gmpn_gcd_subdiv_step_00097118)(param_2);\n  }\n  else {\n    uVar16 = param_2[(int)param_1 + -2];\n    uVar23 = param_3[(int)param_1 + -2];\n    if (-1 < (int)uVar3) {\n      if (uVar3 < 0x10000) {\n        iVar9 = 0x18;\n        if (uVar3 < 0x100) {\n          iVar9 = 0;\n        }\n        iVar24 = 9;\n        if (uVar3 < 0x100) {\n          iVar24 = 1;\n        }\n      }\n      else {\n        iVar9 = 8;\n        if (uVar3 < 0x1000000) {\n          iVar9 = 0x10;\n        }\n        iVar24 = 0x19;\n        if (uVar3 < 0x1000000) {\n          iVar24 = 0x11;\n        }\n      }\n      uVar3 = iVar9 - (uint)(byte)PTR___gmpn_clz_tab_0009718c[uVar3 >> iVar24];\n      uVar10 = 0x20 - uVar3;\n      uVar13 = uVar13 << (uVar3 & 0x1f) | uVar16 >> (uVar10 & 0x1f);\n      uVar16 = param_2[(int)param_1 + -3] >> (uVar10 & 0x1f) | uVar16 << (uVar3 & 0x1f);\n      uVar20 = uVar20 << (uVar3 & 0x1f) | uVar23 >> (uVar10 & 0x1f);\n      uVar23 = param_3[(int)param_1 + -3] >> (uVar10 & 0x1f) | uVar23 << (uVar3 & 0x1f);\n    }\n    unaff_s5 = auStack_3c;\n    local_58 = (uint *)unaff_s5;\n    iVar9 = (*(code *)PTR___gmpn_hgcd2_00097460)(uVar13,uVar16,uVar20,uVar23);\n    if (iVar9 == 0) goto LAB_00052b18;\nLAB_00052bb8:\n    unaff_s5 = auStack_3c;\n    (*(code *)PTR___gmpn_hgcd_matrix_mul_1_000973f4)(param_5,unaff_s5,param_6);\n    if (param_1 != (uint *)0x0) {\n      iVar9 = (int)param_1 + -1;\n      uVar3 = *param_2;\n      if (iVar9 == 0) {\n        *param_6 = uVar3;\n        puVar28 = param_6;\n      }\n      else {\n        puVar28 = param_6;\n        puVar29 = param_2 + 1;\n        do {\n          *puVar28 = uVar3;\n          iVar9 = iVar9 + -1;\n          uVar3 = *puVar29;\n          puVar28 = puVar28 + 1;\n          puVar29 = puVar29 + 1;\n        } while (iVar9 != 0);\n        param_6[(int)param_1 + -1] = uVar3;\n        puVar28 = param_6 + (int)param_1 + -1;\n      }\n    }\n    puVar29 = param_2;\n    puVar25 = param_6;\n    puVar18 = param_3;\n    local_58 = param_1;\n    puVar4 = (uint *)(*(code *)PTR___gmpn_matrix22_mul1_inverse_vector_00097488)(unaff_s5);\n  }\n  if (local_2c == *(uint **)puVar2) {\n    return puVar4;\n  }\n  uVar39 = 0x52c64;\n  puVar4 = local_2c;\n  puVar33 = PTR___stack_chk_fail_000974d0;\n  (*(code *)PTR___stack_chk_fail_000974d0)();\n  iVar9 = local_54;\n  apuStack_a8[0] = (uint *)(puVar33 + 0x4c3d0);\n  puVar36 = auStack_c0;\n  iStack_70 = param_5;\n  piVar30 = *(int **)(puVar33 + 0x448d0);\n  iVar24 = (int)puVar18 + local_54;\n  puStack_74 = param_6;\n  puStack_8c = puVar2;\n  iStack_98 = 0;\n  iStack_94 = *piVar30;\n  puStack_90 = puVar28;\n  puStack_88 = param_2;\n  puStack_84 = param_3;\n  puStack_80 = param_1;\n  puStack_7c = unaff_s5;\n  puStack_78 = param_4;\n  uStack_6c = uVar39;\n  if ((uint)(iVar24 * 4) < 0x7f01) {\n    iVar32 = -(iVar24 * 4 + 7U & 0xfffffff8);\n    puVar36 = auStack_c0 + iVar32;\n    puVar19 = (uint *)((int)apuStack_a8 + iVar32);\n    puVar28 = local_58;\n  }\n  else {\n    apuStack_a8[3] = local_58;\n    puVar19 = (uint *)(**(code **)(puVar33 + 0x44680))(&iStack_98);\n    puVar28 = apuStack_a8[3];\n  }\n  pcVar34 = (code *)apuStack_a8[0][-0x1f63];\n  *(int *)(puVar36 + 0x10) = iVar9;\n  puVar17 = puVar25;\n  puVar21 = puVar18;\n  (*pcVar34)(puVar19);\n  puVar31 = (uint *)(iVar24 - (uint)((int)puVar29 < iVar24));\n  if (((puVar31 != (uint *)0x0) &&\n      (puVar17 = puVar4, puVar21 = puVar19, puVar28 = puVar31,\n      iVar24 = (*(code *)apuStack_a8[0][-0x1ecb])(puVar4), iVar24 != 0)) &&\n     ((int)puVar31 < (int)puVar29)) {\n    puVar14 = puVar4 + (int)puVar31;\n    uVar3 = *puVar14;\n    puVar17 = (uint *)(uVar3 - 1);\n    *puVar14 = (uint)puVar17;\n    puVar5 = puVar31;\n    while ((uVar3 == 0 && (puVar5 = (uint *)((int)puVar5 + 1), puVar29 != puVar5))) {\n      uVar3 = puVar14[1];\n      puVar14 = puVar14 + 1;\n      puVar17 = (uint *)(uVar3 - 1);\n      *puVar14 = (uint)puVar17;\n    }\n  }\n  if (iStack_98 != 0) {\n    (*(code *)apuStack_a8[0][-0x1e8b])();\n  }\n  puVar5 = puVar29;\n  if (((int)puVar18 < (int)puVar29) && (puVar4[(int)puVar29 + -1] == 0)) {\n    puVar14 = puVar4 + (int)puVar29;\n    do {\n      puVar29 = (uint *)((int)puVar29 + -1);\n      puVar5 = puVar18;\n      if (puVar18 == puVar29) break;\n      puVar1 = puVar14 + -2;\n      puVar5 = puVar29;\n      puVar14 = puVar14 + -1;\n    } while (*puVar1 == 0);\n  }\n  pcVar34 = (code *)apuStack_a8[0][-0x1edc];\n  if (iStack_94 == *piVar30) {\n    return puVar5;\n  }\n  uVar39 = 0x52e68;\n  iVar24 = iStack_94;\n  (*pcVar34)();\n  puVar38 = puVar36 + -0x88;\n  puVar37 = puVar36 + -0x88;\n  puVar6 = *(undefined4 **)(pcVar34 + 0x446d8);\n  *(undefined1 **)(puVar36 + -8) = auStack_c0;\n  *(uint **)(puVar36 + -0x10) = puVar19;\n  *(undefined4 **)(puVar36 + -0x4c) = puVar6;\n  *(uint **)(puVar36 + -0x20) = puVar18;\n  *(uint **)(puVar36 + -0x24) = puVar4;\n  *(uint **)(puVar36 + -0x28) = puVar29;\n  *(undefined4 *)(puVar36 + -4) = uVar39;\n  *(uint **)(puVar36 + -0xc) = puVar25;\n  *(int *)(puVar36 + -0x14) = iVar9;\n  *(uint **)(puVar36 + -0x18) = puVar31;\n  *(int **)(puVar36 + -0x1c) = piVar30;\n  *(code **)(puVar36 + -0x68) = pcVar34 + 0x4c1d8;\n  *(undefined4 *)(puVar36 + -0x2c) = *puVar6;\n  puVar29 = puVar28;\n  puVar25 = puVar28;\n  if (0 < (int)puVar28) {\n    if (puVar17[(int)((int)puVar28 + -1)] == 0) {\n      puVar18 = puVar17 + (int)puVar28;\n      do {\n        puVar25 = (uint *)((int)puVar25 + -1);\n        if (puVar25 == (uint *)0x0) break;\n        puVar4 = puVar18 + -2;\n        puVar18 = puVar18 + -1;\n      } while (*puVar4 == 0);\n    }\n    if (puVar21[(int)((int)puVar28 + -1)] == 0) {\n      puVar18 = puVar21 + (int)puVar28;\n      do {\n        puVar29 = (uint *)((int)puVar29 + -1);\n        if (puVar29 == (uint *)0x0) break;\n        puVar4 = puVar18 + -2;\n        puVar18 = puVar18 + -1;\n      } while (*puVar4 == 0);\n    }\n  }\n  iVar32 = *(int *)(iVar24 + 4);\n  iVar9 = 8;\n  do {\n    iVar22 = iVar9 + -8;\n    do {\n      iVar12 = iVar32;\n      if (0 < iVar32) {\n        iVar7 = *(int *)(iVar24 + iVar22 + 8);\n        iVar11 = *(int *)(iVar7 + iVar32 * 4 + -4);\n        iVar7 = iVar7 + iVar32 * 4;\n        while (iVar11 == 0) {\n          iVar12 = iVar12 + -1;\n          if (iVar12 == 0) break;\n          iVar11 = *(int *)(iVar7 + -8);\n          iVar7 = iVar7 + -4;\n        }\n      }\n      iVar7 = iVar22 + -0x3c;\n      iVar22 = iVar22 + 4;\n      *(int *)(puVar36 + iVar7) = iVar12;\n    } while (iVar9 != iVar22);\n    iVar9 = iVar9 + 8;\n    iVar22 = *(int *)(puVar36 + -0x34);\n  } while (iVar9 != 0x18);\n  iVar9 = *(int *)(puVar36 + -0x38);\n  *(undefined4 *)(puVar36 + -0x40) = 0;\n  if (iVar9 == 0) {\n    uVar39 = *(undefined4 *)(iVar24 + 0x10);\n    *(int *)(puVar36 + -0x74) = iVar22;\n    *(undefined4 *)(puVar36 + -0x78) = uVar39;\n    puVar28 = puVar21;\n    puVar18 = puVar29;\n    puVar4 = puVar17;\nLAB_0005309c:\n    puVar29 = (uint *)FUN_00052c70(puVar28,puVar18,puVar4,puVar25);\n    iVar9 = *(int *)(puVar36 + -0x68);\nLAB_000530b4:\n    pcVar34 = *(code **)(iVar9 + -0x7a2c);\n    puVar38 = puVar37;\n    if (*(int *)(puVar36 + -0x40) != 0) goto LAB_00053478;\n  }\n  else {\n    if (iVar22 == 0) {\n      uVar39 = *(undefined4 *)(iVar24 + 0xc);\n      *(int *)(puVar36 + -0x74) = iVar9;\n      *(undefined4 *)(puVar36 + -0x78) = uVar39;\n      puVar28 = puVar17;\n      puVar18 = puVar25;\n      puVar4 = puVar21;\n      puVar25 = puVar29;\n      goto LAB_0005309c;\n    }\n    iVar7 = *(int *)(puVar36 + -0x30);\n    pcVar34 = *(code **)(pcVar34 + 0x4454c);\n    iVar12 = (int)puVar25 - *(int *)(puVar36 + -0x3c);\n    *(int *)(puVar36 + -0x50) = *(int *)(puVar36 + -0x3c);\n    *(int *)(puVar36 + -0x44) = iVar9;\n    if ((int)puVar29 - iVar22 <= iVar12) {\n      iVar12 = (int)puVar29 - iVar22;\n    }\n    iVar11 = (int)puVar25 - iVar9;\n    if ((int)puVar29 - iVar7 <= (int)puVar25 - iVar9) {\n      iVar11 = (int)puVar29 - iVar7;\n    }\n    puVar29 = (uint *)(iVar11 + 1);\n    if (iVar11 + 1 <= iVar12 + 1) {\n      puVar29 = (uint *)(iVar12 + 1);\n    }\n    puVar25 = (uint *)(*pcVar34)((int)puVar29 + 1);\n    iVar9 = (int)puVar25 >> 1;\n    iVar12 = *(int *)(puVar36 + -0x68);\n    uVar39 = *(undefined4 *)(puVar36 + -0x44);\n    if (iVar9 < (int)puVar25) {\n      if (iVar32 <= iVar9) {\n        uVar13 = ((int)puVar25 * 3 + iVar9 + 4) * 4;\n        uVar3 = uVar13 + 7;\n        if (0x7f00 < uVar13) {\n          pcVar34 = *(code **)(iVar12 + -0x7d50);\n          goto LAB_0005305c;\n        }\n        goto LAB_00053148;\n      }\n      uVar13 = ((int)puVar25 * 4 + 4) * 4;\n      uVar3 = uVar13 + 7;\n      if (uVar13 < 0x7f01) goto LAB_00053148;\n      pcVar34 = *(code **)(iVar12 + -0x7d50);\nLAB_0005305c:\n      *(uint **)(puVar36 + -0x48) = puVar25;\n      *(undefined4 *)(puVar36 + -0x44) = uVar39;\n      puVar4 = (uint *)(*pcVar34)(puVar36 + -0x40);\n      iVar12 = *(int *)(puVar36 + -0x68);\n      puVar25 = *(uint **)(puVar36 + -0x48);\n      uVar39 = *(undefined4 *)(puVar36 + -0x44);\n    }\n    else {\n      uVar3 = ((int)puVar25 * 3 + 4) * 4;\n      pcVar34 = *(code **)(iVar12 + -0x7d50);\n      if (0x7f00 < uVar3) goto LAB_0005305c;\n      uVar3 = uVar3 + 7;\nLAB_00053148:\n      puVar38 = puVar36 + -(uVar3 & 0xfffffff8) + -0x88;\n      puVar4 = (uint *)(puVar36 + -(uVar3 & 0xfffffff8) + -0x68);\n    }\n    *(uint **)(puVar36 + -0x44) = puVar4 + (int)puVar25;\n    *(uint **)(puVar36 + -0x48) = puVar4 + (int)puVar25 + (int)puVar25;\n    if ((int)puVar25 < (int)puVar28) {\n      pcVar34 = *(code **)(iVar12 + -0x7d0c);\n      puVar18 = (uint *)((int)puVar28 - (int)puVar25);\n      *(undefined4 *)(puVar36 + -0x5c) = uVar39;\n      *(uint **)(puVar36 + -0x58) = puVar25;\n      *(int *)(puVar36 + -0x54) = (int)puVar25 * 4;\n      iVar9 = (*pcVar34)(puVar17,puVar17,puVar17 + (int)puVar25,puVar18);\n      iVar12 = *(int *)(puVar36 + -0x68);\n      iVar32 = *(int *)(puVar36 + -0x54);\n      puVar28 = *(uint **)(puVar36 + -0x58);\n      uVar39 = *(undefined4 *)(puVar36 + -0x5c);\n      if (iVar9 == 0) {\nLAB_0005359c:\n        pcVar34 = *(code **)(iVar12 + -0x7d0c);\n      }\n      else {\n        puVar25 = puVar17;\n        if ((int)puVar28 <= (int)puVar18) {\nLAB_00053588:\n          do {\n            uVar3 = *puVar25;\n            *puVar25 = uVar3 + 1;\n            puVar25 = puVar25 + 1;\n          } while (uVar3 + 1 == 0);\n          goto LAB_0005359c;\n        }\n        puVar31 = puVar17 + (int)puVar18;\n        uVar3 = *puVar31;\n        *puVar31 = uVar3 + 1;\n        puVar19 = puVar18;\n        if (uVar3 + 1 == 0) {\n          do {\n            puVar19 = (uint *)((int)puVar19 + 1);\n            if (puVar28 == puVar19) goto LAB_00053588;\n            uVar3 = puVar31[1];\n            puVar31 = puVar31 + 1;\n            *puVar31 = uVar3 + 1;\n          } while (uVar3 + 1 == 0);\n          goto LAB_0005359c;\n        }\n        pcVar34 = *(code **)(iVar12 + -0x7d0c);\n      }\n      *(uint **)(puVar36 + -0x58) = puVar28;\n      *(undefined4 *)(puVar36 + -0x54) = uVar39;\n      iVar9 = (*pcVar34)(puVar21,puVar21,(int)puVar21 + iVar32,puVar18);\n      iVar12 = *(int *)(puVar36 + -0x68);\n      uVar39 = *(undefined4 *)(puVar36 + -0x54);\n      puVar25 = *(uint **)(puVar36 + -0x58);\n      puVar28 = puVar25;\n      if (iVar9 != 0) {\n        puVar19 = puVar21;\n        if ((int)puVar18 < (int)puVar25) {\n          puVar31 = puVar21 + (int)puVar18;\n          uVar3 = *puVar31 + 1;\n          *puVar31 = uVar3;\n          while (uVar3 == 0) {\n            puVar18 = (uint *)((int)puVar18 + 1);\n            if (puVar25 == puVar18) goto LAB_0005361c;\n            puVar5 = puVar31 + 1;\n            puVar31 = puVar31 + 1;\n            uVar3 = *puVar5 + 1;\n            *puVar31 = uVar3;\n          }\n        }\n        else {\nLAB_0005361c:\n          do {\n            uVar3 = *puVar19;\n            *puVar19 = uVar3 + 1;\n            puVar19 = puVar19 + 1;\n          } while (uVar3 + 1 == 0);\n        }\n      }\n    }\n    uVar8 = *(undefined4 *)(iVar24 + 0x14);\n    pcVar34 = *(code **)(iVar12 + -0x7cd8);\n    *(undefined4 *)(puVar36 + -0x5c) = uVar39;\n    *(uint **)(puVar36 + -0x54) = puVar25;\n    *(undefined4 *)(puVar38 + 0x18) = *(undefined4 *)(puVar36 + -0x48);\n    *(undefined4 *)(puVar38 + 0x10) = uVar8;\n    *(int *)(puVar38 + 0x14) = iVar7;\n    (*pcVar34)(puVar4,puVar25,puVar17,puVar28);\n    uVar39 = *(undefined4 *)(iVar24 + 0xc);\n    uVar26 = *(undefined4 *)(puVar36 + -0x54);\n    uVar27 = *(undefined4 *)(puVar36 + -0x5c);\n    uVar8 = *(undefined4 *)(puVar36 + -0x48);\n    pcVar34 = *(code **)(*(int *)(puVar36 + -0x68) + -0x7cd8);\n    uVar15 = *(undefined4 *)(puVar36 + -0x44);\n    *(undefined4 *)(puVar36 + -0x58) = uVar26;\n    *(undefined4 *)(puVar38 + 0x14) = uVar27;\n    *(undefined4 *)(puVar36 + -0x54) = uVar27;\n    *(undefined4 *)(puVar38 + 0x10) = uVar39;\n    *(undefined4 *)(puVar38 + 0x18) = uVar8;\n    (*pcVar34)(uVar15,uVar26,puVar21,puVar28);\n    iVar9 = *(int *)(puVar36 + -0x58);\n    iVar12 = *(int *)(puVar36 + -0x68);\n    iVar32 = *(int *)(puVar36 + -0x54);\n    if ((iVar7 + (int)puVar28 < iVar9) && (iVar7 != iVar9 - (int)puVar28)) {\n      iVar11 = (iVar9 - (int)puVar28) - iVar7;\n      puVar25 = puVar4 + (int)(iVar7 + (int)puVar28);\n      do {\n        iVar11 = iVar11 + -1;\n        *puVar25 = 0;\n        puVar25 = puVar25 + 1;\n      } while (iVar11 != 0);\n    }\n    pcVar34 = *(code **)(iVar12 + -0x7b2c);\n    if (iVar32 + (int)puVar28 < iVar9) {\n      if (iVar32 != iVar9 - (int)puVar28) {\n        iVar7 = (iVar9 - (int)puVar28) - iVar32;\n        puVar6 = (undefined4 *)(*(int *)(puVar36 + -0x44) + (int)(iVar32 + (int)puVar28) * 4);\n        do {\n          iVar7 = iVar7 + -1;\n          *puVar6 = 0;\n          puVar6 = puVar6 + 1;\n        } while (iVar7 != 0);\n        pcVar34 = *(code **)(iVar12 + -0x7b2c);\n      }\n    }\n    *(int *)(puVar36 + -0x54) = iVar9;\n    uVar3 = (*pcVar34)(puVar4,puVar4,*(undefined4 *)(puVar36 + -0x44),iVar9);\n    uVar13 = *puVar4;\n    iVar9 = *(int *)(puVar36 + -0x68);\n    uVar39 = *(undefined4 *)(puVar36 + -0x54);\n    *puVar4 = uVar13 - uVar3;\n    puVar25 = puVar4;\n    if (uVar13 < uVar3) {\n      do {\n        puVar25 = puVar25 + 1;\n        uVar3 = *puVar25;\n        *puVar25 = uVar3 - 1;\n      } while (uVar3 == 0);\n    }\n    uVar8 = *(undefined4 *)(iVar24 + 0x10);\n    pcVar34 = *(code **)(iVar9 + -0x7cd8);\n    uVar15 = *(undefined4 *)(puVar36 + -0x44);\n    *(undefined4 *)(puVar36 + -0x54) = uVar39;\n    *(undefined4 *)(puVar38 + 0x18) = *(undefined4 *)(puVar36 + -0x48);\n    *(int *)(puVar38 + 0x14) = iVar22;\n    *(undefined4 *)(puVar38 + 0x10) = uVar8;\n    (*pcVar34)(uVar15,uVar39,puVar17,puVar28);\n    iVar9 = *(int *)(puVar36 + -0x68);\n    uVar39 = *(undefined4 *)(puVar36 + -0x54);\n    if (puVar29 != (uint *)0x0) {\n      iVar32 = (int)puVar29 + -1;\n      uVar3 = *puVar4;\n      puVar18 = puVar17;\n      puVar25 = puVar4;\n      if (iVar32 == 0) {\n        *puVar17 = uVar3;\n      }\n      else {\n        do {\n          *puVar18 = uVar3;\n          iVar32 = iVar32 + -1;\n          uVar3 = puVar25[1];\n          puVar18 = puVar18 + 1;\n          puVar25 = puVar25 + 1;\n        } while (iVar32 != 0);\n        puVar17[(int)puVar29 + -1] = uVar3;\n      }\n    }\n    uVar8 = *(undefined4 *)(iVar24 + 8);\n    pcVar34 = *(code **)(iVar9 + -0x7cd8);\n    *(undefined4 *)(puVar38 + 0x18) = *(undefined4 *)(puVar36 + -0x48);\n    *(undefined4 *)(puVar36 + -0x48) = uVar39;\n    *(undefined4 *)(puVar38 + 0x10) = uVar8;\n    *(undefined4 *)(puVar38 + 0x14) = *(undefined4 *)(puVar36 + -0x50);\n    (*pcVar34)(puVar4,uVar39,puVar21,puVar28);\n    iVar9 = *(int *)(puVar36 + -0x48);\n    iVar32 = *(int *)(puVar36 + -0x68);\n    if ((int)puVar28 + iVar22 < iVar9) {\n      if (iVar22 != iVar9 - (int)puVar28) {\n        iVar12 = (iVar9 - (int)puVar28) - iVar22;\n        puVar6 = (undefined4 *)(*(int *)(puVar36 + -0x44) + (int)((int)puVar28 + iVar22) * 4);\n        do {\n          iVar12 = iVar12 + -1;\n          *puVar6 = 0;\n          puVar6 = puVar6 + 1;\n        } while (iVar12 != 0);\n      }\n    }\n    pcVar34 = *(code **)(iVar32 + -0x7b2c);\n    if (*(int *)(puVar36 + -0x50) + (int)puVar28 < iVar9) {\n      if (*(int *)(puVar36 + -0x50) != iVar9 - (int)puVar28) {\n        iVar22 = (iVar9 - (int)puVar28) - *(int *)(puVar36 + -0x50);\n        puVar28 = puVar4 + (int)(*(int *)(puVar36 + -0x50) + (int)puVar28);\n        do {\n          iVar22 = iVar22 + -1;\n          *puVar28 = 0;\n          puVar28 = puVar28 + 1;\n        } while (iVar22 != 0);\n        pcVar34 = *(code **)(iVar32 + -0x7b2c);\n      }\n    }\n    uVar3 = (*pcVar34)(puVar4,puVar4,*(undefined4 *)(puVar36 + -0x44),iVar9);\n    uVar13 = *puVar4;\n    iVar9 = *(int *)(puVar36 + -0x68);\n    puVar18 = (uint *)(uVar13 - uVar3);\n    *puVar4 = (uint)puVar18;\n    puVar28 = puVar4;\n    if (uVar13 < uVar3) {\n      do {\n        puVar28 = puVar28 + 1;\n        uVar3 = *puVar28;\n        puVar18 = (uint *)(uVar3 - 1);\n        *puVar28 = (uint)puVar18;\n      } while (uVar3 == 0);\n    }\n    iVar32 = (int)puVar29 + -1;\n    if (puVar29 == (uint *)0x0) {\n      iVar32 = -4;\n    }\n    else {\n      puVar18 = (uint *)*puVar4;\n      puVar28 = puVar21;\n      if (iVar32 != 0) {\n        do {\n          puVar4 = puVar4 + 1;\n          *puVar28 = (uint)puVar18;\n          iVar32 = iVar32 + -1;\n          puVar18 = (uint *)*puVar4;\n          puVar28 = puVar28 + 1;\n        } while (iVar32 != 0);\n        puVar28 = puVar21 + (int)puVar29 + -1;\n      }\n      *puVar28 = (uint)puVar18;\n      iVar32 = (int)puVar29 * 4 + -4;\n    }\n    puVar37 = puVar38;\n    if (*(int *)((int)puVar17 + iVar32) != 0 || *(int *)((int)puVar21 + iVar32) != 0)\n    goto LAB_000530b4;\n    puVar17 = puVar17 + (int)puVar29 + -2;\n    puVar21 = puVar21 + (int)puVar29 + -2;\n    do {\n      uVar3 = *puVar17;\n      puVar29 = (uint *)((int)puVar29 + -1);\n      uVar13 = *puVar21;\n      puVar17 = puVar17 + -1;\n      puVar21 = puVar21 + -1;\n    } while (uVar3 == 0 && uVar13 == 0);\n    piVar30 = *(int **)(puVar36 + -0x4c);\n    if (*(int *)(puVar36 + -0x40) == 0) goto LAB_000530c4;\n    pcVar34 = *(code **)(iVar9 + -0x7a2c);\nLAB_00053478:\n    (*pcVar34)();\n    iVar9 = *(int *)(puVar36 + -0x68);\n    puVar38 = puVar37;\n  }\n  piVar30 = *(int **)(puVar36 + -0x4c);\nLAB_000530c4:\n  iVar32 = *(int *)(puVar36 + -0x2c);\n  pcVar34 = *(code **)(iVar9 + -0x7b70);\n  if (iVar32 == *piVar30) {\n    return puVar29;\n  }\n  pcVar40 = __gmpn_hgcd_reduce_itch;\n  (*pcVar34)();\n  pcVar35 = *(code **)(pcVar34 + 0x43e08);\n  *(uint **)(puVar38 + -0xc) = puVar21;\n  *(int *)(puVar38 + -8) = iVar24;\n  *(uint **)(puVar38 + -0x10) = puVar17;\n  *(code **)(puVar38 + -0x18) = pcVar34 + 0x4b9e4;\n  *(code **)(puVar38 + -4) = pcVar40;\n  puVar28 = (uint *)(*pcVar35)(iVar32 - (int)puVar18);\n  if (999 < iVar32) {\n    return (uint *)((iVar32 - (int)puVar18) * 2 + (int)puVar28);\n  }\n  puVar18 = (uint *)((int)puVar18 + iVar32 + -1);\n  if ((int)puVar28 <= (int)puVar18) {\n    puVar28 = puVar18;\n  }\n  return puVar28;\n}\n\n" (function_definition "uint * __gmpn_hgcd_step(uint *param_1,uint *param_2,uint *param_3,uint *param_4,int param_5,\n                       uint *param_6)\n\n{\n  uint *puVar1;\n  undefined *puVar2;\n  uint uVar3;\n  uint *puVar4;\n  uint *puVar5;\n  undefined4 *puVar6;\n  int iVar7;\n  undefined4 uVar8;\n  int iVar9;\n  uint uVar10;\n  int iVar11;\n  int iVar12;\n  uint uVar13;\n  uint *puVar14;\n  undefined4 uVar15;\n  uint uVar16;\n  uint *puVar17;\n  uint *puVar18;\n  uint *puVar19;\n  uint uVar20;\n  uint *puVar21;\n  int iVar22;\n  uint uVar23;\n  int iVar24;\n  uint *puVar25;\n  undefined4 uVar26;\n  undefined4 uVar27;\n  uint *puVar28;\n  uint *puVar29;\n  int *piVar30;\n  uint *puVar31;\n  int iVar32;\n  undefined1 *unaff_s5;\n  undefined *puVar33;\n  code *pcVar34;\n  code *pcVar35;\n  undefined1 *puVar36;\n  undefined1 *puVar37;\n  undefined1 *puVar38;\n  undefined4 uVar39;\n  code *pcVar40;\n  undefined1 auStack_c0 [24];\n  uint *apuStack_a8 [4];\n  int iStack_98;\n  int iStack_94;\n  uint *puStack_90;\n  undefined *puStack_8c;\n  uint *puStack_88;\n  uint *puStack_84;\n  uint *puStack_80;\n  undefined1 *puStack_7c;\n  uint *puStack_78;\n  uint *puStack_74;\n  int iStack_70;\n  undefined4 uStack_6c;\n  uint *local_58;\n  int local_54;\n  uint *local_50;\n  undefined1 auStack_3c [16];\n  uint *local_2c;\n  \n  puVar2 = PTR___stack_chk_guard_00097540;\n  puVar28 = (uint *)((int)param_1 * 4 + -4);\n  local_2c = *(uint **)PTR___stack_chk_guard_00097540;\n  uVar20 = param_3[(int)param_1 + -1];\n  uVar13 = param_2[(int)param_1 + -1];\n  uVar3 = uVar13 | uVar20;\n  if ((uint *)((int)param_4 + 1) == param_1) {\n    if (3 < uVar3) {\n      unaff_s5 = auStack_3c;\n      local_58 = (uint *)unaff_s5;\n      iVar9 = (*(code *)PTR___gmpn_hgcd2_00097460)\n                        (uVar13,param_2[(int)param_1 + -2],uVar20,param_3[(int)param_1 + -2]);\n      if (iVar9 != 0) goto LAB_00052bb8;\n    }\nLAB_00052b18:\n    local_50 = param_6;\n    local_58 = (uint *)(PTR_LAB_0009707c + 0x2960);\n    local_54 = param_5;\n    puVar29 = param_3;\n    puVar25 = param_1;\n    puVar18 = param_4;\n    puVar4 = (uint *)(*(code *)PTR___gmpn_gcd_subdiv_step_00097118)(param_2);\n  }\n  else {\n    uVar16 = param_2[(int)param_1 + -2];\n    uVar23 = param_3[(int)param_1 + -2];\n    if (-1 < (int)uVar3) {\n      if (uVar3 < 0x10000) {\n        iVar9 = 0x18;\n        if (uVar3 < 0x100) {\n          iVar9 = 0;\n        }\n        iVar24 = 9;\n        if (uVar3 < 0x100) {\n          iVar24 = 1;\n        }\n      }\n      else {\n        iVar9 = 8;\n        if (uVar3 < 0x1000000) {\n          iVar9 = 0x10;\n        }\n        iVar24 = 0x19;\n        if (uVar3 < 0x1000000) {\n          iVar24 = 0x11;\n        }\n      }\n      uVar3 = iVar9 - (uint)(byte)PTR___gmpn_clz_tab_0009718c[uVar3 >> iVar24];\n      uVar10 = 0x20 - uVar3;\n      uVar13 = uVar13 << (uVar3 & 0x1f) | uVar16 >> (uVar10 & 0x1f);\n      uVar16 = param_2[(int)param_1 + -3] >> (uVar10 & 0x1f) | uVar16 << (uVar3 & 0x1f);\n      uVar20 = uVar20 << (uVar3 & 0x1f) | uVar23 >> (uVar10 & 0x1f);\n      uVar23 = param_3[(int)param_1 + -3] >> (uVar10 & 0x1f) | uVar23 << (uVar3 & 0x1f);\n    }\n    unaff_s5 = auStack_3c;\n    local_58 = (uint *)unaff_s5;\n    iVar9 = (*(code *)PTR___gmpn_hgcd2_00097460)(uVar13,uVar16,uVar20,uVar23);\n    if (iVar9 == 0) goto LAB_00052b18;\nLAB_00052bb8:\n    unaff_s5 = auStack_3c;\n    (*(code *)PTR___gmpn_hgcd_matrix_mul_1_000973f4)(param_5,unaff_s5,param_6);\n    if (param_1 != (uint *)0x0) {\n      iVar9 = (int)param_1 + -1;\n      uVar3 = *param_2;\n      if (iVar9 == 0) {\n        *param_6 = uVar3;\n        puVar28 = param_6;\n      }\n      else {\n        puVar28 = param_6;\n        puVar29 = param_2 + 1;\n        do {\n          *puVar28 = uVar3;\n          iVar9 = iVar9 + -1;\n          uVar3 = *puVar29;\n          puVar28 = puVar28 + 1;\n          puVar29 = puVar29 + 1;\n        } while (iVar9 != 0);\n        param_6[(int)param_1 + -1] = uVar3;\n        puVar28 = param_6 + (int)param_1 + -1;\n      }\n    }\n    puVar29 = param_2;\n    puVar25 = param_6;\n    puVar18 = param_3;\n    local_58 = param_1;\n    puVar4 = (uint *)(*(code *)PTR___gmpn_matrix22_mul1_inverse_vector_00097488)(unaff_s5);\n  }\n  if (local_2c == *(uint **)puVar2) {\n    return puVar4;\n  }\n  uVar39 = 0x52c64;\n  puVar4 = local_2c;\n  puVar33 = PTR___stack_chk_fail_000974d0;\n  (*(code *)PTR___stack_chk_fail_000974d0)();\n  iVar9 = local_54;\n  apuStack_a8[0] = (uint *)(puVar33 + 0x4c3d0);\n  puVar36 = auStack_c0;\n  iStack_70 = param_5;\n  piVar30 = *(int **)(puVar33 + 0x448d0);\n  iVar24 = (int)puVar18 + local_54;\n  puStack_74 = param_6;\n  puStack_8c = puVar2;\n  iStack_98 = 0;\n  iStack_94 = *piVar30;\n  puStack_90 = puVar28;\n  puStack_88 = param_2;\n  puStack_84 = param_3;\n  puStack_80 = param_1;\n  puStack_7c = unaff_s5;\n  puStack_78 = param_4;\n  uStack_6c = uVar39;\n  if ((uint)(iVar24 * 4) < 0x7f01) {\n    iVar32 = -(iVar24 * 4 + 7U & 0xfffffff8);\n    puVar36 = auStack_c0 + iVar32;\n    puVar19 = (uint *)((int)apuStack_a8 + iVar32);\n    puVar28 = local_58;\n  }\n  else {\n    apuStack_a8[3] = local_58;\n    puVar19 = (uint *)(**(code **)(puVar33 + 0x44680))(&iStack_98);\n    puVar28 = apuStack_a8[3];\n  }\n  pcVar34 = (code *)apuStack_a8[0][-0x1f63];\n  *(int *)(puVar36 + 0x10) = iVar9;\n  puVar17 = puVar25;\n  puVar21 = puVar18;\n  (*pcVar34)(puVar19);\n  puVar31 = (uint *)(iVar24 - (uint)((int)puVar29 < iVar24));\n  if (((puVar31 != (uint *)0x0) &&\n      (puVar17 = puVar4, puVar21 = puVar19, puVar28 = puVar31,\n      iVar24 = (*(code *)apuStack_a8[0][-0x1ecb])(puVar4), iVar24 != 0)) &&\n     ((int)puVar31 < (int)puVar29)) {\n    puVar14 = puVar4 + (int)puVar31;\n    uVar3 = *puVar14;\n    puVar17 = (uint *)(uVar3 - 1);\n    *puVar14 = (uint)puVar17;\n    puVar5 = puVar31;\n    while ((uVar3 == 0 && (puVar5 = (uint *)((int)puVar5 + 1), puVar29 != puVar5))) {\n      uVar3 = puVar14[1];\n      puVar14 = puVar14 + 1;\n      puVar17 = (uint *)(uVar3 - 1);\n      *puVar14 = (uint)puVar17;\n    }\n  }\n  if (iStack_98 != 0) {\n    (*(code *)apuStack_a8[0][-0x1e8b])();\n  }\n  puVar5 = puVar29;\n  if (((int)puVar18 < (int)puVar29) && (puVar4[(int)puVar29 + -1] == 0)) {\n    puVar14 = puVar4 + (int)puVar29;\n    do {\n      puVar29 = (uint *)((int)puVar29 + -1);\n      puVar5 = puVar18;\n      if (puVar18 == puVar29) break;\n      puVar1 = puVar14 + -2;\n      puVar5 = puVar29;\n      puVar14 = puVar14 + -1;\n    } while (*puVar1 == 0);\n  }\n  pcVar34 = (code *)apuStack_a8[0][-0x1edc];\n  if (iStack_94 == *piVar30) {\n    return puVar5;\n  }\n  uVar39 = 0x52e68;\n  iVar24 = iStack_94;\n  (*pcVar34)();\n  puVar38 = puVar36 + -0x88;\n  puVar37 = puVar36 + -0x88;\n  puVar6 = *(undefined4 **)(pcVar34 + 0x446d8);\n  *(undefined1 **)(puVar36 + -8) = auStack_c0;\n  *(uint **)(puVar36 + -0x10) = puVar19;\n  *(undefined4 **)(puVar36 + -0x4c) = puVar6;\n  *(uint **)(puVar36 + -0x20) = puVar18;\n  *(uint **)(puVar36 + -0x24) = puVar4;\n  *(uint **)(puVar36 + -0x28) = puVar29;\n  *(undefined4 *)(puVar36 + -4) = uVar39;\n  *(uint **)(puVar36 + -0xc) = puVar25;\n  *(int *)(puVar36 + -0x14) = iVar9;\n  *(uint **)(puVar36 + -0x18) = puVar31;\n  *(int **)(puVar36 + -0x1c) = piVar30;\n  *(code **)(puVar36 + -0x68) = pcVar34 + 0x4c1d8;\n  *(undefined4 *)(puVar36 + -0x2c) = *puVar6;\n  puVar29 = puVar28;\n  puVar25 = puVar28;\n  if (0 < (int)puVar28) {\n    if (puVar17[(int)((int)puVar28 + -1)] == 0) {\n      puVar18 = puVar17 + (int)puVar28;\n      do {\n        puVar25 = (uint *)((int)puVar25 + -1);\n        if (puVar25 == (uint *)0x0) break;\n        puVar4 = puVar18 + -2;\n        puVar18 = puVar18 + -1;\n      } while (*puVar4 == 0);\n    }\n    if (puVar21[(int)((int)puVar28 + -1)] == 0) {\n      puVar18 = puVar21 + (int)puVar28;\n      do {\n        puVar29 = (uint *)((int)puVar29 + -1);\n        if (puVar29 == (uint *)0x0) break;\n        puVar4 = puVar18 + -2;\n        puVar18 = puVar18 + -1;\n      } while (*puVar4 == 0);\n    }\n  }\n  iVar32 = *(int *)(iVar24 + 4);\n  iVar9 = 8;\n  do {\n    iVar22 = iVar9 + -8;\n    do {\n      iVar12 = iVar32;\n      if (0 < iVar32) {\n        iVar7 = *(int *)(iVar24 + iVar22 + 8);\n        iVar11 = *(int *)(iVar7 + iVar32 * 4 + -4);\n        iVar7 = iVar7 + iVar32 * 4;\n        while (iVar11 == 0) {\n          iVar12 = iVar12 + -1;\n          if (iVar12 == 0) break;\n          iVar11 = *(int *)(iVar7 + -8);\n          iVar7 = iVar7 + -4;\n        }\n      }\n      iVar7 = iVar22 + -0x3c;\n      iVar22 = iVar22 + 4;\n      *(int *)(puVar36 + iVar7) = iVar12;\n    } while (iVar9 != iVar22);\n    iVar9 = iVar9 + 8;\n    iVar22 = *(int *)(puVar36 + -0x34);\n  } while (iVar9 != 0x18);\n  iVar9 = *(int *)(puVar36 + -0x38);\n  *(undefined4 *)(puVar36 + -0x40) = 0;\n  if (iVar9 == 0) {\n    uVar39 = *(undefined4 *)(iVar24 + 0x10);\n    *(int *)(puVar36 + -0x74) = iVar22;\n    *(undefined4 *)(puVar36 + -0x78) = uVar39;\n    puVar28 = puVar21;\n    puVar18 = puVar29;\n    puVar4 = puVar17;\nLAB_0005309c:\n    puVar29 = (uint *)FUN_00052c70(puVar28,puVar18,puVar4,puVar25);\n    iVar9 = *(int *)(puVar36 + -0x68);\nLAB_000530b4:\n    pcVar34 = *(code **)(iVar9 + -0x7a2c);\n    puVar38 = puVar37;\n    if (*(int *)(puVar36 + -0x40) != 0) goto LAB_00053478;\n  }\n  else {\n    if (iVar22 == 0) {\n      uVar39 = *(undefined4 *)(iVar24 + 0xc);\n      *(int *)(puVar36 + -0x74) = iVar9;\n      *(undefined4 *)(puVar36 + -0x78) = uVar39;\n      puVar28 = puVar17;\n      puVar18 = puVar25;\n      puVar4 = puVar21;\n      puVar25 = puVar29;\n      goto LAB_0005309c;\n    }\n    iVar7 = *(int *)(puVar36 + -0x30);\n    pcVar34 = *(code **)(pcVar34 + 0x4454c);\n    iVar12 = (int)puVar25 - *(int *)(puVar36 + -0x3c);\n    *(int *)(puVar36 + -0x50) = *(int *)(puVar36 + -0x3c);\n    *(int *)(puVar36 + -0x44) = iVar9;\n    if ((int)puVar29 - iVar22 <= iVar12) {\n      iVar12 = (int)puVar29 - iVar22;\n    }\n    iVar11 = (int)puVar25 - iVar9;\n    if ((int)puVar29 - iVar7 <= (int)puVar25 - iVar9) {\n      iVar11 = (int)puVar29 - iVar7;\n    }\n    puVar29 = (uint *)(iVar11 + 1);\n    if (iVar11 + 1 <= iVar12 + 1) {\n      puVar29 = (uint *)(iVar12 + 1);\n    }\n    puVar25 = (uint *)(*pcVar34)((int)puVar29 + 1);\n    iVar9 = (int)puVar25 >> 1;\n    iVar12 = *(int *)(puVar36 + -0x68);\n    uVar39 = *(undefined4 *)(puVar36 + -0x44);\n    if (iVar9 < (int)puVar25) {\n      if (iVar32 <= iVar9) {\n        uVar13 = ((int)puVar25 * 3 + iVar9 + 4) * 4;\n        uVar3 = uVar13 + 7;\n        if (0x7f00 < uVar13) {\n          pcVar34 = *(code **)(iVar12 + -0x7d50);\n          goto LAB_0005305c;\n        }\n        goto LAB_00053148;\n      }\n      uVar13 = ((int)puVar25 * 4 + 4) * 4;\n      uVar3 = uVar13 + 7;\n      if (uVar13 < 0x7f01) goto LAB_00053148;\n      pcVar34 = *(code **)(iVar12 + -0x7d50);\nLAB_0005305c:\n      *(uint **)(puVar36 + -0x48) = puVar25;\n      *(undefined4 *)(puVar36 + -0x44) = uVar39;\n      puVar4 = (uint *)(*pcVar34)(puVar36 + -0x40);\n      iVar12 = *(int *)(puVar36 + -0x68);\n      puVar25 = *(uint **)(puVar36 + -0x48);\n      uVar39 = *(undefined4 *)(puVar36 + -0x44);\n    }\n    else {\n      uVar3 = ((int)puVar25 * 3 + 4) * 4;\n      pcVar34 = *(code **)(iVar12 + -0x7d50);\n      if (0x7f00 < uVar3) goto LAB_0005305c;\n      uVar3 = uVar3 + 7;\nLAB_00053148:\n      puVar38 = puVar36 + -(uVar3 & 0xfffffff8) + -0x88;\n      puVar4 = (uint *)(puVar36 + -(uVar3 & 0xfffffff8) + -0x68);\n    }\n    *(uint **)(puVar36 + -0x44) = puVar4 + (int)puVar25;\n    *(uint **)(puVar36 + -0x48) = puVar4 + (int)puVar25 + (int)puVar25;\n    if ((int)puVar25 < (int)puVar28) {\n      pcVar34 = *(code **)(iVar12 + -0x7d0c);\n      puVar18 = (uint *)((int)puVar28 - (int)puVar25);\n      *(undefined4 *)(puVar36 + -0x5c) = uVar39;\n      *(uint **)(puVar36 + -0x58) = puVar25;\n      *(int *)(puVar36 + -0x54) = (int)puVar25 * 4;\n      iVar9 = (*pcVar34)(puVar17,puVar17,puVar17 + (int)puVar25,puVar18);\n      iVar12 = *(int *)(puVar36 + -0x68);\n      iVar32 = *(int *)(puVar36 + -0x54);\n      puVar28 = *(uint **)(puVar36 + -0x58);\n      uVar39 = *(undefined4 *)(puVar36 + -0x5c);\n      if (iVar9 == 0) {\nLAB_0005359c:\n        pcVar34 = *(code **)(iVar12 + -0x7d0c);\n      }\n      else {\n        puVar25 = puVar17;\n        if ((int)puVar28 <= (int)puVar18) {\nLAB_00053588:\n          do {\n            uVar3 = *puVar25;\n            *puVar25 = uVar3 + 1;\n            puVar25 = puVar25 + 1;\n          } while (uVar3 + 1 == 0);\n          goto LAB_0005359c;\n        }\n        puVar31 = puVar17 + (int)puVar18;\n        uVar3 = *puVar31;\n        *puVar31 = uVar3 + 1;\n        puVar19 = puVar18;\n        if (uVar3 + 1 == 0) {\n          do {\n            puVar19 = (uint *)((int)puVar19 + 1);\n            if (puVar28 == puVar19) goto LAB_00053588;\n            uVar3 = puVar31[1];\n            puVar31 = puVar31 + 1;\n            *puVar31 = uVar3 + 1;\n          } while (uVar3 + 1 == 0);\n          goto LAB_0005359c;\n        }\n        pcVar34 = *(code **)(iVar12 + -0x7d0c);\n      }\n      *(uint **)(puVar36 + -0x58) = puVar28;\n      *(undefined4 *)(puVar36 + -0x54) = uVar39;\n      iVar9 = (*pcVar34)(puVar21,puVar21,(int)puVar21 + iVar32,puVar18);\n      iVar12 = *(int *)(puVar36 + -0x68);\n      uVar39 = *(undefined4 *)(puVar36 + -0x54);\n      puVar25 = *(uint **)(puVar36 + -0x58);\n      puVar28 = puVar25;\n      if (iVar9 != 0) {\n        puVar19 = puVar21;\n        if ((int)puVar18 < (int)puVar25) {\n          puVar31 = puVar21 + (int)puVar18;\n          uVar3 = *puVar31 + 1;\n          *puVar31 = uVar3;\n          while (uVar3 == 0) {\n            puVar18 = (uint *)((int)puVar18 + 1);\n            if (puVar25 == puVar18) goto LAB_0005361c;\n            puVar5 = puVar31 + 1;\n            puVar31 = puVar31 + 1;\n            uVar3 = *puVar5 + 1;\n            *puVar31 = uVar3;\n          }\n        }\n        else {\nLAB_0005361c:\n          do {\n            uVar3 = *puVar19;\n            *puVar19 = uVar3 + 1;\n            puVar19 = puVar19 + 1;\n          } while (uVar3 + 1 == 0);\n        }\n      }\n    }\n    uVar8 = *(undefined4 *)(iVar24 + 0x14);\n    pcVar34 = *(code **)(iVar12 + -0x7cd8);\n    *(undefined4 *)(puVar36 + -0x5c) = uVar39;\n    *(uint **)(puVar36 + -0x54) = puVar25;\n    *(undefined4 *)(puVar38 + 0x18) = *(undefined4 *)(puVar36 + -0x48);\n    *(undefined4 *)(puVar38 + 0x10) = uVar8;\n    *(int *)(puVar38 + 0x14) = iVar7;\n    (*pcVar34)(puVar4,puVar25,puVar17,puVar28);\n    uVar39 = *(undefined4 *)(iVar24 + 0xc);\n    uVar26 = *(undefined4 *)(puVar36 + -0x54);\n    uVar27 = *(undefined4 *)(puVar36 + -0x5c);\n    uVar8 = *(undefined4 *)(puVar36 + -0x48);\n    pcVar34 = *(code **)(*(int *)(puVar36 + -0x68) + -0x7cd8);\n    uVar15 = *(undefined4 *)(puVar36 + -0x44);\n    *(undefined4 *)(puVar36 + -0x58) = uVar26;\n    *(undefined4 *)(puVar38 + 0x14) = uVar27;\n    *(undefined4 *)(puVar36 + -0x54) = uVar27;\n    *(undefined4 *)(puVar38 + 0x10) = uVar39;\n    *(undefined4 *)(puVar38 + 0x18) = uVar8;\n    (*pcVar34)(uVar15,uVar26,puVar21,puVar28);\n    iVar9 = *(int *)(puVar36 + -0x58);\n    iVar12 = *(int *)(puVar36 + -0x68);\n    iVar32 = *(int *)(puVar36 + -0x54);\n    if ((iVar7 + (int)puVar28 < iVar9) && (iVar7 != iVar9 - (int)puVar28)) {\n      iVar11 = (iVar9 - (int)puVar28) - iVar7;\n      puVar25 = puVar4 + (int)(iVar7 + (int)puVar28);\n      do {\n        iVar11 = iVar11 + -1;\n        *puVar25 = 0;\n        puVar25 = puVar25 + 1;\n      } while (iVar11 != 0);\n    }\n    pcVar34 = *(code **)(iVar12 + -0x7b2c);\n    if (iVar32 + (int)puVar28 < iVar9) {\n      if (iVar32 != iVar9 - (int)puVar28) {\n        iVar7 = (iVar9 - (int)puVar28) - iVar32;\n        puVar6 = (undefined4 *)(*(int *)(puVar36 + -0x44) + (int)(iVar32 + (int)puVar28) * 4);\n        do {\n          iVar7 = iVar7 + -1;\n          *puVar6 = 0;\n          puVar6 = puVar6 + 1;\n        } while (iVar7 != 0);\n        pcVar34 = *(code **)(iVar12 + -0x7b2c);\n      }\n    }\n    *(int *)(puVar36 + -0x54) = iVar9;\n    uVar3 = (*pcVar34)(puVar4,puVar4,*(undefined4 *)(puVar36 + -0x44),iVar9);\n    uVar13 = *puVar4;\n    iVar9 = *(int *)(puVar36 + -0x68);\n    uVar39 = *(undefined4 *)(puVar36 + -0x54);\n    *puVar4 = uVar13 - uVar3;\n    puVar25 = puVar4;\n    if (uVar13 < uVar3) {\n      do {\n        puVar25 = puVar25 + 1;\n        uVar3 = *puVar25;\n        *puVar25 = uVar3 - 1;\n      } while (uVar3 == 0);\n    }\n    uVar8 = *(undefined4 *)(iVar24 + 0x10);\n    pcVar34 = *(code **)(iVar9 + -0x7cd8);\n    uVar15 = *(undefined4 *)(puVar36 + -0x44);\n    *(undefined4 *)(puVar36 + -0x54) = uVar39;\n    *(undefined4 *)(puVar38 + 0x18) = *(undefined4 *)(puVar36 + -0x48);\n    *(int *)(puVar38 + 0x14) = iVar22;\n    *(undefined4 *)(puVar38 + 0x10) = uVar8;\n    (*pcVar34)(uVar15,uVar39,puVar17,puVar28);\n    iVar9 = *(int *)(puVar36 + -0x68);\n    uVar39 = *(undefined4 *)(puVar36 + -0x54);\n    if (puVar29 != (uint *)0x0) {\n      iVar32 = (int)puVar29 + -1;\n      uVar3 = *puVar4;\n      puVar18 = puVar17;\n      puVar25 = puVar4;\n      if (iVar32 == 0) {\n        *puVar17 = uVar3;\n      }\n      else {\n        do {\n          *puVar18 = uVar3;\n          iVar32 = iVar32 + -1;\n          uVar3 = puVar25[1];\n          puVar18 = puVar18 + 1;\n          puVar25 = puVar25 + 1;\n        } while (iVar32 != 0);\n        puVar17[(int)puVar29 + -1] = uVar3;\n      }\n    }\n    uVar8 = *(undefined4 *)(iVar24 + 8);\n    pcVar34 = *(code **)(iVar9 + -0x7cd8);\n    *(undefined4 *)(puVar38 + 0x18) = *(undefined4 *)(puVar36 + -0x48);\n    *(undefined4 *)(puVar36 + -0x48) = uVar39;\n    *(undefined4 *)(puVar38 + 0x10) = uVar8;\n    *(undefined4 *)(puVar38 + 0x14) = *(undefined4 *)(puVar36 + -0x50);\n    (*pcVar34)(puVar4,uVar39,puVar21,puVar28);\n    iVar9 = *(int *)(puVar36 + -0x48);\n    iVar32 = *(int *)(puVar36 + -0x68);\n    if ((int)puVar28 + iVar22 < iVar9) {\n      if (iVar22 != iVar9 - (int)puVar28) {\n        iVar12 = (iVar9 - (int)puVar28) - iVar22;\n        puVar6 = (undefined4 *)(*(int *)(puVar36 + -0x44) + (int)((int)puVar28 + iVar22) * 4);\n        do {\n          iVar12 = iVar12 + -1;\n          *puVar6 = 0;\n          puVar6 = puVar6 + 1;\n        } while (iVar12 != 0);\n      }\n    }\n    pcVar34 = *(code **)(iVar32 + -0x7b2c);\n    if (*(int *)(puVar36 + -0x50) + (int)puVar28 < iVar9) {\n      if (*(int *)(puVar36 + -0x50) != iVar9 - (int)puVar28) {\n        iVar22 = (iVar9 - (int)puVar28) - *(int *)(puVar36 + -0x50);\n        puVar28 = puVar4 + (int)(*(int *)(puVar36 + -0x50) + (int)puVar28);\n        do {\n          iVar22 = iVar22 + -1;\n          *puVar28 = 0;\n          puVar28 = puVar28 + 1;\n        } while (iVar22 != 0);\n        pcVar34 = *(code **)(iVar32 + -0x7b2c);\n      }\n    }\n    uVar3 = (*pcVar34)(puVar4,puVar4,*(undefined4 *)(puVar36 + -0x44),iVar9);\n    uVar13 = *puVar4;\n    iVar9 = *(int *)(puVar36 + -0x68);\n    puVar18 = (uint *)(uVar13 - uVar3);\n    *puVar4 = (uint)puVar18;\n    puVar28 = puVar4;\n    if (uVar13 < uVar3) {\n      do {\n        puVar28 = puVar28 + 1;\n        uVar3 = *puVar28;\n        puVar18 = (uint *)(uVar3 - 1);\n        *puVar28 = (uint)puVar18;\n      } while (uVar3 == 0);\n    }\n    iVar32 = (int)puVar29 + -1;\n    if (puVar29 == (uint *)0x0) {\n      iVar32 = -4;\n    }\n    else {\n      puVar18 = (uint *)*puVar4;\n      puVar28 = puVar21;\n      if (iVar32 != 0) {\n        do {\n          puVar4 = puVar4 + 1;\n          *puVar28 = (uint)puVar18;\n          iVar32 = iVar32 + -1;\n          puVar18 = (uint *)*puVar4;\n          puVar28 = puVar28 + 1;\n        } while (iVar32 != 0);\n        puVar28 = puVar21 + (int)puVar29 + -1;\n      }\n      *puVar28 = (uint)puVar18;\n      iVar32 = (int)puVar29 * 4 + -4;\n    }\n    puVar37 = puVar38;\n    if (*(int *)((int)puVar17 + iVar32) != 0 || *(int *)((int)puVar21 + iVar32) != 0)\n    goto LAB_000530b4;\n    puVar17 = puVar17 + (int)puVar29 + -2;\n    puVar21 = puVar21 + (int)puVar29 + -2;\n    do {\n      uVar3 = *puVar17;\n      puVar29 = (uint *)((int)puVar29 + -1);\n      uVar13 = *puVar21;\n      puVar17 = puVar17 + -1;\n      puVar21 = puVar21 + -1;\n    } while (uVar3 == 0 && uVar13 == 0);\n    piVar30 = *(int **)(puVar36 + -0x4c);\n    if (*(int *)(puVar36 + -0x40) == 0) goto LAB_000530c4;\n    pcVar34 = *(code **)(iVar9 + -0x7a2c);\nLAB_00053478:\n    (*pcVar34)();\n    iVar9 = *(int *)(puVar36 + -0x68);\n    puVar38 = puVar37;\n  }\n  piVar30 = *(int **)(puVar36 + -0x4c);\nLAB_000530c4:\n  iVar32 = *(int *)(puVar36 + -0x2c);\n  pcVar34 = *(code **)(iVar9 + -0x7b70);\n  if (iVar32 == *piVar30) {\n    return puVar29;\n  }\n  pcVar40 = __gmpn_hgcd_reduce_itch;\n  (*pcVar34)();\n  pcVar35 = *(code **)(pcVar34 + 0x43e08);\n  *(uint **)(puVar38 + -0xc) = puVar21;\n  *(int *)(puVar38 + -8) = iVar24;\n  *(uint **)(puVar38 + -0x10) = puVar17;\n  *(code **)(puVar38 + -0x18) = pcVar34 + 0x4b9e4;\n  *(code **)(puVar38 + -4) = pcVar40;\n  puVar28 = (uint *)(*pcVar35)(iVar32 - (int)puVar18);\n  if (999 < iVar32) {\n    return (uint *)((iVar32 - (int)puVar18) * 2 + (int)puVar28);\n  }\n  puVar18 = (uint *)((int)puVar18 + iVar32 + -1);\n  if ((int)puVar28 <= (int)puVar18) {\n    puVar28 = puVar18;\n  }\n  return puVar28;\n}" type_identifier (pointer_declarator "* __gmpn_hgcd_step(uint *param_1,uint *param_2,uint *param_3,uint *param_4,int param_5,\n                       uint *param_6)" * (function_declarator "__gmpn_hgcd_step(uint *param_1,uint *param_2,uint *param_3,uint *param_4,int param_5,\n                       uint *param_6)" identifier (parameter_list "(uint *param_1,uint *param_2,uint *param_3,uint *param_4,int param_5,\n                       uint *param_6)" ( (parameter_declaration "uint *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "uint *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "uint *param_3" type_identifier (pointer_declarator "*param_3" * identifier)) , (parameter_declaration "uint *param_4" type_identifier (pointer_declarator "*param_4" * identifier)) , (parameter_declaration "int param_5" primitive_type identifier) , (parameter_declaration "uint *param_6" type_identifier (pointer_declarator "*param_6" * identifier)) )))) (compound_statement "{\n  uint *puVar1;\n  undefined *puVar2;\n  uint uVar3;\n  uint *puVar4;\n  uint *puVar5;\n  undefined4 *puVar6;\n  int iVar7;\n  undefined4 uVar8;\n  int iVar9;\n  uint uVar10;\n  int iVar11;\n  int iVar12;\n  uint uVar13;\n  uint *puVar14;\n  undefined4 uVar15;\n  uint uVar16;\n  uint *puVar17;\n  uint *puVar18;\n  uint *puVar19;\n  uint uVar20;\n  uint *puVar21;\n  int iVar22;\n  uint uVar23;\n  int iVar24;\n  uint *puVar25;\n  undefined4 uVar26;\n  undefined4 uVar27;\n  uint *puVar28;\n  uint *puVar29;\n  int *piVar30;\n  uint *puVar31;\n  int iVar32;\n  undefined1 *unaff_s5;\n  undefined *puVar33;\n  code *pcVar34;\n  code *pcVar35;\n  undefined1 *puVar36;\n  undefined1 *puVar37;\n  undefined1 *puVar38;\n  undefined4 uVar39;\n  code *pcVar40;\n  undefined1 auStack_c0 [24];\n  uint *apuStack_a8 [4];\n  int iStack_98;\n  int iStack_94;\n  uint *puStack_90;\n  undefined *puStack_8c;\n  uint *puStack_88;\n  uint *puStack_84;\n  uint *puStack_80;\n  undefined1 *puStack_7c;\n  uint *puStack_78;\n  uint *puStack_74;\n  int iStack_70;\n  undefined4 uStack_6c;\n  uint *local_58;\n  int local_54;\n  uint *local_50;\n  undefined1 auStack_3c [16];\n  uint *local_2c;\n  \n  puVar2 = PTR___stack_chk_guard_00097540;\n  puVar28 = (uint *)((int)param_1 * 4 + -4);\n  local_2c = *(uint **)PTR___stack_chk_guard_00097540;\n  uVar20 = param_3[(int)param_1 + -1];\n  uVar13 = param_2[(int)param_1 + -1];\n  uVar3 = uVar13 | uVar20;\n  if ((uint *)((int)param_4 + 1) == param_1) {\n    if (3 < uVar3) {\n      unaff_s5 = auStack_3c;\n      local_58 = (uint *)unaff_s5;\n      iVar9 = (*(code *)PTR___gmpn_hgcd2_00097460)\n                        (uVar13,param_2[(int)param_1 + -2],uVar20,param_3[(int)param_1 + -2]);\n      if (iVar9 != 0) goto LAB_00052bb8;\n    }\nLAB_00052b18:\n    local_50 = param_6;\n    local_58 = (uint *)(PTR_LAB_0009707c + 0x2960);\n    local_54 = param_5;\n    puVar29 = param_3;\n    puVar25 = param_1;\n    puVar18 = param_4;\n    puVar4 = (uint *)(*(code *)PTR___gmpn_gcd_subdiv_step_00097118)(param_2);\n  }\n  else {\n    uVar16 = param_2[(int)param_1 + -2];\n    uVar23 = param_3[(int)param_1 + -2];\n    if (-1 < (int)uVar3) {\n      if (uVar3 < 0x10000) {\n        iVar9 = 0x18;\n        if (uVar3 < 0x100) {\n          iVar9 = 0;\n        }\n        iVar24 = 9;\n        if (uVar3 < 0x100) {\n          iVar24 = 1;\n        }\n      }\n      else {\n        iVar9 = 8;\n        if (uVar3 < 0x1000000) {\n          iVar9 = 0x10;\n        }\n        iVar24 = 0x19;\n        if (uVar3 < 0x1000000) {\n          iVar24 = 0x11;\n        }\n      }\n      uVar3 = iVar9 - (uint)(byte)PTR___gmpn_clz_tab_0009718c[uVar3 >> iVar24];\n      uVar10 = 0x20 - uVar3;\n      uVar13 = uVar13 << (uVar3 & 0x1f) | uVar16 >> (uVar10 & 0x1f);\n      uVar16 = param_2[(int)param_1 + -3] >> (uVar10 & 0x1f) | uVar16 << (uVar3 & 0x1f);\n      uVar20 = uVar20 << (uVar3 & 0x1f) | uVar23 >> (uVar10 & 0x1f);\n      uVar23 = param_3[(int)param_1 + -3] >> (uVar10 & 0x1f) | uVar23 << (uVar3 & 0x1f);\n    }\n    unaff_s5 = auStack_3c;\n    local_58 = (uint *)unaff_s5;\n    iVar9 = (*(code *)PTR___gmpn_hgcd2_00097460)(uVar13,uVar16,uVar20,uVar23);\n    if (iVar9 == 0) goto LAB_00052b18;\nLAB_00052bb8:\n    unaff_s5 = auStack_3c;\n    (*(code *)PTR___gmpn_hgcd_matrix_mul_1_000973f4)(param_5,unaff_s5,param_6);\n    if (param_1 != (uint *)0x0) {\n      iVar9 = (int)param_1 + -1;\n      uVar3 = *param_2;\n      if (iVar9 == 0) {\n        *param_6 = uVar3;\n        puVar28 = param_6;\n      }\n      else {\n        puVar28 = param_6;\n        puVar29 = param_2 + 1;\n        do {\n          *puVar28 = uVar3;\n          iVar9 = iVar9 + -1;\n          uVar3 = *puVar29;\n          puVar28 = puVar28 + 1;\n          puVar29 = puVar29 + 1;\n        } while (iVar9 != 0);\n        param_6[(int)param_1 + -1] = uVar3;\n        puVar28 = param_6 + (int)param_1 + -1;\n      }\n    }\n    puVar29 = param_2;\n    puVar25 = param_6;\n    puVar18 = param_3;\n    local_58 = param_1;\n    puVar4 = (uint *)(*(code *)PTR___gmpn_matrix22_mul1_inverse_vector_00097488)(unaff_s5);\n  }\n  if (local_2c == *(uint **)puVar2) {\n    return puVar4;\n  }\n  uVar39 = 0x52c64;\n  puVar4 = local_2c;\n  puVar33 = PTR___stack_chk_fail_000974d0;\n  (*(code *)PTR___stack_chk_fail_000974d0)();\n  iVar9 = local_54;\n  apuStack_a8[0] = (uint *)(puVar33 + 0x4c3d0);\n  puVar36 = auStack_c0;\n  iStack_70 = param_5;\n  piVar30 = *(int **)(puVar33 + 0x448d0);\n  iVar24 = (int)puVar18 + local_54;\n  puStack_74 = param_6;\n  puStack_8c = puVar2;\n  iStack_98 = 0;\n  iStack_94 = *piVar30;\n  puStack_90 = puVar28;\n  puStack_88 = param_2;\n  puStack_84 = param_3;\n  puStack_80 = param_1;\n  puStack_7c = unaff_s5;\n  puStack_78 = param_4;\n  uStack_6c = uVar39;\n  if ((uint)(iVar24 * 4) < 0x7f01) {\n    iVar32 = -(iVar24 * 4 + 7U & 0xfffffff8);\n    puVar36 = auStack_c0 + iVar32;\n    puVar19 = (uint *)((int)apuStack_a8 + iVar32);\n    puVar28 = local_58;\n  }\n  else {\n    apuStack_a8[3] = local_58;\n    puVar19 = (uint *)(**(code **)(puVar33 + 0x44680))(&iStack_98);\n    puVar28 = apuStack_a8[3];\n  }\n  pcVar34 = (code *)apuStack_a8[0][-0x1f63];\n  *(int *)(puVar36 + 0x10) = iVar9;\n  puVar17 = puVar25;\n  puVar21 = puVar18;\n  (*pcVar34)(puVar19);\n  puVar31 = (uint *)(iVar24 - (uint)((int)puVar29 < iVar24));\n  if (((puVar31 != (uint *)0x0) &&\n      (puVar17 = puVar4, puVar21 = puVar19, puVar28 = puVar31,\n      iVar24 = (*(code *)apuStack_a8[0][-0x1ecb])(puVar4), iVar24 != 0)) &&\n     ((int)puVar31 < (int)puVar29)) {\n    puVar14 = puVar4 + (int)puVar31;\n    uVar3 = *puVar14;\n    puVar17 = (uint *)(uVar3 - 1);\n    *puVar14 = (uint)puVar17;\n    puVar5 = puVar31;\n    while ((uVar3 == 0 && (puVar5 = (uint *)((int)puVar5 + 1), puVar29 != puVar5))) {\n      uVar3 = puVar14[1];\n      puVar14 = puVar14 + 1;\n      puVar17 = (uint *)(uVar3 - 1);\n      *puVar14 = (uint)puVar17;\n    }\n  }\n  if (iStack_98 != 0) {\n    (*(code *)apuStack_a8[0][-0x1e8b])();\n  }\n  puVar5 = puVar29;\n  if (((int)puVar18 < (int)puVar29) && (puVar4[(int)puVar29 + -1] == 0)) {\n    puVar14 = puVar4 + (int)puVar29;\n    do {\n      puVar29 = (uint *)((int)puVar29 + -1);\n      puVar5 = puVar18;\n      if (puVar18 == puVar29) break;\n      puVar1 = puVar14 + -2;\n      puVar5 = puVar29;\n      puVar14 = puVar14 + -1;\n    } while (*puVar1 == 0);\n  }\n  pcVar34 = (code *)apuStack_a8[0][-0x1edc];\n  if (iStack_94 == *piVar30) {\n    return puVar5;\n  }\n  uVar39 = 0x52e68;\n  iVar24 = iStack_94;\n  (*pcVar34)();\n  puVar38 = puVar36 + -0x88;\n  puVar37 = puVar36 + -0x88;\n  puVar6 = *(undefined4 **)(pcVar34 + 0x446d8);\n  *(undefined1 **)(puVar36 + -8) = auStack_c0;\n  *(uint **)(puVar36 + -0x10) = puVar19;\n  *(undefined4 **)(puVar36 + -0x4c) = puVar6;\n  *(uint **)(puVar36 + -0x20) = puVar18;\n  *(uint **)(puVar36 + -0x24) = puVar4;\n  *(uint **)(puVar36 + -0x28) = puVar29;\n  *(undefined4 *)(puVar36 + -4) = uVar39;\n  *(uint **)(puVar36 + -0xc) = puVar25;\n  *(int *)(puVar36 + -0x14) = iVar9;\n  *(uint **)(puVar36 + -0x18) = puVar31;\n  *(int **)(puVar36 + -0x1c) = piVar30;\n  *(code **)(puVar36 + -0x68) = pcVar34 + 0x4c1d8;\n  *(undefined4 *)(puVar36 + -0x2c) = *puVar6;\n  puVar29 = puVar28;\n  puVar25 = puVar28;\n  if (0 < (int)puVar28) {\n    if (puVar17[(int)((int)puVar28 + -1)] == 0) {\n      puVar18 = puVar17 + (int)puVar28;\n      do {\n        puVar25 = (uint *)((int)puVar25 + -1);\n        if (puVar25 == (uint *)0x0) break;\n        puVar4 = puVar18 + -2;\n        puVar18 = puVar18 + -1;\n      } while (*puVar4 == 0);\n    }\n    if (puVar21[(int)((int)puVar28 + -1)] == 0) {\n      puVar18 = puVar21 + (int)puVar28;\n      do {\n        puVar29 = (uint *)((int)puVar29 + -1);\n        if (puVar29 == (uint *)0x0) break;\n        puVar4 = puVar18 + -2;\n        puVar18 = puVar18 + -1;\n      } while (*puVar4 == 0);\n    }\n  }\n  iVar32 = *(int *)(iVar24 + 4);\n  iVar9 = 8;\n  do {\n    iVar22 = iVar9 + -8;\n    do {\n      iVar12 = iVar32;\n      if (0 < iVar32) {\n        iVar7 = *(int *)(iVar24 + iVar22 + 8);\n        iVar11 = *(int *)(iVar7 + iVar32 * 4 + -4);\n        iVar7 = iVar7 + iVar32 * 4;\n        while (iVar11 == 0) {\n          iVar12 = iVar12 + -1;\n          if (iVar12 == 0) break;\n          iVar11 = *(int *)(iVar7 + -8);\n          iVar7 = iVar7 + -4;\n        }\n      }\n      iVar7 = iVar22 + -0x3c;\n      iVar22 = iVar22 + 4;\n      *(int *)(puVar36 + iVar7) = iVar12;\n    } while (iVar9 != iVar22);\n    iVar9 = iVar9 + 8;\n    iVar22 = *(int *)(puVar36 + -0x34);\n  } while (iVar9 != 0x18);\n  iVar9 = *(int *)(puVar36 + -0x38);\n  *(undefined4 *)(puVar36 + -0x40) = 0;\n  if (iVar9 == 0) {\n    uVar39 = *(undefined4 *)(iVar24 + 0x10);\n    *(int *)(puVar36 + -0x74) = iVar22;\n    *(undefined4 *)(puVar36 + -0x78) = uVar39;\n    puVar28 = puVar21;\n    puVar18 = puVar29;\n    puVar4 = puVar17;\nLAB_0005309c:\n    puVar29 = (uint *)FUN_00052c70(puVar28,puVar18,puVar4,puVar25);\n    iVar9 = *(int *)(puVar36 + -0x68);\nLAB_000530b4:\n    pcVar34 = *(code **)(iVar9 + -0x7a2c);\n    puVar38 = puVar37;\n    if (*(int *)(puVar36 + -0x40) != 0) goto LAB_00053478;\n  }\n  else {\n    if (iVar22 == 0) {\n      uVar39 = *(undefined4 *)(iVar24 + 0xc);\n      *(int *)(puVar36 + -0x74) = iVar9;\n      *(undefined4 *)(puVar36 + -0x78) = uVar39;\n      puVar28 = puVar17;\n      puVar18 = puVar25;\n      puVar4 = puVar21;\n      puVar25 = puVar29;\n      goto LAB_0005309c;\n    }\n    iVar7 = *(int *)(puVar36 + -0x30);\n    pcVar34 = *(code **)(pcVar34 + 0x4454c);\n    iVar12 = (int)puVar25 - *(int *)(puVar36 + -0x3c);\n    *(int *)(puVar36 + -0x50) = *(int *)(puVar36 + -0x3c);\n    *(int *)(puVar36 + -0x44) = iVar9;\n    if ((int)puVar29 - iVar22 <= iVar12) {\n      iVar12 = (int)puVar29 - iVar22;\n    }\n    iVar11 = (int)puVar25 - iVar9;\n    if ((int)puVar29 - iVar7 <= (int)puVar25 - iVar9) {\n      iVar11 = (int)puVar29 - iVar7;\n    }\n    puVar29 = (uint *)(iVar11 + 1);\n    if (iVar11 + 1 <= iVar12 + 1) {\n      puVar29 = (uint *)(iVar12 + 1);\n    }\n    puVar25 = (uint *)(*pcVar34)((int)puVar29 + 1);\n    iVar9 = (int)puVar25 >> 1;\n    iVar12 = *(int *)(puVar36 + -0x68);\n    uVar39 = *(undefined4 *)(puVar36 + -0x44);\n    if (iVar9 < (int)puVar25) {\n      if (iVar32 <= iVar9) {\n        uVar13 = ((int)puVar25 * 3 + iVar9 + 4) * 4;\n        uVar3 = uVar13 + 7;\n        if (0x7f00 < uVar13) {\n          pcVar34 = *(code **)(iVar12 + -0x7d50);\n          goto LAB_0005305c;\n        }\n        goto LAB_00053148;\n      }\n      uVar13 = ((int)puVar25 * 4 + 4) * 4;\n      uVar3 = uVar13 + 7;\n      if (uVar13 < 0x7f01) goto LAB_00053148;\n      pcVar34 = *(code **)(iVar12 + -0x7d50);\nLAB_0005305c:\n      *(uint **)(puVar36 + -0x48) = puVar25;\n      *(undefined4 *)(puVar36 + -0x44) = uVar39;\n      puVar4 = (uint *)(*pcVar34)(puVar36 + -0x40);\n      iVar12 = *(int *)(puVar36 + -0x68);\n      puVar25 = *(uint **)(puVar36 + -0x48);\n      uVar39 = *(undefined4 *)(puVar36 + -0x44);\n    }\n    else {\n      uVar3 = ((int)puVar25 * 3 + 4) * 4;\n      pcVar34 = *(code **)(iVar12 + -0x7d50);\n      if (0x7f00 < uVar3) goto LAB_0005305c;\n      uVar3 = uVar3 + 7;\nLAB_00053148:\n      puVar38 = puVar36 + -(uVar3 & 0xfffffff8) + -0x88;\n      puVar4 = (uint *)(puVar36 + -(uVar3 & 0xfffffff8) + -0x68);\n    }\n    *(uint **)(puVar36 + -0x44) = puVar4 + (int)puVar25;\n    *(uint **)(puVar36 + -0x48) = puVar4 + (int)puVar25 + (int)puVar25;\n    if ((int)puVar25 < (int)puVar28) {\n      pcVar34 = *(code **)(iVar12 + -0x7d0c);\n      puVar18 = (uint *)((int)puVar28 - (int)puVar25);\n      *(undefined4 *)(puVar36 + -0x5c) = uVar39;\n      *(uint **)(puVar36 + -0x58) = puVar25;\n      *(int *)(puVar36 + -0x54) = (int)puVar25 * 4;\n      iVar9 = (*pcVar34)(puVar17,puVar17,puVar17 + (int)puVar25,puVar18);\n      iVar12 = *(int *)(puVar36 + -0x68);\n      iVar32 = *(int *)(puVar36 + -0x54);\n      puVar28 = *(uint **)(puVar36 + -0x58);\n      uVar39 = *(undefined4 *)(puVar36 + -0x5c);\n      if (iVar9 == 0) {\nLAB_0005359c:\n        pcVar34 = *(code **)(iVar12 + -0x7d0c);\n      }\n      else {\n        puVar25 = puVar17;\n        if ((int)puVar28 <= (int)puVar18) {\nLAB_00053588:\n          do {\n            uVar3 = *puVar25;\n            *puVar25 = uVar3 + 1;\n            puVar25 = puVar25 + 1;\n          } while (uVar3 + 1 == 0);\n          goto LAB_0005359c;\n        }\n        puVar31 = puVar17 + (int)puVar18;\n        uVar3 = *puVar31;\n        *puVar31 = uVar3 + 1;\n        puVar19 = puVar18;\n        if (uVar3 + 1 == 0) {\n          do {\n            puVar19 = (uint *)((int)puVar19 + 1);\n            if (puVar28 == puVar19) goto LAB_00053588;\n            uVar3 = puVar31[1];\n            puVar31 = puVar31 + 1;\n            *puVar31 = uVar3 + 1;\n          } while (uVar3 + 1 == 0);\n          goto LAB_0005359c;\n        }\n        pcVar34 = *(code **)(iVar12 + -0x7d0c);\n      }\n      *(uint **)(puVar36 + -0x58) = puVar28;\n      *(undefined4 *)(puVar36 + -0x54) = uVar39;\n      iVar9 = (*pcVar34)(puVar21,puVar21,(int)puVar21 + iVar32,puVar18);\n      iVar12 = *(int *)(puVar36 + -0x68);\n      uVar39 = *(undefined4 *)(puVar36 + -0x54);\n      puVar25 = *(uint **)(puVar36 + -0x58);\n      puVar28 = puVar25;\n      if (iVar9 != 0) {\n        puVar19 = puVar21;\n        if ((int)puVar18 < (int)puVar25) {\n          puVar31 = puVar21 + (int)puVar18;\n          uVar3 = *puVar31 + 1;\n          *puVar31 = uVar3;\n          while (uVar3 == 0) {\n            puVar18 = (uint *)((int)puVar18 + 1);\n            if (puVar25 == puVar18) goto LAB_0005361c;\n            puVar5 = puVar31 + 1;\n            puVar31 = puVar31 + 1;\n            uVar3 = *puVar5 + 1;\n            *puVar31 = uVar3;\n          }\n        }\n        else {\nLAB_0005361c:\n          do {\n            uVar3 = *puVar19;\n            *puVar19 = uVar3 + 1;\n            puVar19 = puVar19 + 1;\n          } while (uVar3 + 1 == 0);\n        }\n      }\n    }\n    uVar8 = *(undefined4 *)(iVar24 + 0x14);\n    pcVar34 = *(code **)(iVar12 + -0x7cd8);\n    *(undefined4 *)(puVar36 + -0x5c) = uVar39;\n    *(uint **)(puVar36 + -0x54) = puVar25;\n    *(undefined4 *)(puVar38 + 0x18) = *(undefined4 *)(puVar36 + -0x48);\n    *(undefined4 *)(puVar38 + 0x10) = uVar8;\n    *(int *)(puVar38 + 0x14) = iVar7;\n    (*pcVar34)(puVar4,puVar25,puVar17,puVar28);\n    uVar39 = *(undefined4 *)(iVar24 + 0xc);\n    uVar26 = *(undefined4 *)(puVar36 + -0x54);\n    uVar27 = *(undefined4 *)(puVar36 + -0x5c);\n    uVar8 = *(undefined4 *)(puVar36 + -0x48);\n    pcVar34 = *(code **)(*(int *)(puVar36 + -0x68) + -0x7cd8);\n    uVar15 = *(undefined4 *)(puVar36 + -0x44);\n    *(undefined4 *)(puVar36 + -0x58) = uVar26;\n    *(undefined4 *)(puVar38 + 0x14) = uVar27;\n    *(undefined4 *)(puVar36 + -0x54) = uVar27;\n    *(undefined4 *)(puVar38 + 0x10) = uVar39;\n    *(undefined4 *)(puVar38 + 0x18) = uVar8;\n    (*pcVar34)(uVar15,uVar26,puVar21,puVar28);\n    iVar9 = *(int *)(puVar36 + -0x58);\n    iVar12 = *(int *)(puVar36 + -0x68);\n    iVar32 = *(int *)(puVar36 + -0x54);\n    if ((iVar7 + (int)puVar28 < iVar9) && (iVar7 != iVar9 - (int)puVar28)) {\n      iVar11 = (iVar9 - (int)puVar28) - iVar7;\n      puVar25 = puVar4 + (int)(iVar7 + (int)puVar28);\n      do {\n        iVar11 = iVar11 + -1;\n        *puVar25 = 0;\n        puVar25 = puVar25 + 1;\n      } while (iVar11 != 0);\n    }\n    pcVar34 = *(code **)(iVar12 + -0x7b2c);\n    if (iVar32 + (int)puVar28 < iVar9) {\n      if (iVar32 != iVar9 - (int)puVar28) {\n        iVar7 = (iVar9 - (int)puVar28) - iVar32;\n        puVar6 = (undefined4 *)(*(int *)(puVar36 + -0x44) + (int)(iVar32 + (int)puVar28) * 4);\n        do {\n          iVar7 = iVar7 + -1;\n          *puVar6 = 0;\n          puVar6 = puVar6 + 1;\n        } while (iVar7 != 0);\n        pcVar34 = *(code **)(iVar12 + -0x7b2c);\n      }\n    }\n    *(int *)(puVar36 + -0x54) = iVar9;\n    uVar3 = (*pcVar34)(puVar4,puVar4,*(undefined4 *)(puVar36 + -0x44),iVar9);\n    uVar13 = *puVar4;\n    iVar9 = *(int *)(puVar36 + -0x68);\n    uVar39 = *(undefined4 *)(puVar36 + -0x54);\n    *puVar4 = uVar13 - uVar3;\n    puVar25 = puVar4;\n    if (uVar13 < uVar3) {\n      do {\n        puVar25 = puVar25 + 1;\n        uVar3 = *puVar25;\n        *puVar25 = uVar3 - 1;\n      } while (uVar3 == 0);\n    }\n    uVar8 = *(undefined4 *)(iVar24 + 0x10);\n    pcVar34 = *(code **)(iVar9 + -0x7cd8);\n    uVar15 = *(undefined4 *)(puVar36 + -0x44);\n    *(undefined4 *)(puVar36 + -0x54) = uVar39;\n    *(undefined4 *)(puVar38 + 0x18) = *(undefined4 *)(puVar36 + -0x48);\n    *(int *)(puVar38 + 0x14) = iVar22;\n    *(undefined4 *)(puVar38 + 0x10) = uVar8;\n    (*pcVar34)(uVar15,uVar39,puVar17,puVar28);\n    iVar9 = *(int *)(puVar36 + -0x68);\n    uVar39 = *(undefined4 *)(puVar36 + -0x54);\n    if (puVar29 != (uint *)0x0) {\n      iVar32 = (int)puVar29 + -1;\n      uVar3 = *puVar4;\n      puVar18 = puVar17;\n      puVar25 = puVar4;\n      if (iVar32 == 0) {\n        *puVar17 = uVar3;\n      }\n      else {\n        do {\n          *puVar18 = uVar3;\n          iVar32 = iVar32 + -1;\n          uVar3 = puVar25[1];\n          puVar18 = puVar18 + 1;\n          puVar25 = puVar25 + 1;\n        } while (iVar32 != 0);\n        puVar17[(int)puVar29 + -1] = uVar3;\n      }\n    }\n    uVar8 = *(undefined4 *)(iVar24 + 8);\n    pcVar34 = *(code **)(iVar9 + -0x7cd8);\n    *(undefined4 *)(puVar38 + 0x18) = *(undefined4 *)(puVar36 + -0x48);\n    *(undefined4 *)(puVar36 + -0x48) = uVar39;\n    *(undefined4 *)(puVar38 + 0x10) = uVar8;\n    *(undefined4 *)(puVar38 + 0x14) = *(undefined4 *)(puVar36 + -0x50);\n    (*pcVar34)(puVar4,uVar39,puVar21,puVar28);\n    iVar9 = *(int *)(puVar36 + -0x48);\n    iVar32 = *(int *)(puVar36 + -0x68);\n    if ((int)puVar28 + iVar22 < iVar9) {\n      if (iVar22 != iVar9 - (int)puVar28) {\n        iVar12 = (iVar9 - (int)puVar28) - iVar22;\n        puVar6 = (undefined4 *)(*(int *)(puVar36 + -0x44) + (int)((int)puVar28 + iVar22) * 4);\n        do {\n          iVar12 = iVar12 + -1;\n          *puVar6 = 0;\n          puVar6 = puVar6 + 1;\n        } while (iVar12 != 0);\n      }\n    }\n    pcVar34 = *(code **)(iVar32 + -0x7b2c);\n    if (*(int *)(puVar36 + -0x50) + (int)puVar28 < iVar9) {\n      if (*(int *)(puVar36 + -0x50) != iVar9 - (int)puVar28) {\n        iVar22 = (iVar9 - (int)puVar28) - *(int *)(puVar36 + -0x50);\n        puVar28 = puVar4 + (int)(*(int *)(puVar36 + -0x50) + (int)puVar28);\n        do {\n          iVar22 = iVar22 + -1;\n          *puVar28 = 0;\n          puVar28 = puVar28 + 1;\n        } while (iVar22 != 0);\n        pcVar34 = *(code **)(iVar32 + -0x7b2c);\n      }\n    }\n    uVar3 = (*pcVar34)(puVar4,puVar4,*(undefined4 *)(puVar36 + -0x44),iVar9);\n    uVar13 = *puVar4;\n    iVar9 = *(int *)(puVar36 + -0x68);\n    puVar18 = (uint *)(uVar13 - uVar3);\n    *puVar4 = (uint)puVar18;\n    puVar28 = puVar4;\n    if (uVar13 < uVar3) {\n      do {\n        puVar28 = puVar28 + 1;\n        uVar3 = *puVar28;\n        puVar18 = (uint *)(uVar3 - 1);\n        *puVar28 = (uint)puVar18;\n      } while (uVar3 == 0);\n    }\n    iVar32 = (int)puVar29 + -1;\n    if (puVar29 == (uint *)0x0) {\n      iVar32 = -4;\n    }\n    else {\n      puVar18 = (uint *)*puVar4;\n      puVar28 = puVar21;\n      if (iVar32 != 0) {\n        do {\n          puVar4 = puVar4 + 1;\n          *puVar28 = (uint)puVar18;\n          iVar32 = iVar32 + -1;\n          puVar18 = (uint *)*puVar4;\n          puVar28 = puVar28 + 1;\n        } while (iVar32 != 0);\n        puVar28 = puVar21 + (int)puVar29 + -1;\n      }\n      *puVar28 = (uint)puVar18;\n      iVar32 = (int)puVar29 * 4 + -4;\n    }\n    puVar37 = puVar38;\n    if (*(int *)((int)puVar17 + iVar32) != 0 || *(int *)((int)puVar21 + iVar32) != 0)\n    goto LAB_000530b4;\n    puVar17 = puVar17 + (int)puVar29 + -2;\n    puVar21 = puVar21 + (int)puVar29 + -2;\n    do {\n      uVar3 = *puVar17;\n      puVar29 = (uint *)((int)puVar29 + -1);\n      uVar13 = *puVar21;\n      puVar17 = puVar17 + -1;\n      puVar21 = puVar21 + -1;\n    } while (uVar3 == 0 && uVar13 == 0);\n    piVar30 = *(int **)(puVar36 + -0x4c);\n    if (*(int *)(puVar36 + -0x40) == 0) goto LAB_000530c4;\n    pcVar34 = *(code **)(iVar9 + -0x7a2c);\nLAB_00053478:\n    (*pcVar34)();\n    iVar9 = *(int *)(puVar36 + -0x68);\n    puVar38 = puVar37;\n  }\n  piVar30 = *(int **)(puVar36 + -0x4c);\nLAB_000530c4:\n  iVar32 = *(int *)(puVar36 + -0x2c);\n  pcVar34 = *(code **)(iVar9 + -0x7b70);\n  if (iVar32 == *piVar30) {\n    return puVar29;\n  }\n  pcVar40 = __gmpn_hgcd_reduce_itch;\n  (*pcVar34)();\n  pcVar35 = *(code **)(pcVar34 + 0x43e08);\n  *(uint **)(puVar38 + -0xc) = puVar21;\n  *(int *)(puVar38 + -8) = iVar24;\n  *(uint **)(puVar38 + -0x10) = puVar17;\n  *(code **)(puVar38 + -0x18) = pcVar34 + 0x4b9e4;\n  *(code **)(puVar38 + -4) = pcVar40;\n  puVar28 = (uint *)(*pcVar35)(iVar32 - (int)puVar18);\n  if (999 < iVar32) {\n    return (uint *)((iVar32 - (int)puVar18) * 2 + (int)puVar28);\n  }\n  puVar18 = (uint *)((int)puVar18 + iVar32 + -1);\n  if ((int)puVar28 <= (int)puVar18) {\n    puVar28 = puVar18;\n  }\n  return puVar28;\n}" { (declaration "uint *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "undefined *puVar2;" type_identifier (pointer_declarator "*puVar2" * identifier) ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "uint *puVar4;" type_identifier (pointer_declarator "*puVar4" * identifier) ;) (declaration "uint *puVar5;" type_identifier (pointer_declarator "*puVar5" * identifier) ;) (declaration "undefined4 *puVar6;" type_identifier (pointer_declarator "*puVar6" * identifier) ;) (declaration "int iVar7;" primitive_type identifier ;) (declaration "undefined4 uVar8;" type_identifier identifier ;) (declaration "int iVar9;" primitive_type identifier ;) (declaration "uint uVar10;" type_identifier identifier ;) (declaration "int iVar11;" primitive_type identifier ;) (declaration "int iVar12;" primitive_type identifier ;) (declaration "uint uVar13;" type_identifier identifier ;) (declaration "uint *puVar14;" type_identifier (pointer_declarator "*puVar14" * identifier) ;) (declaration "undefined4 uVar15;" type_identifier identifier ;) (declaration "uint uVar16;" type_identifier identifier ;) (declaration "uint *puVar17;" type_identifier (pointer_declarator "*puVar17" * identifier) ;) (declaration "uint *puVar18;" type_identifier (pointer_declarator "*puVar18" * identifier) ;) (declaration "uint *puVar19;" type_identifier (pointer_declarator "*puVar19" * identifier) ;) (declaration "uint uVar20;" type_identifier identifier ;) (declaration "uint *puVar21;" type_identifier (pointer_declarator "*puVar21" * identifier) ;) (declaration "int iVar22;" primitive_type identifier ;) (declaration "uint uVar23;" type_identifier identifier ;) (declaration "int iVar24;" primitive_type identifier ;) (declaration "uint *puVar25;" type_identifier (pointer_declarator "*puVar25" * identifier) ;) (declaration "undefined4 uVar26;" type_identifier identifier ;) (declaration "undefined4 uVar27;" type_identifier identifier ;) (declaration "uint *puVar28;" type_identifier (pointer_declarator "*puVar28" * identifier) ;) (declaration "uint *puVar29;" type_identifier (pointer_declarator "*puVar29" * identifier) ;) (declaration "int *piVar30;" primitive_type (pointer_declarator "*piVar30" * identifier) ;) (declaration "uint *puVar31;" type_identifier (pointer_declarator "*puVar31" * identifier) ;) (declaration "int iVar32;" primitive_type identifier ;) (declaration "undefined1 *unaff_s5;" type_identifier (pointer_declarator "*unaff_s5" * identifier) ;) (declaration "undefined *puVar33;" type_identifier (pointer_declarator "*puVar33" * identifier) ;) (declaration "code *pcVar34;" type_identifier (pointer_declarator "*pcVar34" * identifier) ;) (declaration "code *pcVar35;" type_identifier (pointer_declarator "*pcVar35" * identifier) ;) (declaration "undefined1 *puVar36;" type_identifier (pointer_declarator "*puVar36" * identifier) ;) (declaration "undefined1 *puVar37;" type_identifier (pointer_declarator "*puVar37" * identifier) ;) (declaration "undefined1 *puVar38;" type_identifier (pointer_declarator "*puVar38" * identifier) ;) (declaration "undefined4 uVar39;" type_identifier identifier ;) (declaration "code *pcVar40;" type_identifier (pointer_declarator "*pcVar40" * identifier) ;) (declaration "undefined1 auStack_c0 [24];" type_identifier (array_declarator "auStack_c0 [24]" identifier [ number_literal ]) ;) (declaration "uint *apuStack_a8 [4];" type_identifier (pointer_declarator "*apuStack_a8 [4]" * (array_declarator "apuStack_a8 [4]" identifier [ number_literal ])) ;) (declaration "int iStack_98;" primitive_type identifier ;) (declaration "int iStack_94;" primitive_type identifier ;) (declaration "uint *puStack_90;" type_identifier (pointer_declarator "*puStack_90" * identifier) ;) (declaration "undefined *puStack_8c;" type_identifier (pointer_declarator "*puStack_8c" * identifier) ;) (declaration "uint *puStack_88;" type_identifier (pointer_declarator "*puStack_88" * identifier) ;) (declaration "uint *puStack_84;" type_identifier (pointer_declarator "*puStack_84" * identifier) ;) (declaration "uint *puStack_80;" type_identifier (pointer_declarator "*puStack_80" * identifier) ;) (declaration "undefined1 *puStack_7c;" type_identifier (pointer_declarator "*puStack_7c" * identifier) ;) (declaration "uint *puStack_78;" type_identifier (pointer_declarator "*puStack_78" * identifier) ;) (declaration "uint *puStack_74;" type_identifier (pointer_declarator "*puStack_74" * identifier) ;) (declaration "int iStack_70;" primitive_type identifier ;) (declaration "undefined4 uStack_6c;" type_identifier identifier ;) (declaration "uint *local_58;" type_identifier (pointer_declarator "*local_58" * identifier) ;) (declaration "int local_54;" primitive_type identifier ;) (declaration "uint *local_50;" type_identifier (pointer_declarator "*local_50" * identifier) ;) (declaration "undefined1 auStack_3c [16];" type_identifier (array_declarator "auStack_3c [16]" identifier [ number_literal ]) ;) (declaration "uint *local_2c;" type_identifier (pointer_declarator "*local_2c" * identifier) ;) (expression_statement "puVar2 = PTR___stack_chk_guard_00097540;" (assignment_expression "puVar2 = PTR___stack_chk_guard_00097540" identifier = identifier) ;) (expression_statement "puVar28 = (uint *)((int)param_1 * 4 + -4);" (assignment_expression "puVar28 = (uint *)((int)param_1 * 4 + -4)" identifier = (cast_expression "(uint *)((int)param_1 * 4 + -4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_1 * 4 + -4)" ( (binary_expression "(int)param_1 * 4 + -4" (binary_expression "(int)param_1 * 4" (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal) + number_literal) )))) ;) (expression_statement "local_2c = *(uint **)PTR___stack_chk_guard_00097540;" (assignment_expression "local_2c = *(uint **)PTR___stack_chk_guard_00097540" identifier = (pointer_expression "*(uint **)PTR___stack_chk_guard_00097540" * (cast_expression "(uint **)PTR___stack_chk_guard_00097540" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) ;) (expression_statement "uVar20 = param_3[(int)param_1 + -1];" (assignment_expression "uVar20 = param_3[(int)param_1 + -1]" identifier = (subscript_expression "param_3[(int)param_1 + -1]" identifier [ (binary_expression "(int)param_1 + -1" (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ])) ;) (expression_statement "uVar13 = param_2[(int)param_1 + -1];" (assignment_expression "uVar13 = param_2[(int)param_1 + -1]" identifier = (subscript_expression "param_2[(int)param_1 + -1]" identifier [ (binary_expression "(int)param_1 + -1" (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ])) ;) (expression_statement "uVar3 = uVar13 | uVar20;" (assignment_expression "uVar3 = uVar13 | uVar20" identifier = (binary_expression "uVar13 | uVar20" identifier | identifier)) ;) (if_statement "if ((uint *)((int)param_4 + 1) == param_1) {\n    if (3 < uVar3) {\n      unaff_s5 = auStack_3c;\n      local_58 = (uint *)unaff_s5;\n      iVar9 = (*(code *)PTR___gmpn_hgcd2_00097460)\n                        (uVar13,param_2[(int)param_1 + -2],uVar20,param_3[(int)param_1 + -2]);\n      if (iVar9 != 0) goto LAB_00052bb8;\n    }\nLAB_00052b18:\n    local_50 = param_6;\n    local_58 = (uint *)(PTR_LAB_0009707c + 0x2960);\n    local_54 = param_5;\n    puVar29 = param_3;\n    puVar25 = param_1;\n    puVar18 = param_4;\n    puVar4 = (uint *)(*(code *)PTR___gmpn_gcd_subdiv_step_00097118)(param_2);\n  }\n  else {\n    uVar16 = param_2[(int)param_1 + -2];\n    uVar23 = param_3[(int)param_1 + -2];\n    if (-1 < (int)uVar3) {\n      if (uVar3 < 0x10000) {\n        iVar9 = 0x18;\n        if (uVar3 < 0x100) {\n          iVar9 = 0;\n        }\n        iVar24 = 9;\n        if (uVar3 < 0x100) {\n          iVar24 = 1;\n        }\n      }\n      else {\n        iVar9 = 8;\n        if (uVar3 < 0x1000000) {\n          iVar9 = 0x10;\n        }\n        iVar24 = 0x19;\n        if (uVar3 < 0x1000000) {\n          iVar24 = 0x11;\n        }\n      }\n      uVar3 = iVar9 - (uint)(byte)PTR___gmpn_clz_tab_0009718c[uVar3 >> iVar24];\n      uVar10 = 0x20 - uVar3;\n      uVar13 = uVar13 << (uVar3 & 0x1f) | uVar16 >> (uVar10 & 0x1f);\n      uVar16 = param_2[(int)param_1 + -3] >> (uVar10 & 0x1f) | uVar16 << (uVar3 & 0x1f);\n      uVar20 = uVar20 << (uVar3 & 0x1f) | uVar23 >> (uVar10 & 0x1f);\n      uVar23 = param_3[(int)param_1 + -3] >> (uVar10 & 0x1f) | uVar23 << (uVar3 & 0x1f);\n    }\n    unaff_s5 = auStack_3c;\n    local_58 = (uint *)unaff_s5;\n    iVar9 = (*(code *)PTR___gmpn_hgcd2_00097460)(uVar13,uVar16,uVar20,uVar23);\n    if (iVar9 == 0) goto LAB_00052b18;\nLAB_00052bb8:\n    unaff_s5 = auStack_3c;\n    (*(code *)PTR___gmpn_hgcd_matrix_mul_1_000973f4)(param_5,unaff_s5,param_6);\n    if (param_1 != (uint *)0x0) {\n      iVar9 = (int)param_1 + -1;\n      uVar3 = *param_2;\n      if (iVar9 == 0) {\n        *param_6 = uVar3;\n        puVar28 = param_6;\n      }\n      else {\n        puVar28 = param_6;\n        puVar29 = param_2 + 1;\n        do {\n          *puVar28 = uVar3;\n          iVar9 = iVar9 + -1;\n          uVar3 = *puVar29;\n          puVar28 = puVar28 + 1;\n          puVar29 = puVar29 + 1;\n        } while (iVar9 != 0);\n        param_6[(int)param_1 + -1] = uVar3;\n        puVar28 = param_6 + (int)param_1 + -1;\n      }\n    }\n    puVar29 = param_2;\n    puVar25 = param_6;\n    puVar18 = param_3;\n    local_58 = param_1;\n    puVar4 = (uint *)(*(code *)PTR___gmpn_matrix22_mul1_inverse_vector_00097488)(unaff_s5);\n  }" if (parenthesized_expression "((uint *)((int)param_4 + 1) == param_1)" ( (binary_expression "(uint *)((int)param_4 + 1) == param_1" (cast_expression "(uint *)((int)param_4 + 1)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_4 + 1)" ( (binary_expression "(int)param_4 + 1" (cast_expression "(int)param_4" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))) == identifier) )) (compound_statement "{\n    if (3 < uVar3) {\n      unaff_s5 = auStack_3c;\n      local_58 = (uint *)unaff_s5;\n      iVar9 = (*(code *)PTR___gmpn_hgcd2_00097460)\n                        (uVar13,param_2[(int)param_1 + -2],uVar20,param_3[(int)param_1 + -2]);\n      if (iVar9 != 0) goto LAB_00052bb8;\n    }\nLAB_00052b18:\n    local_50 = param_6;\n    local_58 = (uint *)(PTR_LAB_0009707c + 0x2960);\n    local_54 = param_5;\n    puVar29 = param_3;\n    puVar25 = param_1;\n    puVar18 = param_4;\n    puVar4 = (uint *)(*(code *)PTR___gmpn_gcd_subdiv_step_00097118)(param_2);\n  }" { (if_statement "if (3 < uVar3) {\n      unaff_s5 = auStack_3c;\n      local_58 = (uint *)unaff_s5;\n      iVar9 = (*(code *)PTR___gmpn_hgcd2_00097460)\n                        (uVar13,param_2[(int)param_1 + -2],uVar20,param_3[(int)param_1 + -2]);\n      if (iVar9 != 0) goto LAB_00052bb8;\n    }" if (parenthesized_expression "(3 < uVar3)" ( (binary_expression "3 < uVar3" number_literal < identifier) )) (compound_statement "{\n      unaff_s5 = auStack_3c;\n      local_58 = (uint *)unaff_s5;\n      iVar9 = (*(code *)PTR___gmpn_hgcd2_00097460)\n                        (uVar13,param_2[(int)param_1 + -2],uVar20,param_3[(int)param_1 + -2]);\n      if (iVar9 != 0) goto LAB_00052bb8;\n    }" { (expression_statement "unaff_s5 = auStack_3c;" (assignment_expression "unaff_s5 = auStack_3c" identifier = identifier) ;) (expression_statement "local_58 = (uint *)unaff_s5;" (assignment_expression "local_58 = (uint *)unaff_s5" identifier = (cast_expression "(uint *)unaff_s5" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "iVar9 = (*(code *)PTR___gmpn_hgcd2_00097460)\n                        (uVar13,param_2[(int)param_1 + -2],uVar20,param_3[(int)param_1 + -2]);" (assignment_expression "iVar9 = (*(code *)PTR___gmpn_hgcd2_00097460)\n                        (uVar13,param_2[(int)param_1 + -2],uVar20,param_3[(int)param_1 + -2])" identifier = (call_expression "(*(code *)PTR___gmpn_hgcd2_00097460)\n                        (uVar13,param_2[(int)param_1 + -2],uVar20,param_3[(int)param_1 + -2])" (parenthesized_expression "(*(code *)PTR___gmpn_hgcd2_00097460)" ( (pointer_expression "*(code *)PTR___gmpn_hgcd2_00097460" * (cast_expression "(code *)PTR___gmpn_hgcd2_00097460" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(uVar13,param_2[(int)param_1 + -2],uVar20,param_3[(int)param_1 + -2])" ( identifier , (subscript_expression "param_2[(int)param_1 + -2]" identifier [ (binary_expression "(int)param_1 + -2" (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ]) , identifier , (subscript_expression "param_3[(int)param_1 + -2]" identifier [ (binary_expression "(int)param_1 + -2" (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ]) )))) ;) (if_statement "if (iVar9 != 0) goto LAB_00052bb8;" if (parenthesized_expression "(iVar9 != 0)" ( (binary_expression "iVar9 != 0" identifier != number_literal) )) (goto_statement "goto LAB_00052bb8;" goto statement_identifier ;)) })) (labeled_statement "LAB_00052b18:\n    local_50 = param_6;" statement_identifier : (expression_statement "local_50 = param_6;" (assignment_expression "local_50 = param_6" identifier = identifier) ;)) (expression_statement "local_58 = (uint *)(PTR_LAB_0009707c + 0x2960);" (assignment_expression "local_58 = (uint *)(PTR_LAB_0009707c + 0x2960)" identifier = (cast_expression "(uint *)(PTR_LAB_0009707c + 0x2960)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_0009707c + 0x2960)" ( (binary_expression "PTR_LAB_0009707c + 0x2960" identifier + number_literal) )))) ;) (expression_statement "local_54 = param_5;" (assignment_expression "local_54 = param_5" identifier = identifier) ;) (expression_statement "puVar29 = param_3;" (assignment_expression "puVar29 = param_3" identifier = identifier) ;) (expression_statement "puVar25 = param_1;" (assignment_expression "puVar25 = param_1" identifier = identifier) ;) (expression_statement "puVar18 = param_4;" (assignment_expression "puVar18 = param_4" identifier = identifier) ;) (expression_statement "puVar4 = (uint *)(*(code *)PTR___gmpn_gcd_subdiv_step_00097118)(param_2);" (assignment_expression "puVar4 = (uint *)(*(code *)PTR___gmpn_gcd_subdiv_step_00097118)(param_2)" identifier = (cast_expression "(uint *)(*(code *)PTR___gmpn_gcd_subdiv_step_00097118)(param_2)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)PTR___gmpn_gcd_subdiv_step_00097118)(param_2)" (parenthesized_expression "(*(code *)PTR___gmpn_gcd_subdiv_step_00097118)" ( (pointer_expression "*(code *)PTR___gmpn_gcd_subdiv_step_00097118" * (cast_expression "(code *)PTR___gmpn_gcd_subdiv_step_00097118" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(param_2)" ( identifier ))))) ;) }) (else_clause "else {\n    uVar16 = param_2[(int)param_1 + -2];\n    uVar23 = param_3[(int)param_1 + -2];\n    if (-1 < (int)uVar3) {\n      if (uVar3 < 0x10000) {\n        iVar9 = 0x18;\n        if (uVar3 < 0x100) {\n          iVar9 = 0;\n        }\n        iVar24 = 9;\n        if (uVar3 < 0x100) {\n          iVar24 = 1;\n        }\n      }\n      else {\n        iVar9 = 8;\n        if (uVar3 < 0x1000000) {\n          iVar9 = 0x10;\n        }\n        iVar24 = 0x19;\n        if (uVar3 < 0x1000000) {\n          iVar24 = 0x11;\n        }\n      }\n      uVar3 = iVar9 - (uint)(byte)PTR___gmpn_clz_tab_0009718c[uVar3 >> iVar24];\n      uVar10 = 0x20 - uVar3;\n      uVar13 = uVar13 << (uVar3 & 0x1f) | uVar16 >> (uVar10 & 0x1f);\n      uVar16 = param_2[(int)param_1 + -3] >> (uVar10 & 0x1f) | uVar16 << (uVar3 & 0x1f);\n      uVar20 = uVar20 << (uVar3 & 0x1f) | uVar23 >> (uVar10 & 0x1f);\n      uVar23 = param_3[(int)param_1 + -3] >> (uVar10 & 0x1f) | uVar23 << (uVar3 & 0x1f);\n    }\n    unaff_s5 = auStack_3c;\n    local_58 = (uint *)unaff_s5;\n    iVar9 = (*(code *)PTR___gmpn_hgcd2_00097460)(uVar13,uVar16,uVar20,uVar23);\n    if (iVar9 == 0) goto LAB_00052b18;\nLAB_00052bb8:\n    unaff_s5 = auStack_3c;\n    (*(code *)PTR___gmpn_hgcd_matrix_mul_1_000973f4)(param_5,unaff_s5,param_6);\n    if (param_1 != (uint *)0x0) {\n      iVar9 = (int)param_1 + -1;\n      uVar3 = *param_2;\n      if (iVar9 == 0) {\n        *param_6 = uVar3;\n        puVar28 = param_6;\n      }\n      else {\n        puVar28 = param_6;\n        puVar29 = param_2 + 1;\n        do {\n          *puVar28 = uVar3;\n          iVar9 = iVar9 + -1;\n          uVar3 = *puVar29;\n          puVar28 = puVar28 + 1;\n          puVar29 = puVar29 + 1;\n        } while (iVar9 != 0);\n        param_6[(int)param_1 + -1] = uVar3;\n        puVar28 = param_6 + (int)param_1 + -1;\n      }\n    }\n    puVar29 = param_2;\n    puVar25 = param_6;\n    puVar18 = param_3;\n    local_58 = param_1;\n    puVar4 = (uint *)(*(code *)PTR___gmpn_matrix22_mul1_inverse_vector_00097488)(unaff_s5);\n  }" else (compound_statement "{\n    uVar16 = param_2[(int)param_1 + -2];\n    uVar23 = param_3[(int)param_1 + -2];\n    if (-1 < (int)uVar3) {\n      if (uVar3 < 0x10000) {\n        iVar9 = 0x18;\n        if (uVar3 < 0x100) {\n          iVar9 = 0;\n        }\n        iVar24 = 9;\n        if (uVar3 < 0x100) {\n          iVar24 = 1;\n        }\n      }\n      else {\n        iVar9 = 8;\n        if (uVar3 < 0x1000000) {\n          iVar9 = 0x10;\n        }\n        iVar24 = 0x19;\n        if (uVar3 < 0x1000000) {\n          iVar24 = 0x11;\n        }\n      }\n      uVar3 = iVar9 - (uint)(byte)PTR___gmpn_clz_tab_0009718c[uVar3 >> iVar24];\n      uVar10 = 0x20 - uVar3;\n      uVar13 = uVar13 << (uVar3 & 0x1f) | uVar16 >> (uVar10 & 0x1f);\n      uVar16 = param_2[(int)param_1 + -3] >> (uVar10 & 0x1f) | uVar16 << (uVar3 & 0x1f);\n      uVar20 = uVar20 << (uVar3 & 0x1f) | uVar23 >> (uVar10 & 0x1f);\n      uVar23 = param_3[(int)param_1 + -3] >> (uVar10 & 0x1f) | uVar23 << (uVar3 & 0x1f);\n    }\n    unaff_s5 = auStack_3c;\n    local_58 = (uint *)unaff_s5;\n    iVar9 = (*(code *)PTR___gmpn_hgcd2_00097460)(uVar13,uVar16,uVar20,uVar23);\n    if (iVar9 == 0) goto LAB_00052b18;\nLAB_00052bb8:\n    unaff_s5 = auStack_3c;\n    (*(code *)PTR___gmpn_hgcd_matrix_mul_1_000973f4)(param_5,unaff_s5,param_6);\n    if (param_1 != (uint *)0x0) {\n      iVar9 = (int)param_1 + -1;\n      uVar3 = *param_2;\n      if (iVar9 == 0) {\n        *param_6 = uVar3;\n        puVar28 = param_6;\n      }\n      else {\n        puVar28 = param_6;\n        puVar29 = param_2 + 1;\n        do {\n          *puVar28 = uVar3;\n          iVar9 = iVar9 + -1;\n          uVar3 = *puVar29;\n          puVar28 = puVar28 + 1;\n          puVar29 = puVar29 + 1;\n        } while (iVar9 != 0);\n        param_6[(int)param_1 + -1] = uVar3;\n        puVar28 = param_6 + (int)param_1 + -1;\n      }\n    }\n    puVar29 = param_2;\n    puVar25 = param_6;\n    puVar18 = param_3;\n    local_58 = param_1;\n    puVar4 = (uint *)(*(code *)PTR___gmpn_matrix22_mul1_inverse_vector_00097488)(unaff_s5);\n  }" { (expression_statement "uVar16 = param_2[(int)param_1 + -2];" (assignment_expression "uVar16 = param_2[(int)param_1 + -2]" identifier = (subscript_expression "param_2[(int)param_1 + -2]" identifier [ (binary_expression "(int)param_1 + -2" (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ])) ;) (expression_statement "uVar23 = param_3[(int)param_1 + -2];" (assignment_expression "uVar23 = param_3[(int)param_1 + -2]" identifier = (subscript_expression "param_3[(int)param_1 + -2]" identifier [ (binary_expression "(int)param_1 + -2" (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ])) ;) (if_statement "if (-1 < (int)uVar3) {\n      if (uVar3 < 0x10000) {\n        iVar9 = 0x18;\n        if (uVar3 < 0x100) {\n          iVar9 = 0;\n        }\n        iVar24 = 9;\n        if (uVar3 < 0x100) {\n          iVar24 = 1;\n        }\n      }\n      else {\n        iVar9 = 8;\n        if (uVar3 < 0x1000000) {\n          iVar9 = 0x10;\n        }\n        iVar24 = 0x19;\n        if (uVar3 < 0x1000000) {\n          iVar24 = 0x11;\n        }\n      }\n      uVar3 = iVar9 - (uint)(byte)PTR___gmpn_clz_tab_0009718c[uVar3 >> iVar24];\n      uVar10 = 0x20 - uVar3;\n      uVar13 = uVar13 << (uVar3 & 0x1f) | uVar16 >> (uVar10 & 0x1f);\n      uVar16 = param_2[(int)param_1 + -3] >> (uVar10 & 0x1f) | uVar16 << (uVar3 & 0x1f);\n      uVar20 = uVar20 << (uVar3 & 0x1f) | uVar23 >> (uVar10 & 0x1f);\n      uVar23 = param_3[(int)param_1 + -3] >> (uVar10 & 0x1f) | uVar23 << (uVar3 & 0x1f);\n    }" if (parenthesized_expression "(-1 < (int)uVar3)" ( (binary_expression "-1 < (int)uVar3" number_literal < (cast_expression "(int)uVar3" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n      if (uVar3 < 0x10000) {\n        iVar9 = 0x18;\n        if (uVar3 < 0x100) {\n          iVar9 = 0;\n        }\n        iVar24 = 9;\n        if (uVar3 < 0x100) {\n          iVar24 = 1;\n        }\n      }\n      else {\n        iVar9 = 8;\n        if (uVar3 < 0x1000000) {\n          iVar9 = 0x10;\n        }\n        iVar24 = 0x19;\n        if (uVar3 < 0x1000000) {\n          iVar24 = 0x11;\n        }\n      }\n      uVar3 = iVar9 - (uint)(byte)PTR___gmpn_clz_tab_0009718c[uVar3 >> iVar24];\n      uVar10 = 0x20 - uVar3;\n      uVar13 = uVar13 << (uVar3 & 0x1f) | uVar16 >> (uVar10 & 0x1f);\n      uVar16 = param_2[(int)param_1 + -3] >> (uVar10 & 0x1f) | uVar16 << (uVar3 & 0x1f);\n      uVar20 = uVar20 << (uVar3 & 0x1f) | uVar23 >> (uVar10 & 0x1f);\n      uVar23 = param_3[(int)param_1 + -3] >> (uVar10 & 0x1f) | uVar23 << (uVar3 & 0x1f);\n    }" { (if_statement "if (uVar3 < 0x10000) {\n        iVar9 = 0x18;\n        if (uVar3 < 0x100) {\n          iVar9 = 0;\n        }\n        iVar24 = 9;\n        if (uVar3 < 0x100) {\n          iVar24 = 1;\n        }\n      }\n      else {\n        iVar9 = 8;\n        if (uVar3 < 0x1000000) {\n          iVar9 = 0x10;\n        }\n        iVar24 = 0x19;\n        if (uVar3 < 0x1000000) {\n          iVar24 = 0x11;\n        }\n      }" if (parenthesized_expression "(uVar3 < 0x10000)" ( (binary_expression "uVar3 < 0x10000" identifier < number_literal) )) (compound_statement "{\n        iVar9 = 0x18;\n        if (uVar3 < 0x100) {\n          iVar9 = 0;\n        }\n        iVar24 = 9;\n        if (uVar3 < 0x100) {\n          iVar24 = 1;\n        }\n      }" { (expression_statement "iVar9 = 0x18;" (assignment_expression "iVar9 = 0x18" identifier = number_literal) ;) (if_statement "if (uVar3 < 0x100) {\n          iVar9 = 0;\n        }" if (parenthesized_expression "(uVar3 < 0x100)" ( (binary_expression "uVar3 < 0x100" identifier < number_literal) )) (compound_statement "{\n          iVar9 = 0;\n        }" { (expression_statement "iVar9 = 0;" (assignment_expression "iVar9 = 0" identifier = number_literal) ;) })) (expression_statement "iVar24 = 9;" (assignment_expression "iVar24 = 9" identifier = number_literal) ;) (if_statement "if (uVar3 < 0x100) {\n          iVar24 = 1;\n        }" if (parenthesized_expression "(uVar3 < 0x100)" ( (binary_expression "uVar3 < 0x100" identifier < number_literal) )) (compound_statement "{\n          iVar24 = 1;\n        }" { (expression_statement "iVar24 = 1;" (assignment_expression "iVar24 = 1" identifier = number_literal) ;) })) }) (else_clause "else {\n        iVar9 = 8;\n        if (uVar3 < 0x1000000) {\n          iVar9 = 0x10;\n        }\n        iVar24 = 0x19;\n        if (uVar3 < 0x1000000) {\n          iVar24 = 0x11;\n        }\n      }" else (compound_statement "{\n        iVar9 = 8;\n        if (uVar3 < 0x1000000) {\n          iVar9 = 0x10;\n        }\n        iVar24 = 0x19;\n        if (uVar3 < 0x1000000) {\n          iVar24 = 0x11;\n        }\n      }" { (expression_statement "iVar9 = 8;" (assignment_expression "iVar9 = 8" identifier = number_literal) ;) (if_statement "if (uVar3 < 0x1000000) {\n          iVar9 = 0x10;\n        }" if (parenthesized_expression "(uVar3 < 0x1000000)" ( (binary_expression "uVar3 < 0x1000000" identifier < number_literal) )) (compound_statement "{\n          iVar9 = 0x10;\n        }" { (expression_statement "iVar9 = 0x10;" (assignment_expression "iVar9 = 0x10" identifier = number_literal) ;) })) (expression_statement "iVar24 = 0x19;" (assignment_expression "iVar24 = 0x19" identifier = number_literal) ;) (if_statement "if (uVar3 < 0x1000000) {\n          iVar24 = 0x11;\n        }" if (parenthesized_expression "(uVar3 < 0x1000000)" ( (binary_expression "uVar3 < 0x1000000" identifier < number_literal) )) (compound_statement "{\n          iVar24 = 0x11;\n        }" { (expression_statement "iVar24 = 0x11;" (assignment_expression "iVar24 = 0x11" identifier = number_literal) ;) })) }))) (expression_statement "uVar3 = iVar9 - (uint)(byte)PTR___gmpn_clz_tab_0009718c[uVar3 >> iVar24];" (assignment_expression "uVar3 = iVar9 - (uint)(byte)PTR___gmpn_clz_tab_0009718c[uVar3 >> iVar24]" identifier = (binary_expression "iVar9 - (uint)(byte)PTR___gmpn_clz_tab_0009718c[uVar3 >> iVar24]" identifier - (cast_expression "(uint)(byte)PTR___gmpn_clz_tab_0009718c[uVar3 >> iVar24]" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(byte)PTR___gmpn_clz_tab_0009718c[uVar3 >> iVar24]" ( (type_descriptor "byte" type_identifier) ) (subscript_expression "PTR___gmpn_clz_tab_0009718c[uVar3 >> iVar24]" identifier [ (binary_expression "uVar3 >> iVar24" identifier >> identifier) ]))))) ;) (expression_statement "uVar10 = 0x20 - uVar3;" (assignment_expression "uVar10 = 0x20 - uVar3" identifier = (binary_expression "0x20 - uVar3" number_literal - identifier)) ;) (expression_statement "uVar13 = uVar13 << (uVar3 & 0x1f) | uVar16 >> (uVar10 & 0x1f);" (assignment_expression "uVar13 = uVar13 << (uVar3 & 0x1f) | uVar16 >> (uVar10 & 0x1f)" identifier = (binary_expression "uVar13 << (uVar3 & 0x1f) | uVar16 >> (uVar10 & 0x1f)" (binary_expression "uVar13 << (uVar3 & 0x1f)" identifier << (parenthesized_expression "(uVar3 & 0x1f)" ( (binary_expression "uVar3 & 0x1f" identifier & number_literal) ))) | (binary_expression "uVar16 >> (uVar10 & 0x1f)" identifier >> (parenthesized_expression "(uVar10 & 0x1f)" ( (binary_expression "uVar10 & 0x1f" identifier & number_literal) ))))) ;) (expression_statement "uVar16 = param_2[(int)param_1 + -3] >> (uVar10 & 0x1f) | uVar16 << (uVar3 & 0x1f);" (assignment_expression "uVar16 = param_2[(int)param_1 + -3] >> (uVar10 & 0x1f) | uVar16 << (uVar3 & 0x1f)" identifier = (binary_expression "param_2[(int)param_1 + -3] >> (uVar10 & 0x1f) | uVar16 << (uVar3 & 0x1f)" (binary_expression "param_2[(int)param_1 + -3] >> (uVar10 & 0x1f)" (subscript_expression "param_2[(int)param_1 + -3]" identifier [ (binary_expression "(int)param_1 + -3" (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ]) >> (parenthesized_expression "(uVar10 & 0x1f)" ( (binary_expression "uVar10 & 0x1f" identifier & number_literal) ))) | (binary_expression "uVar16 << (uVar3 & 0x1f)" identifier << (parenthesized_expression "(uVar3 & 0x1f)" ( (binary_expression "uVar3 & 0x1f" identifier & number_literal) ))))) ;) (expression_statement "uVar20 = uVar20 << (uVar3 & 0x1f) | uVar23 >> (uVar10 & 0x1f);" (assignment_expression "uVar20 = uVar20 << (uVar3 & 0x1f) | uVar23 >> (uVar10 & 0x1f)" identifier = (binary_expression "uVar20 << (uVar3 & 0x1f) | uVar23 >> (uVar10 & 0x1f)" (binary_expression "uVar20 << (uVar3 & 0x1f)" identifier << (parenthesized_expression "(uVar3 & 0x1f)" ( (binary_expression "uVar3 & 0x1f" identifier & number_literal) ))) | (binary_expression "uVar23 >> (uVar10 & 0x1f)" identifier >> (parenthesized_expression "(uVar10 & 0x1f)" ( (binary_expression "uVar10 & 0x1f" identifier & number_literal) ))))) ;) (expression_statement "uVar23 = param_3[(int)param_1 + -3] >> (uVar10 & 0x1f) | uVar23 << (uVar3 & 0x1f);" (assignment_expression "uVar23 = param_3[(int)param_1 + -3] >> (uVar10 & 0x1f) | uVar23 << (uVar3 & 0x1f)" identifier = (binary_expression "param_3[(int)param_1 + -3] >> (uVar10 & 0x1f) | uVar23 << (uVar3 & 0x1f)" (binary_expression "param_3[(int)param_1 + -3] >> (uVar10 & 0x1f)" (subscript_expression "param_3[(int)param_1 + -3]" identifier [ (binary_expression "(int)param_1 + -3" (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ]) >> (parenthesized_expression "(uVar10 & 0x1f)" ( (binary_expression "uVar10 & 0x1f" identifier & number_literal) ))) | (binary_expression "uVar23 << (uVar3 & 0x1f)" identifier << (parenthesized_expression "(uVar3 & 0x1f)" ( (binary_expression "uVar3 & 0x1f" identifier & number_literal) ))))) ;) })) (expression_statement "unaff_s5 = auStack_3c;" (assignment_expression "unaff_s5 = auStack_3c" identifier = identifier) ;) (expression_statement "local_58 = (uint *)unaff_s5;" (assignment_expression "local_58 = (uint *)unaff_s5" identifier = (cast_expression "(uint *)unaff_s5" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "iVar9 = (*(code *)PTR___gmpn_hgcd2_00097460)(uVar13,uVar16,uVar20,uVar23);" (assignment_expression "iVar9 = (*(code *)PTR___gmpn_hgcd2_00097460)(uVar13,uVar16,uVar20,uVar23)" identifier = (call_expression "(*(code *)PTR___gmpn_hgcd2_00097460)(uVar13,uVar16,uVar20,uVar23)" (parenthesized_expression "(*(code *)PTR___gmpn_hgcd2_00097460)" ( (pointer_expression "*(code *)PTR___gmpn_hgcd2_00097460" * (cast_expression "(code *)PTR___gmpn_hgcd2_00097460" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(uVar13,uVar16,uVar20,uVar23)" ( identifier , identifier , identifier , identifier )))) ;) (if_statement "if (iVar9 == 0) goto LAB_00052b18;" if (parenthesized_expression "(iVar9 == 0)" ( (binary_expression "iVar9 == 0" identifier == number_literal) )) (goto_statement "goto LAB_00052b18;" goto statement_identifier ;)) (labeled_statement "LAB_00052bb8:\n    unaff_s5 = auStack_3c;" statement_identifier : (expression_statement "unaff_s5 = auStack_3c;" (assignment_expression "unaff_s5 = auStack_3c" identifier = identifier) ;)) (expression_statement "(*(code *)PTR___gmpn_hgcd_matrix_mul_1_000973f4)(param_5,unaff_s5,param_6);" (call_expression "(*(code *)PTR___gmpn_hgcd_matrix_mul_1_000973f4)(param_5,unaff_s5,param_6)" (parenthesized_expression "(*(code *)PTR___gmpn_hgcd_matrix_mul_1_000973f4)" ( (pointer_expression "*(code *)PTR___gmpn_hgcd_matrix_mul_1_000973f4" * (cast_expression "(code *)PTR___gmpn_hgcd_matrix_mul_1_000973f4" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(param_5,unaff_s5,param_6)" ( identifier , identifier , identifier ))) ;) (if_statement "if (param_1 != (uint *)0x0) {\n      iVar9 = (int)param_1 + -1;\n      uVar3 = *param_2;\n      if (iVar9 == 0) {\n        *param_6 = uVar3;\n        puVar28 = param_6;\n      }\n      else {\n        puVar28 = param_6;\n        puVar29 = param_2 + 1;\n        do {\n          *puVar28 = uVar3;\n          iVar9 = iVar9 + -1;\n          uVar3 = *puVar29;\n          puVar28 = puVar28 + 1;\n          puVar29 = puVar29 + 1;\n        } while (iVar9 != 0);\n        param_6[(int)param_1 + -1] = uVar3;\n        puVar28 = param_6 + (int)param_1 + -1;\n      }\n    }" if (parenthesized_expression "(param_1 != (uint *)0x0)" ( (binary_expression "param_1 != (uint *)0x0" identifier != (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      iVar9 = (int)param_1 + -1;\n      uVar3 = *param_2;\n      if (iVar9 == 0) {\n        *param_6 = uVar3;\n        puVar28 = param_6;\n      }\n      else {\n        puVar28 = param_6;\n        puVar29 = param_2 + 1;\n        do {\n          *puVar28 = uVar3;\n          iVar9 = iVar9 + -1;\n          uVar3 = *puVar29;\n          puVar28 = puVar28 + 1;\n          puVar29 = puVar29 + 1;\n        } while (iVar9 != 0);\n        param_6[(int)param_1 + -1] = uVar3;\n        puVar28 = param_6 + (int)param_1 + -1;\n      }\n    }" { (expression_statement "iVar9 = (int)param_1 + -1;" (assignment_expression "iVar9 = (int)param_1 + -1" identifier = (binary_expression "(int)param_1 + -1" (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal)) ;) (expression_statement "uVar3 = *param_2;" (assignment_expression "uVar3 = *param_2" identifier = (pointer_expression "*param_2" * identifier)) ;) (if_statement "if (iVar9 == 0) {\n        *param_6 = uVar3;\n        puVar28 = param_6;\n      }\n      else {\n        puVar28 = param_6;\n        puVar29 = param_2 + 1;\n        do {\n          *puVar28 = uVar3;\n          iVar9 = iVar9 + -1;\n          uVar3 = *puVar29;\n          puVar28 = puVar28 + 1;\n          puVar29 = puVar29 + 1;\n        } while (iVar9 != 0);\n        param_6[(int)param_1 + -1] = uVar3;\n        puVar28 = param_6 + (int)param_1 + -1;\n      }" if (parenthesized_expression "(iVar9 == 0)" ( (binary_expression "iVar9 == 0" identifier == number_literal) )) (compound_statement "{\n        *param_6 = uVar3;\n        puVar28 = param_6;\n      }" { (expression_statement "*param_6 = uVar3;" (assignment_expression "*param_6 = uVar3" (pointer_expression "*param_6" * identifier) = identifier) ;) (expression_statement "puVar28 = param_6;" (assignment_expression "puVar28 = param_6" identifier = identifier) ;) }) (else_clause "else {\n        puVar28 = param_6;\n        puVar29 = param_2 + 1;\n        do {\n          *puVar28 = uVar3;\n          iVar9 = iVar9 + -1;\n          uVar3 = *puVar29;\n          puVar28 = puVar28 + 1;\n          puVar29 = puVar29 + 1;\n        } while (iVar9 != 0);\n        param_6[(int)param_1 + -1] = uVar3;\n        puVar28 = param_6 + (int)param_1 + -1;\n      }" else (compound_statement "{\n        puVar28 = param_6;\n        puVar29 = param_2 + 1;\n        do {\n          *puVar28 = uVar3;\n          iVar9 = iVar9 + -1;\n          uVar3 = *puVar29;\n          puVar28 = puVar28 + 1;\n          puVar29 = puVar29 + 1;\n        } while (iVar9 != 0);\n        param_6[(int)param_1 + -1] = uVar3;\n        puVar28 = param_6 + (int)param_1 + -1;\n      }" { (expression_statement "puVar28 = param_6;" (assignment_expression "puVar28 = param_6" identifier = identifier) ;) (expression_statement "puVar29 = param_2 + 1;" (assignment_expression "puVar29 = param_2 + 1" identifier = (binary_expression "param_2 + 1" identifier + number_literal)) ;) (do_statement "do {\n          *puVar28 = uVar3;\n          iVar9 = iVar9 + -1;\n          uVar3 = *puVar29;\n          puVar28 = puVar28 + 1;\n          puVar29 = puVar29 + 1;\n        } while (iVar9 != 0);" do (compound_statement "{\n          *puVar28 = uVar3;\n          iVar9 = iVar9 + -1;\n          uVar3 = *puVar29;\n          puVar28 = puVar28 + 1;\n          puVar29 = puVar29 + 1;\n        }" { (expression_statement "*puVar28 = uVar3;" (assignment_expression "*puVar28 = uVar3" (pointer_expression "*puVar28" * identifier) = identifier) ;) (expression_statement "iVar9 = iVar9 + -1;" (assignment_expression "iVar9 = iVar9 + -1" identifier = (binary_expression "iVar9 + -1" identifier + number_literal)) ;) (expression_statement "uVar3 = *puVar29;" (assignment_expression "uVar3 = *puVar29" identifier = (pointer_expression "*puVar29" * identifier)) ;) (expression_statement "puVar28 = puVar28 + 1;" (assignment_expression "puVar28 = puVar28 + 1" identifier = (binary_expression "puVar28 + 1" identifier + number_literal)) ;) (expression_statement "puVar29 = puVar29 + 1;" (assignment_expression "puVar29 = puVar29 + 1" identifier = (binary_expression "puVar29 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar9 != 0)" ( (binary_expression "iVar9 != 0" identifier != number_literal) )) ;) (expression_statement "param_6[(int)param_1 + -1] = uVar3;" (assignment_expression "param_6[(int)param_1 + -1] = uVar3" (subscript_expression "param_6[(int)param_1 + -1]" identifier [ (binary_expression "(int)param_1 + -1" (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ]) = identifier) ;) (expression_statement "puVar28 = param_6 + (int)param_1 + -1;" (assignment_expression "puVar28 = param_6 + (int)param_1 + -1" identifier = (binary_expression "param_6 + (int)param_1 + -1" (binary_expression "param_6 + (int)param_1" identifier + (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier)) + number_literal)) ;) }))) })) (expression_statement "puVar29 = param_2;" (assignment_expression "puVar29 = param_2" identifier = identifier) ;) (expression_statement "puVar25 = param_6;" (assignment_expression "puVar25 = param_6" identifier = identifier) ;) (expression_statement "puVar18 = param_3;" (assignment_expression "puVar18 = param_3" identifier = identifier) ;) (expression_statement "local_58 = param_1;" (assignment_expression "local_58 = param_1" identifier = identifier) ;) (expression_statement "puVar4 = (uint *)(*(code *)PTR___gmpn_matrix22_mul1_inverse_vector_00097488)(unaff_s5);" (assignment_expression "puVar4 = (uint *)(*(code *)PTR___gmpn_matrix22_mul1_inverse_vector_00097488)(unaff_s5)" identifier = (cast_expression "(uint *)(*(code *)PTR___gmpn_matrix22_mul1_inverse_vector_00097488)(unaff_s5)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)PTR___gmpn_matrix22_mul1_inverse_vector_00097488)(unaff_s5)" (parenthesized_expression "(*(code *)PTR___gmpn_matrix22_mul1_inverse_vector_00097488)" ( (pointer_expression "*(code *)PTR___gmpn_matrix22_mul1_inverse_vector_00097488" * (cast_expression "(code *)PTR___gmpn_matrix22_mul1_inverse_vector_00097488" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(unaff_s5)" ( identifier ))))) ;) }))) (if_statement "if (local_2c == *(uint **)puVar2) {\n    return puVar4;\n  }" if (parenthesized_expression "(local_2c == *(uint **)puVar2)" ( (binary_expression "local_2c == *(uint **)puVar2" identifier == (pointer_expression "*(uint **)puVar2" * (cast_expression "(uint **)puVar2" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) )) (compound_statement "{\n    return puVar4;\n  }" { (return_statement "return puVar4;" return identifier ;) })) (expression_statement "uVar39 = 0x52c64;" (assignment_expression "uVar39 = 0x52c64" identifier = number_literal) ;) (expression_statement "puVar4 = local_2c;" (assignment_expression "puVar4 = local_2c" identifier = identifier) ;) (expression_statement "puVar33 = PTR___stack_chk_fail_000974d0;" (assignment_expression "puVar33 = PTR___stack_chk_fail_000974d0" identifier = identifier) ;) (expression_statement "(*(code *)PTR___stack_chk_fail_000974d0)();" (call_expression "(*(code *)PTR___stack_chk_fail_000974d0)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_000974d0)" ( (pointer_expression "*(code *)PTR___stack_chk_fail_000974d0" * (cast_expression "(code *)PTR___stack_chk_fail_000974d0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (expression_statement "iVar9 = local_54;" (assignment_expression "iVar9 = local_54" identifier = identifier) ;) (expression_statement "apuStack_a8[0] = (uint *)(puVar33 + 0x4c3d0);" (assignment_expression "apuStack_a8[0] = (uint *)(puVar33 + 0x4c3d0)" (subscript_expression "apuStack_a8[0]" identifier [ number_literal ]) = (cast_expression "(uint *)(puVar33 + 0x4c3d0)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar33 + 0x4c3d0)" ( (binary_expression "puVar33 + 0x4c3d0" identifier + number_literal) )))) ;) (expression_statement "puVar36 = auStack_c0;" (assignment_expression "puVar36 = auStack_c0" identifier = identifier) ;) (expression_statement "iStack_70 = param_5;" (assignment_expression "iStack_70 = param_5" identifier = identifier) ;) (expression_statement "piVar30 = *(int **)(puVar33 + 0x448d0);" (assignment_expression "piVar30 = *(int **)(puVar33 + 0x448d0)" identifier = (pointer_expression "*(int **)(puVar33 + 0x448d0)" * (cast_expression "(int **)(puVar33 + 0x448d0)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar33 + 0x448d0)" ( (binary_expression "puVar33 + 0x448d0" identifier + number_literal) ))))) ;) (expression_statement "iVar24 = (int)puVar18 + local_54;" (assignment_expression "iVar24 = (int)puVar18 + local_54" identifier = (binary_expression "(int)puVar18 + local_54" (cast_expression "(int)puVar18" ( (type_descriptor "int" primitive_type) ) identifier) + identifier)) ;) (expression_statement "puStack_74 = param_6;" (assignment_expression "puStack_74 = param_6" identifier = identifier) ;) (expression_statement "puStack_8c = puVar2;" (assignment_expression "puStack_8c = puVar2" identifier = identifier) ;) (expression_statement "iStack_98 = 0;" (assignment_expression "iStack_98 = 0" identifier = number_literal) ;) (expression_statement "iStack_94 = *piVar30;" (assignment_expression "iStack_94 = *piVar30" identifier = (pointer_expression "*piVar30" * identifier)) ;) (expression_statement "puStack_90 = puVar28;" (assignment_expression "puStack_90 = puVar28" identifier = identifier) ;) (expression_statement "puStack_88 = param_2;" (assignment_expression "puStack_88 = param_2" identifier = identifier) ;) (expression_statement "puStack_84 = param_3;" (assignment_expression "puStack_84 = param_3" identifier = identifier) ;) (expression_statement "puStack_80 = param_1;" (assignment_expression "puStack_80 = param_1" identifier = identifier) ;) (expression_statement "puStack_7c = unaff_s5;" (assignment_expression "puStack_7c = unaff_s5" identifier = identifier) ;) (expression_statement "puStack_78 = param_4;" (assignment_expression "puStack_78 = param_4" identifier = identifier) ;) (expression_statement "uStack_6c = uVar39;" (assignment_expression "uStack_6c = uVar39" identifier = identifier) ;) (if_statement "if ((uint)(iVar24 * 4) < 0x7f01) {\n    iVar32 = -(iVar24 * 4 + 7U & 0xfffffff8);\n    puVar36 = auStack_c0 + iVar32;\n    puVar19 = (uint *)((int)apuStack_a8 + iVar32);\n    puVar28 = local_58;\n  }\n  else {\n    apuStack_a8[3] = local_58;\n    puVar19 = (uint *)(**(code **)(puVar33 + 0x44680))(&iStack_98);\n    puVar28 = apuStack_a8[3];\n  }" if (parenthesized_expression "((uint)(iVar24 * 4) < 0x7f01)" ( (binary_expression "(uint)(iVar24 * 4) < 0x7f01" (call_expression "(uint)(iVar24 * 4)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(iVar24 * 4)" ( (binary_expression "iVar24 * 4" identifier * number_literal) ))) < number_literal) )) (compound_statement "{\n    iVar32 = -(iVar24 * 4 + 7U & 0xfffffff8);\n    puVar36 = auStack_c0 + iVar32;\n    puVar19 = (uint *)((int)apuStack_a8 + iVar32);\n    puVar28 = local_58;\n  }" { (expression_statement "iVar32 = -(iVar24 * 4 + 7U & 0xfffffff8);" (assignment_expression "iVar32 = -(iVar24 * 4 + 7U & 0xfffffff8)" identifier = (unary_expression "-(iVar24 * 4 + 7U & 0xfffffff8)" - (parenthesized_expression "(iVar24 * 4 + 7U & 0xfffffff8)" ( (binary_expression "iVar24 * 4 + 7U & 0xfffffff8" (binary_expression "iVar24 * 4 + 7U" (binary_expression "iVar24 * 4" identifier * number_literal) + number_literal) & number_literal) )))) ;) (expression_statement "puVar36 = auStack_c0 + iVar32;" (assignment_expression "puVar36 = auStack_c0 + iVar32" identifier = (binary_expression "auStack_c0 + iVar32" identifier + identifier)) ;) (expression_statement "puVar19 = (uint *)((int)apuStack_a8 + iVar32);" (assignment_expression "puVar19 = (uint *)((int)apuStack_a8 + iVar32)" identifier = (cast_expression "(uint *)((int)apuStack_a8 + iVar32)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)apuStack_a8 + iVar32)" ( (binary_expression "(int)apuStack_a8 + iVar32" (cast_expression "(int)apuStack_a8" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) ;) (expression_statement "puVar28 = local_58;" (assignment_expression "puVar28 = local_58" identifier = identifier) ;) }) (else_clause "else {\n    apuStack_a8[3] = local_58;\n    puVar19 = (uint *)(**(code **)(puVar33 + 0x44680))(&iStack_98);\n    puVar28 = apuStack_a8[3];\n  }" else (compound_statement "{\n    apuStack_a8[3] = local_58;\n    puVar19 = (uint *)(**(code **)(puVar33 + 0x44680))(&iStack_98);\n    puVar28 = apuStack_a8[3];\n  }" { (expression_statement "apuStack_a8[3] = local_58;" (assignment_expression "apuStack_a8[3] = local_58" (subscript_expression "apuStack_a8[3]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar19 = (uint *)(**(code **)(puVar33 + 0x44680))(&iStack_98);" (assignment_expression "puVar19 = (uint *)(**(code **)(puVar33 + 0x44680))(&iStack_98)" identifier = (cast_expression "(uint *)(**(code **)(puVar33 + 0x44680))(&iStack_98)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(**(code **)(puVar33 + 0x44680))(&iStack_98)" (parenthesized_expression "(**(code **)(puVar33 + 0x44680))" ( (pointer_expression "**(code **)(puVar33 + 0x44680)" * (pointer_expression "*(code **)(puVar33 + 0x44680)" * (cast_expression "(code **)(puVar33 + 0x44680)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar33 + 0x44680)" ( (binary_expression "puVar33 + 0x44680" identifier + number_literal) ))))) )) (argument_list "(&iStack_98)" ( (pointer_expression "&iStack_98" & identifier) ))))) ;) (expression_statement "puVar28 = apuStack_a8[3];" (assignment_expression "puVar28 = apuStack_a8[3]" identifier = (subscript_expression "apuStack_a8[3]" identifier [ number_literal ])) ;) }))) (expression_statement "pcVar34 = (code *)apuStack_a8[0][-0x1f63];" (assignment_expression "pcVar34 = (code *)apuStack_a8[0][-0x1f63]" identifier = (cast_expression "(code *)apuStack_a8[0][-0x1f63]" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "apuStack_a8[0][-0x1f63]" (subscript_expression "apuStack_a8[0]" identifier [ number_literal ]) [ number_literal ]))) ;) (expression_statement "*(int *)(puVar36 + 0x10) = iVar9;" (assignment_expression "*(int *)(puVar36 + 0x10) = iVar9" (pointer_expression "*(int *)(puVar36 + 0x10)" * (cast_expression "(int *)(puVar36 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar36 + 0x10)" ( (binary_expression "puVar36 + 0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "puVar17 = puVar25;" (assignment_expression "puVar17 = puVar25" identifier = identifier) ;) (expression_statement "puVar21 = puVar18;" (assignment_expression "puVar21 = puVar18" identifier = identifier) ;) (expression_statement "(*pcVar34)(puVar19);" (call_expression "(*pcVar34)(puVar19)" (parenthesized_expression "(*pcVar34)" ( (pointer_expression "*pcVar34" * identifier) )) (argument_list "(puVar19)" ( identifier ))) ;) (expression_statement "puVar31 = (uint *)(iVar24 - (uint)((int)puVar29 < iVar24));" (assignment_expression "puVar31 = (uint *)(iVar24 - (uint)((int)puVar29 < iVar24))" identifier = (cast_expression "(uint *)(iVar24 - (uint)((int)puVar29 < iVar24))" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar24 - (uint)((int)puVar29 < iVar24))" ( (binary_expression "iVar24 - (uint)((int)puVar29 < iVar24)" identifier - (call_expression "(uint)((int)puVar29 < iVar24)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((int)puVar29 < iVar24)" ( (binary_expression "(int)puVar29 < iVar24" (cast_expression "(int)puVar29" ( (type_descriptor "int" primitive_type) ) identifier) < identifier) )))) )))) ;) (if_statement "if (((puVar31 != (uint *)0x0) &&\n      (puVar17 = puVar4, puVar21 = puVar19, puVar28 = puVar31,\n      iVar24 = (*(code *)apuStack_a8[0][-0x1ecb])(puVar4), iVar24 != 0)) &&\n     ((int)puVar31 < (int)puVar29)) {\n    puVar14 = puVar4 + (int)puVar31;\n    uVar3 = *puVar14;\n    puVar17 = (uint *)(uVar3 - 1);\n    *puVar14 = (uint)puVar17;\n    puVar5 = puVar31;\n    while ((uVar3 == 0 && (puVar5 = (uint *)((int)puVar5 + 1), puVar29 != puVar5))) {\n      uVar3 = puVar14[1];\n      puVar14 = puVar14 + 1;\n      puVar17 = (uint *)(uVar3 - 1);\n      *puVar14 = (uint)puVar17;\n    }\n  }" if (parenthesized_expression "(((puVar31 != (uint *)0x0) &&\n      (puVar17 = puVar4, puVar21 = puVar19, puVar28 = puVar31,\n      iVar24 = (*(code *)apuStack_a8[0][-0x1ecb])(puVar4), iVar24 != 0)) &&\n     ((int)puVar31 < (int)puVar29))" ( (binary_expression "((puVar31 != (uint *)0x0) &&\n      (puVar17 = puVar4, puVar21 = puVar19, puVar28 = puVar31,\n      iVar24 = (*(code *)apuStack_a8[0][-0x1ecb])(puVar4), iVar24 != 0)) &&\n     ((int)puVar31 < (int)puVar29)" (parenthesized_expression "((puVar31 != (uint *)0x0) &&\n      (puVar17 = puVar4, puVar21 = puVar19, puVar28 = puVar31,\n      iVar24 = (*(code *)apuStack_a8[0][-0x1ecb])(puVar4), iVar24 != 0))" ( (binary_expression "(puVar31 != (uint *)0x0) &&\n      (puVar17 = puVar4, puVar21 = puVar19, puVar28 = puVar31,\n      iVar24 = (*(code *)apuStack_a8[0][-0x1ecb])(puVar4), iVar24 != 0)" (parenthesized_expression "(puVar31 != (uint *)0x0)" ( (binary_expression "puVar31 != (uint *)0x0" identifier != (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(puVar17 = puVar4, puVar21 = puVar19, puVar28 = puVar31,\n      iVar24 = (*(code *)apuStack_a8[0][-0x1ecb])(puVar4), iVar24 != 0)" ( (comma_expression "puVar17 = puVar4, puVar21 = puVar19, puVar28 = puVar31,\n      iVar24 = (*(code *)apuStack_a8[0][-0x1ecb])(puVar4), iVar24 != 0" (assignment_expression "puVar17 = puVar4" identifier = identifier) , (comma_expression "puVar21 = puVar19, puVar28 = puVar31,\n      iVar24 = (*(code *)apuStack_a8[0][-0x1ecb])(puVar4), iVar24 != 0" (assignment_expression "puVar21 = puVar19" identifier = identifier) , (comma_expression "puVar28 = puVar31,\n      iVar24 = (*(code *)apuStack_a8[0][-0x1ecb])(puVar4), iVar24 != 0" (assignment_expression "puVar28 = puVar31" identifier = identifier) , (comma_expression "iVar24 = (*(code *)apuStack_a8[0][-0x1ecb])(puVar4), iVar24 != 0" (assignment_expression "iVar24 = (*(code *)apuStack_a8[0][-0x1ecb])(puVar4)" identifier = (call_expression "(*(code *)apuStack_a8[0][-0x1ecb])(puVar4)" (parenthesized_expression "(*(code *)apuStack_a8[0][-0x1ecb])" ( (pointer_expression "*(code *)apuStack_a8[0][-0x1ecb]" * (cast_expression "(code *)apuStack_a8[0][-0x1ecb]" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "apuStack_a8[0][-0x1ecb]" (subscript_expression "apuStack_a8[0]" identifier [ number_literal ]) [ number_literal ]))) )) (argument_list "(puVar4)" ( identifier )))) , (binary_expression "iVar24 != 0" identifier != number_literal))))) ))) )) && (parenthesized_expression "((int)puVar31 < (int)puVar29)" ( (binary_expression "(int)puVar31 < (int)puVar29" (cast_expression "(int)puVar31" ( (type_descriptor "int" primitive_type) ) identifier) < (cast_expression "(int)puVar29" ( (type_descriptor "int" primitive_type) ) identifier)) ))) )) (compound_statement "{\n    puVar14 = puVar4 + (int)puVar31;\n    uVar3 = *puVar14;\n    puVar17 = (uint *)(uVar3 - 1);\n    *puVar14 = (uint)puVar17;\n    puVar5 = puVar31;\n    while ((uVar3 == 0 && (puVar5 = (uint *)((int)puVar5 + 1), puVar29 != puVar5))) {\n      uVar3 = puVar14[1];\n      puVar14 = puVar14 + 1;\n      puVar17 = (uint *)(uVar3 - 1);\n      *puVar14 = (uint)puVar17;\n    }\n  }" { (expression_statement "puVar14 = puVar4 + (int)puVar31;" (assignment_expression "puVar14 = puVar4 + (int)puVar31" identifier = (binary_expression "puVar4 + (int)puVar31" identifier + (cast_expression "(int)puVar31" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "uVar3 = *puVar14;" (assignment_expression "uVar3 = *puVar14" identifier = (pointer_expression "*puVar14" * identifier)) ;) (expression_statement "puVar17 = (uint *)(uVar3 - 1);" (assignment_expression "puVar17 = (uint *)(uVar3 - 1)" identifier = (cast_expression "(uint *)(uVar3 - 1)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar3 - 1)" ( (binary_expression "uVar3 - 1" identifier - number_literal) )))) ;) (expression_statement "*puVar14 = (uint)puVar17;" (assignment_expression "*puVar14 = (uint)puVar17" (pointer_expression "*puVar14" * identifier) = (cast_expression "(uint)puVar17" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "puVar5 = puVar31;" (assignment_expression "puVar5 = puVar31" identifier = identifier) ;) (while_statement "while ((uVar3 == 0 && (puVar5 = (uint *)((int)puVar5 + 1), puVar29 != puVar5))) {\n      uVar3 = puVar14[1];\n      puVar14 = puVar14 + 1;\n      puVar17 = (uint *)(uVar3 - 1);\n      *puVar14 = (uint)puVar17;\n    }" while (parenthesized_expression "((uVar3 == 0 && (puVar5 = (uint *)((int)puVar5 + 1), puVar29 != puVar5)))" ( (parenthesized_expression "(uVar3 == 0 && (puVar5 = (uint *)((int)puVar5 + 1), puVar29 != puVar5))" ( (binary_expression "uVar3 == 0 && (puVar5 = (uint *)((int)puVar5 + 1), puVar29 != puVar5)" (binary_expression "uVar3 == 0" identifier == number_literal) && (parenthesized_expression "(puVar5 = (uint *)((int)puVar5 + 1), puVar29 != puVar5)" ( (comma_expression "puVar5 = (uint *)((int)puVar5 + 1), puVar29 != puVar5" (assignment_expression "puVar5 = (uint *)((int)puVar5 + 1)" identifier = (cast_expression "(uint *)((int)puVar5 + 1)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar5 + 1)" ( (binary_expression "(int)puVar5 + 1" (cast_expression "(int)puVar5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) , (binary_expression "puVar29 != puVar5" identifier != identifier)) ))) )) )) (compound_statement "{\n      uVar3 = puVar14[1];\n      puVar14 = puVar14 + 1;\n      puVar17 = (uint *)(uVar3 - 1);\n      *puVar14 = (uint)puVar17;\n    }" { (expression_statement "uVar3 = puVar14[1];" (assignment_expression "uVar3 = puVar14[1]" identifier = (subscript_expression "puVar14[1]" identifier [ number_literal ])) ;) (expression_statement "puVar14 = puVar14 + 1;" (assignment_expression "puVar14 = puVar14 + 1" identifier = (binary_expression "puVar14 + 1" identifier + number_literal)) ;) (expression_statement "puVar17 = (uint *)(uVar3 - 1);" (assignment_expression "puVar17 = (uint *)(uVar3 - 1)" identifier = (cast_expression "(uint *)(uVar3 - 1)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar3 - 1)" ( (binary_expression "uVar3 - 1" identifier - number_literal) )))) ;) (expression_statement "*puVar14 = (uint)puVar17;" (assignment_expression "*puVar14 = (uint)puVar17" (pointer_expression "*puVar14" * identifier) = (cast_expression "(uint)puVar17" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) })) })) (if_statement "if (iStack_98 != 0) {\n    (*(code *)apuStack_a8[0][-0x1e8b])();\n  }" if (parenthesized_expression "(iStack_98 != 0)" ( (binary_expression "iStack_98 != 0" identifier != number_literal) )) (compound_statement "{\n    (*(code *)apuStack_a8[0][-0x1e8b])();\n  }" { (expression_statement "(*(code *)apuStack_a8[0][-0x1e8b])();" (call_expression "(*(code *)apuStack_a8[0][-0x1e8b])()" (parenthesized_expression "(*(code *)apuStack_a8[0][-0x1e8b])" ( (pointer_expression "*(code *)apuStack_a8[0][-0x1e8b]" * (cast_expression "(code *)apuStack_a8[0][-0x1e8b]" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "apuStack_a8[0][-0x1e8b]" (subscript_expression "apuStack_a8[0]" identifier [ number_literal ]) [ number_literal ]))) )) (argument_list "()" ( ))) ;) })) (expression_statement "puVar5 = puVar29;" (assignment_expression "puVar5 = puVar29" identifier = identifier) ;) (if_statement "if (((int)puVar18 < (int)puVar29) && (puVar4[(int)puVar29 + -1] == 0)) {\n    puVar14 = puVar4 + (int)puVar29;\n    do {\n      puVar29 = (uint *)((int)puVar29 + -1);\n      puVar5 = puVar18;\n      if (puVar18 == puVar29) break;\n      puVar1 = puVar14 + -2;\n      puVar5 = puVar29;\n      puVar14 = puVar14 + -1;\n    } while (*puVar1 == 0);\n  }" if (parenthesized_expression "(((int)puVar18 < (int)puVar29) && (puVar4[(int)puVar29 + -1] == 0))" ( (binary_expression "((int)puVar18 < (int)puVar29) && (puVar4[(int)puVar29 + -1] == 0)" (parenthesized_expression "((int)puVar18 < (int)puVar29)" ( (binary_expression "(int)puVar18 < (int)puVar29" (cast_expression "(int)puVar18" ( (type_descriptor "int" primitive_type) ) identifier) < (cast_expression "(int)puVar29" ( (type_descriptor "int" primitive_type) ) identifier)) )) && (parenthesized_expression "(puVar4[(int)puVar29 + -1] == 0)" ( (binary_expression "puVar4[(int)puVar29 + -1] == 0" (subscript_expression "puVar4[(int)puVar29 + -1]" identifier [ (binary_expression "(int)puVar29 + -1" (cast_expression "(int)puVar29" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ]) == number_literal) ))) )) (compound_statement "{\n    puVar14 = puVar4 + (int)puVar29;\n    do {\n      puVar29 = (uint *)((int)puVar29 + -1);\n      puVar5 = puVar18;\n      if (puVar18 == puVar29) break;\n      puVar1 = puVar14 + -2;\n      puVar5 = puVar29;\n      puVar14 = puVar14 + -1;\n    } while (*puVar1 == 0);\n  }" { (expression_statement "puVar14 = puVar4 + (int)puVar29;" (assignment_expression "puVar14 = puVar4 + (int)puVar29" identifier = (binary_expression "puVar4 + (int)puVar29" identifier + (cast_expression "(int)puVar29" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (do_statement "do {\n      puVar29 = (uint *)((int)puVar29 + -1);\n      puVar5 = puVar18;\n      if (puVar18 == puVar29) break;\n      puVar1 = puVar14 + -2;\n      puVar5 = puVar29;\n      puVar14 = puVar14 + -1;\n    } while (*puVar1 == 0);" do (compound_statement "{\n      puVar29 = (uint *)((int)puVar29 + -1);\n      puVar5 = puVar18;\n      if (puVar18 == puVar29) break;\n      puVar1 = puVar14 + -2;\n      puVar5 = puVar29;\n      puVar14 = puVar14 + -1;\n    }" { (expression_statement "puVar29 = (uint *)((int)puVar29 + -1);" (assignment_expression "puVar29 = (uint *)((int)puVar29 + -1)" identifier = (cast_expression "(uint *)((int)puVar29 + -1)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar29 + -1)" ( (binary_expression "(int)puVar29 + -1" (cast_expression "(int)puVar29" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "puVar5 = puVar18;" (assignment_expression "puVar5 = puVar18" identifier = identifier) ;) (if_statement "if (puVar18 == puVar29) break;" if (parenthesized_expression "(puVar18 == puVar29)" ( (binary_expression "puVar18 == puVar29" identifier == identifier) )) (break_statement "break;" break ;)) (expression_statement "puVar1 = puVar14 + -2;" (assignment_expression "puVar1 = puVar14 + -2" identifier = (binary_expression "puVar14 + -2" identifier + number_literal)) ;) (expression_statement "puVar5 = puVar29;" (assignment_expression "puVar5 = puVar29" identifier = identifier) ;) (expression_statement "puVar14 = puVar14 + -1;" (assignment_expression "puVar14 = puVar14 + -1" identifier = (binary_expression "puVar14 + -1" identifier + number_literal)) ;) }) while (parenthesized_expression "(*puVar1 == 0)" ( (binary_expression "*puVar1 == 0" (pointer_expression "*puVar1" * identifier) == number_literal) )) ;) })) (expression_statement "pcVar34 = (code *)apuStack_a8[0][-0x1edc];" (assignment_expression "pcVar34 = (code *)apuStack_a8[0][-0x1edc]" identifier = (cast_expression "(code *)apuStack_a8[0][-0x1edc]" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "apuStack_a8[0][-0x1edc]" (subscript_expression "apuStack_a8[0]" identifier [ number_literal ]) [ number_literal ]))) ;) (if_statement "if (iStack_94 == *piVar30) {\n    return puVar5;\n  }" if (parenthesized_expression "(iStack_94 == *piVar30)" ( (binary_expression "iStack_94 == *piVar30" identifier == (pointer_expression "*piVar30" * identifier)) )) (compound_statement "{\n    return puVar5;\n  }" { (return_statement "return puVar5;" return identifier ;) })) (expression_statement "uVar39 = 0x52e68;" (assignment_expression "uVar39 = 0x52e68" identifier = number_literal) ;) (expression_statement "iVar24 = iStack_94;" (assignment_expression "iVar24 = iStack_94" identifier = identifier) ;) (expression_statement "(*pcVar34)();" (call_expression "(*pcVar34)()" (parenthesized_expression "(*pcVar34)" ( (pointer_expression "*pcVar34" * identifier) )) (argument_list "()" ( ))) ;) (expression_statement "puVar38 = puVar36 + -0x88;" (assignment_expression "puVar38 = puVar36 + -0x88" identifier = (binary_expression "puVar36 + -0x88" identifier + number_literal)) ;) (expression_statement "puVar37 = puVar36 + -0x88;" (assignment_expression "puVar37 = puVar36 + -0x88" identifier = (binary_expression "puVar36 + -0x88" identifier + number_literal)) ;) (expression_statement "puVar6 = *(undefined4 **)(pcVar34 + 0x446d8);" (assignment_expression "puVar6 = *(undefined4 **)(pcVar34 + 0x446d8)" identifier = (pointer_expression "*(undefined4 **)(pcVar34 + 0x446d8)" * (cast_expression "(undefined4 **)(pcVar34 + 0x446d8)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar34 + 0x446d8)" ( (binary_expression "pcVar34 + 0x446d8" identifier + number_literal) ))))) ;) (expression_statement "*(undefined1 **)(puVar36 + -8) = auStack_c0;" (assignment_expression "*(undefined1 **)(puVar36 + -8) = auStack_c0" (pointer_expression "*(undefined1 **)(puVar36 + -8)" * (cast_expression "(undefined1 **)(puVar36 + -8)" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar36 + -8)" ( (binary_expression "puVar36 + -8" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(uint **)(puVar36 + -0x10) = puVar19;" (assignment_expression "*(uint **)(puVar36 + -0x10) = puVar19" (pointer_expression "*(uint **)(puVar36 + -0x10)" * (cast_expression "(uint **)(puVar36 + -0x10)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar36 + -0x10)" ( (binary_expression "puVar36 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 **)(puVar36 + -0x4c) = puVar6;" (assignment_expression "*(undefined4 **)(puVar36 + -0x4c) = puVar6" (pointer_expression "*(undefined4 **)(puVar36 + -0x4c)" * (cast_expression "(undefined4 **)(puVar36 + -0x4c)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar36 + -0x4c)" ( (binary_expression "puVar36 + -0x4c" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(uint **)(puVar36 + -0x20) = puVar18;" (assignment_expression "*(uint **)(puVar36 + -0x20) = puVar18" (pointer_expression "*(uint **)(puVar36 + -0x20)" * (cast_expression "(uint **)(puVar36 + -0x20)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar36 + -0x20)" ( (binary_expression "puVar36 + -0x20" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(uint **)(puVar36 + -0x24) = puVar4;" (assignment_expression "*(uint **)(puVar36 + -0x24) = puVar4" (pointer_expression "*(uint **)(puVar36 + -0x24)" * (cast_expression "(uint **)(puVar36 + -0x24)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar36 + -0x24)" ( (binary_expression "puVar36 + -0x24" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(uint **)(puVar36 + -0x28) = puVar29;" (assignment_expression "*(uint **)(puVar36 + -0x28) = puVar29" (pointer_expression "*(uint **)(puVar36 + -0x28)" * (cast_expression "(uint **)(puVar36 + -0x28)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar36 + -0x28)" ( (binary_expression "puVar36 + -0x28" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar36 + -4) = uVar39;" (assignment_expression "*(undefined4 *)(puVar36 + -4) = uVar39" (pointer_expression "*(undefined4 *)(puVar36 + -4)" * (cast_expression "(undefined4 *)(puVar36 + -4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar36 + -4)" ( (binary_expression "puVar36 + -4" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(uint **)(puVar36 + -0xc) = puVar25;" (assignment_expression "*(uint **)(puVar36 + -0xc) = puVar25" (pointer_expression "*(uint **)(puVar36 + -0xc)" * (cast_expression "(uint **)(puVar36 + -0xc)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar36 + -0xc)" ( (binary_expression "puVar36 + -0xc" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(puVar36 + -0x14) = iVar9;" (assignment_expression "*(int *)(puVar36 + -0x14) = iVar9" (pointer_expression "*(int *)(puVar36 + -0x14)" * (cast_expression "(int *)(puVar36 + -0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar36 + -0x14)" ( (binary_expression "puVar36 + -0x14" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(uint **)(puVar36 + -0x18) = puVar31;" (assignment_expression "*(uint **)(puVar36 + -0x18) = puVar31" (pointer_expression "*(uint **)(puVar36 + -0x18)" * (cast_expression "(uint **)(puVar36 + -0x18)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar36 + -0x18)" ( (binary_expression "puVar36 + -0x18" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int **)(puVar36 + -0x1c) = piVar30;" (assignment_expression "*(int **)(puVar36 + -0x1c) = piVar30" (pointer_expression "*(int **)(puVar36 + -0x1c)" * (cast_expression "(int **)(puVar36 + -0x1c)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar36 + -0x1c)" ( (binary_expression "puVar36 + -0x1c" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(code **)(puVar36 + -0x68) = pcVar34 + 0x4c1d8;" (assignment_expression "*(code **)(puVar36 + -0x68) = pcVar34 + 0x4c1d8" (pointer_expression "*(code **)(puVar36 + -0x68)" * (cast_expression "(code **)(puVar36 + -0x68)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar36 + -0x68)" ( (binary_expression "puVar36 + -0x68" identifier + number_literal) )))) = (binary_expression "pcVar34 + 0x4c1d8" identifier + number_literal)) ;) (expression_statement "*(undefined4 *)(puVar36 + -0x2c) = *puVar6;" (assignment_expression "*(undefined4 *)(puVar36 + -0x2c) = *puVar6" (pointer_expression "*(undefined4 *)(puVar36 + -0x2c)" * (cast_expression "(undefined4 *)(puVar36 + -0x2c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar36 + -0x2c)" ( (binary_expression "puVar36 + -0x2c" identifier + number_literal) )))) = (pointer_expression "*puVar6" * identifier)) ;) (expression_statement "puVar29 = puVar28;" (assignment_expression "puVar29 = puVar28" identifier = identifier) ;) (expression_statement "puVar25 = puVar28;" (assignment_expression "puVar25 = puVar28" identifier = identifier) ;) (if_statement "if (0 < (int)puVar28) {\n    if (puVar17[(int)((int)puVar28 + -1)] == 0) {\n      puVar18 = puVar17 + (int)puVar28;\n      do {\n        puVar25 = (uint *)((int)puVar25 + -1);\n        if (puVar25 == (uint *)0x0) break;\n        puVar4 = puVar18 + -2;\n        puVar18 = puVar18 + -1;\n      } while (*puVar4 == 0);\n    }\n    if (puVar21[(int)((int)puVar28 + -1)] == 0) {\n      puVar18 = puVar21 + (int)puVar28;\n      do {\n        puVar29 = (uint *)((int)puVar29 + -1);\n        if (puVar29 == (uint *)0x0) break;\n        puVar4 = puVar18 + -2;\n        puVar18 = puVar18 + -1;\n      } while (*puVar4 == 0);\n    }\n  }" if (parenthesized_expression "(0 < (int)puVar28)" ( (binary_expression "0 < (int)puVar28" number_literal < (cast_expression "(int)puVar28" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n    if (puVar17[(int)((int)puVar28 + -1)] == 0) {\n      puVar18 = puVar17 + (int)puVar28;\n      do {\n        puVar25 = (uint *)((int)puVar25 + -1);\n        if (puVar25 == (uint *)0x0) break;\n        puVar4 = puVar18 + -2;\n        puVar18 = puVar18 + -1;\n      } while (*puVar4 == 0);\n    }\n    if (puVar21[(int)((int)puVar28 + -1)] == 0) {\n      puVar18 = puVar21 + (int)puVar28;\n      do {\n        puVar29 = (uint *)((int)puVar29 + -1);\n        if (puVar29 == (uint *)0x0) break;\n        puVar4 = puVar18 + -2;\n        puVar18 = puVar18 + -1;\n      } while (*puVar4 == 0);\n    }\n  }" { (if_statement "if (puVar17[(int)((int)puVar28 + -1)] == 0) {\n      puVar18 = puVar17 + (int)puVar28;\n      do {\n        puVar25 = (uint *)((int)puVar25 + -1);\n        if (puVar25 == (uint *)0x0) break;\n        puVar4 = puVar18 + -2;\n        puVar18 = puVar18 + -1;\n      } while (*puVar4 == 0);\n    }" if (parenthesized_expression "(puVar17[(int)((int)puVar28 + -1)] == 0)" ( (binary_expression "puVar17[(int)((int)puVar28 + -1)] == 0" (subscript_expression "puVar17[(int)((int)puVar28 + -1)]" identifier [ (cast_expression "(int)((int)puVar28 + -1)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((int)puVar28 + -1)" ( (binary_expression "(int)puVar28 + -1" (cast_expression "(int)puVar28" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))) ]) == number_literal) )) (compound_statement "{\n      puVar18 = puVar17 + (int)puVar28;\n      do {\n        puVar25 = (uint *)((int)puVar25 + -1);\n        if (puVar25 == (uint *)0x0) break;\n        puVar4 = puVar18 + -2;\n        puVar18 = puVar18 + -1;\n      } while (*puVar4 == 0);\n    }" { (expression_statement "puVar18 = puVar17 + (int)puVar28;" (assignment_expression "puVar18 = puVar17 + (int)puVar28" identifier = (binary_expression "puVar17 + (int)puVar28" identifier + (cast_expression "(int)puVar28" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (do_statement "do {\n        puVar25 = (uint *)((int)puVar25 + -1);\n        if (puVar25 == (uint *)0x0) break;\n        puVar4 = puVar18 + -2;\n        puVar18 = puVar18 + -1;\n      } while (*puVar4 == 0);" do (compound_statement "{\n        puVar25 = (uint *)((int)puVar25 + -1);\n        if (puVar25 == (uint *)0x0) break;\n        puVar4 = puVar18 + -2;\n        puVar18 = puVar18 + -1;\n      }" { (expression_statement "puVar25 = (uint *)((int)puVar25 + -1);" (assignment_expression "puVar25 = (uint *)((int)puVar25 + -1)" identifier = (cast_expression "(uint *)((int)puVar25 + -1)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar25 + -1)" ( (binary_expression "(int)puVar25 + -1" (cast_expression "(int)puVar25" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (if_statement "if (puVar25 == (uint *)0x0) break;" if (parenthesized_expression "(puVar25 == (uint *)0x0)" ( (binary_expression "puVar25 == (uint *)0x0" identifier == (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (break_statement "break;" break ;)) (expression_statement "puVar4 = puVar18 + -2;" (assignment_expression "puVar4 = puVar18 + -2" identifier = (binary_expression "puVar18 + -2" identifier + number_literal)) ;) (expression_statement "puVar18 = puVar18 + -1;" (assignment_expression "puVar18 = puVar18 + -1" identifier = (binary_expression "puVar18 + -1" identifier + number_literal)) ;) }) while (parenthesized_expression "(*puVar4 == 0)" ( (binary_expression "*puVar4 == 0" (pointer_expression "*puVar4" * identifier) == number_literal) )) ;) })) (if_statement "if (puVar21[(int)((int)puVar28 + -1)] == 0) {\n      puVar18 = puVar21 + (int)puVar28;\n      do {\n        puVar29 = (uint *)((int)puVar29 + -1);\n        if (puVar29 == (uint *)0x0) break;\n        puVar4 = puVar18 + -2;\n        puVar18 = puVar18 + -1;\n      } while (*puVar4 == 0);\n    }" if (parenthesized_expression "(puVar21[(int)((int)puVar28 + -1)] == 0)" ( (binary_expression "puVar21[(int)((int)puVar28 + -1)] == 0" (subscript_expression "puVar21[(int)((int)puVar28 + -1)]" identifier [ (cast_expression "(int)((int)puVar28 + -1)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((int)puVar28 + -1)" ( (binary_expression "(int)puVar28 + -1" (cast_expression "(int)puVar28" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))) ]) == number_literal) )) (compound_statement "{\n      puVar18 = puVar21 + (int)puVar28;\n      do {\n        puVar29 = (uint *)((int)puVar29 + -1);\n        if (puVar29 == (uint *)0x0) break;\n        puVar4 = puVar18 + -2;\n        puVar18 = puVar18 + -1;\n      } while (*puVar4 == 0);\n    }" { (expression_statement "puVar18 = puVar21 + (int)puVar28;" (assignment_expression "puVar18 = puVar21 + (int)puVar28" identifier = (binary_expression "puVar21 + (int)puVar28" identifier + (cast_expression "(int)puVar28" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (do_statement "do {\n        puVar29 = (uint *)((int)puVar29 + -1);\n        if (puVar29 == (uint *)0x0) break;\n        puVar4 = puVar18 + -2;\n        puVar18 = puVar18 + -1;\n      } while (*puVar4 == 0);" do (compound_statement "{\n        puVar29 = (uint *)((int)puVar29 + -1);\n        if (puVar29 == (uint *)0x0) break;\n        puVar4 = puVar18 + -2;\n        puVar18 = puVar18 + -1;\n      }" { (expression_statement "puVar29 = (uint *)((int)puVar29 + -1);" (assignment_expression "puVar29 = (uint *)((int)puVar29 + -1)" identifier = (cast_expression "(uint *)((int)puVar29 + -1)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar29 + -1)" ( (binary_expression "(int)puVar29 + -1" (cast_expression "(int)puVar29" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (if_statement "if (puVar29 == (uint *)0x0) break;" if (parenthesized_expression "(puVar29 == (uint *)0x0)" ( (binary_expression "puVar29 == (uint *)0x0" identifier == (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (break_statement "break;" break ;)) (expression_statement "puVar4 = puVar18 + -2;" (assignment_expression "puVar4 = puVar18 + -2" identifier = (binary_expression "puVar18 + -2" identifier + number_literal)) ;) (expression_statement "puVar18 = puVar18 + -1;" (assignment_expression "puVar18 = puVar18 + -1" identifier = (binary_expression "puVar18 + -1" identifier + number_literal)) ;) }) while (parenthesized_expression "(*puVar4 == 0)" ( (binary_expression "*puVar4 == 0" (pointer_expression "*puVar4" * identifier) == number_literal) )) ;) })) })) (expression_statement "iVar32 = *(int *)(iVar24 + 4);" (assignment_expression "iVar32 = *(int *)(iVar24 + 4)" identifier = (pointer_expression "*(int *)(iVar24 + 4)" * (cast_expression "(int *)(iVar24 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar24 + 4)" ( (binary_expression "iVar24 + 4" identifier + number_literal) ))))) ;) (expression_statement "iVar9 = 8;" (assignment_expression "iVar9 = 8" identifier = number_literal) ;) (do_statement "do {\n    iVar22 = iVar9 + -8;\n    do {\n      iVar12 = iVar32;\n      if (0 < iVar32) {\n        iVar7 = *(int *)(iVar24 + iVar22 + 8);\n        iVar11 = *(int *)(iVar7 + iVar32 * 4 + -4);\n        iVar7 = iVar7 + iVar32 * 4;\n        while (iVar11 == 0) {\n          iVar12 = iVar12 + -1;\n          if (iVar12 == 0) break;\n          iVar11 = *(int *)(iVar7 + -8);\n          iVar7 = iVar7 + -4;\n        }\n      }\n      iVar7 = iVar22 + -0x3c;\n      iVar22 = iVar22 + 4;\n      *(int *)(puVar36 + iVar7) = iVar12;\n    } while (iVar9 != iVar22);\n    iVar9 = iVar9 + 8;\n    iVar22 = *(int *)(puVar36 + -0x34);\n  } while (iVar9 != 0x18);" do (compound_statement "{\n    iVar22 = iVar9 + -8;\n    do {\n      iVar12 = iVar32;\n      if (0 < iVar32) {\n        iVar7 = *(int *)(iVar24 + iVar22 + 8);\n        iVar11 = *(int *)(iVar7 + iVar32 * 4 + -4);\n        iVar7 = iVar7 + iVar32 * 4;\n        while (iVar11 == 0) {\n          iVar12 = iVar12 + -1;\n          if (iVar12 == 0) break;\n          iVar11 = *(int *)(iVar7 + -8);\n          iVar7 = iVar7 + -4;\n        }\n      }\n      iVar7 = iVar22 + -0x3c;\n      iVar22 = iVar22 + 4;\n      *(int *)(puVar36 + iVar7) = iVar12;\n    } while (iVar9 != iVar22);\n    iVar9 = iVar9 + 8;\n    iVar22 = *(int *)(puVar36 + -0x34);\n  }" { (expression_statement "iVar22 = iVar9 + -8;" (assignment_expression "iVar22 = iVar9 + -8" identifier = (binary_expression "iVar9 + -8" identifier + number_literal)) ;) (do_statement "do {\n      iVar12 = iVar32;\n      if (0 < iVar32) {\n        iVar7 = *(int *)(iVar24 + iVar22 + 8);\n        iVar11 = *(int *)(iVar7 + iVar32 * 4 + -4);\n        iVar7 = iVar7 + iVar32 * 4;\n        while (iVar11 == 0) {\n          iVar12 = iVar12 + -1;\n          if (iVar12 == 0) break;\n          iVar11 = *(int *)(iVar7 + -8);\n          iVar7 = iVar7 + -4;\n        }\n      }\n      iVar7 = iVar22 + -0x3c;\n      iVar22 = iVar22 + 4;\n      *(int *)(puVar36 + iVar7) = iVar12;\n    } while (iVar9 != iVar22);" do (compound_statement "{\n      iVar12 = iVar32;\n      if (0 < iVar32) {\n        iVar7 = *(int *)(iVar24 + iVar22 + 8);\n        iVar11 = *(int *)(iVar7 + iVar32 * 4 + -4);\n        iVar7 = iVar7 + iVar32 * 4;\n        while (iVar11 == 0) {\n          iVar12 = iVar12 + -1;\n          if (iVar12 == 0) break;\n          iVar11 = *(int *)(iVar7 + -8);\n          iVar7 = iVar7 + -4;\n        }\n      }\n      iVar7 = iVar22 + -0x3c;\n      iVar22 = iVar22 + 4;\n      *(int *)(puVar36 + iVar7) = iVar12;\n    }" { (expression_statement "iVar12 = iVar32;" (assignment_expression "iVar12 = iVar32" identifier = identifier) ;) (if_statement "if (0 < iVar32) {\n        iVar7 = *(int *)(iVar24 + iVar22 + 8);\n        iVar11 = *(int *)(iVar7 + iVar32 * 4 + -4);\n        iVar7 = iVar7 + iVar32 * 4;\n        while (iVar11 == 0) {\n          iVar12 = iVar12 + -1;\n          if (iVar12 == 0) break;\n          iVar11 = *(int *)(iVar7 + -8);\n          iVar7 = iVar7 + -4;\n        }\n      }" if (parenthesized_expression "(0 < iVar32)" ( (binary_expression "0 < iVar32" number_literal < identifier) )) (compound_statement "{\n        iVar7 = *(int *)(iVar24 + iVar22 + 8);\n        iVar11 = *(int *)(iVar7 + iVar32 * 4 + -4);\n        iVar7 = iVar7 + iVar32 * 4;\n        while (iVar11 == 0) {\n          iVar12 = iVar12 + -1;\n          if (iVar12 == 0) break;\n          iVar11 = *(int *)(iVar7 + -8);\n          iVar7 = iVar7 + -4;\n        }\n      }" { (expression_statement "iVar7 = *(int *)(iVar24 + iVar22 + 8);" (assignment_expression "iVar7 = *(int *)(iVar24 + iVar22 + 8)" identifier = (pointer_expression "*(int *)(iVar24 + iVar22 + 8)" * (cast_expression "(int *)(iVar24 + iVar22 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar24 + iVar22 + 8)" ( (binary_expression "iVar24 + iVar22 + 8" (binary_expression "iVar24 + iVar22" identifier + identifier) + number_literal) ))))) ;) (expression_statement "iVar11 = *(int *)(iVar7 + iVar32 * 4 + -4);" (assignment_expression "iVar11 = *(int *)(iVar7 + iVar32 * 4 + -4)" identifier = (pointer_expression "*(int *)(iVar7 + iVar32 * 4 + -4)" * (cast_expression "(int *)(iVar7 + iVar32 * 4 + -4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar7 + iVar32 * 4 + -4)" ( (binary_expression "iVar7 + iVar32 * 4 + -4" (binary_expression "iVar7 + iVar32 * 4" identifier + (binary_expression "iVar32 * 4" identifier * number_literal)) + number_literal) ))))) ;) (expression_statement "iVar7 = iVar7 + iVar32 * 4;" (assignment_expression "iVar7 = iVar7 + iVar32 * 4" identifier = (binary_expression "iVar7 + iVar32 * 4" identifier + (binary_expression "iVar32 * 4" identifier * number_literal))) ;) (while_statement "while (iVar11 == 0) {\n          iVar12 = iVar12 + -1;\n          if (iVar12 == 0) break;\n          iVar11 = *(int *)(iVar7 + -8);\n          iVar7 = iVar7 + -4;\n        }" while (parenthesized_expression "(iVar11 == 0)" ( (binary_expression "iVar11 == 0" identifier == number_literal) )) (compound_statement "{\n          iVar12 = iVar12 + -1;\n          if (iVar12 == 0) break;\n          iVar11 = *(int *)(iVar7 + -8);\n          iVar7 = iVar7 + -4;\n        }" { (expression_statement "iVar12 = iVar12 + -1;" (assignment_expression "iVar12 = iVar12 + -1" identifier = (binary_expression "iVar12 + -1" identifier + number_literal)) ;) (if_statement "if (iVar12 == 0) break;" if (parenthesized_expression "(iVar12 == 0)" ( (binary_expression "iVar12 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar11 = *(int *)(iVar7 + -8);" (assignment_expression "iVar11 = *(int *)(iVar7 + -8)" identifier = (pointer_expression "*(int *)(iVar7 + -8)" * (cast_expression "(int *)(iVar7 + -8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar7 + -8)" ( (binary_expression "iVar7 + -8" identifier + number_literal) ))))) ;) (expression_statement "iVar7 = iVar7 + -4;" (assignment_expression "iVar7 = iVar7 + -4" identifier = (binary_expression "iVar7 + -4" identifier + number_literal)) ;) })) })) (expression_statement "iVar7 = iVar22 + -0x3c;" (assignment_expression "iVar7 = iVar22 + -0x3c" identifier = (binary_expression "iVar22 + -0x3c" identifier + number_literal)) ;) (expression_statement "iVar22 = iVar22 + 4;" (assignment_expression "iVar22 = iVar22 + 4" identifier = (binary_expression "iVar22 + 4" identifier + number_literal)) ;) (expression_statement "*(int *)(puVar36 + iVar7) = iVar12;" (assignment_expression "*(int *)(puVar36 + iVar7) = iVar12" (pointer_expression "*(int *)(puVar36 + iVar7)" * (cast_expression "(int *)(puVar36 + iVar7)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar36 + iVar7)" ( (binary_expression "puVar36 + iVar7" identifier + identifier) )))) = identifier) ;) }) while (parenthesized_expression "(iVar9 != iVar22)" ( (binary_expression "iVar9 != iVar22" identifier != identifier) )) ;) (expression_statement "iVar9 = iVar9 + 8;" (assignment_expression "iVar9 = iVar9 + 8" identifier = (binary_expression "iVar9 + 8" identifier + number_literal)) ;) (expression_statement "iVar22 = *(int *)(puVar36 + -0x34);" (assignment_expression "iVar22 = *(int *)(puVar36 + -0x34)" identifier = (pointer_expression "*(int *)(puVar36 + -0x34)" * (cast_expression "(int *)(puVar36 + -0x34)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar36 + -0x34)" ( (binary_expression "puVar36 + -0x34" identifier + number_literal) ))))) ;) }) while (parenthesized_expression "(iVar9 != 0x18)" ( (binary_expression "iVar9 != 0x18" identifier != number_literal) )) ;) (expression_statement "iVar9 = *(int *)(puVar36 + -0x38);" (assignment_expression "iVar9 = *(int *)(puVar36 + -0x38)" identifier = (pointer_expression "*(int *)(puVar36 + -0x38)" * (cast_expression "(int *)(puVar36 + -0x38)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar36 + -0x38)" ( (binary_expression "puVar36 + -0x38" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar36 + -0x40) = 0;" (assignment_expression "*(undefined4 *)(puVar36 + -0x40) = 0" (pointer_expression "*(undefined4 *)(puVar36 + -0x40)" * (cast_expression "(undefined4 *)(puVar36 + -0x40)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar36 + -0x40)" ( (binary_expression "puVar36 + -0x40" identifier + number_literal) )))) = number_literal) ;) (if_statement "if (iVar9 == 0) {\n    uVar39 = *(undefined4 *)(iVar24 + 0x10);\n    *(int *)(puVar36 + -0x74) = iVar22;\n    *(undefined4 *)(puVar36 + -0x78) = uVar39;\n    puVar28 = puVar21;\n    puVar18 = puVar29;\n    puVar4 = puVar17;\nLAB_0005309c:\n    puVar29 = (uint *)FUN_00052c70(puVar28,puVar18,puVar4,puVar25);\n    iVar9 = *(int *)(puVar36 + -0x68);\nLAB_000530b4:\n    pcVar34 = *(code **)(iVar9 + -0x7a2c);\n    puVar38 = puVar37;\n    if (*(int *)(puVar36 + -0x40) != 0) goto LAB_00053478;\n  }\n  else {\n    if (iVar22 == 0) {\n      uVar39 = *(undefined4 *)(iVar24 + 0xc);\n      *(int *)(puVar36 + -0x74) = iVar9;\n      *(undefined4 *)(puVar36 + -0x78) = uVar39;\n      puVar28 = puVar17;\n      puVar18 = puVar25;\n      puVar4 = puVar21;\n      puVar25 = puVar29;\n      goto LAB_0005309c;\n    }\n    iVar7 = *(int *)(puVar36 + -0x30);\n    pcVar34 = *(code **)(pcVar34 + 0x4454c);\n    iVar12 = (int)puVar25 - *(int *)(puVar36 + -0x3c);\n    *(int *)(puVar36 + -0x50) = *(int *)(puVar36 + -0x3c);\n    *(int *)(puVar36 + -0x44) = iVar9;\n    if ((int)puVar29 - iVar22 <= iVar12) {\n      iVar12 = (int)puVar29 - iVar22;\n    }\n    iVar11 = (int)puVar25 - iVar9;\n    if ((int)puVar29 - iVar7 <= (int)puVar25 - iVar9) {\n      iVar11 = (int)puVar29 - iVar7;\n    }\n    puVar29 = (uint *)(iVar11 + 1);\n    if (iVar11 + 1 <= iVar12 + 1) {\n      puVar29 = (uint *)(iVar12 + 1);\n    }\n    puVar25 = (uint *)(*pcVar34)((int)puVar29 + 1);\n    iVar9 = (int)puVar25 >> 1;\n    iVar12 = *(int *)(puVar36 + -0x68);\n    uVar39 = *(undefined4 *)(puVar36 + -0x44);\n    if (iVar9 < (int)puVar25) {\n      if (iVar32 <= iVar9) {\n        uVar13 = ((int)puVar25 * 3 + iVar9 + 4) * 4;\n        uVar3 = uVar13 + 7;\n        if (0x7f00 < uVar13) {\n          pcVar34 = *(code **)(iVar12 + -0x7d50);\n          goto LAB_0005305c;\n        }\n        goto LAB_00053148;\n      }\n      uVar13 = ((int)puVar25 * 4 + 4) * 4;\n      uVar3 = uVar13 + 7;\n      if (uVar13 < 0x7f01) goto LAB_00053148;\n      pcVar34 = *(code **)(iVar12 + -0x7d50);\nLAB_0005305c:\n      *(uint **)(puVar36 + -0x48) = puVar25;\n      *(undefined4 *)(puVar36 + -0x44) = uVar39;\n      puVar4 = (uint *)(*pcVar34)(puVar36 + -0x40);\n      iVar12 = *(int *)(puVar36 + -0x68);\n      puVar25 = *(uint **)(puVar36 + -0x48);\n      uVar39 = *(undefined4 *)(puVar36 + -0x44);\n    }\n    else {\n      uVar3 = ((int)puVar25 * 3 + 4) * 4;\n      pcVar34 = *(code **)(iVar12 + -0x7d50);\n      if (0x7f00 < uVar3) goto LAB_0005305c;\n      uVar3 = uVar3 + 7;\nLAB_00053148:\n      puVar38 = puVar36 + -(uVar3 & 0xfffffff8) + -0x88;\n      puVar4 = (uint *)(puVar36 + -(uVar3 & 0xfffffff8) + -0x68);\n    }\n    *(uint **)(puVar36 + -0x44) = puVar4 + (int)puVar25;\n    *(uint **)(puVar36 + -0x48) = puVar4 + (int)puVar25 + (int)puVar25;\n    if ((int)puVar25 < (int)puVar28) {\n      pcVar34 = *(code **)(iVar12 + -0x7d0c);\n      puVar18 = (uint *)((int)puVar28 - (int)puVar25);\n      *(undefined4 *)(puVar36 + -0x5c) = uVar39;\n      *(uint **)(puVar36 + -0x58) = puVar25;\n      *(int *)(puVar36 + -0x54) = (int)puVar25 * 4;\n      iVar9 = (*pcVar34)(puVar17,puVar17,puVar17 + (int)puVar25,puVar18);\n      iVar12 = *(int *)(puVar36 + -0x68);\n      iVar32 = *(int *)(puVar36 + -0x54);\n      puVar28 = *(uint **)(puVar36 + -0x58);\n      uVar39 = *(undefined4 *)(puVar36 + -0x5c);\n      if (iVar9 == 0) {\nLAB_0005359c:\n        pcVar34 = *(code **)(iVar12 + -0x7d0c);\n      }\n      else {\n        puVar25 = puVar17;\n        if ((int)puVar28 <= (int)puVar18) {\nLAB_00053588:\n          do {\n            uVar3 = *puVar25;\n            *puVar25 = uVar3 + 1;\n            puVar25 = puVar25 + 1;\n          } while (uVar3 + 1 == 0);\n          goto LAB_0005359c;\n        }\n        puVar31 = puVar17 + (int)puVar18;\n        uVar3 = *puVar31;\n        *puVar31 = uVar3 + 1;\n        puVar19 = puVar18;\n        if (uVar3 + 1 == 0) {\n          do {\n            puVar19 = (uint *)((int)puVar19 + 1);\n            if (puVar28 == puVar19) goto LAB_00053588;\n            uVar3 = puVar31[1];\n            puVar31 = puVar31 + 1;\n            *puVar31 = uVar3 + 1;\n          } while (uVar3 + 1 == 0);\n          goto LAB_0005359c;\n        }\n        pcVar34 = *(code **)(iVar12 + -0x7d0c);\n      }\n      *(uint **)(puVar36 + -0x58) = puVar28;\n      *(undefined4 *)(puVar36 + -0x54) = uVar39;\n      iVar9 = (*pcVar34)(puVar21,puVar21,(int)puVar21 + iVar32,puVar18);\n      iVar12 = *(int *)(puVar36 + -0x68);\n      uVar39 = *(undefined4 *)(puVar36 + -0x54);\n      puVar25 = *(uint **)(puVar36 + -0x58);\n      puVar28 = puVar25;\n      if (iVar9 != 0) {\n        puVar19 = puVar21;\n        if ((int)puVar18 < (int)puVar25) {\n          puVar31 = puVar21 + (int)puVar18;\n          uVar3 = *puVar31 + 1;\n          *puVar31 = uVar3;\n          while (uVar3 == 0) {\n            puVar18 = (uint *)((int)puVar18 + 1);\n            if (puVar25 == puVar18) goto LAB_0005361c;\n            puVar5 = puVar31 + 1;\n            puVar31 = puVar31 + 1;\n            uVar3 = *puVar5 + 1;\n            *puVar31 = uVar3;\n          }\n        }\n        else {\nLAB_0005361c:\n          do {\n            uVar3 = *puVar19;\n            *puVar19 = uVar3 + 1;\n            puVar19 = puVar19 + 1;\n          } while (uVar3 + 1 == 0);\n        }\n      }\n    }\n    uVar8 = *(undefined4 *)(iVar24 + 0x14);\n    pcVar34 = *(code **)(iVar12 + -0x7cd8);\n    *(undefined4 *)(puVar36 + -0x5c) = uVar39;\n    *(uint **)(puVar36 + -0x54) = puVar25;\n    *(undefined4 *)(puVar38 + 0x18) = *(undefined4 *)(puVar36 + -0x48);\n    *(undefined4 *)(puVar38 + 0x10) = uVar8;\n    *(int *)(puVar38 + 0x14) = iVar7;\n    (*pcVar34)(puVar4,puVar25,puVar17,puVar28);\n    uVar39 = *(undefined4 *)(iVar24 + 0xc);\n    uVar26 = *(undefined4 *)(puVar36 + -0x54);\n    uVar27 = *(undefined4 *)(puVar36 + -0x5c);\n    uVar8 = *(undefined4 *)(puVar36 + -0x48);\n    pcVar34 = *(code **)(*(int *)(puVar36 + -0x68) + -0x7cd8);\n    uVar15 = *(undefined4 *)(puVar36 + -0x44);\n    *(undefined4 *)(puVar36 + -0x58) = uVar26;\n    *(undefined4 *)(puVar38 + 0x14) = uVar27;\n    *(undefined4 *)(puVar36 + -0x54) = uVar27;\n    *(undefined4 *)(puVar38 + 0x10) = uVar39;\n    *(undefined4 *)(puVar38 + 0x18) = uVar8;\n    (*pcVar34)(uVar15,uVar26,puVar21,puVar28);\n    iVar9 = *(int *)(puVar36 + -0x58);\n    iVar12 = *(int *)(puVar36 + -0x68);\n    iVar32 = *(int *)(puVar36 + -0x54);\n    if ((iVar7 + (int)puVar28 < iVar9) && (iVar7 != iVar9 - (int)puVar28)) {\n      iVar11 = (iVar9 - (int)puVar28) - iVar7;\n      puVar25 = puVar4 + (int)(iVar7 + (int)puVar28);\n      do {\n        iVar11 = iVar11 + -1;\n        *puVar25 = 0;\n        puVar25 = puVar25 + 1;\n      } while (iVar11 != 0);\n    }\n    pcVar34 = *(code **)(iVar12 + -0x7b2c);\n    if (iVar32 + (int)puVar28 < iVar9) {\n      if (iVar32 != iVar9 - (int)puVar28) {\n        iVar7 = (iVar9 - (int)puVar28) - iVar32;\n        puVar6 = (undefined4 *)(*(int *)(puVar36 + -0x44) + (int)(iVar32 + (int)puVar28) * 4);\n        do {\n          iVar7 = iVar7 + -1;\n          *puVar6 = 0;\n          puVar6 = puVar6 + 1;\n        } while (iVar7 != 0);\n        pcVar34 = *(code **)(iVar12 + -0x7b2c);\n      }\n    }\n    *(int *)(puVar36 + -0x54) = iVar9;\n    uVar3 = (*pcVar34)(puVar4,puVar4,*(undefined4 *)(puVar36 + -0x44),iVar9);\n    uVar13 = *puVar4;\n    iVar9 = *(int *)(puVar36 + -0x68);\n    uVar39 = *(undefined4 *)(puVar36 + -0x54);\n    *puVar4 = uVar13 - uVar3;\n    puVar25 = puVar4;\n    if (uVar13 < uVar3) {\n      do {\n        puVar25 = puVar25 + 1;\n        uVar3 = *puVar25;\n        *puVar25 = uVar3 - 1;\n      } while (uVar3 == 0);\n    }\n    uVar8 = *(undefined4 *)(iVar24 + 0x10);\n    pcVar34 = *(code **)(iVar9 + -0x7cd8);\n    uVar15 = *(undefined4 *)(puVar36 + -0x44);\n    *(undefined4 *)(puVar36 + -0x54) = uVar39;\n    *(undefined4 *)(puVar38 + 0x18) = *(undefined4 *)(puVar36 + -0x48);\n    *(int *)(puVar38 + 0x14) = iVar22;\n    *(undefined4 *)(puVar38 + 0x10) = uVar8;\n    (*pcVar34)(uVar15,uVar39,puVar17,puVar28);\n    iVar9 = *(int *)(puVar36 + -0x68);\n    uVar39 = *(undefined4 *)(puVar36 + -0x54);\n    if (puVar29 != (uint *)0x0) {\n      iVar32 = (int)puVar29 + -1;\n      uVar3 = *puVar4;\n      puVar18 = puVar17;\n      puVar25 = puVar4;\n      if (iVar32 == 0) {\n        *puVar17 = uVar3;\n      }\n      else {\n        do {\n          *puVar18 = uVar3;\n          iVar32 = iVar32 + -1;\n          uVar3 = puVar25[1];\n          puVar18 = puVar18 + 1;\n          puVar25 = puVar25 + 1;\n        } while (iVar32 != 0);\n        puVar17[(int)puVar29 + -1] = uVar3;\n      }\n    }\n    uVar8 = *(undefined4 *)(iVar24 + 8);\n    pcVar34 = *(code **)(iVar9 + -0x7cd8);\n    *(undefined4 *)(puVar38 + 0x18) = *(undefined4 *)(puVar36 + -0x48);\n    *(undefined4 *)(puVar36 + -0x48) = uVar39;\n    *(undefined4 *)(puVar38 + 0x10) = uVar8;\n    *(undefined4 *)(puVar38 + 0x14) = *(undefined4 *)(puVar36 + -0x50);\n    (*pcVar34)(puVar4,uVar39,puVar21,puVar28);\n    iVar9 = *(int *)(puVar36 + -0x48);\n    iVar32 = *(int *)(puVar36 + -0x68);\n    if ((int)puVar28 + iVar22 < iVar9) {\n      if (iVar22 != iVar9 - (int)puVar28) {\n        iVar12 = (iVar9 - (int)puVar28) - iVar22;\n        puVar6 = (undefined4 *)(*(int *)(puVar36 + -0x44) + (int)((int)puVar28 + iVar22) * 4);\n        do {\n          iVar12 = iVar12 + -1;\n          *puVar6 = 0;\n          puVar6 = puVar6 + 1;\n        } while (iVar12 != 0);\n      }\n    }\n    pcVar34 = *(code **)(iVar32 + -0x7b2c);\n    if (*(int *)(puVar36 + -0x50) + (int)puVar28 < iVar9) {\n      if (*(int *)(puVar36 + -0x50) != iVar9 - (int)puVar28) {\n        iVar22 = (iVar9 - (int)puVar28) - *(int *)(puVar36 + -0x50);\n        puVar28 = puVar4 + (int)(*(int *)(puVar36 + -0x50) + (int)puVar28);\n        do {\n          iVar22 = iVar22 + -1;\n          *puVar28 = 0;\n          puVar28 = puVar28 + 1;\n        } while (iVar22 != 0);\n        pcVar34 = *(code **)(iVar32 + -0x7b2c);\n      }\n    }\n    uVar3 = (*pcVar34)(puVar4,puVar4,*(undefined4 *)(puVar36 + -0x44),iVar9);\n    uVar13 = *puVar4;\n    iVar9 = *(int *)(puVar36 + -0x68);\n    puVar18 = (uint *)(uVar13 - uVar3);\n    *puVar4 = (uint)puVar18;\n    puVar28 = puVar4;\n    if (uVar13 < uVar3) {\n      do {\n        puVar28 = puVar28 + 1;\n        uVar3 = *puVar28;\n        puVar18 = (uint *)(uVar3 - 1);\n        *puVar28 = (uint)puVar18;\n      } while (uVar3 == 0);\n    }\n    iVar32 = (int)puVar29 + -1;\n    if (puVar29 == (uint *)0x0) {\n      iVar32 = -4;\n    }\n    else {\n      puVar18 = (uint *)*puVar4;\n      puVar28 = puVar21;\n      if (iVar32 != 0) {\n        do {\n          puVar4 = puVar4 + 1;\n          *puVar28 = (uint)puVar18;\n          iVar32 = iVar32 + -1;\n          puVar18 = (uint *)*puVar4;\n          puVar28 = puVar28 + 1;\n        } while (iVar32 != 0);\n        puVar28 = puVar21 + (int)puVar29 + -1;\n      }\n      *puVar28 = (uint)puVar18;\n      iVar32 = (int)puVar29 * 4 + -4;\n    }\n    puVar37 = puVar38;\n    if (*(int *)((int)puVar17 + iVar32) != 0 || *(int *)((int)puVar21 + iVar32) != 0)\n    goto LAB_000530b4;\n    puVar17 = puVar17 + (int)puVar29 + -2;\n    puVar21 = puVar21 + (int)puVar29 + -2;\n    do {\n      uVar3 = *puVar17;\n      puVar29 = (uint *)((int)puVar29 + -1);\n      uVar13 = *puVar21;\n      puVar17 = puVar17 + -1;\n      puVar21 = puVar21 + -1;\n    } while (uVar3 == 0 && uVar13 == 0);\n    piVar30 = *(int **)(puVar36 + -0x4c);\n    if (*(int *)(puVar36 + -0x40) == 0) goto LAB_000530c4;\n    pcVar34 = *(code **)(iVar9 + -0x7a2c);\nLAB_00053478:\n    (*pcVar34)();\n    iVar9 = *(int *)(puVar36 + -0x68);\n    puVar38 = puVar37;\n  }" if (parenthesized_expression "(iVar9 == 0)" ( (binary_expression "iVar9 == 0" identifier == number_literal) )) (compound_statement "{\n    uVar39 = *(undefined4 *)(iVar24 + 0x10);\n    *(int *)(puVar36 + -0x74) = iVar22;\n    *(undefined4 *)(puVar36 + -0x78) = uVar39;\n    puVar28 = puVar21;\n    puVar18 = puVar29;\n    puVar4 = puVar17;\nLAB_0005309c:\n    puVar29 = (uint *)FUN_00052c70(puVar28,puVar18,puVar4,puVar25);\n    iVar9 = *(int *)(puVar36 + -0x68);\nLAB_000530b4:\n    pcVar34 = *(code **)(iVar9 + -0x7a2c);\n    puVar38 = puVar37;\n    if (*(int *)(puVar36 + -0x40) != 0) goto LAB_00053478;\n  }" { (expression_statement "uVar39 = *(undefined4 *)(iVar24 + 0x10);" (assignment_expression "uVar39 = *(undefined4 *)(iVar24 + 0x10)" identifier = (pointer_expression "*(undefined4 *)(iVar24 + 0x10)" * (cast_expression "(undefined4 *)(iVar24 + 0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar24 + 0x10)" ( (binary_expression "iVar24 + 0x10" identifier + number_literal) ))))) ;) (expression_statement "*(int *)(puVar36 + -0x74) = iVar22;" (assignment_expression "*(int *)(puVar36 + -0x74) = iVar22" (pointer_expression "*(int *)(puVar36 + -0x74)" * (cast_expression "(int *)(puVar36 + -0x74)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar36 + -0x74)" ( (binary_expression "puVar36 + -0x74" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar36 + -0x78) = uVar39;" (assignment_expression "*(undefined4 *)(puVar36 + -0x78) = uVar39" (pointer_expression "*(undefined4 *)(puVar36 + -0x78)" * (cast_expression "(undefined4 *)(puVar36 + -0x78)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar36 + -0x78)" ( (binary_expression "puVar36 + -0x78" identifier + number_literal) )))) = identifier) ;) (expression_statement "puVar28 = puVar21;" (assignment_expression "puVar28 = puVar21" identifier = identifier) ;) (expression_statement "puVar18 = puVar29;" (assignment_expression "puVar18 = puVar29" identifier = identifier) ;) (expression_statement "puVar4 = puVar17;" (assignment_expression "puVar4 = puVar17" identifier = identifier) ;) (labeled_statement "LAB_0005309c:\n    puVar29 = (uint *)FUN_00052c70(puVar28,puVar18,puVar4,puVar25);" statement_identifier : (expression_statement "puVar29 = (uint *)FUN_00052c70(puVar28,puVar18,puVar4,puVar25);" (assignment_expression "puVar29 = (uint *)FUN_00052c70(puVar28,puVar18,puVar4,puVar25)" identifier = (cast_expression "(uint *)FUN_00052c70(puVar28,puVar18,puVar4,puVar25)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00052c70(puVar28,puVar18,puVar4,puVar25)" identifier (argument_list "(puVar28,puVar18,puVar4,puVar25)" ( identifier , identifier , identifier , identifier ))))) ;)) (expression_statement "iVar9 = *(int *)(puVar36 + -0x68);" (assignment_expression "iVar9 = *(int *)(puVar36 + -0x68)" identifier = (pointer_expression "*(int *)(puVar36 + -0x68)" * (cast_expression "(int *)(puVar36 + -0x68)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar36 + -0x68)" ( (binary_expression "puVar36 + -0x68" identifier + number_literal) ))))) ;) (labeled_statement "LAB_000530b4:\n    pcVar34 = *(code **)(iVar9 + -0x7a2c);" statement_identifier : (expression_statement "pcVar34 = *(code **)(iVar9 + -0x7a2c);" (assignment_expression "pcVar34 = *(code **)(iVar9 + -0x7a2c)" identifier = (pointer_expression "*(code **)(iVar9 + -0x7a2c)" * (cast_expression "(code **)(iVar9 + -0x7a2c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar9 + -0x7a2c)" ( (binary_expression "iVar9 + -0x7a2c" identifier + number_literal) ))))) ;)) (expression_statement "puVar38 = puVar37;" (assignment_expression "puVar38 = puVar37" identifier = identifier) ;) (if_statement "if (*(int *)(puVar36 + -0x40) != 0) goto LAB_00053478;" if (parenthesized_expression "(*(int *)(puVar36 + -0x40) != 0)" ( (binary_expression "*(int *)(puVar36 + -0x40) != 0" (pointer_expression "*(int *)(puVar36 + -0x40)" * (cast_expression "(int *)(puVar36 + -0x40)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar36 + -0x40)" ( (binary_expression "puVar36 + -0x40" identifier + number_literal) )))) != number_literal) )) (goto_statement "goto LAB_00053478;" goto statement_identifier ;)) }) (else_clause "else {\n    if (iVar22 == 0) {\n      uVar39 = *(undefined4 *)(iVar24 + 0xc);\n      *(int *)(puVar36 + -0x74) = iVar9;\n      *(undefined4 *)(puVar36 + -0x78) = uVar39;\n      puVar28 = puVar17;\n      puVar18 = puVar25;\n      puVar4 = puVar21;\n      puVar25 = puVar29;\n      goto LAB_0005309c;\n    }\n    iVar7 = *(int *)(puVar36 + -0x30);\n    pcVar34 = *(code **)(pcVar34 + 0x4454c);\n    iVar12 = (int)puVar25 - *(int *)(puVar36 + -0x3c);\n    *(int *)(puVar36 + -0x50) = *(int *)(puVar36 + -0x3c);\n    *(int *)(puVar36 + -0x44) = iVar9;\n    if ((int)puVar29 - iVar22 <= iVar12) {\n      iVar12 = (int)puVar29 - iVar22;\n    }\n    iVar11 = (int)puVar25 - iVar9;\n    if ((int)puVar29 - iVar7 <= (int)puVar25 - iVar9) {\n      iVar11 = (int)puVar29 - iVar7;\n    }\n    puVar29 = (uint *)(iVar11 + 1);\n    if (iVar11 + 1 <= iVar12 + 1) {\n      puVar29 = (uint *)(iVar12 + 1);\n    }\n    puVar25 = (uint *)(*pcVar34)((int)puVar29 + 1);\n    iVar9 = (int)puVar25 >> 1;\n    iVar12 = *(int *)(puVar36 + -0x68);\n    uVar39 = *(undefined4 *)(puVar36 + -0x44);\n    if (iVar9 < (int)puVar25) {\n      if (iVar32 <= iVar9) {\n        uVar13 = ((int)puVar25 * 3 + iVar9 + 4) * 4;\n        uVar3 = uVar13 + 7;\n        if (0x7f00 < uVar13) {\n          pcVar34 = *(code **)(iVar12 + -0x7d50);\n          goto LAB_0005305c;\n        }\n        goto LAB_00053148;\n      }\n      uVar13 = ((int)puVar25 * 4 + 4) * 4;\n      uVar3 = uVar13 + 7;\n      if (uVar13 < 0x7f01) goto LAB_00053148;\n      pcVar34 = *(code **)(iVar12 + -0x7d50);\nLAB_0005305c:\n      *(uint **)(puVar36 + -0x48) = puVar25;\n      *(undefined4 *)(puVar36 + -0x44) = uVar39;\n      puVar4 = (uint *)(*pcVar34)(puVar36 + -0x40);\n      iVar12 = *(int *)(puVar36 + -0x68);\n      puVar25 = *(uint **)(puVar36 + -0x48);\n      uVar39 = *(undefined4 *)(puVar36 + -0x44);\n    }\n    else {\n      uVar3 = ((int)puVar25 * 3 + 4) * 4;\n      pcVar34 = *(code **)(iVar12 + -0x7d50);\n      if (0x7f00 < uVar3) goto LAB_0005305c;\n      uVar3 = uVar3 + 7;\nLAB_00053148:\n      puVar38 = puVar36 + -(uVar3 & 0xfffffff8) + -0x88;\n      puVar4 = (uint *)(puVar36 + -(uVar3 & 0xfffffff8) + -0x68);\n    }\n    *(uint **)(puVar36 + -0x44) = puVar4 + (int)puVar25;\n    *(uint **)(puVar36 + -0x48) = puVar4 + (int)puVar25 + (int)puVar25;\n    if ((int)puVar25 < (int)puVar28) {\n      pcVar34 = *(code **)(iVar12 + -0x7d0c);\n      puVar18 = (uint *)((int)puVar28 - (int)puVar25);\n      *(undefined4 *)(puVar36 + -0x5c) = uVar39;\n      *(uint **)(puVar36 + -0x58) = puVar25;\n      *(int *)(puVar36 + -0x54) = (int)puVar25 * 4;\n      iVar9 = (*pcVar34)(puVar17,puVar17,puVar17 + (int)puVar25,puVar18);\n      iVar12 = *(int *)(puVar36 + -0x68);\n      iVar32 = *(int *)(puVar36 + -0x54);\n      puVar28 = *(uint **)(puVar36 + -0x58);\n      uVar39 = *(undefined4 *)(puVar36 + -0x5c);\n      if (iVar9 == 0) {\nLAB_0005359c:\n        pcVar34 = *(code **)(iVar12 + -0x7d0c);\n      }\n      else {\n        puVar25 = puVar17;\n        if ((int)puVar28 <= (int)puVar18) {\nLAB_00053588:\n          do {\n            uVar3 = *puVar25;\n            *puVar25 = uVar3 + 1;\n            puVar25 = puVar25 + 1;\n          } while (uVar3 + 1 == 0);\n          goto LAB_0005359c;\n        }\n        puVar31 = puVar17 + (int)puVar18;\n        uVar3 = *puVar31;\n        *puVar31 = uVar3 + 1;\n        puVar19 = puVar18;\n        if (uVar3 + 1 == 0) {\n          do {\n            puVar19 = (uint *)((int)puVar19 + 1);\n            if (puVar28 == puVar19) goto LAB_00053588;\n            uVar3 = puVar31[1];\n            puVar31 = puVar31 + 1;\n            *puVar31 = uVar3 + 1;\n          } while (uVar3 + 1 == 0);\n          goto LAB_0005359c;\n        }\n        pcVar34 = *(code **)(iVar12 + -0x7d0c);\n      }\n      *(uint **)(puVar36 + -0x58) = puVar28;\n      *(undefined4 *)(puVar36 + -0x54) = uVar39;\n      iVar9 = (*pcVar34)(puVar21,puVar21,(int)puVar21 + iVar32,puVar18);\n      iVar12 = *(int *)(puVar36 + -0x68);\n      uVar39 = *(undefined4 *)(puVar36 + -0x54);\n      puVar25 = *(uint **)(puVar36 + -0x58);\n      puVar28 = puVar25;\n      if (iVar9 != 0) {\n        puVar19 = puVar21;\n        if ((int)puVar18 < (int)puVar25) {\n          puVar31 = puVar21 + (int)puVar18;\n          uVar3 = *puVar31 + 1;\n          *puVar31 = uVar3;\n          while (uVar3 == 0) {\n            puVar18 = (uint *)((int)puVar18 + 1);\n            if (puVar25 == puVar18) goto LAB_0005361c;\n            puVar5 = puVar31 + 1;\n            puVar31 = puVar31 + 1;\n            uVar3 = *puVar5 + 1;\n            *puVar31 = uVar3;\n          }\n        }\n        else {\nLAB_0005361c:\n          do {\n            uVar3 = *puVar19;\n            *puVar19 = uVar3 + 1;\n            puVar19 = puVar19 + 1;\n          } while (uVar3 + 1 == 0);\n        }\n      }\n    }\n    uVar8 = *(undefined4 *)(iVar24 + 0x14);\n    pcVar34 = *(code **)(iVar12 + -0x7cd8);\n    *(undefined4 *)(puVar36 + -0x5c) = uVar39;\n    *(uint **)(puVar36 + -0x54) = puVar25;\n    *(undefined4 *)(puVar38 + 0x18) = *(undefined4 *)(puVar36 + -0x48);\n    *(undefined4 *)(puVar38 + 0x10) = uVar8;\n    *(int *)(puVar38 + 0x14) = iVar7;\n    (*pcVar34)(puVar4,puVar25,puVar17,puVar28);\n    uVar39 = *(undefined4 *)(iVar24 + 0xc);\n    uVar26 = *(undefined4 *)(puVar36 + -0x54);\n    uVar27 = *(undefined4 *)(puVar36 + -0x5c);\n    uVar8 = *(undefined4 *)(puVar36 + -0x48);\n    pcVar34 = *(code **)(*(int *)(puVar36 + -0x68) + -0x7cd8);\n    uVar15 = *(undefined4 *)(puVar36 + -0x44);\n    *(undefined4 *)(puVar36 + -0x58) = uVar26;\n    *(undefined4 *)(puVar38 + 0x14) = uVar27;\n    *(undefined4 *)(puVar36 + -0x54) = uVar27;\n    *(undefined4 *)(puVar38 + 0x10) = uVar39;\n    *(undefined4 *)(puVar38 + 0x18) = uVar8;\n    (*pcVar34)(uVar15,uVar26,puVar21,puVar28);\n    iVar9 = *(int *)(puVar36 + -0x58);\n    iVar12 = *(int *)(puVar36 + -0x68);\n    iVar32 = *(int *)(puVar36 + -0x54);\n    if ((iVar7 + (int)puVar28 < iVar9) && (iVar7 != iVar9 - (int)puVar28)) {\n      iVar11 = (iVar9 - (int)puVar28) - iVar7;\n      puVar25 = puVar4 + (int)(iVar7 + (int)puVar28);\n      do {\n        iVar11 = iVar11 + -1;\n        *puVar25 = 0;\n        puVar25 = puVar25 + 1;\n      } while (iVar11 != 0);\n    }\n    pcVar34 = *(code **)(iVar12 + -0x7b2c);\n    if (iVar32 + (int)puVar28 < iVar9) {\n      if (iVar32 != iVar9 - (int)puVar28) {\n        iVar7 = (iVar9 - (int)puVar28) - iVar32;\n        puVar6 = (undefined4 *)(*(int *)(puVar36 + -0x44) + (int)(iVar32 + (int)puVar28) * 4);\n        do {\n          iVar7 = iVar7 + -1;\n          *puVar6 = 0;\n          puVar6 = puVar6 + 1;\n        } while (iVar7 != 0);\n        pcVar34 = *(code **)(iVar12 + -0x7b2c);\n      }\n    }\n    *(int *)(puVar36 + -0x54) = iVar9;\n    uVar3 = (*pcVar34)(puVar4,puVar4,*(undefined4 *)(puVar36 + -0x44),iVar9);\n    uVar13 = *puVar4;\n    iVar9 = *(int *)(puVar36 + -0x68);\n    uVar39 = *(undefined4 *)(puVar36 + -0x54);\n    *puVar4 = uVar13 - uVar3;\n    puVar25 = puVar4;\n    if (uVar13 < uVar3) {\n      do {\n        puVar25 = puVar25 + 1;\n        uVar3 = *puVar25;\n        *puVar25 = uVar3 - 1;\n      } while (uVar3 == 0);\n    }\n    uVar8 = *(undefined4 *)(iVar24 + 0x10);\n    pcVar34 = *(code **)(iVar9 + -0x7cd8);\n    uVar15 = *(undefined4 *)(puVar36 + -0x44);\n    *(undefined4 *)(puVar36 + -0x54) = uVar39;\n    *(undefined4 *)(puVar38 + 0x18) = *(undefined4 *)(puVar36 + -0x48);\n    *(int *)(puVar38 + 0x14) = iVar22;\n    *(undefined4 *)(puVar38 + 0x10) = uVar8;\n    (*pcVar34)(uVar15,uVar39,puVar17,puVar28);\n    iVar9 = *(int *)(puVar36 + -0x68);\n    uVar39 = *(undefined4 *)(puVar36 + -0x54);\n    if (puVar29 != (uint *)0x0) {\n      iVar32 = (int)puVar29 + -1;\n      uVar3 = *puVar4;\n      puVar18 = puVar17;\n      puVar25 = puVar4;\n      if (iVar32 == 0) {\n        *puVar17 = uVar3;\n      }\n      else {\n        do {\n          *puVar18 = uVar3;\n          iVar32 = iVar32 + -1;\n          uVar3 = puVar25[1];\n          puVar18 = puVar18 + 1;\n          puVar25 = puVar25 + 1;\n        } while (iVar32 != 0);\n        puVar17[(int)puVar29 + -1] = uVar3;\n      }\n    }\n    uVar8 = *(undefined4 *)(iVar24 + 8);\n    pcVar34 = *(code **)(iVar9 + -0x7cd8);\n    *(undefined4 *)(puVar38 + 0x18) = *(undefined4 *)(puVar36 + -0x48);\n    *(undefined4 *)(puVar36 + -0x48) = uVar39;\n    *(undefined4 *)(puVar38 + 0x10) = uVar8;\n    *(undefined4 *)(puVar38 + 0x14) = *(undefined4 *)(puVar36 + -0x50);\n    (*pcVar34)(puVar4,uVar39,puVar21,puVar28);\n    iVar9 = *(int *)(puVar36 + -0x48);\n    iVar32 = *(int *)(puVar36 + -0x68);\n    if ((int)puVar28 + iVar22 < iVar9) {\n      if (iVar22 != iVar9 - (int)puVar28) {\n        iVar12 = (iVar9 - (int)puVar28) - iVar22;\n        puVar6 = (undefined4 *)(*(int *)(puVar36 + -0x44) + (int)((int)puVar28 + iVar22) * 4);\n        do {\n          iVar12 = iVar12 + -1;\n          *puVar6 = 0;\n          puVar6 = puVar6 + 1;\n        } while (iVar12 != 0);\n      }\n    }\n    pcVar34 = *(code **)(iVar32 + -0x7b2c);\n    if (*(int *)(puVar36 + -0x50) + (int)puVar28 < iVar9) {\n      if (*(int *)(puVar36 + -0x50) != iVar9 - (int)puVar28) {\n        iVar22 = (iVar9 - (int)puVar28) - *(int *)(puVar36 + -0x50);\n        puVar28 = puVar4 + (int)(*(int *)(puVar36 + -0x50) + (int)puVar28);\n        do {\n          iVar22 = iVar22 + -1;\n          *puVar28 = 0;\n          puVar28 = puVar28 + 1;\n        } while (iVar22 != 0);\n        pcVar34 = *(code **)(iVar32 + -0x7b2c);\n      }\n    }\n    uVar3 = (*pcVar34)(puVar4,puVar4,*(undefined4 *)(puVar36 + -0x44),iVar9);\n    uVar13 = *puVar4;\n    iVar9 = *(int *)(puVar36 + -0x68);\n    puVar18 = (uint *)(uVar13 - uVar3);\n    *puVar4 = (uint)puVar18;\n    puVar28 = puVar4;\n    if (uVar13 < uVar3) {\n      do {\n        puVar28 = puVar28 + 1;\n        uVar3 = *puVar28;\n        puVar18 = (uint *)(uVar3 - 1);\n        *puVar28 = (uint)puVar18;\n      } while (uVar3 == 0);\n    }\n    iVar32 = (int)puVar29 + -1;\n    if (puVar29 == (uint *)0x0) {\n      iVar32 = -4;\n    }\n    else {\n      puVar18 = (uint *)*puVar4;\n      puVar28 = puVar21;\n      if (iVar32 != 0) {\n        do {\n          puVar4 = puVar4 + 1;\n          *puVar28 = (uint)puVar18;\n          iVar32 = iVar32 + -1;\n          puVar18 = (uint *)*puVar4;\n          puVar28 = puVar28 + 1;\n        } while (iVar32 != 0);\n        puVar28 = puVar21 + (int)puVar29 + -1;\n      }\n      *puVar28 = (uint)puVar18;\n      iVar32 = (int)puVar29 * 4 + -4;\n    }\n    puVar37 = puVar38;\n    if (*(int *)((int)puVar17 + iVar32) != 0 || *(int *)((int)puVar21 + iVar32) != 0)\n    goto LAB_000530b4;\n    puVar17 = puVar17 + (int)puVar29 + -2;\n    puVar21 = puVar21 + (int)puVar29 + -2;\n    do {\n      uVar3 = *puVar17;\n      puVar29 = (uint *)((int)puVar29 + -1);\n      uVar13 = *puVar21;\n      puVar17 = puVar17 + -1;\n      puVar21 = puVar21 + -1;\n    } while (uVar3 == 0 && uVar13 == 0);\n    piVar30 = *(int **)(puVar36 + -0x4c);\n    if (*(int *)(puVar36 + -0x40) == 0) goto LAB_000530c4;\n    pcVar34 = *(code **)(iVar9 + -0x7a2c);\nLAB_00053478:\n    (*pcVar34)();\n    iVar9 = *(int *)(puVar36 + -0x68);\n    puVar38 = puVar37;\n  }" else (compound_statement "{\n    if (iVar22 == 0) {\n      uVar39 = *(undefined4 *)(iVar24 + 0xc);\n      *(int *)(puVar36 + -0x74) = iVar9;\n      *(undefined4 *)(puVar36 + -0x78) = uVar39;\n      puVar28 = puVar17;\n      puVar18 = puVar25;\n      puVar4 = puVar21;\n      puVar25 = puVar29;\n      goto LAB_0005309c;\n    }\n    iVar7 = *(int *)(puVar36 + -0x30);\n    pcVar34 = *(code **)(pcVar34 + 0x4454c);\n    iVar12 = (int)puVar25 - *(int *)(puVar36 + -0x3c);\n    *(int *)(puVar36 + -0x50) = *(int *)(puVar36 + -0x3c);\n    *(int *)(puVar36 + -0x44) = iVar9;\n    if ((int)puVar29 - iVar22 <= iVar12) {\n      iVar12 = (int)puVar29 - iVar22;\n    }\n    iVar11 = (int)puVar25 - iVar9;\n    if ((int)puVar29 - iVar7 <= (int)puVar25 - iVar9) {\n      iVar11 = (int)puVar29 - iVar7;\n    }\n    puVar29 = (uint *)(iVar11 + 1);\n    if (iVar11 + 1 <= iVar12 + 1) {\n      puVar29 = (uint *)(iVar12 + 1);\n    }\n    puVar25 = (uint *)(*pcVar34)((int)puVar29 + 1);\n    iVar9 = (int)puVar25 >> 1;\n    iVar12 = *(int *)(puVar36 + -0x68);\n    uVar39 = *(undefined4 *)(puVar36 + -0x44);\n    if (iVar9 < (int)puVar25) {\n      if (iVar32 <= iVar9) {\n        uVar13 = ((int)puVar25 * 3 + iVar9 + 4) * 4;\n        uVar3 = uVar13 + 7;\n        if (0x7f00 < uVar13) {\n          pcVar34 = *(code **)(iVar12 + -0x7d50);\n          goto LAB_0005305c;\n        }\n        goto LAB_00053148;\n      }\n      uVar13 = ((int)puVar25 * 4 + 4) * 4;\n      uVar3 = uVar13 + 7;\n      if (uVar13 < 0x7f01) goto LAB_00053148;\n      pcVar34 = *(code **)(iVar12 + -0x7d50);\nLAB_0005305c:\n      *(uint **)(puVar36 + -0x48) = puVar25;\n      *(undefined4 *)(puVar36 + -0x44) = uVar39;\n      puVar4 = (uint *)(*pcVar34)(puVar36 + -0x40);\n      iVar12 = *(int *)(puVar36 + -0x68);\n      puVar25 = *(uint **)(puVar36 + -0x48);\n      uVar39 = *(undefined4 *)(puVar36 + -0x44);\n    }\n    else {\n      uVar3 = ((int)puVar25 * 3 + 4) * 4;\n      pcVar34 = *(code **)(iVar12 + -0x7d50);\n      if (0x7f00 < uVar3) goto LAB_0005305c;\n      uVar3 = uVar3 + 7;\nLAB_00053148:\n      puVar38 = puVar36 + -(uVar3 & 0xfffffff8) + -0x88;\n      puVar4 = (uint *)(puVar36 + -(uVar3 & 0xfffffff8) + -0x68);\n    }\n    *(uint **)(puVar36 + -0x44) = puVar4 + (int)puVar25;\n    *(uint **)(puVar36 + -0x48) = puVar4 + (int)puVar25 + (int)puVar25;\n    if ((int)puVar25 < (int)puVar28) {\n      pcVar34 = *(code **)(iVar12 + -0x7d0c);\n      puVar18 = (uint *)((int)puVar28 - (int)puVar25);\n      *(undefined4 *)(puVar36 + -0x5c) = uVar39;\n      *(uint **)(puVar36 + -0x58) = puVar25;\n      *(int *)(puVar36 + -0x54) = (int)puVar25 * 4;\n      iVar9 = (*pcVar34)(puVar17,puVar17,puVar17 + (int)puVar25,puVar18);\n      iVar12 = *(int *)(puVar36 + -0x68);\n      iVar32 = *(int *)(puVar36 + -0x54);\n      puVar28 = *(uint **)(puVar36 + -0x58);\n      uVar39 = *(undefined4 *)(puVar36 + -0x5c);\n      if (iVar9 == 0) {\nLAB_0005359c:\n        pcVar34 = *(code **)(iVar12 + -0x7d0c);\n      }\n      else {\n        puVar25 = puVar17;\n        if ((int)puVar28 <= (int)puVar18) {\nLAB_00053588:\n          do {\n            uVar3 = *puVar25;\n            *puVar25 = uVar3 + 1;\n            puVar25 = puVar25 + 1;\n          } while (uVar3 + 1 == 0);\n          goto LAB_0005359c;\n        }\n        puVar31 = puVar17 + (int)puVar18;\n        uVar3 = *puVar31;\n        *puVar31 = uVar3 + 1;\n        puVar19 = puVar18;\n        if (uVar3 + 1 == 0) {\n          do {\n            puVar19 = (uint *)((int)puVar19 + 1);\n            if (puVar28 == puVar19) goto LAB_00053588;\n            uVar3 = puVar31[1];\n            puVar31 = puVar31 + 1;\n            *puVar31 = uVar3 + 1;\n          } while (uVar3 + 1 == 0);\n          goto LAB_0005359c;\n        }\n        pcVar34 = *(code **)(iVar12 + -0x7d0c);\n      }\n      *(uint **)(puVar36 + -0x58) = puVar28;\n      *(undefined4 *)(puVar36 + -0x54) = uVar39;\n      iVar9 = (*pcVar34)(puVar21,puVar21,(int)puVar21 + iVar32,puVar18);\n      iVar12 = *(int *)(puVar36 + -0x68);\n      uVar39 = *(undefined4 *)(puVar36 + -0x54);\n      puVar25 = *(uint **)(puVar36 + -0x58);\n      puVar28 = puVar25;\n      if (iVar9 != 0) {\n        puVar19 = puVar21;\n        if ((int)puVar18 < (int)puVar25) {\n          puVar31 = puVar21 + (int)puVar18;\n          uVar3 = *puVar31 + 1;\n          *puVar31 = uVar3;\n          while (uVar3 == 0) {\n            puVar18 = (uint *)((int)puVar18 + 1);\n            if (puVar25 == puVar18) goto LAB_0005361c;\n            puVar5 = puVar31 + 1;\n            puVar31 = puVar31 + 1;\n            uVar3 = *puVar5 + 1;\n            *puVar31 = uVar3;\n          }\n        }\n        else {\nLAB_0005361c:\n          do {\n            uVar3 = *puVar19;\n            *puVar19 = uVar3 + 1;\n            puVar19 = puVar19 + 1;\n          } while (uVar3 + 1 == 0);\n        }\n      }\n    }\n    uVar8 = *(undefined4 *)(iVar24 + 0x14);\n    pcVar34 = *(code **)(iVar12 + -0x7cd8);\n    *(undefined4 *)(puVar36 + -0x5c) = uVar39;\n    *(uint **)(puVar36 + -0x54) = puVar25;\n    *(undefined4 *)(puVar38 + 0x18) = *(undefined4 *)(puVar36 + -0x48);\n    *(undefined4 *)(puVar38 + 0x10) = uVar8;\n    *(int *)(puVar38 + 0x14) = iVar7;\n    (*pcVar34)(puVar4,puVar25,puVar17,puVar28);\n    uVar39 = *(undefined4 *)(iVar24 + 0xc);\n    uVar26 = *(undefined4 *)(puVar36 + -0x54);\n    uVar27 = *(undefined4 *)(puVar36 + -0x5c);\n    uVar8 = *(undefined4 *)(puVar36 + -0x48);\n    pcVar34 = *(code **)(*(int *)(puVar36 + -0x68) + -0x7cd8);\n    uVar15 = *(undefined4 *)(puVar36 + -0x44);\n    *(undefined4 *)(puVar36 + -0x58) = uVar26;\n    *(undefined4 *)(puVar38 + 0x14) = uVar27;\n    *(undefined4 *)(puVar36 + -0x54) = uVar27;\n    *(undefined4 *)(puVar38 + 0x10) = uVar39;\n    *(undefined4 *)(puVar38 + 0x18) = uVar8;\n    (*pcVar34)(uVar15,uVar26,puVar21,puVar28);\n    iVar9 = *(int *)(puVar36 + -0x58);\n    iVar12 = *(int *)(puVar36 + -0x68);\n    iVar32 = *(int *)(puVar36 + -0x54);\n    if ((iVar7 + (int)puVar28 < iVar9) && (iVar7 != iVar9 - (int)puVar28)) {\n      iVar11 = (iVar9 - (int)puVar28) - iVar7;\n      puVar25 = puVar4 + (int)(iVar7 + (int)puVar28);\n      do {\n        iVar11 = iVar11 + -1;\n        *puVar25 = 0;\n        puVar25 = puVar25 + 1;\n      } while (iVar11 != 0);\n    }\n    pcVar34 = *(code **)(iVar12 + -0x7b2c);\n    if (iVar32 + (int)puVar28 < iVar9) {\n      if (iVar32 != iVar9 - (int)puVar28) {\n        iVar7 = (iVar9 - (int)puVar28) - iVar32;\n        puVar6 = (undefined4 *)(*(int *)(puVar36 + -0x44) + (int)(iVar32 + (int)puVar28) * 4);\n        do {\n          iVar7 = iVar7 + -1;\n          *puVar6 = 0;\n          puVar6 = puVar6 + 1;\n        } while (iVar7 != 0);\n        pcVar34 = *(code **)(iVar12 + -0x7b2c);\n      }\n    }\n    *(int *)(puVar36 + -0x54) = iVar9;\n    uVar3 = (*pcVar34)(puVar4,puVar4,*(undefined4 *)(puVar36 + -0x44),iVar9);\n    uVar13 = *puVar4;\n    iVar9 = *(int *)(puVar36 + -0x68);\n    uVar39 = *(undefined4 *)(puVar36 + -0x54);\n    *puVar4 = uVar13 - uVar3;\n    puVar25 = puVar4;\n    if (uVar13 < uVar3) {\n      do {\n        puVar25 = puVar25 + 1;\n        uVar3 = *puVar25;\n        *puVar25 = uVar3 - 1;\n      } while (uVar3 == 0);\n    }\n    uVar8 = *(undefined4 *)(iVar24 + 0x10);\n    pcVar34 = *(code **)(iVar9 + -0x7cd8);\n    uVar15 = *(undefined4 *)(puVar36 + -0x44);\n    *(undefined4 *)(puVar36 + -0x54) = uVar39;\n    *(undefined4 *)(puVar38 + 0x18) = *(undefined4 *)(puVar36 + -0x48);\n    *(int *)(puVar38 + 0x14) = iVar22;\n    *(undefined4 *)(puVar38 + 0x10) = uVar8;\n    (*pcVar34)(uVar15,uVar39,puVar17,puVar28);\n    iVar9 = *(int *)(puVar36 + -0x68);\n    uVar39 = *(undefined4 *)(puVar36 + -0x54);\n    if (puVar29 != (uint *)0x0) {\n      iVar32 = (int)puVar29 + -1;\n      uVar3 = *puVar4;\n      puVar18 = puVar17;\n      puVar25 = puVar4;\n      if (iVar32 == 0) {\n        *puVar17 = uVar3;\n      }\n      else {\n        do {\n          *puVar18 = uVar3;\n          iVar32 = iVar32 + -1;\n          uVar3 = puVar25[1];\n          puVar18 = puVar18 + 1;\n          puVar25 = puVar25 + 1;\n        } while (iVar32 != 0);\n        puVar17[(int)puVar29 + -1] = uVar3;\n      }\n    }\n    uVar8 = *(undefined4 *)(iVar24 + 8);\n    pcVar34 = *(code **)(iVar9 + -0x7cd8);\n    *(undefined4 *)(puVar38 + 0x18) = *(undefined4 *)(puVar36 + -0x48);\n    *(undefined4 *)(puVar36 + -0x48) = uVar39;\n    *(undefined4 *)(puVar38 + 0x10) = uVar8;\n    *(undefined4 *)(puVar38 + 0x14) = *(undefined4 *)(puVar36 + -0x50);\n    (*pcVar34)(puVar4,uVar39,puVar21,puVar28);\n    iVar9 = *(int *)(puVar36 + -0x48);\n    iVar32 = *(int *)(puVar36 + -0x68);\n    if ((int)puVar28 + iVar22 < iVar9) {\n      if (iVar22 != iVar9 - (int)puVar28) {\n        iVar12 = (iVar9 - (int)puVar28) - iVar22;\n        puVar6 = (undefined4 *)(*(int *)(puVar36 + -0x44) + (int)((int)puVar28 + iVar22) * 4);\n        do {\n          iVar12 = iVar12 + -1;\n          *puVar6 = 0;\n          puVar6 = puVar6 + 1;\n        } while (iVar12 != 0);\n      }\n    }\n    pcVar34 = *(code **)(iVar32 + -0x7b2c);\n    if (*(int *)(puVar36 + -0x50) + (int)puVar28 < iVar9) {\n      if (*(int *)(puVar36 + -0x50) != iVar9 - (int)puVar28) {\n        iVar22 = (iVar9 - (int)puVar28) - *(int *)(puVar36 + -0x50);\n        puVar28 = puVar4 + (int)(*(int *)(puVar36 + -0x50) + (int)puVar28);\n        do {\n          iVar22 = iVar22 + -1;\n          *puVar28 = 0;\n          puVar28 = puVar28 + 1;\n        } while (iVar22 != 0);\n        pcVar34 = *(code **)(iVar32 + -0x7b2c);\n      }\n    }\n    uVar3 = (*pcVar34)(puVar4,puVar4,*(undefined4 *)(puVar36 + -0x44),iVar9);\n    uVar13 = *puVar4;\n    iVar9 = *(int *)(puVar36 + -0x68);\n    puVar18 = (uint *)(uVar13 - uVar3);\n    *puVar4 = (uint)puVar18;\n    puVar28 = puVar4;\n    if (uVar13 < uVar3) {\n      do {\n        puVar28 = puVar28 + 1;\n        uVar3 = *puVar28;\n        puVar18 = (uint *)(uVar3 - 1);\n        *puVar28 = (uint)puVar18;\n      } while (uVar3 == 0);\n    }\n    iVar32 = (int)puVar29 + -1;\n    if (puVar29 == (uint *)0x0) {\n      iVar32 = -4;\n    }\n    else {\n      puVar18 = (uint *)*puVar4;\n      puVar28 = puVar21;\n      if (iVar32 != 0) {\n        do {\n          puVar4 = puVar4 + 1;\n          *puVar28 = (uint)puVar18;\n          iVar32 = iVar32 + -1;\n          puVar18 = (uint *)*puVar4;\n          puVar28 = puVar28 + 1;\n        } while (iVar32 != 0);\n        puVar28 = puVar21 + (int)puVar29 + -1;\n      }\n      *puVar28 = (uint)puVar18;\n      iVar32 = (int)puVar29 * 4 + -4;\n    }\n    puVar37 = puVar38;\n    if (*(int *)((int)puVar17 + iVar32) != 0 || *(int *)((int)puVar21 + iVar32) != 0)\n    goto LAB_000530b4;\n    puVar17 = puVar17 + (int)puVar29 + -2;\n    puVar21 = puVar21 + (int)puVar29 + -2;\n    do {\n      uVar3 = *puVar17;\n      puVar29 = (uint *)((int)puVar29 + -1);\n      uVar13 = *puVar21;\n      puVar17 = puVar17 + -1;\n      puVar21 = puVar21 + -1;\n    } while (uVar3 == 0 && uVar13 == 0);\n    piVar30 = *(int **)(puVar36 + -0x4c);\n    if (*(int *)(puVar36 + -0x40) == 0) goto LAB_000530c4;\n    pcVar34 = *(code **)(iVar9 + -0x7a2c);\nLAB_00053478:\n    (*pcVar34)();\n    iVar9 = *(int *)(puVar36 + -0x68);\n    puVar38 = puVar37;\n  }" { (if_statement "if (iVar22 == 0) {\n      uVar39 = *(undefined4 *)(iVar24 + 0xc);\n      *(int *)(puVar36 + -0x74) = iVar9;\n      *(undefined4 *)(puVar36 + -0x78) = uVar39;\n      puVar28 = puVar17;\n      puVar18 = puVar25;\n      puVar4 = puVar21;\n      puVar25 = puVar29;\n      goto LAB_0005309c;\n    }" if (parenthesized_expression "(iVar22 == 0)" ( (binary_expression "iVar22 == 0" identifier == number_literal) )) (compound_statement "{\n      uVar39 = *(undefined4 *)(iVar24 + 0xc);\n      *(int *)(puVar36 + -0x74) = iVar9;\n      *(undefined4 *)(puVar36 + -0x78) = uVar39;\n      puVar28 = puVar17;\n      puVar18 = puVar25;\n      puVar4 = puVar21;\n      puVar25 = puVar29;\n      goto LAB_0005309c;\n    }" { (expression_statement "uVar39 = *(undefined4 *)(iVar24 + 0xc);" (assignment_expression "uVar39 = *(undefined4 *)(iVar24 + 0xc)" identifier = (pointer_expression "*(undefined4 *)(iVar24 + 0xc)" * (cast_expression "(undefined4 *)(iVar24 + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar24 + 0xc)" ( (binary_expression "iVar24 + 0xc" identifier + number_literal) ))))) ;) (expression_statement "*(int *)(puVar36 + -0x74) = iVar9;" (assignment_expression "*(int *)(puVar36 + -0x74) = iVar9" (pointer_expression "*(int *)(puVar36 + -0x74)" * (cast_expression "(int *)(puVar36 + -0x74)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar36 + -0x74)" ( (binary_expression "puVar36 + -0x74" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar36 + -0x78) = uVar39;" (assignment_expression "*(undefined4 *)(puVar36 + -0x78) = uVar39" (pointer_expression "*(undefined4 *)(puVar36 + -0x78)" * (cast_expression "(undefined4 *)(puVar36 + -0x78)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar36 + -0x78)" ( (binary_expression "puVar36 + -0x78" identifier + number_literal) )))) = identifier) ;) (expression_statement "puVar28 = puVar17;" (assignment_expression "puVar28 = puVar17" identifier = identifier) ;) (expression_statement "puVar18 = puVar25;" (assignment_expression "puVar18 = puVar25" identifier = identifier) ;) (expression_statement "puVar4 = puVar21;" (assignment_expression "puVar4 = puVar21" identifier = identifier) ;) (expression_statement "puVar25 = puVar29;" (assignment_expression "puVar25 = puVar29" identifier = identifier) ;) (goto_statement "goto LAB_0005309c;" goto statement_identifier ;) })) (expression_statement "iVar7 = *(int *)(puVar36 + -0x30);" (assignment_expression "iVar7 = *(int *)(puVar36 + -0x30)" identifier = (pointer_expression "*(int *)(puVar36 + -0x30)" * (cast_expression "(int *)(puVar36 + -0x30)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar36 + -0x30)" ( (binary_expression "puVar36 + -0x30" identifier + number_literal) ))))) ;) (expression_statement "pcVar34 = *(code **)(pcVar34 + 0x4454c);" (assignment_expression "pcVar34 = *(code **)(pcVar34 + 0x4454c)" identifier = (pointer_expression "*(code **)(pcVar34 + 0x4454c)" * (cast_expression "(code **)(pcVar34 + 0x4454c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar34 + 0x4454c)" ( (binary_expression "pcVar34 + 0x4454c" identifier + number_literal) ))))) ;) (expression_statement "iVar12 = (int)puVar25 - *(int *)(puVar36 + -0x3c);" (assignment_expression "iVar12 = (int)puVar25 - *(int *)(puVar36 + -0x3c)" identifier = (binary_expression "(int)puVar25 - *(int *)(puVar36 + -0x3c)" (cast_expression "(int)puVar25" ( (type_descriptor "int" primitive_type) ) identifier) - (pointer_expression "*(int *)(puVar36 + -0x3c)" * (cast_expression "(int *)(puVar36 + -0x3c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar36 + -0x3c)" ( (binary_expression "puVar36 + -0x3c" identifier + number_literal) )))))) ;) (expression_statement "*(int *)(puVar36 + -0x50) = *(int *)(puVar36 + -0x3c);" (assignment_expression "*(int *)(puVar36 + -0x50) = *(int *)(puVar36 + -0x3c)" (pointer_expression "*(int *)(puVar36 + -0x50)" * (cast_expression "(int *)(puVar36 + -0x50)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar36 + -0x50)" ( (binary_expression "puVar36 + -0x50" identifier + number_literal) )))) = (pointer_expression "*(int *)(puVar36 + -0x3c)" * (cast_expression "(int *)(puVar36 + -0x3c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar36 + -0x3c)" ( (binary_expression "puVar36 + -0x3c" identifier + number_literal) ))))) ;) (expression_statement "*(int *)(puVar36 + -0x44) = iVar9;" (assignment_expression "*(int *)(puVar36 + -0x44) = iVar9" (pointer_expression "*(int *)(puVar36 + -0x44)" * (cast_expression "(int *)(puVar36 + -0x44)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar36 + -0x44)" ( (binary_expression "puVar36 + -0x44" identifier + number_literal) )))) = identifier) ;) (if_statement "if ((int)puVar29 - iVar22 <= iVar12) {\n      iVar12 = (int)puVar29 - iVar22;\n    }" if (parenthesized_expression "((int)puVar29 - iVar22 <= iVar12)" ( (binary_expression "(int)puVar29 - iVar22 <= iVar12" (binary_expression "(int)puVar29 - iVar22" (cast_expression "(int)puVar29" ( (type_descriptor "int" primitive_type) ) identifier) - identifier) <= identifier) )) (compound_statement "{\n      iVar12 = (int)puVar29 - iVar22;\n    }" { (expression_statement "iVar12 = (int)puVar29 - iVar22;" (assignment_expression "iVar12 = (int)puVar29 - iVar22" identifier = (binary_expression "(int)puVar29 - iVar22" (cast_expression "(int)puVar29" ( (type_descriptor "int" primitive_type) ) identifier) - identifier)) ;) })) (expression_statement "iVar11 = (int)puVar25 - iVar9;" (assignment_expression "iVar11 = (int)puVar25 - iVar9" identifier = (binary_expression "(int)puVar25 - iVar9" (cast_expression "(int)puVar25" ( (type_descriptor "int" primitive_type) ) identifier) - identifier)) ;) (if_statement "if ((int)puVar29 - iVar7 <= (int)puVar25 - iVar9) {\n      iVar11 = (int)puVar29 - iVar7;\n    }" if (parenthesized_expression "((int)puVar29 - iVar7 <= (int)puVar25 - iVar9)" ( (binary_expression "(int)puVar29 - iVar7 <= (int)puVar25 - iVar9" (binary_expression "(int)puVar29 - iVar7" (cast_expression "(int)puVar29" ( (type_descriptor "int" primitive_type) ) identifier) - identifier) <= (binary_expression "(int)puVar25 - iVar9" (cast_expression "(int)puVar25" ( (type_descriptor "int" primitive_type) ) identifier) - identifier)) )) (compound_statement "{\n      iVar11 = (int)puVar29 - iVar7;\n    }" { (expression_statement "iVar11 = (int)puVar29 - iVar7;" (assignment_expression "iVar11 = (int)puVar29 - iVar7" identifier = (binary_expression "(int)puVar29 - iVar7" (cast_expression "(int)puVar29" ( (type_descriptor "int" primitive_type) ) identifier) - identifier)) ;) })) (expression_statement "puVar29 = (uint *)(iVar11 + 1);" (assignment_expression "puVar29 = (uint *)(iVar11 + 1)" identifier = (cast_expression "(uint *)(iVar11 + 1)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar11 + 1)" ( (binary_expression "iVar11 + 1" identifier + number_literal) )))) ;) (if_statement "if (iVar11 + 1 <= iVar12 + 1) {\n      puVar29 = (uint *)(iVar12 + 1);\n    }" if (parenthesized_expression "(iVar11 + 1 <= iVar12 + 1)" ( (binary_expression "iVar11 + 1 <= iVar12 + 1" (binary_expression "iVar11 + 1" identifier + number_literal) <= (binary_expression "iVar12 + 1" identifier + number_literal)) )) (compound_statement "{\n      puVar29 = (uint *)(iVar12 + 1);\n    }" { (expression_statement "puVar29 = (uint *)(iVar12 + 1);" (assignment_expression "puVar29 = (uint *)(iVar12 + 1)" identifier = (cast_expression "(uint *)(iVar12 + 1)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar12 + 1)" ( (binary_expression "iVar12 + 1" identifier + number_literal) )))) ;) })) (expression_statement "puVar25 = (uint *)(*pcVar34)((int)puVar29 + 1);" (assignment_expression "puVar25 = (uint *)(*pcVar34)((int)puVar29 + 1)" identifier = (cast_expression "(uint *)(*pcVar34)((int)puVar29 + 1)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(*pcVar34)((int)puVar29 + 1)" (parenthesized_expression "(*pcVar34)" ( (pointer_expression "*pcVar34" * identifier) )) (argument_list "((int)puVar29 + 1)" ( (binary_expression "(int)puVar29 + 1" (cast_expression "(int)puVar29" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (expression_statement "iVar9 = (int)puVar25 >> 1;" (assignment_expression "iVar9 = (int)puVar25 >> 1" identifier = (binary_expression "(int)puVar25 >> 1" (cast_expression "(int)puVar25" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal)) ;) (expression_statement "iVar12 = *(int *)(puVar36 + -0x68);" (assignment_expression "iVar12 = *(int *)(puVar36 + -0x68)" identifier = (pointer_expression "*(int *)(puVar36 + -0x68)" * (cast_expression "(int *)(puVar36 + -0x68)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar36 + -0x68)" ( (binary_expression "puVar36 + -0x68" identifier + number_literal) ))))) ;) (expression_statement "uVar39 = *(undefined4 *)(puVar36 + -0x44);" (assignment_expression "uVar39 = *(undefined4 *)(puVar36 + -0x44)" identifier = (pointer_expression "*(undefined4 *)(puVar36 + -0x44)" * (cast_expression "(undefined4 *)(puVar36 + -0x44)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar36 + -0x44)" ( (binary_expression "puVar36 + -0x44" identifier + number_literal) ))))) ;) (if_statement "if (iVar9 < (int)puVar25) {\n      if (iVar32 <= iVar9) {\n        uVar13 = ((int)puVar25 * 3 + iVar9 + 4) * 4;\n        uVar3 = uVar13 + 7;\n        if (0x7f00 < uVar13) {\n          pcVar34 = *(code **)(iVar12 + -0x7d50);\n          goto LAB_0005305c;\n        }\n        goto LAB_00053148;\n      }\n      uVar13 = ((int)puVar25 * 4 + 4) * 4;\n      uVar3 = uVar13 + 7;\n      if (uVar13 < 0x7f01) goto LAB_00053148;\n      pcVar34 = *(code **)(iVar12 + -0x7d50);\nLAB_0005305c:\n      *(uint **)(puVar36 + -0x48) = puVar25;\n      *(undefined4 *)(puVar36 + -0x44) = uVar39;\n      puVar4 = (uint *)(*pcVar34)(puVar36 + -0x40);\n      iVar12 = *(int *)(puVar36 + -0x68);\n      puVar25 = *(uint **)(puVar36 + -0x48);\n      uVar39 = *(undefined4 *)(puVar36 + -0x44);\n    }\n    else {\n      uVar3 = ((int)puVar25 * 3 + 4) * 4;\n      pcVar34 = *(code **)(iVar12 + -0x7d50);\n      if (0x7f00 < uVar3) goto LAB_0005305c;\n      uVar3 = uVar3 + 7;\nLAB_00053148:\n      puVar38 = puVar36 + -(uVar3 & 0xfffffff8) + -0x88;\n      puVar4 = (uint *)(puVar36 + -(uVar3 & 0xfffffff8) + -0x68);\n    }" if (parenthesized_expression "(iVar9 < (int)puVar25)" ( (binary_expression "iVar9 < (int)puVar25" identifier < (cast_expression "(int)puVar25" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n      if (iVar32 <= iVar9) {\n        uVar13 = ((int)puVar25 * 3 + iVar9 + 4) * 4;\n        uVar3 = uVar13 + 7;\n        if (0x7f00 < uVar13) {\n          pcVar34 = *(code **)(iVar12 + -0x7d50);\n          goto LAB_0005305c;\n        }\n        goto LAB_00053148;\n      }\n      uVar13 = ((int)puVar25 * 4 + 4) * 4;\n      uVar3 = uVar13 + 7;\n      if (uVar13 < 0x7f01) goto LAB_00053148;\n      pcVar34 = *(code **)(iVar12 + -0x7d50);\nLAB_0005305c:\n      *(uint **)(puVar36 + -0x48) = puVar25;\n      *(undefined4 *)(puVar36 + -0x44) = uVar39;\n      puVar4 = (uint *)(*pcVar34)(puVar36 + -0x40);\n      iVar12 = *(int *)(puVar36 + -0x68);\n      puVar25 = *(uint **)(puVar36 + -0x48);\n      uVar39 = *(undefined4 *)(puVar36 + -0x44);\n    }" { (if_statement "if (iVar32 <= iVar9) {\n        uVar13 = ((int)puVar25 * 3 + iVar9 + 4) * 4;\n        uVar3 = uVar13 + 7;\n        if (0x7f00 < uVar13) {\n          pcVar34 = *(code **)(iVar12 + -0x7d50);\n          goto LAB_0005305c;\n        }\n        goto LAB_00053148;\n      }" if (parenthesized_expression "(iVar32 <= iVar9)" ( (binary_expression "iVar32 <= iVar9" identifier <= identifier) )) (compound_statement "{\n        uVar13 = ((int)puVar25 * 3 + iVar9 + 4) * 4;\n        uVar3 = uVar13 + 7;\n        if (0x7f00 < uVar13) {\n          pcVar34 = *(code **)(iVar12 + -0x7d50);\n          goto LAB_0005305c;\n        }\n        goto LAB_00053148;\n      }" { (expression_statement "uVar13 = ((int)puVar25 * 3 + iVar9 + 4) * 4;" (assignment_expression "uVar13 = ((int)puVar25 * 3 + iVar9 + 4) * 4" identifier = (binary_expression "((int)puVar25 * 3 + iVar9 + 4) * 4" (parenthesized_expression "((int)puVar25 * 3 + iVar9 + 4)" ( (binary_expression "(int)puVar25 * 3 + iVar9 + 4" (binary_expression "(int)puVar25 * 3 + iVar9" (binary_expression "(int)puVar25 * 3" (cast_expression "(int)puVar25" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal) + identifier) + number_literal) )) * number_literal)) ;) (expression_statement "uVar3 = uVar13 + 7;" (assignment_expression "uVar3 = uVar13 + 7" identifier = (binary_expression "uVar13 + 7" identifier + number_literal)) ;) (if_statement "if (0x7f00 < uVar13) {\n          pcVar34 = *(code **)(iVar12 + -0x7d50);\n          goto LAB_0005305c;\n        }" if (parenthesized_expression "(0x7f00 < uVar13)" ( (binary_expression "0x7f00 < uVar13" number_literal < identifier) )) (compound_statement "{\n          pcVar34 = *(code **)(iVar12 + -0x7d50);\n          goto LAB_0005305c;\n        }" { (expression_statement "pcVar34 = *(code **)(iVar12 + -0x7d50);" (assignment_expression "pcVar34 = *(code **)(iVar12 + -0x7d50)" identifier = (pointer_expression "*(code **)(iVar12 + -0x7d50)" * (cast_expression "(code **)(iVar12 + -0x7d50)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar12 + -0x7d50)" ( (binary_expression "iVar12 + -0x7d50" identifier + number_literal) ))))) ;) (goto_statement "goto LAB_0005305c;" goto statement_identifier ;) })) (goto_statement "goto LAB_00053148;" goto statement_identifier ;) })) (expression_statement "uVar13 = ((int)puVar25 * 4 + 4) * 4;" (assignment_expression "uVar13 = ((int)puVar25 * 4 + 4) * 4" identifier = (binary_expression "((int)puVar25 * 4 + 4) * 4" (parenthesized_expression "((int)puVar25 * 4 + 4)" ( (binary_expression "(int)puVar25 * 4 + 4" (binary_expression "(int)puVar25 * 4" (cast_expression "(int)puVar25" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal) + number_literal) )) * number_literal)) ;) (expression_statement "uVar3 = uVar13 + 7;" (assignment_expression "uVar3 = uVar13 + 7" identifier = (binary_expression "uVar13 + 7" identifier + number_literal)) ;) (if_statement "if (uVar13 < 0x7f01) goto LAB_00053148;" if (parenthesized_expression "(uVar13 < 0x7f01)" ( (binary_expression "uVar13 < 0x7f01" identifier < number_literal) )) (goto_statement "goto LAB_00053148;" goto statement_identifier ;)) (expression_statement "pcVar34 = *(code **)(iVar12 + -0x7d50);" (assignment_expression "pcVar34 = *(code **)(iVar12 + -0x7d50)" identifier = (pointer_expression "*(code **)(iVar12 + -0x7d50)" * (cast_expression "(code **)(iVar12 + -0x7d50)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar12 + -0x7d50)" ( (binary_expression "iVar12 + -0x7d50" identifier + number_literal) ))))) ;) (labeled_statement "LAB_0005305c:\n      *(uint **)(puVar36 + -0x48) = puVar25;" statement_identifier : (expression_statement "*(uint **)(puVar36 + -0x48) = puVar25;" (assignment_expression "*(uint **)(puVar36 + -0x48) = puVar25" (pointer_expression "*(uint **)(puVar36 + -0x48)" * (cast_expression "(uint **)(puVar36 + -0x48)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar36 + -0x48)" ( (binary_expression "puVar36 + -0x48" identifier + number_literal) )))) = identifier) ;)) (expression_statement "*(undefined4 *)(puVar36 + -0x44) = uVar39;" (assignment_expression "*(undefined4 *)(puVar36 + -0x44) = uVar39" (pointer_expression "*(undefined4 *)(puVar36 + -0x44)" * (cast_expression "(undefined4 *)(puVar36 + -0x44)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar36 + -0x44)" ( (binary_expression "puVar36 + -0x44" identifier + number_literal) )))) = identifier) ;) (expression_statement "puVar4 = (uint *)(*pcVar34)(puVar36 + -0x40);" (assignment_expression "puVar4 = (uint *)(*pcVar34)(puVar36 + -0x40)" identifier = (cast_expression "(uint *)(*pcVar34)(puVar36 + -0x40)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(*pcVar34)(puVar36 + -0x40)" (parenthesized_expression "(*pcVar34)" ( (pointer_expression "*pcVar34" * identifier) )) (argument_list "(puVar36 + -0x40)" ( (binary_expression "puVar36 + -0x40" identifier + number_literal) ))))) ;) (expression_statement "iVar12 = *(int *)(puVar36 + -0x68);" (assignment_expression "iVar12 = *(int *)(puVar36 + -0x68)" identifier = (pointer_expression "*(int *)(puVar36 + -0x68)" * (cast_expression "(int *)(puVar36 + -0x68)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar36 + -0x68)" ( (binary_expression "puVar36 + -0x68" identifier + number_literal) ))))) ;) (expression_statement "puVar25 = *(uint **)(puVar36 + -0x48);" (assignment_expression "puVar25 = *(uint **)(puVar36 + -0x48)" identifier = (pointer_expression "*(uint **)(puVar36 + -0x48)" * (cast_expression "(uint **)(puVar36 + -0x48)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar36 + -0x48)" ( (binary_expression "puVar36 + -0x48" identifier + number_literal) ))))) ;) (expression_statement "uVar39 = *(undefined4 *)(puVar36 + -0x44);" (assignment_expression "uVar39 = *(undefined4 *)(puVar36 + -0x44)" identifier = (pointer_expression "*(undefined4 *)(puVar36 + -0x44)" * (cast_expression "(undefined4 *)(puVar36 + -0x44)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar36 + -0x44)" ( (binary_expression "puVar36 + -0x44" identifier + number_literal) ))))) ;) }) (else_clause "else {\n      uVar3 = ((int)puVar25 * 3 + 4) * 4;\n      pcVar34 = *(code **)(iVar12 + -0x7d50);\n      if (0x7f00 < uVar3) goto LAB_0005305c;\n      uVar3 = uVar3 + 7;\nLAB_00053148:\n      puVar38 = puVar36 + -(uVar3 & 0xfffffff8) + -0x88;\n      puVar4 = (uint *)(puVar36 + -(uVar3 & 0xfffffff8) + -0x68);\n    }" else (compound_statement "{\n      uVar3 = ((int)puVar25 * 3 + 4) * 4;\n      pcVar34 = *(code **)(iVar12 + -0x7d50);\n      if (0x7f00 < uVar3) goto LAB_0005305c;\n      uVar3 = uVar3 + 7;\nLAB_00053148:\n      puVar38 = puVar36 + -(uVar3 & 0xfffffff8) + -0x88;\n      puVar4 = (uint *)(puVar36 + -(uVar3 & 0xfffffff8) + -0x68);\n    }" { (expression_statement "uVar3 = ((int)puVar25 * 3 + 4) * 4;" (assignment_expression "uVar3 = ((int)puVar25 * 3 + 4) * 4" identifier = (binary_expression "((int)puVar25 * 3 + 4) * 4" (parenthesized_expression "((int)puVar25 * 3 + 4)" ( (binary_expression "(int)puVar25 * 3 + 4" (binary_expression "(int)puVar25 * 3" (cast_expression "(int)puVar25" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal) + number_literal) )) * number_literal)) ;) (expression_statement "pcVar34 = *(code **)(iVar12 + -0x7d50);" (assignment_expression "pcVar34 = *(code **)(iVar12 + -0x7d50)" identifier = (pointer_expression "*(code **)(iVar12 + -0x7d50)" * (cast_expression "(code **)(iVar12 + -0x7d50)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar12 + -0x7d50)" ( (binary_expression "iVar12 + -0x7d50" identifier + number_literal) ))))) ;) (if_statement "if (0x7f00 < uVar3) goto LAB_0005305c;" if (parenthesized_expression "(0x7f00 < uVar3)" ( (binary_expression "0x7f00 < uVar3" number_literal < identifier) )) (goto_statement "goto LAB_0005305c;" goto statement_identifier ;)) (expression_statement "uVar3 = uVar3 + 7;" (assignment_expression "uVar3 = uVar3 + 7" identifier = (binary_expression "uVar3 + 7" identifier + number_literal)) ;) (labeled_statement "LAB_00053148:\n      puVar38 = puVar36 + -(uVar3 & 0xfffffff8) + -0x88;" statement_identifier : (expression_statement "puVar38 = puVar36 + -(uVar3 & 0xfffffff8) + -0x88;" (assignment_expression "puVar38 = puVar36 + -(uVar3 & 0xfffffff8) + -0x88" identifier = (binary_expression "puVar36 + -(uVar3 & 0xfffffff8) + -0x88" (binary_expression "puVar36 + -(uVar3 & 0xfffffff8)" identifier + (unary_expression "-(uVar3 & 0xfffffff8)" - (parenthesized_expression "(uVar3 & 0xfffffff8)" ( (binary_expression "uVar3 & 0xfffffff8" identifier & number_literal) )))) + number_literal)) ;)) (expression_statement "puVar4 = (uint *)(puVar36 + -(uVar3 & 0xfffffff8) + -0x68);" (assignment_expression "puVar4 = (uint *)(puVar36 + -(uVar3 & 0xfffffff8) + -0x68)" identifier = (cast_expression "(uint *)(puVar36 + -(uVar3 & 0xfffffff8) + -0x68)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar36 + -(uVar3 & 0xfffffff8) + -0x68)" ( (binary_expression "puVar36 + -(uVar3 & 0xfffffff8) + -0x68" (binary_expression "puVar36 + -(uVar3 & 0xfffffff8)" identifier + (unary_expression "-(uVar3 & 0xfffffff8)" - (parenthesized_expression "(uVar3 & 0xfffffff8)" ( (binary_expression "uVar3 & 0xfffffff8" identifier & number_literal) )))) + number_literal) )))) ;) }))) (expression_statement "*(uint **)(puVar36 + -0x44) = puVar4 + (int)puVar25;" (assignment_expression "*(uint **)(puVar36 + -0x44) = puVar4 + (int)puVar25" (pointer_expression "*(uint **)(puVar36 + -0x44)" * (cast_expression "(uint **)(puVar36 + -0x44)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar36 + -0x44)" ( (binary_expression "puVar36 + -0x44" identifier + number_literal) )))) = (binary_expression "puVar4 + (int)puVar25" identifier + (cast_expression "(int)puVar25" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "*(uint **)(puVar36 + -0x48) = puVar4 + (int)puVar25 + (int)puVar25;" (assignment_expression "*(uint **)(puVar36 + -0x48) = puVar4 + (int)puVar25 + (int)puVar25" (pointer_expression "*(uint **)(puVar36 + -0x48)" * (cast_expression "(uint **)(puVar36 + -0x48)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar36 + -0x48)" ( (binary_expression "puVar36 + -0x48" identifier + number_literal) )))) = (binary_expression "puVar4 + (int)puVar25 + (int)puVar25" (binary_expression "puVar4 + (int)puVar25" identifier + (cast_expression "(int)puVar25" ( (type_descriptor "int" primitive_type) ) identifier)) + (cast_expression "(int)puVar25" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (if_statement "if ((int)puVar25 < (int)puVar28) {\n      pcVar34 = *(code **)(iVar12 + -0x7d0c);\n      puVar18 = (uint *)((int)puVar28 - (int)puVar25);\n      *(undefined4 *)(puVar36 + -0x5c) = uVar39;\n      *(uint **)(puVar36 + -0x58) = puVar25;\n      *(int *)(puVar36 + -0x54) = (int)puVar25 * 4;\n      iVar9 = (*pcVar34)(puVar17,puVar17,puVar17 + (int)puVar25,puVar18);\n      iVar12 = *(int *)(puVar36 + -0x68);\n      iVar32 = *(int *)(puVar36 + -0x54);\n      puVar28 = *(uint **)(puVar36 + -0x58);\n      uVar39 = *(undefined4 *)(puVar36 + -0x5c);\n      if (iVar9 == 0) {\nLAB_0005359c:\n        pcVar34 = *(code **)(iVar12 + -0x7d0c);\n      }\n      else {\n        puVar25 = puVar17;\n        if ((int)puVar28 <= (int)puVar18) {\nLAB_00053588:\n          do {\n            uVar3 = *puVar25;\n            *puVar25 = uVar3 + 1;\n            puVar25 = puVar25 + 1;\n          } while (uVar3 + 1 == 0);\n          goto LAB_0005359c;\n        }\n        puVar31 = puVar17 + (int)puVar18;\n        uVar3 = *puVar31;\n        *puVar31 = uVar3 + 1;\n        puVar19 = puVar18;\n        if (uVar3 + 1 == 0) {\n          do {\n            puVar19 = (uint *)((int)puVar19 + 1);\n            if (puVar28 == puVar19) goto LAB_00053588;\n            uVar3 = puVar31[1];\n            puVar31 = puVar31 + 1;\n            *puVar31 = uVar3 + 1;\n          } while (uVar3 + 1 == 0);\n          goto LAB_0005359c;\n        }\n        pcVar34 = *(code **)(iVar12 + -0x7d0c);\n      }\n      *(uint **)(puVar36 + -0x58) = puVar28;\n      *(undefined4 *)(puVar36 + -0x54) = uVar39;\n      iVar9 = (*pcVar34)(puVar21,puVar21,(int)puVar21 + iVar32,puVar18);\n      iVar12 = *(int *)(puVar36 + -0x68);\n      uVar39 = *(undefined4 *)(puVar36 + -0x54);\n      puVar25 = *(uint **)(puVar36 + -0x58);\n      puVar28 = puVar25;\n      if (iVar9 != 0) {\n        puVar19 = puVar21;\n        if ((int)puVar18 < (int)puVar25) {\n          puVar31 = puVar21 + (int)puVar18;\n          uVar3 = *puVar31 + 1;\n          *puVar31 = uVar3;\n          while (uVar3 == 0) {\n            puVar18 = (uint *)((int)puVar18 + 1);\n            if (puVar25 == puVar18) goto LAB_0005361c;\n            puVar5 = puVar31 + 1;\n            puVar31 = puVar31 + 1;\n            uVar3 = *puVar5 + 1;\n            *puVar31 = uVar3;\n          }\n        }\n        else {\nLAB_0005361c:\n          do {\n            uVar3 = *puVar19;\n            *puVar19 = uVar3 + 1;\n            puVar19 = puVar19 + 1;\n          } while (uVar3 + 1 == 0);\n        }\n      }\n    }" if (parenthesized_expression "((int)puVar25 < (int)puVar28)" ( (binary_expression "(int)puVar25 < (int)puVar28" (cast_expression "(int)puVar25" ( (type_descriptor "int" primitive_type) ) identifier) < (cast_expression "(int)puVar28" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n      pcVar34 = *(code **)(iVar12 + -0x7d0c);\n      puVar18 = (uint *)((int)puVar28 - (int)puVar25);\n      *(undefined4 *)(puVar36 + -0x5c) = uVar39;\n      *(uint **)(puVar36 + -0x58) = puVar25;\n      *(int *)(puVar36 + -0x54) = (int)puVar25 * 4;\n      iVar9 = (*pcVar34)(puVar17,puVar17,puVar17 + (int)puVar25,puVar18);\n      iVar12 = *(int *)(puVar36 + -0x68);\n      iVar32 = *(int *)(puVar36 + -0x54);\n      puVar28 = *(uint **)(puVar36 + -0x58);\n      uVar39 = *(undefined4 *)(puVar36 + -0x5c);\n      if (iVar9 == 0) {\nLAB_0005359c:\n        pcVar34 = *(code **)(iVar12 + -0x7d0c);\n      }\n      else {\n        puVar25 = puVar17;\n        if ((int)puVar28 <= (int)puVar18) {\nLAB_00053588:\n          do {\n            uVar3 = *puVar25;\n            *puVar25 = uVar3 + 1;\n            puVar25 = puVar25 + 1;\n          } while (uVar3 + 1 == 0);\n          goto LAB_0005359c;\n        }\n        puVar31 = puVar17 + (int)puVar18;\n        uVar3 = *puVar31;\n        *puVar31 = uVar3 + 1;\n        puVar19 = puVar18;\n        if (uVar3 + 1 == 0) {\n          do {\n            puVar19 = (uint *)((int)puVar19 + 1);\n            if (puVar28 == puVar19) goto LAB_00053588;\n            uVar3 = puVar31[1];\n            puVar31 = puVar31 + 1;\n            *puVar31 = uVar3 + 1;\n          } while (uVar3 + 1 == 0);\n          goto LAB_0005359c;\n        }\n        pcVar34 = *(code **)(iVar12 + -0x7d0c);\n      }\n      *(uint **)(puVar36 + -0x58) = puVar28;\n      *(undefined4 *)(puVar36 + -0x54) = uVar39;\n      iVar9 = (*pcVar34)(puVar21,puVar21,(int)puVar21 + iVar32,puVar18);\n      iVar12 = *(int *)(puVar36 + -0x68);\n      uVar39 = *(undefined4 *)(puVar36 + -0x54);\n      puVar25 = *(uint **)(puVar36 + -0x58);\n      puVar28 = puVar25;\n      if (iVar9 != 0) {\n        puVar19 = puVar21;\n        if ((int)puVar18 < (int)puVar25) {\n          puVar31 = puVar21 + (int)puVar18;\n          uVar3 = *puVar31 + 1;\n          *puVar31 = uVar3;\n          while (uVar3 == 0) {\n            puVar18 = (uint *)((int)puVar18 + 1);\n            if (puVar25 == puVar18) goto LAB_0005361c;\n            puVar5 = puVar31 + 1;\n            puVar31 = puVar31 + 1;\n            uVar3 = *puVar5 + 1;\n            *puVar31 = uVar3;\n          }\n        }\n        else {\nLAB_0005361c:\n          do {\n            uVar3 = *puVar19;\n            *puVar19 = uVar3 + 1;\n            puVar19 = puVar19 + 1;\n          } while (uVar3 + 1 == 0);\n        }\n      }\n    }" { (expression_statement "pcVar34 = *(code **)(iVar12 + -0x7d0c);" (assignment_expression "pcVar34 = *(code **)(iVar12 + -0x7d0c)" identifier = (pointer_expression "*(code **)(iVar12 + -0x7d0c)" * (cast_expression "(code **)(iVar12 + -0x7d0c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar12 + -0x7d0c)" ( (binary_expression "iVar12 + -0x7d0c" identifier + number_literal) ))))) ;) (expression_statement "puVar18 = (uint *)((int)puVar28 - (int)puVar25);" (assignment_expression "puVar18 = (uint *)((int)puVar28 - (int)puVar25)" identifier = (cast_expression "(uint *)((int)puVar28 - (int)puVar25)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar28 - (int)puVar25)" ( (binary_expression "(int)puVar28 - (int)puVar25" (cast_expression "(int)puVar28" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)puVar25" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) (expression_statement "*(undefined4 *)(puVar36 + -0x5c) = uVar39;" (assignment_expression "*(undefined4 *)(puVar36 + -0x5c) = uVar39" (pointer_expression "*(undefined4 *)(puVar36 + -0x5c)" * (cast_expression "(undefined4 *)(puVar36 + -0x5c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar36 + -0x5c)" ( (binary_expression "puVar36 + -0x5c" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(uint **)(puVar36 + -0x58) = puVar25;" (assignment_expression "*(uint **)(puVar36 + -0x58) = puVar25" (pointer_expression "*(uint **)(puVar36 + -0x58)" * (cast_expression "(uint **)(puVar36 + -0x58)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar36 + -0x58)" ( (binary_expression "puVar36 + -0x58" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(puVar36 + -0x54) = (int)puVar25 * 4;" (assignment_expression "*(int *)(puVar36 + -0x54) = (int)puVar25 * 4" (pointer_expression "*(int *)(puVar36 + -0x54)" * (cast_expression "(int *)(puVar36 + -0x54)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar36 + -0x54)" ( (binary_expression "puVar36 + -0x54" identifier + number_literal) )))) = (binary_expression "(int)puVar25 * 4" (cast_expression "(int)puVar25" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal)) ;) (expression_statement "iVar9 = (*pcVar34)(puVar17,puVar17,puVar17 + (int)puVar25,puVar18);" (assignment_expression "iVar9 = (*pcVar34)(puVar17,puVar17,puVar17 + (int)puVar25,puVar18)" identifier = (call_expression "(*pcVar34)(puVar17,puVar17,puVar17 + (int)puVar25,puVar18)" (parenthesized_expression "(*pcVar34)" ( (pointer_expression "*pcVar34" * identifier) )) (argument_list "(puVar17,puVar17,puVar17 + (int)puVar25,puVar18)" ( identifier , identifier , (binary_expression "puVar17 + (int)puVar25" identifier + (cast_expression "(int)puVar25" ( (type_descriptor "int" primitive_type) ) identifier)) , identifier )))) ;) (expression_statement "iVar12 = *(int *)(puVar36 + -0x68);" (assignment_expression "iVar12 = *(int *)(puVar36 + -0x68)" identifier = (pointer_expression "*(int *)(puVar36 + -0x68)" * (cast_expression "(int *)(puVar36 + -0x68)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar36 + -0x68)" ( (binary_expression "puVar36 + -0x68" identifier + number_literal) ))))) ;) (expression_statement "iVar32 = *(int *)(puVar36 + -0x54);" (assignment_expression "iVar32 = *(int *)(puVar36 + -0x54)" identifier = (pointer_expression "*(int *)(puVar36 + -0x54)" * (cast_expression "(int *)(puVar36 + -0x54)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar36 + -0x54)" ( (binary_expression "puVar36 + -0x54" identifier + number_literal) ))))) ;) (expression_statement "puVar28 = *(uint **)(puVar36 + -0x58);" (assignment_expression "puVar28 = *(uint **)(puVar36 + -0x58)" identifier = (pointer_expression "*(uint **)(puVar36 + -0x58)" * (cast_expression "(uint **)(puVar36 + -0x58)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar36 + -0x58)" ( (binary_expression "puVar36 + -0x58" identifier + number_literal) ))))) ;) (expression_statement "uVar39 = *(undefined4 *)(puVar36 + -0x5c);" (assignment_expression "uVar39 = *(undefined4 *)(puVar36 + -0x5c)" identifier = (pointer_expression "*(undefined4 *)(puVar36 + -0x5c)" * (cast_expression "(undefined4 *)(puVar36 + -0x5c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar36 + -0x5c)" ( (binary_expression "puVar36 + -0x5c" identifier + number_literal) ))))) ;) (if_statement "if (iVar9 == 0) {\nLAB_0005359c:\n        pcVar34 = *(code **)(iVar12 + -0x7d0c);\n      }\n      else {\n        puVar25 = puVar17;\n        if ((int)puVar28 <= (int)puVar18) {\nLAB_00053588:\n          do {\n            uVar3 = *puVar25;\n            *puVar25 = uVar3 + 1;\n            puVar25 = puVar25 + 1;\n          } while (uVar3 + 1 == 0);\n          goto LAB_0005359c;\n        }\n        puVar31 = puVar17 + (int)puVar18;\n        uVar3 = *puVar31;\n        *puVar31 = uVar3 + 1;\n        puVar19 = puVar18;\n        if (uVar3 + 1 == 0) {\n          do {\n            puVar19 = (uint *)((int)puVar19 + 1);\n            if (puVar28 == puVar19) goto LAB_00053588;\n            uVar3 = puVar31[1];\n            puVar31 = puVar31 + 1;\n            *puVar31 = uVar3 + 1;\n          } while (uVar3 + 1 == 0);\n          goto LAB_0005359c;\n        }\n        pcVar34 = *(code **)(iVar12 + -0x7d0c);\n      }" if (parenthesized_expression "(iVar9 == 0)" ( (binary_expression "iVar9 == 0" identifier == number_literal) )) (compound_statement "{\nLAB_0005359c:\n        pcVar34 = *(code **)(iVar12 + -0x7d0c);\n      }" { (labeled_statement "LAB_0005359c:\n        pcVar34 = *(code **)(iVar12 + -0x7d0c);" statement_identifier : (expression_statement "pcVar34 = *(code **)(iVar12 + -0x7d0c);" (assignment_expression "pcVar34 = *(code **)(iVar12 + -0x7d0c)" identifier = (pointer_expression "*(code **)(iVar12 + -0x7d0c)" * (cast_expression "(code **)(iVar12 + -0x7d0c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar12 + -0x7d0c)" ( (binary_expression "iVar12 + -0x7d0c" identifier + number_literal) ))))) ;)) }) (else_clause "else {\n        puVar25 = puVar17;\n        if ((int)puVar28 <= (int)puVar18) {\nLAB_00053588:\n          do {\n            uVar3 = *puVar25;\n            *puVar25 = uVar3 + 1;\n            puVar25 = puVar25 + 1;\n          } while (uVar3 + 1 == 0);\n          goto LAB_0005359c;\n        }\n        puVar31 = puVar17 + (int)puVar18;\n        uVar3 = *puVar31;\n        *puVar31 = uVar3 + 1;\n        puVar19 = puVar18;\n        if (uVar3 + 1 == 0) {\n          do {\n            puVar19 = (uint *)((int)puVar19 + 1);\n            if (puVar28 == puVar19) goto LAB_00053588;\n            uVar3 = puVar31[1];\n            puVar31 = puVar31 + 1;\n            *puVar31 = uVar3 + 1;\n          } while (uVar3 + 1 == 0);\n          goto LAB_0005359c;\n        }\n        pcVar34 = *(code **)(iVar12 + -0x7d0c);\n      }" else (compound_statement "{\n        puVar25 = puVar17;\n        if ((int)puVar28 <= (int)puVar18) {\nLAB_00053588:\n          do {\n            uVar3 = *puVar25;\n            *puVar25 = uVar3 + 1;\n            puVar25 = puVar25 + 1;\n          } while (uVar3 + 1 == 0);\n          goto LAB_0005359c;\n        }\n        puVar31 = puVar17 + (int)puVar18;\n        uVar3 = *puVar31;\n        *puVar31 = uVar3 + 1;\n        puVar19 = puVar18;\n        if (uVar3 + 1 == 0) {\n          do {\n            puVar19 = (uint *)((int)puVar19 + 1);\n            if (puVar28 == puVar19) goto LAB_00053588;\n            uVar3 = puVar31[1];\n            puVar31 = puVar31 + 1;\n            *puVar31 = uVar3 + 1;\n          } while (uVar3 + 1 == 0);\n          goto LAB_0005359c;\n        }\n        pcVar34 = *(code **)(iVar12 + -0x7d0c);\n      }" { (expression_statement "puVar25 = puVar17;" (assignment_expression "puVar25 = puVar17" identifier = identifier) ;) (if_statement "if ((int)puVar28 <= (int)puVar18) {\nLAB_00053588:\n          do {\n            uVar3 = *puVar25;\n            *puVar25 = uVar3 + 1;\n            puVar25 = puVar25 + 1;\n          } while (uVar3 + 1 == 0);\n          goto LAB_0005359c;\n        }" if (parenthesized_expression "((int)puVar28 <= (int)puVar18)" ( (binary_expression "(int)puVar28 <= (int)puVar18" (cast_expression "(int)puVar28" ( (type_descriptor "int" primitive_type) ) identifier) <= (cast_expression "(int)puVar18" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\nLAB_00053588:\n          do {\n            uVar3 = *puVar25;\n            *puVar25 = uVar3 + 1;\n            puVar25 = puVar25 + 1;\n          } while (uVar3 + 1 == 0);\n          goto LAB_0005359c;\n        }" { (labeled_statement "LAB_00053588:\n          do {\n            uVar3 = *puVar25;\n            *puVar25 = uVar3 + 1;\n            puVar25 = puVar25 + 1;\n          } while (uVar3 + 1 == 0);" statement_identifier : (do_statement "do {\n            uVar3 = *puVar25;\n            *puVar25 = uVar3 + 1;\n            puVar25 = puVar25 + 1;\n          } while (uVar3 + 1 == 0);" do (compound_statement "{\n            uVar3 = *puVar25;\n            *puVar25 = uVar3 + 1;\n            puVar25 = puVar25 + 1;\n          }" { (expression_statement "uVar3 = *puVar25;" (assignment_expression "uVar3 = *puVar25" identifier = (pointer_expression "*puVar25" * identifier)) ;) (expression_statement "*puVar25 = uVar3 + 1;" (assignment_expression "*puVar25 = uVar3 + 1" (pointer_expression "*puVar25" * identifier) = (binary_expression "uVar3 + 1" identifier + number_literal)) ;) (expression_statement "puVar25 = puVar25 + 1;" (assignment_expression "puVar25 = puVar25 + 1" identifier = (binary_expression "puVar25 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar3 + 1 == 0)" ( (binary_expression "uVar3 + 1 == 0" (binary_expression "uVar3 + 1" identifier + number_literal) == number_literal) )) ;)) (goto_statement "goto LAB_0005359c;" goto statement_identifier ;) })) (expression_statement "puVar31 = puVar17 + (int)puVar18;" (assignment_expression "puVar31 = puVar17 + (int)puVar18" identifier = (binary_expression "puVar17 + (int)puVar18" identifier + (cast_expression "(int)puVar18" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "uVar3 = *puVar31;" (assignment_expression "uVar3 = *puVar31" identifier = (pointer_expression "*puVar31" * identifier)) ;) (expression_statement "*puVar31 = uVar3 + 1;" (assignment_expression "*puVar31 = uVar3 + 1" (pointer_expression "*puVar31" * identifier) = (binary_expression "uVar3 + 1" identifier + number_literal)) ;) (expression_statement "puVar19 = puVar18;" (assignment_expression "puVar19 = puVar18" identifier = identifier) ;) (if_statement "if (uVar3 + 1 == 0) {\n          do {\n            puVar19 = (uint *)((int)puVar19 + 1);\n            if (puVar28 == puVar19) goto LAB_00053588;\n            uVar3 = puVar31[1];\n            puVar31 = puVar31 + 1;\n            *puVar31 = uVar3 + 1;\n          } while (uVar3 + 1 == 0);\n          goto LAB_0005359c;\n        }" if (parenthesized_expression "(uVar3 + 1 == 0)" ( (binary_expression "uVar3 + 1 == 0" (binary_expression "uVar3 + 1" identifier + number_literal) == number_literal) )) (compound_statement "{\n          do {\n            puVar19 = (uint *)((int)puVar19 + 1);\n            if (puVar28 == puVar19) goto LAB_00053588;\n            uVar3 = puVar31[1];\n            puVar31 = puVar31 + 1;\n            *puVar31 = uVar3 + 1;\n          } while (uVar3 + 1 == 0);\n          goto LAB_0005359c;\n        }" { (do_statement "do {\n            puVar19 = (uint *)((int)puVar19 + 1);\n            if (puVar28 == puVar19) goto LAB_00053588;\n            uVar3 = puVar31[1];\n            puVar31 = puVar31 + 1;\n            *puVar31 = uVar3 + 1;\n          } while (uVar3 + 1 == 0);" do (compound_statement "{\n            puVar19 = (uint *)((int)puVar19 + 1);\n            if (puVar28 == puVar19) goto LAB_00053588;\n            uVar3 = puVar31[1];\n            puVar31 = puVar31 + 1;\n            *puVar31 = uVar3 + 1;\n          }" { (expression_statement "puVar19 = (uint *)((int)puVar19 + 1);" (assignment_expression "puVar19 = (uint *)((int)puVar19 + 1)" identifier = (cast_expression "(uint *)((int)puVar19 + 1)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar19 + 1)" ( (binary_expression "(int)puVar19 + 1" (cast_expression "(int)puVar19" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (if_statement "if (puVar28 == puVar19) goto LAB_00053588;" if (parenthesized_expression "(puVar28 == puVar19)" ( (binary_expression "puVar28 == puVar19" identifier == identifier) )) (goto_statement "goto LAB_00053588;" goto statement_identifier ;)) (expression_statement "uVar3 = puVar31[1];" (assignment_expression "uVar3 = puVar31[1]" identifier = (subscript_expression "puVar31[1]" identifier [ number_literal ])) ;) (expression_statement "puVar31 = puVar31 + 1;" (assignment_expression "puVar31 = puVar31 + 1" identifier = (binary_expression "puVar31 + 1" identifier + number_literal)) ;) (expression_statement "*puVar31 = uVar3 + 1;" (assignment_expression "*puVar31 = uVar3 + 1" (pointer_expression "*puVar31" * identifier) = (binary_expression "uVar3 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar3 + 1 == 0)" ( (binary_expression "uVar3 + 1 == 0" (binary_expression "uVar3 + 1" identifier + number_literal) == number_literal) )) ;) (goto_statement "goto LAB_0005359c;" goto statement_identifier ;) })) (expression_statement "pcVar34 = *(code **)(iVar12 + -0x7d0c);" (assignment_expression "pcVar34 = *(code **)(iVar12 + -0x7d0c)" identifier = (pointer_expression "*(code **)(iVar12 + -0x7d0c)" * (cast_expression "(code **)(iVar12 + -0x7d0c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar12 + -0x7d0c)" ( (binary_expression "iVar12 + -0x7d0c" identifier + number_literal) ))))) ;) }))) (expression_statement "*(uint **)(puVar36 + -0x58) = puVar28;" (assignment_expression "*(uint **)(puVar36 + -0x58) = puVar28" (pointer_expression "*(uint **)(puVar36 + -0x58)" * (cast_expression "(uint **)(puVar36 + -0x58)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar36 + -0x58)" ( (binary_expression "puVar36 + -0x58" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar36 + -0x54) = uVar39;" (assignment_expression "*(undefined4 *)(puVar36 + -0x54) = uVar39" (pointer_expression "*(undefined4 *)(puVar36 + -0x54)" * (cast_expression "(undefined4 *)(puVar36 + -0x54)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar36 + -0x54)" ( (binary_expression "puVar36 + -0x54" identifier + number_literal) )))) = identifier) ;) (expression_statement "iVar9 = (*pcVar34)(puVar21,puVar21,(int)puVar21 + iVar32,puVar18);" (assignment_expression "iVar9 = (*pcVar34)(puVar21,puVar21,(int)puVar21 + iVar32,puVar18)" identifier = (call_expression "(*pcVar34)(puVar21,puVar21,(int)puVar21 + iVar32,puVar18)" (parenthesized_expression "(*pcVar34)" ( (pointer_expression "*pcVar34" * identifier) )) (argument_list "(puVar21,puVar21,(int)puVar21 + iVar32,puVar18)" ( identifier , identifier , (binary_expression "(int)puVar21 + iVar32" (cast_expression "(int)puVar21" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) , identifier )))) ;) (expression_statement "iVar12 = *(int *)(puVar36 + -0x68);" (assignment_expression "iVar12 = *(int *)(puVar36 + -0x68)" identifier = (pointer_expression "*(int *)(puVar36 + -0x68)" * (cast_expression "(int *)(puVar36 + -0x68)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar36 + -0x68)" ( (binary_expression "puVar36 + -0x68" identifier + number_literal) ))))) ;) (expression_statement "uVar39 = *(undefined4 *)(puVar36 + -0x54);" (assignment_expression "uVar39 = *(undefined4 *)(puVar36 + -0x54)" identifier = (pointer_expression "*(undefined4 *)(puVar36 + -0x54)" * (cast_expression "(undefined4 *)(puVar36 + -0x54)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar36 + -0x54)" ( (binary_expression "puVar36 + -0x54" identifier + number_literal) ))))) ;) (expression_statement "puVar25 = *(uint **)(puVar36 + -0x58);" (assignment_expression "puVar25 = *(uint **)(puVar36 + -0x58)" identifier = (pointer_expression "*(uint **)(puVar36 + -0x58)" * (cast_expression "(uint **)(puVar36 + -0x58)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar36 + -0x58)" ( (binary_expression "puVar36 + -0x58" identifier + number_literal) ))))) ;) (expression_statement "puVar28 = puVar25;" (assignment_expression "puVar28 = puVar25" identifier = identifier) ;) (if_statement "if (iVar9 != 0) {\n        puVar19 = puVar21;\n        if ((int)puVar18 < (int)puVar25) {\n          puVar31 = puVar21 + (int)puVar18;\n          uVar3 = *puVar31 + 1;\n          *puVar31 = uVar3;\n          while (uVar3 == 0) {\n            puVar18 = (uint *)((int)puVar18 + 1);\n            if (puVar25 == puVar18) goto LAB_0005361c;\n            puVar5 = puVar31 + 1;\n            puVar31 = puVar31 + 1;\n            uVar3 = *puVar5 + 1;\n            *puVar31 = uVar3;\n          }\n        }\n        else {\nLAB_0005361c:\n          do {\n            uVar3 = *puVar19;\n            *puVar19 = uVar3 + 1;\n            puVar19 = puVar19 + 1;\n          } while (uVar3 + 1 == 0);\n        }\n      }" if (parenthesized_expression "(iVar9 != 0)" ( (binary_expression "iVar9 != 0" identifier != number_literal) )) (compound_statement "{\n        puVar19 = puVar21;\n        if ((int)puVar18 < (int)puVar25) {\n          puVar31 = puVar21 + (int)puVar18;\n          uVar3 = *puVar31 + 1;\n          *puVar31 = uVar3;\n          while (uVar3 == 0) {\n            puVar18 = (uint *)((int)puVar18 + 1);\n            if (puVar25 == puVar18) goto LAB_0005361c;\n            puVar5 = puVar31 + 1;\n            puVar31 = puVar31 + 1;\n            uVar3 = *puVar5 + 1;\n            *puVar31 = uVar3;\n          }\n        }\n        else {\nLAB_0005361c:\n          do {\n            uVar3 = *puVar19;\n            *puVar19 = uVar3 + 1;\n            puVar19 = puVar19 + 1;\n          } while (uVar3 + 1 == 0);\n        }\n      }" { (expression_statement "puVar19 = puVar21;" (assignment_expression "puVar19 = puVar21" identifier = identifier) ;) (if_statement "if ((int)puVar18 < (int)puVar25) {\n          puVar31 = puVar21 + (int)puVar18;\n          uVar3 = *puVar31 + 1;\n          *puVar31 = uVar3;\n          while (uVar3 == 0) {\n            puVar18 = (uint *)((int)puVar18 + 1);\n            if (puVar25 == puVar18) goto LAB_0005361c;\n            puVar5 = puVar31 + 1;\n            puVar31 = puVar31 + 1;\n            uVar3 = *puVar5 + 1;\n            *puVar31 = uVar3;\n          }\n        }\n        else {\nLAB_0005361c:\n          do {\n            uVar3 = *puVar19;\n            *puVar19 = uVar3 + 1;\n            puVar19 = puVar19 + 1;\n          } while (uVar3 + 1 == 0);\n        }" if (parenthesized_expression "((int)puVar18 < (int)puVar25)" ( (binary_expression "(int)puVar18 < (int)puVar25" (cast_expression "(int)puVar18" ( (type_descriptor "int" primitive_type) ) identifier) < (cast_expression "(int)puVar25" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n          puVar31 = puVar21 + (int)puVar18;\n          uVar3 = *puVar31 + 1;\n          *puVar31 = uVar3;\n          while (uVar3 == 0) {\n            puVar18 = (uint *)((int)puVar18 + 1);\n            if (puVar25 == puVar18) goto LAB_0005361c;\n            puVar5 = puVar31 + 1;\n            puVar31 = puVar31 + 1;\n            uVar3 = *puVar5 + 1;\n            *puVar31 = uVar3;\n          }\n        }" { (expression_statement "puVar31 = puVar21 + (int)puVar18;" (assignment_expression "puVar31 = puVar21 + (int)puVar18" identifier = (binary_expression "puVar21 + (int)puVar18" identifier + (cast_expression "(int)puVar18" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "uVar3 = *puVar31 + 1;" (assignment_expression "uVar3 = *puVar31 + 1" identifier = (binary_expression "*puVar31 + 1" (pointer_expression "*puVar31" * identifier) + number_literal)) ;) (expression_statement "*puVar31 = uVar3;" (assignment_expression "*puVar31 = uVar3" (pointer_expression "*puVar31" * identifier) = identifier) ;) (while_statement "while (uVar3 == 0) {\n            puVar18 = (uint *)((int)puVar18 + 1);\n            if (puVar25 == puVar18) goto LAB_0005361c;\n            puVar5 = puVar31 + 1;\n            puVar31 = puVar31 + 1;\n            uVar3 = *puVar5 + 1;\n            *puVar31 = uVar3;\n          }" while (parenthesized_expression "(uVar3 == 0)" ( (binary_expression "uVar3 == 0" identifier == number_literal) )) (compound_statement "{\n            puVar18 = (uint *)((int)puVar18 + 1);\n            if (puVar25 == puVar18) goto LAB_0005361c;\n            puVar5 = puVar31 + 1;\n            puVar31 = puVar31 + 1;\n            uVar3 = *puVar5 + 1;\n            *puVar31 = uVar3;\n          }" { (expression_statement "puVar18 = (uint *)((int)puVar18 + 1);" (assignment_expression "puVar18 = (uint *)((int)puVar18 + 1)" identifier = (cast_expression "(uint *)((int)puVar18 + 1)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar18 + 1)" ( (binary_expression "(int)puVar18 + 1" (cast_expression "(int)puVar18" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (if_statement "if (puVar25 == puVar18) goto LAB_0005361c;" if (parenthesized_expression "(puVar25 == puVar18)" ( (binary_expression "puVar25 == puVar18" identifier == identifier) )) (goto_statement "goto LAB_0005361c;" goto statement_identifier ;)) (expression_statement "puVar5 = puVar31 + 1;" (assignment_expression "puVar5 = puVar31 + 1" identifier = (binary_expression "puVar31 + 1" identifier + number_literal)) ;) (expression_statement "puVar31 = puVar31 + 1;" (assignment_expression "puVar31 = puVar31 + 1" identifier = (binary_expression "puVar31 + 1" identifier + number_literal)) ;) (expression_statement "uVar3 = *puVar5 + 1;" (assignment_expression "uVar3 = *puVar5 + 1" identifier = (binary_expression "*puVar5 + 1" (pointer_expression "*puVar5" * identifier) + number_literal)) ;) (expression_statement "*puVar31 = uVar3;" (assignment_expression "*puVar31 = uVar3" (pointer_expression "*puVar31" * identifier) = identifier) ;) })) }) (else_clause "else {\nLAB_0005361c:\n          do {\n            uVar3 = *puVar19;\n            *puVar19 = uVar3 + 1;\n            puVar19 = puVar19 + 1;\n          } while (uVar3 + 1 == 0);\n        }" else (compound_statement "{\nLAB_0005361c:\n          do {\n            uVar3 = *puVar19;\n            *puVar19 = uVar3 + 1;\n            puVar19 = puVar19 + 1;\n          } while (uVar3 + 1 == 0);\n        }" { (labeled_statement "LAB_0005361c:\n          do {\n            uVar3 = *puVar19;\n            *puVar19 = uVar3 + 1;\n            puVar19 = puVar19 + 1;\n          } while (uVar3 + 1 == 0);" statement_identifier : (do_statement "do {\n            uVar3 = *puVar19;\n            *puVar19 = uVar3 + 1;\n            puVar19 = puVar19 + 1;\n          } while (uVar3 + 1 == 0);" do (compound_statement "{\n            uVar3 = *puVar19;\n            *puVar19 = uVar3 + 1;\n            puVar19 = puVar19 + 1;\n          }" { (expression_statement "uVar3 = *puVar19;" (assignment_expression "uVar3 = *puVar19" identifier = (pointer_expression "*puVar19" * identifier)) ;) (expression_statement "*puVar19 = uVar3 + 1;" (assignment_expression "*puVar19 = uVar3 + 1" (pointer_expression "*puVar19" * identifier) = (binary_expression "uVar3 + 1" identifier + number_literal)) ;) (expression_statement "puVar19 = puVar19 + 1;" (assignment_expression "puVar19 = puVar19 + 1" identifier = (binary_expression "puVar19 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar3 + 1 == 0)" ( (binary_expression "uVar3 + 1 == 0" (binary_expression "uVar3 + 1" identifier + number_literal) == number_literal) )) ;)) }))) })) })) (expression_statement "uVar8 = *(undefined4 *)(iVar24 + 0x14);" (assignment_expression "uVar8 = *(undefined4 *)(iVar24 + 0x14)" identifier = (pointer_expression "*(undefined4 *)(iVar24 + 0x14)" * (cast_expression "(undefined4 *)(iVar24 + 0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar24 + 0x14)" ( (binary_expression "iVar24 + 0x14" identifier + number_literal) ))))) ;) (expression_statement "pcVar34 = *(code **)(iVar12 + -0x7cd8);" (assignment_expression "pcVar34 = *(code **)(iVar12 + -0x7cd8)" identifier = (pointer_expression "*(code **)(iVar12 + -0x7cd8)" * (cast_expression "(code **)(iVar12 + -0x7cd8)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar12 + -0x7cd8)" ( (binary_expression "iVar12 + -0x7cd8" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar36 + -0x5c) = uVar39;" (assignment_expression "*(undefined4 *)(puVar36 + -0x5c) = uVar39" (pointer_expression "*(undefined4 *)(puVar36 + -0x5c)" * (cast_expression "(undefined4 *)(puVar36 + -0x5c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar36 + -0x5c)" ( (binary_expression "puVar36 + -0x5c" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(uint **)(puVar36 + -0x54) = puVar25;" (assignment_expression "*(uint **)(puVar36 + -0x54) = puVar25" (pointer_expression "*(uint **)(puVar36 + -0x54)" * (cast_expression "(uint **)(puVar36 + -0x54)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar36 + -0x54)" ( (binary_expression "puVar36 + -0x54" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar38 + 0x18) = *(undefined4 *)(puVar36 + -0x48);" (assignment_expression "*(undefined4 *)(puVar38 + 0x18) = *(undefined4 *)(puVar36 + -0x48)" (pointer_expression "*(undefined4 *)(puVar38 + 0x18)" * (cast_expression "(undefined4 *)(puVar38 + 0x18)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar38 + 0x18)" ( (binary_expression "puVar38 + 0x18" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(puVar36 + -0x48)" * (cast_expression "(undefined4 *)(puVar36 + -0x48)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar36 + -0x48)" ( (binary_expression "puVar36 + -0x48" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar38 + 0x10) = uVar8;" (assignment_expression "*(undefined4 *)(puVar38 + 0x10) = uVar8" (pointer_expression "*(undefined4 *)(puVar38 + 0x10)" * (cast_expression "(undefined4 *)(puVar38 + 0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar38 + 0x10)" ( (binary_expression "puVar38 + 0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(puVar38 + 0x14) = iVar7;" (assignment_expression "*(int *)(puVar38 + 0x14) = iVar7" (pointer_expression "*(int *)(puVar38 + 0x14)" * (cast_expression "(int *)(puVar38 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar38 + 0x14)" ( (binary_expression "puVar38 + 0x14" identifier + number_literal) )))) = identifier) ;) (expression_statement "(*pcVar34)(puVar4,puVar25,puVar17,puVar28);" (call_expression "(*pcVar34)(puVar4,puVar25,puVar17,puVar28)" (parenthesized_expression "(*pcVar34)" ( (pointer_expression "*pcVar34" * identifier) )) (argument_list "(puVar4,puVar25,puVar17,puVar28)" ( identifier , identifier , identifier , identifier ))) ;) (expression_statement "uVar39 = *(undefined4 *)(iVar24 + 0xc);" (assignment_expression "uVar39 = *(undefined4 *)(iVar24 + 0xc)" identifier = (pointer_expression "*(undefined4 *)(iVar24 + 0xc)" * (cast_expression "(undefined4 *)(iVar24 + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar24 + 0xc)" ( (binary_expression "iVar24 + 0xc" identifier + number_literal) ))))) ;) (expression_statement "uVar26 = *(undefined4 *)(puVar36 + -0x54);" (assignment_expression "uVar26 = *(undefined4 *)(puVar36 + -0x54)" identifier = (pointer_expression "*(undefined4 *)(puVar36 + -0x54)" * (cast_expression "(undefined4 *)(puVar36 + -0x54)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar36 + -0x54)" ( (binary_expression "puVar36 + -0x54" identifier + number_literal) ))))) ;) (expression_statement "uVar27 = *(undefined4 *)(puVar36 + -0x5c);" (assignment_expression "uVar27 = *(undefined4 *)(puVar36 + -0x5c)" identifier = (pointer_expression "*(undefined4 *)(puVar36 + -0x5c)" * (cast_expression "(undefined4 *)(puVar36 + -0x5c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar36 + -0x5c)" ( (binary_expression "puVar36 + -0x5c" identifier + number_literal) ))))) ;) (expression_statement "uVar8 = *(undefined4 *)(puVar36 + -0x48);" (assignment_expression "uVar8 = *(undefined4 *)(puVar36 + -0x48)" identifier = (pointer_expression "*(undefined4 *)(puVar36 + -0x48)" * (cast_expression "(undefined4 *)(puVar36 + -0x48)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar36 + -0x48)" ( (binary_expression "puVar36 + -0x48" identifier + number_literal) ))))) ;) (expression_statement "pcVar34 = *(code **)(*(int *)(puVar36 + -0x68) + -0x7cd8);" (assignment_expression "pcVar34 = *(code **)(*(int *)(puVar36 + -0x68) + -0x7cd8)" identifier = (pointer_expression "*(code **)(*(int *)(puVar36 + -0x68) + -0x7cd8)" * (cast_expression "(code **)(*(int *)(puVar36 + -0x68) + -0x7cd8)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)(puVar36 + -0x68) + -0x7cd8)" ( (binary_expression "*(int *)(puVar36 + -0x68) + -0x7cd8" (pointer_expression "*(int *)(puVar36 + -0x68)" * (cast_expression "(int *)(puVar36 + -0x68)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar36 + -0x68)" ( (binary_expression "puVar36 + -0x68" identifier + number_literal) )))) + number_literal) ))))) ;) (expression_statement "uVar15 = *(undefined4 *)(puVar36 + -0x44);" (assignment_expression "uVar15 = *(undefined4 *)(puVar36 + -0x44)" identifier = (pointer_expression "*(undefined4 *)(puVar36 + -0x44)" * (cast_expression "(undefined4 *)(puVar36 + -0x44)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar36 + -0x44)" ( (binary_expression "puVar36 + -0x44" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar36 + -0x58) = uVar26;" (assignment_expression "*(undefined4 *)(puVar36 + -0x58) = uVar26" (pointer_expression "*(undefined4 *)(puVar36 + -0x58)" * (cast_expression "(undefined4 *)(puVar36 + -0x58)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar36 + -0x58)" ( (binary_expression "puVar36 + -0x58" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar38 + 0x14) = uVar27;" (assignment_expression "*(undefined4 *)(puVar38 + 0x14) = uVar27" (pointer_expression "*(undefined4 *)(puVar38 + 0x14)" * (cast_expression "(undefined4 *)(puVar38 + 0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar38 + 0x14)" ( (binary_expression "puVar38 + 0x14" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar36 + -0x54) = uVar27;" (assignment_expression "*(undefined4 *)(puVar36 + -0x54) = uVar27" (pointer_expression "*(undefined4 *)(puVar36 + -0x54)" * (cast_expression "(undefined4 *)(puVar36 + -0x54)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar36 + -0x54)" ( (binary_expression "puVar36 + -0x54" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar38 + 0x10) = uVar39;" (assignment_expression "*(undefined4 *)(puVar38 + 0x10) = uVar39" (pointer_expression "*(undefined4 *)(puVar38 + 0x10)" * (cast_expression "(undefined4 *)(puVar38 + 0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar38 + 0x10)" ( (binary_expression "puVar38 + 0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar38 + 0x18) = uVar8;" (assignment_expression "*(undefined4 *)(puVar38 + 0x18) = uVar8" (pointer_expression "*(undefined4 *)(puVar38 + 0x18)" * (cast_expression "(undefined4 *)(puVar38 + 0x18)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar38 + 0x18)" ( (binary_expression "puVar38 + 0x18" identifier + number_literal) )))) = identifier) ;) (expression_statement "(*pcVar34)(uVar15,uVar26,puVar21,puVar28);" (call_expression "(*pcVar34)(uVar15,uVar26,puVar21,puVar28)" (parenthesized_expression "(*pcVar34)" ( (pointer_expression "*pcVar34" * identifier) )) (argument_list "(uVar15,uVar26,puVar21,puVar28)" ( identifier , identifier , identifier , identifier ))) ;) (expression_statement "iVar9 = *(int *)(puVar36 + -0x58);" (assignment_expression "iVar9 = *(int *)(puVar36 + -0x58)" identifier = (pointer_expression "*(int *)(puVar36 + -0x58)" * (cast_expression "(int *)(puVar36 + -0x58)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar36 + -0x58)" ( (binary_expression "puVar36 + -0x58" identifier + number_literal) ))))) ;) (expression_statement "iVar12 = *(int *)(puVar36 + -0x68);" (assignment_expression "iVar12 = *(int *)(puVar36 + -0x68)" identifier = (pointer_expression "*(int *)(puVar36 + -0x68)" * (cast_expression "(int *)(puVar36 + -0x68)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar36 + -0x68)" ( (binary_expression "puVar36 + -0x68" identifier + number_literal) ))))) ;) (expression_statement "iVar32 = *(int *)(puVar36 + -0x54);" (assignment_expression "iVar32 = *(int *)(puVar36 + -0x54)" identifier = (pointer_expression "*(int *)(puVar36 + -0x54)" * (cast_expression "(int *)(puVar36 + -0x54)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar36 + -0x54)" ( (binary_expression "puVar36 + -0x54" identifier + number_literal) ))))) ;) (if_statement "if ((iVar7 + (int)puVar28 < iVar9) && (iVar7 != iVar9 - (int)puVar28)) {\n      iVar11 = (iVar9 - (int)puVar28) - iVar7;\n      puVar25 = puVar4 + (int)(iVar7 + (int)puVar28);\n      do {\n        iVar11 = iVar11 + -1;\n        *puVar25 = 0;\n        puVar25 = puVar25 + 1;\n      } while (iVar11 != 0);\n    }" if (parenthesized_expression "((iVar7 + (int)puVar28 < iVar9) && (iVar7 != iVar9 - (int)puVar28))" ( (binary_expression "(iVar7 + (int)puVar28 < iVar9) && (iVar7 != iVar9 - (int)puVar28)" (parenthesized_expression "(iVar7 + (int)puVar28 < iVar9)" ( (binary_expression "iVar7 + (int)puVar28 < iVar9" (binary_expression "iVar7 + (int)puVar28" identifier + (cast_expression "(int)puVar28" ( (type_descriptor "int" primitive_type) ) identifier)) < identifier) )) && (parenthesized_expression "(iVar7 != iVar9 - (int)puVar28)" ( (binary_expression "iVar7 != iVar9 - (int)puVar28" identifier != (binary_expression "iVar9 - (int)puVar28" identifier - (cast_expression "(int)puVar28" ( (type_descriptor "int" primitive_type) ) identifier))) ))) )) (compound_statement "{\n      iVar11 = (iVar9 - (int)puVar28) - iVar7;\n      puVar25 = puVar4 + (int)(iVar7 + (int)puVar28);\n      do {\n        iVar11 = iVar11 + -1;\n        *puVar25 = 0;\n        puVar25 = puVar25 + 1;\n      } while (iVar11 != 0);\n    }" { (expression_statement "iVar11 = (iVar9 - (int)puVar28) - iVar7;" (assignment_expression "iVar11 = (iVar9 - (int)puVar28) - iVar7" identifier = (binary_expression "(iVar9 - (int)puVar28) - iVar7" (parenthesized_expression "(iVar9 - (int)puVar28)" ( (binary_expression "iVar9 - (int)puVar28" identifier - (cast_expression "(int)puVar28" ( (type_descriptor "int" primitive_type) ) identifier)) )) - identifier)) ;) (expression_statement "puVar25 = puVar4 + (int)(iVar7 + (int)puVar28);" (assignment_expression "puVar25 = puVar4 + (int)(iVar7 + (int)puVar28)" identifier = (binary_expression "puVar4 + (int)(iVar7 + (int)puVar28)" identifier + (cast_expression "(int)(iVar7 + (int)puVar28)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(iVar7 + (int)puVar28)" ( (binary_expression "iVar7 + (int)puVar28" identifier + (cast_expression "(int)puVar28" ( (type_descriptor "int" primitive_type) ) identifier)) ))))) ;) (do_statement "do {\n        iVar11 = iVar11 + -1;\n        *puVar25 = 0;\n        puVar25 = puVar25 + 1;\n      } while (iVar11 != 0);" do (compound_statement "{\n        iVar11 = iVar11 + -1;\n        *puVar25 = 0;\n        puVar25 = puVar25 + 1;\n      }" { (expression_statement "iVar11 = iVar11 + -1;" (assignment_expression "iVar11 = iVar11 + -1" identifier = (binary_expression "iVar11 + -1" identifier + number_literal)) ;) (expression_statement "*puVar25 = 0;" (assignment_expression "*puVar25 = 0" (pointer_expression "*puVar25" * identifier) = number_literal) ;) (expression_statement "puVar25 = puVar25 + 1;" (assignment_expression "puVar25 = puVar25 + 1" identifier = (binary_expression "puVar25 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar11 != 0)" ( (binary_expression "iVar11 != 0" identifier != number_literal) )) ;) })) (expression_statement "pcVar34 = *(code **)(iVar12 + -0x7b2c);" (assignment_expression "pcVar34 = *(code **)(iVar12 + -0x7b2c)" identifier = (pointer_expression "*(code **)(iVar12 + -0x7b2c)" * (cast_expression "(code **)(iVar12 + -0x7b2c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar12 + -0x7b2c)" ( (binary_expression "iVar12 + -0x7b2c" identifier + number_literal) ))))) ;) (if_statement "if (iVar32 + (int)puVar28 < iVar9) {\n      if (iVar32 != iVar9 - (int)puVar28) {\n        iVar7 = (iVar9 - (int)puVar28) - iVar32;\n        puVar6 = (undefined4 *)(*(int *)(puVar36 + -0x44) + (int)(iVar32 + (int)puVar28) * 4);\n        do {\n          iVar7 = iVar7 + -1;\n          *puVar6 = 0;\n          puVar6 = puVar6 + 1;\n        } while (iVar7 != 0);\n        pcVar34 = *(code **)(iVar12 + -0x7b2c);\n      }\n    }" if (parenthesized_expression "(iVar32 + (int)puVar28 < iVar9)" ( (binary_expression "iVar32 + (int)puVar28 < iVar9" (binary_expression "iVar32 + (int)puVar28" identifier + (cast_expression "(int)puVar28" ( (type_descriptor "int" primitive_type) ) identifier)) < identifier) )) (compound_statement "{\n      if (iVar32 != iVar9 - (int)puVar28) {\n        iVar7 = (iVar9 - (int)puVar28) - iVar32;\n        puVar6 = (undefined4 *)(*(int *)(puVar36 + -0x44) + (int)(iVar32 + (int)puVar28) * 4);\n        do {\n          iVar7 = iVar7 + -1;\n          *puVar6 = 0;\n          puVar6 = puVar6 + 1;\n        } while (iVar7 != 0);\n        pcVar34 = *(code **)(iVar12 + -0x7b2c);\n      }\n    }" { (if_statement "if (iVar32 != iVar9 - (int)puVar28) {\n        iVar7 = (iVar9 - (int)puVar28) - iVar32;\n        puVar6 = (undefined4 *)(*(int *)(puVar36 + -0x44) + (int)(iVar32 + (int)puVar28) * 4);\n        do {\n          iVar7 = iVar7 + -1;\n          *puVar6 = 0;\n          puVar6 = puVar6 + 1;\n        } while (iVar7 != 0);\n        pcVar34 = *(code **)(iVar12 + -0x7b2c);\n      }" if (parenthesized_expression "(iVar32 != iVar9 - (int)puVar28)" ( (binary_expression "iVar32 != iVar9 - (int)puVar28" identifier != (binary_expression "iVar9 - (int)puVar28" identifier - (cast_expression "(int)puVar28" ( (type_descriptor "int" primitive_type) ) identifier))) )) (compound_statement "{\n        iVar7 = (iVar9 - (int)puVar28) - iVar32;\n        puVar6 = (undefined4 *)(*(int *)(puVar36 + -0x44) + (int)(iVar32 + (int)puVar28) * 4);\n        do {\n          iVar7 = iVar7 + -1;\n          *puVar6 = 0;\n          puVar6 = puVar6 + 1;\n        } while (iVar7 != 0);\n        pcVar34 = *(code **)(iVar12 + -0x7b2c);\n      }" { (expression_statement "iVar7 = (iVar9 - (int)puVar28) - iVar32;" (assignment_expression "iVar7 = (iVar9 - (int)puVar28) - iVar32" identifier = (binary_expression "(iVar9 - (int)puVar28) - iVar32" (parenthesized_expression "(iVar9 - (int)puVar28)" ( (binary_expression "iVar9 - (int)puVar28" identifier - (cast_expression "(int)puVar28" ( (type_descriptor "int" primitive_type) ) identifier)) )) - identifier)) ;) (expression_statement "puVar6 = (undefined4 *)(*(int *)(puVar36 + -0x44) + (int)(iVar32 + (int)puVar28) * 4);" (assignment_expression "puVar6 = (undefined4 *)(*(int *)(puVar36 + -0x44) + (int)(iVar32 + (int)puVar28) * 4)" identifier = (cast_expression "(undefined4 *)(*(int *)(puVar36 + -0x44) + (int)(iVar32 + (int)puVar28) * 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(puVar36 + -0x44) + (int)(iVar32 + (int)puVar28) * 4)" ( (binary_expression "*(int *)(puVar36 + -0x44) + (int)(iVar32 + (int)puVar28) * 4" (pointer_expression "*(int *)(puVar36 + -0x44)" * (cast_expression "(int *)(puVar36 + -0x44)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar36 + -0x44)" ( (binary_expression "puVar36 + -0x44" identifier + number_literal) )))) + (binary_expression "(int)(iVar32 + (int)puVar28) * 4" (cast_expression "(int)(iVar32 + (int)puVar28)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(iVar32 + (int)puVar28)" ( (binary_expression "iVar32 + (int)puVar28" identifier + (cast_expression "(int)puVar28" ( (type_descriptor "int" primitive_type) ) identifier)) ))) * number_literal)) )))) ;) (do_statement "do {\n          iVar7 = iVar7 + -1;\n          *puVar6 = 0;\n          puVar6 = puVar6 + 1;\n        } while (iVar7 != 0);" do (compound_statement "{\n          iVar7 = iVar7 + -1;\n          *puVar6 = 0;\n          puVar6 = puVar6 + 1;\n        }" { (expression_statement "iVar7 = iVar7 + -1;" (assignment_expression "iVar7 = iVar7 + -1" identifier = (binary_expression "iVar7 + -1" identifier + number_literal)) ;) (expression_statement "*puVar6 = 0;" (assignment_expression "*puVar6 = 0" (pointer_expression "*puVar6" * identifier) = number_literal) ;) (expression_statement "puVar6 = puVar6 + 1;" (assignment_expression "puVar6 = puVar6 + 1" identifier = (binary_expression "puVar6 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar7 != 0)" ( (binary_expression "iVar7 != 0" identifier != number_literal) )) ;) (expression_statement "pcVar34 = *(code **)(iVar12 + -0x7b2c);" (assignment_expression "pcVar34 = *(code **)(iVar12 + -0x7b2c)" identifier = (pointer_expression "*(code **)(iVar12 + -0x7b2c)" * (cast_expression "(code **)(iVar12 + -0x7b2c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar12 + -0x7b2c)" ( (binary_expression "iVar12 + -0x7b2c" identifier + number_literal) ))))) ;) })) })) (expression_statement "*(int *)(puVar36 + -0x54) = iVar9;" (assignment_expression "*(int *)(puVar36 + -0x54) = iVar9" (pointer_expression "*(int *)(puVar36 + -0x54)" * (cast_expression "(int *)(puVar36 + -0x54)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar36 + -0x54)" ( (binary_expression "puVar36 + -0x54" identifier + number_literal) )))) = identifier) ;) (expression_statement "uVar3 = (*pcVar34)(puVar4,puVar4,*(undefined4 *)(puVar36 + -0x44),iVar9);" (assignment_expression "uVar3 = (*pcVar34)(puVar4,puVar4,*(undefined4 *)(puVar36 + -0x44),iVar9)" identifier = (call_expression "(*pcVar34)(puVar4,puVar4,*(undefined4 *)(puVar36 + -0x44),iVar9)" (parenthesized_expression "(*pcVar34)" ( (pointer_expression "*pcVar34" * identifier) )) (argument_list "(puVar4,puVar4,*(undefined4 *)(puVar36 + -0x44),iVar9)" ( identifier , identifier , (pointer_expression "*(undefined4 *)(puVar36 + -0x44)" * (cast_expression "(undefined4 *)(puVar36 + -0x44)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar36 + -0x44)" ( (binary_expression "puVar36 + -0x44" identifier + number_literal) )))) , identifier )))) ;) (expression_statement "uVar13 = *puVar4;" (assignment_expression "uVar13 = *puVar4" identifier = (pointer_expression "*puVar4" * identifier)) ;) (expression_statement "iVar9 = *(int *)(puVar36 + -0x68);" (assignment_expression "iVar9 = *(int *)(puVar36 + -0x68)" identifier = (pointer_expression "*(int *)(puVar36 + -0x68)" * (cast_expression "(int *)(puVar36 + -0x68)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar36 + -0x68)" ( (binary_expression "puVar36 + -0x68" identifier + number_literal) ))))) ;) (expression_statement "uVar39 = *(undefined4 *)(puVar36 + -0x54);" (assignment_expression "uVar39 = *(undefined4 *)(puVar36 + -0x54)" identifier = (pointer_expression "*(undefined4 *)(puVar36 + -0x54)" * (cast_expression "(undefined4 *)(puVar36 + -0x54)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar36 + -0x54)" ( (binary_expression "puVar36 + -0x54" identifier + number_literal) ))))) ;) (expression_statement "*puVar4 = uVar13 - uVar3;" (assignment_expression "*puVar4 = uVar13 - uVar3" (pointer_expression "*puVar4" * identifier) = (binary_expression "uVar13 - uVar3" identifier - identifier)) ;) (expression_statement "puVar25 = puVar4;" (assignment_expression "puVar25 = puVar4" identifier = identifier) ;) (if_statement "if (uVar13 < uVar3) {\n      do {\n        puVar25 = puVar25 + 1;\n        uVar3 = *puVar25;\n        *puVar25 = uVar3 - 1;\n      } while (uVar3 == 0);\n    }" if (parenthesized_expression "(uVar13 < uVar3)" ( (binary_expression "uVar13 < uVar3" identifier < identifier) )) (compound_statement "{\n      do {\n        puVar25 = puVar25 + 1;\n        uVar3 = *puVar25;\n        *puVar25 = uVar3 - 1;\n      } while (uVar3 == 0);\n    }" { (do_statement "do {\n        puVar25 = puVar25 + 1;\n        uVar3 = *puVar25;\n        *puVar25 = uVar3 - 1;\n      } while (uVar3 == 0);" do (compound_statement "{\n        puVar25 = puVar25 + 1;\n        uVar3 = *puVar25;\n        *puVar25 = uVar3 - 1;\n      }" { (expression_statement "puVar25 = puVar25 + 1;" (assignment_expression "puVar25 = puVar25 + 1" identifier = (binary_expression "puVar25 + 1" identifier + number_literal)) ;) (expression_statement "uVar3 = *puVar25;" (assignment_expression "uVar3 = *puVar25" identifier = (pointer_expression "*puVar25" * identifier)) ;) (expression_statement "*puVar25 = uVar3 - 1;" (assignment_expression "*puVar25 = uVar3 - 1" (pointer_expression "*puVar25" * identifier) = (binary_expression "uVar3 - 1" identifier - number_literal)) ;) }) while (parenthesized_expression "(uVar3 == 0)" ( (binary_expression "uVar3 == 0" identifier == number_literal) )) ;) })) (expression_statement "uVar8 = *(undefined4 *)(iVar24 + 0x10);" (assignment_expression "uVar8 = *(undefined4 *)(iVar24 + 0x10)" identifier = (pointer_expression "*(undefined4 *)(iVar24 + 0x10)" * (cast_expression "(undefined4 *)(iVar24 + 0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar24 + 0x10)" ( (binary_expression "iVar24 + 0x10" identifier + number_literal) ))))) ;) (expression_statement "pcVar34 = *(code **)(iVar9 + -0x7cd8);" (assignment_expression "pcVar34 = *(code **)(iVar9 + -0x7cd8)" identifier = (pointer_expression "*(code **)(iVar9 + -0x7cd8)" * (cast_expression "(code **)(iVar9 + -0x7cd8)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar9 + -0x7cd8)" ( (binary_expression "iVar9 + -0x7cd8" identifier + number_literal) ))))) ;) (expression_statement "uVar15 = *(undefined4 *)(puVar36 + -0x44);" (assignment_expression "uVar15 = *(undefined4 *)(puVar36 + -0x44)" identifier = (pointer_expression "*(undefined4 *)(puVar36 + -0x44)" * (cast_expression "(undefined4 *)(puVar36 + -0x44)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar36 + -0x44)" ( (binary_expression "puVar36 + -0x44" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar36 + -0x54) = uVar39;" (assignment_expression "*(undefined4 *)(puVar36 + -0x54) = uVar39" (pointer_expression "*(undefined4 *)(puVar36 + -0x54)" * (cast_expression "(undefined4 *)(puVar36 + -0x54)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar36 + -0x54)" ( (binary_expression "puVar36 + -0x54" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar38 + 0x18) = *(undefined4 *)(puVar36 + -0x48);" (assignment_expression "*(undefined4 *)(puVar38 + 0x18) = *(undefined4 *)(puVar36 + -0x48)" (pointer_expression "*(undefined4 *)(puVar38 + 0x18)" * (cast_expression "(undefined4 *)(puVar38 + 0x18)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar38 + 0x18)" ( (binary_expression "puVar38 + 0x18" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(puVar36 + -0x48)" * (cast_expression "(undefined4 *)(puVar36 + -0x48)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar36 + -0x48)" ( (binary_expression "puVar36 + -0x48" identifier + number_literal) ))))) ;) (expression_statement "*(int *)(puVar38 + 0x14) = iVar22;" (assignment_expression "*(int *)(puVar38 + 0x14) = iVar22" (pointer_expression "*(int *)(puVar38 + 0x14)" * (cast_expression "(int *)(puVar38 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar38 + 0x14)" ( (binary_expression "puVar38 + 0x14" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar38 + 0x10) = uVar8;" (assignment_expression "*(undefined4 *)(puVar38 + 0x10) = uVar8" (pointer_expression "*(undefined4 *)(puVar38 + 0x10)" * (cast_expression "(undefined4 *)(puVar38 + 0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar38 + 0x10)" ( (binary_expression "puVar38 + 0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "(*pcVar34)(uVar15,uVar39,puVar17,puVar28);" (call_expression "(*pcVar34)(uVar15,uVar39,puVar17,puVar28)" (parenthesized_expression "(*pcVar34)" ( (pointer_expression "*pcVar34" * identifier) )) (argument_list "(uVar15,uVar39,puVar17,puVar28)" ( identifier , identifier , identifier , identifier ))) ;) (expression_statement "iVar9 = *(int *)(puVar36 + -0x68);" (assignment_expression "iVar9 = *(int *)(puVar36 + -0x68)" identifier = (pointer_expression "*(int *)(puVar36 + -0x68)" * (cast_expression "(int *)(puVar36 + -0x68)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar36 + -0x68)" ( (binary_expression "puVar36 + -0x68" identifier + number_literal) ))))) ;) (expression_statement "uVar39 = *(undefined4 *)(puVar36 + -0x54);" (assignment_expression "uVar39 = *(undefined4 *)(puVar36 + -0x54)" identifier = (pointer_expression "*(undefined4 *)(puVar36 + -0x54)" * (cast_expression "(undefined4 *)(puVar36 + -0x54)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar36 + -0x54)" ( (binary_expression "puVar36 + -0x54" identifier + number_literal) ))))) ;) (if_statement "if (puVar29 != (uint *)0x0) {\n      iVar32 = (int)puVar29 + -1;\n      uVar3 = *puVar4;\n      puVar18 = puVar17;\n      puVar25 = puVar4;\n      if (iVar32 == 0) {\n        *puVar17 = uVar3;\n      }\n      else {\n        do {\n          *puVar18 = uVar3;\n          iVar32 = iVar32 + -1;\n          uVar3 = puVar25[1];\n          puVar18 = puVar18 + 1;\n          puVar25 = puVar25 + 1;\n        } while (iVar32 != 0);\n        puVar17[(int)puVar29 + -1] = uVar3;\n      }\n    }" if (parenthesized_expression "(puVar29 != (uint *)0x0)" ( (binary_expression "puVar29 != (uint *)0x0" identifier != (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      iVar32 = (int)puVar29 + -1;\n      uVar3 = *puVar4;\n      puVar18 = puVar17;\n      puVar25 = puVar4;\n      if (iVar32 == 0) {\n        *puVar17 = uVar3;\n      }\n      else {\n        do {\n          *puVar18 = uVar3;\n          iVar32 = iVar32 + -1;\n          uVar3 = puVar25[1];\n          puVar18 = puVar18 + 1;\n          puVar25 = puVar25 + 1;\n        } while (iVar32 != 0);\n        puVar17[(int)puVar29 + -1] = uVar3;\n      }\n    }" { (expression_statement "iVar32 = (int)puVar29 + -1;" (assignment_expression "iVar32 = (int)puVar29 + -1" identifier = (binary_expression "(int)puVar29 + -1" (cast_expression "(int)puVar29" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal)) ;) (expression_statement "uVar3 = *puVar4;" (assignment_expression "uVar3 = *puVar4" identifier = (pointer_expression "*puVar4" * identifier)) ;) (expression_statement "puVar18 = puVar17;" (assignment_expression "puVar18 = puVar17" identifier = identifier) ;) (expression_statement "puVar25 = puVar4;" (assignment_expression "puVar25 = puVar4" identifier = identifier) ;) (if_statement "if (iVar32 == 0) {\n        *puVar17 = uVar3;\n      }\n      else {\n        do {\n          *puVar18 = uVar3;\n          iVar32 = iVar32 + -1;\n          uVar3 = puVar25[1];\n          puVar18 = puVar18 + 1;\n          puVar25 = puVar25 + 1;\n        } while (iVar32 != 0);\n        puVar17[(int)puVar29 + -1] = uVar3;\n      }" if (parenthesized_expression "(iVar32 == 0)" ( (binary_expression "iVar32 == 0" identifier == number_literal) )) (compound_statement "{\n        *puVar17 = uVar3;\n      }" { (expression_statement "*puVar17 = uVar3;" (assignment_expression "*puVar17 = uVar3" (pointer_expression "*puVar17" * identifier) = identifier) ;) }) (else_clause "else {\n        do {\n          *puVar18 = uVar3;\n          iVar32 = iVar32 + -1;\n          uVar3 = puVar25[1];\n          puVar18 = puVar18 + 1;\n          puVar25 = puVar25 + 1;\n        } while (iVar32 != 0);\n        puVar17[(int)puVar29 + -1] = uVar3;\n      }" else (compound_statement "{\n        do {\n          *puVar18 = uVar3;\n          iVar32 = iVar32 + -1;\n          uVar3 = puVar25[1];\n          puVar18 = puVar18 + 1;\n          puVar25 = puVar25 + 1;\n        } while (iVar32 != 0);\n        puVar17[(int)puVar29 + -1] = uVar3;\n      }" { (do_statement "do {\n          *puVar18 = uVar3;\n          iVar32 = iVar32 + -1;\n          uVar3 = puVar25[1];\n          puVar18 = puVar18 + 1;\n          puVar25 = puVar25 + 1;\n        } while (iVar32 != 0);" do (compound_statement "{\n          *puVar18 = uVar3;\n          iVar32 = iVar32 + -1;\n          uVar3 = puVar25[1];\n          puVar18 = puVar18 + 1;\n          puVar25 = puVar25 + 1;\n        }" { (expression_statement "*puVar18 = uVar3;" (assignment_expression "*puVar18 = uVar3" (pointer_expression "*puVar18" * identifier) = identifier) ;) (expression_statement "iVar32 = iVar32 + -1;" (assignment_expression "iVar32 = iVar32 + -1" identifier = (binary_expression "iVar32 + -1" identifier + number_literal)) ;) (expression_statement "uVar3 = puVar25[1];" (assignment_expression "uVar3 = puVar25[1]" identifier = (subscript_expression "puVar25[1]" identifier [ number_literal ])) ;) (expression_statement "puVar18 = puVar18 + 1;" (assignment_expression "puVar18 = puVar18 + 1" identifier = (binary_expression "puVar18 + 1" identifier + number_literal)) ;) (expression_statement "puVar25 = puVar25 + 1;" (assignment_expression "puVar25 = puVar25 + 1" identifier = (binary_expression "puVar25 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar32 != 0)" ( (binary_expression "iVar32 != 0" identifier != number_literal) )) ;) (expression_statement "puVar17[(int)puVar29 + -1] = uVar3;" (assignment_expression "puVar17[(int)puVar29 + -1] = uVar3" (subscript_expression "puVar17[(int)puVar29 + -1]" identifier [ (binary_expression "(int)puVar29 + -1" (cast_expression "(int)puVar29" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ]) = identifier) ;) }))) })) (expression_statement "uVar8 = *(undefined4 *)(iVar24 + 8);" (assignment_expression "uVar8 = *(undefined4 *)(iVar24 + 8)" identifier = (pointer_expression "*(undefined4 *)(iVar24 + 8)" * (cast_expression "(undefined4 *)(iVar24 + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar24 + 8)" ( (binary_expression "iVar24 + 8" identifier + number_literal) ))))) ;) (expression_statement "pcVar34 = *(code **)(iVar9 + -0x7cd8);" (assignment_expression "pcVar34 = *(code **)(iVar9 + -0x7cd8)" identifier = (pointer_expression "*(code **)(iVar9 + -0x7cd8)" * (cast_expression "(code **)(iVar9 + -0x7cd8)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar9 + -0x7cd8)" ( (binary_expression "iVar9 + -0x7cd8" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar38 + 0x18) = *(undefined4 *)(puVar36 + -0x48);" (assignment_expression "*(undefined4 *)(puVar38 + 0x18) = *(undefined4 *)(puVar36 + -0x48)" (pointer_expression "*(undefined4 *)(puVar38 + 0x18)" * (cast_expression "(undefined4 *)(puVar38 + 0x18)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar38 + 0x18)" ( (binary_expression "puVar38 + 0x18" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(puVar36 + -0x48)" * (cast_expression "(undefined4 *)(puVar36 + -0x48)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar36 + -0x48)" ( (binary_expression "puVar36 + -0x48" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar36 + -0x48) = uVar39;" (assignment_expression "*(undefined4 *)(puVar36 + -0x48) = uVar39" (pointer_expression "*(undefined4 *)(puVar36 + -0x48)" * (cast_expression "(undefined4 *)(puVar36 + -0x48)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar36 + -0x48)" ( (binary_expression "puVar36 + -0x48" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar38 + 0x10) = uVar8;" (assignment_expression "*(undefined4 *)(puVar38 + 0x10) = uVar8" (pointer_expression "*(undefined4 *)(puVar38 + 0x10)" * (cast_expression "(undefined4 *)(puVar38 + 0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar38 + 0x10)" ( (binary_expression "puVar38 + 0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar38 + 0x14) = *(undefined4 *)(puVar36 + -0x50);" (assignment_expression "*(undefined4 *)(puVar38 + 0x14) = *(undefined4 *)(puVar36 + -0x50)" (pointer_expression "*(undefined4 *)(puVar38 + 0x14)" * (cast_expression "(undefined4 *)(puVar38 + 0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar38 + 0x14)" ( (binary_expression "puVar38 + 0x14" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(puVar36 + -0x50)" * (cast_expression "(undefined4 *)(puVar36 + -0x50)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar36 + -0x50)" ( (binary_expression "puVar36 + -0x50" identifier + number_literal) ))))) ;) (expression_statement "(*pcVar34)(puVar4,uVar39,puVar21,puVar28);" (call_expression "(*pcVar34)(puVar4,uVar39,puVar21,puVar28)" (parenthesized_expression "(*pcVar34)" ( (pointer_expression "*pcVar34" * identifier) )) (argument_list "(puVar4,uVar39,puVar21,puVar28)" ( identifier , identifier , identifier , identifier ))) ;) (expression_statement "iVar9 = *(int *)(puVar36 + -0x48);" (assignment_expression "iVar9 = *(int *)(puVar36 + -0x48)" identifier = (pointer_expression "*(int *)(puVar36 + -0x48)" * (cast_expression "(int *)(puVar36 + -0x48)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar36 + -0x48)" ( (binary_expression "puVar36 + -0x48" identifier + number_literal) ))))) ;) (expression_statement "iVar32 = *(int *)(puVar36 + -0x68);" (assignment_expression "iVar32 = *(int *)(puVar36 + -0x68)" identifier = (pointer_expression "*(int *)(puVar36 + -0x68)" * (cast_expression "(int *)(puVar36 + -0x68)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar36 + -0x68)" ( (binary_expression "puVar36 + -0x68" identifier + number_literal) ))))) ;) (if_statement "if ((int)puVar28 + iVar22 < iVar9) {\n      if (iVar22 != iVar9 - (int)puVar28) {\n        iVar12 = (iVar9 - (int)puVar28) - iVar22;\n        puVar6 = (undefined4 *)(*(int *)(puVar36 + -0x44) + (int)((int)puVar28 + iVar22) * 4);\n        do {\n          iVar12 = iVar12 + -1;\n          *puVar6 = 0;\n          puVar6 = puVar6 + 1;\n        } while (iVar12 != 0);\n      }\n    }" if (parenthesized_expression "((int)puVar28 + iVar22 < iVar9)" ( (binary_expression "(int)puVar28 + iVar22 < iVar9" (binary_expression "(int)puVar28 + iVar22" (cast_expression "(int)puVar28" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) < identifier) )) (compound_statement "{\n      if (iVar22 != iVar9 - (int)puVar28) {\n        iVar12 = (iVar9 - (int)puVar28) - iVar22;\n        puVar6 = (undefined4 *)(*(int *)(puVar36 + -0x44) + (int)((int)puVar28 + iVar22) * 4);\n        do {\n          iVar12 = iVar12 + -1;\n          *puVar6 = 0;\n          puVar6 = puVar6 + 1;\n        } while (iVar12 != 0);\n      }\n    }" { (if_statement "if (iVar22 != iVar9 - (int)puVar28) {\n        iVar12 = (iVar9 - (int)puVar28) - iVar22;\n        puVar6 = (undefined4 *)(*(int *)(puVar36 + -0x44) + (int)((int)puVar28 + iVar22) * 4);\n        do {\n          iVar12 = iVar12 + -1;\n          *puVar6 = 0;\n          puVar6 = puVar6 + 1;\n        } while (iVar12 != 0);\n      }" if (parenthesized_expression "(iVar22 != iVar9 - (int)puVar28)" ( (binary_expression "iVar22 != iVar9 - (int)puVar28" identifier != (binary_expression "iVar9 - (int)puVar28" identifier - (cast_expression "(int)puVar28" ( (type_descriptor "int" primitive_type) ) identifier))) )) (compound_statement "{\n        iVar12 = (iVar9 - (int)puVar28) - iVar22;\n        puVar6 = (undefined4 *)(*(int *)(puVar36 + -0x44) + (int)((int)puVar28 + iVar22) * 4);\n        do {\n          iVar12 = iVar12 + -1;\n          *puVar6 = 0;\n          puVar6 = puVar6 + 1;\n        } while (iVar12 != 0);\n      }" { (expression_statement "iVar12 = (iVar9 - (int)puVar28) - iVar22;" (assignment_expression "iVar12 = (iVar9 - (int)puVar28) - iVar22" identifier = (binary_expression "(iVar9 - (int)puVar28) - iVar22" (parenthesized_expression "(iVar9 - (int)puVar28)" ( (binary_expression "iVar9 - (int)puVar28" identifier - (cast_expression "(int)puVar28" ( (type_descriptor "int" primitive_type) ) identifier)) )) - identifier)) ;) (expression_statement "puVar6 = (undefined4 *)(*(int *)(puVar36 + -0x44) + (int)((int)puVar28 + iVar22) * 4);" (assignment_expression "puVar6 = (undefined4 *)(*(int *)(puVar36 + -0x44) + (int)((int)puVar28 + iVar22) * 4)" identifier = (cast_expression "(undefined4 *)(*(int *)(puVar36 + -0x44) + (int)((int)puVar28 + iVar22) * 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(puVar36 + -0x44) + (int)((int)puVar28 + iVar22) * 4)" ( (binary_expression "*(int *)(puVar36 + -0x44) + (int)((int)puVar28 + iVar22) * 4" (pointer_expression "*(int *)(puVar36 + -0x44)" * (cast_expression "(int *)(puVar36 + -0x44)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar36 + -0x44)" ( (binary_expression "puVar36 + -0x44" identifier + number_literal) )))) + (binary_expression "(int)((int)puVar28 + iVar22) * 4" (cast_expression "(int)((int)puVar28 + iVar22)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((int)puVar28 + iVar22)" ( (binary_expression "(int)puVar28 + iVar22" (cast_expression "(int)puVar28" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) ))) * number_literal)) )))) ;) (do_statement "do {\n          iVar12 = iVar12 + -1;\n          *puVar6 = 0;\n          puVar6 = puVar6 + 1;\n        } while (iVar12 != 0);" do (compound_statement "{\n          iVar12 = iVar12 + -1;\n          *puVar6 = 0;\n          puVar6 = puVar6 + 1;\n        }" { (expression_statement "iVar12 = iVar12 + -1;" (assignment_expression "iVar12 = iVar12 + -1" identifier = (binary_expression "iVar12 + -1" identifier + number_literal)) ;) (expression_statement "*puVar6 = 0;" (assignment_expression "*puVar6 = 0" (pointer_expression "*puVar6" * identifier) = number_literal) ;) (expression_statement "puVar6 = puVar6 + 1;" (assignment_expression "puVar6 = puVar6 + 1" identifier = (binary_expression "puVar6 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar12 != 0)" ( (binary_expression "iVar12 != 0" identifier != number_literal) )) ;) })) })) (expression_statement "pcVar34 = *(code **)(iVar32 + -0x7b2c);" (assignment_expression "pcVar34 = *(code **)(iVar32 + -0x7b2c)" identifier = (pointer_expression "*(code **)(iVar32 + -0x7b2c)" * (cast_expression "(code **)(iVar32 + -0x7b2c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar32 + -0x7b2c)" ( (binary_expression "iVar32 + -0x7b2c" identifier + number_literal) ))))) ;) (if_statement "if (*(int *)(puVar36 + -0x50) + (int)puVar28 < iVar9) {\n      if (*(int *)(puVar36 + -0x50) != iVar9 - (int)puVar28) {\n        iVar22 = (iVar9 - (int)puVar28) - *(int *)(puVar36 + -0x50);\n        puVar28 = puVar4 + (int)(*(int *)(puVar36 + -0x50) + (int)puVar28);\n        do {\n          iVar22 = iVar22 + -1;\n          *puVar28 = 0;\n          puVar28 = puVar28 + 1;\n        } while (iVar22 != 0);\n        pcVar34 = *(code **)(iVar32 + -0x7b2c);\n      }\n    }" if (parenthesized_expression "(*(int *)(puVar36 + -0x50) + (int)puVar28 < iVar9)" ( (binary_expression "*(int *)(puVar36 + -0x50) + (int)puVar28 < iVar9" (binary_expression "*(int *)(puVar36 + -0x50) + (int)puVar28" (pointer_expression "*(int *)(puVar36 + -0x50)" * (cast_expression "(int *)(puVar36 + -0x50)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar36 + -0x50)" ( (binary_expression "puVar36 + -0x50" identifier + number_literal) )))) + (cast_expression "(int)puVar28" ( (type_descriptor "int" primitive_type) ) identifier)) < identifier) )) (compound_statement "{\n      if (*(int *)(puVar36 + -0x50) != iVar9 - (int)puVar28) {\n        iVar22 = (iVar9 - (int)puVar28) - *(int *)(puVar36 + -0x50);\n        puVar28 = puVar4 + (int)(*(int *)(puVar36 + -0x50) + (int)puVar28);\n        do {\n          iVar22 = iVar22 + -1;\n          *puVar28 = 0;\n          puVar28 = puVar28 + 1;\n        } while (iVar22 != 0);\n        pcVar34 = *(code **)(iVar32 + -0x7b2c);\n      }\n    }" { (if_statement "if (*(int *)(puVar36 + -0x50) != iVar9 - (int)puVar28) {\n        iVar22 = (iVar9 - (int)puVar28) - *(int *)(puVar36 + -0x50);\n        puVar28 = puVar4 + (int)(*(int *)(puVar36 + -0x50) + (int)puVar28);\n        do {\n          iVar22 = iVar22 + -1;\n          *puVar28 = 0;\n          puVar28 = puVar28 + 1;\n        } while (iVar22 != 0);\n        pcVar34 = *(code **)(iVar32 + -0x7b2c);\n      }" if (parenthesized_expression "(*(int *)(puVar36 + -0x50) != iVar9 - (int)puVar28)" ( (binary_expression "*(int *)(puVar36 + -0x50) != iVar9 - (int)puVar28" (pointer_expression "*(int *)(puVar36 + -0x50)" * (cast_expression "(int *)(puVar36 + -0x50)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar36 + -0x50)" ( (binary_expression "puVar36 + -0x50" identifier + number_literal) )))) != (binary_expression "iVar9 - (int)puVar28" identifier - (cast_expression "(int)puVar28" ( (type_descriptor "int" primitive_type) ) identifier))) )) (compound_statement "{\n        iVar22 = (iVar9 - (int)puVar28) - *(int *)(puVar36 + -0x50);\n        puVar28 = puVar4 + (int)(*(int *)(puVar36 + -0x50) + (int)puVar28);\n        do {\n          iVar22 = iVar22 + -1;\n          *puVar28 = 0;\n          puVar28 = puVar28 + 1;\n        } while (iVar22 != 0);\n        pcVar34 = *(code **)(iVar32 + -0x7b2c);\n      }" { (expression_statement "iVar22 = (iVar9 - (int)puVar28) - *(int *)(puVar36 + -0x50);" (assignment_expression "iVar22 = (iVar9 - (int)puVar28) - *(int *)(puVar36 + -0x50)" identifier = (binary_expression "(iVar9 - (int)puVar28) - *(int *)(puVar36 + -0x50)" (parenthesized_expression "(iVar9 - (int)puVar28)" ( (binary_expression "iVar9 - (int)puVar28" identifier - (cast_expression "(int)puVar28" ( (type_descriptor "int" primitive_type) ) identifier)) )) - (pointer_expression "*(int *)(puVar36 + -0x50)" * (cast_expression "(int *)(puVar36 + -0x50)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar36 + -0x50)" ( (binary_expression "puVar36 + -0x50" identifier + number_literal) )))))) ;) (expression_statement "puVar28 = puVar4 + (int)(*(int *)(puVar36 + -0x50) + (int)puVar28);" (assignment_expression "puVar28 = puVar4 + (int)(*(int *)(puVar36 + -0x50) + (int)puVar28)" identifier = (binary_expression "puVar4 + (int)(*(int *)(puVar36 + -0x50) + (int)puVar28)" identifier + (cast_expression "(int)(*(int *)(puVar36 + -0x50) + (int)puVar28)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(*(int *)(puVar36 + -0x50) + (int)puVar28)" ( (binary_expression "*(int *)(puVar36 + -0x50) + (int)puVar28" (pointer_expression "*(int *)(puVar36 + -0x50)" * (cast_expression "(int *)(puVar36 + -0x50)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar36 + -0x50)" ( (binary_expression "puVar36 + -0x50" identifier + number_literal) )))) + (cast_expression "(int)puVar28" ( (type_descriptor "int" primitive_type) ) identifier)) ))))) ;) (do_statement "do {\n          iVar22 = iVar22 + -1;\n          *puVar28 = 0;\n          puVar28 = puVar28 + 1;\n        } while (iVar22 != 0);" do (compound_statement "{\n          iVar22 = iVar22 + -1;\n          *puVar28 = 0;\n          puVar28 = puVar28 + 1;\n        }" { (expression_statement "iVar22 = iVar22 + -1;" (assignment_expression "iVar22 = iVar22 + -1" identifier = (binary_expression "iVar22 + -1" identifier + number_literal)) ;) (expression_statement "*puVar28 = 0;" (assignment_expression "*puVar28 = 0" (pointer_expression "*puVar28" * identifier) = number_literal) ;) (expression_statement "puVar28 = puVar28 + 1;" (assignment_expression "puVar28 = puVar28 + 1" identifier = (binary_expression "puVar28 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar22 != 0)" ( (binary_expression "iVar22 != 0" identifier != number_literal) )) ;) (expression_statement "pcVar34 = *(code **)(iVar32 + -0x7b2c);" (assignment_expression "pcVar34 = *(code **)(iVar32 + -0x7b2c)" identifier = (pointer_expression "*(code **)(iVar32 + -0x7b2c)" * (cast_expression "(code **)(iVar32 + -0x7b2c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar32 + -0x7b2c)" ( (binary_expression "iVar32 + -0x7b2c" identifier + number_literal) ))))) ;) })) })) (expression_statement "uVar3 = (*pcVar34)(puVar4,puVar4,*(undefined4 *)(puVar36 + -0x44),iVar9);" (assignment_expression "uVar3 = (*pcVar34)(puVar4,puVar4,*(undefined4 *)(puVar36 + -0x44),iVar9)" identifier = (call_expression "(*pcVar34)(puVar4,puVar4,*(undefined4 *)(puVar36 + -0x44),iVar9)" (parenthesized_expression "(*pcVar34)" ( (pointer_expression "*pcVar34" * identifier) )) (argument_list "(puVar4,puVar4,*(undefined4 *)(puVar36 + -0x44),iVar9)" ( identifier , identifier , (pointer_expression "*(undefined4 *)(puVar36 + -0x44)" * (cast_expression "(undefined4 *)(puVar36 + -0x44)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar36 + -0x44)" ( (binary_expression "puVar36 + -0x44" identifier + number_literal) )))) , identifier )))) ;) (expression_statement "uVar13 = *puVar4;" (assignment_expression "uVar13 = *puVar4" identifier = (pointer_expression "*puVar4" * identifier)) ;) (expression_statement "iVar9 = *(int *)(puVar36 + -0x68);" (assignment_expression "iVar9 = *(int *)(puVar36 + -0x68)" identifier = (pointer_expression "*(int *)(puVar36 + -0x68)" * (cast_expression "(int *)(puVar36 + -0x68)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar36 + -0x68)" ( (binary_expression "puVar36 + -0x68" identifier + number_literal) ))))) ;) (expression_statement "puVar18 = (uint *)(uVar13 - uVar3);" (assignment_expression "puVar18 = (uint *)(uVar13 - uVar3)" identifier = (cast_expression "(uint *)(uVar13 - uVar3)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar13 - uVar3)" ( (binary_expression "uVar13 - uVar3" identifier - identifier) )))) ;) (expression_statement "*puVar4 = (uint)puVar18;" (assignment_expression "*puVar4 = (uint)puVar18" (pointer_expression "*puVar4" * identifier) = (cast_expression "(uint)puVar18" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "puVar28 = puVar4;" (assignment_expression "puVar28 = puVar4" identifier = identifier) ;) (if_statement "if (uVar13 < uVar3) {\n      do {\n        puVar28 = puVar28 + 1;\n        uVar3 = *puVar28;\n        puVar18 = (uint *)(uVar3 - 1);\n        *puVar28 = (uint)puVar18;\n      } while (uVar3 == 0);\n    }" if (parenthesized_expression "(uVar13 < uVar3)" ( (binary_expression "uVar13 < uVar3" identifier < identifier) )) (compound_statement "{\n      do {\n        puVar28 = puVar28 + 1;\n        uVar3 = *puVar28;\n        puVar18 = (uint *)(uVar3 - 1);\n        *puVar28 = (uint)puVar18;\n      } while (uVar3 == 0);\n    }" { (do_statement "do {\n        puVar28 = puVar28 + 1;\n        uVar3 = *puVar28;\n        puVar18 = (uint *)(uVar3 - 1);\n        *puVar28 = (uint)puVar18;\n      } while (uVar3 == 0);" do (compound_statement "{\n        puVar28 = puVar28 + 1;\n        uVar3 = *puVar28;\n        puVar18 = (uint *)(uVar3 - 1);\n        *puVar28 = (uint)puVar18;\n      }" { (expression_statement "puVar28 = puVar28 + 1;" (assignment_expression "puVar28 = puVar28 + 1" identifier = (binary_expression "puVar28 + 1" identifier + number_literal)) ;) (expression_statement "uVar3 = *puVar28;" (assignment_expression "uVar3 = *puVar28" identifier = (pointer_expression "*puVar28" * identifier)) ;) (expression_statement "puVar18 = (uint *)(uVar3 - 1);" (assignment_expression "puVar18 = (uint *)(uVar3 - 1)" identifier = (cast_expression "(uint *)(uVar3 - 1)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar3 - 1)" ( (binary_expression "uVar3 - 1" identifier - number_literal) )))) ;) (expression_statement "*puVar28 = (uint)puVar18;" (assignment_expression "*puVar28 = (uint)puVar18" (pointer_expression "*puVar28" * identifier) = (cast_expression "(uint)puVar18" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) }) while (parenthesized_expression "(uVar3 == 0)" ( (binary_expression "uVar3 == 0" identifier == number_literal) )) ;) })) (expression_statement "iVar32 = (int)puVar29 + -1;" (assignment_expression "iVar32 = (int)puVar29 + -1" identifier = (binary_expression "(int)puVar29 + -1" (cast_expression "(int)puVar29" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal)) ;) (if_statement "if (puVar29 == (uint *)0x0) {\n      iVar32 = -4;\n    }\n    else {\n      puVar18 = (uint *)*puVar4;\n      puVar28 = puVar21;\n      if (iVar32 != 0) {\n        do {\n          puVar4 = puVar4 + 1;\n          *puVar28 = (uint)puVar18;\n          iVar32 = iVar32 + -1;\n          puVar18 = (uint *)*puVar4;\n          puVar28 = puVar28 + 1;\n        } while (iVar32 != 0);\n        puVar28 = puVar21 + (int)puVar29 + -1;\n      }\n      *puVar28 = (uint)puVar18;\n      iVar32 = (int)puVar29 * 4 + -4;\n    }" if (parenthesized_expression "(puVar29 == (uint *)0x0)" ( (binary_expression "puVar29 == (uint *)0x0" identifier == (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      iVar32 = -4;\n    }" { (expression_statement "iVar32 = -4;" (assignment_expression "iVar32 = -4" identifier = number_literal) ;) }) (else_clause "else {\n      puVar18 = (uint *)*puVar4;\n      puVar28 = puVar21;\n      if (iVar32 != 0) {\n        do {\n          puVar4 = puVar4 + 1;\n          *puVar28 = (uint)puVar18;\n          iVar32 = iVar32 + -1;\n          puVar18 = (uint *)*puVar4;\n          puVar28 = puVar28 + 1;\n        } while (iVar32 != 0);\n        puVar28 = puVar21 + (int)puVar29 + -1;\n      }\n      *puVar28 = (uint)puVar18;\n      iVar32 = (int)puVar29 * 4 + -4;\n    }" else (compound_statement "{\n      puVar18 = (uint *)*puVar4;\n      puVar28 = puVar21;\n      if (iVar32 != 0) {\n        do {\n          puVar4 = puVar4 + 1;\n          *puVar28 = (uint)puVar18;\n          iVar32 = iVar32 + -1;\n          puVar18 = (uint *)*puVar4;\n          puVar28 = puVar28 + 1;\n        } while (iVar32 != 0);\n        puVar28 = puVar21 + (int)puVar29 + -1;\n      }\n      *puVar28 = (uint)puVar18;\n      iVar32 = (int)puVar29 * 4 + -4;\n    }" { (expression_statement "puVar18 = (uint *)*puVar4;" (assignment_expression "puVar18 = (uint *)*puVar4" identifier = (cast_expression "(uint *)*puVar4" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar4" * identifier))) ;) (expression_statement "puVar28 = puVar21;" (assignment_expression "puVar28 = puVar21" identifier = identifier) ;) (if_statement "if (iVar32 != 0) {\n        do {\n          puVar4 = puVar4 + 1;\n          *puVar28 = (uint)puVar18;\n          iVar32 = iVar32 + -1;\n          puVar18 = (uint *)*puVar4;\n          puVar28 = puVar28 + 1;\n        } while (iVar32 != 0);\n        puVar28 = puVar21 + (int)puVar29 + -1;\n      }" if (parenthesized_expression "(iVar32 != 0)" ( (binary_expression "iVar32 != 0" identifier != number_literal) )) (compound_statement "{\n        do {\n          puVar4 = puVar4 + 1;\n          *puVar28 = (uint)puVar18;\n          iVar32 = iVar32 + -1;\n          puVar18 = (uint *)*puVar4;\n          puVar28 = puVar28 + 1;\n        } while (iVar32 != 0);\n        puVar28 = puVar21 + (int)puVar29 + -1;\n      }" { (do_statement "do {\n          puVar4 = puVar4 + 1;\n          *puVar28 = (uint)puVar18;\n          iVar32 = iVar32 + -1;\n          puVar18 = (uint *)*puVar4;\n          puVar28 = puVar28 + 1;\n        } while (iVar32 != 0);" do (compound_statement "{\n          puVar4 = puVar4 + 1;\n          *puVar28 = (uint)puVar18;\n          iVar32 = iVar32 + -1;\n          puVar18 = (uint *)*puVar4;\n          puVar28 = puVar28 + 1;\n        }" { (expression_statement "puVar4 = puVar4 + 1;" (assignment_expression "puVar4 = puVar4 + 1" identifier = (binary_expression "puVar4 + 1" identifier + number_literal)) ;) (expression_statement "*puVar28 = (uint)puVar18;" (assignment_expression "*puVar28 = (uint)puVar18" (pointer_expression "*puVar28" * identifier) = (cast_expression "(uint)puVar18" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "iVar32 = iVar32 + -1;" (assignment_expression "iVar32 = iVar32 + -1" identifier = (binary_expression "iVar32 + -1" identifier + number_literal)) ;) (expression_statement "puVar18 = (uint *)*puVar4;" (assignment_expression "puVar18 = (uint *)*puVar4" identifier = (cast_expression "(uint *)*puVar4" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar4" * identifier))) ;) (expression_statement "puVar28 = puVar28 + 1;" (assignment_expression "puVar28 = puVar28 + 1" identifier = (binary_expression "puVar28 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar32 != 0)" ( (binary_expression "iVar32 != 0" identifier != number_literal) )) ;) (expression_statement "puVar28 = puVar21 + (int)puVar29 + -1;" (assignment_expression "puVar28 = puVar21 + (int)puVar29 + -1" identifier = (binary_expression "puVar21 + (int)puVar29 + -1" (binary_expression "puVar21 + (int)puVar29" identifier + (cast_expression "(int)puVar29" ( (type_descriptor "int" primitive_type) ) identifier)) + number_literal)) ;) })) (expression_statement "*puVar28 = (uint)puVar18;" (assignment_expression "*puVar28 = (uint)puVar18" (pointer_expression "*puVar28" * identifier) = (cast_expression "(uint)puVar18" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "iVar32 = (int)puVar29 * 4 + -4;" (assignment_expression "iVar32 = (int)puVar29 * 4 + -4" identifier = (binary_expression "(int)puVar29 * 4 + -4" (binary_expression "(int)puVar29 * 4" (cast_expression "(int)puVar29" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal) + number_literal)) ;) }))) (expression_statement "puVar37 = puVar38;" (assignment_expression "puVar37 = puVar38" identifier = identifier) ;) (if_statement "if (*(int *)((int)puVar17 + iVar32) != 0 || *(int *)((int)puVar21 + iVar32) != 0)\n    goto LAB_000530b4;" if (parenthesized_expression "(*(int *)((int)puVar17 + iVar32) != 0 || *(int *)((int)puVar21 + iVar32) != 0)" ( (binary_expression "*(int *)((int)puVar17 + iVar32) != 0 || *(int *)((int)puVar21 + iVar32) != 0" (binary_expression "*(int *)((int)puVar17 + iVar32) != 0" (pointer_expression "*(int *)((int)puVar17 + iVar32)" * (cast_expression "(int *)((int)puVar17 + iVar32)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar17 + iVar32)" ( (binary_expression "(int)puVar17 + iVar32" (cast_expression "(int)puVar17" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) != number_literal) || (binary_expression "*(int *)((int)puVar21 + iVar32) != 0" (pointer_expression "*(int *)((int)puVar21 + iVar32)" * (cast_expression "(int *)((int)puVar21 + iVar32)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar21 + iVar32)" ( (binary_expression "(int)puVar21 + iVar32" (cast_expression "(int)puVar21" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) != number_literal)) )) (goto_statement "goto LAB_000530b4;" goto statement_identifier ;)) (expression_statement "puVar17 = puVar17 + (int)puVar29 + -2;" (assignment_expression "puVar17 = puVar17 + (int)puVar29 + -2" identifier = (binary_expression "puVar17 + (int)puVar29 + -2" (binary_expression "puVar17 + (int)puVar29" identifier + (cast_expression "(int)puVar29" ( (type_descriptor "int" primitive_type) ) identifier)) + number_literal)) ;) (expression_statement "puVar21 = puVar21 + (int)puVar29 + -2;" (assignment_expression "puVar21 = puVar21 + (int)puVar29 + -2" identifier = (binary_expression "puVar21 + (int)puVar29 + -2" (binary_expression "puVar21 + (int)puVar29" identifier + (cast_expression "(int)puVar29" ( (type_descriptor "int" primitive_type) ) identifier)) + number_literal)) ;) (do_statement "do {\n      uVar3 = *puVar17;\n      puVar29 = (uint *)((int)puVar29 + -1);\n      uVar13 = *puVar21;\n      puVar17 = puVar17 + -1;\n      puVar21 = puVar21 + -1;\n    } while (uVar3 == 0 && uVar13 == 0);" do (compound_statement "{\n      uVar3 = *puVar17;\n      puVar29 = (uint *)((int)puVar29 + -1);\n      uVar13 = *puVar21;\n      puVar17 = puVar17 + -1;\n      puVar21 = puVar21 + -1;\n    }" { (expression_statement "uVar3 = *puVar17;" (assignment_expression "uVar3 = *puVar17" identifier = (pointer_expression "*puVar17" * identifier)) ;) (expression_statement "puVar29 = (uint *)((int)puVar29 + -1);" (assignment_expression "puVar29 = (uint *)((int)puVar29 + -1)" identifier = (cast_expression "(uint *)((int)puVar29 + -1)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar29 + -1)" ( (binary_expression "(int)puVar29 + -1" (cast_expression "(int)puVar29" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "uVar13 = *puVar21;" (assignment_expression "uVar13 = *puVar21" identifier = (pointer_expression "*puVar21" * identifier)) ;) (expression_statement "puVar17 = puVar17 + -1;" (assignment_expression "puVar17 = puVar17 + -1" identifier = (binary_expression "puVar17 + -1" identifier + number_literal)) ;) (expression_statement "puVar21 = puVar21 + -1;" (assignment_expression "puVar21 = puVar21 + -1" identifier = (binary_expression "puVar21 + -1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar3 == 0 && uVar13 == 0)" ( (binary_expression "uVar3 == 0 && uVar13 == 0" (binary_expression "uVar3 == 0" identifier == number_literal) && (binary_expression "uVar13 == 0" identifier == number_literal)) )) ;) (expression_statement "piVar30 = *(int **)(puVar36 + -0x4c);" (assignment_expression "piVar30 = *(int **)(puVar36 + -0x4c)" identifier = (pointer_expression "*(int **)(puVar36 + -0x4c)" * (cast_expression "(int **)(puVar36 + -0x4c)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar36 + -0x4c)" ( (binary_expression "puVar36 + -0x4c" identifier + number_literal) ))))) ;) (if_statement "if (*(int *)(puVar36 + -0x40) == 0) goto LAB_000530c4;" if (parenthesized_expression "(*(int *)(puVar36 + -0x40) == 0)" ( (binary_expression "*(int *)(puVar36 + -0x40) == 0" (pointer_expression "*(int *)(puVar36 + -0x40)" * (cast_expression "(int *)(puVar36 + -0x40)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar36 + -0x40)" ( (binary_expression "puVar36 + -0x40" identifier + number_literal) )))) == number_literal) )) (goto_statement "goto LAB_000530c4;" goto statement_identifier ;)) (expression_statement "pcVar34 = *(code **)(iVar9 + -0x7a2c);" (assignment_expression "pcVar34 = *(code **)(iVar9 + -0x7a2c)" identifier = (pointer_expression "*(code **)(iVar9 + -0x7a2c)" * (cast_expression "(code **)(iVar9 + -0x7a2c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar9 + -0x7a2c)" ( (binary_expression "iVar9 + -0x7a2c" identifier + number_literal) ))))) ;) (labeled_statement "LAB_00053478:\n    (*pcVar34)();" statement_identifier : (expression_statement "(*pcVar34)();" (call_expression "(*pcVar34)()" (parenthesized_expression "(*pcVar34)" ( (pointer_expression "*pcVar34" * identifier) )) (argument_list "()" ( ))) ;)) (expression_statement "iVar9 = *(int *)(puVar36 + -0x68);" (assignment_expression "iVar9 = *(int *)(puVar36 + -0x68)" identifier = (pointer_expression "*(int *)(puVar36 + -0x68)" * (cast_expression "(int *)(puVar36 + -0x68)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar36 + -0x68)" ( (binary_expression "puVar36 + -0x68" identifier + number_literal) ))))) ;) (expression_statement "puVar38 = puVar37;" (assignment_expression "puVar38 = puVar37" identifier = identifier) ;) }))) (expression_statement "piVar30 = *(int **)(puVar36 + -0x4c);" (assignment_expression "piVar30 = *(int **)(puVar36 + -0x4c)" identifier = (pointer_expression "*(int **)(puVar36 + -0x4c)" * (cast_expression "(int **)(puVar36 + -0x4c)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar36 + -0x4c)" ( (binary_expression "puVar36 + -0x4c" identifier + number_literal) ))))) ;) (labeled_statement "LAB_000530c4:\n  iVar32 = *(int *)(puVar36 + -0x2c);" statement_identifier : (expression_statement "iVar32 = *(int *)(puVar36 + -0x2c);" (assignment_expression "iVar32 = *(int *)(puVar36 + -0x2c)" identifier = (pointer_expression "*(int *)(puVar36 + -0x2c)" * (cast_expression "(int *)(puVar36 + -0x2c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar36 + -0x2c)" ( (binary_expression "puVar36 + -0x2c" identifier + number_literal) ))))) ;)) (expression_statement "pcVar34 = *(code **)(iVar9 + -0x7b70);" (assignment_expression "pcVar34 = *(code **)(iVar9 + -0x7b70)" identifier = (pointer_expression "*(code **)(iVar9 + -0x7b70)" * (cast_expression "(code **)(iVar9 + -0x7b70)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar9 + -0x7b70)" ( (binary_expression "iVar9 + -0x7b70" identifier + number_literal) ))))) ;) (if_statement "if (iVar32 == *piVar30) {\n    return puVar29;\n  }" if (parenthesized_expression "(iVar32 == *piVar30)" ( (binary_expression "iVar32 == *piVar30" identifier == (pointer_expression "*piVar30" * identifier)) )) (compound_statement "{\n    return puVar29;\n  }" { (return_statement "return puVar29;" return identifier ;) })) (expression_statement "pcVar40 = __gmpn_hgcd_reduce_itch;" (assignment_expression "pcVar40 = __gmpn_hgcd_reduce_itch" identifier = identifier) ;) (expression_statement "(*pcVar34)();" (call_expression "(*pcVar34)()" (parenthesized_expression "(*pcVar34)" ( (pointer_expression "*pcVar34" * identifier) )) (argument_list "()" ( ))) ;) (expression_statement "pcVar35 = *(code **)(pcVar34 + 0x43e08);" (assignment_expression "pcVar35 = *(code **)(pcVar34 + 0x43e08)" identifier = (pointer_expression "*(code **)(pcVar34 + 0x43e08)" * (cast_expression "(code **)(pcVar34 + 0x43e08)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar34 + 0x43e08)" ( (binary_expression "pcVar34 + 0x43e08" identifier + number_literal) ))))) ;) (expression_statement "*(uint **)(puVar38 + -0xc) = puVar21;" (assignment_expression "*(uint **)(puVar38 + -0xc) = puVar21" (pointer_expression "*(uint **)(puVar38 + -0xc)" * (cast_expression "(uint **)(puVar38 + -0xc)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar38 + -0xc)" ( (binary_expression "puVar38 + -0xc" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(puVar38 + -8) = iVar24;" (assignment_expression "*(int *)(puVar38 + -8) = iVar24" (pointer_expression "*(int *)(puVar38 + -8)" * (cast_expression "(int *)(puVar38 + -8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar38 + -8)" ( (binary_expression "puVar38 + -8" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(uint **)(puVar38 + -0x10) = puVar17;" (assignment_expression "*(uint **)(puVar38 + -0x10) = puVar17" (pointer_expression "*(uint **)(puVar38 + -0x10)" * (cast_expression "(uint **)(puVar38 + -0x10)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar38 + -0x10)" ( (binary_expression "puVar38 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(code **)(puVar38 + -0x18) = pcVar34 + 0x4b9e4;" (assignment_expression "*(code **)(puVar38 + -0x18) = pcVar34 + 0x4b9e4" (pointer_expression "*(code **)(puVar38 + -0x18)" * (cast_expression "(code **)(puVar38 + -0x18)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar38 + -0x18)" ( (binary_expression "puVar38 + -0x18" identifier + number_literal) )))) = (binary_expression "pcVar34 + 0x4b9e4" identifier + number_literal)) ;) (expression_statement "*(code **)(puVar38 + -4) = pcVar40;" (assignment_expression "*(code **)(puVar38 + -4) = pcVar40" (pointer_expression "*(code **)(puVar38 + -4)" * (cast_expression "(code **)(puVar38 + -4)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar38 + -4)" ( (binary_expression "puVar38 + -4" identifier + number_literal) )))) = identifier) ;) (expression_statement "puVar28 = (uint *)(*pcVar35)(iVar32 - (int)puVar18);" (assignment_expression "puVar28 = (uint *)(*pcVar35)(iVar32 - (int)puVar18)" identifier = (cast_expression "(uint *)(*pcVar35)(iVar32 - (int)puVar18)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(*pcVar35)(iVar32 - (int)puVar18)" (parenthesized_expression "(*pcVar35)" ( (pointer_expression "*pcVar35" * identifier) )) (argument_list "(iVar32 - (int)puVar18)" ( (binary_expression "iVar32 - (int)puVar18" identifier - (cast_expression "(int)puVar18" ( (type_descriptor "int" primitive_type) ) identifier)) ))))) ;) (if_statement "if (999 < iVar32) {\n    return (uint *)((iVar32 - (int)puVar18) * 2 + (int)puVar28);\n  }" if (parenthesized_expression "(999 < iVar32)" ( (binary_expression "999 < iVar32" number_literal < identifier) )) (compound_statement "{\n    return (uint *)((iVar32 - (int)puVar18) * 2 + (int)puVar28);\n  }" { (return_statement "return (uint *)((iVar32 - (int)puVar18) * 2 + (int)puVar28);" return (cast_expression "(uint *)((iVar32 - (int)puVar18) * 2 + (int)puVar28)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((iVar32 - (int)puVar18) * 2 + (int)puVar28)" ( (binary_expression "(iVar32 - (int)puVar18) * 2 + (int)puVar28" (binary_expression "(iVar32 - (int)puVar18) * 2" (parenthesized_expression "(iVar32 - (int)puVar18)" ( (binary_expression "iVar32 - (int)puVar18" identifier - (cast_expression "(int)puVar18" ( (type_descriptor "int" primitive_type) ) identifier)) )) * number_literal) + (cast_expression "(int)puVar28" ( (type_descriptor "int" primitive_type) ) identifier)) ))) ;) })) (expression_statement "puVar18 = (uint *)((int)puVar18 + iVar32 + -1);" (assignment_expression "puVar18 = (uint *)((int)puVar18 + iVar32 + -1)" identifier = (cast_expression "(uint *)((int)puVar18 + iVar32 + -1)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar18 + iVar32 + -1)" ( (binary_expression "(int)puVar18 + iVar32 + -1" (binary_expression "(int)puVar18 + iVar32" (cast_expression "(int)puVar18" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) + number_literal) )))) ;) (if_statement "if ((int)puVar28 <= (int)puVar18) {\n    puVar28 = puVar18;\n  }" if (parenthesized_expression "((int)puVar28 <= (int)puVar18)" ( (binary_expression "(int)puVar28 <= (int)puVar18" (cast_expression "(int)puVar28" ( (type_descriptor "int" primitive_type) ) identifier) <= (cast_expression "(int)puVar18" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n    puVar28 = puVar18;\n  }" { (expression_statement "puVar28 = puVar18;" (assignment_expression "puVar28 = puVar18" identifier = identifier) ;) })) (return_statement "return puVar28;" return identifier ;) })))
(translation_unit "mp_size_t __gmpn_hgcd_step(mp_size_t n,mp_ptr ap,mp_ptr bp,mp_size_t s,hgcd_matrix *M,mp_ptr tp)\n\n{\n  mp_ptr pmVar1;\n  hgcd_matrix *phVar2;\n  uint uVar3;\n  mp_size_t mVar4;\n  mp_ptr pmVar5;\n  mp_ptr pmVar6;\n  undefined4 *puVar7;\n  mp_ptr pmVar8;\n  int iVar9;\n  undefined4 uVar10;\n  mp_limb_t *pmVar11;\n  undefined *puVar12;\n  int iVar13;\n  uint uVar14;\n  int iVar15;\n  int iVar16;\n  mp_ptr pmVar17;\n  uint uVar18;\n  mp_ptr pmVar19;\n  undefined4 uVar20;\n  mp_limb_t mVar21;\n  mp_limb_t *pmVar22;\n  mp_limb_t mVar23;\n  uint uVar24;\n  mp_ptr pmVar25;\n  mp_ptr pmVar26;\n  uint uVar27;\n  mp_ptr pmVar28;\n  int iVar29;\n  uint uVar30;\n  hgcd_matrix1 *phVar31;\n  int iVar32;\n  undefined4 uVar33;\n  undefined4 uVar34;\n  mp_limb_t *pmVar35;\n  mp_ptr pmVar36;\n  undefined *puVar37;\n  int *piVar38;\n  mp_ptr pmVar39;\n  int iVar40;\n  hgcd_matrix1 *unaff_s5;\n  int iVar41;\n  code *pcVar42;\n  undefined1 *puVar43;\n  undefined1 *puVar44;\n  undefined1 *puVar45;\n  undefined4 uVar46;\n  code *pcVar47;\n  code *pcVar48;\n  undefined1 auStack_c0 [24];\n  mp_ptr apmStack_a8 [4];\n  int iStack_98;\n  int iStack_94;\n  mp_limb_t *pmStack_90;\n  undefined *puStack_8c;\n  mp_ptr pmStack_88;\n  mp_ptr pmStack_84;\n  mp_size_t mStack_80;\n  hgcd_matrix1 *phStack_7c;\n  mp_size_t mStack_78;\n  mp_ptr pmStack_74;\n  hgcd_matrix *phStack_70;\n  undefined4 uStack_6c;\n  hgcd_matrix1 *local_58;\n  hgcd_matrix *local_54;\n  mp_ptr local_50;\n  hgcd_matrix1 M1;\n  \n  puVar12 = PTR___stack_chk_guard_00097540;\n  pmVar35 = (mp_limb_t *)(n * 4 + -4);\n  pmVar17 = *(mp_ptr *)PTR___stack_chk_guard_00097540;\n  uVar27 = bp[n + -1];\n  uVar18 = ap[n + -1];\n  uVar3 = uVar18 | uVar27;\n  if (s + 1 == n) {\n    if (3 < uVar3) {\n      unaff_s5 = &M1;\n      local_58 = unaff_s5;\n      iVar13 = (*(code *)PTR___gmpn_hgcd2_00097460)(uVar18,ap[n + -2],uVar27,bp[n + -2]);\n      if (iVar13 != 0) goto LAB_00052bb8;\n    }\nLAB_00052b18:\n    local_50 = tp;\n    local_58 = (hgcd_matrix1 *)(PTR_LAB_0009707c + 0x2960);\n    local_54 = M;\n    pmVar36 = bp;\n    pmVar8 = (mp_ptr)n;\n    pmVar26 = (mp_ptr)s;\n    mVar4 = (*(code *)PTR___gmpn_gcd_subdiv_step_00097118)(ap);\n  }\n  else {\n    uVar24 = ap[n + -2];\n    uVar30 = bp[n + -2];\n    if (-1 < (int)uVar3) {\n      if (uVar3 < 0x10000) {\n        iVar13 = 0x18;\n        if (uVar3 < 0x100) {\n          iVar13 = 0;\n        }\n        iVar32 = 9;\n        if (uVar3 < 0x100) {\n          iVar32 = 1;\n        }\n      }\n      else {\n        iVar13 = 8;\n        if (uVar3 < 0x1000000) {\n          iVar13 = 0x10;\n        }\n        iVar32 = 0x19;\n        if (uVar3 < 0x1000000) {\n          iVar32 = 0x11;\n        }\n      }\n      uVar3 = iVar13 - (uint)(byte)PTR___gmpn_clz_tab_0009718c[uVar3 >> iVar32];\n      uVar14 = 0x20 - uVar3;\n      uVar18 = uVar18 << (uVar3 & 0x1f) | uVar24 >> (uVar14 & 0x1f);\n      uVar24 = ap[n + -3] >> (uVar14 & 0x1f) | uVar24 << (uVar3 & 0x1f);\n      uVar27 = uVar27 << (uVar3 & 0x1f) | uVar30 >> (uVar14 & 0x1f);\n      uVar30 = bp[n + -3] >> (uVar14 & 0x1f) | uVar30 << (uVar3 & 0x1f);\n    }\n    unaff_s5 = &M1;\n    local_58 = unaff_s5;\n    iVar13 = (*(code *)PTR___gmpn_hgcd2_00097460)(uVar18,uVar24,uVar27,uVar30);\n    if (iVar13 == 0) goto LAB_00052b18;\nLAB_00052bb8:\n    unaff_s5 = &M1;\n    (*(code *)PTR___gmpn_hgcd_matrix_mul_1_000973f4)(M,unaff_s5,tp);\n    if (n != 0) {\n      iVar13 = n + -1;\n      mVar21 = *ap;\n      if (iVar13 == 0) {\n        *tp = mVar21;\n        pmVar35 = tp;\n      }\n      else {\n        pmVar36 = tp;\n        pmVar35 = ap + 1;\n        do {\n          *pmVar36 = mVar21;\n          iVar13 = iVar13 + -1;\n          mVar21 = *pmVar35;\n          pmVar36 = pmVar36 + 1;\n          pmVar35 = pmVar35 + 1;\n        } while (iVar13 != 0);\n        tp[n + -1] = mVar21;\n        pmVar35 = tp + n + -1;\n      }\n    }\n    pmVar36 = ap;\n    pmVar8 = tp;\n    pmVar26 = bp;\n    local_58 = (hgcd_matrix1 *)n;\n    mVar4 = (*(code *)PTR___gmpn_matrix22_mul1_inverse_vector_00097488)(unaff_s5);\n  }\n  if (pmVar17 == *(mp_ptr *)puVar12) {\n    return mVar4;\n  }\n  uVar46 = 0x52c64;\n  puVar37 = PTR___stack_chk_fail_000974d0;\n  (*(code *)PTR___stack_chk_fail_000974d0)();\n  phVar2 = local_54;\n  apmStack_a8[0] = (mp_ptr)(puVar37 + 0x4c3d0);\n  puVar43 = auStack_c0;\n  phStack_70 = M;\n  piVar38 = *(int **)(puVar37 + 0x448d0);\n  iVar13 = (int)pmVar26 + (int)local_54;\n  pmStack_74 = tp;\n  puStack_8c = puVar12;\n  iStack_98 = 0;\n  iStack_94 = *piVar38;\n  pmStack_90 = pmVar35;\n  pmStack_88 = ap;\n  pmStack_84 = bp;\n  mStack_80 = n;\n  phStack_7c = unaff_s5;\n  mStack_78 = s;\n  uStack_6c = uVar46;\n  if ((uint)(iVar13 * 4) < 0x7f01) {\n    iVar32 = -(iVar13 * 4 + 7U & 0xfffffff8);\n    puVar43 = auStack_c0 + iVar32;\n    pmVar6 = (mp_ptr)((int)apmStack_a8 + iVar32);\n    phVar31 = local_58;\n  }\n  else {\n    apmStack_a8[3] = (mp_ptr)local_58;\n    pmVar6 = (mp_ptr)(**(code **)(puVar37 + 0x44680))(&iStack_98);\n    phVar31 = (hgcd_matrix1 *)apmStack_a8[3];\n  }\n  pcVar42 = (code *)apmStack_a8[0][-0x1f63];\n  *(hgcd_matrix **)(puVar43 + 0x10) = phVar2;\n  pmVar25 = pmVar8;\n  pmVar28 = pmVar26;\n  (*pcVar42)(pmVar6);\n  pmVar39 = (mp_ptr)(iVar13 - (uint)((int)pmVar36 < iVar13));\n  if (((pmVar39 != (mp_ptr)0x0) &&\n      (pmVar25 = pmVar17, pmVar28 = pmVar6, phVar31 = (hgcd_matrix1 *)pmVar39,\n      iVar13 = (*(code *)apmStack_a8[0][-0x1ecb])(pmVar17), iVar13 != 0)) &&\n     ((int)pmVar39 < (int)pmVar36)) {\n    pmVar19 = pmVar17 + (int)pmVar39;\n    mVar21 = *pmVar19;\n    pmVar25 = (mp_ptr)(mVar21 - 1);\n    *pmVar19 = (mp_limb_t)pmVar25;\n    pmVar5 = pmVar39;\n    while ((mVar21 == 0 && (pmVar5 = (mp_ptr)((int)pmVar5 + 1), pmVar36 != pmVar5))) {\n      mVar21 = pmVar19[1];\n      pmVar19 = pmVar19 + 1;\n      pmVar25 = (mp_ptr)(mVar21 - 1);\n      *pmVar19 = (mp_limb_t)pmVar25;\n    }\n  }\n  if (iStack_98 != 0) {\n    (*(code *)apmStack_a8[0][-0x1e8b])();\n  }\n  pmVar5 = pmVar36;\n  if (((int)pmVar26 < (int)pmVar36) && (pmVar17[(int)pmVar36 + -1] == 0)) {\n    pmVar19 = pmVar17 + (int)pmVar36;\n    do {\n      pmVar36 = (mp_ptr)((int)pmVar36 + -1);\n      pmVar5 = pmVar26;\n      if (pmVar26 == pmVar36) break;\n      pmVar1 = pmVar19 + -2;\n      pmVar5 = pmVar36;\n      pmVar19 = pmVar19 + -1;\n    } while (*pmVar1 == 0);\n  }\n  pcVar42 = (code *)apmStack_a8[0][-0x1edc];\n  if (iStack_94 == *piVar38) {\n    return (mp_size_t)pmVar5;\n  }\n  pcVar47 = hgcd_matrix_apply;\n  iVar13 = iStack_94;\n  (*pcVar42)();\n  puVar45 = puVar43 + -0x88;\n  puVar44 = puVar43 + -0x88;\n  puVar7 = *(undefined4 **)(pcVar42 + 0x446d8);\n  *(undefined1 **)(puVar43 + -8) = auStack_c0;\n  *(mp_ptr *)(puVar43 + -0x10) = pmVar6;\n  *(undefined4 **)(puVar43 + -0x4c) = puVar7;\n  *(mp_ptr *)(puVar43 + -0x20) = pmVar26;\n  *(mp_ptr *)(puVar43 + -0x24) = pmVar17;\n  *(mp_ptr *)(puVar43 + -0x28) = pmVar36;\n  *(code **)(puVar43 + -4) = pcVar47;\n  *(mp_ptr *)(puVar43 + -0xc) = pmVar8;\n  *(hgcd_matrix **)(puVar43 + -0x14) = phVar2;\n  *(mp_ptr *)(puVar43 + -0x18) = pmVar39;\n  *(int **)(puVar43 + -0x1c) = piVar38;\n  *(code **)(puVar43 + -0x68) = pcVar42 + 0x4c1d8;\n  *(undefined4 *)(puVar43 + -0x2c) = *puVar7;\n  pmVar17 = (mp_ptr)phVar31;\n  pmVar36 = (mp_ptr)phVar31;\n  if (0 < (int)phVar31) {\n    if (pmVar25[(int)((int)phVar31 + -1)] == 0) {\n      pmVar8 = pmVar25 + (int)phVar31;\n      do {\n        pmVar36 = (mp_ptr)((int)pmVar36 + -1);\n        if (pmVar36 == (mp_ptr)0x0) break;\n        pmVar26 = pmVar8 + -2;\n        pmVar8 = pmVar8 + -1;\n      } while (*pmVar26 == 0);\n    }\n    if (pmVar28[(int)((int)phVar31 + -1)] == 0) {\n      pmVar8 = pmVar28 + (int)phVar31;\n      do {\n        pmVar17 = (mp_ptr)((int)pmVar17 + -1);\n        if (pmVar17 == (mp_ptr)0x0) break;\n        pmVar26 = pmVar8 + -2;\n        pmVar8 = pmVar8 + -1;\n      } while (*pmVar26 == 0);\n    }\n  }\n  iVar40 = *(int *)(iVar13 + 4);\n  iVar32 = 8;\n  do {\n    iVar29 = iVar32 + -8;\n    do {\n      iVar16 = iVar40;\n      if (0 < iVar40) {\n        iVar9 = *(int *)(iVar13 + iVar29 + 8);\n        iVar15 = *(int *)(iVar9 + iVar40 * 4 + -4);\n        iVar9 = iVar9 + iVar40 * 4;\n        while (iVar15 == 0) {\n          iVar16 = iVar16 + -1;\n          if (iVar16 == 0) break;\n          iVar15 = *(int *)(iVar9 + -8);\n          iVar9 = iVar9 + -4;\n        }\n      }\n      iVar9 = iVar29 + -0x3c;\n      iVar29 = iVar29 + 4;\n      *(int *)(puVar43 + iVar9) = iVar16;\n    } while (iVar32 != iVar29);\n    iVar32 = iVar32 + 8;\n    iVar29 = *(int *)(puVar43 + -0x34);\n  } while (iVar32 != 0x18);\n  iVar32 = *(int *)(puVar43 + -0x38);\n  *(undefined4 *)(puVar43 + -0x40) = 0;\n  if (iVar32 == 0) {\n    uVar46 = *(undefined4 *)(iVar13 + 0x10);\n    *(int *)(puVar43 + -0x74) = iVar29;\n    *(undefined4 *)(puVar43 + -0x78) = uVar46;\n    pmVar8 = pmVar28;\n    pmVar26 = pmVar17;\n    pmVar6 = pmVar25;\nLAB_0005309c:\n    iVar32 = submul(pmVar8,(mp_size_t)pmVar26,pmVar6,(mp_size_t)pmVar36,\n                    *(mp_srcptr *)(puVar43 + -0x78),*(mp_size_t *)(puVar43 + -0x74));\n    iVar40 = *(int *)(puVar43 + -0x68);\nLAB_000530b4:\n    pcVar42 = *(code **)(iVar40 + -0x7a2c);\n    puVar45 = puVar44;\n    if (*(int *)(puVar43 + -0x40) != 0) goto LAB_00053478;\n  }\n  else {\n    if (iVar29 == 0) {\n      uVar46 = *(undefined4 *)(iVar13 + 0xc);\n      *(int *)(puVar43 + -0x74) = iVar32;\n      *(undefined4 *)(puVar43 + -0x78) = uVar46;\n      pmVar8 = pmVar25;\n      pmVar26 = pmVar36;\n      pmVar6 = pmVar28;\n      pmVar36 = pmVar17;\n      goto LAB_0005309c;\n    }\n    iVar9 = *(int *)(puVar43 + -0x30);\n    pcVar42 = *(code **)(pcVar42 + 0x4454c);\n    iVar16 = (int)pmVar36 - *(int *)(puVar43 + -0x3c);\n    *(int *)(puVar43 + -0x50) = *(int *)(puVar43 + -0x3c);\n    *(int *)(puVar43 + -0x44) = iVar32;\n    if ((int)pmVar17 - iVar29 <= iVar16) {\n      iVar16 = (int)pmVar17 - iVar29;\n    }\n    iVar15 = (int)pmVar36 - iVar32;\n    if ((int)pmVar17 - iVar9 <= (int)pmVar36 - iVar32) {\n      iVar15 = (int)pmVar17 - iVar9;\n    }\n    iVar32 = iVar15 + 1;\n    if (iVar15 + 1 <= iVar16 + 1) {\n      iVar32 = iVar16 + 1;\n    }\n    pmVar17 = (mp_ptr)(*pcVar42)(iVar32 + 1);\n    iVar16 = (int)pmVar17 >> 1;\n    iVar15 = *(int *)(puVar43 + -0x68);\n    uVar46 = *(undefined4 *)(puVar43 + -0x44);\n    if (iVar16 < (int)pmVar17) {\n      if (iVar40 <= iVar16) {\n        uVar18 = ((int)pmVar17 * 3 + iVar16 + 4) * 4;\n        uVar3 = uVar18 + 7;\n        if (0x7f00 < uVar18) {\n          pcVar42 = *(code **)(iVar15 + -0x7d50);\n          goto LAB_0005305c;\n        }\n        goto LAB_00053148;\n      }\n      uVar18 = ((int)pmVar17 * 4 + 4) * 4;\n      uVar3 = uVar18 + 7;\n      if (uVar18 < 0x7f01) goto LAB_00053148;\n      pcVar42 = *(code **)(iVar15 + -0x7d50);\nLAB_0005305c:\n      *(mp_ptr *)(puVar43 + -0x48) = pmVar17;\n      *(undefined4 *)(puVar43 + -0x44) = uVar46;\n      pmVar35 = (mp_limb_t *)(*pcVar42)(puVar43 + -0x40);\n      iVar15 = *(int *)(puVar43 + -0x68);\n      pmVar17 = *(mp_ptr *)(puVar43 + -0x48);\n      uVar46 = *(undefined4 *)(puVar43 + -0x44);\n    }\n    else {\n      uVar3 = ((int)pmVar17 * 3 + 4) * 4;\n      pcVar42 = *(code **)(iVar15 + -0x7d50);\n      if (0x7f00 < uVar3) goto LAB_0005305c;\n      uVar3 = uVar3 + 7;\nLAB_00053148:\n      puVar45 = puVar43 + -(uVar3 & 0xfffffff8) + -0x88;\n      pmVar35 = (mp_limb_t *)(puVar43 + -(uVar3 & 0xfffffff8) + -0x68);\n    }\n    *(mp_limb_t **)(puVar43 + -0x44) = pmVar35 + (int)pmVar17;\n    *(mp_limb_t **)(puVar43 + -0x48) = pmVar35 + (int)pmVar17 + (int)pmVar17;\n    if ((int)pmVar17 < (int)phVar31) {\n      pcVar42 = *(code **)(iVar15 + -0x7d0c);\n      pmVar36 = (mp_ptr)((int)phVar31 - (int)pmVar17);\n      *(undefined4 *)(puVar43 + -0x5c) = uVar46;\n      *(mp_ptr *)(puVar43 + -0x58) = pmVar17;\n      *(int *)(puVar43 + -0x54) = (int)pmVar17 * 4;\n      iVar40 = (*pcVar42)(pmVar25,pmVar25,pmVar25 + (int)pmVar17,pmVar36);\n      iVar15 = *(int *)(puVar43 + -0x68);\n      iVar16 = *(int *)(puVar43 + -0x54);\n      pmVar17 = *(mp_ptr *)(puVar43 + -0x58);\n      uVar46 = *(undefined4 *)(puVar43 + -0x5c);\n      if (iVar40 == 0) {\nLAB_0005359c:\n        pcVar42 = *(code **)(iVar15 + -0x7d0c);\n      }\n      else {\n        pmVar8 = pmVar25;\n        if ((int)pmVar17 <= (int)pmVar36) {\nLAB_00053588:\n          do {\n            mVar21 = *pmVar8;\n            *pmVar8 = mVar21 + 1;\n            pmVar8 = pmVar8 + 1;\n          } while (mVar21 + 1 == 0);\n          goto LAB_0005359c;\n        }\n        pmVar6 = pmVar25 + (int)pmVar36;\n        mVar21 = *pmVar6;\n        *pmVar6 = mVar21 + 1;\n        pmVar26 = pmVar36;\n        if (mVar21 + 1 == 0) {\n          do {\n            pmVar26 = (mp_ptr)((int)pmVar26 + 1);\n            if (pmVar17 == pmVar26) goto LAB_00053588;\n            mVar21 = pmVar6[1];\n            pmVar6 = pmVar6 + 1;\n            *pmVar6 = mVar21 + 1;\n          } while (mVar21 + 1 == 0);\n          goto LAB_0005359c;\n        }\n        pcVar42 = *(code **)(iVar15 + -0x7d0c);\n      }\n      *(mp_ptr *)(puVar43 + -0x58) = pmVar17;\n      *(undefined4 *)(puVar43 + -0x54) = uVar46;\n      iVar40 = (*pcVar42)(pmVar28,pmVar28,(int)pmVar28 + iVar16,pmVar36);\n      iVar15 = *(int *)(puVar43 + -0x68);\n      uVar46 = *(undefined4 *)(puVar43 + -0x54);\n      pmVar17 = *(mp_ptr *)(puVar43 + -0x58);\n      phVar31 = (hgcd_matrix1 *)pmVar17;\n      if (iVar40 != 0) {\n        pmVar8 = pmVar28;\n        if ((int)pmVar36 < (int)pmVar17) {\n          pmVar11 = pmVar28 + (int)pmVar36;\n          mVar21 = *pmVar11 + 1;\n          *pmVar11 = mVar21;\n          while (mVar21 == 0) {\n            pmVar36 = (mp_ptr)((int)pmVar36 + 1);\n            if (pmVar17 == pmVar36) goto LAB_0005361c;\n            pmVar22 = pmVar11 + 1;\n            pmVar11 = pmVar11 + 1;\n            mVar21 = *pmVar22 + 1;\n            *pmVar11 = mVar21;\n          }\n        }\n        else {\nLAB_0005361c:\n          do {\n            mVar21 = *pmVar8;\n            *pmVar8 = mVar21 + 1;\n            pmVar8 = pmVar8 + 1;\n          } while (mVar21 + 1 == 0);\n        }\n      }\n    }\n    uVar10 = *(undefined4 *)(iVar13 + 0x14);\n    pcVar42 = *(code **)(iVar15 + -0x7cd8);\n    *(undefined4 *)(puVar43 + -0x5c) = uVar46;\n    *(mp_ptr *)(puVar43 + -0x54) = pmVar17;\n    *(undefined4 *)(puVar45 + 0x18) = *(undefined4 *)(puVar43 + -0x48);\n    *(undefined4 *)(puVar45 + 0x10) = uVar10;\n    *(int *)(puVar45 + 0x14) = iVar9;\n    (*pcVar42)(pmVar35,pmVar17,pmVar25,phVar31);\n    uVar46 = *(undefined4 *)(iVar13 + 0xc);\n    uVar33 = *(undefined4 *)(puVar43 + -0x54);\n    uVar34 = *(undefined4 *)(puVar43 + -0x5c);\n    uVar10 = *(undefined4 *)(puVar43 + -0x48);\n    pcVar42 = *(code **)(*(int *)(puVar43 + -0x68) + -0x7cd8);\n    uVar20 = *(undefined4 *)(puVar43 + -0x44);\n    *(undefined4 *)(puVar43 + -0x58) = uVar33;\n    *(undefined4 *)(puVar45 + 0x14) = uVar34;\n    *(undefined4 *)(puVar43 + -0x54) = uVar34;\n    *(undefined4 *)(puVar45 + 0x10) = uVar46;\n    *(undefined4 *)(puVar45 + 0x18) = uVar10;\n    (*pcVar42)(uVar20,uVar33,pmVar28,phVar31);\n    iVar40 = *(int *)(puVar43 + -0x58);\n    iVar15 = *(int *)(puVar43 + -0x68);\n    iVar16 = *(int *)(puVar43 + -0x54);\n    if ((iVar9 + (int)phVar31 < iVar40) && (iVar9 != iVar40 - (int)phVar31)) {\n      iVar41 = (iVar40 - (int)phVar31) - iVar9;\n      pmVar11 = pmVar35 + (int)(iVar9 + (int)phVar31);\n      do {\n        iVar41 = iVar41 + -1;\n        *pmVar11 = 0;\n        pmVar11 = pmVar11 + 1;\n      } while (iVar41 != 0);\n    }\n    pcVar42 = *(code **)(iVar15 + -0x7b2c);\n    if (iVar16 + (int)phVar31 < iVar40) {\n      if (iVar16 != iVar40 - (int)phVar31) {\n        iVar9 = (iVar40 - (int)phVar31) - iVar16;\n        puVar7 = (undefined4 *)(*(int *)(puVar43 + -0x44) + (int)(iVar16 + (int)phVar31) * 4);\n        do {\n          iVar9 = iVar9 + -1;\n          *puVar7 = 0;\n          puVar7 = puVar7 + 1;\n        } while (iVar9 != 0);\n        pcVar42 = *(code **)(iVar15 + -0x7b2c);\n      }\n    }\n    *(int *)(puVar43 + -0x54) = iVar40;\n    uVar3 = (*pcVar42)(pmVar35,pmVar35,*(undefined4 *)(puVar43 + -0x44),iVar40);\n    uVar18 = *pmVar35;\n    iVar40 = *(int *)(puVar43 + -0x68);\n    uVar46 = *(undefined4 *)(puVar43 + -0x54);\n    *pmVar35 = uVar18 - uVar3;\n    pmVar11 = pmVar35;\n    if (uVar18 < uVar3) {\n      do {\n        pmVar11 = pmVar11 + 1;\n        mVar21 = *pmVar11;\n        *pmVar11 = mVar21 - 1;\n      } while (mVar21 == 0);\n    }\n    uVar10 = *(undefined4 *)(iVar13 + 0x10);\n    pcVar42 = *(code **)(iVar40 + -0x7cd8);\n    uVar20 = *(undefined4 *)(puVar43 + -0x44);\n    *(undefined4 *)(puVar43 + -0x54) = uVar46;\n    *(undefined4 *)(puVar45 + 0x18) = *(undefined4 *)(puVar43 + -0x48);\n    *(int *)(puVar45 + 0x14) = iVar29;\n    *(undefined4 *)(puVar45 + 0x10) = uVar10;\n    (*pcVar42)(uVar20,uVar46,pmVar25,phVar31);\n    iVar40 = *(int *)(puVar43 + -0x68);\n    uVar46 = *(undefined4 *)(puVar43 + -0x54);\n    if (iVar32 != 0) {\n      iVar16 = iVar32 + -1;\n      mVar21 = *pmVar35;\n      pmVar22 = pmVar25;\n      pmVar11 = pmVar35;\n      if (iVar16 == 0) {\n        *pmVar25 = mVar21;\n      }\n      else {\n        do {\n          *pmVar22 = mVar21;\n          iVar16 = iVar16 + -1;\n          mVar21 = pmVar11[1];\n          pmVar22 = pmVar22 + 1;\n          pmVar11 = pmVar11 + 1;\n        } while (iVar16 != 0);\n        pmVar25[iVar32 + -1] = mVar21;\n      }\n    }\n    uVar10 = *(undefined4 *)(iVar13 + 8);\n    pcVar42 = *(code **)(iVar40 + -0x7cd8);\n    *(undefined4 *)(puVar45 + 0x18) = *(undefined4 *)(puVar43 + -0x48);\n    *(undefined4 *)(puVar43 + -0x48) = uVar46;\n    *(undefined4 *)(puVar45 + 0x10) = uVar10;\n    *(undefined4 *)(puVar45 + 0x14) = *(undefined4 *)(puVar43 + -0x50);\n    (*pcVar42)(pmVar35,uVar46,pmVar28,phVar31);\n    iVar40 = *(int *)(puVar43 + -0x48);\n    iVar16 = *(int *)(puVar43 + -0x68);\n    if ((int)phVar31 + iVar29 < iVar40) {\n      if (iVar29 != iVar40 - (int)phVar31) {\n        iVar9 = (iVar40 - (int)phVar31) - iVar29;\n        puVar7 = (undefined4 *)(*(int *)(puVar43 + -0x44) + (int)((int)phVar31 + iVar29) * 4);\n        do {\n          iVar9 = iVar9 + -1;\n          *puVar7 = 0;\n          puVar7 = puVar7 + 1;\n        } while (iVar9 != 0);\n      }\n    }\n    pcVar42 = *(code **)(iVar16 + -0x7b2c);\n    if (*(int *)(puVar43 + -0x50) + (int)phVar31 < iVar40) {\n      if (*(int *)(puVar43 + -0x50) != iVar40 - (int)phVar31) {\n        iVar29 = (iVar40 - (int)phVar31) - *(int *)(puVar43 + -0x50);\n        pmVar11 = pmVar35 + (int)(*(int *)(puVar43 + -0x50) + (int)phVar31);\n        do {\n          iVar29 = iVar29 + -1;\n          *pmVar11 = 0;\n          pmVar11 = pmVar11 + 1;\n        } while (iVar29 != 0);\n        pcVar42 = *(code **)(iVar16 + -0x7b2c);\n      }\n    }\n    uVar3 = (*pcVar42)(pmVar35,pmVar35,*(undefined4 *)(puVar43 + -0x44),iVar40);\n    uVar18 = *pmVar35;\n    iVar40 = *(int *)(puVar43 + -0x68);\n    pmVar26 = (mp_ptr)(uVar18 - uVar3);\n    *pmVar35 = (mp_limb_t)pmVar26;\n    pmVar11 = pmVar35;\n    if (uVar18 < uVar3) {\n      do {\n        pmVar11 = pmVar11 + 1;\n        mVar21 = *pmVar11;\n        pmVar26 = (mp_ptr)(mVar21 - 1);\n        *pmVar11 = (mp_limb_t)pmVar26;\n      } while (mVar21 == 0);\n    }\n    iVar29 = iVar32 + -1;\n    if (iVar32 == 0) {\n      iVar29 = -4;\n    }\n    else {\n      pmVar26 = (mp_ptr)*pmVar35;\n      pmVar17 = pmVar28;\n      if (iVar29 != 0) {\n        do {\n          pmVar35 = pmVar35 + 1;\n          *pmVar17 = (mp_limb_t)pmVar26;\n          iVar29 = iVar29 + -1;\n          pmVar26 = (mp_ptr)*pmVar35;\n          pmVar17 = pmVar17 + 1;\n        } while (iVar29 != 0);\n        pmVar17 = pmVar28 + iVar32 + -1;\n      }\n      *pmVar17 = (mp_limb_t)pmVar26;\n      iVar29 = iVar32 * 4 + -4;\n    }\n    puVar44 = puVar45;\n    if (*(int *)((int)pmVar25 + iVar29) != 0 || *(int *)((int)pmVar28 + iVar29) != 0)\n    goto LAB_000530b4;\n    pmVar25 = pmVar25 + iVar32 + -2;\n    pmVar28 = pmVar28 + iVar32 + -2;\n    do {\n      mVar21 = *pmVar25;\n      iVar32 = iVar32 + -1;\n      mVar23 = *pmVar28;\n      pmVar25 = pmVar25 + -1;\n      pmVar28 = pmVar28 + -1;\n    } while (mVar21 == 0 && mVar23 == 0);\n    piVar38 = *(int **)(puVar43 + -0x4c);\n    if (*(int *)(puVar43 + -0x40) == 0) goto LAB_000530c4;\n    pcVar42 = *(code **)(iVar40 + -0x7a2c);\nLAB_00053478:\n    (*pcVar42)();\n    iVar40 = *(int *)(puVar43 + -0x68);\n    puVar45 = puVar44;\n  }\n  piVar38 = *(int **)(puVar43 + -0x4c);\nLAB_000530c4:\n  iVar29 = *(int *)(puVar43 + -0x2c);\n  pcVar42 = *(code **)(iVar40 + -0x7b70);\n  if (iVar29 == *piVar38) {\n    return iVar32;\n  }\n  pcVar48 = __gmpn_hgcd_reduce_itch;\n  (*pcVar42)();\n  pcVar47 = *(code **)(pcVar42 + 0x43e08);\n  *(mp_ptr *)(puVar45 + -0xc) = pmVar28;\n  *(int *)(puVar45 + -8) = iVar13;\n  *(mp_ptr *)(puVar45 + -0x10) = pmVar25;\n  *(code **)(puVar45 + -0x18) = pcVar42 + 0x4b9e4;\n  *(code **)(puVar45 + -4) = pcVar48;\n  puVar12 = (undefined *)(*pcVar47)(iVar29 - (int)pmVar26);\n  if (999 < iVar29) {\n    return (mp_size_t)(puVar12 + (iVar29 - (int)pmVar26) * 2);\n  }\n  puVar37 = (undefined *)((int)pmVar26 + iVar29 + -1);\n  if ((int)puVar12 <= (int)puVar37) {\n    puVar12 = puVar37;\n  }\n  return (mp_size_t)puVar12;\n}\n\n" (function_definition "mp_size_t __gmpn_hgcd_step(mp_size_t n,mp_ptr ap,mp_ptr bp,mp_size_t s,hgcd_matrix *M,mp_ptr tp)\n\n{\n  mp_ptr pmVar1;\n  hgcd_matrix *phVar2;\n  uint uVar3;\n  mp_size_t mVar4;\n  mp_ptr pmVar5;\n  mp_ptr pmVar6;\n  undefined4 *puVar7;\n  mp_ptr pmVar8;\n  int iVar9;\n  undefined4 uVar10;\n  mp_limb_t *pmVar11;\n  undefined *puVar12;\n  int iVar13;\n  uint uVar14;\n  int iVar15;\n  int iVar16;\n  mp_ptr pmVar17;\n  uint uVar18;\n  mp_ptr pmVar19;\n  undefined4 uVar20;\n  mp_limb_t mVar21;\n  mp_limb_t *pmVar22;\n  mp_limb_t mVar23;\n  uint uVar24;\n  mp_ptr pmVar25;\n  mp_ptr pmVar26;\n  uint uVar27;\n  mp_ptr pmVar28;\n  int iVar29;\n  uint uVar30;\n  hgcd_matrix1 *phVar31;\n  int iVar32;\n  undefined4 uVar33;\n  undefined4 uVar34;\n  mp_limb_t *pmVar35;\n  mp_ptr pmVar36;\n  undefined *puVar37;\n  int *piVar38;\n  mp_ptr pmVar39;\n  int iVar40;\n  hgcd_matrix1 *unaff_s5;\n  int iVar41;\n  code *pcVar42;\n  undefined1 *puVar43;\n  undefined1 *puVar44;\n  undefined1 *puVar45;\n  undefined4 uVar46;\n  code *pcVar47;\n  code *pcVar48;\n  undefined1 auStack_c0 [24];\n  mp_ptr apmStack_a8 [4];\n  int iStack_98;\n  int iStack_94;\n  mp_limb_t *pmStack_90;\n  undefined *puStack_8c;\n  mp_ptr pmStack_88;\n  mp_ptr pmStack_84;\n  mp_size_t mStack_80;\n  hgcd_matrix1 *phStack_7c;\n  mp_size_t mStack_78;\n  mp_ptr pmStack_74;\n  hgcd_matrix *phStack_70;\n  undefined4 uStack_6c;\n  hgcd_matrix1 *local_58;\n  hgcd_matrix *local_54;\n  mp_ptr local_50;\n  hgcd_matrix1 M1;\n  \n  puVar12 = PTR___stack_chk_guard_00097540;\n  pmVar35 = (mp_limb_t *)(n * 4 + -4);\n  pmVar17 = *(mp_ptr *)PTR___stack_chk_guard_00097540;\n  uVar27 = bp[n + -1];\n  uVar18 = ap[n + -1];\n  uVar3 = uVar18 | uVar27;\n  if (s + 1 == n) {\n    if (3 < uVar3) {\n      unaff_s5 = &M1;\n      local_58 = unaff_s5;\n      iVar13 = (*(code *)PTR___gmpn_hgcd2_00097460)(uVar18,ap[n + -2],uVar27,bp[n + -2]);\n      if (iVar13 != 0) goto LAB_00052bb8;\n    }\nLAB_00052b18:\n    local_50 = tp;\n    local_58 = (hgcd_matrix1 *)(PTR_LAB_0009707c + 0x2960);\n    local_54 = M;\n    pmVar36 = bp;\n    pmVar8 = (mp_ptr)n;\n    pmVar26 = (mp_ptr)s;\n    mVar4 = (*(code *)PTR___gmpn_gcd_subdiv_step_00097118)(ap);\n  }\n  else {\n    uVar24 = ap[n + -2];\n    uVar30 = bp[n + -2];\n    if (-1 < (int)uVar3) {\n      if (uVar3 < 0x10000) {\n        iVar13 = 0x18;\n        if (uVar3 < 0x100) {\n          iVar13 = 0;\n        }\n        iVar32 = 9;\n        if (uVar3 < 0x100) {\n          iVar32 = 1;\n        }\n      }\n      else {\n        iVar13 = 8;\n        if (uVar3 < 0x1000000) {\n          iVar13 = 0x10;\n        }\n        iVar32 = 0x19;\n        if (uVar3 < 0x1000000) {\n          iVar32 = 0x11;\n        }\n      }\n      uVar3 = iVar13 - (uint)(byte)PTR___gmpn_clz_tab_0009718c[uVar3 >> iVar32];\n      uVar14 = 0x20 - uVar3;\n      uVar18 = uVar18 << (uVar3 & 0x1f) | uVar24 >> (uVar14 & 0x1f);\n      uVar24 = ap[n + -3] >> (uVar14 & 0x1f) | uVar24 << (uVar3 & 0x1f);\n      uVar27 = uVar27 << (uVar3 & 0x1f) | uVar30 >> (uVar14 & 0x1f);\n      uVar30 = bp[n + -3] >> (uVar14 & 0x1f) | uVar30 << (uVar3 & 0x1f);\n    }\n    unaff_s5 = &M1;\n    local_58 = unaff_s5;\n    iVar13 = (*(code *)PTR___gmpn_hgcd2_00097460)(uVar18,uVar24,uVar27,uVar30);\n    if (iVar13 == 0) goto LAB_00052b18;\nLAB_00052bb8:\n    unaff_s5 = &M1;\n    (*(code *)PTR___gmpn_hgcd_matrix_mul_1_000973f4)(M,unaff_s5,tp);\n    if (n != 0) {\n      iVar13 = n + -1;\n      mVar21 = *ap;\n      if (iVar13 == 0) {\n        *tp = mVar21;\n        pmVar35 = tp;\n      }\n      else {\n        pmVar36 = tp;\n        pmVar35 = ap + 1;\n        do {\n          *pmVar36 = mVar21;\n          iVar13 = iVar13 + -1;\n          mVar21 = *pmVar35;\n          pmVar36 = pmVar36 + 1;\n          pmVar35 = pmVar35 + 1;\n        } while (iVar13 != 0);\n        tp[n + -1] = mVar21;\n        pmVar35 = tp + n + -1;\n      }\n    }\n    pmVar36 = ap;\n    pmVar8 = tp;\n    pmVar26 = bp;\n    local_58 = (hgcd_matrix1 *)n;\n    mVar4 = (*(code *)PTR___gmpn_matrix22_mul1_inverse_vector_00097488)(unaff_s5);\n  }\n  if (pmVar17 == *(mp_ptr *)puVar12) {\n    return mVar4;\n  }\n  uVar46 = 0x52c64;\n  puVar37 = PTR___stack_chk_fail_000974d0;\n  (*(code *)PTR___stack_chk_fail_000974d0)();\n  phVar2 = local_54;\n  apmStack_a8[0] = (mp_ptr)(puVar37 + 0x4c3d0);\n  puVar43 = auStack_c0;\n  phStack_70 = M;\n  piVar38 = *(int **)(puVar37 + 0x448d0);\n  iVar13 = (int)pmVar26 + (int)local_54;\n  pmStack_74 = tp;\n  puStack_8c = puVar12;\n  iStack_98 = 0;\n  iStack_94 = *piVar38;\n  pmStack_90 = pmVar35;\n  pmStack_88 = ap;\n  pmStack_84 = bp;\n  mStack_80 = n;\n  phStack_7c = unaff_s5;\n  mStack_78 = s;\n  uStack_6c = uVar46;\n  if ((uint)(iVar13 * 4) < 0x7f01) {\n    iVar32 = -(iVar13 * 4 + 7U & 0xfffffff8);\n    puVar43 = auStack_c0 + iVar32;\n    pmVar6 = (mp_ptr)((int)apmStack_a8 + iVar32);\n    phVar31 = local_58;\n  }\n  else {\n    apmStack_a8[3] = (mp_ptr)local_58;\n    pmVar6 = (mp_ptr)(**(code **)(puVar37 + 0x44680))(&iStack_98);\n    phVar31 = (hgcd_matrix1 *)apmStack_a8[3];\n  }\n  pcVar42 = (code *)apmStack_a8[0][-0x1f63];\n  *(hgcd_matrix **)(puVar43 + 0x10) = phVar2;\n  pmVar25 = pmVar8;\n  pmVar28 = pmVar26;\n  (*pcVar42)(pmVar6);\n  pmVar39 = (mp_ptr)(iVar13 - (uint)((int)pmVar36 < iVar13));\n  if (((pmVar39 != (mp_ptr)0x0) &&\n      (pmVar25 = pmVar17, pmVar28 = pmVar6, phVar31 = (hgcd_matrix1 *)pmVar39,\n      iVar13 = (*(code *)apmStack_a8[0][-0x1ecb])(pmVar17), iVar13 != 0)) &&\n     ((int)pmVar39 < (int)pmVar36)) {\n    pmVar19 = pmVar17 + (int)pmVar39;\n    mVar21 = *pmVar19;\n    pmVar25 = (mp_ptr)(mVar21 - 1);\n    *pmVar19 = (mp_limb_t)pmVar25;\n    pmVar5 = pmVar39;\n    while ((mVar21 == 0 && (pmVar5 = (mp_ptr)((int)pmVar5 + 1), pmVar36 != pmVar5))) {\n      mVar21 = pmVar19[1];\n      pmVar19 = pmVar19 + 1;\n      pmVar25 = (mp_ptr)(mVar21 - 1);\n      *pmVar19 = (mp_limb_t)pmVar25;\n    }\n  }\n  if (iStack_98 != 0) {\n    (*(code *)apmStack_a8[0][-0x1e8b])();\n  }\n  pmVar5 = pmVar36;\n  if (((int)pmVar26 < (int)pmVar36) && (pmVar17[(int)pmVar36 + -1] == 0)) {\n    pmVar19 = pmVar17 + (int)pmVar36;\n    do {\n      pmVar36 = (mp_ptr)((int)pmVar36 + -1);\n      pmVar5 = pmVar26;\n      if (pmVar26 == pmVar36) break;\n      pmVar1 = pmVar19 + -2;\n      pmVar5 = pmVar36;\n      pmVar19 = pmVar19 + -1;\n    } while (*pmVar1 == 0);\n  }\n  pcVar42 = (code *)apmStack_a8[0][-0x1edc];\n  if (iStack_94 == *piVar38) {\n    return (mp_size_t)pmVar5;\n  }\n  pcVar47 = hgcd_matrix_apply;\n  iVar13 = iStack_94;\n  (*pcVar42)();\n  puVar45 = puVar43 + -0x88;\n  puVar44 = puVar43 + -0x88;\n  puVar7 = *(undefined4 **)(pcVar42 + 0x446d8);\n  *(undefined1 **)(puVar43 + -8) = auStack_c0;\n  *(mp_ptr *)(puVar43 + -0x10) = pmVar6;\n  *(undefined4 **)(puVar43 + -0x4c) = puVar7;\n  *(mp_ptr *)(puVar43 + -0x20) = pmVar26;\n  *(mp_ptr *)(puVar43 + -0x24) = pmVar17;\n  *(mp_ptr *)(puVar43 + -0x28) = pmVar36;\n  *(code **)(puVar43 + -4) = pcVar47;\n  *(mp_ptr *)(puVar43 + -0xc) = pmVar8;\n  *(hgcd_matrix **)(puVar43 + -0x14) = phVar2;\n  *(mp_ptr *)(puVar43 + -0x18) = pmVar39;\n  *(int **)(puVar43 + -0x1c) = piVar38;\n  *(code **)(puVar43 + -0x68) = pcVar42 + 0x4c1d8;\n  *(undefined4 *)(puVar43 + -0x2c) = *puVar7;\n  pmVar17 = (mp_ptr)phVar31;\n  pmVar36 = (mp_ptr)phVar31;\n  if (0 < (int)phVar31) {\n    if (pmVar25[(int)((int)phVar31 + -1)] == 0) {\n      pmVar8 = pmVar25 + (int)phVar31;\n      do {\n        pmVar36 = (mp_ptr)((int)pmVar36 + -1);\n        if (pmVar36 == (mp_ptr)0x0) break;\n        pmVar26 = pmVar8 + -2;\n        pmVar8 = pmVar8 + -1;\n      } while (*pmVar26 == 0);\n    }\n    if (pmVar28[(int)((int)phVar31 + -1)] == 0) {\n      pmVar8 = pmVar28 + (int)phVar31;\n      do {\n        pmVar17 = (mp_ptr)((int)pmVar17 + -1);\n        if (pmVar17 == (mp_ptr)0x0) break;\n        pmVar26 = pmVar8 + -2;\n        pmVar8 = pmVar8 + -1;\n      } while (*pmVar26 == 0);\n    }\n  }\n  iVar40 = *(int *)(iVar13 + 4);\n  iVar32 = 8;\n  do {\n    iVar29 = iVar32 + -8;\n    do {\n      iVar16 = iVar40;\n      if (0 < iVar40) {\n        iVar9 = *(int *)(iVar13 + iVar29 + 8);\n        iVar15 = *(int *)(iVar9 + iVar40 * 4 + -4);\n        iVar9 = iVar9 + iVar40 * 4;\n        while (iVar15 == 0) {\n          iVar16 = iVar16 + -1;\n          if (iVar16 == 0) break;\n          iVar15 = *(int *)(iVar9 + -8);\n          iVar9 = iVar9 + -4;\n        }\n      }\n      iVar9 = iVar29 + -0x3c;\n      iVar29 = iVar29 + 4;\n      *(int *)(puVar43 + iVar9) = iVar16;\n    } while (iVar32 != iVar29);\n    iVar32 = iVar32 + 8;\n    iVar29 = *(int *)(puVar43 + -0x34);\n  } while (iVar32 != 0x18);\n  iVar32 = *(int *)(puVar43 + -0x38);\n  *(undefined4 *)(puVar43 + -0x40) = 0;\n  if (iVar32 == 0) {\n    uVar46 = *(undefined4 *)(iVar13 + 0x10);\n    *(int *)(puVar43 + -0x74) = iVar29;\n    *(undefined4 *)(puVar43 + -0x78) = uVar46;\n    pmVar8 = pmVar28;\n    pmVar26 = pmVar17;\n    pmVar6 = pmVar25;\nLAB_0005309c:\n    iVar32 = submul(pmVar8,(mp_size_t)pmVar26,pmVar6,(mp_size_t)pmVar36,\n                    *(mp_srcptr *)(puVar43 + -0x78),*(mp_size_t *)(puVar43 + -0x74));\n    iVar40 = *(int *)(puVar43 + -0x68);\nLAB_000530b4:\n    pcVar42 = *(code **)(iVar40 + -0x7a2c);\n    puVar45 = puVar44;\n    if (*(int *)(puVar43 + -0x40) != 0) goto LAB_00053478;\n  }\n  else {\n    if (iVar29 == 0) {\n      uVar46 = *(undefined4 *)(iVar13 + 0xc);\n      *(int *)(puVar43 + -0x74) = iVar32;\n      *(undefined4 *)(puVar43 + -0x78) = uVar46;\n      pmVar8 = pmVar25;\n      pmVar26 = pmVar36;\n      pmVar6 = pmVar28;\n      pmVar36 = pmVar17;\n      goto LAB_0005309c;\n    }\n    iVar9 = *(int *)(puVar43 + -0x30);\n    pcVar42 = *(code **)(pcVar42 + 0x4454c);\n    iVar16 = (int)pmVar36 - *(int *)(puVar43 + -0x3c);\n    *(int *)(puVar43 + -0x50) = *(int *)(puVar43 + -0x3c);\n    *(int *)(puVar43 + -0x44) = iVar32;\n    if ((int)pmVar17 - iVar29 <= iVar16) {\n      iVar16 = (int)pmVar17 - iVar29;\n    }\n    iVar15 = (int)pmVar36 - iVar32;\n    if ((int)pmVar17 - iVar9 <= (int)pmVar36 - iVar32) {\n      iVar15 = (int)pmVar17 - iVar9;\n    }\n    iVar32 = iVar15 + 1;\n    if (iVar15 + 1 <= iVar16 + 1) {\n      iVar32 = iVar16 + 1;\n    }\n    pmVar17 = (mp_ptr)(*pcVar42)(iVar32 + 1);\n    iVar16 = (int)pmVar17 >> 1;\n    iVar15 = *(int *)(puVar43 + -0x68);\n    uVar46 = *(undefined4 *)(puVar43 + -0x44);\n    if (iVar16 < (int)pmVar17) {\n      if (iVar40 <= iVar16) {\n        uVar18 = ((int)pmVar17 * 3 + iVar16 + 4) * 4;\n        uVar3 = uVar18 + 7;\n        if (0x7f00 < uVar18) {\n          pcVar42 = *(code **)(iVar15 + -0x7d50);\n          goto LAB_0005305c;\n        }\n        goto LAB_00053148;\n      }\n      uVar18 = ((int)pmVar17 * 4 + 4) * 4;\n      uVar3 = uVar18 + 7;\n      if (uVar18 < 0x7f01) goto LAB_00053148;\n      pcVar42 = *(code **)(iVar15 + -0x7d50);\nLAB_0005305c:\n      *(mp_ptr *)(puVar43 + -0x48) = pmVar17;\n      *(undefined4 *)(puVar43 + -0x44) = uVar46;\n      pmVar35 = (mp_limb_t *)(*pcVar42)(puVar43 + -0x40);\n      iVar15 = *(int *)(puVar43 + -0x68);\n      pmVar17 = *(mp_ptr *)(puVar43 + -0x48);\n      uVar46 = *(undefined4 *)(puVar43 + -0x44);\n    }\n    else {\n      uVar3 = ((int)pmVar17 * 3 + 4) * 4;\n      pcVar42 = *(code **)(iVar15 + -0x7d50);\n      if (0x7f00 < uVar3) goto LAB_0005305c;\n      uVar3 = uVar3 + 7;\nLAB_00053148:\n      puVar45 = puVar43 + -(uVar3 & 0xfffffff8) + -0x88;\n      pmVar35 = (mp_limb_t *)(puVar43 + -(uVar3 & 0xfffffff8) + -0x68);\n    }\n    *(mp_limb_t **)(puVar43 + -0x44) = pmVar35 + (int)pmVar17;\n    *(mp_limb_t **)(puVar43 + -0x48) = pmVar35 + (int)pmVar17 + (int)pmVar17;\n    if ((int)pmVar17 < (int)phVar31) {\n      pcVar42 = *(code **)(iVar15 + -0x7d0c);\n      pmVar36 = (mp_ptr)((int)phVar31 - (int)pmVar17);\n      *(undefined4 *)(puVar43 + -0x5c) = uVar46;\n      *(mp_ptr *)(puVar43 + -0x58) = pmVar17;\n      *(int *)(puVar43 + -0x54) = (int)pmVar17 * 4;\n      iVar40 = (*pcVar42)(pmVar25,pmVar25,pmVar25 + (int)pmVar17,pmVar36);\n      iVar15 = *(int *)(puVar43 + -0x68);\n      iVar16 = *(int *)(puVar43 + -0x54);\n      pmVar17 = *(mp_ptr *)(puVar43 + -0x58);\n      uVar46 = *(undefined4 *)(puVar43 + -0x5c);\n      if (iVar40 == 0) {\nLAB_0005359c:\n        pcVar42 = *(code **)(iVar15 + -0x7d0c);\n      }\n      else {\n        pmVar8 = pmVar25;\n        if ((int)pmVar17 <= (int)pmVar36) {\nLAB_00053588:\n          do {\n            mVar21 = *pmVar8;\n            *pmVar8 = mVar21 + 1;\n            pmVar8 = pmVar8 + 1;\n          } while (mVar21 + 1 == 0);\n          goto LAB_0005359c;\n        }\n        pmVar6 = pmVar25 + (int)pmVar36;\n        mVar21 = *pmVar6;\n        *pmVar6 = mVar21 + 1;\n        pmVar26 = pmVar36;\n        if (mVar21 + 1 == 0) {\n          do {\n            pmVar26 = (mp_ptr)((int)pmVar26 + 1);\n            if (pmVar17 == pmVar26) goto LAB_00053588;\n            mVar21 = pmVar6[1];\n            pmVar6 = pmVar6 + 1;\n            *pmVar6 = mVar21 + 1;\n          } while (mVar21 + 1 == 0);\n          goto LAB_0005359c;\n        }\n        pcVar42 = *(code **)(iVar15 + -0x7d0c);\n      }\n      *(mp_ptr *)(puVar43 + -0x58) = pmVar17;\n      *(undefined4 *)(puVar43 + -0x54) = uVar46;\n      iVar40 = (*pcVar42)(pmVar28,pmVar28,(int)pmVar28 + iVar16,pmVar36);\n      iVar15 = *(int *)(puVar43 + -0x68);\n      uVar46 = *(undefined4 *)(puVar43 + -0x54);\n      pmVar17 = *(mp_ptr *)(puVar43 + -0x58);\n      phVar31 = (hgcd_matrix1 *)pmVar17;\n      if (iVar40 != 0) {\n        pmVar8 = pmVar28;\n        if ((int)pmVar36 < (int)pmVar17) {\n          pmVar11 = pmVar28 + (int)pmVar36;\n          mVar21 = *pmVar11 + 1;\n          *pmVar11 = mVar21;\n          while (mVar21 == 0) {\n            pmVar36 = (mp_ptr)((int)pmVar36 + 1);\n            if (pmVar17 == pmVar36) goto LAB_0005361c;\n            pmVar22 = pmVar11 + 1;\n            pmVar11 = pmVar11 + 1;\n            mVar21 = *pmVar22 + 1;\n            *pmVar11 = mVar21;\n          }\n        }\n        else {\nLAB_0005361c:\n          do {\n            mVar21 = *pmVar8;\n            *pmVar8 = mVar21 + 1;\n            pmVar8 = pmVar8 + 1;\n          } while (mVar21 + 1 == 0);\n        }\n      }\n    }\n    uVar10 = *(undefined4 *)(iVar13 + 0x14);\n    pcVar42 = *(code **)(iVar15 + -0x7cd8);\n    *(undefined4 *)(puVar43 + -0x5c) = uVar46;\n    *(mp_ptr *)(puVar43 + -0x54) = pmVar17;\n    *(undefined4 *)(puVar45 + 0x18) = *(undefined4 *)(puVar43 + -0x48);\n    *(undefined4 *)(puVar45 + 0x10) = uVar10;\n    *(int *)(puVar45 + 0x14) = iVar9;\n    (*pcVar42)(pmVar35,pmVar17,pmVar25,phVar31);\n    uVar46 = *(undefined4 *)(iVar13 + 0xc);\n    uVar33 = *(undefined4 *)(puVar43 + -0x54);\n    uVar34 = *(undefined4 *)(puVar43 + -0x5c);\n    uVar10 = *(undefined4 *)(puVar43 + -0x48);\n    pcVar42 = *(code **)(*(int *)(puVar43 + -0x68) + -0x7cd8);\n    uVar20 = *(undefined4 *)(puVar43 + -0x44);\n    *(undefined4 *)(puVar43 + -0x58) = uVar33;\n    *(undefined4 *)(puVar45 + 0x14) = uVar34;\n    *(undefined4 *)(puVar43 + -0x54) = uVar34;\n    *(undefined4 *)(puVar45 + 0x10) = uVar46;\n    *(undefined4 *)(puVar45 + 0x18) = uVar10;\n    (*pcVar42)(uVar20,uVar33,pmVar28,phVar31);\n    iVar40 = *(int *)(puVar43 + -0x58);\n    iVar15 = *(int *)(puVar43 + -0x68);\n    iVar16 = *(int *)(puVar43 + -0x54);\n    if ((iVar9 + (int)phVar31 < iVar40) && (iVar9 != iVar40 - (int)phVar31)) {\n      iVar41 = (iVar40 - (int)phVar31) - iVar9;\n      pmVar11 = pmVar35 + (int)(iVar9 + (int)phVar31);\n      do {\n        iVar41 = iVar41 + -1;\n        *pmVar11 = 0;\n        pmVar11 = pmVar11 + 1;\n      } while (iVar41 != 0);\n    }\n    pcVar42 = *(code **)(iVar15 + -0x7b2c);\n    if (iVar16 + (int)phVar31 < iVar40) {\n      if (iVar16 != iVar40 - (int)phVar31) {\n        iVar9 = (iVar40 - (int)phVar31) - iVar16;\n        puVar7 = (undefined4 *)(*(int *)(puVar43 + -0x44) + (int)(iVar16 + (int)phVar31) * 4);\n        do {\n          iVar9 = iVar9 + -1;\n          *puVar7 = 0;\n          puVar7 = puVar7 + 1;\n        } while (iVar9 != 0);\n        pcVar42 = *(code **)(iVar15 + -0x7b2c);\n      }\n    }\n    *(int *)(puVar43 + -0x54) = iVar40;\n    uVar3 = (*pcVar42)(pmVar35,pmVar35,*(undefined4 *)(puVar43 + -0x44),iVar40);\n    uVar18 = *pmVar35;\n    iVar40 = *(int *)(puVar43 + -0x68);\n    uVar46 = *(undefined4 *)(puVar43 + -0x54);\n    *pmVar35 = uVar18 - uVar3;\n    pmVar11 = pmVar35;\n    if (uVar18 < uVar3) {\n      do {\n        pmVar11 = pmVar11 + 1;\n        mVar21 = *pmVar11;\n        *pmVar11 = mVar21 - 1;\n      } while (mVar21 == 0);\n    }\n    uVar10 = *(undefined4 *)(iVar13 + 0x10);\n    pcVar42 = *(code **)(iVar40 + -0x7cd8);\n    uVar20 = *(undefined4 *)(puVar43 + -0x44);\n    *(undefined4 *)(puVar43 + -0x54) = uVar46;\n    *(undefined4 *)(puVar45 + 0x18) = *(undefined4 *)(puVar43 + -0x48);\n    *(int *)(puVar45 + 0x14) = iVar29;\n    *(undefined4 *)(puVar45 + 0x10) = uVar10;\n    (*pcVar42)(uVar20,uVar46,pmVar25,phVar31);\n    iVar40 = *(int *)(puVar43 + -0x68);\n    uVar46 = *(undefined4 *)(puVar43 + -0x54);\n    if (iVar32 != 0) {\n      iVar16 = iVar32 + -1;\n      mVar21 = *pmVar35;\n      pmVar22 = pmVar25;\n      pmVar11 = pmVar35;\n      if (iVar16 == 0) {\n        *pmVar25 = mVar21;\n      }\n      else {\n        do {\n          *pmVar22 = mVar21;\n          iVar16 = iVar16 + -1;\n          mVar21 = pmVar11[1];\n          pmVar22 = pmVar22 + 1;\n          pmVar11 = pmVar11 + 1;\n        } while (iVar16 != 0);\n        pmVar25[iVar32 + -1] = mVar21;\n      }\n    }\n    uVar10 = *(undefined4 *)(iVar13 + 8);\n    pcVar42 = *(code **)(iVar40 + -0x7cd8);\n    *(undefined4 *)(puVar45 + 0x18) = *(undefined4 *)(puVar43 + -0x48);\n    *(undefined4 *)(puVar43 + -0x48) = uVar46;\n    *(undefined4 *)(puVar45 + 0x10) = uVar10;\n    *(undefined4 *)(puVar45 + 0x14) = *(undefined4 *)(puVar43 + -0x50);\n    (*pcVar42)(pmVar35,uVar46,pmVar28,phVar31);\n    iVar40 = *(int *)(puVar43 + -0x48);\n    iVar16 = *(int *)(puVar43 + -0x68);\n    if ((int)phVar31 + iVar29 < iVar40) {\n      if (iVar29 != iVar40 - (int)phVar31) {\n        iVar9 = (iVar40 - (int)phVar31) - iVar29;\n        puVar7 = (undefined4 *)(*(int *)(puVar43 + -0x44) + (int)((int)phVar31 + iVar29) * 4);\n        do {\n          iVar9 = iVar9 + -1;\n          *puVar7 = 0;\n          puVar7 = puVar7 + 1;\n        } while (iVar9 != 0);\n      }\n    }\n    pcVar42 = *(code **)(iVar16 + -0x7b2c);\n    if (*(int *)(puVar43 + -0x50) + (int)phVar31 < iVar40) {\n      if (*(int *)(puVar43 + -0x50) != iVar40 - (int)phVar31) {\n        iVar29 = (iVar40 - (int)phVar31) - *(int *)(puVar43 + -0x50);\n        pmVar11 = pmVar35 + (int)(*(int *)(puVar43 + -0x50) + (int)phVar31);\n        do {\n          iVar29 = iVar29 + -1;\n          *pmVar11 = 0;\n          pmVar11 = pmVar11 + 1;\n        } while (iVar29 != 0);\n        pcVar42 = *(code **)(iVar16 + -0x7b2c);\n      }\n    }\n    uVar3 = (*pcVar42)(pmVar35,pmVar35,*(undefined4 *)(puVar43 + -0x44),iVar40);\n    uVar18 = *pmVar35;\n    iVar40 = *(int *)(puVar43 + -0x68);\n    pmVar26 = (mp_ptr)(uVar18 - uVar3);\n    *pmVar35 = (mp_limb_t)pmVar26;\n    pmVar11 = pmVar35;\n    if (uVar18 < uVar3) {\n      do {\n        pmVar11 = pmVar11 + 1;\n        mVar21 = *pmVar11;\n        pmVar26 = (mp_ptr)(mVar21 - 1);\n        *pmVar11 = (mp_limb_t)pmVar26;\n      } while (mVar21 == 0);\n    }\n    iVar29 = iVar32 + -1;\n    if (iVar32 == 0) {\n      iVar29 = -4;\n    }\n    else {\n      pmVar26 = (mp_ptr)*pmVar35;\n      pmVar17 = pmVar28;\n      if (iVar29 != 0) {\n        do {\n          pmVar35 = pmVar35 + 1;\n          *pmVar17 = (mp_limb_t)pmVar26;\n          iVar29 = iVar29 + -1;\n          pmVar26 = (mp_ptr)*pmVar35;\n          pmVar17 = pmVar17 + 1;\n        } while (iVar29 != 0);\n        pmVar17 = pmVar28 + iVar32 + -1;\n      }\n      *pmVar17 = (mp_limb_t)pmVar26;\n      iVar29 = iVar32 * 4 + -4;\n    }\n    puVar44 = puVar45;\n    if (*(int *)((int)pmVar25 + iVar29) != 0 || *(int *)((int)pmVar28 + iVar29) != 0)\n    goto LAB_000530b4;\n    pmVar25 = pmVar25 + iVar32 + -2;\n    pmVar28 = pmVar28 + iVar32 + -2;\n    do {\n      mVar21 = *pmVar25;\n      iVar32 = iVar32 + -1;\n      mVar23 = *pmVar28;\n      pmVar25 = pmVar25 + -1;\n      pmVar28 = pmVar28 + -1;\n    } while (mVar21 == 0 && mVar23 == 0);\n    piVar38 = *(int **)(puVar43 + -0x4c);\n    if (*(int *)(puVar43 + -0x40) == 0) goto LAB_000530c4;\n    pcVar42 = *(code **)(iVar40 + -0x7a2c);\nLAB_00053478:\n    (*pcVar42)();\n    iVar40 = *(int *)(puVar43 + -0x68);\n    puVar45 = puVar44;\n  }\n  piVar38 = *(int **)(puVar43 + -0x4c);\nLAB_000530c4:\n  iVar29 = *(int *)(puVar43 + -0x2c);\n  pcVar42 = *(code **)(iVar40 + -0x7b70);\n  if (iVar29 == *piVar38) {\n    return iVar32;\n  }\n  pcVar48 = __gmpn_hgcd_reduce_itch;\n  (*pcVar42)();\n  pcVar47 = *(code **)(pcVar42 + 0x43e08);\n  *(mp_ptr *)(puVar45 + -0xc) = pmVar28;\n  *(int *)(puVar45 + -8) = iVar13;\n  *(mp_ptr *)(puVar45 + -0x10) = pmVar25;\n  *(code **)(puVar45 + -0x18) = pcVar42 + 0x4b9e4;\n  *(code **)(puVar45 + -4) = pcVar48;\n  puVar12 = (undefined *)(*pcVar47)(iVar29 - (int)pmVar26);\n  if (999 < iVar29) {\n    return (mp_size_t)(puVar12 + (iVar29 - (int)pmVar26) * 2);\n  }\n  puVar37 = (undefined *)((int)pmVar26 + iVar29 + -1);\n  if ((int)puVar12 <= (int)puVar37) {\n    puVar12 = puVar37;\n  }\n  return (mp_size_t)puVar12;\n}" type_identifier (function_declarator "__gmpn_hgcd_step(mp_size_t n,mp_ptr ap,mp_ptr bp,mp_size_t s,hgcd_matrix *M,mp_ptr tp)" identifier (parameter_list "(mp_size_t n,mp_ptr ap,mp_ptr bp,mp_size_t s,hgcd_matrix *M,mp_ptr tp)" ( (parameter_declaration "mp_size_t n" type_identifier identifier) , (parameter_declaration "mp_ptr ap" type_identifier identifier) , (parameter_declaration "mp_ptr bp" type_identifier identifier) , (parameter_declaration "mp_size_t s" type_identifier identifier) , (parameter_declaration "hgcd_matrix *M" type_identifier (pointer_declarator "*M" * identifier)) , (parameter_declaration "mp_ptr tp" type_identifier identifier) ))) (compound_statement "{\n  mp_ptr pmVar1;\n  hgcd_matrix *phVar2;\n  uint uVar3;\n  mp_size_t mVar4;\n  mp_ptr pmVar5;\n  mp_ptr pmVar6;\n  undefined4 *puVar7;\n  mp_ptr pmVar8;\n  int iVar9;\n  undefined4 uVar10;\n  mp_limb_t *pmVar11;\n  undefined *puVar12;\n  int iVar13;\n  uint uVar14;\n  int iVar15;\n  int iVar16;\n  mp_ptr pmVar17;\n  uint uVar18;\n  mp_ptr pmVar19;\n  undefined4 uVar20;\n  mp_limb_t mVar21;\n  mp_limb_t *pmVar22;\n  mp_limb_t mVar23;\n  uint uVar24;\n  mp_ptr pmVar25;\n  mp_ptr pmVar26;\n  uint uVar27;\n  mp_ptr pmVar28;\n  int iVar29;\n  uint uVar30;\n  hgcd_matrix1 *phVar31;\n  int iVar32;\n  undefined4 uVar33;\n  undefined4 uVar34;\n  mp_limb_t *pmVar35;\n  mp_ptr pmVar36;\n  undefined *puVar37;\n  int *piVar38;\n  mp_ptr pmVar39;\n  int iVar40;\n  hgcd_matrix1 *unaff_s5;\n  int iVar41;\n  code *pcVar42;\n  undefined1 *puVar43;\n  undefined1 *puVar44;\n  undefined1 *puVar45;\n  undefined4 uVar46;\n  code *pcVar47;\n  code *pcVar48;\n  undefined1 auStack_c0 [24];\n  mp_ptr apmStack_a8 [4];\n  int iStack_98;\n  int iStack_94;\n  mp_limb_t *pmStack_90;\n  undefined *puStack_8c;\n  mp_ptr pmStack_88;\n  mp_ptr pmStack_84;\n  mp_size_t mStack_80;\n  hgcd_matrix1 *phStack_7c;\n  mp_size_t mStack_78;\n  mp_ptr pmStack_74;\n  hgcd_matrix *phStack_70;\n  undefined4 uStack_6c;\n  hgcd_matrix1 *local_58;\n  hgcd_matrix *local_54;\n  mp_ptr local_50;\n  hgcd_matrix1 M1;\n  \n  puVar12 = PTR___stack_chk_guard_00097540;\n  pmVar35 = (mp_limb_t *)(n * 4 + -4);\n  pmVar17 = *(mp_ptr *)PTR___stack_chk_guard_00097540;\n  uVar27 = bp[n + -1];\n  uVar18 = ap[n + -1];\n  uVar3 = uVar18 | uVar27;\n  if (s + 1 == n) {\n    if (3 < uVar3) {\n      unaff_s5 = &M1;\n      local_58 = unaff_s5;\n      iVar13 = (*(code *)PTR___gmpn_hgcd2_00097460)(uVar18,ap[n + -2],uVar27,bp[n + -2]);\n      if (iVar13 != 0) goto LAB_00052bb8;\n    }\nLAB_00052b18:\n    local_50 = tp;\n    local_58 = (hgcd_matrix1 *)(PTR_LAB_0009707c + 0x2960);\n    local_54 = M;\n    pmVar36 = bp;\n    pmVar8 = (mp_ptr)n;\n    pmVar26 = (mp_ptr)s;\n    mVar4 = (*(code *)PTR___gmpn_gcd_subdiv_step_00097118)(ap);\n  }\n  else {\n    uVar24 = ap[n + -2];\n    uVar30 = bp[n + -2];\n    if (-1 < (int)uVar3) {\n      if (uVar3 < 0x10000) {\n        iVar13 = 0x18;\n        if (uVar3 < 0x100) {\n          iVar13 = 0;\n        }\n        iVar32 = 9;\n        if (uVar3 < 0x100) {\n          iVar32 = 1;\n        }\n      }\n      else {\n        iVar13 = 8;\n        if (uVar3 < 0x1000000) {\n          iVar13 = 0x10;\n        }\n        iVar32 = 0x19;\n        if (uVar3 < 0x1000000) {\n          iVar32 = 0x11;\n        }\n      }\n      uVar3 = iVar13 - (uint)(byte)PTR___gmpn_clz_tab_0009718c[uVar3 >> iVar32];\n      uVar14 = 0x20 - uVar3;\n      uVar18 = uVar18 << (uVar3 & 0x1f) | uVar24 >> (uVar14 & 0x1f);\n      uVar24 = ap[n + -3] >> (uVar14 & 0x1f) | uVar24 << (uVar3 & 0x1f);\n      uVar27 = uVar27 << (uVar3 & 0x1f) | uVar30 >> (uVar14 & 0x1f);\n      uVar30 = bp[n + -3] >> (uVar14 & 0x1f) | uVar30 << (uVar3 & 0x1f);\n    }\n    unaff_s5 = &M1;\n    local_58 = unaff_s5;\n    iVar13 = (*(code *)PTR___gmpn_hgcd2_00097460)(uVar18,uVar24,uVar27,uVar30);\n    if (iVar13 == 0) goto LAB_00052b18;\nLAB_00052bb8:\n    unaff_s5 = &M1;\n    (*(code *)PTR___gmpn_hgcd_matrix_mul_1_000973f4)(M,unaff_s5,tp);\n    if (n != 0) {\n      iVar13 = n + -1;\n      mVar21 = *ap;\n      if (iVar13 == 0) {\n        *tp = mVar21;\n        pmVar35 = tp;\n      }\n      else {\n        pmVar36 = tp;\n        pmVar35 = ap + 1;\n        do {\n          *pmVar36 = mVar21;\n          iVar13 = iVar13 + -1;\n          mVar21 = *pmVar35;\n          pmVar36 = pmVar36 + 1;\n          pmVar35 = pmVar35 + 1;\n        } while (iVar13 != 0);\n        tp[n + -1] = mVar21;\n        pmVar35 = tp + n + -1;\n      }\n    }\n    pmVar36 = ap;\n    pmVar8 = tp;\n    pmVar26 = bp;\n    local_58 = (hgcd_matrix1 *)n;\n    mVar4 = (*(code *)PTR___gmpn_matrix22_mul1_inverse_vector_00097488)(unaff_s5);\n  }\n  if (pmVar17 == *(mp_ptr *)puVar12) {\n    return mVar4;\n  }\n  uVar46 = 0x52c64;\n  puVar37 = PTR___stack_chk_fail_000974d0;\n  (*(code *)PTR___stack_chk_fail_000974d0)();\n  phVar2 = local_54;\n  apmStack_a8[0] = (mp_ptr)(puVar37 + 0x4c3d0);\n  puVar43 = auStack_c0;\n  phStack_70 = M;\n  piVar38 = *(int **)(puVar37 + 0x448d0);\n  iVar13 = (int)pmVar26 + (int)local_54;\n  pmStack_74 = tp;\n  puStack_8c = puVar12;\n  iStack_98 = 0;\n  iStack_94 = *piVar38;\n  pmStack_90 = pmVar35;\n  pmStack_88 = ap;\n  pmStack_84 = bp;\n  mStack_80 = n;\n  phStack_7c = unaff_s5;\n  mStack_78 = s;\n  uStack_6c = uVar46;\n  if ((uint)(iVar13 * 4) < 0x7f01) {\n    iVar32 = -(iVar13 * 4 + 7U & 0xfffffff8);\n    puVar43 = auStack_c0 + iVar32;\n    pmVar6 = (mp_ptr)((int)apmStack_a8 + iVar32);\n    phVar31 = local_58;\n  }\n  else {\n    apmStack_a8[3] = (mp_ptr)local_58;\n    pmVar6 = (mp_ptr)(**(code **)(puVar37 + 0x44680))(&iStack_98);\n    phVar31 = (hgcd_matrix1 *)apmStack_a8[3];\n  }\n  pcVar42 = (code *)apmStack_a8[0][-0x1f63];\n  *(hgcd_matrix **)(puVar43 + 0x10) = phVar2;\n  pmVar25 = pmVar8;\n  pmVar28 = pmVar26;\n  (*pcVar42)(pmVar6);\n  pmVar39 = (mp_ptr)(iVar13 - (uint)((int)pmVar36 < iVar13));\n  if (((pmVar39 != (mp_ptr)0x0) &&\n      (pmVar25 = pmVar17, pmVar28 = pmVar6, phVar31 = (hgcd_matrix1 *)pmVar39,\n      iVar13 = (*(code *)apmStack_a8[0][-0x1ecb])(pmVar17), iVar13 != 0)) &&\n     ((int)pmVar39 < (int)pmVar36)) {\n    pmVar19 = pmVar17 + (int)pmVar39;\n    mVar21 = *pmVar19;\n    pmVar25 = (mp_ptr)(mVar21 - 1);\n    *pmVar19 = (mp_limb_t)pmVar25;\n    pmVar5 = pmVar39;\n    while ((mVar21 == 0 && (pmVar5 = (mp_ptr)((int)pmVar5 + 1), pmVar36 != pmVar5))) {\n      mVar21 = pmVar19[1];\n      pmVar19 = pmVar19 + 1;\n      pmVar25 = (mp_ptr)(mVar21 - 1);\n      *pmVar19 = (mp_limb_t)pmVar25;\n    }\n  }\n  if (iStack_98 != 0) {\n    (*(code *)apmStack_a8[0][-0x1e8b])();\n  }\n  pmVar5 = pmVar36;\n  if (((int)pmVar26 < (int)pmVar36) && (pmVar17[(int)pmVar36 + -1] == 0)) {\n    pmVar19 = pmVar17 + (int)pmVar36;\n    do {\n      pmVar36 = (mp_ptr)((int)pmVar36 + -1);\n      pmVar5 = pmVar26;\n      if (pmVar26 == pmVar36) break;\n      pmVar1 = pmVar19 + -2;\n      pmVar5 = pmVar36;\n      pmVar19 = pmVar19 + -1;\n    } while (*pmVar1 == 0);\n  }\n  pcVar42 = (code *)apmStack_a8[0][-0x1edc];\n  if (iStack_94 == *piVar38) {\n    return (mp_size_t)pmVar5;\n  }\n  pcVar47 = hgcd_matrix_apply;\n  iVar13 = iStack_94;\n  (*pcVar42)();\n  puVar45 = puVar43 + -0x88;\n  puVar44 = puVar43 + -0x88;\n  puVar7 = *(undefined4 **)(pcVar42 + 0x446d8);\n  *(undefined1 **)(puVar43 + -8) = auStack_c0;\n  *(mp_ptr *)(puVar43 + -0x10) = pmVar6;\n  *(undefined4 **)(puVar43 + -0x4c) = puVar7;\n  *(mp_ptr *)(puVar43 + -0x20) = pmVar26;\n  *(mp_ptr *)(puVar43 + -0x24) = pmVar17;\n  *(mp_ptr *)(puVar43 + -0x28) = pmVar36;\n  *(code **)(puVar43 + -4) = pcVar47;\n  *(mp_ptr *)(puVar43 + -0xc) = pmVar8;\n  *(hgcd_matrix **)(puVar43 + -0x14) = phVar2;\n  *(mp_ptr *)(puVar43 + -0x18) = pmVar39;\n  *(int **)(puVar43 + -0x1c) = piVar38;\n  *(code **)(puVar43 + -0x68) = pcVar42 + 0x4c1d8;\n  *(undefined4 *)(puVar43 + -0x2c) = *puVar7;\n  pmVar17 = (mp_ptr)phVar31;\n  pmVar36 = (mp_ptr)phVar31;\n  if (0 < (int)phVar31) {\n    if (pmVar25[(int)((int)phVar31 + -1)] == 0) {\n      pmVar8 = pmVar25 + (int)phVar31;\n      do {\n        pmVar36 = (mp_ptr)((int)pmVar36 + -1);\n        if (pmVar36 == (mp_ptr)0x0) break;\n        pmVar26 = pmVar8 + -2;\n        pmVar8 = pmVar8 + -1;\n      } while (*pmVar26 == 0);\n    }\n    if (pmVar28[(int)((int)phVar31 + -1)] == 0) {\n      pmVar8 = pmVar28 + (int)phVar31;\n      do {\n        pmVar17 = (mp_ptr)((int)pmVar17 + -1);\n        if (pmVar17 == (mp_ptr)0x0) break;\n        pmVar26 = pmVar8 + -2;\n        pmVar8 = pmVar8 + -1;\n      } while (*pmVar26 == 0);\n    }\n  }\n  iVar40 = *(int *)(iVar13 + 4);\n  iVar32 = 8;\n  do {\n    iVar29 = iVar32 + -8;\n    do {\n      iVar16 = iVar40;\n      if (0 < iVar40) {\n        iVar9 = *(int *)(iVar13 + iVar29 + 8);\n        iVar15 = *(int *)(iVar9 + iVar40 * 4 + -4);\n        iVar9 = iVar9 + iVar40 * 4;\n        while (iVar15 == 0) {\n          iVar16 = iVar16 + -1;\n          if (iVar16 == 0) break;\n          iVar15 = *(int *)(iVar9 + -8);\n          iVar9 = iVar9 + -4;\n        }\n      }\n      iVar9 = iVar29 + -0x3c;\n      iVar29 = iVar29 + 4;\n      *(int *)(puVar43 + iVar9) = iVar16;\n    } while (iVar32 != iVar29);\n    iVar32 = iVar32 + 8;\n    iVar29 = *(int *)(puVar43 + -0x34);\n  } while (iVar32 != 0x18);\n  iVar32 = *(int *)(puVar43 + -0x38);\n  *(undefined4 *)(puVar43 + -0x40) = 0;\n  if (iVar32 == 0) {\n    uVar46 = *(undefined4 *)(iVar13 + 0x10);\n    *(int *)(puVar43 + -0x74) = iVar29;\n    *(undefined4 *)(puVar43 + -0x78) = uVar46;\n    pmVar8 = pmVar28;\n    pmVar26 = pmVar17;\n    pmVar6 = pmVar25;\nLAB_0005309c:\n    iVar32 = submul(pmVar8,(mp_size_t)pmVar26,pmVar6,(mp_size_t)pmVar36,\n                    *(mp_srcptr *)(puVar43 + -0x78),*(mp_size_t *)(puVar43 + -0x74));\n    iVar40 = *(int *)(puVar43 + -0x68);\nLAB_000530b4:\n    pcVar42 = *(code **)(iVar40 + -0x7a2c);\n    puVar45 = puVar44;\n    if (*(int *)(puVar43 + -0x40) != 0) goto LAB_00053478;\n  }\n  else {\n    if (iVar29 == 0) {\n      uVar46 = *(undefined4 *)(iVar13 + 0xc);\n      *(int *)(puVar43 + -0x74) = iVar32;\n      *(undefined4 *)(puVar43 + -0x78) = uVar46;\n      pmVar8 = pmVar25;\n      pmVar26 = pmVar36;\n      pmVar6 = pmVar28;\n      pmVar36 = pmVar17;\n      goto LAB_0005309c;\n    }\n    iVar9 = *(int *)(puVar43 + -0x30);\n    pcVar42 = *(code **)(pcVar42 + 0x4454c);\n    iVar16 = (int)pmVar36 - *(int *)(puVar43 + -0x3c);\n    *(int *)(puVar43 + -0x50) = *(int *)(puVar43 + -0x3c);\n    *(int *)(puVar43 + -0x44) = iVar32;\n    if ((int)pmVar17 - iVar29 <= iVar16) {\n      iVar16 = (int)pmVar17 - iVar29;\n    }\n    iVar15 = (int)pmVar36 - iVar32;\n    if ((int)pmVar17 - iVar9 <= (int)pmVar36 - iVar32) {\n      iVar15 = (int)pmVar17 - iVar9;\n    }\n    iVar32 = iVar15 + 1;\n    if (iVar15 + 1 <= iVar16 + 1) {\n      iVar32 = iVar16 + 1;\n    }\n    pmVar17 = (mp_ptr)(*pcVar42)(iVar32 + 1);\n    iVar16 = (int)pmVar17 >> 1;\n    iVar15 = *(int *)(puVar43 + -0x68);\n    uVar46 = *(undefined4 *)(puVar43 + -0x44);\n    if (iVar16 < (int)pmVar17) {\n      if (iVar40 <= iVar16) {\n        uVar18 = ((int)pmVar17 * 3 + iVar16 + 4) * 4;\n        uVar3 = uVar18 + 7;\n        if (0x7f00 < uVar18) {\n          pcVar42 = *(code **)(iVar15 + -0x7d50);\n          goto LAB_0005305c;\n        }\n        goto LAB_00053148;\n      }\n      uVar18 = ((int)pmVar17 * 4 + 4) * 4;\n      uVar3 = uVar18 + 7;\n      if (uVar18 < 0x7f01) goto LAB_00053148;\n      pcVar42 = *(code **)(iVar15 + -0x7d50);\nLAB_0005305c:\n      *(mp_ptr *)(puVar43 + -0x48) = pmVar17;\n      *(undefined4 *)(puVar43 + -0x44) = uVar46;\n      pmVar35 = (mp_limb_t *)(*pcVar42)(puVar43 + -0x40);\n      iVar15 = *(int *)(puVar43 + -0x68);\n      pmVar17 = *(mp_ptr *)(puVar43 + -0x48);\n      uVar46 = *(undefined4 *)(puVar43 + -0x44);\n    }\n    else {\n      uVar3 = ((int)pmVar17 * 3 + 4) * 4;\n      pcVar42 = *(code **)(iVar15 + -0x7d50);\n      if (0x7f00 < uVar3) goto LAB_0005305c;\n      uVar3 = uVar3 + 7;\nLAB_00053148:\n      puVar45 = puVar43 + -(uVar3 & 0xfffffff8) + -0x88;\n      pmVar35 = (mp_limb_t *)(puVar43 + -(uVar3 & 0xfffffff8) + -0x68);\n    }\n    *(mp_limb_t **)(puVar43 + -0x44) = pmVar35 + (int)pmVar17;\n    *(mp_limb_t **)(puVar43 + -0x48) = pmVar35 + (int)pmVar17 + (int)pmVar17;\n    if ((int)pmVar17 < (int)phVar31) {\n      pcVar42 = *(code **)(iVar15 + -0x7d0c);\n      pmVar36 = (mp_ptr)((int)phVar31 - (int)pmVar17);\n      *(undefined4 *)(puVar43 + -0x5c) = uVar46;\n      *(mp_ptr *)(puVar43 + -0x58) = pmVar17;\n      *(int *)(puVar43 + -0x54) = (int)pmVar17 * 4;\n      iVar40 = (*pcVar42)(pmVar25,pmVar25,pmVar25 + (int)pmVar17,pmVar36);\n      iVar15 = *(int *)(puVar43 + -0x68);\n      iVar16 = *(int *)(puVar43 + -0x54);\n      pmVar17 = *(mp_ptr *)(puVar43 + -0x58);\n      uVar46 = *(undefined4 *)(puVar43 + -0x5c);\n      if (iVar40 == 0) {\nLAB_0005359c:\n        pcVar42 = *(code **)(iVar15 + -0x7d0c);\n      }\n      else {\n        pmVar8 = pmVar25;\n        if ((int)pmVar17 <= (int)pmVar36) {\nLAB_00053588:\n          do {\n            mVar21 = *pmVar8;\n            *pmVar8 = mVar21 + 1;\n            pmVar8 = pmVar8 + 1;\n          } while (mVar21 + 1 == 0);\n          goto LAB_0005359c;\n        }\n        pmVar6 = pmVar25 + (int)pmVar36;\n        mVar21 = *pmVar6;\n        *pmVar6 = mVar21 + 1;\n        pmVar26 = pmVar36;\n        if (mVar21 + 1 == 0) {\n          do {\n            pmVar26 = (mp_ptr)((int)pmVar26 + 1);\n            if (pmVar17 == pmVar26) goto LAB_00053588;\n            mVar21 = pmVar6[1];\n            pmVar6 = pmVar6 + 1;\n            *pmVar6 = mVar21 + 1;\n          } while (mVar21 + 1 == 0);\n          goto LAB_0005359c;\n        }\n        pcVar42 = *(code **)(iVar15 + -0x7d0c);\n      }\n      *(mp_ptr *)(puVar43 + -0x58) = pmVar17;\n      *(undefined4 *)(puVar43 + -0x54) = uVar46;\n      iVar40 = (*pcVar42)(pmVar28,pmVar28,(int)pmVar28 + iVar16,pmVar36);\n      iVar15 = *(int *)(puVar43 + -0x68);\n      uVar46 = *(undefined4 *)(puVar43 + -0x54);\n      pmVar17 = *(mp_ptr *)(puVar43 + -0x58);\n      phVar31 = (hgcd_matrix1 *)pmVar17;\n      if (iVar40 != 0) {\n        pmVar8 = pmVar28;\n        if ((int)pmVar36 < (int)pmVar17) {\n          pmVar11 = pmVar28 + (int)pmVar36;\n          mVar21 = *pmVar11 + 1;\n          *pmVar11 = mVar21;\n          while (mVar21 == 0) {\n            pmVar36 = (mp_ptr)((int)pmVar36 + 1);\n            if (pmVar17 == pmVar36) goto LAB_0005361c;\n            pmVar22 = pmVar11 + 1;\n            pmVar11 = pmVar11 + 1;\n            mVar21 = *pmVar22 + 1;\n            *pmVar11 = mVar21;\n          }\n        }\n        else {\nLAB_0005361c:\n          do {\n            mVar21 = *pmVar8;\n            *pmVar8 = mVar21 + 1;\n            pmVar8 = pmVar8 + 1;\n          } while (mVar21 + 1 == 0);\n        }\n      }\n    }\n    uVar10 = *(undefined4 *)(iVar13 + 0x14);\n    pcVar42 = *(code **)(iVar15 + -0x7cd8);\n    *(undefined4 *)(puVar43 + -0x5c) = uVar46;\n    *(mp_ptr *)(puVar43 + -0x54) = pmVar17;\n    *(undefined4 *)(puVar45 + 0x18) = *(undefined4 *)(puVar43 + -0x48);\n    *(undefined4 *)(puVar45 + 0x10) = uVar10;\n    *(int *)(puVar45 + 0x14) = iVar9;\n    (*pcVar42)(pmVar35,pmVar17,pmVar25,phVar31);\n    uVar46 = *(undefined4 *)(iVar13 + 0xc);\n    uVar33 = *(undefined4 *)(puVar43 + -0x54);\n    uVar34 = *(undefined4 *)(puVar43 + -0x5c);\n    uVar10 = *(undefined4 *)(puVar43 + -0x48);\n    pcVar42 = *(code **)(*(int *)(puVar43 + -0x68) + -0x7cd8);\n    uVar20 = *(undefined4 *)(puVar43 + -0x44);\n    *(undefined4 *)(puVar43 + -0x58) = uVar33;\n    *(undefined4 *)(puVar45 + 0x14) = uVar34;\n    *(undefined4 *)(puVar43 + -0x54) = uVar34;\n    *(undefined4 *)(puVar45 + 0x10) = uVar46;\n    *(undefined4 *)(puVar45 + 0x18) = uVar10;\n    (*pcVar42)(uVar20,uVar33,pmVar28,phVar31);\n    iVar40 = *(int *)(puVar43 + -0x58);\n    iVar15 = *(int *)(puVar43 + -0x68);\n    iVar16 = *(int *)(puVar43 + -0x54);\n    if ((iVar9 + (int)phVar31 < iVar40) && (iVar9 != iVar40 - (int)phVar31)) {\n      iVar41 = (iVar40 - (int)phVar31) - iVar9;\n      pmVar11 = pmVar35 + (int)(iVar9 + (int)phVar31);\n      do {\n        iVar41 = iVar41 + -1;\n        *pmVar11 = 0;\n        pmVar11 = pmVar11 + 1;\n      } while (iVar41 != 0);\n    }\n    pcVar42 = *(code **)(iVar15 + -0x7b2c);\n    if (iVar16 + (int)phVar31 < iVar40) {\n      if (iVar16 != iVar40 - (int)phVar31) {\n        iVar9 = (iVar40 - (int)phVar31) - iVar16;\n        puVar7 = (undefined4 *)(*(int *)(puVar43 + -0x44) + (int)(iVar16 + (int)phVar31) * 4);\n        do {\n          iVar9 = iVar9 + -1;\n          *puVar7 = 0;\n          puVar7 = puVar7 + 1;\n        } while (iVar9 != 0);\n        pcVar42 = *(code **)(iVar15 + -0x7b2c);\n      }\n    }\n    *(int *)(puVar43 + -0x54) = iVar40;\n    uVar3 = (*pcVar42)(pmVar35,pmVar35,*(undefined4 *)(puVar43 + -0x44),iVar40);\n    uVar18 = *pmVar35;\n    iVar40 = *(int *)(puVar43 + -0x68);\n    uVar46 = *(undefined4 *)(puVar43 + -0x54);\n    *pmVar35 = uVar18 - uVar3;\n    pmVar11 = pmVar35;\n    if (uVar18 < uVar3) {\n      do {\n        pmVar11 = pmVar11 + 1;\n        mVar21 = *pmVar11;\n        *pmVar11 = mVar21 - 1;\n      } while (mVar21 == 0);\n    }\n    uVar10 = *(undefined4 *)(iVar13 + 0x10);\n    pcVar42 = *(code **)(iVar40 + -0x7cd8);\n    uVar20 = *(undefined4 *)(puVar43 + -0x44);\n    *(undefined4 *)(puVar43 + -0x54) = uVar46;\n    *(undefined4 *)(puVar45 + 0x18) = *(undefined4 *)(puVar43 + -0x48);\n    *(int *)(puVar45 + 0x14) = iVar29;\n    *(undefined4 *)(puVar45 + 0x10) = uVar10;\n    (*pcVar42)(uVar20,uVar46,pmVar25,phVar31);\n    iVar40 = *(int *)(puVar43 + -0x68);\n    uVar46 = *(undefined4 *)(puVar43 + -0x54);\n    if (iVar32 != 0) {\n      iVar16 = iVar32 + -1;\n      mVar21 = *pmVar35;\n      pmVar22 = pmVar25;\n      pmVar11 = pmVar35;\n      if (iVar16 == 0) {\n        *pmVar25 = mVar21;\n      }\n      else {\n        do {\n          *pmVar22 = mVar21;\n          iVar16 = iVar16 + -1;\n          mVar21 = pmVar11[1];\n          pmVar22 = pmVar22 + 1;\n          pmVar11 = pmVar11 + 1;\n        } while (iVar16 != 0);\n        pmVar25[iVar32 + -1] = mVar21;\n      }\n    }\n    uVar10 = *(undefined4 *)(iVar13 + 8);\n    pcVar42 = *(code **)(iVar40 + -0x7cd8);\n    *(undefined4 *)(puVar45 + 0x18) = *(undefined4 *)(puVar43 + -0x48);\n    *(undefined4 *)(puVar43 + -0x48) = uVar46;\n    *(undefined4 *)(puVar45 + 0x10) = uVar10;\n    *(undefined4 *)(puVar45 + 0x14) = *(undefined4 *)(puVar43 + -0x50);\n    (*pcVar42)(pmVar35,uVar46,pmVar28,phVar31);\n    iVar40 = *(int *)(puVar43 + -0x48);\n    iVar16 = *(int *)(puVar43 + -0x68);\n    if ((int)phVar31 + iVar29 < iVar40) {\n      if (iVar29 != iVar40 - (int)phVar31) {\n        iVar9 = (iVar40 - (int)phVar31) - iVar29;\n        puVar7 = (undefined4 *)(*(int *)(puVar43 + -0x44) + (int)((int)phVar31 + iVar29) * 4);\n        do {\n          iVar9 = iVar9 + -1;\n          *puVar7 = 0;\n          puVar7 = puVar7 + 1;\n        } while (iVar9 != 0);\n      }\n    }\n    pcVar42 = *(code **)(iVar16 + -0x7b2c);\n    if (*(int *)(puVar43 + -0x50) + (int)phVar31 < iVar40) {\n      if (*(int *)(puVar43 + -0x50) != iVar40 - (int)phVar31) {\n        iVar29 = (iVar40 - (int)phVar31) - *(int *)(puVar43 + -0x50);\n        pmVar11 = pmVar35 + (int)(*(int *)(puVar43 + -0x50) + (int)phVar31);\n        do {\n          iVar29 = iVar29 + -1;\n          *pmVar11 = 0;\n          pmVar11 = pmVar11 + 1;\n        } while (iVar29 != 0);\n        pcVar42 = *(code **)(iVar16 + -0x7b2c);\n      }\n    }\n    uVar3 = (*pcVar42)(pmVar35,pmVar35,*(undefined4 *)(puVar43 + -0x44),iVar40);\n    uVar18 = *pmVar35;\n    iVar40 = *(int *)(puVar43 + -0x68);\n    pmVar26 = (mp_ptr)(uVar18 - uVar3);\n    *pmVar35 = (mp_limb_t)pmVar26;\n    pmVar11 = pmVar35;\n    if (uVar18 < uVar3) {\n      do {\n        pmVar11 = pmVar11 + 1;\n        mVar21 = *pmVar11;\n        pmVar26 = (mp_ptr)(mVar21 - 1);\n        *pmVar11 = (mp_limb_t)pmVar26;\n      } while (mVar21 == 0);\n    }\n    iVar29 = iVar32 + -1;\n    if (iVar32 == 0) {\n      iVar29 = -4;\n    }\n    else {\n      pmVar26 = (mp_ptr)*pmVar35;\n      pmVar17 = pmVar28;\n      if (iVar29 != 0) {\n        do {\n          pmVar35 = pmVar35 + 1;\n          *pmVar17 = (mp_limb_t)pmVar26;\n          iVar29 = iVar29 + -1;\n          pmVar26 = (mp_ptr)*pmVar35;\n          pmVar17 = pmVar17 + 1;\n        } while (iVar29 != 0);\n        pmVar17 = pmVar28 + iVar32 + -1;\n      }\n      *pmVar17 = (mp_limb_t)pmVar26;\n      iVar29 = iVar32 * 4 + -4;\n    }\n    puVar44 = puVar45;\n    if (*(int *)((int)pmVar25 + iVar29) != 0 || *(int *)((int)pmVar28 + iVar29) != 0)\n    goto LAB_000530b4;\n    pmVar25 = pmVar25 + iVar32 + -2;\n    pmVar28 = pmVar28 + iVar32 + -2;\n    do {\n      mVar21 = *pmVar25;\n      iVar32 = iVar32 + -1;\n      mVar23 = *pmVar28;\n      pmVar25 = pmVar25 + -1;\n      pmVar28 = pmVar28 + -1;\n    } while (mVar21 == 0 && mVar23 == 0);\n    piVar38 = *(int **)(puVar43 + -0x4c);\n    if (*(int *)(puVar43 + -0x40) == 0) goto LAB_000530c4;\n    pcVar42 = *(code **)(iVar40 + -0x7a2c);\nLAB_00053478:\n    (*pcVar42)();\n    iVar40 = *(int *)(puVar43 + -0x68);\n    puVar45 = puVar44;\n  }\n  piVar38 = *(int **)(puVar43 + -0x4c);\nLAB_000530c4:\n  iVar29 = *(int *)(puVar43 + -0x2c);\n  pcVar42 = *(code **)(iVar40 + -0x7b70);\n  if (iVar29 == *piVar38) {\n    return iVar32;\n  }\n  pcVar48 = __gmpn_hgcd_reduce_itch;\n  (*pcVar42)();\n  pcVar47 = *(code **)(pcVar42 + 0x43e08);\n  *(mp_ptr *)(puVar45 + -0xc) = pmVar28;\n  *(int *)(puVar45 + -8) = iVar13;\n  *(mp_ptr *)(puVar45 + -0x10) = pmVar25;\n  *(code **)(puVar45 + -0x18) = pcVar42 + 0x4b9e4;\n  *(code **)(puVar45 + -4) = pcVar48;\n  puVar12 = (undefined *)(*pcVar47)(iVar29 - (int)pmVar26);\n  if (999 < iVar29) {\n    return (mp_size_t)(puVar12 + (iVar29 - (int)pmVar26) * 2);\n  }\n  puVar37 = (undefined *)((int)pmVar26 + iVar29 + -1);\n  if ((int)puVar12 <= (int)puVar37) {\n    puVar12 = puVar37;\n  }\n  return (mp_size_t)puVar12;\n}" { (declaration "mp_ptr pmVar1;" type_identifier identifier ;) (declaration "hgcd_matrix *phVar2;" type_identifier (pointer_declarator "*phVar2" * identifier) ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "mp_size_t mVar4;" type_identifier identifier ;) (declaration "mp_ptr pmVar5;" type_identifier identifier ;) (declaration "mp_ptr pmVar6;" type_identifier identifier ;) (declaration "undefined4 *puVar7;" type_identifier (pointer_declarator "*puVar7" * identifier) ;) (declaration "mp_ptr pmVar8;" type_identifier identifier ;) (declaration "int iVar9;" primitive_type identifier ;) (declaration "undefined4 uVar10;" type_identifier identifier ;) (declaration "mp_limb_t *pmVar11;" type_identifier (pointer_declarator "*pmVar11" * identifier) ;) (declaration "undefined *puVar12;" type_identifier (pointer_declarator "*puVar12" * identifier) ;) (declaration "int iVar13;" primitive_type identifier ;) (declaration "uint uVar14;" type_identifier identifier ;) (declaration "int iVar15;" primitive_type identifier ;) (declaration "int iVar16;" primitive_type identifier ;) (declaration "mp_ptr pmVar17;" type_identifier identifier ;) (declaration "uint uVar18;" type_identifier identifier ;) (declaration "mp_ptr pmVar19;" type_identifier identifier ;) (declaration "undefined4 uVar20;" type_identifier identifier ;) (declaration "mp_limb_t mVar21;" type_identifier identifier ;) (declaration "mp_limb_t *pmVar22;" type_identifier (pointer_declarator "*pmVar22" * identifier) ;) (declaration "mp_limb_t mVar23;" type_identifier identifier ;) (declaration "uint uVar24;" type_identifier identifier ;) (declaration "mp_ptr pmVar25;" type_identifier identifier ;) (declaration "mp_ptr pmVar26;" type_identifier identifier ;) (declaration "uint uVar27;" type_identifier identifier ;) (declaration "mp_ptr pmVar28;" type_identifier identifier ;) (declaration "int iVar29;" primitive_type identifier ;) (declaration "uint uVar30;" type_identifier identifier ;) (declaration "hgcd_matrix1 *phVar31;" type_identifier (pointer_declarator "*phVar31" * identifier) ;) (declaration "int iVar32;" primitive_type identifier ;) (declaration "undefined4 uVar33;" type_identifier identifier ;) (declaration "undefined4 uVar34;" type_identifier identifier ;) (declaration "mp_limb_t *pmVar35;" type_identifier (pointer_declarator "*pmVar35" * identifier) ;) (declaration "mp_ptr pmVar36;" type_identifier identifier ;) (declaration "undefined *puVar37;" type_identifier (pointer_declarator "*puVar37" * identifier) ;) (declaration "int *piVar38;" primitive_type (pointer_declarator "*piVar38" * identifier) ;) (declaration "mp_ptr pmVar39;" type_identifier identifier ;) (declaration "int iVar40;" primitive_type identifier ;) (declaration "hgcd_matrix1 *unaff_s5;" type_identifier (pointer_declarator "*unaff_s5" * identifier) ;) (declaration "int iVar41;" primitive_type identifier ;) (declaration "code *pcVar42;" type_identifier (pointer_declarator "*pcVar42" * identifier) ;) (declaration "undefined1 *puVar43;" type_identifier (pointer_declarator "*puVar43" * identifier) ;) (declaration "undefined1 *puVar44;" type_identifier (pointer_declarator "*puVar44" * identifier) ;) (declaration "undefined1 *puVar45;" type_identifier (pointer_declarator "*puVar45" * identifier) ;) (declaration "undefined4 uVar46;" type_identifier identifier ;) (declaration "code *pcVar47;" type_identifier (pointer_declarator "*pcVar47" * identifier) ;) (declaration "code *pcVar48;" type_identifier (pointer_declarator "*pcVar48" * identifier) ;) (declaration "undefined1 auStack_c0 [24];" type_identifier (array_declarator "auStack_c0 [24]" identifier [ number_literal ]) ;) (declaration "mp_ptr apmStack_a8 [4];" type_identifier (array_declarator "apmStack_a8 [4]" identifier [ number_literal ]) ;) (declaration "int iStack_98;" primitive_type identifier ;) (declaration "int iStack_94;" primitive_type identifier ;) (declaration "mp_limb_t *pmStack_90;" type_identifier (pointer_declarator "*pmStack_90" * identifier) ;) (declaration "undefined *puStack_8c;" type_identifier (pointer_declarator "*puStack_8c" * identifier) ;) (declaration "mp_ptr pmStack_88;" type_identifier identifier ;) (declaration "mp_ptr pmStack_84;" type_identifier identifier ;) (declaration "mp_size_t mStack_80;" type_identifier identifier ;) (declaration "hgcd_matrix1 *phStack_7c;" type_identifier (pointer_declarator "*phStack_7c" * identifier) ;) (declaration "mp_size_t mStack_78;" type_identifier identifier ;) (declaration "mp_ptr pmStack_74;" type_identifier identifier ;) (declaration "hgcd_matrix *phStack_70;" type_identifier (pointer_declarator "*phStack_70" * identifier) ;) (declaration "undefined4 uStack_6c;" type_identifier identifier ;) (declaration "hgcd_matrix1 *local_58;" type_identifier (pointer_declarator "*local_58" * identifier) ;) (declaration "hgcd_matrix *local_54;" type_identifier (pointer_declarator "*local_54" * identifier) ;) (declaration "mp_ptr local_50;" type_identifier identifier ;) (declaration "hgcd_matrix1 M1;" type_identifier identifier ;) (expression_statement "puVar12 = PTR___stack_chk_guard_00097540;" (assignment_expression "puVar12 = PTR___stack_chk_guard_00097540" identifier = identifier) ;) (expression_statement "pmVar35 = (mp_limb_t *)(n * 4 + -4);" (assignment_expression "pmVar35 = (mp_limb_t *)(n * 4 + -4)" identifier = (cast_expression "(mp_limb_t *)(n * 4 + -4)" ( (type_descriptor "mp_limb_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(n * 4 + -4)" ( (binary_expression "n * 4 + -4" (binary_expression "n * 4" identifier * number_literal) + number_literal) )))) ;) (expression_statement "pmVar17 = *(mp_ptr *)PTR___stack_chk_guard_00097540;" (assignment_expression "pmVar17 = *(mp_ptr *)PTR___stack_chk_guard_00097540" identifier = (pointer_expression "*(mp_ptr *)PTR___stack_chk_guard_00097540" * (cast_expression "(mp_ptr *)PTR___stack_chk_guard_00097540" ( (type_descriptor "mp_ptr *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "uVar27 = bp[n + -1];" (assignment_expression "uVar27 = bp[n + -1]" identifier = (subscript_expression "bp[n + -1]" identifier [ (binary_expression "n + -1" identifier + number_literal) ])) ;) (expression_statement "uVar18 = ap[n + -1];" (assignment_expression "uVar18 = ap[n + -1]" identifier = (subscript_expression "ap[n + -1]" identifier [ (binary_expression "n + -1" identifier + number_literal) ])) ;) (expression_statement "uVar3 = uVar18 | uVar27;" (assignment_expression "uVar3 = uVar18 | uVar27" identifier = (binary_expression "uVar18 | uVar27" identifier | identifier)) ;) (if_statement "if (s + 1 == n) {\n    if (3 < uVar3) {\n      unaff_s5 = &M1;\n      local_58 = unaff_s5;\n      iVar13 = (*(code *)PTR___gmpn_hgcd2_00097460)(uVar18,ap[n + -2],uVar27,bp[n + -2]);\n      if (iVar13 != 0) goto LAB_00052bb8;\n    }\nLAB_00052b18:\n    local_50 = tp;\n    local_58 = (hgcd_matrix1 *)(PTR_LAB_0009707c + 0x2960);\n    local_54 = M;\n    pmVar36 = bp;\n    pmVar8 = (mp_ptr)n;\n    pmVar26 = (mp_ptr)s;\n    mVar4 = (*(code *)PTR___gmpn_gcd_subdiv_step_00097118)(ap);\n  }\n  else {\n    uVar24 = ap[n + -2];\n    uVar30 = bp[n + -2];\n    if (-1 < (int)uVar3) {\n      if (uVar3 < 0x10000) {\n        iVar13 = 0x18;\n        if (uVar3 < 0x100) {\n          iVar13 = 0;\n        }\n        iVar32 = 9;\n        if (uVar3 < 0x100) {\n          iVar32 = 1;\n        }\n      }\n      else {\n        iVar13 = 8;\n        if (uVar3 < 0x1000000) {\n          iVar13 = 0x10;\n        }\n        iVar32 = 0x19;\n        if (uVar3 < 0x1000000) {\n          iVar32 = 0x11;\n        }\n      }\n      uVar3 = iVar13 - (uint)(byte)PTR___gmpn_clz_tab_0009718c[uVar3 >> iVar32];\n      uVar14 = 0x20 - uVar3;\n      uVar18 = uVar18 << (uVar3 & 0x1f) | uVar24 >> (uVar14 & 0x1f);\n      uVar24 = ap[n + -3] >> (uVar14 & 0x1f) | uVar24 << (uVar3 & 0x1f);\n      uVar27 = uVar27 << (uVar3 & 0x1f) | uVar30 >> (uVar14 & 0x1f);\n      uVar30 = bp[n + -3] >> (uVar14 & 0x1f) | uVar30 << (uVar3 & 0x1f);\n    }\n    unaff_s5 = &M1;\n    local_58 = unaff_s5;\n    iVar13 = (*(code *)PTR___gmpn_hgcd2_00097460)(uVar18,uVar24,uVar27,uVar30);\n    if (iVar13 == 0) goto LAB_00052b18;\nLAB_00052bb8:\n    unaff_s5 = &M1;\n    (*(code *)PTR___gmpn_hgcd_matrix_mul_1_000973f4)(M,unaff_s5,tp);\n    if (n != 0) {\n      iVar13 = n + -1;\n      mVar21 = *ap;\n      if (iVar13 == 0) {\n        *tp = mVar21;\n        pmVar35 = tp;\n      }\n      else {\n        pmVar36 = tp;\n        pmVar35 = ap + 1;\n        do {\n          *pmVar36 = mVar21;\n          iVar13 = iVar13 + -1;\n          mVar21 = *pmVar35;\n          pmVar36 = pmVar36 + 1;\n          pmVar35 = pmVar35 + 1;\n        } while (iVar13 != 0);\n        tp[n + -1] = mVar21;\n        pmVar35 = tp + n + -1;\n      }\n    }\n    pmVar36 = ap;\n    pmVar8 = tp;\n    pmVar26 = bp;\n    local_58 = (hgcd_matrix1 *)n;\n    mVar4 = (*(code *)PTR___gmpn_matrix22_mul1_inverse_vector_00097488)(unaff_s5);\n  }" if (parenthesized_expression "(s + 1 == n)" ( (binary_expression "s + 1 == n" (binary_expression "s + 1" identifier + number_literal) == identifier) )) (compound_statement "{\n    if (3 < uVar3) {\n      unaff_s5 = &M1;\n      local_58 = unaff_s5;\n      iVar13 = (*(code *)PTR___gmpn_hgcd2_00097460)(uVar18,ap[n + -2],uVar27,bp[n + -2]);\n      if (iVar13 != 0) goto LAB_00052bb8;\n    }\nLAB_00052b18:\n    local_50 = tp;\n    local_58 = (hgcd_matrix1 *)(PTR_LAB_0009707c + 0x2960);\n    local_54 = M;\n    pmVar36 = bp;\n    pmVar8 = (mp_ptr)n;\n    pmVar26 = (mp_ptr)s;\n    mVar4 = (*(code *)PTR___gmpn_gcd_subdiv_step_00097118)(ap);\n  }" { (if_statement "if (3 < uVar3) {\n      unaff_s5 = &M1;\n      local_58 = unaff_s5;\n      iVar13 = (*(code *)PTR___gmpn_hgcd2_00097460)(uVar18,ap[n + -2],uVar27,bp[n + -2]);\n      if (iVar13 != 0) goto LAB_00052bb8;\n    }" if (parenthesized_expression "(3 < uVar3)" ( (binary_expression "3 < uVar3" number_literal < identifier) )) (compound_statement "{\n      unaff_s5 = &M1;\n      local_58 = unaff_s5;\n      iVar13 = (*(code *)PTR___gmpn_hgcd2_00097460)(uVar18,ap[n + -2],uVar27,bp[n + -2]);\n      if (iVar13 != 0) goto LAB_00052bb8;\n    }" { (expression_statement "unaff_s5 = &M1;" (assignment_expression "unaff_s5 = &M1" identifier = (pointer_expression "&M1" & identifier)) ;) (expression_statement "local_58 = unaff_s5;" (assignment_expression "local_58 = unaff_s5" identifier = identifier) ;) (expression_statement "iVar13 = (*(code *)PTR___gmpn_hgcd2_00097460)(uVar18,ap[n + -2],uVar27,bp[n + -2]);" (assignment_expression "iVar13 = (*(code *)PTR___gmpn_hgcd2_00097460)(uVar18,ap[n + -2],uVar27,bp[n + -2])" identifier = (call_expression "(*(code *)PTR___gmpn_hgcd2_00097460)(uVar18,ap[n + -2],uVar27,bp[n + -2])" (parenthesized_expression "(*(code *)PTR___gmpn_hgcd2_00097460)" ( (pointer_expression "*(code *)PTR___gmpn_hgcd2_00097460" * (cast_expression "(code *)PTR___gmpn_hgcd2_00097460" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(uVar18,ap[n + -2],uVar27,bp[n + -2])" ( identifier , (subscript_expression "ap[n + -2]" identifier [ (binary_expression "n + -2" identifier + number_literal) ]) , identifier , (subscript_expression "bp[n + -2]" identifier [ (binary_expression "n + -2" identifier + number_literal) ]) )))) ;) (if_statement "if (iVar13 != 0) goto LAB_00052bb8;" if (parenthesized_expression "(iVar13 != 0)" ( (binary_expression "iVar13 != 0" identifier != number_literal) )) (goto_statement "goto LAB_00052bb8;" goto statement_identifier ;)) })) (labeled_statement "LAB_00052b18:\n    local_50 = tp;" statement_identifier : (expression_statement "local_50 = tp;" (assignment_expression "local_50 = tp" identifier = identifier) ;)) (expression_statement "local_58 = (hgcd_matrix1 *)(PTR_LAB_0009707c + 0x2960);" (assignment_expression "local_58 = (hgcd_matrix1 *)(PTR_LAB_0009707c + 0x2960)" identifier = (cast_expression "(hgcd_matrix1 *)(PTR_LAB_0009707c + 0x2960)" ( (type_descriptor "hgcd_matrix1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_0009707c + 0x2960)" ( (binary_expression "PTR_LAB_0009707c + 0x2960" identifier + number_literal) )))) ;) (expression_statement "local_54 = M;" (assignment_expression "local_54 = M" identifier = identifier) ;) (expression_statement "pmVar36 = bp;" (assignment_expression "pmVar36 = bp" identifier = identifier) ;) (expression_statement "pmVar8 = (mp_ptr)n;" (assignment_expression "pmVar8 = (mp_ptr)n" identifier = (cast_expression "(mp_ptr)n" ( (type_descriptor "mp_ptr" type_identifier) ) identifier)) ;) (expression_statement "pmVar26 = (mp_ptr)s;" (assignment_expression "pmVar26 = (mp_ptr)s" identifier = (cast_expression "(mp_ptr)s" ( (type_descriptor "mp_ptr" type_identifier) ) identifier)) ;) (expression_statement "mVar4 = (*(code *)PTR___gmpn_gcd_subdiv_step_00097118)(ap);" (assignment_expression "mVar4 = (*(code *)PTR___gmpn_gcd_subdiv_step_00097118)(ap)" identifier = (call_expression "(*(code *)PTR___gmpn_gcd_subdiv_step_00097118)(ap)" (parenthesized_expression "(*(code *)PTR___gmpn_gcd_subdiv_step_00097118)" ( (pointer_expression "*(code *)PTR___gmpn_gcd_subdiv_step_00097118" * (cast_expression "(code *)PTR___gmpn_gcd_subdiv_step_00097118" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(ap)" ( identifier )))) ;) }) (else_clause "else {\n    uVar24 = ap[n + -2];\n    uVar30 = bp[n + -2];\n    if (-1 < (int)uVar3) {\n      if (uVar3 < 0x10000) {\n        iVar13 = 0x18;\n        if (uVar3 < 0x100) {\n          iVar13 = 0;\n        }\n        iVar32 = 9;\n        if (uVar3 < 0x100) {\n          iVar32 = 1;\n        }\n      }\n      else {\n        iVar13 = 8;\n        if (uVar3 < 0x1000000) {\n          iVar13 = 0x10;\n        }\n        iVar32 = 0x19;\n        if (uVar3 < 0x1000000) {\n          iVar32 = 0x11;\n        }\n      }\n      uVar3 = iVar13 - (uint)(byte)PTR___gmpn_clz_tab_0009718c[uVar3 >> iVar32];\n      uVar14 = 0x20 - uVar3;\n      uVar18 = uVar18 << (uVar3 & 0x1f) | uVar24 >> (uVar14 & 0x1f);\n      uVar24 = ap[n + -3] >> (uVar14 & 0x1f) | uVar24 << (uVar3 & 0x1f);\n      uVar27 = uVar27 << (uVar3 & 0x1f) | uVar30 >> (uVar14 & 0x1f);\n      uVar30 = bp[n + -3] >> (uVar14 & 0x1f) | uVar30 << (uVar3 & 0x1f);\n    }\n    unaff_s5 = &M1;\n    local_58 = unaff_s5;\n    iVar13 = (*(code *)PTR___gmpn_hgcd2_00097460)(uVar18,uVar24,uVar27,uVar30);\n    if (iVar13 == 0) goto LAB_00052b18;\nLAB_00052bb8:\n    unaff_s5 = &M1;\n    (*(code *)PTR___gmpn_hgcd_matrix_mul_1_000973f4)(M,unaff_s5,tp);\n    if (n != 0) {\n      iVar13 = n + -1;\n      mVar21 = *ap;\n      if (iVar13 == 0) {\n        *tp = mVar21;\n        pmVar35 = tp;\n      }\n      else {\n        pmVar36 = tp;\n        pmVar35 = ap + 1;\n        do {\n          *pmVar36 = mVar21;\n          iVar13 = iVar13 + -1;\n          mVar21 = *pmVar35;\n          pmVar36 = pmVar36 + 1;\n          pmVar35 = pmVar35 + 1;\n        } while (iVar13 != 0);\n        tp[n + -1] = mVar21;\n        pmVar35 = tp + n + -1;\n      }\n    }\n    pmVar36 = ap;\n    pmVar8 = tp;\n    pmVar26 = bp;\n    local_58 = (hgcd_matrix1 *)n;\n    mVar4 = (*(code *)PTR___gmpn_matrix22_mul1_inverse_vector_00097488)(unaff_s5);\n  }" else (compound_statement "{\n    uVar24 = ap[n + -2];\n    uVar30 = bp[n + -2];\n    if (-1 < (int)uVar3) {\n      if (uVar3 < 0x10000) {\n        iVar13 = 0x18;\n        if (uVar3 < 0x100) {\n          iVar13 = 0;\n        }\n        iVar32 = 9;\n        if (uVar3 < 0x100) {\n          iVar32 = 1;\n        }\n      }\n      else {\n        iVar13 = 8;\n        if (uVar3 < 0x1000000) {\n          iVar13 = 0x10;\n        }\n        iVar32 = 0x19;\n        if (uVar3 < 0x1000000) {\n          iVar32 = 0x11;\n        }\n      }\n      uVar3 = iVar13 - (uint)(byte)PTR___gmpn_clz_tab_0009718c[uVar3 >> iVar32];\n      uVar14 = 0x20 - uVar3;\n      uVar18 = uVar18 << (uVar3 & 0x1f) | uVar24 >> (uVar14 & 0x1f);\n      uVar24 = ap[n + -3] >> (uVar14 & 0x1f) | uVar24 << (uVar3 & 0x1f);\n      uVar27 = uVar27 << (uVar3 & 0x1f) | uVar30 >> (uVar14 & 0x1f);\n      uVar30 = bp[n + -3] >> (uVar14 & 0x1f) | uVar30 << (uVar3 & 0x1f);\n    }\n    unaff_s5 = &M1;\n    local_58 = unaff_s5;\n    iVar13 = (*(code *)PTR___gmpn_hgcd2_00097460)(uVar18,uVar24,uVar27,uVar30);\n    if (iVar13 == 0) goto LAB_00052b18;\nLAB_00052bb8:\n    unaff_s5 = &M1;\n    (*(code *)PTR___gmpn_hgcd_matrix_mul_1_000973f4)(M,unaff_s5,tp);\n    if (n != 0) {\n      iVar13 = n + -1;\n      mVar21 = *ap;\n      if (iVar13 == 0) {\n        *tp = mVar21;\n        pmVar35 = tp;\n      }\n      else {\n        pmVar36 = tp;\n        pmVar35 = ap + 1;\n        do {\n          *pmVar36 = mVar21;\n          iVar13 = iVar13 + -1;\n          mVar21 = *pmVar35;\n          pmVar36 = pmVar36 + 1;\n          pmVar35 = pmVar35 + 1;\n        } while (iVar13 != 0);\n        tp[n + -1] = mVar21;\n        pmVar35 = tp + n + -1;\n      }\n    }\n    pmVar36 = ap;\n    pmVar8 = tp;\n    pmVar26 = bp;\n    local_58 = (hgcd_matrix1 *)n;\n    mVar4 = (*(code *)PTR___gmpn_matrix22_mul1_inverse_vector_00097488)(unaff_s5);\n  }" { (expression_statement "uVar24 = ap[n + -2];" (assignment_expression "uVar24 = ap[n + -2]" identifier = (subscript_expression "ap[n + -2]" identifier [ (binary_expression "n + -2" identifier + number_literal) ])) ;) (expression_statement "uVar30 = bp[n + -2];" (assignment_expression "uVar30 = bp[n + -2]" identifier = (subscript_expression "bp[n + -2]" identifier [ (binary_expression "n + -2" identifier + number_literal) ])) ;) (if_statement "if (-1 < (int)uVar3) {\n      if (uVar3 < 0x10000) {\n        iVar13 = 0x18;\n        if (uVar3 < 0x100) {\n          iVar13 = 0;\n        }\n        iVar32 = 9;\n        if (uVar3 < 0x100) {\n          iVar32 = 1;\n        }\n      }\n      else {\n        iVar13 = 8;\n        if (uVar3 < 0x1000000) {\n          iVar13 = 0x10;\n        }\n        iVar32 = 0x19;\n        if (uVar3 < 0x1000000) {\n          iVar32 = 0x11;\n        }\n      }\n      uVar3 = iVar13 - (uint)(byte)PTR___gmpn_clz_tab_0009718c[uVar3 >> iVar32];\n      uVar14 = 0x20 - uVar3;\n      uVar18 = uVar18 << (uVar3 & 0x1f) | uVar24 >> (uVar14 & 0x1f);\n      uVar24 = ap[n + -3] >> (uVar14 & 0x1f) | uVar24 << (uVar3 & 0x1f);\n      uVar27 = uVar27 << (uVar3 & 0x1f) | uVar30 >> (uVar14 & 0x1f);\n      uVar30 = bp[n + -3] >> (uVar14 & 0x1f) | uVar30 << (uVar3 & 0x1f);\n    }" if (parenthesized_expression "(-1 < (int)uVar3)" ( (binary_expression "-1 < (int)uVar3" number_literal < (cast_expression "(int)uVar3" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n      if (uVar3 < 0x10000) {\n        iVar13 = 0x18;\n        if (uVar3 < 0x100) {\n          iVar13 = 0;\n        }\n        iVar32 = 9;\n        if (uVar3 < 0x100) {\n          iVar32 = 1;\n        }\n      }\n      else {\n        iVar13 = 8;\n        if (uVar3 < 0x1000000) {\n          iVar13 = 0x10;\n        }\n        iVar32 = 0x19;\n        if (uVar3 < 0x1000000) {\n          iVar32 = 0x11;\n        }\n      }\n      uVar3 = iVar13 - (uint)(byte)PTR___gmpn_clz_tab_0009718c[uVar3 >> iVar32];\n      uVar14 = 0x20 - uVar3;\n      uVar18 = uVar18 << (uVar3 & 0x1f) | uVar24 >> (uVar14 & 0x1f);\n      uVar24 = ap[n + -3] >> (uVar14 & 0x1f) | uVar24 << (uVar3 & 0x1f);\n      uVar27 = uVar27 << (uVar3 & 0x1f) | uVar30 >> (uVar14 & 0x1f);\n      uVar30 = bp[n + -3] >> (uVar14 & 0x1f) | uVar30 << (uVar3 & 0x1f);\n    }" { (if_statement "if (uVar3 < 0x10000) {\n        iVar13 = 0x18;\n        if (uVar3 < 0x100) {\n          iVar13 = 0;\n        }\n        iVar32 = 9;\n        if (uVar3 < 0x100) {\n          iVar32 = 1;\n        }\n      }\n      else {\n        iVar13 = 8;\n        if (uVar3 < 0x1000000) {\n          iVar13 = 0x10;\n        }\n        iVar32 = 0x19;\n        if (uVar3 < 0x1000000) {\n          iVar32 = 0x11;\n        }\n      }" if (parenthesized_expression "(uVar3 < 0x10000)" ( (binary_expression "uVar3 < 0x10000" identifier < number_literal) )) (compound_statement "{\n        iVar13 = 0x18;\n        if (uVar3 < 0x100) {\n          iVar13 = 0;\n        }\n        iVar32 = 9;\n        if (uVar3 < 0x100) {\n          iVar32 = 1;\n        }\n      }" { (expression_statement "iVar13 = 0x18;" (assignment_expression "iVar13 = 0x18" identifier = number_literal) ;) (if_statement "if (uVar3 < 0x100) {\n          iVar13 = 0;\n        }" if (parenthesized_expression "(uVar3 < 0x100)" ( (binary_expression "uVar3 < 0x100" identifier < number_literal) )) (compound_statement "{\n          iVar13 = 0;\n        }" { (expression_statement "iVar13 = 0;" (assignment_expression "iVar13 = 0" identifier = number_literal) ;) })) (expression_statement "iVar32 = 9;" (assignment_expression "iVar32 = 9" identifier = number_literal) ;) (if_statement "if (uVar3 < 0x100) {\n          iVar32 = 1;\n        }" if (parenthesized_expression "(uVar3 < 0x100)" ( (binary_expression "uVar3 < 0x100" identifier < number_literal) )) (compound_statement "{\n          iVar32 = 1;\n        }" { (expression_statement "iVar32 = 1;" (assignment_expression "iVar32 = 1" identifier = number_literal) ;) })) }) (else_clause "else {\n        iVar13 = 8;\n        if (uVar3 < 0x1000000) {\n          iVar13 = 0x10;\n        }\n        iVar32 = 0x19;\n        if (uVar3 < 0x1000000) {\n          iVar32 = 0x11;\n        }\n      }" else (compound_statement "{\n        iVar13 = 8;\n        if (uVar3 < 0x1000000) {\n          iVar13 = 0x10;\n        }\n        iVar32 = 0x19;\n        if (uVar3 < 0x1000000) {\n          iVar32 = 0x11;\n        }\n      }" { (expression_statement "iVar13 = 8;" (assignment_expression "iVar13 = 8" identifier = number_literal) ;) (if_statement "if (uVar3 < 0x1000000) {\n          iVar13 = 0x10;\n        }" if (parenthesized_expression "(uVar3 < 0x1000000)" ( (binary_expression "uVar3 < 0x1000000" identifier < number_literal) )) (compound_statement "{\n          iVar13 = 0x10;\n        }" { (expression_statement "iVar13 = 0x10;" (assignment_expression "iVar13 = 0x10" identifier = number_literal) ;) })) (expression_statement "iVar32 = 0x19;" (assignment_expression "iVar32 = 0x19" identifier = number_literal) ;) (if_statement "if (uVar3 < 0x1000000) {\n          iVar32 = 0x11;\n        }" if (parenthesized_expression "(uVar3 < 0x1000000)" ( (binary_expression "uVar3 < 0x1000000" identifier < number_literal) )) (compound_statement "{\n          iVar32 = 0x11;\n        }" { (expression_statement "iVar32 = 0x11;" (assignment_expression "iVar32 = 0x11" identifier = number_literal) ;) })) }))) (expression_statement "uVar3 = iVar13 - (uint)(byte)PTR___gmpn_clz_tab_0009718c[uVar3 >> iVar32];" (assignment_expression "uVar3 = iVar13 - (uint)(byte)PTR___gmpn_clz_tab_0009718c[uVar3 >> iVar32]" identifier = (binary_expression "iVar13 - (uint)(byte)PTR___gmpn_clz_tab_0009718c[uVar3 >> iVar32]" identifier - (cast_expression "(uint)(byte)PTR___gmpn_clz_tab_0009718c[uVar3 >> iVar32]" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(byte)PTR___gmpn_clz_tab_0009718c[uVar3 >> iVar32]" ( (type_descriptor "byte" type_identifier) ) (subscript_expression "PTR___gmpn_clz_tab_0009718c[uVar3 >> iVar32]" identifier [ (binary_expression "uVar3 >> iVar32" identifier >> identifier) ]))))) ;) (expression_statement "uVar14 = 0x20 - uVar3;" (assignment_expression "uVar14 = 0x20 - uVar3" identifier = (binary_expression "0x20 - uVar3" number_literal - identifier)) ;) (expression_statement "uVar18 = uVar18 << (uVar3 & 0x1f) | uVar24 >> (uVar14 & 0x1f);" (assignment_expression "uVar18 = uVar18 << (uVar3 & 0x1f) | uVar24 >> (uVar14 & 0x1f)" identifier = (binary_expression "uVar18 << (uVar3 & 0x1f) | uVar24 >> (uVar14 & 0x1f)" (binary_expression "uVar18 << (uVar3 & 0x1f)" identifier << (parenthesized_expression "(uVar3 & 0x1f)" ( (binary_expression "uVar3 & 0x1f" identifier & number_literal) ))) | (binary_expression "uVar24 >> (uVar14 & 0x1f)" identifier >> (parenthesized_expression "(uVar14 & 0x1f)" ( (binary_expression "uVar14 & 0x1f" identifier & number_literal) ))))) ;) (expression_statement "uVar24 = ap[n + -3] >> (uVar14 & 0x1f) | uVar24 << (uVar3 & 0x1f);" (assignment_expression "uVar24 = ap[n + -3] >> (uVar14 & 0x1f) | uVar24 << (uVar3 & 0x1f)" identifier = (binary_expression "ap[n + -3] >> (uVar14 & 0x1f) | uVar24 << (uVar3 & 0x1f)" (binary_expression "ap[n + -3] >> (uVar14 & 0x1f)" (subscript_expression "ap[n + -3]" identifier [ (binary_expression "n + -3" identifier + number_literal) ]) >> (parenthesized_expression "(uVar14 & 0x1f)" ( (binary_expression "uVar14 & 0x1f" identifier & number_literal) ))) | (binary_expression "uVar24 << (uVar3 & 0x1f)" identifier << (parenthesized_expression "(uVar3 & 0x1f)" ( (binary_expression "uVar3 & 0x1f" identifier & number_literal) ))))) ;) (expression_statement "uVar27 = uVar27 << (uVar3 & 0x1f) | uVar30 >> (uVar14 & 0x1f);" (assignment_expression "uVar27 = uVar27 << (uVar3 & 0x1f) | uVar30 >> (uVar14 & 0x1f)" identifier = (binary_expression "uVar27 << (uVar3 & 0x1f) | uVar30 >> (uVar14 & 0x1f)" (binary_expression "uVar27 << (uVar3 & 0x1f)" identifier << (parenthesized_expression "(uVar3 & 0x1f)" ( (binary_expression "uVar3 & 0x1f" identifier & number_literal) ))) | (binary_expression "uVar30 >> (uVar14 & 0x1f)" identifier >> (parenthesized_expression "(uVar14 & 0x1f)" ( (binary_expression "uVar14 & 0x1f" identifier & number_literal) ))))) ;) (expression_statement "uVar30 = bp[n + -3] >> (uVar14 & 0x1f) | uVar30 << (uVar3 & 0x1f);" (assignment_expression "uVar30 = bp[n + -3] >> (uVar14 & 0x1f) | uVar30 << (uVar3 & 0x1f)" identifier = (binary_expression "bp[n + -3] >> (uVar14 & 0x1f) | uVar30 << (uVar3 & 0x1f)" (binary_expression "bp[n + -3] >> (uVar14 & 0x1f)" (subscript_expression "bp[n + -3]" identifier [ (binary_expression "n + -3" identifier + number_literal) ]) >> (parenthesized_expression "(uVar14 & 0x1f)" ( (binary_expression "uVar14 & 0x1f" identifier & number_literal) ))) | (binary_expression "uVar30 << (uVar3 & 0x1f)" identifier << (parenthesized_expression "(uVar3 & 0x1f)" ( (binary_expression "uVar3 & 0x1f" identifier & number_literal) ))))) ;) })) (expression_statement "unaff_s5 = &M1;" (assignment_expression "unaff_s5 = &M1" identifier = (pointer_expression "&M1" & identifier)) ;) (expression_statement "local_58 = unaff_s5;" (assignment_expression "local_58 = unaff_s5" identifier = identifier) ;) (expression_statement "iVar13 = (*(code *)PTR___gmpn_hgcd2_00097460)(uVar18,uVar24,uVar27,uVar30);" (assignment_expression "iVar13 = (*(code *)PTR___gmpn_hgcd2_00097460)(uVar18,uVar24,uVar27,uVar30)" identifier = (call_expression "(*(code *)PTR___gmpn_hgcd2_00097460)(uVar18,uVar24,uVar27,uVar30)" (parenthesized_expression "(*(code *)PTR___gmpn_hgcd2_00097460)" ( (pointer_expression "*(code *)PTR___gmpn_hgcd2_00097460" * (cast_expression "(code *)PTR___gmpn_hgcd2_00097460" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(uVar18,uVar24,uVar27,uVar30)" ( identifier , identifier , identifier , identifier )))) ;) (if_statement "if (iVar13 == 0) goto LAB_00052b18;" if (parenthesized_expression "(iVar13 == 0)" ( (binary_expression "iVar13 == 0" identifier == number_literal) )) (goto_statement "goto LAB_00052b18;" goto statement_identifier ;)) (labeled_statement "LAB_00052bb8:\n    unaff_s5 = &M1;" statement_identifier : (expression_statement "unaff_s5 = &M1;" (assignment_expression "unaff_s5 = &M1" identifier = (pointer_expression "&M1" & identifier)) ;)) (expression_statement "(*(code *)PTR___gmpn_hgcd_matrix_mul_1_000973f4)(M,unaff_s5,tp);" (call_expression "(*(code *)PTR___gmpn_hgcd_matrix_mul_1_000973f4)(M,unaff_s5,tp)" (parenthesized_expression "(*(code *)PTR___gmpn_hgcd_matrix_mul_1_000973f4)" ( (pointer_expression "*(code *)PTR___gmpn_hgcd_matrix_mul_1_000973f4" * (cast_expression "(code *)PTR___gmpn_hgcd_matrix_mul_1_000973f4" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(M,unaff_s5,tp)" ( identifier , identifier , identifier ))) ;) (if_statement "if (n != 0) {\n      iVar13 = n + -1;\n      mVar21 = *ap;\n      if (iVar13 == 0) {\n        *tp = mVar21;\n        pmVar35 = tp;\n      }\n      else {\n        pmVar36 = tp;\n        pmVar35 = ap + 1;\n        do {\n          *pmVar36 = mVar21;\n          iVar13 = iVar13 + -1;\n          mVar21 = *pmVar35;\n          pmVar36 = pmVar36 + 1;\n          pmVar35 = pmVar35 + 1;\n        } while (iVar13 != 0);\n        tp[n + -1] = mVar21;\n        pmVar35 = tp + n + -1;\n      }\n    }" if (parenthesized_expression "(n != 0)" ( (binary_expression "n != 0" identifier != number_literal) )) (compound_statement "{\n      iVar13 = n + -1;\n      mVar21 = *ap;\n      if (iVar13 == 0) {\n        *tp = mVar21;\n        pmVar35 = tp;\n      }\n      else {\n        pmVar36 = tp;\n        pmVar35 = ap + 1;\n        do {\n          *pmVar36 = mVar21;\n          iVar13 = iVar13 + -1;\n          mVar21 = *pmVar35;\n          pmVar36 = pmVar36 + 1;\n          pmVar35 = pmVar35 + 1;\n        } while (iVar13 != 0);\n        tp[n + -1] = mVar21;\n        pmVar35 = tp + n + -1;\n      }\n    }" { (expression_statement "iVar13 = n + -1;" (assignment_expression "iVar13 = n + -1" identifier = (binary_expression "n + -1" identifier + number_literal)) ;) (expression_statement "mVar21 = *ap;" (assignment_expression "mVar21 = *ap" identifier = (pointer_expression "*ap" * identifier)) ;) (if_statement "if (iVar13 == 0) {\n        *tp = mVar21;\n        pmVar35 = tp;\n      }\n      else {\n        pmVar36 = tp;\n        pmVar35 = ap + 1;\n        do {\n          *pmVar36 = mVar21;\n          iVar13 = iVar13 + -1;\n          mVar21 = *pmVar35;\n          pmVar36 = pmVar36 + 1;\n          pmVar35 = pmVar35 + 1;\n        } while (iVar13 != 0);\n        tp[n + -1] = mVar21;\n        pmVar35 = tp + n + -1;\n      }" if (parenthesized_expression "(iVar13 == 0)" ( (binary_expression "iVar13 == 0" identifier == number_literal) )) (compound_statement "{\n        *tp = mVar21;\n        pmVar35 = tp;\n      }" { (expression_statement "*tp = mVar21;" (assignment_expression "*tp = mVar21" (pointer_expression "*tp" * identifier) = identifier) ;) (expression_statement "pmVar35 = tp;" (assignment_expression "pmVar35 = tp" identifier = identifier) ;) }) (else_clause "else {\n        pmVar36 = tp;\n        pmVar35 = ap + 1;\n        do {\n          *pmVar36 = mVar21;\n          iVar13 = iVar13 + -1;\n          mVar21 = *pmVar35;\n          pmVar36 = pmVar36 + 1;\n          pmVar35 = pmVar35 + 1;\n        } while (iVar13 != 0);\n        tp[n + -1] = mVar21;\n        pmVar35 = tp + n + -1;\n      }" else (compound_statement "{\n        pmVar36 = tp;\n        pmVar35 = ap + 1;\n        do {\n          *pmVar36 = mVar21;\n          iVar13 = iVar13 + -1;\n          mVar21 = *pmVar35;\n          pmVar36 = pmVar36 + 1;\n          pmVar35 = pmVar35 + 1;\n        } while (iVar13 != 0);\n        tp[n + -1] = mVar21;\n        pmVar35 = tp + n + -1;\n      }" { (expression_statement "pmVar36 = tp;" (assignment_expression "pmVar36 = tp" identifier = identifier) ;) (expression_statement "pmVar35 = ap + 1;" (assignment_expression "pmVar35 = ap + 1" identifier = (binary_expression "ap + 1" identifier + number_literal)) ;) (do_statement "do {\n          *pmVar36 = mVar21;\n          iVar13 = iVar13 + -1;\n          mVar21 = *pmVar35;\n          pmVar36 = pmVar36 + 1;\n          pmVar35 = pmVar35 + 1;\n        } while (iVar13 != 0);" do (compound_statement "{\n          *pmVar36 = mVar21;\n          iVar13 = iVar13 + -1;\n          mVar21 = *pmVar35;\n          pmVar36 = pmVar36 + 1;\n          pmVar35 = pmVar35 + 1;\n        }" { (expression_statement "*pmVar36 = mVar21;" (assignment_expression "*pmVar36 = mVar21" (pointer_expression "*pmVar36" * identifier) = identifier) ;) (expression_statement "iVar13 = iVar13 + -1;" (assignment_expression "iVar13 = iVar13 + -1" identifier = (binary_expression "iVar13 + -1" identifier + number_literal)) ;) (expression_statement "mVar21 = *pmVar35;" (assignment_expression "mVar21 = *pmVar35" identifier = (pointer_expression "*pmVar35" * identifier)) ;) (expression_statement "pmVar36 = pmVar36 + 1;" (assignment_expression "pmVar36 = pmVar36 + 1" identifier = (binary_expression "pmVar36 + 1" identifier + number_literal)) ;) (expression_statement "pmVar35 = pmVar35 + 1;" (assignment_expression "pmVar35 = pmVar35 + 1" identifier = (binary_expression "pmVar35 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar13 != 0)" ( (binary_expression "iVar13 != 0" identifier != number_literal) )) ;) (expression_statement "tp[n + -1] = mVar21;" (assignment_expression "tp[n + -1] = mVar21" (subscript_expression "tp[n + -1]" identifier [ (binary_expression "n + -1" identifier + number_literal) ]) = identifier) ;) (expression_statement "pmVar35 = tp + n + -1;" (assignment_expression "pmVar35 = tp + n + -1" identifier = (binary_expression "tp + n + -1" (binary_expression "tp + n" identifier + identifier) + number_literal)) ;) }))) })) (expression_statement "pmVar36 = ap;" (assignment_expression "pmVar36 = ap" identifier = identifier) ;) (expression_statement "pmVar8 = tp;" (assignment_expression "pmVar8 = tp" identifier = identifier) ;) (expression_statement "pmVar26 = bp;" (assignment_expression "pmVar26 = bp" identifier = identifier) ;) (expression_statement "local_58 = (hgcd_matrix1 *)n;" (assignment_expression "local_58 = (hgcd_matrix1 *)n" identifier = (cast_expression "(hgcd_matrix1 *)n" ( (type_descriptor "hgcd_matrix1 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "mVar4 = (*(code *)PTR___gmpn_matrix22_mul1_inverse_vector_00097488)(unaff_s5);" (assignment_expression "mVar4 = (*(code *)PTR___gmpn_matrix22_mul1_inverse_vector_00097488)(unaff_s5)" identifier = (call_expression "(*(code *)PTR___gmpn_matrix22_mul1_inverse_vector_00097488)(unaff_s5)" (parenthesized_expression "(*(code *)PTR___gmpn_matrix22_mul1_inverse_vector_00097488)" ( (pointer_expression "*(code *)PTR___gmpn_matrix22_mul1_inverse_vector_00097488" * (cast_expression "(code *)PTR___gmpn_matrix22_mul1_inverse_vector_00097488" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(unaff_s5)" ( identifier )))) ;) }))) (if_statement "if (pmVar17 == *(mp_ptr *)puVar12) {\n    return mVar4;\n  }" if (parenthesized_expression "(pmVar17 == *(mp_ptr *)puVar12)" ( (binary_expression "pmVar17 == *(mp_ptr *)puVar12" identifier == (pointer_expression "*(mp_ptr *)puVar12" * (cast_expression "(mp_ptr *)puVar12" ( (type_descriptor "mp_ptr *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier))) )) (compound_statement "{\n    return mVar4;\n  }" { (return_statement "return mVar4;" return identifier ;) })) (expression_statement "uVar46 = 0x52c64;" (assignment_expression "uVar46 = 0x52c64" identifier = number_literal) ;) (expression_statement "puVar37 = PTR___stack_chk_fail_000974d0;" (assignment_expression "puVar37 = PTR___stack_chk_fail_000974d0" identifier = identifier) ;) (expression_statement "(*(code *)PTR___stack_chk_fail_000974d0)();" (call_expression "(*(code *)PTR___stack_chk_fail_000974d0)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_000974d0)" ( (pointer_expression "*(code *)PTR___stack_chk_fail_000974d0" * (cast_expression "(code *)PTR___stack_chk_fail_000974d0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (expression_statement "phVar2 = local_54;" (assignment_expression "phVar2 = local_54" identifier = identifier) ;) (expression_statement "apmStack_a8[0] = (mp_ptr)(puVar37 + 0x4c3d0);" (assignment_expression "apmStack_a8[0] = (mp_ptr)(puVar37 + 0x4c3d0)" (subscript_expression "apmStack_a8[0]" identifier [ number_literal ]) = (call_expression "(mp_ptr)(puVar37 + 0x4c3d0)" (parenthesized_expression "(mp_ptr)" ( identifier )) (argument_list "(puVar37 + 0x4c3d0)" ( (binary_expression "puVar37 + 0x4c3d0" identifier + number_literal) )))) ;) (expression_statement "puVar43 = auStack_c0;" (assignment_expression "puVar43 = auStack_c0" identifier = identifier) ;) (expression_statement "phStack_70 = M;" (assignment_expression "phStack_70 = M" identifier = identifier) ;) (expression_statement "piVar38 = *(int **)(puVar37 + 0x448d0);" (assignment_expression "piVar38 = *(int **)(puVar37 + 0x448d0)" identifier = (pointer_expression "*(int **)(puVar37 + 0x448d0)" * (cast_expression "(int **)(puVar37 + 0x448d0)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar37 + 0x448d0)" ( (binary_expression "puVar37 + 0x448d0" identifier + number_literal) ))))) ;) (expression_statement "iVar13 = (int)pmVar26 + (int)local_54;" (assignment_expression "iVar13 = (int)pmVar26 + (int)local_54" identifier = (binary_expression "(int)pmVar26 + (int)local_54" (cast_expression "(int)pmVar26" ( (type_descriptor "int" primitive_type) ) identifier) + (cast_expression "(int)local_54" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "pmStack_74 = tp;" (assignment_expression "pmStack_74 = tp" identifier = identifier) ;) (expression_statement "puStack_8c = puVar12;" (assignment_expression "puStack_8c = puVar12" identifier = identifier) ;) (expression_statement "iStack_98 = 0;" (assignment_expression "iStack_98 = 0" identifier = number_literal) ;) (expression_statement "iStack_94 = *piVar38;" (assignment_expression "iStack_94 = *piVar38" identifier = (pointer_expression "*piVar38" * identifier)) ;) (expression_statement "pmStack_90 = pmVar35;" (assignment_expression "pmStack_90 = pmVar35" identifier = identifier) ;) (expression_statement "pmStack_88 = ap;" (assignment_expression "pmStack_88 = ap" identifier = identifier) ;) (expression_statement "pmStack_84 = bp;" (assignment_expression "pmStack_84 = bp" identifier = identifier) ;) (expression_statement "mStack_80 = n;" (assignment_expression "mStack_80 = n" identifier = identifier) ;) (expression_statement "phStack_7c = unaff_s5;" (assignment_expression "phStack_7c = unaff_s5" identifier = identifier) ;) (expression_statement "mStack_78 = s;" (assignment_expression "mStack_78 = s" identifier = identifier) ;) (expression_statement "uStack_6c = uVar46;" (assignment_expression "uStack_6c = uVar46" identifier = identifier) ;) (if_statement "if ((uint)(iVar13 * 4) < 0x7f01) {\n    iVar32 = -(iVar13 * 4 + 7U & 0xfffffff8);\n    puVar43 = auStack_c0 + iVar32;\n    pmVar6 = (mp_ptr)((int)apmStack_a8 + iVar32);\n    phVar31 = local_58;\n  }\n  else {\n    apmStack_a8[3] = (mp_ptr)local_58;\n    pmVar6 = (mp_ptr)(**(code **)(puVar37 + 0x44680))(&iStack_98);\n    phVar31 = (hgcd_matrix1 *)apmStack_a8[3];\n  }" if (parenthesized_expression "((uint)(iVar13 * 4) < 0x7f01)" ( (binary_expression "(uint)(iVar13 * 4) < 0x7f01" (call_expression "(uint)(iVar13 * 4)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(iVar13 * 4)" ( (binary_expression "iVar13 * 4" identifier * number_literal) ))) < number_literal) )) (compound_statement "{\n    iVar32 = -(iVar13 * 4 + 7U & 0xfffffff8);\n    puVar43 = auStack_c0 + iVar32;\n    pmVar6 = (mp_ptr)((int)apmStack_a8 + iVar32);\n    phVar31 = local_58;\n  }" { (expression_statement "iVar32 = -(iVar13 * 4 + 7U & 0xfffffff8);" (assignment_expression "iVar32 = -(iVar13 * 4 + 7U & 0xfffffff8)" identifier = (unary_expression "-(iVar13 * 4 + 7U & 0xfffffff8)" - (parenthesized_expression "(iVar13 * 4 + 7U & 0xfffffff8)" ( (binary_expression "iVar13 * 4 + 7U & 0xfffffff8" (binary_expression "iVar13 * 4 + 7U" (binary_expression "iVar13 * 4" identifier * number_literal) + number_literal) & number_literal) )))) ;) (expression_statement "puVar43 = auStack_c0 + iVar32;" (assignment_expression "puVar43 = auStack_c0 + iVar32" identifier = (binary_expression "auStack_c0 + iVar32" identifier + identifier)) ;) (expression_statement "pmVar6 = (mp_ptr)((int)apmStack_a8 + iVar32);" (assignment_expression "pmVar6 = (mp_ptr)((int)apmStack_a8 + iVar32)" identifier = (call_expression "(mp_ptr)((int)apmStack_a8 + iVar32)" (parenthesized_expression "(mp_ptr)" ( identifier )) (argument_list "((int)apmStack_a8 + iVar32)" ( (binary_expression "(int)apmStack_a8 + iVar32" (cast_expression "(int)apmStack_a8" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) ;) (expression_statement "phVar31 = local_58;" (assignment_expression "phVar31 = local_58" identifier = identifier) ;) }) (else_clause "else {\n    apmStack_a8[3] = (mp_ptr)local_58;\n    pmVar6 = (mp_ptr)(**(code **)(puVar37 + 0x44680))(&iStack_98);\n    phVar31 = (hgcd_matrix1 *)apmStack_a8[3];\n  }" else (compound_statement "{\n    apmStack_a8[3] = (mp_ptr)local_58;\n    pmVar6 = (mp_ptr)(**(code **)(puVar37 + 0x44680))(&iStack_98);\n    phVar31 = (hgcd_matrix1 *)apmStack_a8[3];\n  }" { (expression_statement "apmStack_a8[3] = (mp_ptr)local_58;" (assignment_expression "apmStack_a8[3] = (mp_ptr)local_58" (subscript_expression "apmStack_a8[3]" identifier [ number_literal ]) = (cast_expression "(mp_ptr)local_58" ( (type_descriptor "mp_ptr" type_identifier) ) identifier)) ;) (expression_statement "pmVar6 = (mp_ptr)(**(code **)(puVar37 + 0x44680))(&iStack_98);" (assignment_expression "pmVar6 = (mp_ptr)(**(code **)(puVar37 + 0x44680))(&iStack_98)" identifier = (call_expression "(mp_ptr)(**(code **)(puVar37 + 0x44680))(&iStack_98)" (call_expression "(mp_ptr)(**(code **)(puVar37 + 0x44680))" (parenthesized_expression "(mp_ptr)" ( identifier )) (argument_list "(**(code **)(puVar37 + 0x44680))" ( (pointer_expression "**(code **)(puVar37 + 0x44680)" * (pointer_expression "*(code **)(puVar37 + 0x44680)" * (cast_expression "(code **)(puVar37 + 0x44680)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar37 + 0x44680)" ( (binary_expression "puVar37 + 0x44680" identifier + number_literal) ))))) ))) (argument_list "(&iStack_98)" ( (pointer_expression "&iStack_98" & identifier) )))) ;) (expression_statement "phVar31 = (hgcd_matrix1 *)apmStack_a8[3];" (assignment_expression "phVar31 = (hgcd_matrix1 *)apmStack_a8[3]" identifier = (cast_expression "(hgcd_matrix1 *)apmStack_a8[3]" ( (type_descriptor "hgcd_matrix1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "apmStack_a8[3]" identifier [ number_literal ]))) ;) }))) (expression_statement "pcVar42 = (code *)apmStack_a8[0][-0x1f63];" (assignment_expression "pcVar42 = (code *)apmStack_a8[0][-0x1f63]" identifier = (cast_expression "(code *)apmStack_a8[0][-0x1f63]" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "apmStack_a8[0][-0x1f63]" (subscript_expression "apmStack_a8[0]" identifier [ number_literal ]) [ number_literal ]))) ;) (expression_statement "*(hgcd_matrix **)(puVar43 + 0x10) = phVar2;" (assignment_expression "*(hgcd_matrix **)(puVar43 + 0x10) = phVar2" (pointer_expression "*(hgcd_matrix **)(puVar43 + 0x10)" * (cast_expression "(hgcd_matrix **)(puVar43 + 0x10)" ( (type_descriptor "hgcd_matrix **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar43 + 0x10)" ( (binary_expression "puVar43 + 0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "pmVar25 = pmVar8;" (assignment_expression "pmVar25 = pmVar8" identifier = identifier) ;) (expression_statement "pmVar28 = pmVar26;" (assignment_expression "pmVar28 = pmVar26" identifier = identifier) ;) (expression_statement "(*pcVar42)(pmVar6);" (call_expression "(*pcVar42)(pmVar6)" (parenthesized_expression "(*pcVar42)" ( (pointer_expression "*pcVar42" * identifier) )) (argument_list "(pmVar6)" ( identifier ))) ;) (expression_statement "pmVar39 = (mp_ptr)(iVar13 - (uint)((int)pmVar36 < iVar13));" (assignment_expression "pmVar39 = (mp_ptr)(iVar13 - (uint)((int)pmVar36 < iVar13))" identifier = (call_expression "(mp_ptr)(iVar13 - (uint)((int)pmVar36 < iVar13))" (parenthesized_expression "(mp_ptr)" ( identifier )) (argument_list "(iVar13 - (uint)((int)pmVar36 < iVar13))" ( (binary_expression "iVar13 - (uint)((int)pmVar36 < iVar13)" identifier - (call_expression "(uint)((int)pmVar36 < iVar13)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((int)pmVar36 < iVar13)" ( (binary_expression "(int)pmVar36 < iVar13" (cast_expression "(int)pmVar36" ( (type_descriptor "int" primitive_type) ) identifier) < identifier) )))) )))) ;) (if_statement "if (((pmVar39 != (mp_ptr)0x0) &&\n      (pmVar25 = pmVar17, pmVar28 = pmVar6, phVar31 = (hgcd_matrix1 *)pmVar39,\n      iVar13 = (*(code *)apmStack_a8[0][-0x1ecb])(pmVar17), iVar13 != 0)) &&\n     ((int)pmVar39 < (int)pmVar36)) {\n    pmVar19 = pmVar17 + (int)pmVar39;\n    mVar21 = *pmVar19;\n    pmVar25 = (mp_ptr)(mVar21 - 1);\n    *pmVar19 = (mp_limb_t)pmVar25;\n    pmVar5 = pmVar39;\n    while ((mVar21 == 0 && (pmVar5 = (mp_ptr)((int)pmVar5 + 1), pmVar36 != pmVar5))) {\n      mVar21 = pmVar19[1];\n      pmVar19 = pmVar19 + 1;\n      pmVar25 = (mp_ptr)(mVar21 - 1);\n      *pmVar19 = (mp_limb_t)pmVar25;\n    }\n  }" if (parenthesized_expression "(((pmVar39 != (mp_ptr)0x0) &&\n      (pmVar25 = pmVar17, pmVar28 = pmVar6, phVar31 = (hgcd_matrix1 *)pmVar39,\n      iVar13 = (*(code *)apmStack_a8[0][-0x1ecb])(pmVar17), iVar13 != 0)) &&\n     ((int)pmVar39 < (int)pmVar36))" ( (binary_expression "((pmVar39 != (mp_ptr)0x0) &&\n      (pmVar25 = pmVar17, pmVar28 = pmVar6, phVar31 = (hgcd_matrix1 *)pmVar39,\n      iVar13 = (*(code *)apmStack_a8[0][-0x1ecb])(pmVar17), iVar13 != 0)) &&\n     ((int)pmVar39 < (int)pmVar36)" (parenthesized_expression "((pmVar39 != (mp_ptr)0x0) &&\n      (pmVar25 = pmVar17, pmVar28 = pmVar6, phVar31 = (hgcd_matrix1 *)pmVar39,\n      iVar13 = (*(code *)apmStack_a8[0][-0x1ecb])(pmVar17), iVar13 != 0))" ( (binary_expression "(pmVar39 != (mp_ptr)0x0) &&\n      (pmVar25 = pmVar17, pmVar28 = pmVar6, phVar31 = (hgcd_matrix1 *)pmVar39,\n      iVar13 = (*(code *)apmStack_a8[0][-0x1ecb])(pmVar17), iVar13 != 0)" (parenthesized_expression "(pmVar39 != (mp_ptr)0x0)" ( (binary_expression "pmVar39 != (mp_ptr)0x0" identifier != (cast_expression "(mp_ptr)0x0" ( (type_descriptor "mp_ptr" type_identifier) ) number_literal)) )) && (parenthesized_expression "(pmVar25 = pmVar17, pmVar28 = pmVar6, phVar31 = (hgcd_matrix1 *)pmVar39,\n      iVar13 = (*(code *)apmStack_a8[0][-0x1ecb])(pmVar17), iVar13 != 0)" ( (comma_expression "pmVar25 = pmVar17, pmVar28 = pmVar6, phVar31 = (hgcd_matrix1 *)pmVar39,\n      iVar13 = (*(code *)apmStack_a8[0][-0x1ecb])(pmVar17), iVar13 != 0" (assignment_expression "pmVar25 = pmVar17" identifier = identifier) , (comma_expression "pmVar28 = pmVar6, phVar31 = (hgcd_matrix1 *)pmVar39,\n      iVar13 = (*(code *)apmStack_a8[0][-0x1ecb])(pmVar17), iVar13 != 0" (assignment_expression "pmVar28 = pmVar6" identifier = identifier) , (comma_expression "phVar31 = (hgcd_matrix1 *)pmVar39,\n      iVar13 = (*(code *)apmStack_a8[0][-0x1ecb])(pmVar17), iVar13 != 0" (assignment_expression "phVar31 = (hgcd_matrix1 *)pmVar39" identifier = (cast_expression "(hgcd_matrix1 *)pmVar39" ( (type_descriptor "hgcd_matrix1 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) , (comma_expression "iVar13 = (*(code *)apmStack_a8[0][-0x1ecb])(pmVar17), iVar13 != 0" (assignment_expression "iVar13 = (*(code *)apmStack_a8[0][-0x1ecb])(pmVar17)" identifier = (call_expression "(*(code *)apmStack_a8[0][-0x1ecb])(pmVar17)" (parenthesized_expression "(*(code *)apmStack_a8[0][-0x1ecb])" ( (pointer_expression "*(code *)apmStack_a8[0][-0x1ecb]" * (cast_expression "(code *)apmStack_a8[0][-0x1ecb]" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "apmStack_a8[0][-0x1ecb]" (subscript_expression "apmStack_a8[0]" identifier [ number_literal ]) [ number_literal ]))) )) (argument_list "(pmVar17)" ( identifier )))) , (binary_expression "iVar13 != 0" identifier != number_literal))))) ))) )) && (parenthesized_expression "((int)pmVar39 < (int)pmVar36)" ( (binary_expression "(int)pmVar39 < (int)pmVar36" (cast_expression "(int)pmVar39" ( (type_descriptor "int" primitive_type) ) identifier) < (cast_expression "(int)pmVar36" ( (type_descriptor "int" primitive_type) ) identifier)) ))) )) (compound_statement "{\n    pmVar19 = pmVar17 + (int)pmVar39;\n    mVar21 = *pmVar19;\n    pmVar25 = (mp_ptr)(mVar21 - 1);\n    *pmVar19 = (mp_limb_t)pmVar25;\n    pmVar5 = pmVar39;\n    while ((mVar21 == 0 && (pmVar5 = (mp_ptr)((int)pmVar5 + 1), pmVar36 != pmVar5))) {\n      mVar21 = pmVar19[1];\n      pmVar19 = pmVar19 + 1;\n      pmVar25 = (mp_ptr)(mVar21 - 1);\n      *pmVar19 = (mp_limb_t)pmVar25;\n    }\n  }" { (expression_statement "pmVar19 = pmVar17 + (int)pmVar39;" (assignment_expression "pmVar19 = pmVar17 + (int)pmVar39" identifier = (binary_expression "pmVar17 + (int)pmVar39" identifier + (cast_expression "(int)pmVar39" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "mVar21 = *pmVar19;" (assignment_expression "mVar21 = *pmVar19" identifier = (pointer_expression "*pmVar19" * identifier)) ;) (expression_statement "pmVar25 = (mp_ptr)(mVar21 - 1);" (assignment_expression "pmVar25 = (mp_ptr)(mVar21 - 1)" identifier = (call_expression "(mp_ptr)(mVar21 - 1)" (parenthesized_expression "(mp_ptr)" ( identifier )) (argument_list "(mVar21 - 1)" ( (binary_expression "mVar21 - 1" identifier - number_literal) )))) ;) (expression_statement "*pmVar19 = (mp_limb_t)pmVar25;" (assignment_expression "*pmVar19 = (mp_limb_t)pmVar25" (pointer_expression "*pmVar19" * identifier) = (cast_expression "(mp_limb_t)pmVar25" ( (type_descriptor "mp_limb_t" type_identifier) ) identifier)) ;) (expression_statement "pmVar5 = pmVar39;" (assignment_expression "pmVar5 = pmVar39" identifier = identifier) ;) (while_statement "while ((mVar21 == 0 && (pmVar5 = (mp_ptr)((int)pmVar5 + 1), pmVar36 != pmVar5))) {\n      mVar21 = pmVar19[1];\n      pmVar19 = pmVar19 + 1;\n      pmVar25 = (mp_ptr)(mVar21 - 1);\n      *pmVar19 = (mp_limb_t)pmVar25;\n    }" while (parenthesized_expression "((mVar21 == 0 && (pmVar5 = (mp_ptr)((int)pmVar5 + 1), pmVar36 != pmVar5)))" ( (parenthesized_expression "(mVar21 == 0 && (pmVar5 = (mp_ptr)((int)pmVar5 + 1), pmVar36 != pmVar5))" ( (binary_expression "mVar21 == 0 && (pmVar5 = (mp_ptr)((int)pmVar5 + 1), pmVar36 != pmVar5)" (binary_expression "mVar21 == 0" identifier == number_literal) && (parenthesized_expression "(pmVar5 = (mp_ptr)((int)pmVar5 + 1), pmVar36 != pmVar5)" ( (comma_expression "pmVar5 = (mp_ptr)((int)pmVar5 + 1), pmVar36 != pmVar5" (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) )))) , (binary_expression "pmVar36 != pmVar5" identifier != identifier)) ))) )) )) (compound_statement "{\n      mVar21 = pmVar19[1];\n      pmVar19 = pmVar19 + 1;\n      pmVar25 = (mp_ptr)(mVar21 - 1);\n      *pmVar19 = (mp_limb_t)pmVar25;\n    }" { (expression_statement "mVar21 = pmVar19[1];" (assignment_expression "mVar21 = pmVar19[1]" identifier = (subscript_expression "pmVar19[1]" identifier [ number_literal ])) ;) (expression_statement "pmVar19 = pmVar19 + 1;" (assignment_expression "pmVar19 = pmVar19 + 1" identifier = (binary_expression "pmVar19 + 1" identifier + number_literal)) ;) (expression_statement "pmVar25 = (mp_ptr)(mVar21 - 1);" (assignment_expression "pmVar25 = (mp_ptr)(mVar21 - 1)" identifier = (call_expression "(mp_ptr)(mVar21 - 1)" (parenthesized_expression "(mp_ptr)" ( identifier )) (argument_list "(mVar21 - 1)" ( (binary_expression "mVar21 - 1" identifier - number_literal) )))) ;) (expression_statement "*pmVar19 = (mp_limb_t)pmVar25;" (assignment_expression "*pmVar19 = (mp_limb_t)pmVar25" (pointer_expression "*pmVar19" * identifier) = (cast_expression "(mp_limb_t)pmVar25" ( (type_descriptor "mp_limb_t" type_identifier) ) identifier)) ;) })) })) (if_statement "if (iStack_98 != 0) {\n    (*(code *)apmStack_a8[0][-0x1e8b])();\n  }" if (parenthesized_expression "(iStack_98 != 0)" ( (binary_expression "iStack_98 != 0" identifier != number_literal) )) (compound_statement "{\n    (*(code *)apmStack_a8[0][-0x1e8b])();\n  }" { (expression_statement "(*(code *)apmStack_a8[0][-0x1e8b])();" (call_expression "(*(code *)apmStack_a8[0][-0x1e8b])()" (parenthesized_expression "(*(code *)apmStack_a8[0][-0x1e8b])" ( (pointer_expression "*(code *)apmStack_a8[0][-0x1e8b]" * (cast_expression "(code *)apmStack_a8[0][-0x1e8b]" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "apmStack_a8[0][-0x1e8b]" (subscript_expression "apmStack_a8[0]" identifier [ number_literal ]) [ number_literal ]))) )) (argument_list "()" ( ))) ;) })) (expression_statement "pmVar5 = pmVar36;" (assignment_expression "pmVar5 = pmVar36" identifier = identifier) ;) (if_statement "if (((int)pmVar26 < (int)pmVar36) && (pmVar17[(int)pmVar36 + -1] == 0)) {\n    pmVar19 = pmVar17 + (int)pmVar36;\n    do {\n      pmVar36 = (mp_ptr)((int)pmVar36 + -1);\n      pmVar5 = pmVar26;\n      if (pmVar26 == pmVar36) break;\n      pmVar1 = pmVar19 + -2;\n      pmVar5 = pmVar36;\n      pmVar19 = pmVar19 + -1;\n    } while (*pmVar1 == 0);\n  }" if (parenthesized_expression "(((int)pmVar26 < (int)pmVar36) && (pmVar17[(int)pmVar36 + -1] == 0))" ( (binary_expression "((int)pmVar26 < (int)pmVar36) && (pmVar17[(int)pmVar36 + -1] == 0)" (parenthesized_expression "((int)pmVar26 < (int)pmVar36)" ( (binary_expression "(int)pmVar26 < (int)pmVar36" (cast_expression "(int)pmVar26" ( (type_descriptor "int" primitive_type) ) identifier) < (cast_expression "(int)pmVar36" ( (type_descriptor "int" primitive_type) ) identifier)) )) && (parenthesized_expression "(pmVar17[(int)pmVar36 + -1] == 0)" ( (binary_expression "pmVar17[(int)pmVar36 + -1] == 0" (subscript_expression "pmVar17[(int)pmVar36 + -1]" identifier [ (binary_expression "(int)pmVar36 + -1" (cast_expression "(int)pmVar36" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ]) == number_literal) ))) )) (compound_statement "{\n    pmVar19 = pmVar17 + (int)pmVar36;\n    do {\n      pmVar36 = (mp_ptr)((int)pmVar36 + -1);\n      pmVar5 = pmVar26;\n      if (pmVar26 == pmVar36) break;\n      pmVar1 = pmVar19 + -2;\n      pmVar5 = pmVar36;\n      pmVar19 = pmVar19 + -1;\n    } while (*pmVar1 == 0);\n  }" { (expression_statement "pmVar19 = pmVar17 + (int)pmVar36;" (assignment_expression "pmVar19 = pmVar17 + (int)pmVar36" identifier = (binary_expression "pmVar17 + (int)pmVar36" identifier + (cast_expression "(int)pmVar36" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (do_statement "do {\n      pmVar36 = (mp_ptr)((int)pmVar36 + -1);\n      pmVar5 = pmVar26;\n      if (pmVar26 == pmVar36) break;\n      pmVar1 = pmVar19 + -2;\n      pmVar5 = pmVar36;\n      pmVar19 = pmVar19 + -1;\n    } while (*pmVar1 == 0);" do (compound_statement "{\n      pmVar36 = (mp_ptr)((int)pmVar36 + -1);\n      pmVar5 = pmVar26;\n      if (pmVar26 == pmVar36) break;\n      pmVar1 = pmVar19 + -2;\n      pmVar5 = pmVar36;\n      pmVar19 = pmVar19 + -1;\n    }" { (expression_statement "pmVar36 = (mp_ptr)((int)pmVar36 + -1);" (assignment_expression "pmVar36 = (mp_ptr)((int)pmVar36 + -1)" identifier = (call_expression "(mp_ptr)((int)pmVar36 + -1)" (parenthesized_expression "(mp_ptr)" ( identifier )) (argument_list "((int)pmVar36 + -1)" ( (binary_expression "(int)pmVar36 + -1" (cast_expression "(int)pmVar36" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "pmVar5 = pmVar26;" (assignment_expression "pmVar5 = pmVar26" identifier = identifier) ;) (if_statement "if (pmVar26 == pmVar36) break;" if (parenthesized_expression "(pmVar26 == pmVar36)" ( (binary_expression "pmVar26 == pmVar36" identifier == identifier) )) (break_statement "break;" break ;)) (expression_statement "pmVar1 = pmVar19 + -2;" (assignment_expression "pmVar1 = pmVar19 + -2" identifier = (binary_expression "pmVar19 + -2" identifier + number_literal)) ;) (expression_statement "pmVar5 = pmVar36;" (assignment_expression "pmVar5 = pmVar36" identifier = identifier) ;) (expression_statement "pmVar19 = pmVar19 + -1;" (assignment_expression "pmVar19 = pmVar19 + -1" identifier = (binary_expression "pmVar19 + -1" identifier + number_literal)) ;) }) while (parenthesized_expression "(*pmVar1 == 0)" ( (binary_expression "*pmVar1 == 0" (pointer_expression "*pmVar1" * identifier) == number_literal) )) ;) })) (expression_statement "pcVar42 = (code *)apmStack_a8[0][-0x1edc];" (assignment_expression "pcVar42 = (code *)apmStack_a8[0][-0x1edc]" identifier = (cast_expression "(code *)apmStack_a8[0][-0x1edc]" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "apmStack_a8[0][-0x1edc]" (subscript_expression "apmStack_a8[0]" identifier [ number_literal ]) [ number_literal ]))) ;) (if_statement "if (iStack_94 == *piVar38) {\n    return (mp_size_t)pmVar5;\n  }" if (parenthesized_expression "(iStack_94 == *piVar38)" ( (binary_expression "iStack_94 == *piVar38" identifier == (pointer_expression "*piVar38" * identifier)) )) (compound_statement "{\n    return (mp_size_t)pmVar5;\n  }" { (return_statement "return (mp_size_t)pmVar5;" return (cast_expression "(mp_size_t)pmVar5" ( (type_descriptor "mp_size_t" type_identifier) ) identifier) ;) })) (expression_statement "pcVar47 = hgcd_matrix_apply;" (assignment_expression "pcVar47 = hgcd_matrix_apply" identifier = identifier) ;) (expression_statement "iVar13 = iStack_94;" (assignment_expression "iVar13 = iStack_94" identifier = identifier) ;) (expression_statement "(*pcVar42)();" (call_expression "(*pcVar42)()" (parenthesized_expression "(*pcVar42)" ( (pointer_expression "*pcVar42" * identifier) )) (argument_list "()" ( ))) ;) (expression_statement "puVar45 = puVar43 + -0x88;" (assignment_expression "puVar45 = puVar43 + -0x88" identifier = (binary_expression "puVar43 + -0x88" identifier + number_literal)) ;) (expression_statement "puVar44 = puVar43 + -0x88;" (assignment_expression "puVar44 = puVar43 + -0x88" identifier = (binary_expression "puVar43 + -0x88" identifier + number_literal)) ;) (expression_statement "puVar7 = *(undefined4 **)(pcVar42 + 0x446d8);" (assignment_expression "puVar7 = *(undefined4 **)(pcVar42 + 0x446d8)" identifier = (pointer_expression "*(undefined4 **)(pcVar42 + 0x446d8)" * (cast_expression "(undefined4 **)(pcVar42 + 0x446d8)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar42 + 0x446d8)" ( (binary_expression "pcVar42 + 0x446d8" identifier + number_literal) ))))) ;) (expression_statement "*(undefined1 **)(puVar43 + -8) = auStack_c0;" (assignment_expression "*(undefined1 **)(puVar43 + -8) = auStack_c0" (pointer_expression "*(undefined1 **)(puVar43 + -8)" * (cast_expression "(undefined1 **)(puVar43 + -8)" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar43 + -8)" ( (binary_expression "puVar43 + -8" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(mp_ptr *)(puVar43 + -0x10) = pmVar6;" (assignment_expression "*(mp_ptr *)(puVar43 + -0x10) = pmVar6" (pointer_expression "*(mp_ptr *)(puVar43 + -0x10)" * (cast_expression "(mp_ptr *)(puVar43 + -0x10)" ( (type_descriptor "mp_ptr *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar43 + -0x10)" ( (binary_expression "puVar43 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 **)(puVar43 + -0x4c) = puVar7;" (assignment_expression "*(undefined4 **)(puVar43 + -0x4c) = puVar7" (pointer_expression "*(undefined4 **)(puVar43 + -0x4c)" * (cast_expression "(undefined4 **)(puVar43 + -0x4c)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar43 + -0x4c)" ( (binary_expression "puVar43 + -0x4c" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(mp_ptr *)(puVar43 + -0x20) = pmVar26;" (assignment_expression "*(mp_ptr *)(puVar43 + -0x20) = pmVar26" (pointer_expression "*(mp_ptr *)(puVar43 + -0x20)" * (cast_expression "(mp_ptr *)(puVar43 + -0x20)" ( (type_descriptor "mp_ptr *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar43 + -0x20)" ( (binary_expression "puVar43 + -0x20" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(mp_ptr *)(puVar43 + -0x24) = pmVar17;" (assignment_expression "*(mp_ptr *)(puVar43 + -0x24) = pmVar17" (pointer_expression "*(mp_ptr *)(puVar43 + -0x24)" * (cast_expression "(mp_ptr *)(puVar43 + -0x24)" ( (type_descriptor "mp_ptr *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar43 + -0x24)" ( (binary_expression "puVar43 + -0x24" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(mp_ptr *)(puVar43 + -0x28) = pmVar36;" (assignment_expression "*(mp_ptr *)(puVar43 + -0x28) = pmVar36" (pointer_expression "*(mp_ptr *)(puVar43 + -0x28)" * (cast_expression "(mp_ptr *)(puVar43 + -0x28)" ( (type_descriptor "mp_ptr *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar43 + -0x28)" ( (binary_expression "puVar43 + -0x28" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(code **)(puVar43 + -4) = pcVar47;" (assignment_expression "*(code **)(puVar43 + -4) = pcVar47" (pointer_expression "*(code **)(puVar43 + -4)" * (cast_expression "(code **)(puVar43 + -4)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar43 + -4)" ( (binary_expression "puVar43 + -4" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(mp_ptr *)(puVar43 + -0xc) = pmVar8;" (assignment_expression "*(mp_ptr *)(puVar43 + -0xc) = pmVar8" (pointer_expression "*(mp_ptr *)(puVar43 + -0xc)" * (cast_expression "(mp_ptr *)(puVar43 + -0xc)" ( (type_descriptor "mp_ptr *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar43 + -0xc)" ( (binary_expression "puVar43 + -0xc" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(hgcd_matrix **)(puVar43 + -0x14) = phVar2;" (assignment_expression "*(hgcd_matrix **)(puVar43 + -0x14) = phVar2" (pointer_expression "*(hgcd_matrix **)(puVar43 + -0x14)" * (cast_expression "(hgcd_matrix **)(puVar43 + -0x14)" ( (type_descriptor "hgcd_matrix **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar43 + -0x14)" ( (binary_expression "puVar43 + -0x14" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(mp_ptr *)(puVar43 + -0x18) = pmVar39;" (assignment_expression "*(mp_ptr *)(puVar43 + -0x18) = pmVar39" (pointer_expression "*(mp_ptr *)(puVar43 + -0x18)" * (cast_expression "(mp_ptr *)(puVar43 + -0x18)" ( (type_descriptor "mp_ptr *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar43 + -0x18)" ( (binary_expression "puVar43 + -0x18" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int **)(puVar43 + -0x1c) = piVar38;" (assignment_expression "*(int **)(puVar43 + -0x1c) = piVar38" (pointer_expression "*(int **)(puVar43 + -0x1c)" * (cast_expression "(int **)(puVar43 + -0x1c)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar43 + -0x1c)" ( (binary_expression "puVar43 + -0x1c" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(code **)(puVar43 + -0x68) = pcVar42 + 0x4c1d8;" (assignment_expression "*(code **)(puVar43 + -0x68) = pcVar42 + 0x4c1d8" (pointer_expression "*(code **)(puVar43 + -0x68)" * (cast_expression "(code **)(puVar43 + -0x68)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar43 + -0x68)" ( (binary_expression "puVar43 + -0x68" identifier + number_literal) )))) = (binary_expression "pcVar42 + 0x4c1d8" identifier + number_literal)) ;) (expression_statement "*(undefined4 *)(puVar43 + -0x2c) = *puVar7;" (assignment_expression "*(undefined4 *)(puVar43 + -0x2c) = *puVar7" (pointer_expression "*(undefined4 *)(puVar43 + -0x2c)" * (cast_expression "(undefined4 *)(puVar43 + -0x2c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar43 + -0x2c)" ( (binary_expression "puVar43 + -0x2c" identifier + number_literal) )))) = (pointer_expression "*puVar7" * identifier)) ;) (expression_statement "pmVar17 = (mp_ptr)phVar31;" (assignment_expression "pmVar17 = (mp_ptr)phVar31" identifier = (cast_expression "(mp_ptr)phVar31" ( (type_descriptor "mp_ptr" type_identifier) ) identifier)) ;) (expression_statement "pmVar36 = (mp_ptr)phVar31;" (assignment_expression "pmVar36 = (mp_ptr)phVar31" identifier = (cast_expression "(mp_ptr)phVar31" ( (type_descriptor "mp_ptr" type_identifier) ) identifier)) ;) (if_statement "if (0 < (int)phVar31) {\n    if (pmVar25[(int)((int)phVar31 + -1)] == 0) {\n      pmVar8 = pmVar25 + (int)phVar31;\n      do {\n        pmVar36 = (mp_ptr)((int)pmVar36 + -1);\n        if (pmVar36 == (mp_ptr)0x0) break;\n        pmVar26 = pmVar8 + -2;\n        pmVar8 = pmVar8 + -1;\n      } while (*pmVar26 == 0);\n    }\n    if (pmVar28[(int)((int)phVar31 + -1)] == 0) {\n      pmVar8 = pmVar28 + (int)phVar31;\n      do {\n        pmVar17 = (mp_ptr)((int)pmVar17 + -1);\n        if (pmVar17 == (mp_ptr)0x0) break;\n        pmVar26 = pmVar8 + -2;\n        pmVar8 = pmVar8 + -1;\n      } while (*pmVar26 == 0);\n    }\n  }" if (parenthesized_expression "(0 < (int)phVar31)" ( (binary_expression "0 < (int)phVar31" number_literal < (cast_expression "(int)phVar31" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n    if (pmVar25[(int)((int)phVar31 + -1)] == 0) {\n      pmVar8 = pmVar25 + (int)phVar31;\n      do {\n        pmVar36 = (mp_ptr)((int)pmVar36 + -1);\n        if (pmVar36 == (mp_ptr)0x0) break;\n        pmVar26 = pmVar8 + -2;\n        pmVar8 = pmVar8 + -1;\n      } while (*pmVar26 == 0);\n    }\n    if (pmVar28[(int)((int)phVar31 + -1)] == 0) {\n      pmVar8 = pmVar28 + (int)phVar31;\n      do {\n        pmVar17 = (mp_ptr)((int)pmVar17 + -1);\n        if (pmVar17 == (mp_ptr)0x0) break;\n        pmVar26 = pmVar8 + -2;\n        pmVar8 = pmVar8 + -1;\n      } while (*pmVar26 == 0);\n    }\n  }" { (if_statement "if (pmVar25[(int)((int)phVar31 + -1)] == 0) {\n      pmVar8 = pmVar25 + (int)phVar31;\n      do {\n        pmVar36 = (mp_ptr)((int)pmVar36 + -1);\n        if (pmVar36 == (mp_ptr)0x0) break;\n        pmVar26 = pmVar8 + -2;\n        pmVar8 = pmVar8 + -1;\n      } while (*pmVar26 == 0);\n    }" if (parenthesized_expression "(pmVar25[(int)((int)phVar31 + -1)] == 0)" ( (binary_expression "pmVar25[(int)((int)phVar31 + -1)] == 0" (subscript_expression "pmVar25[(int)((int)phVar31 + -1)]" identifier [ (cast_expression "(int)((int)phVar31 + -1)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((int)phVar31 + -1)" ( (binary_expression "(int)phVar31 + -1" (cast_expression "(int)phVar31" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))) ]) == number_literal) )) (compound_statement "{\n      pmVar8 = pmVar25 + (int)phVar31;\n      do {\n        pmVar36 = (mp_ptr)((int)pmVar36 + -1);\n        if (pmVar36 == (mp_ptr)0x0) break;\n        pmVar26 = pmVar8 + -2;\n        pmVar8 = pmVar8 + -1;\n      } while (*pmVar26 == 0);\n    }" { (expression_statement "pmVar8 = pmVar25 + (int)phVar31;" (assignment_expression "pmVar8 = pmVar25 + (int)phVar31" identifier = (binary_expression "pmVar25 + (int)phVar31" identifier + (cast_expression "(int)phVar31" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (do_statement "do {\n        pmVar36 = (mp_ptr)((int)pmVar36 + -1);\n        if (pmVar36 == (mp_ptr)0x0) break;\n        pmVar26 = pmVar8 + -2;\n        pmVar8 = pmVar8 + -1;\n      } while (*pmVar26 == 0);" do (compound_statement "{\n        pmVar36 = (mp_ptr)((int)pmVar36 + -1);\n        if (pmVar36 == (mp_ptr)0x0) break;\n        pmVar26 = pmVar8 + -2;\n        pmVar8 = pmVar8 + -1;\n      }" { (expression_statement "pmVar36 = (mp_ptr)((int)pmVar36 + -1);" (assignment_expression "pmVar36 = (mp_ptr)((int)pmVar36 + -1)" identifier = (call_expression "(mp_ptr)((int)pmVar36 + -1)" (parenthesized_expression "(mp_ptr)" ( identifier )) (argument_list "((int)pmVar36 + -1)" ( (binary_expression "(int)pmVar36 + -1" (cast_expression "(int)pmVar36" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (if_statement "if (pmVar36 == (mp_ptr)0x0) break;" if (parenthesized_expression "(pmVar36 == (mp_ptr)0x0)" ( (binary_expression "pmVar36 == (mp_ptr)0x0" identifier == (cast_expression "(mp_ptr)0x0" ( (type_descriptor "mp_ptr" type_identifier) ) number_literal)) )) (break_statement "break;" break ;)) (expression_statement "pmVar26 = pmVar8 + -2;" (assignment_expression "pmVar26 = pmVar8 + -2" identifier = (binary_expression "pmVar8 + -2" identifier + number_literal)) ;) (expression_statement "pmVar8 = pmVar8 + -1;" (assignment_expression "pmVar8 = pmVar8 + -1" identifier = (binary_expression "pmVar8 + -1" identifier + number_literal)) ;) }) while (parenthesized_expression "(*pmVar26 == 0)" ( (binary_expression "*pmVar26 == 0" (pointer_expression "*pmVar26" * identifier) == number_literal) )) ;) })) (if_statement "if (pmVar28[(int)((int)phVar31 + -1)] == 0) {\n      pmVar8 = pmVar28 + (int)phVar31;\n      do {\n        pmVar17 = (mp_ptr)((int)pmVar17 + -1);\n        if (pmVar17 == (mp_ptr)0x0) break;\n        pmVar26 = pmVar8 + -2;\n        pmVar8 = pmVar8 + -1;\n      } while (*pmVar26 == 0);\n    }" if (parenthesized_expression "(pmVar28[(int)((int)phVar31 + -1)] == 0)" ( (binary_expression "pmVar28[(int)((int)phVar31 + -1)] == 0" (subscript_expression "pmVar28[(int)((int)phVar31 + -1)]" identifier [ (cast_expression "(int)((int)phVar31 + -1)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((int)phVar31 + -1)" ( (binary_expression "(int)phVar31 + -1" (cast_expression "(int)phVar31" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))) ]) == number_literal) )) (compound_statement "{\n      pmVar8 = pmVar28 + (int)phVar31;\n      do {\n        pmVar17 = (mp_ptr)((int)pmVar17 + -1);\n        if (pmVar17 == (mp_ptr)0x0) break;\n        pmVar26 = pmVar8 + -2;\n        pmVar8 = pmVar8 + -1;\n      } while (*pmVar26 == 0);\n    }" { (expression_statement "pmVar8 = pmVar28 + (int)phVar31;" (assignment_expression "pmVar8 = pmVar28 + (int)phVar31" identifier = (binary_expression "pmVar28 + (int)phVar31" identifier + (cast_expression "(int)phVar31" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (do_statement "do {\n        pmVar17 = (mp_ptr)((int)pmVar17 + -1);\n        if (pmVar17 == (mp_ptr)0x0) break;\n        pmVar26 = pmVar8 + -2;\n        pmVar8 = pmVar8 + -1;\n      } while (*pmVar26 == 0);" do (compound_statement "{\n        pmVar17 = (mp_ptr)((int)pmVar17 + -1);\n        if (pmVar17 == (mp_ptr)0x0) break;\n        pmVar26 = pmVar8 + -2;\n        pmVar8 = pmVar8 + -1;\n      }" { (expression_statement "pmVar17 = (mp_ptr)((int)pmVar17 + -1);" (assignment_expression "pmVar17 = (mp_ptr)((int)pmVar17 + -1)" identifier = (call_expression "(mp_ptr)((int)pmVar17 + -1)" (parenthesized_expression "(mp_ptr)" ( identifier )) (argument_list "((int)pmVar17 + -1)" ( (binary_expression "(int)pmVar17 + -1" (cast_expression "(int)pmVar17" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (if_statement "if (pmVar17 == (mp_ptr)0x0) break;" if (parenthesized_expression "(pmVar17 == (mp_ptr)0x0)" ( (binary_expression "pmVar17 == (mp_ptr)0x0" identifier == (cast_expression "(mp_ptr)0x0" ( (type_descriptor "mp_ptr" type_identifier) ) number_literal)) )) (break_statement "break;" break ;)) (expression_statement "pmVar26 = pmVar8 + -2;" (assignment_expression "pmVar26 = pmVar8 + -2" identifier = (binary_expression "pmVar8 + -2" identifier + number_literal)) ;) (expression_statement "pmVar8 = pmVar8 + -1;" (assignment_expression "pmVar8 = pmVar8 + -1" identifier = (binary_expression "pmVar8 + -1" identifier + number_literal)) ;) }) while (parenthesized_expression "(*pmVar26 == 0)" ( (binary_expression "*pmVar26 == 0" (pointer_expression "*pmVar26" * identifier) == number_literal) )) ;) })) })) (expression_statement "iVar40 = *(int *)(iVar13 + 4);" (assignment_expression "iVar40 = *(int *)(iVar13 + 4)" identifier = (pointer_expression "*(int *)(iVar13 + 4)" * (cast_expression "(int *)(iVar13 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar13 + 4)" ( (binary_expression "iVar13 + 4" identifier + number_literal) ))))) ;) (expression_statement "iVar32 = 8;" (assignment_expression "iVar32 = 8" identifier = number_literal) ;) (do_statement "do {\n    iVar29 = iVar32 + -8;\n    do {\n      iVar16 = iVar40;\n      if (0 < iVar40) {\n        iVar9 = *(int *)(iVar13 + iVar29 + 8);\n        iVar15 = *(int *)(iVar9 + iVar40 * 4 + -4);\n        iVar9 = iVar9 + iVar40 * 4;\n        while (iVar15 == 0) {\n          iVar16 = iVar16 + -1;\n          if (iVar16 == 0) break;\n          iVar15 = *(int *)(iVar9 + -8);\n          iVar9 = iVar9 + -4;\n        }\n      }\n      iVar9 = iVar29 + -0x3c;\n      iVar29 = iVar29 + 4;\n      *(int *)(puVar43 + iVar9) = iVar16;\n    } while (iVar32 != iVar29);\n    iVar32 = iVar32 + 8;\n    iVar29 = *(int *)(puVar43 + -0x34);\n  } while (iVar32 != 0x18);" do (compound_statement "{\n    iVar29 = iVar32 + -8;\n    do {\n      iVar16 = iVar40;\n      if (0 < iVar40) {\n        iVar9 = *(int *)(iVar13 + iVar29 + 8);\n        iVar15 = *(int *)(iVar9 + iVar40 * 4 + -4);\n        iVar9 = iVar9 + iVar40 * 4;\n        while (iVar15 == 0) {\n          iVar16 = iVar16 + -1;\n          if (iVar16 == 0) break;\n          iVar15 = *(int *)(iVar9 + -8);\n          iVar9 = iVar9 + -4;\n        }\n      }\n      iVar9 = iVar29 + -0x3c;\n      iVar29 = iVar29 + 4;\n      *(int *)(puVar43 + iVar9) = iVar16;\n    } while (iVar32 != iVar29);\n    iVar32 = iVar32 + 8;\n    iVar29 = *(int *)(puVar43 + -0x34);\n  }" { (expression_statement "iVar29 = iVar32 + -8;" (assignment_expression "iVar29 = iVar32 + -8" identifier = (binary_expression "iVar32 + -8" identifier + number_literal)) ;) (do_statement "do {\n      iVar16 = iVar40;\n      if (0 < iVar40) {\n        iVar9 = *(int *)(iVar13 + iVar29 + 8);\n        iVar15 = *(int *)(iVar9 + iVar40 * 4 + -4);\n        iVar9 = iVar9 + iVar40 * 4;\n        while (iVar15 == 0) {\n          iVar16 = iVar16 + -1;\n          if (iVar16 == 0) break;\n          iVar15 = *(int *)(iVar9 + -8);\n          iVar9 = iVar9 + -4;\n        }\n      }\n      iVar9 = iVar29 + -0x3c;\n      iVar29 = iVar29 + 4;\n      *(int *)(puVar43 + iVar9) = iVar16;\n    } while (iVar32 != iVar29);" do (compound_statement "{\n      iVar16 = iVar40;\n      if (0 < iVar40) {\n        iVar9 = *(int *)(iVar13 + iVar29 + 8);\n        iVar15 = *(int *)(iVar9 + iVar40 * 4 + -4);\n        iVar9 = iVar9 + iVar40 * 4;\n        while (iVar15 == 0) {\n          iVar16 = iVar16 + -1;\n          if (iVar16 == 0) break;\n          iVar15 = *(int *)(iVar9 + -8);\n          iVar9 = iVar9 + -4;\n        }\n      }\n      iVar9 = iVar29 + -0x3c;\n      iVar29 = iVar29 + 4;\n      *(int *)(puVar43 + iVar9) = iVar16;\n    }" { (expression_statement "iVar16 = iVar40;" (assignment_expression "iVar16 = iVar40" identifier = identifier) ;) (if_statement "if (0 < iVar40) {\n        iVar9 = *(int *)(iVar13 + iVar29 + 8);\n        iVar15 = *(int *)(iVar9 + iVar40 * 4 + -4);\n        iVar9 = iVar9 + iVar40 * 4;\n        while (iVar15 == 0) {\n          iVar16 = iVar16 + -1;\n          if (iVar16 == 0) break;\n          iVar15 = *(int *)(iVar9 + -8);\n          iVar9 = iVar9 + -4;\n        }\n      }" if (parenthesized_expression "(0 < iVar40)" ( (binary_expression "0 < iVar40" number_literal < identifier) )) (compound_statement "{\n        iVar9 = *(int *)(iVar13 + iVar29 + 8);\n        iVar15 = *(int *)(iVar9 + iVar40 * 4 + -4);\n        iVar9 = iVar9 + iVar40 * 4;\n        while (iVar15 == 0) {\n          iVar16 = iVar16 + -1;\n          if (iVar16 == 0) break;\n          iVar15 = *(int *)(iVar9 + -8);\n          iVar9 = iVar9 + -4;\n        }\n      }" { (expression_statement "iVar9 = *(int *)(iVar13 + iVar29 + 8);" (assignment_expression "iVar9 = *(int *)(iVar13 + iVar29 + 8)" identifier = (pointer_expression "*(int *)(iVar13 + iVar29 + 8)" * (cast_expression "(int *)(iVar13 + iVar29 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar13 + iVar29 + 8)" ( (binary_expression "iVar13 + iVar29 + 8" (binary_expression "iVar13 + iVar29" identifier + identifier) + number_literal) ))))) ;) (expression_statement "iVar15 = *(int *)(iVar9 + iVar40 * 4 + -4);" (assignment_expression "iVar15 = *(int *)(iVar9 + iVar40 * 4 + -4)" identifier = (pointer_expression "*(int *)(iVar9 + iVar40 * 4 + -4)" * (cast_expression "(int *)(iVar9 + iVar40 * 4 + -4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar9 + iVar40 * 4 + -4)" ( (binary_expression "iVar9 + iVar40 * 4 + -4" (binary_expression "iVar9 + iVar40 * 4" identifier + (binary_expression "iVar40 * 4" identifier * number_literal)) + number_literal) ))))) ;) (expression_statement "iVar9 = iVar9 + iVar40 * 4;" (assignment_expression "iVar9 = iVar9 + iVar40 * 4" identifier = (binary_expression "iVar9 + iVar40 * 4" identifier + (binary_expression "iVar40 * 4" identifier * number_literal))) ;) (while_statement "while (iVar15 == 0) {\n          iVar16 = iVar16 + -1;\n          if (iVar16 == 0) break;\n          iVar15 = *(int *)(iVar9 + -8);\n          iVar9 = iVar9 + -4;\n        }" while (parenthesized_expression "(iVar15 == 0)" ( (binary_expression "iVar15 == 0" identifier == number_literal) )) (compound_statement "{\n          iVar16 = iVar16 + -1;\n          if (iVar16 == 0) break;\n          iVar15 = *(int *)(iVar9 + -8);\n          iVar9 = iVar9 + -4;\n        }" { (expression_statement "iVar16 = iVar16 + -1;" (assignment_expression "iVar16 = iVar16 + -1" identifier = (binary_expression "iVar16 + -1" identifier + number_literal)) ;) (if_statement "if (iVar16 == 0) break;" if (parenthesized_expression "(iVar16 == 0)" ( (binary_expression "iVar16 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar15 = *(int *)(iVar9 + -8);" (assignment_expression "iVar15 = *(int *)(iVar9 + -8)" identifier = (pointer_expression "*(int *)(iVar9 + -8)" * (cast_expression "(int *)(iVar9 + -8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar9 + -8)" ( (binary_expression "iVar9 + -8" identifier + number_literal) ))))) ;) (expression_statement "iVar9 = iVar9 + -4;" (assignment_expression "iVar9 = iVar9 + -4" identifier = (binary_expression "iVar9 + -4" identifier + number_literal)) ;) })) })) (expression_statement "iVar9 = iVar29 + -0x3c;" (assignment_expression "iVar9 = iVar29 + -0x3c" identifier = (binary_expression "iVar29 + -0x3c" identifier + number_literal)) ;) (expression_statement "iVar29 = iVar29 + 4;" (assignment_expression "iVar29 = iVar29 + 4" identifier = (binary_expression "iVar29 + 4" identifier + number_literal)) ;) (expression_statement "*(int *)(puVar43 + iVar9) = iVar16;" (assignment_expression "*(int *)(puVar43 + iVar9) = iVar16" (pointer_expression "*(int *)(puVar43 + iVar9)" * (cast_expression "(int *)(puVar43 + iVar9)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar43 + iVar9)" ( (binary_expression "puVar43 + iVar9" identifier + identifier) )))) = identifier) ;) }) while (parenthesized_expression "(iVar32 != iVar29)" ( (binary_expression "iVar32 != iVar29" identifier != identifier) )) ;) (expression_statement "iVar32 = iVar32 + 8;" (assignment_expression "iVar32 = iVar32 + 8" identifier = (binary_expression "iVar32 + 8" identifier + number_literal)) ;) (expression_statement "iVar29 = *(int *)(puVar43 + -0x34);" (assignment_expression "iVar29 = *(int *)(puVar43 + -0x34)" identifier = (pointer_expression "*(int *)(puVar43 + -0x34)" * (cast_expression "(int *)(puVar43 + -0x34)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar43 + -0x34)" ( (binary_expression "puVar43 + -0x34" identifier + number_literal) ))))) ;) }) while (parenthesized_expression "(iVar32 != 0x18)" ( (binary_expression "iVar32 != 0x18" identifier != number_literal) )) ;) (expression_statement "iVar32 = *(int *)(puVar43 + -0x38);" (assignment_expression "iVar32 = *(int *)(puVar43 + -0x38)" identifier = (pointer_expression "*(int *)(puVar43 + -0x38)" * (cast_expression "(int *)(puVar43 + -0x38)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar43 + -0x38)" ( (binary_expression "puVar43 + -0x38" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar43 + -0x40) = 0;" (assignment_expression "*(undefined4 *)(puVar43 + -0x40) = 0" (pointer_expression "*(undefined4 *)(puVar43 + -0x40)" * (cast_expression "(undefined4 *)(puVar43 + -0x40)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar43 + -0x40)" ( (binary_expression "puVar43 + -0x40" identifier + number_literal) )))) = number_literal) ;) (if_statement "if (iVar32 == 0) {\n    uVar46 = *(undefined4 *)(iVar13 + 0x10);\n    *(int *)(puVar43 + -0x74) = iVar29;\n    *(undefined4 *)(puVar43 + -0x78) = uVar46;\n    pmVar8 = pmVar28;\n    pmVar26 = pmVar17;\n    pmVar6 = pmVar25;\nLAB_0005309c:\n    iVar32 = submul(pmVar8,(mp_size_t)pmVar26,pmVar6,(mp_size_t)pmVar36,\n                    *(mp_srcptr *)(puVar43 + -0x78),*(mp_size_t *)(puVar43 + -0x74));\n    iVar40 = *(int *)(puVar43 + -0x68);\nLAB_000530b4:\n    pcVar42 = *(code **)(iVar40 + -0x7a2c);\n    puVar45 = puVar44;\n    if (*(int *)(puVar43 + -0x40) != 0) goto LAB_00053478;\n  }\n  else {\n    if (iVar29 == 0) {\n      uVar46 = *(undefined4 *)(iVar13 + 0xc);\n      *(int *)(puVar43 + -0x74) = iVar32;\n      *(undefined4 *)(puVar43 + -0x78) = uVar46;\n      pmVar8 = pmVar25;\n      pmVar26 = pmVar36;\n      pmVar6 = pmVar28;\n      pmVar36 = pmVar17;\n      goto LAB_0005309c;\n    }\n    iVar9 = *(int *)(puVar43 + -0x30);\n    pcVar42 = *(code **)(pcVar42 + 0x4454c);\n    iVar16 = (int)pmVar36 - *(int *)(puVar43 + -0x3c);\n    *(int *)(puVar43 + -0x50) = *(int *)(puVar43 + -0x3c);\n    *(int *)(puVar43 + -0x44) = iVar32;\n    if ((int)pmVar17 - iVar29 <= iVar16) {\n      iVar16 = (int)pmVar17 - iVar29;\n    }\n    iVar15 = (int)pmVar36 - iVar32;\n    if ((int)pmVar17 - iVar9 <= (int)pmVar36 - iVar32) {\n      iVar15 = (int)pmVar17 - iVar9;\n    }\n    iVar32 = iVar15 + 1;\n    if (iVar15 + 1 <= iVar16 + 1) {\n      iVar32 = iVar16 + 1;\n    }\n    pmVar17 = (mp_ptr)(*pcVar42)(iVar32 + 1);\n    iVar16 = (int)pmVar17 >> 1;\n    iVar15 = *(int *)(puVar43 + -0x68);\n    uVar46 = *(undefined4 *)(puVar43 + -0x44);\n    if (iVar16 < (int)pmVar17) {\n      if (iVar40 <= iVar16) {\n        uVar18 = ((int)pmVar17 * 3 + iVar16 + 4) * 4;\n        uVar3 = uVar18 + 7;\n        if (0x7f00 < uVar18) {\n          pcVar42 = *(code **)(iVar15 + -0x7d50);\n          goto LAB_0005305c;\n        }\n        goto LAB_00053148;\n      }\n      uVar18 = ((int)pmVar17 * 4 + 4) * 4;\n      uVar3 = uVar18 + 7;\n      if (uVar18 < 0x7f01) goto LAB_00053148;\n      pcVar42 = *(code **)(iVar15 + -0x7d50);\nLAB_0005305c:\n      *(mp_ptr *)(puVar43 + -0x48) = pmVar17;\n      *(undefined4 *)(puVar43 + -0x44) = uVar46;\n      pmVar35 = (mp_limb_t *)(*pcVar42)(puVar43 + -0x40);\n      iVar15 = *(int *)(puVar43 + -0x68);\n      pmVar17 = *(mp_ptr *)(puVar43 + -0x48);\n      uVar46 = *(undefined4 *)(puVar43 + -0x44);\n    }\n    else {\n      uVar3 = ((int)pmVar17 * 3 + 4) * 4;\n      pcVar42 = *(code **)(iVar15 + -0x7d50);\n      if (0x7f00 < uVar3) goto LAB_0005305c;\n      uVar3 = uVar3 + 7;\nLAB_00053148:\n      puVar45 = puVar43 + -(uVar3 & 0xfffffff8) + -0x88;\n      pmVar35 = (mp_limb_t *)(puVar43 + -(uVar3 & 0xfffffff8) + -0x68);\n    }\n    *(mp_limb_t **)(puVar43 + -0x44) = pmVar35 + (int)pmVar17;\n    *(mp_limb_t **)(puVar43 + -0x48) = pmVar35 + (int)pmVar17 + (int)pmVar17;\n    if ((int)pmVar17 < (int)phVar31) {\n      pcVar42 = *(code **)(iVar15 + -0x7d0c);\n      pmVar36 = (mp_ptr)((int)phVar31 - (int)pmVar17);\n      *(undefined4 *)(puVar43 + -0x5c) = uVar46;\n      *(mp_ptr *)(puVar43 + -0x58) = pmVar17;\n      *(int *)(puVar43 + -0x54) = (int)pmVar17 * 4;\n      iVar40 = (*pcVar42)(pmVar25,pmVar25,pmVar25 + (int)pmVar17,pmVar36);\n      iVar15 = *(int *)(puVar43 + -0x68);\n      iVar16 = *(int *)(puVar43 + -0x54);\n      pmVar17 = *(mp_ptr *)(puVar43 + -0x58);\n      uVar46 = *(undefined4 *)(puVar43 + -0x5c);\n      if (iVar40 == 0) {\nLAB_0005359c:\n        pcVar42 = *(code **)(iVar15 + -0x7d0c);\n      }\n      else {\n        pmVar8 = pmVar25;\n        if ((int)pmVar17 <= (int)pmVar36) {\nLAB_00053588:\n          do {\n            mVar21 = *pmVar8;\n            *pmVar8 = mVar21 + 1;\n            pmVar8 = pmVar8 + 1;\n          } while (mVar21 + 1 == 0);\n          goto LAB_0005359c;\n        }\n        pmVar6 = pmVar25 + (int)pmVar36;\n        mVar21 = *pmVar6;\n        *pmVar6 = mVar21 + 1;\n        pmVar26 = pmVar36;\n        if (mVar21 + 1 == 0) {\n          do {\n            pmVar26 = (mp_ptr)((int)pmVar26 + 1);\n            if (pmVar17 == pmVar26) goto LAB_00053588;\n            mVar21 = pmVar6[1];\n            pmVar6 = pmVar6 + 1;\n            *pmVar6 = mVar21 + 1;\n          } while (mVar21 + 1 == 0);\n          goto LAB_0005359c;\n        }\n        pcVar42 = *(code **)(iVar15 + -0x7d0c);\n      }\n      *(mp_ptr *)(puVar43 + -0x58) = pmVar17;\n      *(undefined4 *)(puVar43 + -0x54) = uVar46;\n      iVar40 = (*pcVar42)(pmVar28,pmVar28,(int)pmVar28 + iVar16,pmVar36);\n      iVar15 = *(int *)(puVar43 + -0x68);\n      uVar46 = *(undefined4 *)(puVar43 + -0x54);\n      pmVar17 = *(mp_ptr *)(puVar43 + -0x58);\n      phVar31 = (hgcd_matrix1 *)pmVar17;\n      if (iVar40 != 0) {\n        pmVar8 = pmVar28;\n        if ((int)pmVar36 < (int)pmVar17) {\n          pmVar11 = pmVar28 + (int)pmVar36;\n          mVar21 = *pmVar11 + 1;\n          *pmVar11 = mVar21;\n          while (mVar21 == 0) {\n            pmVar36 = (mp_ptr)((int)pmVar36 + 1);\n            if (pmVar17 == pmVar36) goto LAB_0005361c;\n            pmVar22 = pmVar11 + 1;\n            pmVar11 = pmVar11 + 1;\n            mVar21 = *pmVar22 + 1;\n            *pmVar11 = mVar21;\n          }\n        }\n        else {\nLAB_0005361c:\n          do {\n            mVar21 = *pmVar8;\n            *pmVar8 = mVar21 + 1;\n            pmVar8 = pmVar8 + 1;\n          } while (mVar21 + 1 == 0);\n        }\n      }\n    }\n    uVar10 = *(undefined4 *)(iVar13 + 0x14);\n    pcVar42 = *(code **)(iVar15 + -0x7cd8);\n    *(undefined4 *)(puVar43 + -0x5c) = uVar46;\n    *(mp_ptr *)(puVar43 + -0x54) = pmVar17;\n    *(undefined4 *)(puVar45 + 0x18) = *(undefined4 *)(puVar43 + -0x48);\n    *(undefined4 *)(puVar45 + 0x10) = uVar10;\n    *(int *)(puVar45 + 0x14) = iVar9;\n    (*pcVar42)(pmVar35,pmVar17,pmVar25,phVar31);\n    uVar46 = *(undefined4 *)(iVar13 + 0xc);\n    uVar33 = *(undefined4 *)(puVar43 + -0x54);\n    uVar34 = *(undefined4 *)(puVar43 + -0x5c);\n    uVar10 = *(undefined4 *)(puVar43 + -0x48);\n    pcVar42 = *(code **)(*(int *)(puVar43 + -0x68) + -0x7cd8);\n    uVar20 = *(undefined4 *)(puVar43 + -0x44);\n    *(undefined4 *)(puVar43 + -0x58) = uVar33;\n    *(undefined4 *)(puVar45 + 0x14) = uVar34;\n    *(undefined4 *)(puVar43 + -0x54) = uVar34;\n    *(undefined4 *)(puVar45 + 0x10) = uVar46;\n    *(undefined4 *)(puVar45 + 0x18) = uVar10;\n    (*pcVar42)(uVar20,uVar33,pmVar28,phVar31);\n    iVar40 = *(int *)(puVar43 + -0x58);\n    iVar15 = *(int *)(puVar43 + -0x68);\n    iVar16 = *(int *)(puVar43 + -0x54);\n    if ((iVar9 + (int)phVar31 < iVar40) && (iVar9 != iVar40 - (int)phVar31)) {\n      iVar41 = (iVar40 - (int)phVar31) - iVar9;\n      pmVar11 = pmVar35 + (int)(iVar9 + (int)phVar31);\n      do {\n        iVar41 = iVar41 + -1;\n        *pmVar11 = 0;\n        pmVar11 = pmVar11 + 1;\n      } while (iVar41 != 0);\n    }\n    pcVar42 = *(code **)(iVar15 + -0x7b2c);\n    if (iVar16 + (int)phVar31 < iVar40) {\n      if (iVar16 != iVar40 - (int)phVar31) {\n        iVar9 = (iVar40 - (int)phVar31) - iVar16;\n        puVar7 = (undefined4 *)(*(int *)(puVar43 + -0x44) + (int)(iVar16 + (int)phVar31) * 4);\n        do {\n          iVar9 = iVar9 + -1;\n          *puVar7 = 0;\n          puVar7 = puVar7 + 1;\n        } while (iVar9 != 0);\n        pcVar42 = *(code **)(iVar15 + -0x7b2c);\n      }\n    }\n    *(int *)(puVar43 + -0x54) = iVar40;\n    uVar3 = (*pcVar42)(pmVar35,pmVar35,*(undefined4 *)(puVar43 + -0x44),iVar40);\n    uVar18 = *pmVar35;\n    iVar40 = *(int *)(puVar43 + -0x68);\n    uVar46 = *(undefined4 *)(puVar43 + -0x54);\n    *pmVar35 = uVar18 - uVar3;\n    pmVar11 = pmVar35;\n    if (uVar18 < uVar3) {\n      do {\n        pmVar11 = pmVar11 + 1;\n        mVar21 = *pmVar11;\n        *pmVar11 = mVar21 - 1;\n      } while (mVar21 == 0);\n    }\n    uVar10 = *(undefined4 *)(iVar13 + 0x10);\n    pcVar42 = *(code **)(iVar40 + -0x7cd8);\n    uVar20 = *(undefined4 *)(puVar43 + -0x44);\n    *(undefined4 *)(puVar43 + -0x54) = uVar46;\n    *(undefined4 *)(puVar45 + 0x18) = *(undefined4 *)(puVar43 + -0x48);\n    *(int *)(puVar45 + 0x14) = iVar29;\n    *(undefined4 *)(puVar45 + 0x10) = uVar10;\n    (*pcVar42)(uVar20,uVar46,pmVar25,phVar31);\n    iVar40 = *(int *)(puVar43 + -0x68);\n    uVar46 = *(undefined4 *)(puVar43 + -0x54);\n    if (iVar32 != 0) {\n      iVar16 = iVar32 + -1;\n      mVar21 = *pmVar35;\n      pmVar22 = pmVar25;\n      pmVar11 = pmVar35;\n      if (iVar16 == 0) {\n        *pmVar25 = mVar21;\n      }\n      else {\n        do {\n          *pmVar22 = mVar21;\n          iVar16 = iVar16 + -1;\n          mVar21 = pmVar11[1];\n          pmVar22 = pmVar22 + 1;\n          pmVar11 = pmVar11 + 1;\n        } while (iVar16 != 0);\n        pmVar25[iVar32 + -1] = mVar21;\n      }\n    }\n    uVar10 = *(undefined4 *)(iVar13 + 8);\n    pcVar42 = *(code **)(iVar40 + -0x7cd8);\n    *(undefined4 *)(puVar45 + 0x18) = *(undefined4 *)(puVar43 + -0x48);\n    *(undefined4 *)(puVar43 + -0x48) = uVar46;\n    *(undefined4 *)(puVar45 + 0x10) = uVar10;\n    *(undefined4 *)(puVar45 + 0x14) = *(undefined4 *)(puVar43 + -0x50);\n    (*pcVar42)(pmVar35,uVar46,pmVar28,phVar31);\n    iVar40 = *(int *)(puVar43 + -0x48);\n    iVar16 = *(int *)(puVar43 + -0x68);\n    if ((int)phVar31 + iVar29 < iVar40) {\n      if (iVar29 != iVar40 - (int)phVar31) {\n        iVar9 = (iVar40 - (int)phVar31) - iVar29;\n        puVar7 = (undefined4 *)(*(int *)(puVar43 + -0x44) + (int)((int)phVar31 + iVar29) * 4);\n        do {\n          iVar9 = iVar9 + -1;\n          *puVar7 = 0;\n          puVar7 = puVar7 + 1;\n        } while (iVar9 != 0);\n      }\n    }\n    pcVar42 = *(code **)(iVar16 + -0x7b2c);\n    if (*(int *)(puVar43 + -0x50) + (int)phVar31 < iVar40) {\n      if (*(int *)(puVar43 + -0x50) != iVar40 - (int)phVar31) {\n        iVar29 = (iVar40 - (int)phVar31) - *(int *)(puVar43 + -0x50);\n        pmVar11 = pmVar35 + (int)(*(int *)(puVar43 + -0x50) + (int)phVar31);\n        do {\n          iVar29 = iVar29 + -1;\n          *pmVar11 = 0;\n          pmVar11 = pmVar11 + 1;\n        } while (iVar29 != 0);\n        pcVar42 = *(code **)(iVar16 + -0x7b2c);\n      }\n    }\n    uVar3 = (*pcVar42)(pmVar35,pmVar35,*(undefined4 *)(puVar43 + -0x44),iVar40);\n    uVar18 = *pmVar35;\n    iVar40 = *(int *)(puVar43 + -0x68);\n    pmVar26 = (mp_ptr)(uVar18 - uVar3);\n    *pmVar35 = (mp_limb_t)pmVar26;\n    pmVar11 = pmVar35;\n    if (uVar18 < uVar3) {\n      do {\n        pmVar11 = pmVar11 + 1;\n        mVar21 = *pmVar11;\n        pmVar26 = (mp_ptr)(mVar21 - 1);\n        *pmVar11 = (mp_limb_t)pmVar26;\n      } while (mVar21 == 0);\n    }\n    iVar29 = iVar32 + -1;\n    if (iVar32 == 0) {\n      iVar29 = -4;\n    }\n    else {\n      pmVar26 = (mp_ptr)*pmVar35;\n      pmVar17 = pmVar28;\n      if (iVar29 != 0) {\n        do {\n          pmVar35 = pmVar35 + 1;\n          *pmVar17 = (mp_limb_t)pmVar26;\n          iVar29 = iVar29 + -1;\n          pmVar26 = (mp_ptr)*pmVar35;\n          pmVar17 = pmVar17 + 1;\n        } while (iVar29 != 0);\n        pmVar17 = pmVar28 + iVar32 + -1;\n      }\n      *pmVar17 = (mp_limb_t)pmVar26;\n      iVar29 = iVar32 * 4 + -4;\n    }\n    puVar44 = puVar45;\n    if (*(int *)((int)pmVar25 + iVar29) != 0 || *(int *)((int)pmVar28 + iVar29) != 0)\n    goto LAB_000530b4;\n    pmVar25 = pmVar25 + iVar32 + -2;\n    pmVar28 = pmVar28 + iVar32 + -2;\n    do {\n      mVar21 = *pmVar25;\n      iVar32 = iVar32 + -1;\n      mVar23 = *pmVar28;\n      pmVar25 = pmVar25 + -1;\n      pmVar28 = pmVar28 + -1;\n    } while (mVar21 == 0 && mVar23 == 0);\n    piVar38 = *(int **)(puVar43 + -0x4c);\n    if (*(int *)(puVar43 + -0x40) == 0) goto LAB_000530c4;\n    pcVar42 = *(code **)(iVar40 + -0x7a2c);\nLAB_00053478:\n    (*pcVar42)();\n    iVar40 = *(int *)(puVar43 + -0x68);\n    puVar45 = puVar44;\n  }" if (parenthesized_expression "(iVar32 == 0)" ( (binary_expression "iVar32 == 0" identifier == number_literal) )) (compound_statement "{\n    uVar46 = *(undefined4 *)(iVar13 + 0x10);\n    *(int *)(puVar43 + -0x74) = iVar29;\n    *(undefined4 *)(puVar43 + -0x78) = uVar46;\n    pmVar8 = pmVar28;\n    pmVar26 = pmVar17;\n    pmVar6 = pmVar25;\nLAB_0005309c:\n    iVar32 = submul(pmVar8,(mp_size_t)pmVar26,pmVar6,(mp_size_t)pmVar36,\n                    *(mp_srcptr *)(puVar43 + -0x78),*(mp_size_t *)(puVar43 + -0x74));\n    iVar40 = *(int *)(puVar43 + -0x68);\nLAB_000530b4:\n    pcVar42 = *(code **)(iVar40 + -0x7a2c);\n    puVar45 = puVar44;\n    if (*(int *)(puVar43 + -0x40) != 0) goto LAB_00053478;\n  }" { (expression_statement "uVar46 = *(undefined4 *)(iVar13 + 0x10);" (assignment_expression "uVar46 = *(undefined4 *)(iVar13 + 0x10)" identifier = (pointer_expression "*(undefined4 *)(iVar13 + 0x10)" * (cast_expression "(undefined4 *)(iVar13 + 0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar13 + 0x10)" ( (binary_expression "iVar13 + 0x10" identifier + number_literal) ))))) ;) (expression_statement "*(int *)(puVar43 + -0x74) = iVar29;" (assignment_expression "*(int *)(puVar43 + -0x74) = iVar29" (pointer_expression "*(int *)(puVar43 + -0x74)" * (cast_expression "(int *)(puVar43 + -0x74)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar43 + -0x74)" ( (binary_expression "puVar43 + -0x74" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar43 + -0x78) = uVar46;" (assignment_expression "*(undefined4 *)(puVar43 + -0x78) = uVar46" (pointer_expression "*(undefined4 *)(puVar43 + -0x78)" * (cast_expression "(undefined4 *)(puVar43 + -0x78)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar43 + -0x78)" ( (binary_expression "puVar43 + -0x78" identifier + number_literal) )))) = identifier) ;) (expression_statement "pmVar8 = pmVar28;" (assignment_expression "pmVar8 = pmVar28" identifier = identifier) ;) (expression_statement "pmVar26 = pmVar17;" (assignment_expression "pmVar26 = pmVar17" identifier = identifier) ;) (expression_statement "pmVar6 = pmVar25;" (assignment_expression "pmVar6 = pmVar25" identifier = identifier) ;) (labeled_statement "LAB_0005309c:\n    iVar32 = submul(pmVar8,(mp_size_t)pmVar26,pmVar6,(mp_size_t)pmVar36,\n                    *(mp_srcptr *)(puVar43 + -0x78),*(mp_size_t *)(puVar43 + -0x74));" statement_identifier : (expression_statement "iVar32 = submul(pmVar8,(mp_size_t)pmVar26,pmVar6,(mp_size_t)pmVar36,\n                    *(mp_srcptr *)(puVar43 + -0x78),*(mp_size_t *)(puVar43 + -0x74));" (assignment_expression "iVar32 = submul(pmVar8,(mp_size_t)pmVar26,pmVar6,(mp_size_t)pmVar36,\n                    *(mp_srcptr *)(puVar43 + -0x78),*(mp_size_t *)(puVar43 + -0x74))" identifier = (call_expression "submul(pmVar8,(mp_size_t)pmVar26,pmVar6,(mp_size_t)pmVar36,\n                    *(mp_srcptr *)(puVar43 + -0x78),*(mp_size_t *)(puVar43 + -0x74))" identifier (argument_list "(pmVar8,(mp_size_t)pmVar26,pmVar6,(mp_size_t)pmVar36,\n                    *(mp_srcptr *)(puVar43 + -0x78),*(mp_size_t *)(puVar43 + -0x74))" ( identifier , (cast_expression "(mp_size_t)pmVar26" ( (type_descriptor "mp_size_t" type_identifier) ) identifier) , identifier , (cast_expression "(mp_size_t)pmVar36" ( (type_descriptor "mp_size_t" type_identifier) ) identifier) , (pointer_expression "*(mp_srcptr *)(puVar43 + -0x78)" * (cast_expression "(mp_srcptr *)(puVar43 + -0x78)" ( (type_descriptor "mp_srcptr *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar43 + -0x78)" ( (binary_expression "puVar43 + -0x78" identifier + number_literal) )))) , (pointer_expression "*(mp_size_t *)(puVar43 + -0x74)" * (cast_expression "(mp_size_t *)(puVar43 + -0x74)" ( (type_descriptor "mp_size_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar43 + -0x74)" ( (binary_expression "puVar43 + -0x74" identifier + number_literal) )))) )))) ;)) (expression_statement "iVar40 = *(int *)(puVar43 + -0x68);" (assignment_expression "iVar40 = *(int *)(puVar43 + -0x68)" identifier = (pointer_expression "*(int *)(puVar43 + -0x68)" * (cast_expression "(int *)(puVar43 + -0x68)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar43 + -0x68)" ( (binary_expression "puVar43 + -0x68" identifier + number_literal) ))))) ;) (labeled_statement "LAB_000530b4:\n    pcVar42 = *(code **)(iVar40 + -0x7a2c);" statement_identifier : (expression_statement "pcVar42 = *(code **)(iVar40 + -0x7a2c);" (assignment_expression "pcVar42 = *(code **)(iVar40 + -0x7a2c)" identifier = (pointer_expression "*(code **)(iVar40 + -0x7a2c)" * (cast_expression "(code **)(iVar40 + -0x7a2c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar40 + -0x7a2c)" ( (binary_expression "iVar40 + -0x7a2c" identifier + number_literal) ))))) ;)) (expression_statement "puVar45 = puVar44;" (assignment_expression "puVar45 = puVar44" identifier = identifier) ;) (if_statement "if (*(int *)(puVar43 + -0x40) != 0) goto LAB_00053478;" if (parenthesized_expression "(*(int *)(puVar43 + -0x40) != 0)" ( (binary_expression "*(int *)(puVar43 + -0x40) != 0" (pointer_expression "*(int *)(puVar43 + -0x40)" * (cast_expression "(int *)(puVar43 + -0x40)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar43 + -0x40)" ( (binary_expression "puVar43 + -0x40" identifier + number_literal) )))) != number_literal) )) (goto_statement "goto LAB_00053478;" goto statement_identifier ;)) }) (else_clause "else {\n    if (iVar29 == 0) {\n      uVar46 = *(undefined4 *)(iVar13 + 0xc);\n      *(int *)(puVar43 + -0x74) = iVar32;\n      *(undefined4 *)(puVar43 + -0x78) = uVar46;\n      pmVar8 = pmVar25;\n      pmVar26 = pmVar36;\n      pmVar6 = pmVar28;\n      pmVar36 = pmVar17;\n      goto LAB_0005309c;\n    }\n    iVar9 = *(int *)(puVar43 + -0x30);\n    pcVar42 = *(code **)(pcVar42 + 0x4454c);\n    iVar16 = (int)pmVar36 - *(int *)(puVar43 + -0x3c);\n    *(int *)(puVar43 + -0x50) = *(int *)(puVar43 + -0x3c);\n    *(int *)(puVar43 + -0x44) = iVar32;\n    if ((int)pmVar17 - iVar29 <= iVar16) {\n      iVar16 = (int)pmVar17 - iVar29;\n    }\n    iVar15 = (int)pmVar36 - iVar32;\n    if ((int)pmVar17 - iVar9 <= (int)pmVar36 - iVar32) {\n      iVar15 = (int)pmVar17 - iVar9;\n    }\n    iVar32 = iVar15 + 1;\n    if (iVar15 + 1 <= iVar16 + 1) {\n      iVar32 = iVar16 + 1;\n    }\n    pmVar17 = (mp_ptr)(*pcVar42)(iVar32 + 1);\n    iVar16 = (int)pmVar17 >> 1;\n    iVar15 = *(int *)(puVar43 + -0x68);\n    uVar46 = *(undefined4 *)(puVar43 + -0x44);\n    if (iVar16 < (int)pmVar17) {\n      if (iVar40 <= iVar16) {\n        uVar18 = ((int)pmVar17 * 3 + iVar16 + 4) * 4;\n        uVar3 = uVar18 + 7;\n        if (0x7f00 < uVar18) {\n          pcVar42 = *(code **)(iVar15 + -0x7d50);\n          goto LAB_0005305c;\n        }\n        goto LAB_00053148;\n      }\n      uVar18 = ((int)pmVar17 * 4 + 4) * 4;\n      uVar3 = uVar18 + 7;\n      if (uVar18 < 0x7f01) goto LAB_00053148;\n      pcVar42 = *(code **)(iVar15 + -0x7d50);\nLAB_0005305c:\n      *(mp_ptr *)(puVar43 + -0x48) = pmVar17;\n      *(undefined4 *)(puVar43 + -0x44) = uVar46;\n      pmVar35 = (mp_limb_t *)(*pcVar42)(puVar43 + -0x40);\n      iVar15 = *(int *)(puVar43 + -0x68);\n      pmVar17 = *(mp_ptr *)(puVar43 + -0x48);\n      uVar46 = *(undefined4 *)(puVar43 + -0x44);\n    }\n    else {\n      uVar3 = ((int)pmVar17 * 3 + 4) * 4;\n      pcVar42 = *(code **)(iVar15 + -0x7d50);\n      if (0x7f00 < uVar3) goto LAB_0005305c;\n      uVar3 = uVar3 + 7;\nLAB_00053148:\n      puVar45 = puVar43 + -(uVar3 & 0xfffffff8) + -0x88;\n      pmVar35 = (mp_limb_t *)(puVar43 + -(uVar3 & 0xfffffff8) + -0x68);\n    }\n    *(mp_limb_t **)(puVar43 + -0x44) = pmVar35 + (int)pmVar17;\n    *(mp_limb_t **)(puVar43 + -0x48) = pmVar35 + (int)pmVar17 + (int)pmVar17;\n    if ((int)pmVar17 < (int)phVar31) {\n      pcVar42 = *(code **)(iVar15 + -0x7d0c);\n      pmVar36 = (mp_ptr)((int)phVar31 - (int)pmVar17);\n      *(undefined4 *)(puVar43 + -0x5c) = uVar46;\n      *(mp_ptr *)(puVar43 + -0x58) = pmVar17;\n      *(int *)(puVar43 + -0x54) = (int)pmVar17 * 4;\n      iVar40 = (*pcVar42)(pmVar25,pmVar25,pmVar25 + (int)pmVar17,pmVar36);\n      iVar15 = *(int *)(puVar43 + -0x68);\n      iVar16 = *(int *)(puVar43 + -0x54);\n      pmVar17 = *(mp_ptr *)(puVar43 + -0x58);\n      uVar46 = *(undefined4 *)(puVar43 + -0x5c);\n      if (iVar40 == 0) {\nLAB_0005359c:\n        pcVar42 = *(code **)(iVar15 + -0x7d0c);\n      }\n      else {\n        pmVar8 = pmVar25;\n        if ((int)pmVar17 <= (int)pmVar36) {\nLAB_00053588:\n          do {\n            mVar21 = *pmVar8;\n            *pmVar8 = mVar21 + 1;\n            pmVar8 = pmVar8 + 1;\n          } while (mVar21 + 1 == 0);\n          goto LAB_0005359c;\n        }\n        pmVar6 = pmVar25 + (int)pmVar36;\n        mVar21 = *pmVar6;\n        *pmVar6 = mVar21 + 1;\n        pmVar26 = pmVar36;\n        if (mVar21 + 1 == 0) {\n          do {\n            pmVar26 = (mp_ptr)((int)pmVar26 + 1);\n            if (pmVar17 == pmVar26) goto LAB_00053588;\n            mVar21 = pmVar6[1];\n            pmVar6 = pmVar6 + 1;\n            *pmVar6 = mVar21 + 1;\n          } while (mVar21 + 1 == 0);\n          goto LAB_0005359c;\n        }\n        pcVar42 = *(code **)(iVar15 + -0x7d0c);\n      }\n      *(mp_ptr *)(puVar43 + -0x58) = pmVar17;\n      *(undefined4 *)(puVar43 + -0x54) = uVar46;\n      iVar40 = (*pcVar42)(pmVar28,pmVar28,(int)pmVar28 + iVar16,pmVar36);\n      iVar15 = *(int *)(puVar43 + -0x68);\n      uVar46 = *(undefined4 *)(puVar43 + -0x54);\n      pmVar17 = *(mp_ptr *)(puVar43 + -0x58);\n      phVar31 = (hgcd_matrix1 *)pmVar17;\n      if (iVar40 != 0) {\n        pmVar8 = pmVar28;\n        if ((int)pmVar36 < (int)pmVar17) {\n          pmVar11 = pmVar28 + (int)pmVar36;\n          mVar21 = *pmVar11 + 1;\n          *pmVar11 = mVar21;\n          while (mVar21 == 0) {\n            pmVar36 = (mp_ptr)((int)pmVar36 + 1);\n            if (pmVar17 == pmVar36) goto LAB_0005361c;\n            pmVar22 = pmVar11 + 1;\n            pmVar11 = pmVar11 + 1;\n            mVar21 = *pmVar22 + 1;\n            *pmVar11 = mVar21;\n          }\n        }\n        else {\nLAB_0005361c:\n          do {\n            mVar21 = *pmVar8;\n            *pmVar8 = mVar21 + 1;\n            pmVar8 = pmVar8 + 1;\n          } while (mVar21 + 1 == 0);\n        }\n      }\n    }\n    uVar10 = *(undefined4 *)(iVar13 + 0x14);\n    pcVar42 = *(code **)(iVar15 + -0x7cd8);\n    *(undefined4 *)(puVar43 + -0x5c) = uVar46;\n    *(mp_ptr *)(puVar43 + -0x54) = pmVar17;\n    *(undefined4 *)(puVar45 + 0x18) = *(undefined4 *)(puVar43 + -0x48);\n    *(undefined4 *)(puVar45 + 0x10) = uVar10;\n    *(int *)(puVar45 + 0x14) = iVar9;\n    (*pcVar42)(pmVar35,pmVar17,pmVar25,phVar31);\n    uVar46 = *(undefined4 *)(iVar13 + 0xc);\n    uVar33 = *(undefined4 *)(puVar43 + -0x54);\n    uVar34 = *(undefined4 *)(puVar43 + -0x5c);\n    uVar10 = *(undefined4 *)(puVar43 + -0x48);\n    pcVar42 = *(code **)(*(int *)(puVar43 + -0x68) + -0x7cd8);\n    uVar20 = *(undefined4 *)(puVar43 + -0x44);\n    *(undefined4 *)(puVar43 + -0x58) = uVar33;\n    *(undefined4 *)(puVar45 + 0x14) = uVar34;\n    *(undefined4 *)(puVar43 + -0x54) = uVar34;\n    *(undefined4 *)(puVar45 + 0x10) = uVar46;\n    *(undefined4 *)(puVar45 + 0x18) = uVar10;\n    (*pcVar42)(uVar20,uVar33,pmVar28,phVar31);\n    iVar40 = *(int *)(puVar43 + -0x58);\n    iVar15 = *(int *)(puVar43 + -0x68);\n    iVar16 = *(int *)(puVar43 + -0x54);\n    if ((iVar9 + (int)phVar31 < iVar40) && (iVar9 != iVar40 - (int)phVar31)) {\n      iVar41 = (iVar40 - (int)phVar31) - iVar9;\n      pmVar11 = pmVar35 + (int)(iVar9 + (int)phVar31);\n      do {\n        iVar41 = iVar41 + -1;\n        *pmVar11 = 0;\n        pmVar11 = pmVar11 + 1;\n      } while (iVar41 != 0);\n    }\n    pcVar42 = *(code **)(iVar15 + -0x7b2c);\n    if (iVar16 + (int)phVar31 < iVar40) {\n      if (iVar16 != iVar40 - (int)phVar31) {\n        iVar9 = (iVar40 - (int)phVar31) - iVar16;\n        puVar7 = (undefined4 *)(*(int *)(puVar43 + -0x44) + (int)(iVar16 + (int)phVar31) * 4);\n        do {\n          iVar9 = iVar9 + -1;\n          *puVar7 = 0;\n          puVar7 = puVar7 + 1;\n        } while (iVar9 != 0);\n        pcVar42 = *(code **)(iVar15 + -0x7b2c);\n      }\n    }\n    *(int *)(puVar43 + -0x54) = iVar40;\n    uVar3 = (*pcVar42)(pmVar35,pmVar35,*(undefined4 *)(puVar43 + -0x44),iVar40);\n    uVar18 = *pmVar35;\n    iVar40 = *(int *)(puVar43 + -0x68);\n    uVar46 = *(undefined4 *)(puVar43 + -0x54);\n    *pmVar35 = uVar18 - uVar3;\n    pmVar11 = pmVar35;\n    if (uVar18 < uVar3) {\n      do {\n        pmVar11 = pmVar11 + 1;\n        mVar21 = *pmVar11;\n        *pmVar11 = mVar21 - 1;\n      } while (mVar21 == 0);\n    }\n    uVar10 = *(undefined4 *)(iVar13 + 0x10);\n    pcVar42 = *(code **)(iVar40 + -0x7cd8);\n    uVar20 = *(undefined4 *)(puVar43 + -0x44);\n    *(undefined4 *)(puVar43 + -0x54) = uVar46;\n    *(undefined4 *)(puVar45 + 0x18) = *(undefined4 *)(puVar43 + -0x48);\n    *(int *)(puVar45 + 0x14) = iVar29;\n    *(undefined4 *)(puVar45 + 0x10) = uVar10;\n    (*pcVar42)(uVar20,uVar46,pmVar25,phVar31);\n    iVar40 = *(int *)(puVar43 + -0x68);\n    uVar46 = *(undefined4 *)(puVar43 + -0x54);\n    if (iVar32 != 0) {\n      iVar16 = iVar32 + -1;\n      mVar21 = *pmVar35;\n      pmVar22 = pmVar25;\n      pmVar11 = pmVar35;\n      if (iVar16 == 0) {\n        *pmVar25 = mVar21;\n      }\n      else {\n        do {\n          *pmVar22 = mVar21;\n          iVar16 = iVar16 + -1;\n          mVar21 = pmVar11[1];\n          pmVar22 = pmVar22 + 1;\n          pmVar11 = pmVar11 + 1;\n        } while (iVar16 != 0);\n        pmVar25[iVar32 + -1] = mVar21;\n      }\n    }\n    uVar10 = *(undefined4 *)(iVar13 + 8);\n    pcVar42 = *(code **)(iVar40 + -0x7cd8);\n    *(undefined4 *)(puVar45 + 0x18) = *(undefined4 *)(puVar43 + -0x48);\n    *(undefined4 *)(puVar43 + -0x48) = uVar46;\n    *(undefined4 *)(puVar45 + 0x10) = uVar10;\n    *(undefined4 *)(puVar45 + 0x14) = *(undefined4 *)(puVar43 + -0x50);\n    (*pcVar42)(pmVar35,uVar46,pmVar28,phVar31);\n    iVar40 = *(int *)(puVar43 + -0x48);\n    iVar16 = *(int *)(puVar43 + -0x68);\n    if ((int)phVar31 + iVar29 < iVar40) {\n      if (iVar29 != iVar40 - (int)phVar31) {\n        iVar9 = (iVar40 - (int)phVar31) - iVar29;\n        puVar7 = (undefined4 *)(*(int *)(puVar43 + -0x44) + (int)((int)phVar31 + iVar29) * 4);\n        do {\n          iVar9 = iVar9 + -1;\n          *puVar7 = 0;\n          puVar7 = puVar7 + 1;\n        } while (iVar9 != 0);\n      }\n    }\n    pcVar42 = *(code **)(iVar16 + -0x7b2c);\n    if (*(int *)(puVar43 + -0x50) + (int)phVar31 < iVar40) {\n      if (*(int *)(puVar43 + -0x50) != iVar40 - (int)phVar31) {\n        iVar29 = (iVar40 - (int)phVar31) - *(int *)(puVar43 + -0x50);\n        pmVar11 = pmVar35 + (int)(*(int *)(puVar43 + -0x50) + (int)phVar31);\n        do {\n          iVar29 = iVar29 + -1;\n          *pmVar11 = 0;\n          pmVar11 = pmVar11 + 1;\n        } while (iVar29 != 0);\n        pcVar42 = *(code **)(iVar16 + -0x7b2c);\n      }\n    }\n    uVar3 = (*pcVar42)(pmVar35,pmVar35,*(undefined4 *)(puVar43 + -0x44),iVar40);\n    uVar18 = *pmVar35;\n    iVar40 = *(int *)(puVar43 + -0x68);\n    pmVar26 = (mp_ptr)(uVar18 - uVar3);\n    *pmVar35 = (mp_limb_t)pmVar26;\n    pmVar11 = pmVar35;\n    if (uVar18 < uVar3) {\n      do {\n        pmVar11 = pmVar11 + 1;\n        mVar21 = *pmVar11;\n        pmVar26 = (mp_ptr)(mVar21 - 1);\n        *pmVar11 = (mp_limb_t)pmVar26;\n      } while (mVar21 == 0);\n    }\n    iVar29 = iVar32 + -1;\n    if (iVar32 == 0) {\n      iVar29 = -4;\n    }\n    else {\n      pmVar26 = (mp_ptr)*pmVar35;\n      pmVar17 = pmVar28;\n      if (iVar29 != 0) {\n        do {\n          pmVar35 = pmVar35 + 1;\n          *pmVar17 = (mp_limb_t)pmVar26;\n          iVar29 = iVar29 + -1;\n          pmVar26 = (mp_ptr)*pmVar35;\n          pmVar17 = pmVar17 + 1;\n        } while (iVar29 != 0);\n        pmVar17 = pmVar28 + iVar32 + -1;\n      }\n      *pmVar17 = (mp_limb_t)pmVar26;\n      iVar29 = iVar32 * 4 + -4;\n    }\n    puVar44 = puVar45;\n    if (*(int *)((int)pmVar25 + iVar29) != 0 || *(int *)((int)pmVar28 + iVar29) != 0)\n    goto LAB_000530b4;\n    pmVar25 = pmVar25 + iVar32 + -2;\n    pmVar28 = pmVar28 + iVar32 + -2;\n    do {\n      mVar21 = *pmVar25;\n      iVar32 = iVar32 + -1;\n      mVar23 = *pmVar28;\n      pmVar25 = pmVar25 + -1;\n      pmVar28 = pmVar28 + -1;\n    } while (mVar21 == 0 && mVar23 == 0);\n    piVar38 = *(int **)(puVar43 + -0x4c);\n    if (*(int *)(puVar43 + -0x40) == 0) goto LAB_000530c4;\n    pcVar42 = *(code **)(iVar40 + -0x7a2c);\nLAB_00053478:\n    (*pcVar42)();\n    iVar40 = *(int *)(puVar43 + -0x68);\n    puVar45 = puVar44;\n  }" else (compound_statement "{\n    if (iVar29 == 0) {\n      uVar46 = *(undefined4 *)(iVar13 + 0xc);\n      *(int *)(puVar43 + -0x74) = iVar32;\n      *(undefined4 *)(puVar43 + -0x78) = uVar46;\n      pmVar8 = pmVar25;\n      pmVar26 = pmVar36;\n      pmVar6 = pmVar28;\n      pmVar36 = pmVar17;\n      goto LAB_0005309c;\n    }\n    iVar9 = *(int *)(puVar43 + -0x30);\n    pcVar42 = *(code **)(pcVar42 + 0x4454c);\n    iVar16 = (int)pmVar36 - *(int *)(puVar43 + -0x3c);\n    *(int *)(puVar43 + -0x50) = *(int *)(puVar43 + -0x3c);\n    *(int *)(puVar43 + -0x44) = iVar32;\n    if ((int)pmVar17 - iVar29 <= iVar16) {\n      iVar16 = (int)pmVar17 - iVar29;\n    }\n    iVar15 = (int)pmVar36 - iVar32;\n    if ((int)pmVar17 - iVar9 <= (int)pmVar36 - iVar32) {\n      iVar15 = (int)pmVar17 - iVar9;\n    }\n    iVar32 = iVar15 + 1;\n    if (iVar15 + 1 <= iVar16 + 1) {\n      iVar32 = iVar16 + 1;\n    }\n    pmVar17 = (mp_ptr)(*pcVar42)(iVar32 + 1);\n    iVar16 = (int)pmVar17 >> 1;\n    iVar15 = *(int *)(puVar43 + -0x68);\n    uVar46 = *(undefined4 *)(puVar43 + -0x44);\n    if (iVar16 < (int)pmVar17) {\n      if (iVar40 <= iVar16) {\n        uVar18 = ((int)pmVar17 * 3 + iVar16 + 4) * 4;\n        uVar3 = uVar18 + 7;\n        if (0x7f00 < uVar18) {\n          pcVar42 = *(code **)(iVar15 + -0x7d50);\n          goto LAB_0005305c;\n        }\n        goto LAB_00053148;\n      }\n      uVar18 = ((int)pmVar17 * 4 + 4) * 4;\n      uVar3 = uVar18 + 7;\n      if (uVar18 < 0x7f01) goto LAB_00053148;\n      pcVar42 = *(code **)(iVar15 + -0x7d50);\nLAB_0005305c:\n      *(mp_ptr *)(puVar43 + -0x48) = pmVar17;\n      *(undefined4 *)(puVar43 + -0x44) = uVar46;\n      pmVar35 = (mp_limb_t *)(*pcVar42)(puVar43 + -0x40);\n      iVar15 = *(int *)(puVar43 + -0x68);\n      pmVar17 = *(mp_ptr *)(puVar43 + -0x48);\n      uVar46 = *(undefined4 *)(puVar43 + -0x44);\n    }\n    else {\n      uVar3 = ((int)pmVar17 * 3 + 4) * 4;\n      pcVar42 = *(code **)(iVar15 + -0x7d50);\n      if (0x7f00 < uVar3) goto LAB_0005305c;\n      uVar3 = uVar3 + 7;\nLAB_00053148:\n      puVar45 = puVar43 + -(uVar3 & 0xfffffff8) + -0x88;\n      pmVar35 = (mp_limb_t *)(puVar43 + -(uVar3 & 0xfffffff8) + -0x68);\n    }\n    *(mp_limb_t **)(puVar43 + -0x44) = pmVar35 + (int)pmVar17;\n    *(mp_limb_t **)(puVar43 + -0x48) = pmVar35 + (int)pmVar17 + (int)pmVar17;\n    if ((int)pmVar17 < (int)phVar31) {\n      pcVar42 = *(code **)(iVar15 + -0x7d0c);\n      pmVar36 = (mp_ptr)((int)phVar31 - (int)pmVar17);\n      *(undefined4 *)(puVar43 + -0x5c) = uVar46;\n      *(mp_ptr *)(puVar43 + -0x58) = pmVar17;\n      *(int *)(puVar43 + -0x54) = (int)pmVar17 * 4;\n      iVar40 = (*pcVar42)(pmVar25,pmVar25,pmVar25 + (int)pmVar17,pmVar36);\n      iVar15 = *(int *)(puVar43 + -0x68);\n      iVar16 = *(int *)(puVar43 + -0x54);\n      pmVar17 = *(mp_ptr *)(puVar43 + -0x58);\n      uVar46 = *(undefined4 *)(puVar43 + -0x5c);\n      if (iVar40 == 0) {\nLAB_0005359c:\n        pcVar42 = *(code **)(iVar15 + -0x7d0c);\n      }\n      else {\n        pmVar8 = pmVar25;\n        if ((int)pmVar17 <= (int)pmVar36) {\nLAB_00053588:\n          do {\n            mVar21 = *pmVar8;\n            *pmVar8 = mVar21 + 1;\n            pmVar8 = pmVar8 + 1;\n          } while (mVar21 + 1 == 0);\n          goto LAB_0005359c;\n        }\n        pmVar6 = pmVar25 + (int)pmVar36;\n        mVar21 = *pmVar6;\n        *pmVar6 = mVar21 + 1;\n        pmVar26 = pmVar36;\n        if (mVar21 + 1 == 0) {\n          do {\n            pmVar26 = (mp_ptr)((int)pmVar26 + 1);\n            if (pmVar17 == pmVar26) goto LAB_00053588;\n            mVar21 = pmVar6[1];\n            pmVar6 = pmVar6 + 1;\n            *pmVar6 = mVar21 + 1;\n          } while (mVar21 + 1 == 0);\n          goto LAB_0005359c;\n        }\n        pcVar42 = *(code **)(iVar15 + -0x7d0c);\n      }\n      *(mp_ptr *)(puVar43 + -0x58) = pmVar17;\n      *(undefined4 *)(puVar43 + -0x54) = uVar46;\n      iVar40 = (*pcVar42)(pmVar28,pmVar28,(int)pmVar28 + iVar16,pmVar36);\n      iVar15 = *(int *)(puVar43 + -0x68);\n      uVar46 = *(undefined4 *)(puVar43 + -0x54);\n      pmVar17 = *(mp_ptr *)(puVar43 + -0x58);\n      phVar31 = (hgcd_matrix1 *)pmVar17;\n      if (iVar40 != 0) {\n        pmVar8 = pmVar28;\n        if ((int)pmVar36 < (int)pmVar17) {\n          pmVar11 = pmVar28 + (int)pmVar36;\n          mVar21 = *pmVar11 + 1;\n          *pmVar11 = mVar21;\n          while (mVar21 == 0) {\n            pmVar36 = (mp_ptr)((int)pmVar36 + 1);\n            if (pmVar17 == pmVar36) goto LAB_0005361c;\n            pmVar22 = pmVar11 + 1;\n            pmVar11 = pmVar11 + 1;\n            mVar21 = *pmVar22 + 1;\n            *pmVar11 = mVar21;\n          }\n        }\n        else {\nLAB_0005361c:\n          do {\n            mVar21 = *pmVar8;\n            *pmVar8 = mVar21 + 1;\n            pmVar8 = pmVar8 + 1;\n          } while (mVar21 + 1 == 0);\n        }\n      }\n    }\n    uVar10 = *(undefined4 *)(iVar13 + 0x14);\n    pcVar42 = *(code **)(iVar15 + -0x7cd8);\n    *(undefined4 *)(puVar43 + -0x5c) = uVar46;\n    *(mp_ptr *)(puVar43 + -0x54) = pmVar17;\n    *(undefined4 *)(puVar45 + 0x18) = *(undefined4 *)(puVar43 + -0x48);\n    *(undefined4 *)(puVar45 + 0x10) = uVar10;\n    *(int *)(puVar45 + 0x14) = iVar9;\n    (*pcVar42)(pmVar35,pmVar17,pmVar25,phVar31);\n    uVar46 = *(undefined4 *)(iVar13 + 0xc);\n    uVar33 = *(undefined4 *)(puVar43 + -0x54);\n    uVar34 = *(undefined4 *)(puVar43 + -0x5c);\n    uVar10 = *(undefined4 *)(puVar43 + -0x48);\n    pcVar42 = *(code **)(*(int *)(puVar43 + -0x68) + -0x7cd8);\n    uVar20 = *(undefined4 *)(puVar43 + -0x44);\n    *(undefined4 *)(puVar43 + -0x58) = uVar33;\n    *(undefined4 *)(puVar45 + 0x14) = uVar34;\n    *(undefined4 *)(puVar43 + -0x54) = uVar34;\n    *(undefined4 *)(puVar45 + 0x10) = uVar46;\n    *(undefined4 *)(puVar45 + 0x18) = uVar10;\n    (*pcVar42)(uVar20,uVar33,pmVar28,phVar31);\n    iVar40 = *(int *)(puVar43 + -0x58);\n    iVar15 = *(int *)(puVar43 + -0x68);\n    iVar16 = *(int *)(puVar43 + -0x54);\n    if ((iVar9 + (int)phVar31 < iVar40) && (iVar9 != iVar40 - (int)phVar31)) {\n      iVar41 = (iVar40 - (int)phVar31) - iVar9;\n      pmVar11 = pmVar35 + (int)(iVar9 + (int)phVar31);\n      do {\n        iVar41 = iVar41 + -1;\n        *pmVar11 = 0;\n        pmVar11 = pmVar11 + 1;\n      } while (iVar41 != 0);\n    }\n    pcVar42 = *(code **)(iVar15 + -0x7b2c);\n    if (iVar16 + (int)phVar31 < iVar40) {\n      if (iVar16 != iVar40 - (int)phVar31) {\n        iVar9 = (iVar40 - (int)phVar31) - iVar16;\n        puVar7 = (undefined4 *)(*(int *)(puVar43 + -0x44) + (int)(iVar16 + (int)phVar31) * 4);\n        do {\n          iVar9 = iVar9 + -1;\n          *puVar7 = 0;\n          puVar7 = puVar7 + 1;\n        } while (iVar9 != 0);\n        pcVar42 = *(code **)(iVar15 + -0x7b2c);\n      }\n    }\n    *(int *)(puVar43 + -0x54) = iVar40;\n    uVar3 = (*pcVar42)(pmVar35,pmVar35,*(undefined4 *)(puVar43 + -0x44),iVar40);\n    uVar18 = *pmVar35;\n    iVar40 = *(int *)(puVar43 + -0x68);\n    uVar46 = *(undefined4 *)(puVar43 + -0x54);\n    *pmVar35 = uVar18 - uVar3;\n    pmVar11 = pmVar35;\n    if (uVar18 < uVar3) {\n      do {\n        pmVar11 = pmVar11 + 1;\n        mVar21 = *pmVar11;\n        *pmVar11 = mVar21 - 1;\n      } while (mVar21 == 0);\n    }\n    uVar10 = *(undefined4 *)(iVar13 + 0x10);\n    pcVar42 = *(code **)(iVar40 + -0x7cd8);\n    uVar20 = *(undefined4 *)(puVar43 + -0x44);\n    *(undefined4 *)(puVar43 + -0x54) = uVar46;\n    *(undefined4 *)(puVar45 + 0x18) = *(undefined4 *)(puVar43 + -0x48);\n    *(int *)(puVar45 + 0x14) = iVar29;\n    *(undefined4 *)(puVar45 + 0x10) = uVar10;\n    (*pcVar42)(uVar20,uVar46,pmVar25,phVar31);\n    iVar40 = *(int *)(puVar43 + -0x68);\n    uVar46 = *(undefined4 *)(puVar43 + -0x54);\n    if (iVar32 != 0) {\n      iVar16 = iVar32 + -1;\n      mVar21 = *pmVar35;\n      pmVar22 = pmVar25;\n      pmVar11 = pmVar35;\n      if (iVar16 == 0) {\n        *pmVar25 = mVar21;\n      }\n      else {\n        do {\n          *pmVar22 = mVar21;\n          iVar16 = iVar16 + -1;\n          mVar21 = pmVar11[1];\n          pmVar22 = pmVar22 + 1;\n          pmVar11 = pmVar11 + 1;\n        } while (iVar16 != 0);\n        pmVar25[iVar32 + -1] = mVar21;\n      }\n    }\n    uVar10 = *(undefined4 *)(iVar13 + 8);\n    pcVar42 = *(code **)(iVar40 + -0x7cd8);\n    *(undefined4 *)(puVar45 + 0x18) = *(undefined4 *)(puVar43 + -0x48);\n    *(undefined4 *)(puVar43 + -0x48) = uVar46;\n    *(undefined4 *)(puVar45 + 0x10) = uVar10;\n    *(undefined4 *)(puVar45 + 0x14) = *(undefined4 *)(puVar43 + -0x50);\n    (*pcVar42)(pmVar35,uVar46,pmVar28,phVar31);\n    iVar40 = *(int *)(puVar43 + -0x48);\n    iVar16 = *(int *)(puVar43 + -0x68);\n    if ((int)phVar31 + iVar29 < iVar40) {\n      if (iVar29 != iVar40 - (int)phVar31) {\n        iVar9 = (iVar40 - (int)phVar31) - iVar29;\n        puVar7 = (undefined4 *)(*(int *)(puVar43 + -0x44) + (int)((int)phVar31 + iVar29) * 4);\n        do {\n          iVar9 = iVar9 + -1;\n          *puVar7 = 0;\n          puVar7 = puVar7 + 1;\n        } while (iVar9 != 0);\n      }\n    }\n    pcVar42 = *(code **)(iVar16 + -0x7b2c);\n    if (*(int *)(puVar43 + -0x50) + (int)phVar31 < iVar40) {\n      if (*(int *)(puVar43 + -0x50) != iVar40 - (int)phVar31) {\n        iVar29 = (iVar40 - (int)phVar31) - *(int *)(puVar43 + -0x50);\n        pmVar11 = pmVar35 + (int)(*(int *)(puVar43 + -0x50) + (int)phVar31);\n        do {\n          iVar29 = iVar29 + -1;\n          *pmVar11 = 0;\n          pmVar11 = pmVar11 + 1;\n        } while (iVar29 != 0);\n        pcVar42 = *(code **)(iVar16 + -0x7b2c);\n      }\n    }\n    uVar3 = (*pcVar42)(pmVar35,pmVar35,*(undefined4 *)(puVar43 + -0x44),iVar40);\n    uVar18 = *pmVar35;\n    iVar40 = *(int *)(puVar43 + -0x68);\n    pmVar26 = (mp_ptr)(uVar18 - uVar3);\n    *pmVar35 = (mp_limb_t)pmVar26;\n    pmVar11 = pmVar35;\n    if (uVar18 < uVar3) {\n      do {\n        pmVar11 = pmVar11 + 1;\n        mVar21 = *pmVar11;\n        pmVar26 = (mp_ptr)(mVar21 - 1);\n        *pmVar11 = (mp_limb_t)pmVar26;\n      } while (mVar21 == 0);\n    }\n    iVar29 = iVar32 + -1;\n    if (iVar32 == 0) {\n      iVar29 = -4;\n    }\n    else {\n      pmVar26 = (mp_ptr)*pmVar35;\n      pmVar17 = pmVar28;\n      if (iVar29 != 0) {\n        do {\n          pmVar35 = pmVar35 + 1;\n          *pmVar17 = (mp_limb_t)pmVar26;\n          iVar29 = iVar29 + -1;\n          pmVar26 = (mp_ptr)*pmVar35;\n          pmVar17 = pmVar17 + 1;\n        } while (iVar29 != 0);\n        pmVar17 = pmVar28 + iVar32 + -1;\n      }\n      *pmVar17 = (mp_limb_t)pmVar26;\n      iVar29 = iVar32 * 4 + -4;\n    }\n    puVar44 = puVar45;\n    if (*(int *)((int)pmVar25 + iVar29) != 0 || *(int *)((int)pmVar28 + iVar29) != 0)\n    goto LAB_000530b4;\n    pmVar25 = pmVar25 + iVar32 + -2;\n    pmVar28 = pmVar28 + iVar32 + -2;\n    do {\n      mVar21 = *pmVar25;\n      iVar32 = iVar32 + -1;\n      mVar23 = *pmVar28;\n      pmVar25 = pmVar25 + -1;\n      pmVar28 = pmVar28 + -1;\n    } while (mVar21 == 0 && mVar23 == 0);\n    piVar38 = *(int **)(puVar43 + -0x4c);\n    if (*(int *)(puVar43 + -0x40) == 0) goto LAB_000530c4;\n    pcVar42 = *(code **)(iVar40 + -0x7a2c);\nLAB_00053478:\n    (*pcVar42)();\n    iVar40 = *(int *)(puVar43 + -0x68);\n    puVar45 = puVar44;\n  }" { (if_statement "if (iVar29 == 0) {\n      uVar46 = *(undefined4 *)(iVar13 + 0xc);\n      *(int *)(puVar43 + -0x74) = iVar32;\n      *(undefined4 *)(puVar43 + -0x78) = uVar46;\n      pmVar8 = pmVar25;\n      pmVar26 = pmVar36;\n      pmVar6 = pmVar28;\n      pmVar36 = pmVar17;\n      goto LAB_0005309c;\n    }" if (parenthesized_expression "(iVar29 == 0)" ( (binary_expression "iVar29 == 0" identifier == number_literal) )) (compound_statement "{\n      uVar46 = *(undefined4 *)(iVar13 + 0xc);\n      *(int *)(puVar43 + -0x74) = iVar32;\n      *(undefined4 *)(puVar43 + -0x78) = uVar46;\n      pmVar8 = pmVar25;\n      pmVar26 = pmVar36;\n      pmVar6 = pmVar28;\n      pmVar36 = pmVar17;\n      goto LAB_0005309c;\n    }" { (expression_statement "uVar46 = *(undefined4 *)(iVar13 + 0xc);" (assignment_expression "uVar46 = *(undefined4 *)(iVar13 + 0xc)" identifier = (pointer_expression "*(undefined4 *)(iVar13 + 0xc)" * (cast_expression "(undefined4 *)(iVar13 + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar13 + 0xc)" ( (binary_expression "iVar13 + 0xc" identifier + number_literal) ))))) ;) (expression_statement "*(int *)(puVar43 + -0x74) = iVar32;" (assignment_expression "*(int *)(puVar43 + -0x74) = iVar32" (pointer_expression "*(int *)(puVar43 + -0x74)" * (cast_expression "(int *)(puVar43 + -0x74)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar43 + -0x74)" ( (binary_expression "puVar43 + -0x74" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar43 + -0x78) = uVar46;" (assignment_expression "*(undefined4 *)(puVar43 + -0x78) = uVar46" (pointer_expression "*(undefined4 *)(puVar43 + -0x78)" * (cast_expression "(undefined4 *)(puVar43 + -0x78)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar43 + -0x78)" ( (binary_expression "puVar43 + -0x78" identifier + number_literal) )))) = identifier) ;) (expression_statement "pmVar8 = pmVar25;" (assignment_expression "pmVar8 = pmVar25" identifier = identifier) ;) (expression_statement "pmVar26 = pmVar36;" (assignment_expression "pmVar26 = pmVar36" identifier = identifier) ;) (expression_statement "pmVar6 = pmVar28;" (assignment_expression "pmVar6 = pmVar28" identifier = identifier) ;) (expression_statement "pmVar36 = pmVar17;" (assignment_expression "pmVar36 = pmVar17" identifier = identifier) ;) (goto_statement "goto LAB_0005309c;" goto statement_identifier ;) })) (expression_statement "iVar9 = *(int *)(puVar43 + -0x30);" (assignment_expression "iVar9 = *(int *)(puVar43 + -0x30)" identifier = (pointer_expression "*(int *)(puVar43 + -0x30)" * (cast_expression "(int *)(puVar43 + -0x30)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar43 + -0x30)" ( (binary_expression "puVar43 + -0x30" identifier + number_literal) ))))) ;) (expression_statement "pcVar42 = *(code **)(pcVar42 + 0x4454c);" (assignment_expression "pcVar42 = *(code **)(pcVar42 + 0x4454c)" identifier = (pointer_expression "*(code **)(pcVar42 + 0x4454c)" * (cast_expression "(code **)(pcVar42 + 0x4454c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar42 + 0x4454c)" ( (binary_expression "pcVar42 + 0x4454c" identifier + number_literal) ))))) ;) (expression_statement "iVar16 = (int)pmVar36 - *(int *)(puVar43 + -0x3c);" (assignment_expression "iVar16 = (int)pmVar36 - *(int *)(puVar43 + -0x3c)" identifier = (binary_expression "(int)pmVar36 - *(int *)(puVar43 + -0x3c)" (cast_expression "(int)pmVar36" ( (type_descriptor "int" primitive_type) ) identifier) - (pointer_expression "*(int *)(puVar43 + -0x3c)" * (cast_expression "(int *)(puVar43 + -0x3c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar43 + -0x3c)" ( (binary_expression "puVar43 + -0x3c" identifier + number_literal) )))))) ;) (expression_statement "*(int *)(puVar43 + -0x50) = *(int *)(puVar43 + -0x3c);" (assignment_expression "*(int *)(puVar43 + -0x50) = *(int *)(puVar43 + -0x3c)" (pointer_expression "*(int *)(puVar43 + -0x50)" * (cast_expression "(int *)(puVar43 + -0x50)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar43 + -0x50)" ( (binary_expression "puVar43 + -0x50" identifier + number_literal) )))) = (pointer_expression "*(int *)(puVar43 + -0x3c)" * (cast_expression "(int *)(puVar43 + -0x3c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar43 + -0x3c)" ( (binary_expression "puVar43 + -0x3c" identifier + number_literal) ))))) ;) (expression_statement "*(int *)(puVar43 + -0x44) = iVar32;" (assignment_expression "*(int *)(puVar43 + -0x44) = iVar32" (pointer_expression "*(int *)(puVar43 + -0x44)" * (cast_expression "(int *)(puVar43 + -0x44)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar43 + -0x44)" ( (binary_expression "puVar43 + -0x44" identifier + number_literal) )))) = identifier) ;) (if_statement "if ((int)pmVar17 - iVar29 <= iVar16) {\n      iVar16 = (int)pmVar17 - iVar29;\n    }" if (parenthesized_expression "((int)pmVar17 - iVar29 <= iVar16)" ( (binary_expression "(int)pmVar17 - iVar29 <= iVar16" (binary_expression "(int)pmVar17 - iVar29" (cast_expression "(int)pmVar17" ( (type_descriptor "int" primitive_type) ) identifier) - identifier) <= identifier) )) (compound_statement "{\n      iVar16 = (int)pmVar17 - iVar29;\n    }" { (expression_statement "iVar16 = (int)pmVar17 - iVar29;" (assignment_expression "iVar16 = (int)pmVar17 - iVar29" identifier = (binary_expression "(int)pmVar17 - iVar29" (cast_expression "(int)pmVar17" ( (type_descriptor "int" primitive_type) ) identifier) - identifier)) ;) })) (expression_statement "iVar15 = (int)pmVar36 - iVar32;" (assignment_expression "iVar15 = (int)pmVar36 - iVar32" identifier = (binary_expression "(int)pmVar36 - iVar32" (cast_expression "(int)pmVar36" ( (type_descriptor "int" primitive_type) ) identifier) - identifier)) ;) (if_statement "if ((int)pmVar17 - iVar9 <= (int)pmVar36 - iVar32) {\n      iVar15 = (int)pmVar17 - iVar9;\n    }" if (parenthesized_expression "((int)pmVar17 - iVar9 <= (int)pmVar36 - iVar32)" ( (binary_expression "(int)pmVar17 - iVar9 <= (int)pmVar36 - iVar32" (binary_expression "(int)pmVar17 - iVar9" (cast_expression "(int)pmVar17" ( (type_descriptor "int" primitive_type) ) identifier) - identifier) <= (binary_expression "(int)pmVar36 - iVar32" (cast_expression "(int)pmVar36" ( (type_descriptor "int" primitive_type) ) identifier) - identifier)) )) (compound_statement "{\n      iVar15 = (int)pmVar17 - iVar9;\n    }" { (expression_statement "iVar15 = (int)pmVar17 - iVar9;" (assignment_expression "iVar15 = (int)pmVar17 - iVar9" identifier = (binary_expression "(int)pmVar17 - iVar9" (cast_expression "(int)pmVar17" ( (type_descriptor "int" primitive_type) ) identifier) - identifier)) ;) })) (expression_statement "iVar32 = iVar15 + 1;" (assignment_expression "iVar32 = iVar15 + 1" identifier = (binary_expression "iVar15 + 1" identifier + number_literal)) ;) (if_statement "if (iVar15 + 1 <= iVar16 + 1) {\n      iVar32 = iVar16 + 1;\n    }" if (parenthesized_expression "(iVar15 + 1 <= iVar16 + 1)" ( (binary_expression "iVar15 + 1 <= iVar16 + 1" (binary_expression "iVar15 + 1" identifier + number_literal) <= (binary_expression "iVar16 + 1" identifier + number_literal)) )) (compound_statement "{\n      iVar32 = iVar16 + 1;\n    }" { (expression_statement "iVar32 = iVar16 + 1;" (assignment_expression "iVar32 = iVar16 + 1" identifier = (binary_expression "iVar16 + 1" identifier + number_literal)) ;) })) (expression_statement "pmVar17 = (mp_ptr)(*pcVar42)(iVar32 + 1);" (assignment_expression "pmVar17 = (mp_ptr)(*pcVar42)(iVar32 + 1)" identifier = (call_expression "(mp_ptr)(*pcVar42)(iVar32 + 1)" (call_expression "(mp_ptr)(*pcVar42)" (parenthesized_expression "(mp_ptr)" ( identifier )) (argument_list "(*pcVar42)" ( (pointer_expression "*pcVar42" * identifier) ))) (argument_list "(iVar32 + 1)" ( (binary_expression "iVar32 + 1" identifier + number_literal) )))) ;) (expression_statement "iVar16 = (int)pmVar17 >> 1;" (assignment_expression "iVar16 = (int)pmVar17 >> 1" identifier = (binary_expression "(int)pmVar17 >> 1" (cast_expression "(int)pmVar17" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal)) ;) (expression_statement "iVar15 = *(int *)(puVar43 + -0x68);" (assignment_expression "iVar15 = *(int *)(puVar43 + -0x68)" identifier = (pointer_expression "*(int *)(puVar43 + -0x68)" * (cast_expression "(int *)(puVar43 + -0x68)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar43 + -0x68)" ( (binary_expression "puVar43 + -0x68" identifier + number_literal) ))))) ;) (expression_statement "uVar46 = *(undefined4 *)(puVar43 + -0x44);" (assignment_expression "uVar46 = *(undefined4 *)(puVar43 + -0x44)" identifier = (pointer_expression "*(undefined4 *)(puVar43 + -0x44)" * (cast_expression "(undefined4 *)(puVar43 + -0x44)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar43 + -0x44)" ( (binary_expression "puVar43 + -0x44" identifier + number_literal) ))))) ;) (if_statement "if (iVar16 < (int)pmVar17) {\n      if (iVar40 <= iVar16) {\n        uVar18 = ((int)pmVar17 * 3 + iVar16 + 4) * 4;\n        uVar3 = uVar18 + 7;\n        if (0x7f00 < uVar18) {\n          pcVar42 = *(code **)(iVar15 + -0x7d50);\n          goto LAB_0005305c;\n        }\n        goto LAB_00053148;\n      }\n      uVar18 = ((int)pmVar17 * 4 + 4) * 4;\n      uVar3 = uVar18 + 7;\n      if (uVar18 < 0x7f01) goto LAB_00053148;\n      pcVar42 = *(code **)(iVar15 + -0x7d50);\nLAB_0005305c:\n      *(mp_ptr *)(puVar43 + -0x48) = pmVar17;\n      *(undefined4 *)(puVar43 + -0x44) = uVar46;\n      pmVar35 = (mp_limb_t *)(*pcVar42)(puVar43 + -0x40);\n      iVar15 = *(int *)(puVar43 + -0x68);\n      pmVar17 = *(mp_ptr *)(puVar43 + -0x48);\n      uVar46 = *(undefined4 *)(puVar43 + -0x44);\n    }\n    else {\n      uVar3 = ((int)pmVar17 * 3 + 4) * 4;\n      pcVar42 = *(code **)(iVar15 + -0x7d50);\n      if (0x7f00 < uVar3) goto LAB_0005305c;\n      uVar3 = uVar3 + 7;\nLAB_00053148:\n      puVar45 = puVar43 + -(uVar3 & 0xfffffff8) + -0x88;\n      pmVar35 = (mp_limb_t *)(puVar43 + -(uVar3 & 0xfffffff8) + -0x68);\n    }" if (parenthesized_expression "(iVar16 < (int)pmVar17)" ( (binary_expression "iVar16 < (int)pmVar17" identifier < (cast_expression "(int)pmVar17" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n      if (iVar40 <= iVar16) {\n        uVar18 = ((int)pmVar17 * 3 + iVar16 + 4) * 4;\n        uVar3 = uVar18 + 7;\n        if (0x7f00 < uVar18) {\n          pcVar42 = *(code **)(iVar15 + -0x7d50);\n          goto LAB_0005305c;\n        }\n        goto LAB_00053148;\n      }\n      uVar18 = ((int)pmVar17 * 4 + 4) * 4;\n      uVar3 = uVar18 + 7;\n      if (uVar18 < 0x7f01) goto LAB_00053148;\n      pcVar42 = *(code **)(iVar15 + -0x7d50);\nLAB_0005305c:\n      *(mp_ptr *)(puVar43 + -0x48) = pmVar17;\n      *(undefined4 *)(puVar43 + -0x44) = uVar46;\n      pmVar35 = (mp_limb_t *)(*pcVar42)(puVar43 + -0x40);\n      iVar15 = *(int *)(puVar43 + -0x68);\n      pmVar17 = *(mp_ptr *)(puVar43 + -0x48);\n      uVar46 = *(undefined4 *)(puVar43 + -0x44);\n    }" { (if_statement "if (iVar40 <= iVar16) {\n        uVar18 = ((int)pmVar17 * 3 + iVar16 + 4) * 4;\n        uVar3 = uVar18 + 7;\n        if (0x7f00 < uVar18) {\n          pcVar42 = *(code **)(iVar15 + -0x7d50);\n          goto LAB_0005305c;\n        }\n        goto LAB_00053148;\n      }" if (parenthesized_expression "(iVar40 <= iVar16)" ( (binary_expression "iVar40 <= iVar16" identifier <= identifier) )) (compound_statement "{\n        uVar18 = ((int)pmVar17 * 3 + iVar16 + 4) * 4;\n        uVar3 = uVar18 + 7;\n        if (0x7f00 < uVar18) {\n          pcVar42 = *(code **)(iVar15 + -0x7d50);\n          goto LAB_0005305c;\n        }\n        goto LAB_00053148;\n      }" { (expression_statement "uVar18 = ((int)pmVar17 * 3 + iVar16 + 4) * 4;" (assignment_expression "uVar18 = ((int)pmVar17 * 3 + iVar16 + 4) * 4" identifier = (binary_expression "((int)pmVar17 * 3 + iVar16 + 4) * 4" (parenthesized_expression "((int)pmVar17 * 3 + iVar16 + 4)" ( (binary_expression "(int)pmVar17 * 3 + iVar16 + 4" (binary_expression "(int)pmVar17 * 3 + iVar16" (binary_expression "(int)pmVar17 * 3" (cast_expression "(int)pmVar17" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal) + identifier) + number_literal) )) * number_literal)) ;) (expression_statement "uVar3 = uVar18 + 7;" (assignment_expression "uVar3 = uVar18 + 7" identifier = (binary_expression "uVar18 + 7" identifier + number_literal)) ;) (if_statement "if (0x7f00 < uVar18) {\n          pcVar42 = *(code **)(iVar15 + -0x7d50);\n          goto LAB_0005305c;\n        }" if (parenthesized_expression "(0x7f00 < uVar18)" ( (binary_expression "0x7f00 < uVar18" number_literal < identifier) )) (compound_statement "{\n          pcVar42 = *(code **)(iVar15 + -0x7d50);\n          goto LAB_0005305c;\n        }" { (expression_statement "pcVar42 = *(code **)(iVar15 + -0x7d50);" (assignment_expression "pcVar42 = *(code **)(iVar15 + -0x7d50)" identifier = (pointer_expression "*(code **)(iVar15 + -0x7d50)" * (cast_expression "(code **)(iVar15 + -0x7d50)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar15 + -0x7d50)" ( (binary_expression "iVar15 + -0x7d50" identifier + number_literal) ))))) ;) (goto_statement "goto LAB_0005305c;" goto statement_identifier ;) })) (goto_statement "goto LAB_00053148;" goto statement_identifier ;) })) (expression_statement "uVar18 = ((int)pmVar17 * 4 + 4) * 4;" (assignment_expression "uVar18 = ((int)pmVar17 * 4 + 4) * 4" identifier = (binary_expression "((int)pmVar17 * 4 + 4) * 4" (parenthesized_expression "((int)pmVar17 * 4 + 4)" ( (binary_expression "(int)pmVar17 * 4 + 4" (binary_expression "(int)pmVar17 * 4" (cast_expression "(int)pmVar17" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal) + number_literal) )) * number_literal)) ;) (expression_statement "uVar3 = uVar18 + 7;" (assignment_expression "uVar3 = uVar18 + 7" identifier = (binary_expression "uVar18 + 7" identifier + number_literal)) ;) (if_statement "if (uVar18 < 0x7f01) goto LAB_00053148;" if (parenthesized_expression "(uVar18 < 0x7f01)" ( (binary_expression "uVar18 < 0x7f01" identifier < number_literal) )) (goto_statement "goto LAB_00053148;" goto statement_identifier ;)) (expression_statement "pcVar42 = *(code **)(iVar15 + -0x7d50);" (assignment_expression "pcVar42 = *(code **)(iVar15 + -0x7d50)" identifier = (pointer_expression "*(code **)(iVar15 + -0x7d50)" * (cast_expression "(code **)(iVar15 + -0x7d50)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar15 + -0x7d50)" ( (binary_expression "iVar15 + -0x7d50" identifier + number_literal) ))))) ;) (labeled_statement "LAB_0005305c:\n      *(mp_ptr *)(puVar43 + -0x48) = pmVar17;" statement_identifier : (expression_statement "*(mp_ptr *)(puVar43 + -0x48) = pmVar17;" (assignment_expression "*(mp_ptr *)(puVar43 + -0x48) = pmVar17" (pointer_expression "*(mp_ptr *)(puVar43 + -0x48)" * (cast_expression "(mp_ptr *)(puVar43 + -0x48)" ( (type_descriptor "mp_ptr *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar43 + -0x48)" ( (binary_expression "puVar43 + -0x48" identifier + number_literal) )))) = identifier) ;)) (expression_statement "*(undefined4 *)(puVar43 + -0x44) = uVar46;" (assignment_expression "*(undefined4 *)(puVar43 + -0x44) = uVar46" (pointer_expression "*(undefined4 *)(puVar43 + -0x44)" * (cast_expression "(undefined4 *)(puVar43 + -0x44)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar43 + -0x44)" ( (binary_expression "puVar43 + -0x44" identifier + number_literal) )))) = identifier) ;) (expression_statement "pmVar35 = (mp_limb_t *)(*pcVar42)(puVar43 + -0x40);" (assignment_expression "pmVar35 = (mp_limb_t *)(*pcVar42)(puVar43 + -0x40)" identifier = (cast_expression "(mp_limb_t *)(*pcVar42)(puVar43 + -0x40)" ( (type_descriptor "mp_limb_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(*pcVar42)(puVar43 + -0x40)" (parenthesized_expression "(*pcVar42)" ( (pointer_expression "*pcVar42" * identifier) )) (argument_list "(puVar43 + -0x40)" ( (binary_expression "puVar43 + -0x40" identifier + number_literal) ))))) ;) (expression_statement "iVar15 = *(int *)(puVar43 + -0x68);" (assignment_expression "iVar15 = *(int *)(puVar43 + -0x68)" identifier = (pointer_expression "*(int *)(puVar43 + -0x68)" * (cast_expression "(int *)(puVar43 + -0x68)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar43 + -0x68)" ( (binary_expression "puVar43 + -0x68" identifier + number_literal) ))))) ;) (expression_statement "pmVar17 = *(mp_ptr *)(puVar43 + -0x48);" (assignment_expression "pmVar17 = *(mp_ptr *)(puVar43 + -0x48)" identifier = (pointer_expression "*(mp_ptr *)(puVar43 + -0x48)" * (cast_expression "(mp_ptr *)(puVar43 + -0x48)" ( (type_descriptor "mp_ptr *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar43 + -0x48)" ( (binary_expression "puVar43 + -0x48" identifier + number_literal) ))))) ;) (expression_statement "uVar46 = *(undefined4 *)(puVar43 + -0x44);" (assignment_expression "uVar46 = *(undefined4 *)(puVar43 + -0x44)" identifier = (pointer_expression "*(undefined4 *)(puVar43 + -0x44)" * (cast_expression "(undefined4 *)(puVar43 + -0x44)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar43 + -0x44)" ( (binary_expression "puVar43 + -0x44" identifier + number_literal) ))))) ;) }) (else_clause "else {\n      uVar3 = ((int)pmVar17 * 3 + 4) * 4;\n      pcVar42 = *(code **)(iVar15 + -0x7d50);\n      if (0x7f00 < uVar3) goto LAB_0005305c;\n      uVar3 = uVar3 + 7;\nLAB_00053148:\n      puVar45 = puVar43 + -(uVar3 & 0xfffffff8) + -0x88;\n      pmVar35 = (mp_limb_t *)(puVar43 + -(uVar3 & 0xfffffff8) + -0x68);\n    }" else (compound_statement "{\n      uVar3 = ((int)pmVar17 * 3 + 4) * 4;\n      pcVar42 = *(code **)(iVar15 + -0x7d50);\n      if (0x7f00 < uVar3) goto LAB_0005305c;\n      uVar3 = uVar3 + 7;\nLAB_00053148:\n      puVar45 = puVar43 + -(uVar3 & 0xfffffff8) + -0x88;\n      pmVar35 = (mp_limb_t *)(puVar43 + -(uVar3 & 0xfffffff8) + -0x68);\n    }" { (expression_statement "uVar3 = ((int)pmVar17 * 3 + 4) * 4;" (assignment_expression "uVar3 = ((int)pmVar17 * 3 + 4) * 4" identifier = (binary_expression "((int)pmVar17 * 3 + 4) * 4" (parenthesized_expression "((int)pmVar17 * 3 + 4)" ( (binary_expression "(int)pmVar17 * 3 + 4" (binary_expression "(int)pmVar17 * 3" (cast_expression "(int)pmVar17" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal) + number_literal) )) * number_literal)) ;) (expression_statement "pcVar42 = *(code **)(iVar15 + -0x7d50);" (assignment_expression "pcVar42 = *(code **)(iVar15 + -0x7d50)" identifier = (pointer_expression "*(code **)(iVar15 + -0x7d50)" * (cast_expression "(code **)(iVar15 + -0x7d50)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar15 + -0x7d50)" ( (binary_expression "iVar15 + -0x7d50" identifier + number_literal) ))))) ;) (if_statement "if (0x7f00 < uVar3) goto LAB_0005305c;" if (parenthesized_expression "(0x7f00 < uVar3)" ( (binary_expression "0x7f00 < uVar3" number_literal < identifier) )) (goto_statement "goto LAB_0005305c;" goto statement_identifier ;)) (expression_statement "uVar3 = uVar3 + 7;" (assignment_expression "uVar3 = uVar3 + 7" identifier = (binary_expression "uVar3 + 7" identifier + number_literal)) ;) (labeled_statement "LAB_00053148:\n      puVar45 = puVar43 + -(uVar3 & 0xfffffff8) + -0x88;" statement_identifier : (expression_statement "puVar45 = puVar43 + -(uVar3 & 0xfffffff8) + -0x88;" (assignment_expression "puVar45 = puVar43 + -(uVar3 & 0xfffffff8) + -0x88" identifier = (binary_expression "puVar43 + -(uVar3 & 0xfffffff8) + -0x88" (binary_expression "puVar43 + -(uVar3 & 0xfffffff8)" identifier + (unary_expression "-(uVar3 & 0xfffffff8)" - (parenthesized_expression "(uVar3 & 0xfffffff8)" ( (binary_expression "uVar3 & 0xfffffff8" identifier & number_literal) )))) + number_literal)) ;)) (expression_statement "pmVar35 = (mp_limb_t *)(puVar43 + -(uVar3 & 0xfffffff8) + -0x68);" (assignment_expression "pmVar35 = (mp_limb_t *)(puVar43 + -(uVar3 & 0xfffffff8) + -0x68)" identifier = (cast_expression "(mp_limb_t *)(puVar43 + -(uVar3 & 0xfffffff8) + -0x68)" ( (type_descriptor "mp_limb_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar43 + -(uVar3 & 0xfffffff8) + -0x68)" ( (binary_expression "puVar43 + -(uVar3 & 0xfffffff8) + -0x68" (binary_expression "puVar43 + -(uVar3 & 0xfffffff8)" identifier + (unary_expression "-(uVar3 & 0xfffffff8)" - (parenthesized_expression "(uVar3 & 0xfffffff8)" ( (binary_expression "uVar3 & 0xfffffff8" identifier & number_literal) )))) + number_literal) )))) ;) }))) (expression_statement "*(mp_limb_t **)(puVar43 + -0x44) = pmVar35 + (int)pmVar17;" (assignment_expression "*(mp_limb_t **)(puVar43 + -0x44) = pmVar35 + (int)pmVar17" (pointer_expression "*(mp_limb_t **)(puVar43 + -0x44)" * (cast_expression "(mp_limb_t **)(puVar43 + -0x44)" ( (type_descriptor "mp_limb_t **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar43 + -0x44)" ( (binary_expression "puVar43 + -0x44" identifier + number_literal) )))) = (binary_expression "pmVar35 + (int)pmVar17" identifier + (cast_expression "(int)pmVar17" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "*(mp_limb_t **)(puVar43 + -0x48) = pmVar35 + (int)pmVar17 + (int)pmVar17;" (assignment_expression "*(mp_limb_t **)(puVar43 + -0x48) = pmVar35 + (int)pmVar17 + (int)pmVar17" (pointer_expression "*(mp_limb_t **)(puVar43 + -0x48)" * (cast_expression "(mp_limb_t **)(puVar43 + -0x48)" ( (type_descriptor "mp_limb_t **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar43 + -0x48)" ( (binary_expression "puVar43 + -0x48" identifier + number_literal) )))) = (binary_expression "pmVar35 + (int)pmVar17 + (int)pmVar17" (binary_expression "pmVar35 + (int)pmVar17" identifier + (cast_expression "(int)pmVar17" ( (type_descriptor "int" primitive_type) ) identifier)) + (cast_expression "(int)pmVar17" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (if_statement "if ((int)pmVar17 < (int)phVar31) {\n      pcVar42 = *(code **)(iVar15 + -0x7d0c);\n      pmVar36 = (mp_ptr)((int)phVar31 - (int)pmVar17);\n      *(undefined4 *)(puVar43 + -0x5c) = uVar46;\n      *(mp_ptr *)(puVar43 + -0x58) = pmVar17;\n      *(int *)(puVar43 + -0x54) = (int)pmVar17 * 4;\n      iVar40 = (*pcVar42)(pmVar25,pmVar25,pmVar25 + (int)pmVar17,pmVar36);\n      iVar15 = *(int *)(puVar43 + -0x68);\n      iVar16 = *(int *)(puVar43 + -0x54);\n      pmVar17 = *(mp_ptr *)(puVar43 + -0x58);\n      uVar46 = *(undefined4 *)(puVar43 + -0x5c);\n      if (iVar40 == 0) {\nLAB_0005359c:\n        pcVar42 = *(code **)(iVar15 + -0x7d0c);\n      }\n      else {\n        pmVar8 = pmVar25;\n        if ((int)pmVar17 <= (int)pmVar36) {\nLAB_00053588:\n          do {\n            mVar21 = *pmVar8;\n            *pmVar8 = mVar21 + 1;\n            pmVar8 = pmVar8 + 1;\n          } while (mVar21 + 1 == 0);\n          goto LAB_0005359c;\n        }\n        pmVar6 = pmVar25 + (int)pmVar36;\n        mVar21 = *pmVar6;\n        *pmVar6 = mVar21 + 1;\n        pmVar26 = pmVar36;\n        if (mVar21 + 1 == 0) {\n          do {\n            pmVar26 = (mp_ptr)((int)pmVar26 + 1);\n            if (pmVar17 == pmVar26) goto LAB_00053588;\n            mVar21 = pmVar6[1];\n            pmVar6 = pmVar6 + 1;\n            *pmVar6 = mVar21 + 1;\n          } while (mVar21 + 1 == 0);\n          goto LAB_0005359c;\n        }\n        pcVar42 = *(code **)(iVar15 + -0x7d0c);\n      }\n      *(mp_ptr *)(puVar43 + -0x58) = pmVar17;\n      *(undefined4 *)(puVar43 + -0x54) = uVar46;\n      iVar40 = (*pcVar42)(pmVar28,pmVar28,(int)pmVar28 + iVar16,pmVar36);\n      iVar15 = *(int *)(puVar43 + -0x68);\n      uVar46 = *(undefined4 *)(puVar43 + -0x54);\n      pmVar17 = *(mp_ptr *)(puVar43 + -0x58);\n      phVar31 = (hgcd_matrix1 *)pmVar17;\n      if (iVar40 != 0) {\n        pmVar8 = pmVar28;\n        if ((int)pmVar36 < (int)pmVar17) {\n          pmVar11 = pmVar28 + (int)pmVar36;\n          mVar21 = *pmVar11 + 1;\n          *pmVar11 = mVar21;\n          while (mVar21 == 0) {\n            pmVar36 = (mp_ptr)((int)pmVar36 + 1);\n            if (pmVar17 == pmVar36) goto LAB_0005361c;\n            pmVar22 = pmVar11 + 1;\n            pmVar11 = pmVar11 + 1;\n            mVar21 = *pmVar22 + 1;\n            *pmVar11 = mVar21;\n          }\n        }\n        else {\nLAB_0005361c:\n          do {\n            mVar21 = *pmVar8;\n            *pmVar8 = mVar21 + 1;\n            pmVar8 = pmVar8 + 1;\n          } while (mVar21 + 1 == 0);\n        }\n      }\n    }" if (parenthesized_expression "((int)pmVar17 < (int)phVar31)" ( (binary_expression "(int)pmVar17 < (int)phVar31" (cast_expression "(int)pmVar17" ( (type_descriptor "int" primitive_type) ) identifier) < (cast_expression "(int)phVar31" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n      pcVar42 = *(code **)(iVar15 + -0x7d0c);\n      pmVar36 = (mp_ptr)((int)phVar31 - (int)pmVar17);\n      *(undefined4 *)(puVar43 + -0x5c) = uVar46;\n      *(mp_ptr *)(puVar43 + -0x58) = pmVar17;\n      *(int *)(puVar43 + -0x54) = (int)pmVar17 * 4;\n      iVar40 = (*pcVar42)(pmVar25,pmVar25,pmVar25 + (int)pmVar17,pmVar36);\n      iVar15 = *(int *)(puVar43 + -0x68);\n      iVar16 = *(int *)(puVar43 + -0x54);\n      pmVar17 = *(mp_ptr *)(puVar43 + -0x58);\n      uVar46 = *(undefined4 *)(puVar43 + -0x5c);\n      if (iVar40 == 0) {\nLAB_0005359c:\n        pcVar42 = *(code **)(iVar15 + -0x7d0c);\n      }\n      else {\n        pmVar8 = pmVar25;\n        if ((int)pmVar17 <= (int)pmVar36) {\nLAB_00053588:\n          do {\n            mVar21 = *pmVar8;\n            *pmVar8 = mVar21 + 1;\n            pmVar8 = pmVar8 + 1;\n          } while (mVar21 + 1 == 0);\n          goto LAB_0005359c;\n        }\n        pmVar6 = pmVar25 + (int)pmVar36;\n        mVar21 = *pmVar6;\n        *pmVar6 = mVar21 + 1;\n        pmVar26 = pmVar36;\n        if (mVar21 + 1 == 0) {\n          do {\n            pmVar26 = (mp_ptr)((int)pmVar26 + 1);\n            if (pmVar17 == pmVar26) goto LAB_00053588;\n            mVar21 = pmVar6[1];\n            pmVar6 = pmVar6 + 1;\n            *pmVar6 = mVar21 + 1;\n          } while (mVar21 + 1 == 0);\n          goto LAB_0005359c;\n        }\n        pcVar42 = *(code **)(iVar15 + -0x7d0c);\n      }\n      *(mp_ptr *)(puVar43 + -0x58) = pmVar17;\n      *(undefined4 *)(puVar43 + -0x54) = uVar46;\n      iVar40 = (*pcVar42)(pmVar28,pmVar28,(int)pmVar28 + iVar16,pmVar36);\n      iVar15 = *(int *)(puVar43 + -0x68);\n      uVar46 = *(undefined4 *)(puVar43 + -0x54);\n      pmVar17 = *(mp_ptr *)(puVar43 + -0x58);\n      phVar31 = (hgcd_matrix1 *)pmVar17;\n      if (iVar40 != 0) {\n        pmVar8 = pmVar28;\n        if ((int)pmVar36 < (int)pmVar17) {\n          pmVar11 = pmVar28 + (int)pmVar36;\n          mVar21 = *pmVar11 + 1;\n          *pmVar11 = mVar21;\n          while (mVar21 == 0) {\n            pmVar36 = (mp_ptr)((int)pmVar36 + 1);\n            if (pmVar17 == pmVar36) goto LAB_0005361c;\n            pmVar22 = pmVar11 + 1;\n            pmVar11 = pmVar11 + 1;\n            mVar21 = *pmVar22 + 1;\n            *pmVar11 = mVar21;\n          }\n        }\n        else {\nLAB_0005361c:\n          do {\n            mVar21 = *pmVar8;\n            *pmVar8 = mVar21 + 1;\n            pmVar8 = pmVar8 + 1;\n          } while (mVar21 + 1 == 0);\n        }\n      }\n    }" { (expression_statement "pcVar42 = *(code **)(iVar15 + -0x7d0c);" (assignment_expression "pcVar42 = *(code **)(iVar15 + -0x7d0c)" identifier = (pointer_expression "*(code **)(iVar15 + -0x7d0c)" * (cast_expression "(code **)(iVar15 + -0x7d0c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar15 + -0x7d0c)" ( (binary_expression "iVar15 + -0x7d0c" identifier + number_literal) ))))) ;) (expression_statement "pmVar36 = (mp_ptr)((int)phVar31 - (int)pmVar17);" (assignment_expression "pmVar36 = (mp_ptr)((int)phVar31 - (int)pmVar17)" identifier = (call_expression "(mp_ptr)((int)phVar31 - (int)pmVar17)" (parenthesized_expression "(mp_ptr)" ( identifier )) (argument_list "((int)phVar31 - (int)pmVar17)" ( (binary_expression "(int)phVar31 - (int)pmVar17" (cast_expression "(int)phVar31" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)pmVar17" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) (expression_statement "*(undefined4 *)(puVar43 + -0x5c) = uVar46;" (assignment_expression "*(undefined4 *)(puVar43 + -0x5c) = uVar46" (pointer_expression "*(undefined4 *)(puVar43 + -0x5c)" * (cast_expression "(undefined4 *)(puVar43 + -0x5c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar43 + -0x5c)" ( (binary_expression "puVar43 + -0x5c" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(mp_ptr *)(puVar43 + -0x58) = pmVar17;" (assignment_expression "*(mp_ptr *)(puVar43 + -0x58) = pmVar17" (pointer_expression "*(mp_ptr *)(puVar43 + -0x58)" * (cast_expression "(mp_ptr *)(puVar43 + -0x58)" ( (type_descriptor "mp_ptr *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar43 + -0x58)" ( (binary_expression "puVar43 + -0x58" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(puVar43 + -0x54) = (int)pmVar17 * 4;" (assignment_expression "*(int *)(puVar43 + -0x54) = (int)pmVar17 * 4" (pointer_expression "*(int *)(puVar43 + -0x54)" * (cast_expression "(int *)(puVar43 + -0x54)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar43 + -0x54)" ( (binary_expression "puVar43 + -0x54" identifier + number_literal) )))) = (binary_expression "(int)pmVar17 * 4" (cast_expression "(int)pmVar17" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal)) ;) (expression_statement "iVar40 = (*pcVar42)(pmVar25,pmVar25,pmVar25 + (int)pmVar17,pmVar36);" (assignment_expression "iVar40 = (*pcVar42)(pmVar25,pmVar25,pmVar25 + (int)pmVar17,pmVar36)" identifier = (call_expression "(*pcVar42)(pmVar25,pmVar25,pmVar25 + (int)pmVar17,pmVar36)" (parenthesized_expression "(*pcVar42)" ( (pointer_expression "*pcVar42" * identifier) )) (argument_list "(pmVar25,pmVar25,pmVar25 + (int)pmVar17,pmVar36)" ( identifier , identifier , (binary_expression "pmVar25 + (int)pmVar17" identifier + (cast_expression "(int)pmVar17" ( (type_descriptor "int" primitive_type) ) identifier)) , identifier )))) ;) (expression_statement "iVar15 = *(int *)(puVar43 + -0x68);" (assignment_expression "iVar15 = *(int *)(puVar43 + -0x68)" identifier = (pointer_expression "*(int *)(puVar43 + -0x68)" * (cast_expression "(int *)(puVar43 + -0x68)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar43 + -0x68)" ( (binary_expression "puVar43 + -0x68" identifier + number_literal) ))))) ;) (expression_statement "iVar16 = *(int *)(puVar43 + -0x54);" (assignment_expression "iVar16 = *(int *)(puVar43 + -0x54)" identifier = (pointer_expression "*(int *)(puVar43 + -0x54)" * (cast_expression "(int *)(puVar43 + -0x54)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar43 + -0x54)" ( (binary_expression "puVar43 + -0x54" identifier + number_literal) ))))) ;) (expression_statement "pmVar17 = *(mp_ptr *)(puVar43 + -0x58);" (assignment_expression "pmVar17 = *(mp_ptr *)(puVar43 + -0x58)" identifier = (pointer_expression "*(mp_ptr *)(puVar43 + -0x58)" * (cast_expression "(mp_ptr *)(puVar43 + -0x58)" ( (type_descriptor "mp_ptr *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar43 + -0x58)" ( (binary_expression "puVar43 + -0x58" identifier + number_literal) ))))) ;) (expression_statement "uVar46 = *(undefined4 *)(puVar43 + -0x5c);" (assignment_expression "uVar46 = *(undefined4 *)(puVar43 + -0x5c)" identifier = (pointer_expression "*(undefined4 *)(puVar43 + -0x5c)" * (cast_expression "(undefined4 *)(puVar43 + -0x5c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar43 + -0x5c)" ( (binary_expression "puVar43 + -0x5c" identifier + number_literal) ))))) ;) (if_statement "if (iVar40 == 0) {\nLAB_0005359c:\n        pcVar42 = *(code **)(iVar15 + -0x7d0c);\n      }\n      else {\n        pmVar8 = pmVar25;\n        if ((int)pmVar17 <= (int)pmVar36) {\nLAB_00053588:\n          do {\n            mVar21 = *pmVar8;\n            *pmVar8 = mVar21 + 1;\n            pmVar8 = pmVar8 + 1;\n          } while (mVar21 + 1 == 0);\n          goto LAB_0005359c;\n        }\n        pmVar6 = pmVar25 + (int)pmVar36;\n        mVar21 = *pmVar6;\n        *pmVar6 = mVar21 + 1;\n        pmVar26 = pmVar36;\n        if (mVar21 + 1 == 0) {\n          do {\n            pmVar26 = (mp_ptr)((int)pmVar26 + 1);\n            if (pmVar17 == pmVar26) goto LAB_00053588;\n            mVar21 = pmVar6[1];\n            pmVar6 = pmVar6 + 1;\n            *pmVar6 = mVar21 + 1;\n          } while (mVar21 + 1 == 0);\n          goto LAB_0005359c;\n        }\n        pcVar42 = *(code **)(iVar15 + -0x7d0c);\n      }" if (parenthesized_expression "(iVar40 == 0)" ( (binary_expression "iVar40 == 0" identifier == number_literal) )) (compound_statement "{\nLAB_0005359c:\n        pcVar42 = *(code **)(iVar15 + -0x7d0c);\n      }" { (labeled_statement "LAB_0005359c:\n        pcVar42 = *(code **)(iVar15 + -0x7d0c);" statement_identifier : (expression_statement "pcVar42 = *(code **)(iVar15 + -0x7d0c);" (assignment_expression "pcVar42 = *(code **)(iVar15 + -0x7d0c)" identifier = (pointer_expression "*(code **)(iVar15 + -0x7d0c)" * (cast_expression "(code **)(iVar15 + -0x7d0c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar15 + -0x7d0c)" ( (binary_expression "iVar15 + -0x7d0c" identifier + number_literal) ))))) ;)) }) (else_clause "else {\n        pmVar8 = pmVar25;\n        if ((int)pmVar17 <= (int)pmVar36) {\nLAB_00053588:\n          do {\n            mVar21 = *pmVar8;\n            *pmVar8 = mVar21 + 1;\n            pmVar8 = pmVar8 + 1;\n          } while (mVar21 + 1 == 0);\n          goto LAB_0005359c;\n        }\n        pmVar6 = pmVar25 + (int)pmVar36;\n        mVar21 = *pmVar6;\n        *pmVar6 = mVar21 + 1;\n        pmVar26 = pmVar36;\n        if (mVar21 + 1 == 0) {\n          do {\n            pmVar26 = (mp_ptr)((int)pmVar26 + 1);\n            if (pmVar17 == pmVar26) goto LAB_00053588;\n            mVar21 = pmVar6[1];\n            pmVar6 = pmVar6 + 1;\n            *pmVar6 = mVar21 + 1;\n          } while (mVar21 + 1 == 0);\n          goto LAB_0005359c;\n        }\n        pcVar42 = *(code **)(iVar15 + -0x7d0c);\n      }" else (compound_statement "{\n        pmVar8 = pmVar25;\n        if ((int)pmVar17 <= (int)pmVar36) {\nLAB_00053588:\n          do {\n            mVar21 = *pmVar8;\n            *pmVar8 = mVar21 + 1;\n            pmVar8 = pmVar8 + 1;\n          } while (mVar21 + 1 == 0);\n          goto LAB_0005359c;\n        }\n        pmVar6 = pmVar25 + (int)pmVar36;\n        mVar21 = *pmVar6;\n        *pmVar6 = mVar21 + 1;\n        pmVar26 = pmVar36;\n        if (mVar21 + 1 == 0) {\n          do {\n            pmVar26 = (mp_ptr)((int)pmVar26 + 1);\n            if (pmVar17 == pmVar26) goto LAB_00053588;\n            mVar21 = pmVar6[1];\n            pmVar6 = pmVar6 + 1;\n            *pmVar6 = mVar21 + 1;\n          } while (mVar21 + 1 == 0);\n          goto LAB_0005359c;\n        }\n        pcVar42 = *(code **)(iVar15 + -0x7d0c);\n      }" { (expression_statement "pmVar8 = pmVar25;" (assignment_expression "pmVar8 = pmVar25" identifier = identifier) ;) (if_statement "if ((int)pmVar17 <= (int)pmVar36) {\nLAB_00053588:\n          do {\n            mVar21 = *pmVar8;\n            *pmVar8 = mVar21 + 1;\n            pmVar8 = pmVar8 + 1;\n          } while (mVar21 + 1 == 0);\n          goto LAB_0005359c;\n        }" if (parenthesized_expression "((int)pmVar17 <= (int)pmVar36)" ( (binary_expression "(int)pmVar17 <= (int)pmVar36" (cast_expression "(int)pmVar17" ( (type_descriptor "int" primitive_type) ) identifier) <= (cast_expression "(int)pmVar36" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\nLAB_00053588:\n          do {\n            mVar21 = *pmVar8;\n            *pmVar8 = mVar21 + 1;\n            pmVar8 = pmVar8 + 1;\n          } while (mVar21 + 1 == 0);\n          goto LAB_0005359c;\n        }" { (labeled_statement "LAB_00053588:\n          do {\n            mVar21 = *pmVar8;\n            *pmVar8 = mVar21 + 1;\n            pmVar8 = pmVar8 + 1;\n          } while (mVar21 + 1 == 0);" statement_identifier : (do_statement "do {\n            mVar21 = *pmVar8;\n            *pmVar8 = mVar21 + 1;\n            pmVar8 = pmVar8 + 1;\n          } while (mVar21 + 1 == 0);" do (compound_statement "{\n            mVar21 = *pmVar8;\n            *pmVar8 = mVar21 + 1;\n            pmVar8 = pmVar8 + 1;\n          }" { (expression_statement "mVar21 = *pmVar8;" (assignment_expression "mVar21 = *pmVar8" identifier = (pointer_expression "*pmVar8" * identifier)) ;) (expression_statement "*pmVar8 = mVar21 + 1;" (assignment_expression "*pmVar8 = mVar21 + 1" (pointer_expression "*pmVar8" * identifier) = (binary_expression "mVar21 + 1" identifier + number_literal)) ;) (expression_statement "pmVar8 = pmVar8 + 1;" (assignment_expression "pmVar8 = pmVar8 + 1" identifier = (binary_expression "pmVar8 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(mVar21 + 1 == 0)" ( (binary_expression "mVar21 + 1 == 0" (binary_expression "mVar21 + 1" identifier + number_literal) == number_literal) )) ;)) (goto_statement "goto LAB_0005359c;" goto statement_identifier ;) })) (expression_statement "pmVar6 = pmVar25 + (int)pmVar36;" (assignment_expression "pmVar6 = pmVar25 + (int)pmVar36" identifier = (binary_expression "pmVar25 + (int)pmVar36" identifier + (cast_expression "(int)pmVar36" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "mVar21 = *pmVar6;" (assignment_expression "mVar21 = *pmVar6" identifier = (pointer_expression "*pmVar6" * identifier)) ;) (expression_statement "*pmVar6 = mVar21 + 1;" (assignment_expression "*pmVar6 = mVar21 + 1" (pointer_expression "*pmVar6" * identifier) = (binary_expression "mVar21 + 1" identifier + number_literal)) ;) (expression_statement "pmVar26 = pmVar36;" (assignment_expression "pmVar26 = pmVar36" identifier = identifier) ;) (if_statement "if (mVar21 + 1 == 0) {\n          do {\n            pmVar26 = (mp_ptr)((int)pmVar26 + 1);\n            if (pmVar17 == pmVar26) goto LAB_00053588;\n            mVar21 = pmVar6[1];\n            pmVar6 = pmVar6 + 1;\n            *pmVar6 = mVar21 + 1;\n          } while (mVar21 + 1 == 0);\n          goto LAB_0005359c;\n        }" if (parenthesized_expression "(mVar21 + 1 == 0)" ( (binary_expression "mVar21 + 1 == 0" (binary_expression "mVar21 + 1" identifier + number_literal) == number_literal) )) (compound_statement "{\n          do {\n            pmVar26 = (mp_ptr)((int)pmVar26 + 1);\n            if (pmVar17 == pmVar26) goto LAB_00053588;\n            mVar21 = pmVar6[1];\n            pmVar6 = pmVar6 + 1;\n            *pmVar6 = mVar21 + 1;\n          } while (mVar21 + 1 == 0);\n          goto LAB_0005359c;\n        }" { (do_statement "do {\n            pmVar26 = (mp_ptr)((int)pmVar26 + 1);\n            if (pmVar17 == pmVar26) goto LAB_00053588;\n            mVar21 = pmVar6[1];\n            pmVar6 = pmVar6 + 1;\n            *pmVar6 = mVar21 + 1;\n          } while (mVar21 + 1 == 0);" do (compound_statement "{\n            pmVar26 = (mp_ptr)((int)pmVar26 + 1);\n            if (pmVar17 == pmVar26) goto LAB_00053588;\n            mVar21 = pmVar6[1];\n            pmVar6 = pmVar6 + 1;\n            *pmVar6 = mVar21 + 1;\n          }" { (expression_statement "pmVar26 = (mp_ptr)((int)pmVar26 + 1);" (assignment_expression "pmVar26 = (mp_ptr)((int)pmVar26 + 1)" identifier = (call_expression "(mp_ptr)((int)pmVar26 + 1)" (parenthesized_expression "(mp_ptr)" ( identifier )) (argument_list "((int)pmVar26 + 1)" ( (binary_expression "(int)pmVar26 + 1" (cast_expression "(int)pmVar26" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (if_statement "if (pmVar17 == pmVar26) goto LAB_00053588;" if (parenthesized_expression "(pmVar17 == pmVar26)" ( (binary_expression "pmVar17 == pmVar26" identifier == identifier) )) (goto_statement "goto LAB_00053588;" goto statement_identifier ;)) (expression_statement "mVar21 = pmVar6[1];" (assignment_expression "mVar21 = pmVar6[1]" identifier = (subscript_expression "pmVar6[1]" identifier [ number_literal ])) ;) (expression_statement "pmVar6 = pmVar6 + 1;" (assignment_expression "pmVar6 = pmVar6 + 1" identifier = (binary_expression "pmVar6 + 1" identifier + number_literal)) ;) (expression_statement "*pmVar6 = mVar21 + 1;" (assignment_expression "*pmVar6 = mVar21 + 1" (pointer_expression "*pmVar6" * identifier) = (binary_expression "mVar21 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(mVar21 + 1 == 0)" ( (binary_expression "mVar21 + 1 == 0" (binary_expression "mVar21 + 1" identifier + number_literal) == number_literal) )) ;) (goto_statement "goto LAB_0005359c;" goto statement_identifier ;) })) (expression_statement "pcVar42 = *(code **)(iVar15 + -0x7d0c);" (assignment_expression "pcVar42 = *(code **)(iVar15 + -0x7d0c)" identifier = (pointer_expression "*(code **)(iVar15 + -0x7d0c)" * (cast_expression "(code **)(iVar15 + -0x7d0c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar15 + -0x7d0c)" ( (binary_expression "iVar15 + -0x7d0c" identifier + number_literal) ))))) ;) }))) (expression_statement "*(mp_ptr *)(puVar43 + -0x58) = pmVar17;" (assignment_expression "*(mp_ptr *)(puVar43 + -0x58) = pmVar17" (pointer_expression "*(mp_ptr *)(puVar43 + -0x58)" * (cast_expression "(mp_ptr *)(puVar43 + -0x58)" ( (type_descriptor "mp_ptr *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar43 + -0x58)" ( (binary_expression "puVar43 + -0x58" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar43 + -0x54) = uVar46;" (assignment_expression "*(undefined4 *)(puVar43 + -0x54) = uVar46" (pointer_expression "*(undefined4 *)(puVar43 + -0x54)" * (cast_expression "(undefined4 *)(puVar43 + -0x54)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar43 + -0x54)" ( (binary_expression "puVar43 + -0x54" identifier + number_literal) )))) = identifier) ;) (expression_statement "iVar40 = (*pcVar42)(pmVar28,pmVar28,(int)pmVar28 + iVar16,pmVar36);" (assignment_expression "iVar40 = (*pcVar42)(pmVar28,pmVar28,(int)pmVar28 + iVar16,pmVar36)" identifier = (call_expression "(*pcVar42)(pmVar28,pmVar28,(int)pmVar28 + iVar16,pmVar36)" (parenthesized_expression "(*pcVar42)" ( (pointer_expression "*pcVar42" * identifier) )) (argument_list "(pmVar28,pmVar28,(int)pmVar28 + iVar16,pmVar36)" ( identifier , identifier , (binary_expression "(int)pmVar28 + iVar16" (cast_expression "(int)pmVar28" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) , identifier )))) ;) (expression_statement "iVar15 = *(int *)(puVar43 + -0x68);" (assignment_expression "iVar15 = *(int *)(puVar43 + -0x68)" identifier = (pointer_expression "*(int *)(puVar43 + -0x68)" * (cast_expression "(int *)(puVar43 + -0x68)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar43 + -0x68)" ( (binary_expression "puVar43 + -0x68" identifier + number_literal) ))))) ;) (expression_statement "uVar46 = *(undefined4 *)(puVar43 + -0x54);" (assignment_expression "uVar46 = *(undefined4 *)(puVar43 + -0x54)" identifier = (pointer_expression "*(undefined4 *)(puVar43 + -0x54)" * (cast_expression "(undefined4 *)(puVar43 + -0x54)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar43 + -0x54)" ( (binary_expression "puVar43 + -0x54" identifier + number_literal) ))))) ;) (expression_statement "pmVar17 = *(mp_ptr *)(puVar43 + -0x58);" (assignment_expression "pmVar17 = *(mp_ptr *)(puVar43 + -0x58)" identifier = (pointer_expression "*(mp_ptr *)(puVar43 + -0x58)" * (cast_expression "(mp_ptr *)(puVar43 + -0x58)" ( (type_descriptor "mp_ptr *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar43 + -0x58)" ( (binary_expression "puVar43 + -0x58" identifier + number_literal) ))))) ;) (expression_statement "phVar31 = (hgcd_matrix1 *)pmVar17;" (assignment_expression "phVar31 = (hgcd_matrix1 *)pmVar17" identifier = (cast_expression "(hgcd_matrix1 *)pmVar17" ( (type_descriptor "hgcd_matrix1 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (if_statement "if (iVar40 != 0) {\n        pmVar8 = pmVar28;\n        if ((int)pmVar36 < (int)pmVar17) {\n          pmVar11 = pmVar28 + (int)pmVar36;\n          mVar21 = *pmVar11 + 1;\n          *pmVar11 = mVar21;\n          while (mVar21 == 0) {\n            pmVar36 = (mp_ptr)((int)pmVar36 + 1);\n            if (pmVar17 == pmVar36) goto LAB_0005361c;\n            pmVar22 = pmVar11 + 1;\n            pmVar11 = pmVar11 + 1;\n            mVar21 = *pmVar22 + 1;\n            *pmVar11 = mVar21;\n          }\n        }\n        else {\nLAB_0005361c:\n          do {\n            mVar21 = *pmVar8;\n            *pmVar8 = mVar21 + 1;\n            pmVar8 = pmVar8 + 1;\n          } while (mVar21 + 1 == 0);\n        }\n      }" if (parenthesized_expression "(iVar40 != 0)" ( (binary_expression "iVar40 != 0" identifier != number_literal) )) (compound_statement "{\n        pmVar8 = pmVar28;\n        if ((int)pmVar36 < (int)pmVar17) {\n          pmVar11 = pmVar28 + (int)pmVar36;\n          mVar21 = *pmVar11 + 1;\n          *pmVar11 = mVar21;\n          while (mVar21 == 0) {\n            pmVar36 = (mp_ptr)((int)pmVar36 + 1);\n            if (pmVar17 == pmVar36) goto LAB_0005361c;\n            pmVar22 = pmVar11 + 1;\n            pmVar11 = pmVar11 + 1;\n            mVar21 = *pmVar22 + 1;\n            *pmVar11 = mVar21;\n          }\n        }\n        else {\nLAB_0005361c:\n          do {\n            mVar21 = *pmVar8;\n            *pmVar8 = mVar21 + 1;\n            pmVar8 = pmVar8 + 1;\n          } while (mVar21 + 1 == 0);\n        }\n      }" { (expression_statement "pmVar8 = pmVar28;" (assignment_expression "pmVar8 = pmVar28" identifier = identifier) ;) (if_statement "if ((int)pmVar36 < (int)pmVar17) {\n          pmVar11 = pmVar28 + (int)pmVar36;\n          mVar21 = *pmVar11 + 1;\n          *pmVar11 = mVar21;\n          while (mVar21 == 0) {\n            pmVar36 = (mp_ptr)((int)pmVar36 + 1);\n            if (pmVar17 == pmVar36) goto LAB_0005361c;\n            pmVar22 = pmVar11 + 1;\n            pmVar11 = pmVar11 + 1;\n            mVar21 = *pmVar22 + 1;\n            *pmVar11 = mVar21;\n          }\n        }\n        else {\nLAB_0005361c:\n          do {\n            mVar21 = *pmVar8;\n            *pmVar8 = mVar21 + 1;\n            pmVar8 = pmVar8 + 1;\n          } while (mVar21 + 1 == 0);\n        }" if (parenthesized_expression "((int)pmVar36 < (int)pmVar17)" ( (binary_expression "(int)pmVar36 < (int)pmVar17" (cast_expression "(int)pmVar36" ( (type_descriptor "int" primitive_type) ) identifier) < (cast_expression "(int)pmVar17" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n          pmVar11 = pmVar28 + (int)pmVar36;\n          mVar21 = *pmVar11 + 1;\n          *pmVar11 = mVar21;\n          while (mVar21 == 0) {\n            pmVar36 = (mp_ptr)((int)pmVar36 + 1);\n            if (pmVar17 == pmVar36) goto LAB_0005361c;\n            pmVar22 = pmVar11 + 1;\n            pmVar11 = pmVar11 + 1;\n            mVar21 = *pmVar22 + 1;\n            *pmVar11 = mVar21;\n          }\n        }" { (expression_statement "pmVar11 = pmVar28 + (int)pmVar36;" (assignment_expression "pmVar11 = pmVar28 + (int)pmVar36" identifier = (binary_expression "pmVar28 + (int)pmVar36" identifier + (cast_expression "(int)pmVar36" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "mVar21 = *pmVar11 + 1;" (assignment_expression "mVar21 = *pmVar11 + 1" identifier = (binary_expression "*pmVar11 + 1" (pointer_expression "*pmVar11" * identifier) + number_literal)) ;) (expression_statement "*pmVar11 = mVar21;" (assignment_expression "*pmVar11 = mVar21" (pointer_expression "*pmVar11" * identifier) = identifier) ;) (while_statement "while (mVar21 == 0) {\n            pmVar36 = (mp_ptr)((int)pmVar36 + 1);\n            if (pmVar17 == pmVar36) goto LAB_0005361c;\n            pmVar22 = pmVar11 + 1;\n            pmVar11 = pmVar11 + 1;\n            mVar21 = *pmVar22 + 1;\n            *pmVar11 = mVar21;\n          }" while (parenthesized_expression "(mVar21 == 0)" ( (binary_expression "mVar21 == 0" identifier == number_literal) )) (compound_statement "{\n            pmVar36 = (mp_ptr)((int)pmVar36 + 1);\n            if (pmVar17 == pmVar36) goto LAB_0005361c;\n            pmVar22 = pmVar11 + 1;\n            pmVar11 = pmVar11 + 1;\n            mVar21 = *pmVar22 + 1;\n            *pmVar11 = mVar21;\n          }" { (expression_statement "pmVar36 = (mp_ptr)((int)pmVar36 + 1);" (assignment_expression "pmVar36 = (mp_ptr)((int)pmVar36 + 1)" identifier = (call_expression "(mp_ptr)((int)pmVar36 + 1)" (parenthesized_expression "(mp_ptr)" ( identifier )) (argument_list "((int)pmVar36 + 1)" ( (binary_expression "(int)pmVar36 + 1" (cast_expression "(int)pmVar36" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (if_statement "if (pmVar17 == pmVar36) goto LAB_0005361c;" if (parenthesized_expression "(pmVar17 == pmVar36)" ( (binary_expression "pmVar17 == pmVar36" identifier == identifier) )) (goto_statement "goto LAB_0005361c;" goto statement_identifier ;)) (expression_statement "pmVar22 = pmVar11 + 1;" (assignment_expression "pmVar22 = pmVar11 + 1" identifier = (binary_expression "pmVar11 + 1" identifier + number_literal)) ;) (expression_statement "pmVar11 = pmVar11 + 1;" (assignment_expression "pmVar11 = pmVar11 + 1" identifier = (binary_expression "pmVar11 + 1" identifier + number_literal)) ;) (expression_statement "mVar21 = *pmVar22 + 1;" (assignment_expression "mVar21 = *pmVar22 + 1" identifier = (binary_expression "*pmVar22 + 1" (pointer_expression "*pmVar22" * identifier) + number_literal)) ;) (expression_statement "*pmVar11 = mVar21;" (assignment_expression "*pmVar11 = mVar21" (pointer_expression "*pmVar11" * identifier) = identifier) ;) })) }) (else_clause "else {\nLAB_0005361c:\n          do {\n            mVar21 = *pmVar8;\n            *pmVar8 = mVar21 + 1;\n            pmVar8 = pmVar8 + 1;\n          } while (mVar21 + 1 == 0);\n        }" else (compound_statement "{\nLAB_0005361c:\n          do {\n            mVar21 = *pmVar8;\n            *pmVar8 = mVar21 + 1;\n            pmVar8 = pmVar8 + 1;\n          } while (mVar21 + 1 == 0);\n        }" { (labeled_statement "LAB_0005361c:\n          do {\n            mVar21 = *pmVar8;\n            *pmVar8 = mVar21 + 1;\n            pmVar8 = pmVar8 + 1;\n          } while (mVar21 + 1 == 0);" statement_identifier : (do_statement "do {\n            mVar21 = *pmVar8;\n            *pmVar8 = mVar21 + 1;\n            pmVar8 = pmVar8 + 1;\n          } while (mVar21 + 1 == 0);" do (compound_statement "{\n            mVar21 = *pmVar8;\n            *pmVar8 = mVar21 + 1;\n            pmVar8 = pmVar8 + 1;\n          }" { (expression_statement "mVar21 = *pmVar8;" (assignment_expression "mVar21 = *pmVar8" identifier = (pointer_expression "*pmVar8" * identifier)) ;) (expression_statement "*pmVar8 = mVar21 + 1;" (assignment_expression "*pmVar8 = mVar21 + 1" (pointer_expression "*pmVar8" * identifier) = (binary_expression "mVar21 + 1" identifier + number_literal)) ;) (expression_statement "pmVar8 = pmVar8 + 1;" (assignment_expression "pmVar8 = pmVar8 + 1" identifier = (binary_expression "pmVar8 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(mVar21 + 1 == 0)" ( (binary_expression "mVar21 + 1 == 0" (binary_expression "mVar21 + 1" identifier + number_literal) == number_literal) )) ;)) }))) })) })) (expression_statement "uVar10 = *(undefined4 *)(iVar13 + 0x14);" (assignment_expression "uVar10 = *(undefined4 *)(iVar13 + 0x14)" identifier = (pointer_expression "*(undefined4 *)(iVar13 + 0x14)" * (cast_expression "(undefined4 *)(iVar13 + 0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar13 + 0x14)" ( (binary_expression "iVar13 + 0x14" identifier + number_literal) ))))) ;) (expression_statement "pcVar42 = *(code **)(iVar15 + -0x7cd8);" (assignment_expression "pcVar42 = *(code **)(iVar15 + -0x7cd8)" identifier = (pointer_expression "*(code **)(iVar15 + -0x7cd8)" * (cast_expression "(code **)(iVar15 + -0x7cd8)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar15 + -0x7cd8)" ( (binary_expression "iVar15 + -0x7cd8" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar43 + -0x5c) = uVar46;" (assignment_expression "*(undefined4 *)(puVar43 + -0x5c) = uVar46" (pointer_expression "*(undefined4 *)(puVar43 + -0x5c)" * (cast_expression "(undefined4 *)(puVar43 + -0x5c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar43 + -0x5c)" ( (binary_expression "puVar43 + -0x5c" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(mp_ptr *)(puVar43 + -0x54) = pmVar17;" (assignment_expression "*(mp_ptr *)(puVar43 + -0x54) = pmVar17" (pointer_expression "*(mp_ptr *)(puVar43 + -0x54)" * (cast_expression "(mp_ptr *)(puVar43 + -0x54)" ( (type_descriptor "mp_ptr *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar43 + -0x54)" ( (binary_expression "puVar43 + -0x54" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar45 + 0x18) = *(undefined4 *)(puVar43 + -0x48);" (assignment_expression "*(undefined4 *)(puVar45 + 0x18) = *(undefined4 *)(puVar43 + -0x48)" (pointer_expression "*(undefined4 *)(puVar45 + 0x18)" * (cast_expression "(undefined4 *)(puVar45 + 0x18)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar45 + 0x18)" ( (binary_expression "puVar45 + 0x18" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(puVar43 + -0x48)" * (cast_expression "(undefined4 *)(puVar43 + -0x48)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar43 + -0x48)" ( (binary_expression "puVar43 + -0x48" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar45 + 0x10) = uVar10;" (assignment_expression "*(undefined4 *)(puVar45 + 0x10) = uVar10" (pointer_expression "*(undefined4 *)(puVar45 + 0x10)" * (cast_expression "(undefined4 *)(puVar45 + 0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar45 + 0x10)" ( (binary_expression "puVar45 + 0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(puVar45 + 0x14) = iVar9;" (assignment_expression "*(int *)(puVar45 + 0x14) = iVar9" (pointer_expression "*(int *)(puVar45 + 0x14)" * (cast_expression "(int *)(puVar45 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar45 + 0x14)" ( (binary_expression "puVar45 + 0x14" identifier + number_literal) )))) = identifier) ;) (expression_statement "(*pcVar42)(pmVar35,pmVar17,pmVar25,phVar31);" (call_expression "(*pcVar42)(pmVar35,pmVar17,pmVar25,phVar31)" (parenthesized_expression "(*pcVar42)" ( (pointer_expression "*pcVar42" * identifier) )) (argument_list "(pmVar35,pmVar17,pmVar25,phVar31)" ( identifier , identifier , identifier , identifier ))) ;) (expression_statement "uVar46 = *(undefined4 *)(iVar13 + 0xc);" (assignment_expression "uVar46 = *(undefined4 *)(iVar13 + 0xc)" identifier = (pointer_expression "*(undefined4 *)(iVar13 + 0xc)" * (cast_expression "(undefined4 *)(iVar13 + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar13 + 0xc)" ( (binary_expression "iVar13 + 0xc" identifier + number_literal) ))))) ;) (expression_statement "uVar33 = *(undefined4 *)(puVar43 + -0x54);" (assignment_expression "uVar33 = *(undefined4 *)(puVar43 + -0x54)" identifier = (pointer_expression "*(undefined4 *)(puVar43 + -0x54)" * (cast_expression "(undefined4 *)(puVar43 + -0x54)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar43 + -0x54)" ( (binary_expression "puVar43 + -0x54" identifier + number_literal) ))))) ;) (expression_statement "uVar34 = *(undefined4 *)(puVar43 + -0x5c);" (assignment_expression "uVar34 = *(undefined4 *)(puVar43 + -0x5c)" identifier = (pointer_expression "*(undefined4 *)(puVar43 + -0x5c)" * (cast_expression "(undefined4 *)(puVar43 + -0x5c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar43 + -0x5c)" ( (binary_expression "puVar43 + -0x5c" identifier + number_literal) ))))) ;) (expression_statement "uVar10 = *(undefined4 *)(puVar43 + -0x48);" (assignment_expression "uVar10 = *(undefined4 *)(puVar43 + -0x48)" identifier = (pointer_expression "*(undefined4 *)(puVar43 + -0x48)" * (cast_expression "(undefined4 *)(puVar43 + -0x48)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar43 + -0x48)" ( (binary_expression "puVar43 + -0x48" identifier + number_literal) ))))) ;) (expression_statement "pcVar42 = *(code **)(*(int *)(puVar43 + -0x68) + -0x7cd8);" (assignment_expression "pcVar42 = *(code **)(*(int *)(puVar43 + -0x68) + -0x7cd8)" identifier = (pointer_expression "*(code **)(*(int *)(puVar43 + -0x68) + -0x7cd8)" * (cast_expression "(code **)(*(int *)(puVar43 + -0x68) + -0x7cd8)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)(puVar43 + -0x68) + -0x7cd8)" ( (binary_expression "*(int *)(puVar43 + -0x68) + -0x7cd8" (pointer_expression "*(int *)(puVar43 + -0x68)" * (cast_expression "(int *)(puVar43 + -0x68)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar43 + -0x68)" ( (binary_expression "puVar43 + -0x68" identifier + number_literal) )))) + number_literal) ))))) ;) (expression_statement "uVar20 = *(undefined4 *)(puVar43 + -0x44);" (assignment_expression "uVar20 = *(undefined4 *)(puVar43 + -0x44)" identifier = (pointer_expression "*(undefined4 *)(puVar43 + -0x44)" * (cast_expression "(undefined4 *)(puVar43 + -0x44)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar43 + -0x44)" ( (binary_expression "puVar43 + -0x44" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar43 + -0x58) = uVar33;" (assignment_expression "*(undefined4 *)(puVar43 + -0x58) = uVar33" (pointer_expression "*(undefined4 *)(puVar43 + -0x58)" * (cast_expression "(undefined4 *)(puVar43 + -0x58)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar43 + -0x58)" ( (binary_expression "puVar43 + -0x58" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar45 + 0x14) = uVar34;" (assignment_expression "*(undefined4 *)(puVar45 + 0x14) = uVar34" (pointer_expression "*(undefined4 *)(puVar45 + 0x14)" * (cast_expression "(undefined4 *)(puVar45 + 0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar45 + 0x14)" ( (binary_expression "puVar45 + 0x14" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar43 + -0x54) = uVar34;" (assignment_expression "*(undefined4 *)(puVar43 + -0x54) = uVar34" (pointer_expression "*(undefined4 *)(puVar43 + -0x54)" * (cast_expression "(undefined4 *)(puVar43 + -0x54)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar43 + -0x54)" ( (binary_expression "puVar43 + -0x54" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar45 + 0x10) = uVar46;" (assignment_expression "*(undefined4 *)(puVar45 + 0x10) = uVar46" (pointer_expression "*(undefined4 *)(puVar45 + 0x10)" * (cast_expression "(undefined4 *)(puVar45 + 0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar45 + 0x10)" ( (binary_expression "puVar45 + 0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar45 + 0x18) = uVar10;" (assignment_expression "*(undefined4 *)(puVar45 + 0x18) = uVar10" (pointer_expression "*(undefined4 *)(puVar45 + 0x18)" * (cast_expression "(undefined4 *)(puVar45 + 0x18)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar45 + 0x18)" ( (binary_expression "puVar45 + 0x18" identifier + number_literal) )))) = identifier) ;) (expression_statement "(*pcVar42)(uVar20,uVar33,pmVar28,phVar31);" (call_expression "(*pcVar42)(uVar20,uVar33,pmVar28,phVar31)" (parenthesized_expression "(*pcVar42)" ( (pointer_expression "*pcVar42" * identifier) )) (argument_list "(uVar20,uVar33,pmVar28,phVar31)" ( identifier , identifier , identifier , identifier ))) ;) (expression_statement "iVar40 = *(int *)(puVar43 + -0x58);" (assignment_expression "iVar40 = *(int *)(puVar43 + -0x58)" identifier = (pointer_expression "*(int *)(puVar43 + -0x58)" * (cast_expression "(int *)(puVar43 + -0x58)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar43 + -0x58)" ( (binary_expression "puVar43 + -0x58" identifier + number_literal) ))))) ;) (expression_statement "iVar15 = *(int *)(puVar43 + -0x68);" (assignment_expression "iVar15 = *(int *)(puVar43 + -0x68)" identifier = (pointer_expression "*(int *)(puVar43 + -0x68)" * (cast_expression "(int *)(puVar43 + -0x68)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar43 + -0x68)" ( (binary_expression "puVar43 + -0x68" identifier + number_literal) ))))) ;) (expression_statement "iVar16 = *(int *)(puVar43 + -0x54);" (assignment_expression "iVar16 = *(int *)(puVar43 + -0x54)" identifier = (pointer_expression "*(int *)(puVar43 + -0x54)" * (cast_expression "(int *)(puVar43 + -0x54)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar43 + -0x54)" ( (binary_expression "puVar43 + -0x54" identifier + number_literal) ))))) ;) (if_statement "if ((iVar9 + (int)phVar31 < iVar40) && (iVar9 != iVar40 - (int)phVar31)) {\n      iVar41 = (iVar40 - (int)phVar31) - iVar9;\n      pmVar11 = pmVar35 + (int)(iVar9 + (int)phVar31);\n      do {\n        iVar41 = iVar41 + -1;\n        *pmVar11 = 0;\n        pmVar11 = pmVar11 + 1;\n      } while (iVar41 != 0);\n    }" if (parenthesized_expression "((iVar9 + (int)phVar31 < iVar40) && (iVar9 != iVar40 - (int)phVar31))" ( (binary_expression "(iVar9 + (int)phVar31 < iVar40) && (iVar9 != iVar40 - (int)phVar31)" (parenthesized_expression "(iVar9 + (int)phVar31 < iVar40)" ( (binary_expression "iVar9 + (int)phVar31 < iVar40" (binary_expression "iVar9 + (int)phVar31" identifier + (cast_expression "(int)phVar31" ( (type_descriptor "int" primitive_type) ) identifier)) < identifier) )) && (parenthesized_expression "(iVar9 != iVar40 - (int)phVar31)" ( (binary_expression "iVar9 != iVar40 - (int)phVar31" identifier != (binary_expression "iVar40 - (int)phVar31" identifier - (cast_expression "(int)phVar31" ( (type_descriptor "int" primitive_type) ) identifier))) ))) )) (compound_statement "{\n      iVar41 = (iVar40 - (int)phVar31) - iVar9;\n      pmVar11 = pmVar35 + (int)(iVar9 + (int)phVar31);\n      do {\n        iVar41 = iVar41 + -1;\n        *pmVar11 = 0;\n        pmVar11 = pmVar11 + 1;\n      } while (iVar41 != 0);\n    }" { (expression_statement "iVar41 = (iVar40 - (int)phVar31) - iVar9;" (assignment_expression "iVar41 = (iVar40 - (int)phVar31) - iVar9" identifier = (binary_expression "(iVar40 - (int)phVar31) - iVar9" (parenthesized_expression "(iVar40 - (int)phVar31)" ( (binary_expression "iVar40 - (int)phVar31" identifier - (cast_expression "(int)phVar31" ( (type_descriptor "int" primitive_type) ) identifier)) )) - identifier)) ;) (expression_statement "pmVar11 = pmVar35 + (int)(iVar9 + (int)phVar31);" (assignment_expression "pmVar11 = pmVar35 + (int)(iVar9 + (int)phVar31)" identifier = (binary_expression "pmVar35 + (int)(iVar9 + (int)phVar31)" identifier + (cast_expression "(int)(iVar9 + (int)phVar31)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(iVar9 + (int)phVar31)" ( (binary_expression "iVar9 + (int)phVar31" identifier + (cast_expression "(int)phVar31" ( (type_descriptor "int" primitive_type) ) identifier)) ))))) ;) (do_statement "do {\n        iVar41 = iVar41 + -1;\n        *pmVar11 = 0;\n        pmVar11 = pmVar11 + 1;\n      } while (iVar41 != 0);" do (compound_statement "{\n        iVar41 = iVar41 + -1;\n        *pmVar11 = 0;\n        pmVar11 = pmVar11 + 1;\n      }" { (expression_statement "iVar41 = iVar41 + -1;" (assignment_expression "iVar41 = iVar41 + -1" identifier = (binary_expression "iVar41 + -1" identifier + number_literal)) ;) (expression_statement "*pmVar11 = 0;" (assignment_expression "*pmVar11 = 0" (pointer_expression "*pmVar11" * identifier) = number_literal) ;) (expression_statement "pmVar11 = pmVar11 + 1;" (assignment_expression "pmVar11 = pmVar11 + 1" identifier = (binary_expression "pmVar11 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar41 != 0)" ( (binary_expression "iVar41 != 0" identifier != number_literal) )) ;) })) (expression_statement "pcVar42 = *(code **)(iVar15 + -0x7b2c);" (assignment_expression "pcVar42 = *(code **)(iVar15 + -0x7b2c)" identifier = (pointer_expression "*(code **)(iVar15 + -0x7b2c)" * (cast_expression "(code **)(iVar15 + -0x7b2c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar15 + -0x7b2c)" ( (binary_expression "iVar15 + -0x7b2c" identifier + number_literal) ))))) ;) (if_statement "if (iVar16 + (int)phVar31 < iVar40) {\n      if (iVar16 != iVar40 - (int)phVar31) {\n        iVar9 = (iVar40 - (int)phVar31) - iVar16;\n        puVar7 = (undefined4 *)(*(int *)(puVar43 + -0x44) + (int)(iVar16 + (int)phVar31) * 4);\n        do {\n          iVar9 = iVar9 + -1;\n          *puVar7 = 0;\n          puVar7 = puVar7 + 1;\n        } while (iVar9 != 0);\n        pcVar42 = *(code **)(iVar15 + -0x7b2c);\n      }\n    }" if (parenthesized_expression "(iVar16 + (int)phVar31 < iVar40)" ( (binary_expression "iVar16 + (int)phVar31 < iVar40" (binary_expression "iVar16 + (int)phVar31" identifier + (cast_expression "(int)phVar31" ( (type_descriptor "int" primitive_type) ) identifier)) < identifier) )) (compound_statement "{\n      if (iVar16 != iVar40 - (int)phVar31) {\n        iVar9 = (iVar40 - (int)phVar31) - iVar16;\n        puVar7 = (undefined4 *)(*(int *)(puVar43 + -0x44) + (int)(iVar16 + (int)phVar31) * 4);\n        do {\n          iVar9 = iVar9 + -1;\n          *puVar7 = 0;\n          puVar7 = puVar7 + 1;\n        } while (iVar9 != 0);\n        pcVar42 = *(code **)(iVar15 + -0x7b2c);\n      }\n    }" { (if_statement "if (iVar16 != iVar40 - (int)phVar31) {\n        iVar9 = (iVar40 - (int)phVar31) - iVar16;\n        puVar7 = (undefined4 *)(*(int *)(puVar43 + -0x44) + (int)(iVar16 + (int)phVar31) * 4);\n        do {\n          iVar9 = iVar9 + -1;\n          *puVar7 = 0;\n          puVar7 = puVar7 + 1;\n        } while (iVar9 != 0);\n        pcVar42 = *(code **)(iVar15 + -0x7b2c);\n      }" if (parenthesized_expression "(iVar16 != iVar40 - (int)phVar31)" ( (binary_expression "iVar16 != iVar40 - (int)phVar31" identifier != (binary_expression "iVar40 - (int)phVar31" identifier - (cast_expression "(int)phVar31" ( (type_descriptor "int" primitive_type) ) identifier))) )) (compound_statement "{\n        iVar9 = (iVar40 - (int)phVar31) - iVar16;\n        puVar7 = (undefined4 *)(*(int *)(puVar43 + -0x44) + (int)(iVar16 + (int)phVar31) * 4);\n        do {\n          iVar9 = iVar9 + -1;\n          *puVar7 = 0;\n          puVar7 = puVar7 + 1;\n        } while (iVar9 != 0);\n        pcVar42 = *(code **)(iVar15 + -0x7b2c);\n      }" { (expression_statement "iVar9 = (iVar40 - (int)phVar31) - iVar16;" (assignment_expression "iVar9 = (iVar40 - (int)phVar31) - iVar16" identifier = (binary_expression "(iVar40 - (int)phVar31) - iVar16" (parenthesized_expression "(iVar40 - (int)phVar31)" ( (binary_expression "iVar40 - (int)phVar31" identifier - (cast_expression "(int)phVar31" ( (type_descriptor "int" primitive_type) ) identifier)) )) - identifier)) ;) (expression_statement "puVar7 = (undefined4 *)(*(int *)(puVar43 + -0x44) + (int)(iVar16 + (int)phVar31) * 4);" (assignment_expression "puVar7 = (undefined4 *)(*(int *)(puVar43 + -0x44) + (int)(iVar16 + (int)phVar31) * 4)" identifier = (cast_expression "(undefined4 *)(*(int *)(puVar43 + -0x44) + (int)(iVar16 + (int)phVar31) * 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(puVar43 + -0x44) + (int)(iVar16 + (int)phVar31) * 4)" ( (binary_expression "*(int *)(puVar43 + -0x44) + (int)(iVar16 + (int)phVar31) * 4" (pointer_expression "*(int *)(puVar43 + -0x44)" * (cast_expression "(int *)(puVar43 + -0x44)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar43 + -0x44)" ( (binary_expression "puVar43 + -0x44" identifier + number_literal) )))) + (binary_expression "(int)(iVar16 + (int)phVar31) * 4" (cast_expression "(int)(iVar16 + (int)phVar31)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(iVar16 + (int)phVar31)" ( (binary_expression "iVar16 + (int)phVar31" identifier + (cast_expression "(int)phVar31" ( (type_descriptor "int" primitive_type) ) identifier)) ))) * number_literal)) )))) ;) (do_statement "do {\n          iVar9 = iVar9 + -1;\n          *puVar7 = 0;\n          puVar7 = puVar7 + 1;\n        } while (iVar9 != 0);" do (compound_statement "{\n          iVar9 = iVar9 + -1;\n          *puVar7 = 0;\n          puVar7 = puVar7 + 1;\n        }" { (expression_statement "iVar9 = iVar9 + -1;" (assignment_expression "iVar9 = iVar9 + -1" identifier = (binary_expression "iVar9 + -1" identifier + number_literal)) ;) (expression_statement "*puVar7 = 0;" (assignment_expression "*puVar7 = 0" (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 "(iVar9 != 0)" ( (binary_expression "iVar9 != 0" identifier != number_literal) )) ;) (expression_statement "pcVar42 = *(code **)(iVar15 + -0x7b2c);" (assignment_expression "pcVar42 = *(code **)(iVar15 + -0x7b2c)" identifier = (pointer_expression "*(code **)(iVar15 + -0x7b2c)" * (cast_expression "(code **)(iVar15 + -0x7b2c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar15 + -0x7b2c)" ( (binary_expression "iVar15 + -0x7b2c" identifier + number_literal) ))))) ;) })) })) (expression_statement "*(int *)(puVar43 + -0x54) = iVar40;" (assignment_expression "*(int *)(puVar43 + -0x54) = iVar40" (pointer_expression "*(int *)(puVar43 + -0x54)" * (cast_expression "(int *)(puVar43 + -0x54)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar43 + -0x54)" ( (binary_expression "puVar43 + -0x54" identifier + number_literal) )))) = identifier) ;) (expression_statement "uVar3 = (*pcVar42)(pmVar35,pmVar35,*(undefined4 *)(puVar43 + -0x44),iVar40);" (assignment_expression "uVar3 = (*pcVar42)(pmVar35,pmVar35,*(undefined4 *)(puVar43 + -0x44),iVar40)" identifier = (call_expression "(*pcVar42)(pmVar35,pmVar35,*(undefined4 *)(puVar43 + -0x44),iVar40)" (parenthesized_expression "(*pcVar42)" ( (pointer_expression "*pcVar42" * identifier) )) (argument_list "(pmVar35,pmVar35,*(undefined4 *)(puVar43 + -0x44),iVar40)" ( identifier , identifier , (pointer_expression "*(undefined4 *)(puVar43 + -0x44)" * (cast_expression "(undefined4 *)(puVar43 + -0x44)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar43 + -0x44)" ( (binary_expression "puVar43 + -0x44" identifier + number_literal) )))) , identifier )))) ;) (expression_statement "uVar18 = *pmVar35;" (assignment_expression "uVar18 = *pmVar35" identifier = (pointer_expression "*pmVar35" * identifier)) ;) (expression_statement "iVar40 = *(int *)(puVar43 + -0x68);" (assignment_expression "iVar40 = *(int *)(puVar43 + -0x68)" identifier = (pointer_expression "*(int *)(puVar43 + -0x68)" * (cast_expression "(int *)(puVar43 + -0x68)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar43 + -0x68)" ( (binary_expression "puVar43 + -0x68" identifier + number_literal) ))))) ;) (expression_statement "uVar46 = *(undefined4 *)(puVar43 + -0x54);" (assignment_expression "uVar46 = *(undefined4 *)(puVar43 + -0x54)" identifier = (pointer_expression "*(undefined4 *)(puVar43 + -0x54)" * (cast_expression "(undefined4 *)(puVar43 + -0x54)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar43 + -0x54)" ( (binary_expression "puVar43 + -0x54" identifier + number_literal) ))))) ;) (expression_statement "*pmVar35 = uVar18 - uVar3;" (assignment_expression "*pmVar35 = uVar18 - uVar3" (pointer_expression "*pmVar35" * identifier) = (binary_expression "uVar18 - uVar3" identifier - identifier)) ;) (expression_statement "pmVar11 = pmVar35;" (assignment_expression "pmVar11 = pmVar35" identifier = identifier) ;) (if_statement "if (uVar18 < uVar3) {\n      do {\n        pmVar11 = pmVar11 + 1;\n        mVar21 = *pmVar11;\n        *pmVar11 = mVar21 - 1;\n      } while (mVar21 == 0);\n    }" if (parenthesized_expression "(uVar18 < uVar3)" ( (binary_expression "uVar18 < uVar3" identifier < identifier) )) (compound_statement "{\n      do {\n        pmVar11 = pmVar11 + 1;\n        mVar21 = *pmVar11;\n        *pmVar11 = mVar21 - 1;\n      } while (mVar21 == 0);\n    }" { (do_statement "do {\n        pmVar11 = pmVar11 + 1;\n        mVar21 = *pmVar11;\n        *pmVar11 = mVar21 - 1;\n      } while (mVar21 == 0);" do (compound_statement "{\n        pmVar11 = pmVar11 + 1;\n        mVar21 = *pmVar11;\n        *pmVar11 = mVar21 - 1;\n      }" { (expression_statement "pmVar11 = pmVar11 + 1;" (assignment_expression "pmVar11 = pmVar11 + 1" identifier = (binary_expression "pmVar11 + 1" identifier + number_literal)) ;) (expression_statement "mVar21 = *pmVar11;" (assignment_expression "mVar21 = *pmVar11" identifier = (pointer_expression "*pmVar11" * identifier)) ;) (expression_statement "*pmVar11 = mVar21 - 1;" (assignment_expression "*pmVar11 = mVar21 - 1" (pointer_expression "*pmVar11" * identifier) = (binary_expression "mVar21 - 1" identifier - number_literal)) ;) }) while (parenthesized_expression "(mVar21 == 0)" ( (binary_expression "mVar21 == 0" identifier == number_literal) )) ;) })) (expression_statement "uVar10 = *(undefined4 *)(iVar13 + 0x10);" (assignment_expression "uVar10 = *(undefined4 *)(iVar13 + 0x10)" identifier = (pointer_expression "*(undefined4 *)(iVar13 + 0x10)" * (cast_expression "(undefined4 *)(iVar13 + 0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar13 + 0x10)" ( (binary_expression "iVar13 + 0x10" identifier + number_literal) ))))) ;) (expression_statement "pcVar42 = *(code **)(iVar40 + -0x7cd8);" (assignment_expression "pcVar42 = *(code **)(iVar40 + -0x7cd8)" identifier = (pointer_expression "*(code **)(iVar40 + -0x7cd8)" * (cast_expression "(code **)(iVar40 + -0x7cd8)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar40 + -0x7cd8)" ( (binary_expression "iVar40 + -0x7cd8" identifier + number_literal) ))))) ;) (expression_statement "uVar20 = *(undefined4 *)(puVar43 + -0x44);" (assignment_expression "uVar20 = *(undefined4 *)(puVar43 + -0x44)" identifier = (pointer_expression "*(undefined4 *)(puVar43 + -0x44)" * (cast_expression "(undefined4 *)(puVar43 + -0x44)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar43 + -0x44)" ( (binary_expression "puVar43 + -0x44" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar43 + -0x54) = uVar46;" (assignment_expression "*(undefined4 *)(puVar43 + -0x54) = uVar46" (pointer_expression "*(undefined4 *)(puVar43 + -0x54)" * (cast_expression "(undefined4 *)(puVar43 + -0x54)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar43 + -0x54)" ( (binary_expression "puVar43 + -0x54" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar45 + 0x18) = *(undefined4 *)(puVar43 + -0x48);" (assignment_expression "*(undefined4 *)(puVar45 + 0x18) = *(undefined4 *)(puVar43 + -0x48)" (pointer_expression "*(undefined4 *)(puVar45 + 0x18)" * (cast_expression "(undefined4 *)(puVar45 + 0x18)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar45 + 0x18)" ( (binary_expression "puVar45 + 0x18" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(puVar43 + -0x48)" * (cast_expression "(undefined4 *)(puVar43 + -0x48)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar43 + -0x48)" ( (binary_expression "puVar43 + -0x48" identifier + number_literal) ))))) ;) (expression_statement "*(int *)(puVar45 + 0x14) = iVar29;" (assignment_expression "*(int *)(puVar45 + 0x14) = iVar29" (pointer_expression "*(int *)(puVar45 + 0x14)" * (cast_expression "(int *)(puVar45 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar45 + 0x14)" ( (binary_expression "puVar45 + 0x14" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar45 + 0x10) = uVar10;" (assignment_expression "*(undefined4 *)(puVar45 + 0x10) = uVar10" (pointer_expression "*(undefined4 *)(puVar45 + 0x10)" * (cast_expression "(undefined4 *)(puVar45 + 0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar45 + 0x10)" ( (binary_expression "puVar45 + 0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "(*pcVar42)(uVar20,uVar46,pmVar25,phVar31);" (call_expression "(*pcVar42)(uVar20,uVar46,pmVar25,phVar31)" (parenthesized_expression "(*pcVar42)" ( (pointer_expression "*pcVar42" * identifier) )) (argument_list "(uVar20,uVar46,pmVar25,phVar31)" ( identifier , identifier , identifier , identifier ))) ;) (expression_statement "iVar40 = *(int *)(puVar43 + -0x68);" (assignment_expression "iVar40 = *(int *)(puVar43 + -0x68)" identifier = (pointer_expression "*(int *)(puVar43 + -0x68)" * (cast_expression "(int *)(puVar43 + -0x68)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar43 + -0x68)" ( (binary_expression "puVar43 + -0x68" identifier + number_literal) ))))) ;) (expression_statement "uVar46 = *(undefined4 *)(puVar43 + -0x54);" (assignment_expression "uVar46 = *(undefined4 *)(puVar43 + -0x54)" identifier = (pointer_expression "*(undefined4 *)(puVar43 + -0x54)" * (cast_expression "(undefined4 *)(puVar43 + -0x54)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar43 + -0x54)" ( (binary_expression "puVar43 + -0x54" identifier + number_literal) ))))) ;) (if_statement "if (iVar32 != 0) {\n      iVar16 = iVar32 + -1;\n      mVar21 = *pmVar35;\n      pmVar22 = pmVar25;\n      pmVar11 = pmVar35;\n      if (iVar16 == 0) {\n        *pmVar25 = mVar21;\n      }\n      else {\n        do {\n          *pmVar22 = mVar21;\n          iVar16 = iVar16 + -1;\n          mVar21 = pmVar11[1];\n          pmVar22 = pmVar22 + 1;\n          pmVar11 = pmVar11 + 1;\n        } while (iVar16 != 0);\n        pmVar25[iVar32 + -1] = mVar21;\n      }\n    }" if (parenthesized_expression "(iVar32 != 0)" ( (binary_expression "iVar32 != 0" identifier != number_literal) )) (compound_statement "{\n      iVar16 = iVar32 + -1;\n      mVar21 = *pmVar35;\n      pmVar22 = pmVar25;\n      pmVar11 = pmVar35;\n      if (iVar16 == 0) {\n        *pmVar25 = mVar21;\n      }\n      else {\n        do {\n          *pmVar22 = mVar21;\n          iVar16 = iVar16 + -1;\n          mVar21 = pmVar11[1];\n          pmVar22 = pmVar22 + 1;\n          pmVar11 = pmVar11 + 1;\n        } while (iVar16 != 0);\n        pmVar25[iVar32 + -1] = mVar21;\n      }\n    }" { (expression_statement "iVar16 = iVar32 + -1;" (assignment_expression "iVar16 = iVar32 + -1" identifier = (binary_expression "iVar32 + -1" identifier + number_literal)) ;) (expression_statement "mVar21 = *pmVar35;" (assignment_expression "mVar21 = *pmVar35" identifier = (pointer_expression "*pmVar35" * identifier)) ;) (expression_statement "pmVar22 = pmVar25;" (assignment_expression "pmVar22 = pmVar25" identifier = identifier) ;) (expression_statement "pmVar11 = pmVar35;" (assignment_expression "pmVar11 = pmVar35" identifier = identifier) ;) (if_statement "if (iVar16 == 0) {\n        *pmVar25 = mVar21;\n      }\n      else {\n        do {\n          *pmVar22 = mVar21;\n          iVar16 = iVar16 + -1;\n          mVar21 = pmVar11[1];\n          pmVar22 = pmVar22 + 1;\n          pmVar11 = pmVar11 + 1;\n        } while (iVar16 != 0);\n        pmVar25[iVar32 + -1] = mVar21;\n      }" if (parenthesized_expression "(iVar16 == 0)" ( (binary_expression "iVar16 == 0" identifier == number_literal) )) (compound_statement "{\n        *pmVar25 = mVar21;\n      }" { (expression_statement "*pmVar25 = mVar21;" (assignment_expression "*pmVar25 = mVar21" (pointer_expression "*pmVar25" * identifier) = identifier) ;) }) (else_clause "else {\n        do {\n          *pmVar22 = mVar21;\n          iVar16 = iVar16 + -1;\n          mVar21 = pmVar11[1];\n          pmVar22 = pmVar22 + 1;\n          pmVar11 = pmVar11 + 1;\n        } while (iVar16 != 0);\n        pmVar25[iVar32 + -1] = mVar21;\n      }" else (compound_statement "{\n        do {\n          *pmVar22 = mVar21;\n          iVar16 = iVar16 + -1;\n          mVar21 = pmVar11[1];\n          pmVar22 = pmVar22 + 1;\n          pmVar11 = pmVar11 + 1;\n        } while (iVar16 != 0);\n        pmVar25[iVar32 + -1] = mVar21;\n      }" { (do_statement "do {\n          *pmVar22 = mVar21;\n          iVar16 = iVar16 + -1;\n          mVar21 = pmVar11[1];\n          pmVar22 = pmVar22 + 1;\n          pmVar11 = pmVar11 + 1;\n        } while (iVar16 != 0);" do (compound_statement "{\n          *pmVar22 = mVar21;\n          iVar16 = iVar16 + -1;\n          mVar21 = pmVar11[1];\n          pmVar22 = pmVar22 + 1;\n          pmVar11 = pmVar11 + 1;\n        }" { (expression_statement "*pmVar22 = mVar21;" (assignment_expression "*pmVar22 = mVar21" (pointer_expression "*pmVar22" * identifier) = identifier) ;) (expression_statement "iVar16 = iVar16 + -1;" (assignment_expression "iVar16 = iVar16 + -1" identifier = (binary_expression "iVar16 + -1" identifier + number_literal)) ;) (expression_statement "mVar21 = pmVar11[1];" (assignment_expression "mVar21 = pmVar11[1]" identifier = (subscript_expression "pmVar11[1]" identifier [ number_literal ])) ;) (expression_statement "pmVar22 = pmVar22 + 1;" (assignment_expression "pmVar22 = pmVar22 + 1" identifier = (binary_expression "pmVar22 + 1" identifier + number_literal)) ;) (expression_statement "pmVar11 = pmVar11 + 1;" (assignment_expression "pmVar11 = pmVar11 + 1" identifier = (binary_expression "pmVar11 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar16 != 0)" ( (binary_expression "iVar16 != 0" identifier != number_literal) )) ;) (expression_statement "pmVar25[iVar32 + -1] = mVar21;" (assignment_expression "pmVar25[iVar32 + -1] = mVar21" (subscript_expression "pmVar25[iVar32 + -1]" identifier [ (binary_expression "iVar32 + -1" identifier + number_literal) ]) = identifier) ;) }))) })) (expression_statement "uVar10 = *(undefined4 *)(iVar13 + 8);" (assignment_expression "uVar10 = *(undefined4 *)(iVar13 + 8)" identifier = (pointer_expression "*(undefined4 *)(iVar13 + 8)" * (cast_expression "(undefined4 *)(iVar13 + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar13 + 8)" ( (binary_expression "iVar13 + 8" identifier + number_literal) ))))) ;) (expression_statement "pcVar42 = *(code **)(iVar40 + -0x7cd8);" (assignment_expression "pcVar42 = *(code **)(iVar40 + -0x7cd8)" identifier = (pointer_expression "*(code **)(iVar40 + -0x7cd8)" * (cast_expression "(code **)(iVar40 + -0x7cd8)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar40 + -0x7cd8)" ( (binary_expression "iVar40 + -0x7cd8" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar45 + 0x18) = *(undefined4 *)(puVar43 + -0x48);" (assignment_expression "*(undefined4 *)(puVar45 + 0x18) = *(undefined4 *)(puVar43 + -0x48)" (pointer_expression "*(undefined4 *)(puVar45 + 0x18)" * (cast_expression "(undefined4 *)(puVar45 + 0x18)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar45 + 0x18)" ( (binary_expression "puVar45 + 0x18" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(puVar43 + -0x48)" * (cast_expression "(undefined4 *)(puVar43 + -0x48)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar43 + -0x48)" ( (binary_expression "puVar43 + -0x48" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar43 + -0x48) = uVar46;" (assignment_expression "*(undefined4 *)(puVar43 + -0x48) = uVar46" (pointer_expression "*(undefined4 *)(puVar43 + -0x48)" * (cast_expression "(undefined4 *)(puVar43 + -0x48)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar43 + -0x48)" ( (binary_expression "puVar43 + -0x48" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar45 + 0x10) = uVar10;" (assignment_expression "*(undefined4 *)(puVar45 + 0x10) = uVar10" (pointer_expression "*(undefined4 *)(puVar45 + 0x10)" * (cast_expression "(undefined4 *)(puVar45 + 0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar45 + 0x10)" ( (binary_expression "puVar45 + 0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar45 + 0x14) = *(undefined4 *)(puVar43 + -0x50);" (assignment_expression "*(undefined4 *)(puVar45 + 0x14) = *(undefined4 *)(puVar43 + -0x50)" (pointer_expression "*(undefined4 *)(puVar45 + 0x14)" * (cast_expression "(undefined4 *)(puVar45 + 0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar45 + 0x14)" ( (binary_expression "puVar45 + 0x14" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(puVar43 + -0x50)" * (cast_expression "(undefined4 *)(puVar43 + -0x50)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar43 + -0x50)" ( (binary_expression "puVar43 + -0x50" identifier + number_literal) ))))) ;) (expression_statement "(*pcVar42)(pmVar35,uVar46,pmVar28,phVar31);" (call_expression "(*pcVar42)(pmVar35,uVar46,pmVar28,phVar31)" (parenthesized_expression "(*pcVar42)" ( (pointer_expression "*pcVar42" * identifier) )) (argument_list "(pmVar35,uVar46,pmVar28,phVar31)" ( identifier , identifier , identifier , identifier ))) ;) (expression_statement "iVar40 = *(int *)(puVar43 + -0x48);" (assignment_expression "iVar40 = *(int *)(puVar43 + -0x48)" identifier = (pointer_expression "*(int *)(puVar43 + -0x48)" * (cast_expression "(int *)(puVar43 + -0x48)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar43 + -0x48)" ( (binary_expression "puVar43 + -0x48" identifier + number_literal) ))))) ;) (expression_statement "iVar16 = *(int *)(puVar43 + -0x68);" (assignment_expression "iVar16 = *(int *)(puVar43 + -0x68)" identifier = (pointer_expression "*(int *)(puVar43 + -0x68)" * (cast_expression "(int *)(puVar43 + -0x68)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar43 + -0x68)" ( (binary_expression "puVar43 + -0x68" identifier + number_literal) ))))) ;) (if_statement "if ((int)phVar31 + iVar29 < iVar40) {\n      if (iVar29 != iVar40 - (int)phVar31) {\n        iVar9 = (iVar40 - (int)phVar31) - iVar29;\n        puVar7 = (undefined4 *)(*(int *)(puVar43 + -0x44) + (int)((int)phVar31 + iVar29) * 4);\n        do {\n          iVar9 = iVar9 + -1;\n          *puVar7 = 0;\n          puVar7 = puVar7 + 1;\n        } while (iVar9 != 0);\n      }\n    }" if (parenthesized_expression "((int)phVar31 + iVar29 < iVar40)" ( (binary_expression "(int)phVar31 + iVar29 < iVar40" (binary_expression "(int)phVar31 + iVar29" (cast_expression "(int)phVar31" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) < identifier) )) (compound_statement "{\n      if (iVar29 != iVar40 - (int)phVar31) {\n        iVar9 = (iVar40 - (int)phVar31) - iVar29;\n        puVar7 = (undefined4 *)(*(int *)(puVar43 + -0x44) + (int)((int)phVar31 + iVar29) * 4);\n        do {\n          iVar9 = iVar9 + -1;\n          *puVar7 = 0;\n          puVar7 = puVar7 + 1;\n        } while (iVar9 != 0);\n      }\n    }" { (if_statement "if (iVar29 != iVar40 - (int)phVar31) {\n        iVar9 = (iVar40 - (int)phVar31) - iVar29;\n        puVar7 = (undefined4 *)(*(int *)(puVar43 + -0x44) + (int)((int)phVar31 + iVar29) * 4);\n        do {\n          iVar9 = iVar9 + -1;\n          *puVar7 = 0;\n          puVar7 = puVar7 + 1;\n        } while (iVar9 != 0);\n      }" if (parenthesized_expression "(iVar29 != iVar40 - (int)phVar31)" ( (binary_expression "iVar29 != iVar40 - (int)phVar31" identifier != (binary_expression "iVar40 - (int)phVar31" identifier - (cast_expression "(int)phVar31" ( (type_descriptor "int" primitive_type) ) identifier))) )) (compound_statement "{\n        iVar9 = (iVar40 - (int)phVar31) - iVar29;\n        puVar7 = (undefined4 *)(*(int *)(puVar43 + -0x44) + (int)((int)phVar31 + iVar29) * 4);\n        do {\n          iVar9 = iVar9 + -1;\n          *puVar7 = 0;\n          puVar7 = puVar7 + 1;\n        } while (iVar9 != 0);\n      }" { (expression_statement "iVar9 = (iVar40 - (int)phVar31) - iVar29;" (assignment_expression "iVar9 = (iVar40 - (int)phVar31) - iVar29" identifier = (binary_expression "(iVar40 - (int)phVar31) - iVar29" (parenthesized_expression "(iVar40 - (int)phVar31)" ( (binary_expression "iVar40 - (int)phVar31" identifier - (cast_expression "(int)phVar31" ( (type_descriptor "int" primitive_type) ) identifier)) )) - identifier)) ;) (expression_statement "puVar7 = (undefined4 *)(*(int *)(puVar43 + -0x44) + (int)((int)phVar31 + iVar29) * 4);" (assignment_expression "puVar7 = (undefined4 *)(*(int *)(puVar43 + -0x44) + (int)((int)phVar31 + iVar29) * 4)" identifier = (cast_expression "(undefined4 *)(*(int *)(puVar43 + -0x44) + (int)((int)phVar31 + iVar29) * 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(puVar43 + -0x44) + (int)((int)phVar31 + iVar29) * 4)" ( (binary_expression "*(int *)(puVar43 + -0x44) + (int)((int)phVar31 + iVar29) * 4" (pointer_expression "*(int *)(puVar43 + -0x44)" * (cast_expression "(int *)(puVar43 + -0x44)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar43 + -0x44)" ( (binary_expression "puVar43 + -0x44" identifier + number_literal) )))) + (binary_expression "(int)((int)phVar31 + iVar29) * 4" (cast_expression "(int)((int)phVar31 + iVar29)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((int)phVar31 + iVar29)" ( (binary_expression "(int)phVar31 + iVar29" (cast_expression "(int)phVar31" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) ))) * number_literal)) )))) ;) (do_statement "do {\n          iVar9 = iVar9 + -1;\n          *puVar7 = 0;\n          puVar7 = puVar7 + 1;\n        } while (iVar9 != 0);" do (compound_statement "{\n          iVar9 = iVar9 + -1;\n          *puVar7 = 0;\n          puVar7 = puVar7 + 1;\n        }" { (expression_statement "iVar9 = iVar9 + -1;" (assignment_expression "iVar9 = iVar9 + -1" identifier = (binary_expression "iVar9 + -1" identifier + number_literal)) ;) (expression_statement "*puVar7 = 0;" (assignment_expression "*puVar7 = 0" (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 "(iVar9 != 0)" ( (binary_expression "iVar9 != 0" identifier != number_literal) )) ;) })) })) (expression_statement "pcVar42 = *(code **)(iVar16 + -0x7b2c);" (assignment_expression "pcVar42 = *(code **)(iVar16 + -0x7b2c)" identifier = (pointer_expression "*(code **)(iVar16 + -0x7b2c)" * (cast_expression "(code **)(iVar16 + -0x7b2c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar16 + -0x7b2c)" ( (binary_expression "iVar16 + -0x7b2c" identifier + number_literal) ))))) ;) (if_statement "if (*(int *)(puVar43 + -0x50) + (int)phVar31 < iVar40) {\n      if (*(int *)(puVar43 + -0x50) != iVar40 - (int)phVar31) {\n        iVar29 = (iVar40 - (int)phVar31) - *(int *)(puVar43 + -0x50);\n        pmVar11 = pmVar35 + (int)(*(int *)(puVar43 + -0x50) + (int)phVar31);\n        do {\n          iVar29 = iVar29 + -1;\n          *pmVar11 = 0;\n          pmVar11 = pmVar11 + 1;\n        } while (iVar29 != 0);\n        pcVar42 = *(code **)(iVar16 + -0x7b2c);\n      }\n    }" if (parenthesized_expression "(*(int *)(puVar43 + -0x50) + (int)phVar31 < iVar40)" ( (binary_expression "*(int *)(puVar43 + -0x50) + (int)phVar31 < iVar40" (binary_expression "*(int *)(puVar43 + -0x50) + (int)phVar31" (pointer_expression "*(int *)(puVar43 + -0x50)" * (cast_expression "(int *)(puVar43 + -0x50)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar43 + -0x50)" ( (binary_expression "puVar43 + -0x50" identifier + number_literal) )))) + (cast_expression "(int)phVar31" ( (type_descriptor "int" primitive_type) ) identifier)) < identifier) )) (compound_statement "{\n      if (*(int *)(puVar43 + -0x50) != iVar40 - (int)phVar31) {\n        iVar29 = (iVar40 - (int)phVar31) - *(int *)(puVar43 + -0x50);\n        pmVar11 = pmVar35 + (int)(*(int *)(puVar43 + -0x50) + (int)phVar31);\n        do {\n          iVar29 = iVar29 + -1;\n          *pmVar11 = 0;\n          pmVar11 = pmVar11 + 1;\n        } while (iVar29 != 0);\n        pcVar42 = *(code **)(iVar16 + -0x7b2c);\n      }\n    }" { (if_statement "if (*(int *)(puVar43 + -0x50) != iVar40 - (int)phVar31) {\n        iVar29 = (iVar40 - (int)phVar31) - *(int *)(puVar43 + -0x50);\n        pmVar11 = pmVar35 + (int)(*(int *)(puVar43 + -0x50) + (int)phVar31);\n        do {\n          iVar29 = iVar29 + -1;\n          *pmVar11 = 0;\n          pmVar11 = pmVar11 + 1;\n        } while (iVar29 != 0);\n        pcVar42 = *(code **)(iVar16 + -0x7b2c);\n      }" if (parenthesized_expression "(*(int *)(puVar43 + -0x50) != iVar40 - (int)phVar31)" ( (binary_expression "*(int *)(puVar43 + -0x50) != iVar40 - (int)phVar31" (pointer_expression "*(int *)(puVar43 + -0x50)" * (cast_expression "(int *)(puVar43 + -0x50)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar43 + -0x50)" ( (binary_expression "puVar43 + -0x50" identifier + number_literal) )))) != (binary_expression "iVar40 - (int)phVar31" identifier - (cast_expression "(int)phVar31" ( (type_descriptor "int" primitive_type) ) identifier))) )) (compound_statement "{\n        iVar29 = (iVar40 - (int)phVar31) - *(int *)(puVar43 + -0x50);\n        pmVar11 = pmVar35 + (int)(*(int *)(puVar43 + -0x50) + (int)phVar31);\n        do {\n          iVar29 = iVar29 + -1;\n          *pmVar11 = 0;\n          pmVar11 = pmVar11 + 1;\n        } while (iVar29 != 0);\n        pcVar42 = *(code **)(iVar16 + -0x7b2c);\n      }" { (expression_statement "iVar29 = (iVar40 - (int)phVar31) - *(int *)(puVar43 + -0x50);" (assignment_expression "iVar29 = (iVar40 - (int)phVar31) - *(int *)(puVar43 + -0x50)" identifier = (binary_expression "(iVar40 - (int)phVar31) - *(int *)(puVar43 + -0x50)" (parenthesized_expression "(iVar40 - (int)phVar31)" ( (binary_expression "iVar40 - (int)phVar31" identifier - (cast_expression "(int)phVar31" ( (type_descriptor "int" primitive_type) ) identifier)) )) - (pointer_expression "*(int *)(puVar43 + -0x50)" * (cast_expression "(int *)(puVar43 + -0x50)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar43 + -0x50)" ( (binary_expression "puVar43 + -0x50" identifier + number_literal) )))))) ;) (expression_statement "pmVar11 = pmVar35 + (int)(*(int *)(puVar43 + -0x50) + (int)phVar31);" (assignment_expression "pmVar11 = pmVar35 + (int)(*(int *)(puVar43 + -0x50) + (int)phVar31)" identifier = (binary_expression "pmVar35 + (int)(*(int *)(puVar43 + -0x50) + (int)phVar31)" identifier + (cast_expression "(int)(*(int *)(puVar43 + -0x50) + (int)phVar31)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(*(int *)(puVar43 + -0x50) + (int)phVar31)" ( (binary_expression "*(int *)(puVar43 + -0x50) + (int)phVar31" (pointer_expression "*(int *)(puVar43 + -0x50)" * (cast_expression "(int *)(puVar43 + -0x50)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar43 + -0x50)" ( (binary_expression "puVar43 + -0x50" identifier + number_literal) )))) + (cast_expression "(int)phVar31" ( (type_descriptor "int" primitive_type) ) identifier)) ))))) ;) (do_statement "do {\n          iVar29 = iVar29 + -1;\n          *pmVar11 = 0;\n          pmVar11 = pmVar11 + 1;\n        } while (iVar29 != 0);" do (compound_statement "{\n          iVar29 = iVar29 + -1;\n          *pmVar11 = 0;\n          pmVar11 = pmVar11 + 1;\n        }" { (expression_statement "iVar29 = iVar29 + -1;" (assignment_expression "iVar29 = iVar29 + -1" identifier = (binary_expression "iVar29 + -1" identifier + number_literal)) ;) (expression_statement "*pmVar11 = 0;" (assignment_expression "*pmVar11 = 0" (pointer_expression "*pmVar11" * identifier) = number_literal) ;) (expression_statement "pmVar11 = pmVar11 + 1;" (assignment_expression "pmVar11 = pmVar11 + 1" identifier = (binary_expression "pmVar11 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar29 != 0)" ( (binary_expression "iVar29 != 0" identifier != number_literal) )) ;) (expression_statement "pcVar42 = *(code **)(iVar16 + -0x7b2c);" (assignment_expression "pcVar42 = *(code **)(iVar16 + -0x7b2c)" identifier = (pointer_expression "*(code **)(iVar16 + -0x7b2c)" * (cast_expression "(code **)(iVar16 + -0x7b2c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar16 + -0x7b2c)" ( (binary_expression "iVar16 + -0x7b2c" identifier + number_literal) ))))) ;) })) })) (expression_statement "uVar3 = (*pcVar42)(pmVar35,pmVar35,*(undefined4 *)(puVar43 + -0x44),iVar40);" (assignment_expression "uVar3 = (*pcVar42)(pmVar35,pmVar35,*(undefined4 *)(puVar43 + -0x44),iVar40)" identifier = (call_expression "(*pcVar42)(pmVar35,pmVar35,*(undefined4 *)(puVar43 + -0x44),iVar40)" (parenthesized_expression "(*pcVar42)" ( (pointer_expression "*pcVar42" * identifier) )) (argument_list "(pmVar35,pmVar35,*(undefined4 *)(puVar43 + -0x44),iVar40)" ( identifier , identifier , (pointer_expression "*(undefined4 *)(puVar43 + -0x44)" * (cast_expression "(undefined4 *)(puVar43 + -0x44)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar43 + -0x44)" ( (binary_expression "puVar43 + -0x44" identifier + number_literal) )))) , identifier )))) ;) (expression_statement "uVar18 = *pmVar35;" (assignment_expression "uVar18 = *pmVar35" identifier = (pointer_expression "*pmVar35" * identifier)) ;) (expression_statement "iVar40 = *(int *)(puVar43 + -0x68);" (assignment_expression "iVar40 = *(int *)(puVar43 + -0x68)" identifier = (pointer_expression "*(int *)(puVar43 + -0x68)" * (cast_expression "(int *)(puVar43 + -0x68)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar43 + -0x68)" ( (binary_expression "puVar43 + -0x68" identifier + number_literal) ))))) ;) (expression_statement "pmVar26 = (mp_ptr)(uVar18 - uVar3);" (assignment_expression "pmVar26 = (mp_ptr)(uVar18 - uVar3)" identifier = (call_expression "(mp_ptr)(uVar18 - uVar3)" (parenthesized_expression "(mp_ptr)" ( identifier )) (argument_list "(uVar18 - uVar3)" ( (binary_expression "uVar18 - uVar3" identifier - identifier) )))) ;) (expression_statement "*pmVar35 = (mp_limb_t)pmVar26;" (assignment_expression "*pmVar35 = (mp_limb_t)pmVar26" (pointer_expression "*pmVar35" * identifier) = (cast_expression "(mp_limb_t)pmVar26" ( (type_descriptor "mp_limb_t" type_identifier) ) identifier)) ;) (expression_statement "pmVar11 = pmVar35;" (assignment_expression "pmVar11 = pmVar35" identifier = identifier) ;) (if_statement "if (uVar18 < uVar3) {\n      do {\n        pmVar11 = pmVar11 + 1;\n        mVar21 = *pmVar11;\n        pmVar26 = (mp_ptr)(mVar21 - 1);\n        *pmVar11 = (mp_limb_t)pmVar26;\n      } while (mVar21 == 0);\n    }" if (parenthesized_expression "(uVar18 < uVar3)" ( (binary_expression "uVar18 < uVar3" identifier < identifier) )) (compound_statement "{\n      do {\n        pmVar11 = pmVar11 + 1;\n        mVar21 = *pmVar11;\n        pmVar26 = (mp_ptr)(mVar21 - 1);\n        *pmVar11 = (mp_limb_t)pmVar26;\n      } while (mVar21 == 0);\n    }" { (do_statement "do {\n        pmVar11 = pmVar11 + 1;\n        mVar21 = *pmVar11;\n        pmVar26 = (mp_ptr)(mVar21 - 1);\n        *pmVar11 = (mp_limb_t)pmVar26;\n      } while (mVar21 == 0);" do (compound_statement "{\n        pmVar11 = pmVar11 + 1;\n        mVar21 = *pmVar11;\n        pmVar26 = (mp_ptr)(mVar21 - 1);\n        *pmVar11 = (mp_limb_t)pmVar26;\n      }" { (expression_statement "pmVar11 = pmVar11 + 1;" (assignment_expression "pmVar11 = pmVar11 + 1" identifier = (binary_expression "pmVar11 + 1" identifier + number_literal)) ;) (expression_statement "mVar21 = *pmVar11;" (assignment_expression "mVar21 = *pmVar11" identifier = (pointer_expression "*pmVar11" * identifier)) ;) (expression_statement "pmVar26 = (mp_ptr)(mVar21 - 1);" (assignment_expression "pmVar26 = (mp_ptr)(mVar21 - 1)" identifier = (call_expression "(mp_ptr)(mVar21 - 1)" (parenthesized_expression "(mp_ptr)" ( identifier )) (argument_list "(mVar21 - 1)" ( (binary_expression "mVar21 - 1" identifier - number_literal) )))) ;) (expression_statement "*pmVar11 = (mp_limb_t)pmVar26;" (assignment_expression "*pmVar11 = (mp_limb_t)pmVar26" (pointer_expression "*pmVar11" * identifier) = (cast_expression "(mp_limb_t)pmVar26" ( (type_descriptor "mp_limb_t" type_identifier) ) identifier)) ;) }) while (parenthesized_expression "(mVar21 == 0)" ( (binary_expression "mVar21 == 0" identifier == number_literal) )) ;) })) (expression_statement "iVar29 = iVar32 + -1;" (assignment_expression "iVar29 = iVar32 + -1" identifier = (binary_expression "iVar32 + -1" identifier + number_literal)) ;) (if_statement "if (iVar32 == 0) {\n      iVar29 = -4;\n    }\n    else {\n      pmVar26 = (mp_ptr)*pmVar35;\n      pmVar17 = pmVar28;\n      if (iVar29 != 0) {\n        do {\n          pmVar35 = pmVar35 + 1;\n          *pmVar17 = (mp_limb_t)pmVar26;\n          iVar29 = iVar29 + -1;\n          pmVar26 = (mp_ptr)*pmVar35;\n          pmVar17 = pmVar17 + 1;\n        } while (iVar29 != 0);\n        pmVar17 = pmVar28 + iVar32 + -1;\n      }\n      *pmVar17 = (mp_limb_t)pmVar26;\n      iVar29 = iVar32 * 4 + -4;\n    }" if (parenthesized_expression "(iVar32 == 0)" ( (binary_expression "iVar32 == 0" identifier == number_literal) )) (compound_statement "{\n      iVar29 = -4;\n    }" { (expression_statement "iVar29 = -4;" (assignment_expression "iVar29 = -4" identifier = number_literal) ;) }) (else_clause "else {\n      pmVar26 = (mp_ptr)*pmVar35;\n      pmVar17 = pmVar28;\n      if (iVar29 != 0) {\n        do {\n          pmVar35 = pmVar35 + 1;\n          *pmVar17 = (mp_limb_t)pmVar26;\n          iVar29 = iVar29 + -1;\n          pmVar26 = (mp_ptr)*pmVar35;\n          pmVar17 = pmVar17 + 1;\n        } while (iVar29 != 0);\n        pmVar17 = pmVar28 + iVar32 + -1;\n      }\n      *pmVar17 = (mp_limb_t)pmVar26;\n      iVar29 = iVar32 * 4 + -4;\n    }" else (compound_statement "{\n      pmVar26 = (mp_ptr)*pmVar35;\n      pmVar17 = pmVar28;\n      if (iVar29 != 0) {\n        do {\n          pmVar35 = pmVar35 + 1;\n          *pmVar17 = (mp_limb_t)pmVar26;\n          iVar29 = iVar29 + -1;\n          pmVar26 = (mp_ptr)*pmVar35;\n          pmVar17 = pmVar17 + 1;\n        } while (iVar29 != 0);\n        pmVar17 = pmVar28 + iVar32 + -1;\n      }\n      *pmVar17 = (mp_limb_t)pmVar26;\n      iVar29 = iVar32 * 4 + -4;\n    }" { (expression_statement "pmVar26 = (mp_ptr)*pmVar35;" (assignment_expression "pmVar26 = (mp_ptr)*pmVar35" identifier = (binary_expression "(mp_ptr)*pmVar35" (parenthesized_expression "(mp_ptr)" ( identifier )) * identifier)) ;) (expression_statement "pmVar17 = pmVar28;" (assignment_expression "pmVar17 = pmVar28" identifier = identifier) ;) (if_statement "if (iVar29 != 0) {\n        do {\n          pmVar35 = pmVar35 + 1;\n          *pmVar17 = (mp_limb_t)pmVar26;\n          iVar29 = iVar29 + -1;\n          pmVar26 = (mp_ptr)*pmVar35;\n          pmVar17 = pmVar17 + 1;\n        } while (iVar29 != 0);\n        pmVar17 = pmVar28 + iVar32 + -1;\n      }" if (parenthesized_expression "(iVar29 != 0)" ( (binary_expression "iVar29 != 0" identifier != number_literal) )) (compound_statement "{\n        do {\n          pmVar35 = pmVar35 + 1;\n          *pmVar17 = (mp_limb_t)pmVar26;\n          iVar29 = iVar29 + -1;\n          pmVar26 = (mp_ptr)*pmVar35;\n          pmVar17 = pmVar17 + 1;\n        } while (iVar29 != 0);\n        pmVar17 = pmVar28 + iVar32 + -1;\n      }" { (do_statement "do {\n          pmVar35 = pmVar35 + 1;\n          *pmVar17 = (mp_limb_t)pmVar26;\n          iVar29 = iVar29 + -1;\n          pmVar26 = (mp_ptr)*pmVar35;\n          pmVar17 = pmVar17 + 1;\n        } while (iVar29 != 0);" do (compound_statement "{\n          pmVar35 = pmVar35 + 1;\n          *pmVar17 = (mp_limb_t)pmVar26;\n          iVar29 = iVar29 + -1;\n          pmVar26 = (mp_ptr)*pmVar35;\n          pmVar17 = pmVar17 + 1;\n        }" { (expression_statement "pmVar35 = pmVar35 + 1;" (assignment_expression "pmVar35 = pmVar35 + 1" identifier = (binary_expression "pmVar35 + 1" identifier + number_literal)) ;) (expression_statement "*pmVar17 = (mp_limb_t)pmVar26;" (assignment_expression "*pmVar17 = (mp_limb_t)pmVar26" (pointer_expression "*pmVar17" * identifier) = (cast_expression "(mp_limb_t)pmVar26" ( (type_descriptor "mp_limb_t" type_identifier) ) identifier)) ;) (expression_statement "iVar29 = iVar29 + -1;" (assignment_expression "iVar29 = iVar29 + -1" identifier = (binary_expression "iVar29 + -1" identifier + number_literal)) ;) (expression_statement "pmVar26 = (mp_ptr)*pmVar35;" (assignment_expression "pmVar26 = (mp_ptr)*pmVar35" identifier = (binary_expression "(mp_ptr)*pmVar35" (parenthesized_expression "(mp_ptr)" ( identifier )) * identifier)) ;) (expression_statement "pmVar17 = pmVar17 + 1;" (assignment_expression "pmVar17 = pmVar17 + 1" identifier = (binary_expression "pmVar17 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar29 != 0)" ( (binary_expression "iVar29 != 0" identifier != number_literal) )) ;) (expression_statement "pmVar17 = pmVar28 + iVar32 + -1;" (assignment_expression "pmVar17 = pmVar28 + iVar32 + -1" identifier = (binary_expression "pmVar28 + iVar32 + -1" (binary_expression "pmVar28 + iVar32" identifier + identifier) + number_literal)) ;) })) (expression_statement "*pmVar17 = (mp_limb_t)pmVar26;" (assignment_expression "*pmVar17 = (mp_limb_t)pmVar26" (pointer_expression "*pmVar17" * identifier) = (cast_expression "(mp_limb_t)pmVar26" ( (type_descriptor "mp_limb_t" type_identifier) ) identifier)) ;) (expression_statement "iVar29 = iVar32 * 4 + -4;" (assignment_expression "iVar29 = iVar32 * 4 + -4" identifier = (binary_expression "iVar32 * 4 + -4" (binary_expression "iVar32 * 4" identifier * number_literal) + number_literal)) ;) }))) (expression_statement "puVar44 = puVar45;" (assignment_expression "puVar44 = puVar45" identifier = identifier) ;) (if_statement "if (*(int *)((int)pmVar25 + iVar29) != 0 || *(int *)((int)pmVar28 + iVar29) != 0)\n    goto LAB_000530b4;" if (parenthesized_expression "(*(int *)((int)pmVar25 + iVar29) != 0 || *(int *)((int)pmVar28 + iVar29) != 0)" ( (binary_expression "*(int *)((int)pmVar25 + iVar29) != 0 || *(int *)((int)pmVar28 + iVar29) != 0" (binary_expression "*(int *)((int)pmVar25 + iVar29) != 0" (pointer_expression "*(int *)((int)pmVar25 + iVar29)" * (cast_expression "(int *)((int)pmVar25 + iVar29)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pmVar25 + iVar29)" ( (binary_expression "(int)pmVar25 + iVar29" (cast_expression "(int)pmVar25" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) != number_literal) || (binary_expression "*(int *)((int)pmVar28 + iVar29) != 0" (pointer_expression "*(int *)((int)pmVar28 + iVar29)" * (cast_expression "(int *)((int)pmVar28 + iVar29)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pmVar28 + iVar29)" ( (binary_expression "(int)pmVar28 + iVar29" (cast_expression "(int)pmVar28" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) != number_literal)) )) (goto_statement "goto LAB_000530b4;" goto statement_identifier ;)) (expression_statement "pmVar25 = pmVar25 + iVar32 + -2;" (assignment_expression "pmVar25 = pmVar25 + iVar32 + -2" identifier = (binary_expression "pmVar25 + iVar32 + -2" (binary_expression "pmVar25 + iVar32" identifier + identifier) + number_literal)) ;) (expression_statement "pmVar28 = pmVar28 + iVar32 + -2;" (assignment_expression "pmVar28 = pmVar28 + iVar32 + -2" identifier = (binary_expression "pmVar28 + iVar32 + -2" (binary_expression "pmVar28 + iVar32" identifier + identifier) + number_literal)) ;) (do_statement "do {\n      mVar21 = *pmVar25;\n      iVar32 = iVar32 + -1;\n      mVar23 = *pmVar28;\n      pmVar25 = pmVar25 + -1;\n      pmVar28 = pmVar28 + -1;\n    } while (mVar21 == 0 && mVar23 == 0);" do (compound_statement "{\n      mVar21 = *pmVar25;\n      iVar32 = iVar32 + -1;\n      mVar23 = *pmVar28;\n      pmVar25 = pmVar25 + -1;\n      pmVar28 = pmVar28 + -1;\n    }" { (expression_statement "mVar21 = *pmVar25;" (assignment_expression "mVar21 = *pmVar25" identifier = (pointer_expression "*pmVar25" * identifier)) ;) (expression_statement "iVar32 = iVar32 + -1;" (assignment_expression "iVar32 = iVar32 + -1" identifier = (binary_expression "iVar32 + -1" identifier + number_literal)) ;) (expression_statement "mVar23 = *pmVar28;" (assignment_expression "mVar23 = *pmVar28" identifier = (pointer_expression "*pmVar28" * identifier)) ;) (expression_statement "pmVar25 = pmVar25 + -1;" (assignment_expression "pmVar25 = pmVar25 + -1" identifier = (binary_expression "pmVar25 + -1" identifier + number_literal)) ;) (expression_statement "pmVar28 = pmVar28 + -1;" (assignment_expression "pmVar28 = pmVar28 + -1" identifier = (binary_expression "pmVar28 + -1" identifier + number_literal)) ;) }) while (parenthesized_expression "(mVar21 == 0 && mVar23 == 0)" ( (binary_expression "mVar21 == 0 && mVar23 == 0" (binary_expression "mVar21 == 0" identifier == number_literal) && (binary_expression "mVar23 == 0" identifier == number_literal)) )) ;) (expression_statement "piVar38 = *(int **)(puVar43 + -0x4c);" (assignment_expression "piVar38 = *(int **)(puVar43 + -0x4c)" identifier = (pointer_expression "*(int **)(puVar43 + -0x4c)" * (cast_expression "(int **)(puVar43 + -0x4c)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar43 + -0x4c)" ( (binary_expression "puVar43 + -0x4c" identifier + number_literal) ))))) ;) (if_statement "if (*(int *)(puVar43 + -0x40) == 0) goto LAB_000530c4;" if (parenthesized_expression "(*(int *)(puVar43 + -0x40) == 0)" ( (binary_expression "*(int *)(puVar43 + -0x40) == 0" (pointer_expression "*(int *)(puVar43 + -0x40)" * (cast_expression "(int *)(puVar43 + -0x40)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar43 + -0x40)" ( (binary_expression "puVar43 + -0x40" identifier + number_literal) )))) == number_literal) )) (goto_statement "goto LAB_000530c4;" goto statement_identifier ;)) (expression_statement "pcVar42 = *(code **)(iVar40 + -0x7a2c);" (assignment_expression "pcVar42 = *(code **)(iVar40 + -0x7a2c)" identifier = (pointer_expression "*(code **)(iVar40 + -0x7a2c)" * (cast_expression "(code **)(iVar40 + -0x7a2c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar40 + -0x7a2c)" ( (binary_expression "iVar40 + -0x7a2c" identifier + number_literal) ))))) ;) (labeled_statement "LAB_00053478:\n    (*pcVar42)();" statement_identifier : (expression_statement "(*pcVar42)();" (call_expression "(*pcVar42)()" (parenthesized_expression "(*pcVar42)" ( (pointer_expression "*pcVar42" * identifier) )) (argument_list "()" ( ))) ;)) (expression_statement "iVar40 = *(int *)(puVar43 + -0x68);" (assignment_expression "iVar40 = *(int *)(puVar43 + -0x68)" identifier = (pointer_expression "*(int *)(puVar43 + -0x68)" * (cast_expression "(int *)(puVar43 + -0x68)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar43 + -0x68)" ( (binary_expression "puVar43 + -0x68" identifier + number_literal) ))))) ;) (expression_statement "puVar45 = puVar44;" (assignment_expression "puVar45 = puVar44" identifier = identifier) ;) }))) (expression_statement "piVar38 = *(int **)(puVar43 + -0x4c);" (assignment_expression "piVar38 = *(int **)(puVar43 + -0x4c)" identifier = (pointer_expression "*(int **)(puVar43 + -0x4c)" * (cast_expression "(int **)(puVar43 + -0x4c)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar43 + -0x4c)" ( (binary_expression "puVar43 + -0x4c" identifier + number_literal) ))))) ;) (labeled_statement "LAB_000530c4:\n  iVar29 = *(int *)(puVar43 + -0x2c);" statement_identifier : (expression_statement "iVar29 = *(int *)(puVar43 + -0x2c);" (assignment_expression "iVar29 = *(int *)(puVar43 + -0x2c)" identifier = (pointer_expression "*(int *)(puVar43 + -0x2c)" * (cast_expression "(int *)(puVar43 + -0x2c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar43 + -0x2c)" ( (binary_expression "puVar43 + -0x2c" identifier + number_literal) ))))) ;)) (expression_statement "pcVar42 = *(code **)(iVar40 + -0x7b70);" (assignment_expression "pcVar42 = *(code **)(iVar40 + -0x7b70)" identifier = (pointer_expression "*(code **)(iVar40 + -0x7b70)" * (cast_expression "(code **)(iVar40 + -0x7b70)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar40 + -0x7b70)" ( (binary_expression "iVar40 + -0x7b70" identifier + number_literal) ))))) ;) (if_statement "if (iVar29 == *piVar38) {\n    return iVar32;\n  }" if (parenthesized_expression "(iVar29 == *piVar38)" ( (binary_expression "iVar29 == *piVar38" identifier == (pointer_expression "*piVar38" * identifier)) )) (compound_statement "{\n    return iVar32;\n  }" { (return_statement "return iVar32;" return identifier ;) })) (expression_statement "pcVar48 = __gmpn_hgcd_reduce_itch;" (assignment_expression "pcVar48 = __gmpn_hgcd_reduce_itch" identifier = identifier) ;) (expression_statement "(*pcVar42)();" (call_expression "(*pcVar42)()" (parenthesized_expression "(*pcVar42)" ( (pointer_expression "*pcVar42" * identifier) )) (argument_list "()" ( ))) ;) (expression_statement "pcVar47 = *(code **)(pcVar42 + 0x43e08);" (assignment_expression "pcVar47 = *(code **)(pcVar42 + 0x43e08)" identifier = (pointer_expression "*(code **)(pcVar42 + 0x43e08)" * (cast_expression "(code **)(pcVar42 + 0x43e08)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar42 + 0x43e08)" ( (binary_expression "pcVar42 + 0x43e08" identifier + number_literal) ))))) ;) (expression_statement "*(mp_ptr *)(puVar45 + -0xc) = pmVar28;" (assignment_expression "*(mp_ptr *)(puVar45 + -0xc) = pmVar28" (pointer_expression "*(mp_ptr *)(puVar45 + -0xc)" * (cast_expression "(mp_ptr *)(puVar45 + -0xc)" ( (type_descriptor "mp_ptr *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar45 + -0xc)" ( (binary_expression "puVar45 + -0xc" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(puVar45 + -8) = iVar13;" (assignment_expression "*(int *)(puVar45 + -8) = iVar13" (pointer_expression "*(int *)(puVar45 + -8)" * (cast_expression "(int *)(puVar45 + -8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar45 + -8)" ( (binary_expression "puVar45 + -8" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(mp_ptr *)(puVar45 + -0x10) = pmVar25;" (assignment_expression "*(mp_ptr *)(puVar45 + -0x10) = pmVar25" (pointer_expression "*(mp_ptr *)(puVar45 + -0x10)" * (cast_expression "(mp_ptr *)(puVar45 + -0x10)" ( (type_descriptor "mp_ptr *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar45 + -0x10)" ( (binary_expression "puVar45 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(code **)(puVar45 + -0x18) = pcVar42 + 0x4b9e4;" (assignment_expression "*(code **)(puVar45 + -0x18) = pcVar42 + 0x4b9e4" (pointer_expression "*(code **)(puVar45 + -0x18)" * (cast_expression "(code **)(puVar45 + -0x18)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar45 + -0x18)" ( (binary_expression "puVar45 + -0x18" identifier + number_literal) )))) = (binary_expression "pcVar42 + 0x4b9e4" identifier + number_literal)) ;) (expression_statement "*(code **)(puVar45 + -4) = pcVar48;" (assignment_expression "*(code **)(puVar45 + -4) = pcVar48" (pointer_expression "*(code **)(puVar45 + -4)" * (cast_expression "(code **)(puVar45 + -4)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar45 + -4)" ( (binary_expression "puVar45 + -4" identifier + number_literal) )))) = identifier) ;) (expression_statement "puVar12 = (undefined *)(*pcVar47)(iVar29 - (int)pmVar26);" (assignment_expression "puVar12 = (undefined *)(*pcVar47)(iVar29 - (int)pmVar26)" identifier = (cast_expression "(undefined *)(*pcVar47)(iVar29 - (int)pmVar26)" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(*pcVar47)(iVar29 - (int)pmVar26)" (parenthesized_expression "(*pcVar47)" ( (pointer_expression "*pcVar47" * identifier) )) (argument_list "(iVar29 - (int)pmVar26)" ( (binary_expression "iVar29 - (int)pmVar26" identifier - (cast_expression "(int)pmVar26" ( (type_descriptor "int" primitive_type) ) identifier)) ))))) ;) (if_statement "if (999 < iVar29) {\n    return (mp_size_t)(puVar12 + (iVar29 - (int)pmVar26) * 2);\n  }" if (parenthesized_expression "(999 < iVar29)" ( (binary_expression "999 < iVar29" number_literal < identifier) )) (compound_statement "{\n    return (mp_size_t)(puVar12 + (iVar29 - (int)pmVar26) * 2);\n  }" { (return_statement "return (mp_size_t)(puVar12 + (iVar29 - (int)pmVar26) * 2);" return (call_expression "(mp_size_t)(puVar12 + (iVar29 - (int)pmVar26) * 2)" (parenthesized_expression "(mp_size_t)" ( identifier )) (argument_list "(puVar12 + (iVar29 - (int)pmVar26) * 2)" ( (binary_expression "puVar12 + (iVar29 - (int)pmVar26) * 2" identifier + (binary_expression "(iVar29 - (int)pmVar26) * 2" (parenthesized_expression "(iVar29 - (int)pmVar26)" ( (binary_expression "iVar29 - (int)pmVar26" identifier - (cast_expression "(int)pmVar26" ( (type_descriptor "int" primitive_type) ) identifier)) )) * number_literal)) ))) ;) })) (expression_statement "puVar37 = (undefined *)((int)pmVar26 + iVar29 + -1);" (assignment_expression "puVar37 = (undefined *)((int)pmVar26 + iVar29 + -1)" identifier = (cast_expression "(undefined *)((int)pmVar26 + iVar29 + -1)" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pmVar26 + iVar29 + -1)" ( (binary_expression "(int)pmVar26 + iVar29 + -1" (binary_expression "(int)pmVar26 + iVar29" (cast_expression "(int)pmVar26" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) + number_literal) )))) ;) (if_statement "if ((int)puVar12 <= (int)puVar37) {\n    puVar12 = puVar37;\n  }" if (parenthesized_expression "((int)puVar12 <= (int)puVar37)" ( (binary_expression "(int)puVar12 <= (int)puVar37" (cast_expression "(int)puVar12" ( (type_descriptor "int" primitive_type) ) identifier) <= (cast_expression "(int)puVar37" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n    puVar12 = puVar37;\n  }" { (expression_statement "puVar12 = puVar37;" (assignment_expression "puVar12 = puVar37" identifier = identifier) ;) })) (return_statement "return (mp_size_t)puVar12;" return (cast_expression "(mp_size_t)puVar12" ( (type_descriptor "mp_size_t" type_identifier) ) identifier) ;) })))
(translation_unit "uint * __gmpn_hgcd_step(uint *param_1,uint *param_2,uint *param_3,uint *param_4,int param_5,\n                       uint *param_6)\n\n{\n  uint *puVar1;\n  undefined *puVar2;\n  uint uVar3;\n  uint *puVar4;\n  uint *puVar5;\n  undefined4 *puVar6;\n  int iVar7;\n  undefined4 uVar8;\n  int iVar9;\n  uint uVar10;\n  int iVar11;\n  int iVar12;\n  uint uVar13;\n  uint *puVar14;\n  undefined4 uVar15;\n  uint uVar16;\n  uint *puVar17;\n  uint *puVar18;\n  uint *puVar19;\n  uint uVar20;\n  uint *puVar21;\n  int iVar22;\n  uint uVar23;\n  int iVar24;\n  uint *puVar25;\n  undefined4 uVar26;\n  undefined4 uVar27;\n  uint *puVar28;\n  uint *puVar29;\n  int *piVar30;\n  uint *puVar31;\n  int iVar32;\n  undefined1 *unaff_s5;\n  undefined *puVar33;\n  code *pcVar34;\n  code *pcVar35;\n  undefined1 *puVar36;\n  undefined1 *puVar37;\n  undefined1 *puVar38;\n  undefined4 uVar39;\n  code *pcVar40;\n  undefined1 auStack_c0 [24];\n  uint *apuStack_a8 [4];\n  int iStack_98;\n  int iStack_94;\n  uint *puStack_90;\n  undefined *puStack_8c;\n  uint *puStack_88;\n  uint *puStack_84;\n  uint *puStack_80;\n  undefined1 *puStack_7c;\n  uint *puStack_78;\n  uint *puStack_74;\n  int iStack_70;\n  undefined4 uStack_6c;\n  uint *local_58;\n  int local_54;\n  uint *local_50;\n  undefined1 auStack_3c [16];\n  uint *local_2c;\n  \n  puVar2 = PTR___stack_chk_guard_00097540;\n  puVar28 = (uint *)((int)param_1 * 4 + -4);\n  local_2c = *(uint **)PTR___stack_chk_guard_00097540;\n  uVar20 = param_3[(int)param_1 + -1];\n  uVar13 = param_2[(int)param_1 + -1];\n  uVar3 = uVar13 | uVar20;\n  if ((uint *)((int)param_4 + 1) == param_1) {\n    if (3 < uVar3) {\n      unaff_s5 = auStack_3c;\n      local_58 = (uint *)unaff_s5;\n      iVar9 = (*(code *)PTR___gmpn_hgcd2_00097460)\n                        (uVar13,param_2[(int)param_1 + -2],uVar20,param_3[(int)param_1 + -2]);\n      if (iVar9 != 0) goto LAB_00052bb8;\n    }\nLAB_00052b18:\n    local_50 = param_6;\n    local_58 = (uint *)(PTR_LAB_0009707c + 0x2960);\n    local_54 = param_5;\n    puVar29 = param_3;\n    puVar25 = param_1;\n    puVar18 = param_4;\n    puVar4 = (uint *)(*(code *)PTR___gmpn_gcd_subdiv_step_00097118)(param_2);\n  }\n  else {\n    uVar16 = param_2[(int)param_1 + -2];\n    uVar23 = param_3[(int)param_1 + -2];\n    if (-1 < (int)uVar3) {\n      if (uVar3 < 0x10000) {\n        iVar9 = 0x18;\n        if (uVar3 < 0x100) {\n          iVar9 = 0;\n        }\n        iVar24 = 9;\n        if (uVar3 < 0x100) {\n          iVar24 = 1;\n        }\n      }\n      else {\n        iVar9 = 8;\n        if (uVar3 < 0x1000000) {\n          iVar9 = 0x10;\n        }\n        iVar24 = 0x19;\n        if (uVar3 < 0x1000000) {\n          iVar24 = 0x11;\n        }\n      }\n      uVar3 = iVar9 - (uint)(byte)PTR___gmpn_clz_tab_0009718c[uVar3 >> iVar24];\n      uVar10 = 0x20 - uVar3;\n      uVar13 = uVar13 << (uVar3 & 0x1f) | uVar16 >> (uVar10 & 0x1f);\n      uVar16 = param_2[(int)param_1 + -3] >> (uVar10 & 0x1f) | uVar16 << (uVar3 & 0x1f);\n      uVar20 = uVar20 << (uVar3 & 0x1f) | uVar23 >> (uVar10 & 0x1f);\n      uVar23 = param_3[(int)param_1 + -3] >> (uVar10 & 0x1f) | uVar23 << (uVar3 & 0x1f);\n    }\n    unaff_s5 = auStack_3c;\n    local_58 = (uint *)unaff_s5;\n    iVar9 = (*(code *)PTR___gmpn_hgcd2_00097460)(uVar13,uVar16,uVar20,uVar23);\n    if (iVar9 == 0) goto LAB_00052b18;\nLAB_00052bb8:\n    unaff_s5 = auStack_3c;\n    (*(code *)PTR___gmpn_hgcd_matrix_mul_1_000973f4)(param_5,unaff_s5,param_6);\n    if (param_1 != (uint *)0x0) {\n      iVar9 = (int)param_1 + -1;\n      uVar3 = *param_2;\n      if (iVar9 == 0) {\n        *param_6 = uVar3;\n        puVar28 = param_6;\n      }\n      else {\n        puVar28 = param_6;\n        puVar29 = param_2 + 1;\n        do {\n          *puVar28 = uVar3;\n          iVar9 = iVar9 + -1;\n          uVar3 = *puVar29;\n          puVar28 = puVar28 + 1;\n          puVar29 = puVar29 + 1;\n        } while (iVar9 != 0);\n        param_6[(int)param_1 + -1] = uVar3;\n        puVar28 = param_6 + (int)param_1 + -1;\n      }\n    }\n    puVar29 = param_2;\n    puVar25 = param_6;\n    puVar18 = param_3;\n    local_58 = param_1;\n    puVar4 = (uint *)(*(code *)PTR___gmpn_matrix22_mul1_inverse_vector_00097488)(unaff_s5);\n  }\n  if (local_2c == *(uint **)puVar2) {\n    return puVar4;\n  }\n  uVar39 = 0x52c64;\n  puVar4 = local_2c;\n  puVar33 = PTR___stack_chk_fail_000974d0;\n  (*(code *)PTR___stack_chk_fail_000974d0)();\n  iVar9 = local_54;\n  apuStack_a8[0] = (uint *)(puVar33 + 0x4c3d0);\n  puVar36 = auStack_c0;\n  iStack_70 = param_5;\n  piVar30 = *(int **)(puVar33 + 0x448d0);\n  iVar24 = (int)puVar18 + local_54;\n  puStack_74 = param_6;\n  puStack_8c = puVar2;\n  iStack_98 = 0;\n  iStack_94 = *piVar30;\n  puStack_90 = puVar28;\n  puStack_88 = param_2;\n  puStack_84 = param_3;\n  puStack_80 = param_1;\n  puStack_7c = unaff_s5;\n  puStack_78 = param_4;\n  uStack_6c = uVar39;\n  if ((uint)(iVar24 * 4) < 0x7f01) {\n    iVar32 = -(iVar24 * 4 + 7U & 0xfffffff8);\n    puVar36 = auStack_c0 + iVar32;\n    puVar19 = (uint *)((int)apuStack_a8 + iVar32);\n    puVar28 = local_58;\n  }\n  else {\n    apuStack_a8[3] = local_58;\n    puVar19 = (uint *)(**(code **)(puVar33 + 0x44680))(&iStack_98);\n    puVar28 = apuStack_a8[3];\n  }\n  pcVar34 = (code *)apuStack_a8[0][-0x1f63];\n  *(int *)(puVar36 + 0x10) = iVar9;\n  puVar17 = puVar25;\n  puVar21 = puVar18;\n  (*pcVar34)(puVar19);\n  puVar31 = (uint *)(iVar24 - (uint)((int)puVar29 < iVar24));\n  if (((puVar31 != (uint *)0x0) &&\n      (puVar17 = puVar4, puVar21 = puVar19, puVar28 = puVar31,\n      iVar24 = (*(code *)apuStack_a8[0][-0x1ecb])(puVar4), iVar24 != 0)) &&\n     ((int)puVar31 < (int)puVar29)) {\n    puVar14 = puVar4 + (int)puVar31;\n    uVar3 = *puVar14;\n    puVar17 = (uint *)(uVar3 - 1);\n    *puVar14 = (uint)puVar17;\n    puVar5 = puVar31;\n    while ((uVar3 == 0 && (puVar5 = (uint *)((int)puVar5 + 1), puVar29 != puVar5))) {\n      uVar3 = puVar14[1];\n      puVar14 = puVar14 + 1;\n      puVar17 = (uint *)(uVar3 - 1);\n      *puVar14 = (uint)puVar17;\n    }\n  }\n  if (iStack_98 != 0) {\n    (*(code *)apuStack_a8[0][-0x1e8b])();\n  }\n  puVar5 = puVar29;\n  if (((int)puVar18 < (int)puVar29) && (puVar4[(int)puVar29 + -1] == 0)) {\n    puVar14 = puVar4 + (int)puVar29;\n    do {\n      puVar29 = (uint *)((int)puVar29 + -1);\n      puVar5 = puVar18;\n      if (puVar18 == puVar29) break;\n      puVar1 = puVar14 + -2;\n      puVar5 = puVar29;\n      puVar14 = puVar14 + -1;\n    } while (*puVar1 == 0);\n  }\n  pcVar34 = (code *)apuStack_a8[0][-0x1edc];\n  if (iStack_94 == *piVar30) {\n    return puVar5;\n  }\n  uVar39 = 0x52e68;\n  iVar24 = iStack_94;\n  (*pcVar34)();\n  puVar38 = puVar36 + -0x88;\n  puVar37 = puVar36 + -0x88;\n  puVar6 = *(undefined4 **)(pcVar34 + 0x446d8);\n  *(undefined1 **)(puVar36 + -8) = auStack_c0;\n  *(uint **)(puVar36 + -0x10) = puVar19;\n  *(undefined4 **)(puVar36 + -0x4c) = puVar6;\n  *(uint **)(puVar36 + -0x20) = puVar18;\n  *(uint **)(puVar36 + -0x24) = puVar4;\n  *(uint **)(puVar36 + -0x28) = puVar29;\n  *(undefined4 *)(puVar36 + -4) = uVar39;\n  *(uint **)(puVar36 + -0xc) = puVar25;\n  *(int *)(puVar36 + -0x14) = iVar9;\n  *(uint **)(puVar36 + -0x18) = puVar31;\n  *(int **)(puVar36 + -0x1c) = piVar30;\n  *(code **)(puVar36 + -0x68) = pcVar34 + 0x4c1d8;\n  *(undefined4 *)(puVar36 + -0x2c) = *puVar6;\n  puVar29 = puVar28;\n  puVar25 = puVar28;\n  if (0 < (int)puVar28) {\n    if (puVar17[(int)((int)puVar28 + -1)] == 0) {\n      puVar18 = puVar17 + (int)puVar28;\n      do {\n        puVar25 = (uint *)((int)puVar25 + -1);\n        if (puVar25 == (uint *)0x0) break;\n        puVar4 = puVar18 + -2;\n        puVar18 = puVar18 + -1;\n      } while (*puVar4 == 0);\n    }\n    if (puVar21[(int)((int)puVar28 + -1)] == 0) {\n      puVar18 = puVar21 + (int)puVar28;\n      do {\n        puVar29 = (uint *)((int)puVar29 + -1);\n        if (puVar29 == (uint *)0x0) break;\n        puVar4 = puVar18 + -2;\n        puVar18 = puVar18 + -1;\n      } while (*puVar4 == 0);\n    }\n  }\n  iVar32 = *(int *)(iVar24 + 4);\n  iVar9 = 8;\n  do {\n    iVar22 = iVar9 + -8;\n    do {\n      iVar12 = iVar32;\n      if (0 < iVar32) {\n        iVar7 = *(int *)(iVar24 + iVar22 + 8);\n        iVar11 = *(int *)(iVar7 + iVar32 * 4 + -4);\n        iVar7 = iVar7 + iVar32 * 4;\n        while (iVar11 == 0) {\n          iVar12 = iVar12 + -1;\n          if (iVar12 == 0) break;\n          iVar11 = *(int *)(iVar7 + -8);\n          iVar7 = iVar7 + -4;\n        }\n      }\n      iVar7 = iVar22 + -0x3c;\n      iVar22 = iVar22 + 4;\n      *(int *)(puVar36 + iVar7) = iVar12;\n    } while (iVar9 != iVar22);\n    iVar9 = iVar9 + 8;\n    iVar22 = *(int *)(puVar36 + -0x34);\n  } while (iVar9 != 0x18);\n  iVar9 = *(int *)(puVar36 + -0x38);\n  *(undefined4 *)(puVar36 + -0x40) = 0;\n  if (iVar9 == 0) {\n    uVar39 = *(undefined4 *)(iVar24 + 0x10);\n    *(int *)(puVar36 + -0x74) = iVar22;\n    *(undefined4 *)(puVar36 + -0x78) = uVar39;\n    puVar28 = puVar21;\n    puVar18 = puVar29;\n    puVar4 = puVar17;\nLAB_0005309c:\n    puVar29 = (uint *)FUN_00052c70(puVar28,puVar18,puVar4,puVar25);\n    iVar9 = *(int *)(puVar36 + -0x68);\nLAB_000530b4:\n    pcVar34 = *(code **)(iVar9 + -0x7a2c);\n    puVar38 = puVar37;\n    if (*(int *)(puVar36 + -0x40) != 0) goto LAB_00053478;\n  }\n  else {\n    if (iVar22 == 0) {\n      uVar39 = *(undefined4 *)(iVar24 + 0xc);\n      *(int *)(puVar36 + -0x74) = iVar9;\n      *(undefined4 *)(puVar36 + -0x78) = uVar39;\n      puVar28 = puVar17;\n      puVar18 = puVar25;\n      puVar4 = puVar21;\n      puVar25 = puVar29;\n      goto LAB_0005309c;\n    }\n    iVar7 = *(int *)(puVar36 + -0x30);\n    pcVar34 = *(code **)(pcVar34 + 0x4454c);\n    iVar12 = (int)puVar25 - *(int *)(puVar36 + -0x3c);\n    *(int *)(puVar36 + -0x50) = *(int *)(puVar36 + -0x3c);\n    *(int *)(puVar36 + -0x44) = iVar9;\n    if ((int)puVar29 - iVar22 <= iVar12) {\n      iVar12 = (int)puVar29 - iVar22;\n    }\n    iVar11 = (int)puVar25 - iVar9;\n    if ((int)puVar29 - iVar7 <= (int)puVar25 - iVar9) {\n      iVar11 = (int)puVar29 - iVar7;\n    }\n    puVar29 = (uint *)(iVar11 + 1);\n    if (iVar11 + 1 <= iVar12 + 1) {\n      puVar29 = (uint *)(iVar12 + 1);\n    }\n    puVar25 = (uint *)(*pcVar34)((int)puVar29 + 1);\n    iVar9 = (int)puVar25 >> 1;\n    iVar12 = *(int *)(puVar36 + -0x68);\n    uVar39 = *(undefined4 *)(puVar36 + -0x44);\n    if (iVar9 < (int)puVar25) {\n      if (iVar32 <= iVar9) {\n        uVar13 = ((int)puVar25 * 3 + iVar9 + 4) * 4;\n        uVar3 = uVar13 + 7;\n        if (0x7f00 < uVar13) {\n          pcVar34 = *(code **)(iVar12 + -0x7d50);\n          goto LAB_0005305c;\n        }\n        goto LAB_00053148;\n      }\n      uVar13 = ((int)puVar25 * 4 + 4) * 4;\n      uVar3 = uVar13 + 7;\n      if (uVar13 < 0x7f01) goto LAB_00053148;\n      pcVar34 = *(code **)(iVar12 + -0x7d50);\nLAB_0005305c:\n      *(uint **)(puVar36 + -0x48) = puVar25;\n      *(undefined4 *)(puVar36 + -0x44) = uVar39;\n      puVar4 = (uint *)(*pcVar34)(puVar36 + -0x40);\n      iVar12 = *(int *)(puVar36 + -0x68);\n      puVar25 = *(uint **)(puVar36 + -0x48);\n      uVar39 = *(undefined4 *)(puVar36 + -0x44);\n    }\n    else {\n      uVar3 = ((int)puVar25 * 3 + 4) * 4;\n      pcVar34 = *(code **)(iVar12 + -0x7d50);\n      if (0x7f00 < uVar3) goto LAB_0005305c;\n      uVar3 = uVar3 + 7;\nLAB_00053148:\n      puVar38 = puVar36 + -(uVar3 & 0xfffffff8) + -0x88;\n      puVar4 = (uint *)(puVar36 + -(uVar3 & 0xfffffff8) + -0x68);\n    }\n    *(uint **)(puVar36 + -0x44) = puVar4 + (int)puVar25;\n    *(uint **)(puVar36 + -0x48) = puVar4 + (int)puVar25 + (int)puVar25;\n    if ((int)puVar25 < (int)puVar28) {\n      pcVar34 = *(code **)(iVar12 + -0x7d0c);\n      puVar18 = (uint *)((int)puVar28 - (int)puVar25);\n      *(undefined4 *)(puVar36 + -0x5c) = uVar39;\n      *(uint **)(puVar36 + -0x58) = puVar25;\n      *(int *)(puVar36 + -0x54) = (int)puVar25 * 4;\n      iVar9 = (*pcVar34)(puVar17,puVar17,puVar17 + (int)puVar25,puVar18);\n      iVar12 = *(int *)(puVar36 + -0x68);\n      iVar32 = *(int *)(puVar36 + -0x54);\n      puVar28 = *(uint **)(puVar36 + -0x58);\n      uVar39 = *(undefined4 *)(puVar36 + -0x5c);\n      if (iVar9 == 0) {\nLAB_0005359c:\n        pcVar34 = *(code **)(iVar12 + -0x7d0c);\n      }\n      else {\n        puVar25 = puVar17;\n        if ((int)puVar28 <= (int)puVar18) {\nLAB_00053588:\n          do {\n            uVar3 = *puVar25;\n            *puVar25 = uVar3 + 1;\n            puVar25 = puVar25 + 1;\n          } while (uVar3 + 1 == 0);\n          goto LAB_0005359c;\n        }\n        puVar31 = puVar17 + (int)puVar18;\n        uVar3 = *puVar31;\n        *puVar31 = uVar3 + 1;\n        puVar19 = puVar18;\n        if (uVar3 + 1 == 0) {\n          do {\n            puVar19 = (uint *)((int)puVar19 + 1);\n            if (puVar28 == puVar19) goto LAB_00053588;\n            uVar3 = puVar31[1];\n            puVar31 = puVar31 + 1;\n            *puVar31 = uVar3 + 1;\n          } while (uVar3 + 1 == 0);\n          goto LAB_0005359c;\n        }\n        pcVar34 = *(code **)(iVar12 + -0x7d0c);\n      }\n      *(uint **)(puVar36 + -0x58) = puVar28;\n      *(undefined4 *)(puVar36 + -0x54) = uVar39;\n      iVar9 = (*pcVar34)(puVar21,puVar21,(int)puVar21 + iVar32,puVar18);\n      iVar12 = *(int *)(puVar36 + -0x68);\n      uVar39 = *(undefined4 *)(puVar36 + -0x54);\n      puVar25 = *(uint **)(puVar36 + -0x58);\n      puVar28 = puVar25;\n      if (iVar9 != 0) {\n        puVar19 = puVar21;\n        if ((int)puVar18 < (int)puVar25) {\n          puVar31 = puVar21 + (int)puVar18;\n          uVar3 = *puVar31 + 1;\n          *puVar31 = uVar3;\n          while (uVar3 == 0) {\n            puVar18 = (uint *)((int)puVar18 + 1);\n            if (puVar25 == puVar18) goto LAB_0005361c;\n            puVar5 = puVar31 + 1;\n            puVar31 = puVar31 + 1;\n            uVar3 = *puVar5 + 1;\n            *puVar31 = uVar3;\n          }\n        }\n        else {\nLAB_0005361c:\n          do {\n            uVar3 = *puVar19;\n            *puVar19 = uVar3 + 1;\n            puVar19 = puVar19 + 1;\n          } while (uVar3 + 1 == 0);\n        }\n      }\n    }\n    uVar8 = *(undefined4 *)(iVar24 + 0x14);\n    pcVar34 = *(code **)(iVar12 + -0x7cd8);\n    *(undefined4 *)(puVar36 + -0x5c) = uVar39;\n    *(uint **)(puVar36 + -0x54) = puVar25;\n    *(undefined4 *)(puVar38 + 0x18) = *(undefined4 *)(puVar36 + -0x48);\n    *(undefined4 *)(puVar38 + 0x10) = uVar8;\n    *(int *)(puVar38 + 0x14) = iVar7;\n    (*pcVar34)(puVar4,puVar25,puVar17,puVar28);\n    uVar39 = *(undefined4 *)(iVar24 + 0xc);\n    uVar26 = *(undefined4 *)(puVar36 + -0x54);\n    uVar27 = *(undefined4 *)(puVar36 + -0x5c);\n    uVar8 = *(undefined4 *)(puVar36 + -0x48);\n    pcVar34 = *(code **)(*(int *)(puVar36 + -0x68) + -0x7cd8);\n    uVar15 = *(undefined4 *)(puVar36 + -0x44);\n    *(undefined4 *)(puVar36 + -0x58) = uVar26;\n    *(undefined4 *)(puVar38 + 0x14) = uVar27;\n    *(undefined4 *)(puVar36 + -0x54) = uVar27;\n    *(undefined4 *)(puVar38 + 0x10) = uVar39;\n    *(undefined4 *)(puVar38 + 0x18) = uVar8;\n    (*pcVar34)(uVar15,uVar26,puVar21,puVar28);\n    iVar9 = *(int *)(puVar36 + -0x58);\n    iVar12 = *(int *)(puVar36 + -0x68);\n    iVar32 = *(int *)(puVar36 + -0x54);\n    if ((iVar7 + (int)puVar28 < iVar9) && (iVar7 != iVar9 - (int)puVar28)) {\n      iVar11 = (iVar9 - (int)puVar28) - iVar7;\n      puVar25 = puVar4 + (int)(iVar7 + (int)puVar28);\n      do {\n        iVar11 = iVar11 + -1;\n        *puVar25 = 0;\n        puVar25 = puVar25 + 1;\n      } while (iVar11 != 0);\n    }\n    pcVar34 = *(code **)(iVar12 + -0x7b2c);\n    if (iVar32 + (int)puVar28 < iVar9) {\n      if (iVar32 != iVar9 - (int)puVar28) {\n        iVar7 = (iVar9 - (int)puVar28) - iVar32;\n        puVar6 = (undefined4 *)(*(int *)(puVar36 + -0x44) + (int)(iVar32 + (int)puVar28) * 4);\n        do {\n          iVar7 = iVar7 + -1;\n          *puVar6 = 0;\n          puVar6 = puVar6 + 1;\n        } while (iVar7 != 0);\n        pcVar34 = *(code **)(iVar12 + -0x7b2c);\n      }\n    }\n    *(int *)(puVar36 + -0x54) = iVar9;\n    uVar3 = (*pcVar34)(puVar4,puVar4,*(undefined4 *)(puVar36 + -0x44),iVar9);\n    uVar13 = *puVar4;\n    iVar9 = *(int *)(puVar36 + -0x68);\n    uVar39 = *(undefined4 *)(puVar36 + -0x54);\n    *puVar4 = uVar13 - uVar3;\n    puVar25 = puVar4;\n    if (uVar13 < uVar3) {\n      do {\n        puVar25 = puVar25 + 1;\n        uVar3 = *puVar25;\n        *puVar25 = uVar3 - 1;\n      } while (uVar3 == 0);\n    }\n    uVar8 = *(undefined4 *)(iVar24 + 0x10);\n    pcVar34 = *(code **)(iVar9 + -0x7cd8);\n    uVar15 = *(undefined4 *)(puVar36 + -0x44);\n    *(undefined4 *)(puVar36 + -0x54) = uVar39;\n    *(undefined4 *)(puVar38 + 0x18) = *(undefined4 *)(puVar36 + -0x48);\n    *(int *)(puVar38 + 0x14) = iVar22;\n    *(undefined4 *)(puVar38 + 0x10) = uVar8;\n    (*pcVar34)(uVar15,uVar39,puVar17,puVar28);\n    iVar9 = *(int *)(puVar36 + -0x68);\n    uVar39 = *(undefined4 *)(puVar36 + -0x54);\n    if (puVar29 != (uint *)0x0) {\n      iVar32 = (int)puVar29 + -1;\n      uVar3 = *puVar4;\n      puVar18 = puVar17;\n      puVar25 = puVar4;\n      if (iVar32 == 0) {\n        *puVar17 = uVar3;\n      }\n      else {\n        do {\n          *puVar18 = uVar3;\n          iVar32 = iVar32 + -1;\n          uVar3 = puVar25[1];\n          puVar18 = puVar18 + 1;\n          puVar25 = puVar25 + 1;\n        } while (iVar32 != 0);\n        puVar17[(int)puVar29 + -1] = uVar3;\n      }\n    }\n    uVar8 = *(undefined4 *)(iVar24 + 8);\n    pcVar34 = *(code **)(iVar9 + -0x7cd8);\n    *(undefined4 *)(puVar38 + 0x18) = *(undefined4 *)(puVar36 + -0x48);\n    *(undefined4 *)(puVar36 + -0x48) = uVar39;\n    *(undefined4 *)(puVar38 + 0x10) = uVar8;\n    *(undefined4 *)(puVar38 + 0x14) = *(undefined4 *)(puVar36 + -0x50);\n    (*pcVar34)(puVar4,uVar39,puVar21,puVar28);\n    iVar9 = *(int *)(puVar36 + -0x48);\n    iVar32 = *(int *)(puVar36 + -0x68);\n    if ((int)puVar28 + iVar22 < iVar9) {\n      if (iVar22 != iVar9 - (int)puVar28) {\n        iVar12 = (iVar9 - (int)puVar28) - iVar22;\n        puVar6 = (undefined4 *)(*(int *)(puVar36 + -0x44) + (int)((int)puVar28 + iVar22) * 4);\n        do {\n          iVar12 = iVar12 + -1;\n          *puVar6 = 0;\n          puVar6 = puVar6 + 1;\n        } while (iVar12 != 0);\n      }\n    }\n    pcVar34 = *(code **)(iVar32 + -0x7b2c);\n    if (*(int *)(puVar36 + -0x50) + (int)puVar28 < iVar9) {\n      if (*(int *)(puVar36 + -0x50) != iVar9 - (int)puVar28) {\n        iVar22 = (iVar9 - (int)puVar28) - *(int *)(puVar36 + -0x50);\n        puVar28 = puVar4 + (int)(*(int *)(puVar36 + -0x50) + (int)puVar28);\n        do {\n          iVar22 = iVar22 + -1;\n          *puVar28 = 0;\n          puVar28 = puVar28 + 1;\n        } while (iVar22 != 0);\n        pcVar34 = *(code **)(iVar32 + -0x7b2c);\n      }\n    }\n    uVar3 = (*pcVar34)(puVar4,puVar4,*(undefined4 *)(puVar36 + -0x44),iVar9);\n    uVar13 = *puVar4;\n    iVar9 = *(int *)(puVar36 + -0x68);\n    puVar18 = (uint *)(uVar13 - uVar3);\n    *puVar4 = (uint)puVar18;\n    puVar28 = puVar4;\n    if (uVar13 < uVar3) {\n      do {\n        puVar28 = puVar28 + 1;\n        uVar3 = *puVar28;\n        puVar18 = (uint *)(uVar3 - 1);\n        *puVar28 = (uint)puVar18;\n      } while (uVar3 == 0);\n    }\n    iVar32 = (int)puVar29 + -1;\n    if (puVar29 == (uint *)0x0) {\n      iVar32 = -4;\n    }\n    else {\n      puVar18 = (uint *)*puVar4;\n      puVar28 = puVar21;\n      if (iVar32 != 0) {\n        do {\n          puVar4 = puVar4 + 1;\n          *puVar28 = (uint)puVar18;\n          iVar32 = iVar32 + -1;\n          puVar18 = (uint *)*puVar4;\n          puVar28 = puVar28 + 1;\n        } while (iVar32 != 0);\n        puVar28 = puVar21 + (int)puVar29 + -1;\n      }\n      *puVar28 = (uint)puVar18;\n      iVar32 = (int)puVar29 * 4 + -4;\n    }\n    puVar37 = puVar38;\n    if (*(int *)((int)puVar17 + iVar32) != 0 || *(int *)((int)puVar21 + iVar32) != 0)\n    goto LAB_000530b4;\n    puVar17 = puVar17 + (int)puVar29 + -2;\n    puVar21 = puVar21 + (int)puVar29 + -2;\n    do {\n      uVar3 = *puVar17;\n      puVar29 = (uint *)((int)puVar29 + -1);\n      uVar13 = *puVar21;\n      puVar17 = puVar17 + -1;\n      puVar21 = puVar21 + -1;\n    } while (uVar3 == 0 && uVar13 == 0);\n    piVar30 = *(int **)(puVar36 + -0x4c);\n    if (*(int *)(puVar36 + -0x40) == 0) goto LAB_000530c4;\n    pcVar34 = *(code **)(iVar9 + -0x7a2c);\nLAB_00053478:\n    (*pcVar34)();\n    iVar9 = *(int *)(puVar36 + -0x68);\n    puVar38 = puVar37;\n  }\n  piVar30 = *(int **)(puVar36 + -0x4c);\nLAB_000530c4:\n  iVar32 = *(int *)(puVar36 + -0x2c);\n  pcVar34 = *(code **)(iVar9 + -0x7b70);\n  if (iVar32 == *piVar30) {\n    return puVar29;\n  }\n  pcVar40 = __gmpn_hgcd_reduce_itch;\n  (*pcVar34)();\n  pcVar35 = *(code **)(pcVar34 + 0x43e08);\n  *(uint **)(puVar38 + -0xc) = puVar21;\n  *(int *)(puVar38 + -8) = iVar24;\n  *(uint **)(puVar38 + -0x10) = puVar17;\n  *(code **)(puVar38 + -0x18) = pcVar34 + 0x4b9e4;\n  *(code **)(puVar38 + -4) = pcVar40;\n  puVar28 = (uint *)(*pcVar35)(iVar32 - (int)puVar18);\n  if (999 < iVar32) {\n    return (uint *)((iVar32 - (int)puVar18) * 2 + (int)puVar28);\n  }\n  puVar18 = (uint *)((int)puVar18 + iVar32 + -1);\n  if ((int)puVar28 <= (int)puVar18) {\n    puVar28 = puVar18;\n  }\n  return puVar28;\n}\n\n" (function_definition "uint * __gmpn_hgcd_step(uint *param_1,uint *param_2,uint *param_3,uint *param_4,int param_5,\n                       uint *param_6)\n\n{\n  uint *puVar1;\n  undefined *puVar2;\n  uint uVar3;\n  uint *puVar4;\n  uint *puVar5;\n  undefined4 *puVar6;\n  int iVar7;\n  undefined4 uVar8;\n  int iVar9;\n  uint uVar10;\n  int iVar11;\n  int iVar12;\n  uint uVar13;\n  uint *puVar14;\n  undefined4 uVar15;\n  uint uVar16;\n  uint *puVar17;\n  uint *puVar18;\n  uint *puVar19;\n  uint uVar20;\n  uint *puVar21;\n  int iVar22;\n  uint uVar23;\n  int iVar24;\n  uint *puVar25;\n  undefined4 uVar26;\n  undefined4 uVar27;\n  uint *puVar28;\n  uint *puVar29;\n  int *piVar30;\n  uint *puVar31;\n  int iVar32;\n  undefined1 *unaff_s5;\n  undefined *puVar33;\n  code *pcVar34;\n  code *pcVar35;\n  undefined1 *puVar36;\n  undefined1 *puVar37;\n  undefined1 *puVar38;\n  undefined4 uVar39;\n  code *pcVar40;\n  undefined1 auStack_c0 [24];\n  uint *apuStack_a8 [4];\n  int iStack_98;\n  int iStack_94;\n  uint *puStack_90;\n  undefined *puStack_8c;\n  uint *puStack_88;\n  uint *puStack_84;\n  uint *puStack_80;\n  undefined1 *puStack_7c;\n  uint *puStack_78;\n  uint *puStack_74;\n  int iStack_70;\n  undefined4 uStack_6c;\n  uint *local_58;\n  int local_54;\n  uint *local_50;\n  undefined1 auStack_3c [16];\n  uint *local_2c;\n  \n  puVar2 = PTR___stack_chk_guard_00097540;\n  puVar28 = (uint *)((int)param_1 * 4 + -4);\n  local_2c = *(uint **)PTR___stack_chk_guard_00097540;\n  uVar20 = param_3[(int)param_1 + -1];\n  uVar13 = param_2[(int)param_1 + -1];\n  uVar3 = uVar13 | uVar20;\n  if ((uint *)((int)param_4 + 1) == param_1) {\n    if (3 < uVar3) {\n      unaff_s5 = auStack_3c;\n      local_58 = (uint *)unaff_s5;\n      iVar9 = (*(code *)PTR___gmpn_hgcd2_00097460)\n                        (uVar13,param_2[(int)param_1 + -2],uVar20,param_3[(int)param_1 + -2]);\n      if (iVar9 != 0) goto LAB_00052bb8;\n    }\nLAB_00052b18:\n    local_50 = param_6;\n    local_58 = (uint *)(PTR_LAB_0009707c + 0x2960);\n    local_54 = param_5;\n    puVar29 = param_3;\n    puVar25 = param_1;\n    puVar18 = param_4;\n    puVar4 = (uint *)(*(code *)PTR___gmpn_gcd_subdiv_step_00097118)(param_2);\n  }\n  else {\n    uVar16 = param_2[(int)param_1 + -2];\n    uVar23 = param_3[(int)param_1 + -2];\n    if (-1 < (int)uVar3) {\n      if (uVar3 < 0x10000) {\n        iVar9 = 0x18;\n        if (uVar3 < 0x100) {\n          iVar9 = 0;\n        }\n        iVar24 = 9;\n        if (uVar3 < 0x100) {\n          iVar24 = 1;\n        }\n      }\n      else {\n        iVar9 = 8;\n        if (uVar3 < 0x1000000) {\n          iVar9 = 0x10;\n        }\n        iVar24 = 0x19;\n        if (uVar3 < 0x1000000) {\n          iVar24 = 0x11;\n        }\n      }\n      uVar3 = iVar9 - (uint)(byte)PTR___gmpn_clz_tab_0009718c[uVar3 >> iVar24];\n      uVar10 = 0x20 - uVar3;\n      uVar13 = uVar13 << (uVar3 & 0x1f) | uVar16 >> (uVar10 & 0x1f);\n      uVar16 = param_2[(int)param_1 + -3] >> (uVar10 & 0x1f) | uVar16 << (uVar3 & 0x1f);\n      uVar20 = uVar20 << (uVar3 & 0x1f) | uVar23 >> (uVar10 & 0x1f);\n      uVar23 = param_3[(int)param_1 + -3] >> (uVar10 & 0x1f) | uVar23 << (uVar3 & 0x1f);\n    }\n    unaff_s5 = auStack_3c;\n    local_58 = (uint *)unaff_s5;\n    iVar9 = (*(code *)PTR___gmpn_hgcd2_00097460)(uVar13,uVar16,uVar20,uVar23);\n    if (iVar9 == 0) goto LAB_00052b18;\nLAB_00052bb8:\n    unaff_s5 = auStack_3c;\n    (*(code *)PTR___gmpn_hgcd_matrix_mul_1_000973f4)(param_5,unaff_s5,param_6);\n    if (param_1 != (uint *)0x0) {\n      iVar9 = (int)param_1 + -1;\n      uVar3 = *param_2;\n      if (iVar9 == 0) {\n        *param_6 = uVar3;\n        puVar28 = param_6;\n      }\n      else {\n        puVar28 = param_6;\n        puVar29 = param_2 + 1;\n        do {\n          *puVar28 = uVar3;\n          iVar9 = iVar9 + -1;\n          uVar3 = *puVar29;\n          puVar28 = puVar28 + 1;\n          puVar29 = puVar29 + 1;\n        } while (iVar9 != 0);\n        param_6[(int)param_1 + -1] = uVar3;\n        puVar28 = param_6 + (int)param_1 + -1;\n      }\n    }\n    puVar29 = param_2;\n    puVar25 = param_6;\n    puVar18 = param_3;\n    local_58 = param_1;\n    puVar4 = (uint *)(*(code *)PTR___gmpn_matrix22_mul1_inverse_vector_00097488)(unaff_s5);\n  }\n  if (local_2c == *(uint **)puVar2) {\n    return puVar4;\n  }\n  uVar39 = 0x52c64;\n  puVar4 = local_2c;\n  puVar33 = PTR___stack_chk_fail_000974d0;\n  (*(code *)PTR___stack_chk_fail_000974d0)();\n  iVar9 = local_54;\n  apuStack_a8[0] = (uint *)(puVar33 + 0x4c3d0);\n  puVar36 = auStack_c0;\n  iStack_70 = param_5;\n  piVar30 = *(int **)(puVar33 + 0x448d0);\n  iVar24 = (int)puVar18 + local_54;\n  puStack_74 = param_6;\n  puStack_8c = puVar2;\n  iStack_98 = 0;\n  iStack_94 = *piVar30;\n  puStack_90 = puVar28;\n  puStack_88 = param_2;\n  puStack_84 = param_3;\n  puStack_80 = param_1;\n  puStack_7c = unaff_s5;\n  puStack_78 = param_4;\n  uStack_6c = uVar39;\n  if ((uint)(iVar24 * 4) < 0x7f01) {\n    iVar32 = -(iVar24 * 4 + 7U & 0xfffffff8);\n    puVar36 = auStack_c0 + iVar32;\n    puVar19 = (uint *)((int)apuStack_a8 + iVar32);\n    puVar28 = local_58;\n  }\n  else {\n    apuStack_a8[3] = local_58;\n    puVar19 = (uint *)(**(code **)(puVar33 + 0x44680))(&iStack_98);\n    puVar28 = apuStack_a8[3];\n  }\n  pcVar34 = (code *)apuStack_a8[0][-0x1f63];\n  *(int *)(puVar36 + 0x10) = iVar9;\n  puVar17 = puVar25;\n  puVar21 = puVar18;\n  (*pcVar34)(puVar19);\n  puVar31 = (uint *)(iVar24 - (uint)((int)puVar29 < iVar24));\n  if (((puVar31 != (uint *)0x0) &&\n      (puVar17 = puVar4, puVar21 = puVar19, puVar28 = puVar31,\n      iVar24 = (*(code *)apuStack_a8[0][-0x1ecb])(puVar4), iVar24 != 0)) &&\n     ((int)puVar31 < (int)puVar29)) {\n    puVar14 = puVar4 + (int)puVar31;\n    uVar3 = *puVar14;\n    puVar17 = (uint *)(uVar3 - 1);\n    *puVar14 = (uint)puVar17;\n    puVar5 = puVar31;\n    while ((uVar3 == 0 && (puVar5 = (uint *)((int)puVar5 + 1), puVar29 != puVar5))) {\n      uVar3 = puVar14[1];\n      puVar14 = puVar14 + 1;\n      puVar17 = (uint *)(uVar3 - 1);\n      *puVar14 = (uint)puVar17;\n    }\n  }\n  if (iStack_98 != 0) {\n    (*(code *)apuStack_a8[0][-0x1e8b])();\n  }\n  puVar5 = puVar29;\n  if (((int)puVar18 < (int)puVar29) && (puVar4[(int)puVar29 + -1] == 0)) {\n    puVar14 = puVar4 + (int)puVar29;\n    do {\n      puVar29 = (uint *)((int)puVar29 + -1);\n      puVar5 = puVar18;\n      if (puVar18 == puVar29) break;\n      puVar1 = puVar14 + -2;\n      puVar5 = puVar29;\n      puVar14 = puVar14 + -1;\n    } while (*puVar1 == 0);\n  }\n  pcVar34 = (code *)apuStack_a8[0][-0x1edc];\n  if (iStack_94 == *piVar30) {\n    return puVar5;\n  }\n  uVar39 = 0x52e68;\n  iVar24 = iStack_94;\n  (*pcVar34)();\n  puVar38 = puVar36 + -0x88;\n  puVar37 = puVar36 + -0x88;\n  puVar6 = *(undefined4 **)(pcVar34 + 0x446d8);\n  *(undefined1 **)(puVar36 + -8) = auStack_c0;\n  *(uint **)(puVar36 + -0x10) = puVar19;\n  *(undefined4 **)(puVar36 + -0x4c) = puVar6;\n  *(uint **)(puVar36 + -0x20) = puVar18;\n  *(uint **)(puVar36 + -0x24) = puVar4;\n  *(uint **)(puVar36 + -0x28) = puVar29;\n  *(undefined4 *)(puVar36 + -4) = uVar39;\n  *(uint **)(puVar36 + -0xc) = puVar25;\n  *(int *)(puVar36 + -0x14) = iVar9;\n  *(uint **)(puVar36 + -0x18) = puVar31;\n  *(int **)(puVar36 + -0x1c) = piVar30;\n  *(code **)(puVar36 + -0x68) = pcVar34 + 0x4c1d8;\n  *(undefined4 *)(puVar36 + -0x2c) = *puVar6;\n  puVar29 = puVar28;\n  puVar25 = puVar28;\n  if (0 < (int)puVar28) {\n    if (puVar17[(int)((int)puVar28 + -1)] == 0) {\n      puVar18 = puVar17 + (int)puVar28;\n      do {\n        puVar25 = (uint *)((int)puVar25 + -1);\n        if (puVar25 == (uint *)0x0) break;\n        puVar4 = puVar18 + -2;\n        puVar18 = puVar18 + -1;\n      } while (*puVar4 == 0);\n    }\n    if (puVar21[(int)((int)puVar28 + -1)] == 0) {\n      puVar18 = puVar21 + (int)puVar28;\n      do {\n        puVar29 = (uint *)((int)puVar29 + -1);\n        if (puVar29 == (uint *)0x0) break;\n        puVar4 = puVar18 + -2;\n        puVar18 = puVar18 + -1;\n      } while (*puVar4 == 0);\n    }\n  }\n  iVar32 = *(int *)(iVar24 + 4);\n  iVar9 = 8;\n  do {\n    iVar22 = iVar9 + -8;\n    do {\n      iVar12 = iVar32;\n      if (0 < iVar32) {\n        iVar7 = *(int *)(iVar24 + iVar22 + 8);\n        iVar11 = *(int *)(iVar7 + iVar32 * 4 + -4);\n        iVar7 = iVar7 + iVar32 * 4;\n        while (iVar11 == 0) {\n          iVar12 = iVar12 + -1;\n          if (iVar12 == 0) break;\n          iVar11 = *(int *)(iVar7 + -8);\n          iVar7 = iVar7 + -4;\n        }\n      }\n      iVar7 = iVar22 + -0x3c;\n      iVar22 = iVar22 + 4;\n      *(int *)(puVar36 + iVar7) = iVar12;\n    } while (iVar9 != iVar22);\n    iVar9 = iVar9 + 8;\n    iVar22 = *(int *)(puVar36 + -0x34);\n  } while (iVar9 != 0x18);\n  iVar9 = *(int *)(puVar36 + -0x38);\n  *(undefined4 *)(puVar36 + -0x40) = 0;\n  if (iVar9 == 0) {\n    uVar39 = *(undefined4 *)(iVar24 + 0x10);\n    *(int *)(puVar36 + -0x74) = iVar22;\n    *(undefined4 *)(puVar36 + -0x78) = uVar39;\n    puVar28 = puVar21;\n    puVar18 = puVar29;\n    puVar4 = puVar17;\nLAB_0005309c:\n    puVar29 = (uint *)FUN_00052c70(puVar28,puVar18,puVar4,puVar25);\n    iVar9 = *(int *)(puVar36 + -0x68);\nLAB_000530b4:\n    pcVar34 = *(code **)(iVar9 + -0x7a2c);\n    puVar38 = puVar37;\n    if (*(int *)(puVar36 + -0x40) != 0) goto LAB_00053478;\n  }\n  else {\n    if (iVar22 == 0) {\n      uVar39 = *(undefined4 *)(iVar24 + 0xc);\n      *(int *)(puVar36 + -0x74) = iVar9;\n      *(undefined4 *)(puVar36 + -0x78) = uVar39;\n      puVar28 = puVar17;\n      puVar18 = puVar25;\n      puVar4 = puVar21;\n      puVar25 = puVar29;\n      goto LAB_0005309c;\n    }\n    iVar7 = *(int *)(puVar36 + -0x30);\n    pcVar34 = *(code **)(pcVar34 + 0x4454c);\n    iVar12 = (int)puVar25 - *(int *)(puVar36 + -0x3c);\n    *(int *)(puVar36 + -0x50) = *(int *)(puVar36 + -0x3c);\n    *(int *)(puVar36 + -0x44) = iVar9;\n    if ((int)puVar29 - iVar22 <= iVar12) {\n      iVar12 = (int)puVar29 - iVar22;\n    }\n    iVar11 = (int)puVar25 - iVar9;\n    if ((int)puVar29 - iVar7 <= (int)puVar25 - iVar9) {\n      iVar11 = (int)puVar29 - iVar7;\n    }\n    puVar29 = (uint *)(iVar11 + 1);\n    if (iVar11 + 1 <= iVar12 + 1) {\n      puVar29 = (uint *)(iVar12 + 1);\n    }\n    puVar25 = (uint *)(*pcVar34)((int)puVar29 + 1);\n    iVar9 = (int)puVar25 >> 1;\n    iVar12 = *(int *)(puVar36 + -0x68);\n    uVar39 = *(undefined4 *)(puVar36 + -0x44);\n    if (iVar9 < (int)puVar25) {\n      if (iVar32 <= iVar9) {\n        uVar13 = ((int)puVar25 * 3 + iVar9 + 4) * 4;\n        uVar3 = uVar13 + 7;\n        if (0x7f00 < uVar13) {\n          pcVar34 = *(code **)(iVar12 + -0x7d50);\n          goto LAB_0005305c;\n        }\n        goto LAB_00053148;\n      }\n      uVar13 = ((int)puVar25 * 4 + 4) * 4;\n      uVar3 = uVar13 + 7;\n      if (uVar13 < 0x7f01) goto LAB_00053148;\n      pcVar34 = *(code **)(iVar12 + -0x7d50);\nLAB_0005305c:\n      *(uint **)(puVar36 + -0x48) = puVar25;\n      *(undefined4 *)(puVar36 + -0x44) = uVar39;\n      puVar4 = (uint *)(*pcVar34)(puVar36 + -0x40);\n      iVar12 = *(int *)(puVar36 + -0x68);\n      puVar25 = *(uint **)(puVar36 + -0x48);\n      uVar39 = *(undefined4 *)(puVar36 + -0x44);\n    }\n    else {\n      uVar3 = ((int)puVar25 * 3 + 4) * 4;\n      pcVar34 = *(code **)(iVar12 + -0x7d50);\n      if (0x7f00 < uVar3) goto LAB_0005305c;\n      uVar3 = uVar3 + 7;\nLAB_00053148:\n      puVar38 = puVar36 + -(uVar3 & 0xfffffff8) + -0x88;\n      puVar4 = (uint *)(puVar36 + -(uVar3 & 0xfffffff8) + -0x68);\n    }\n    *(uint **)(puVar36 + -0x44) = puVar4 + (int)puVar25;\n    *(uint **)(puVar36 + -0x48) = puVar4 + (int)puVar25 + (int)puVar25;\n    if ((int)puVar25 < (int)puVar28) {\n      pcVar34 = *(code **)(iVar12 + -0x7d0c);\n      puVar18 = (uint *)((int)puVar28 - (int)puVar25);\n      *(undefined4 *)(puVar36 + -0x5c) = uVar39;\n      *(uint **)(puVar36 + -0x58) = puVar25;\n      *(int *)(puVar36 + -0x54) = (int)puVar25 * 4;\n      iVar9 = (*pcVar34)(puVar17,puVar17,puVar17 + (int)puVar25,puVar18);\n      iVar12 = *(int *)(puVar36 + -0x68);\n      iVar32 = *(int *)(puVar36 + -0x54);\n      puVar28 = *(uint **)(puVar36 + -0x58);\n      uVar39 = *(undefined4 *)(puVar36 + -0x5c);\n      if (iVar9 == 0) {\nLAB_0005359c:\n        pcVar34 = *(code **)(iVar12 + -0x7d0c);\n      }\n      else {\n        puVar25 = puVar17;\n        if ((int)puVar28 <= (int)puVar18) {\nLAB_00053588:\n          do {\n            uVar3 = *puVar25;\n            *puVar25 = uVar3 + 1;\n            puVar25 = puVar25 + 1;\n          } while (uVar3 + 1 == 0);\n          goto LAB_0005359c;\n        }\n        puVar31 = puVar17 + (int)puVar18;\n        uVar3 = *puVar31;\n        *puVar31 = uVar3 + 1;\n        puVar19 = puVar18;\n        if (uVar3 + 1 == 0) {\n          do {\n            puVar19 = (uint *)((int)puVar19 + 1);\n            if (puVar28 == puVar19) goto LAB_00053588;\n            uVar3 = puVar31[1];\n            puVar31 = puVar31 + 1;\n            *puVar31 = uVar3 + 1;\n          } while (uVar3 + 1 == 0);\n          goto LAB_0005359c;\n        }\n        pcVar34 = *(code **)(iVar12 + -0x7d0c);\n      }\n      *(uint **)(puVar36 + -0x58) = puVar28;\n      *(undefined4 *)(puVar36 + -0x54) = uVar39;\n      iVar9 = (*pcVar34)(puVar21,puVar21,(int)puVar21 + iVar32,puVar18);\n      iVar12 = *(int *)(puVar36 + -0x68);\n      uVar39 = *(undefined4 *)(puVar36 + -0x54);\n      puVar25 = *(uint **)(puVar36 + -0x58);\n      puVar28 = puVar25;\n      if (iVar9 != 0) {\n        puVar19 = puVar21;\n        if ((int)puVar18 < (int)puVar25) {\n          puVar31 = puVar21 + (int)puVar18;\n          uVar3 = *puVar31 + 1;\n          *puVar31 = uVar3;\n          while (uVar3 == 0) {\n            puVar18 = (uint *)((int)puVar18 + 1);\n            if (puVar25 == puVar18) goto LAB_0005361c;\n            puVar5 = puVar31 + 1;\n            puVar31 = puVar31 + 1;\n            uVar3 = *puVar5 + 1;\n            *puVar31 = uVar3;\n          }\n        }\n        else {\nLAB_0005361c:\n          do {\n            uVar3 = *puVar19;\n            *puVar19 = uVar3 + 1;\n            puVar19 = puVar19 + 1;\n          } while (uVar3 + 1 == 0);\n        }\n      }\n    }\n    uVar8 = *(undefined4 *)(iVar24 + 0x14);\n    pcVar34 = *(code **)(iVar12 + -0x7cd8);\n    *(undefined4 *)(puVar36 + -0x5c) = uVar39;\n    *(uint **)(puVar36 + -0x54) = puVar25;\n    *(undefined4 *)(puVar38 + 0x18) = *(undefined4 *)(puVar36 + -0x48);\n    *(undefined4 *)(puVar38 + 0x10) = uVar8;\n    *(int *)(puVar38 + 0x14) = iVar7;\n    (*pcVar34)(puVar4,puVar25,puVar17,puVar28);\n    uVar39 = *(undefined4 *)(iVar24 + 0xc);\n    uVar26 = *(undefined4 *)(puVar36 + -0x54);\n    uVar27 = *(undefined4 *)(puVar36 + -0x5c);\n    uVar8 = *(undefined4 *)(puVar36 + -0x48);\n    pcVar34 = *(code **)(*(int *)(puVar36 + -0x68) + -0x7cd8);\n    uVar15 = *(undefined4 *)(puVar36 + -0x44);\n    *(undefined4 *)(puVar36 + -0x58) = uVar26;\n    *(undefined4 *)(puVar38 + 0x14) = uVar27;\n    *(undefined4 *)(puVar36 + -0x54) = uVar27;\n    *(undefined4 *)(puVar38 + 0x10) = uVar39;\n    *(undefined4 *)(puVar38 + 0x18) = uVar8;\n    (*pcVar34)(uVar15,uVar26,puVar21,puVar28);\n    iVar9 = *(int *)(puVar36 + -0x58);\n    iVar12 = *(int *)(puVar36 + -0x68);\n    iVar32 = *(int *)(puVar36 + -0x54);\n    if ((iVar7 + (int)puVar28 < iVar9) && (iVar7 != iVar9 - (int)puVar28)) {\n      iVar11 = (iVar9 - (int)puVar28) - iVar7;\n      puVar25 = puVar4 + (int)(iVar7 + (int)puVar28);\n      do {\n        iVar11 = iVar11 + -1;\n        *puVar25 = 0;\n        puVar25 = puVar25 + 1;\n      } while (iVar11 != 0);\n    }\n    pcVar34 = *(code **)(iVar12 + -0x7b2c);\n    if (iVar32 + (int)puVar28 < iVar9) {\n      if (iVar32 != iVar9 - (int)puVar28) {\n        iVar7 = (iVar9 - (int)puVar28) - iVar32;\n        puVar6 = (undefined4 *)(*(int *)(puVar36 + -0x44) + (int)(iVar32 + (int)puVar28) * 4);\n        do {\n          iVar7 = iVar7 + -1;\n          *puVar6 = 0;\n          puVar6 = puVar6 + 1;\n        } while (iVar7 != 0);\n        pcVar34 = *(code **)(iVar12 + -0x7b2c);\n      }\n    }\n    *(int *)(puVar36 + -0x54) = iVar9;\n    uVar3 = (*pcVar34)(puVar4,puVar4,*(undefined4 *)(puVar36 + -0x44),iVar9);\n    uVar13 = *puVar4;\n    iVar9 = *(int *)(puVar36 + -0x68);\n    uVar39 = *(undefined4 *)(puVar36 + -0x54);\n    *puVar4 = uVar13 - uVar3;\n    puVar25 = puVar4;\n    if (uVar13 < uVar3) {\n      do {\n        puVar25 = puVar25 + 1;\n        uVar3 = *puVar25;\n        *puVar25 = uVar3 - 1;\n      } while (uVar3 == 0);\n    }\n    uVar8 = *(undefined4 *)(iVar24 + 0x10);\n    pcVar34 = *(code **)(iVar9 + -0x7cd8);\n    uVar15 = *(undefined4 *)(puVar36 + -0x44);\n    *(undefined4 *)(puVar36 + -0x54) = uVar39;\n    *(undefined4 *)(puVar38 + 0x18) = *(undefined4 *)(puVar36 + -0x48);\n    *(int *)(puVar38 + 0x14) = iVar22;\n    *(undefined4 *)(puVar38 + 0x10) = uVar8;\n    (*pcVar34)(uVar15,uVar39,puVar17,puVar28);\n    iVar9 = *(int *)(puVar36 + -0x68);\n    uVar39 = *(undefined4 *)(puVar36 + -0x54);\n    if (puVar29 != (uint *)0x0) {\n      iVar32 = (int)puVar29 + -1;\n      uVar3 = *puVar4;\n      puVar18 = puVar17;\n      puVar25 = puVar4;\n      if (iVar32 == 0) {\n        *puVar17 = uVar3;\n      }\n      else {\n        do {\n          *puVar18 = uVar3;\n          iVar32 = iVar32 + -1;\n          uVar3 = puVar25[1];\n          puVar18 = puVar18 + 1;\n          puVar25 = puVar25 + 1;\n        } while (iVar32 != 0);\n        puVar17[(int)puVar29 + -1] = uVar3;\n      }\n    }\n    uVar8 = *(undefined4 *)(iVar24 + 8);\n    pcVar34 = *(code **)(iVar9 + -0x7cd8);\n    *(undefined4 *)(puVar38 + 0x18) = *(undefined4 *)(puVar36 + -0x48);\n    *(undefined4 *)(puVar36 + -0x48) = uVar39;\n    *(undefined4 *)(puVar38 + 0x10) = uVar8;\n    *(undefined4 *)(puVar38 + 0x14) = *(undefined4 *)(puVar36 + -0x50);\n    (*pcVar34)(puVar4,uVar39,puVar21,puVar28);\n    iVar9 = *(int *)(puVar36 + -0x48);\n    iVar32 = *(int *)(puVar36 + -0x68);\n    if ((int)puVar28 + iVar22 < iVar9) {\n      if (iVar22 != iVar9 - (int)puVar28) {\n        iVar12 = (iVar9 - (int)puVar28) - iVar22;\n        puVar6 = (undefined4 *)(*(int *)(puVar36 + -0x44) + (int)((int)puVar28 + iVar22) * 4);\n        do {\n          iVar12 = iVar12 + -1;\n          *puVar6 = 0;\n          puVar6 = puVar6 + 1;\n        } while (iVar12 != 0);\n      }\n    }\n    pcVar34 = *(code **)(iVar32 + -0x7b2c);\n    if (*(int *)(puVar36 + -0x50) + (int)puVar28 < iVar9) {\n      if (*(int *)(puVar36 + -0x50) != iVar9 - (int)puVar28) {\n        iVar22 = (iVar9 - (int)puVar28) - *(int *)(puVar36 + -0x50);\n        puVar28 = puVar4 + (int)(*(int *)(puVar36 + -0x50) + (int)puVar28);\n        do {\n          iVar22 = iVar22 + -1;\n          *puVar28 = 0;\n          puVar28 = puVar28 + 1;\n        } while (iVar22 != 0);\n        pcVar34 = *(code **)(iVar32 + -0x7b2c);\n      }\n    }\n    uVar3 = (*pcVar34)(puVar4,puVar4,*(undefined4 *)(puVar36 + -0x44),iVar9);\n    uVar13 = *puVar4;\n    iVar9 = *(int *)(puVar36 + -0x68);\n    puVar18 = (uint *)(uVar13 - uVar3);\n    *puVar4 = (uint)puVar18;\n    puVar28 = puVar4;\n    if (uVar13 < uVar3) {\n      do {\n        puVar28 = puVar28 + 1;\n        uVar3 = *puVar28;\n        puVar18 = (uint *)(uVar3 - 1);\n        *puVar28 = (uint)puVar18;\n      } while (uVar3 == 0);\n    }\n    iVar32 = (int)puVar29 + -1;\n    if (puVar29 == (uint *)0x0) {\n      iVar32 = -4;\n    }\n    else {\n      puVar18 = (uint *)*puVar4;\n      puVar28 = puVar21;\n      if (iVar32 != 0) {\n        do {\n          puVar4 = puVar4 + 1;\n          *puVar28 = (uint)puVar18;\n          iVar32 = iVar32 + -1;\n          puVar18 = (uint *)*puVar4;\n          puVar28 = puVar28 + 1;\n        } while (iVar32 != 0);\n        puVar28 = puVar21 + (int)puVar29 + -1;\n      }\n      *puVar28 = (uint)puVar18;\n      iVar32 = (int)puVar29 * 4 + -4;\n    }\n    puVar37 = puVar38;\n    if (*(int *)((int)puVar17 + iVar32) != 0 || *(int *)((int)puVar21 + iVar32) != 0)\n    goto LAB_000530b4;\n    puVar17 = puVar17 + (int)puVar29 + -2;\n    puVar21 = puVar21 + (int)puVar29 + -2;\n    do {\n      uVar3 = *puVar17;\n      puVar29 = (uint *)((int)puVar29 + -1);\n      uVar13 = *puVar21;\n      puVar17 = puVar17 + -1;\n      puVar21 = puVar21 + -1;\n    } while (uVar3 == 0 && uVar13 == 0);\n    piVar30 = *(int **)(puVar36 + -0x4c);\n    if (*(int *)(puVar36 + -0x40) == 0) goto LAB_000530c4;\n    pcVar34 = *(code **)(iVar9 + -0x7a2c);\nLAB_00053478:\n    (*pcVar34)();\n    iVar9 = *(int *)(puVar36 + -0x68);\n    puVar38 = puVar37;\n  }\n  piVar30 = *(int **)(puVar36 + -0x4c);\nLAB_000530c4:\n  iVar32 = *(int *)(puVar36 + -0x2c);\n  pcVar34 = *(code **)(iVar9 + -0x7b70);\n  if (iVar32 == *piVar30) {\n    return puVar29;\n  }\n  pcVar40 = __gmpn_hgcd_reduce_itch;\n  (*pcVar34)();\n  pcVar35 = *(code **)(pcVar34 + 0x43e08);\n  *(uint **)(puVar38 + -0xc) = puVar21;\n  *(int *)(puVar38 + -8) = iVar24;\n  *(uint **)(puVar38 + -0x10) = puVar17;\n  *(code **)(puVar38 + -0x18) = pcVar34 + 0x4b9e4;\n  *(code **)(puVar38 + -4) = pcVar40;\n  puVar28 = (uint *)(*pcVar35)(iVar32 - (int)puVar18);\n  if (999 < iVar32) {\n    return (uint *)((iVar32 - (int)puVar18) * 2 + (int)puVar28);\n  }\n  puVar18 = (uint *)((int)puVar18 + iVar32 + -1);\n  if ((int)puVar28 <= (int)puVar18) {\n    puVar28 = puVar18;\n  }\n  return puVar28;\n}" type_identifier (pointer_declarator "* __gmpn_hgcd_step(uint *param_1,uint *param_2,uint *param_3,uint *param_4,int param_5,\n                       uint *param_6)" * (function_declarator "__gmpn_hgcd_step(uint *param_1,uint *param_2,uint *param_3,uint *param_4,int param_5,\n                       uint *param_6)" identifier (parameter_list "(uint *param_1,uint *param_2,uint *param_3,uint *param_4,int param_5,\n                       uint *param_6)" ( (parameter_declaration "uint *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "uint *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "uint *param_3" type_identifier (pointer_declarator "*param_3" * identifier)) , (parameter_declaration "uint *param_4" type_identifier (pointer_declarator "*param_4" * identifier)) , (parameter_declaration "int param_5" primitive_type identifier) , (parameter_declaration "uint *param_6" type_identifier (pointer_declarator "*param_6" * identifier)) )))) (compound_statement "{\n  uint *puVar1;\n  undefined *puVar2;\n  uint uVar3;\n  uint *puVar4;\n  uint *puVar5;\n  undefined4 *puVar6;\n  int iVar7;\n  undefined4 uVar8;\n  int iVar9;\n  uint uVar10;\n  int iVar11;\n  int iVar12;\n  uint uVar13;\n  uint *puVar14;\n  undefined4 uVar15;\n  uint uVar16;\n  uint *puVar17;\n  uint *puVar18;\n  uint *puVar19;\n  uint uVar20;\n  uint *puVar21;\n  int iVar22;\n  uint uVar23;\n  int iVar24;\n  uint *puVar25;\n  undefined4 uVar26;\n  undefined4 uVar27;\n  uint *puVar28;\n  uint *puVar29;\n  int *piVar30;\n  uint *puVar31;\n  int iVar32;\n  undefined1 *unaff_s5;\n  undefined *puVar33;\n  code *pcVar34;\n  code *pcVar35;\n  undefined1 *puVar36;\n  undefined1 *puVar37;\n  undefined1 *puVar38;\n  undefined4 uVar39;\n  code *pcVar40;\n  undefined1 auStack_c0 [24];\n  uint *apuStack_a8 [4];\n  int iStack_98;\n  int iStack_94;\n  uint *puStack_90;\n  undefined *puStack_8c;\n  uint *puStack_88;\n  uint *puStack_84;\n  uint *puStack_80;\n  undefined1 *puStack_7c;\n  uint *puStack_78;\n  uint *puStack_74;\n  int iStack_70;\n  undefined4 uStack_6c;\n  uint *local_58;\n  int local_54;\n  uint *local_50;\n  undefined1 auStack_3c [16];\n  uint *local_2c;\n  \n  puVar2 = PTR___stack_chk_guard_00097540;\n  puVar28 = (uint *)((int)param_1 * 4 + -4);\n  local_2c = *(uint **)PTR___stack_chk_guard_00097540;\n  uVar20 = param_3[(int)param_1 + -1];\n  uVar13 = param_2[(int)param_1 + -1];\n  uVar3 = uVar13 | uVar20;\n  if ((uint *)((int)param_4 + 1) == param_1) {\n    if (3 < uVar3) {\n      unaff_s5 = auStack_3c;\n      local_58 = (uint *)unaff_s5;\n      iVar9 = (*(code *)PTR___gmpn_hgcd2_00097460)\n                        (uVar13,param_2[(int)param_1 + -2],uVar20,param_3[(int)param_1 + -2]);\n      if (iVar9 != 0) goto LAB_00052bb8;\n    }\nLAB_00052b18:\n    local_50 = param_6;\n    local_58 = (uint *)(PTR_LAB_0009707c + 0x2960);\n    local_54 = param_5;\n    puVar29 = param_3;\n    puVar25 = param_1;\n    puVar18 = param_4;\n    puVar4 = (uint *)(*(code *)PTR___gmpn_gcd_subdiv_step_00097118)(param_2);\n  }\n  else {\n    uVar16 = param_2[(int)param_1 + -2];\n    uVar23 = param_3[(int)param_1 + -2];\n    if (-1 < (int)uVar3) {\n      if (uVar3 < 0x10000) {\n        iVar9 = 0x18;\n        if (uVar3 < 0x100) {\n          iVar9 = 0;\n        }\n        iVar24 = 9;\n        if (uVar3 < 0x100) {\n          iVar24 = 1;\n        }\n      }\n      else {\n        iVar9 = 8;\n        if (uVar3 < 0x1000000) {\n          iVar9 = 0x10;\n        }\n        iVar24 = 0x19;\n        if (uVar3 < 0x1000000) {\n          iVar24 = 0x11;\n        }\n      }\n      uVar3 = iVar9 - (uint)(byte)PTR___gmpn_clz_tab_0009718c[uVar3 >> iVar24];\n      uVar10 = 0x20 - uVar3;\n      uVar13 = uVar13 << (uVar3 & 0x1f) | uVar16 >> (uVar10 & 0x1f);\n      uVar16 = param_2[(int)param_1 + -3] >> (uVar10 & 0x1f) | uVar16 << (uVar3 & 0x1f);\n      uVar20 = uVar20 << (uVar3 & 0x1f) | uVar23 >> (uVar10 & 0x1f);\n      uVar23 = param_3[(int)param_1 + -3] >> (uVar10 & 0x1f) | uVar23 << (uVar3 & 0x1f);\n    }\n    unaff_s5 = auStack_3c;\n    local_58 = (uint *)unaff_s5;\n    iVar9 = (*(code *)PTR___gmpn_hgcd2_00097460)(uVar13,uVar16,uVar20,uVar23);\n    if (iVar9 == 0) goto LAB_00052b18;\nLAB_00052bb8:\n    unaff_s5 = auStack_3c;\n    (*(code *)PTR___gmpn_hgcd_matrix_mul_1_000973f4)(param_5,unaff_s5,param_6);\n    if (param_1 != (uint *)0x0) {\n      iVar9 = (int)param_1 + -1;\n      uVar3 = *param_2;\n      if (iVar9 == 0) {\n        *param_6 = uVar3;\n        puVar28 = param_6;\n      }\n      else {\n        puVar28 = param_6;\n        puVar29 = param_2 + 1;\n        do {\n          *puVar28 = uVar3;\n          iVar9 = iVar9 + -1;\n          uVar3 = *puVar29;\n          puVar28 = puVar28 + 1;\n          puVar29 = puVar29 + 1;\n        } while (iVar9 != 0);\n        param_6[(int)param_1 + -1] = uVar3;\n        puVar28 = param_6 + (int)param_1 + -1;\n      }\n    }\n    puVar29 = param_2;\n    puVar25 = param_6;\n    puVar18 = param_3;\n    local_58 = param_1;\n    puVar4 = (uint *)(*(code *)PTR___gmpn_matrix22_mul1_inverse_vector_00097488)(unaff_s5);\n  }\n  if (local_2c == *(uint **)puVar2) {\n    return puVar4;\n  }\n  uVar39 = 0x52c64;\n  puVar4 = local_2c;\n  puVar33 = PTR___stack_chk_fail_000974d0;\n  (*(code *)PTR___stack_chk_fail_000974d0)();\n  iVar9 = local_54;\n  apuStack_a8[0] = (uint *)(puVar33 + 0x4c3d0);\n  puVar36 = auStack_c0;\n  iStack_70 = param_5;\n  piVar30 = *(int **)(puVar33 + 0x448d0);\n  iVar24 = (int)puVar18 + local_54;\n  puStack_74 = param_6;\n  puStack_8c = puVar2;\n  iStack_98 = 0;\n  iStack_94 = *piVar30;\n  puStack_90 = puVar28;\n  puStack_88 = param_2;\n  puStack_84 = param_3;\n  puStack_80 = param_1;\n  puStack_7c = unaff_s5;\n  puStack_78 = param_4;\n  uStack_6c = uVar39;\n  if ((uint)(iVar24 * 4) < 0x7f01) {\n    iVar32 = -(iVar24 * 4 + 7U & 0xfffffff8);\n    puVar36 = auStack_c0 + iVar32;\n    puVar19 = (uint *)((int)apuStack_a8 + iVar32);\n    puVar28 = local_58;\n  }\n  else {\n    apuStack_a8[3] = local_58;\n    puVar19 = (uint *)(**(code **)(puVar33 + 0x44680))(&iStack_98);\n    puVar28 = apuStack_a8[3];\n  }\n  pcVar34 = (code *)apuStack_a8[0][-0x1f63];\n  *(int *)(puVar36 + 0x10) = iVar9;\n  puVar17 = puVar25;\n  puVar21 = puVar18;\n  (*pcVar34)(puVar19);\n  puVar31 = (uint *)(iVar24 - (uint)((int)puVar29 < iVar24));\n  if (((puVar31 != (uint *)0x0) &&\n      (puVar17 = puVar4, puVar21 = puVar19, puVar28 = puVar31,\n      iVar24 = (*(code *)apuStack_a8[0][-0x1ecb])(puVar4), iVar24 != 0)) &&\n     ((int)puVar31 < (int)puVar29)) {\n    puVar14 = puVar4 + (int)puVar31;\n    uVar3 = *puVar14;\n    puVar17 = (uint *)(uVar3 - 1);\n    *puVar14 = (uint)puVar17;\n    puVar5 = puVar31;\n    while ((uVar3 == 0 && (puVar5 = (uint *)((int)puVar5 + 1), puVar29 != puVar5))) {\n      uVar3 = puVar14[1];\n      puVar14 = puVar14 + 1;\n      puVar17 = (uint *)(uVar3 - 1);\n      *puVar14 = (uint)puVar17;\n    }\n  }\n  if (iStack_98 != 0) {\n    (*(code *)apuStack_a8[0][-0x1e8b])();\n  }\n  puVar5 = puVar29;\n  if (((int)puVar18 < (int)puVar29) && (puVar4[(int)puVar29 + -1] == 0)) {\n    puVar14 = puVar4 + (int)puVar29;\n    do {\n      puVar29 = (uint *)((int)puVar29 + -1);\n      puVar5 = puVar18;\n      if (puVar18 == puVar29) break;\n      puVar1 = puVar14 + -2;\n      puVar5 = puVar29;\n      puVar14 = puVar14 + -1;\n    } while (*puVar1 == 0);\n  }\n  pcVar34 = (code *)apuStack_a8[0][-0x1edc];\n  if (iStack_94 == *piVar30) {\n    return puVar5;\n  }\n  uVar39 = 0x52e68;\n  iVar24 = iStack_94;\n  (*pcVar34)();\n  puVar38 = puVar36 + -0x88;\n  puVar37 = puVar36 + -0x88;\n  puVar6 = *(undefined4 **)(pcVar34 + 0x446d8);\n  *(undefined1 **)(puVar36 + -8) = auStack_c0;\n  *(uint **)(puVar36 + -0x10) = puVar19;\n  *(undefined4 **)(puVar36 + -0x4c) = puVar6;\n  *(uint **)(puVar36 + -0x20) = puVar18;\n  *(uint **)(puVar36 + -0x24) = puVar4;\n  *(uint **)(puVar36 + -0x28) = puVar29;\n  *(undefined4 *)(puVar36 + -4) = uVar39;\n  *(uint **)(puVar36 + -0xc) = puVar25;\n  *(int *)(puVar36 + -0x14) = iVar9;\n  *(uint **)(puVar36 + -0x18) = puVar31;\n  *(int **)(puVar36 + -0x1c) = piVar30;\n  *(code **)(puVar36 + -0x68) = pcVar34 + 0x4c1d8;\n  *(undefined4 *)(puVar36 + -0x2c) = *puVar6;\n  puVar29 = puVar28;\n  puVar25 = puVar28;\n  if (0 < (int)puVar28) {\n    if (puVar17[(int)((int)puVar28 + -1)] == 0) {\n      puVar18 = puVar17 + (int)puVar28;\n      do {\n        puVar25 = (uint *)((int)puVar25 + -1);\n        if (puVar25 == (uint *)0x0) break;\n        puVar4 = puVar18 + -2;\n        puVar18 = puVar18 + -1;\n      } while (*puVar4 == 0);\n    }\n    if (puVar21[(int)((int)puVar28 + -1)] == 0) {\n      puVar18 = puVar21 + (int)puVar28;\n      do {\n        puVar29 = (uint *)((int)puVar29 + -1);\n        if (puVar29 == (uint *)0x0) break;\n        puVar4 = puVar18 + -2;\n        puVar18 = puVar18 + -1;\n      } while (*puVar4 == 0);\n    }\n  }\n  iVar32 = *(int *)(iVar24 + 4);\n  iVar9 = 8;\n  do {\n    iVar22 = iVar9 + -8;\n    do {\n      iVar12 = iVar32;\n      if (0 < iVar32) {\n        iVar7 = *(int *)(iVar24 + iVar22 + 8);\n        iVar11 = *(int *)(iVar7 + iVar32 * 4 + -4);\n        iVar7 = iVar7 + iVar32 * 4;\n        while (iVar11 == 0) {\n          iVar12 = iVar12 + -1;\n          if (iVar12 == 0) break;\n          iVar11 = *(int *)(iVar7 + -8);\n          iVar7 = iVar7 + -4;\n        }\n      }\n      iVar7 = iVar22 + -0x3c;\n      iVar22 = iVar22 + 4;\n      *(int *)(puVar36 + iVar7) = iVar12;\n    } while (iVar9 != iVar22);\n    iVar9 = iVar9 + 8;\n    iVar22 = *(int *)(puVar36 + -0x34);\n  } while (iVar9 != 0x18);\n  iVar9 = *(int *)(puVar36 + -0x38);\n  *(undefined4 *)(puVar36 + -0x40) = 0;\n  if (iVar9 == 0) {\n    uVar39 = *(undefined4 *)(iVar24 + 0x10);\n    *(int *)(puVar36 + -0x74) = iVar22;\n    *(undefined4 *)(puVar36 + -0x78) = uVar39;\n    puVar28 = puVar21;\n    puVar18 = puVar29;\n    puVar4 = puVar17;\nLAB_0005309c:\n    puVar29 = (uint *)FUN_00052c70(puVar28,puVar18,puVar4,puVar25);\n    iVar9 = *(int *)(puVar36 + -0x68);\nLAB_000530b4:\n    pcVar34 = *(code **)(iVar9 + -0x7a2c);\n    puVar38 = puVar37;\n    if (*(int *)(puVar36 + -0x40) != 0) goto LAB_00053478;\n  }\n  else {\n    if (iVar22 == 0) {\n      uVar39 = *(undefined4 *)(iVar24 + 0xc);\n      *(int *)(puVar36 + -0x74) = iVar9;\n      *(undefined4 *)(puVar36 + -0x78) = uVar39;\n      puVar28 = puVar17;\n      puVar18 = puVar25;\n      puVar4 = puVar21;\n      puVar25 = puVar29;\n      goto LAB_0005309c;\n    }\n    iVar7 = *(int *)(puVar36 + -0x30);\n    pcVar34 = *(code **)(pcVar34 + 0x4454c);\n    iVar12 = (int)puVar25 - *(int *)(puVar36 + -0x3c);\n    *(int *)(puVar36 + -0x50) = *(int *)(puVar36 + -0x3c);\n    *(int *)(puVar36 + -0x44) = iVar9;\n    if ((int)puVar29 - iVar22 <= iVar12) {\n      iVar12 = (int)puVar29 - iVar22;\n    }\n    iVar11 = (int)puVar25 - iVar9;\n    if ((int)puVar29 - iVar7 <= (int)puVar25 - iVar9) {\n      iVar11 = (int)puVar29 - iVar7;\n    }\n    puVar29 = (uint *)(iVar11 + 1);\n    if (iVar11 + 1 <= iVar12 + 1) {\n      puVar29 = (uint *)(iVar12 + 1);\n    }\n    puVar25 = (uint *)(*pcVar34)((int)puVar29 + 1);\n    iVar9 = (int)puVar25 >> 1;\n    iVar12 = *(int *)(puVar36 + -0x68);\n    uVar39 = *(undefined4 *)(puVar36 + -0x44);\n    if (iVar9 < (int)puVar25) {\n      if (iVar32 <= iVar9) {\n        uVar13 = ((int)puVar25 * 3 + iVar9 + 4) * 4;\n        uVar3 = uVar13 + 7;\n        if (0x7f00 < uVar13) {\n          pcVar34 = *(code **)(iVar12 + -0x7d50);\n          goto LAB_0005305c;\n        }\n        goto LAB_00053148;\n      }\n      uVar13 = ((int)puVar25 * 4 + 4) * 4;\n      uVar3 = uVar13 + 7;\n      if (uVar13 < 0x7f01) goto LAB_00053148;\n      pcVar34 = *(code **)(iVar12 + -0x7d50);\nLAB_0005305c:\n      *(uint **)(puVar36 + -0x48) = puVar25;\n      *(undefined4 *)(puVar36 + -0x44) = uVar39;\n      puVar4 = (uint *)(*pcVar34)(puVar36 + -0x40);\n      iVar12 = *(int *)(puVar36 + -0x68);\n      puVar25 = *(uint **)(puVar36 + -0x48);\n      uVar39 = *(undefined4 *)(puVar36 + -0x44);\n    }\n    else {\n      uVar3 = ((int)puVar25 * 3 + 4) * 4;\n      pcVar34 = *(code **)(iVar12 + -0x7d50);\n      if (0x7f00 < uVar3) goto LAB_0005305c;\n      uVar3 = uVar3 + 7;\nLAB_00053148:\n      puVar38 = puVar36 + -(uVar3 & 0xfffffff8) + -0x88;\n      puVar4 = (uint *)(puVar36 + -(uVar3 & 0xfffffff8) + -0x68);\n    }\n    *(uint **)(puVar36 + -0x44) = puVar4 + (int)puVar25;\n    *(uint **)(puVar36 + -0x48) = puVar4 + (int)puVar25 + (int)puVar25;\n    if ((int)puVar25 < (int)puVar28) {\n      pcVar34 = *(code **)(iVar12 + -0x7d0c);\n      puVar18 = (uint *)((int)puVar28 - (int)puVar25);\n      *(undefined4 *)(puVar36 + -0x5c) = uVar39;\n      *(uint **)(puVar36 + -0x58) = puVar25;\n      *(int *)(puVar36 + -0x54) = (int)puVar25 * 4;\n      iVar9 = (*pcVar34)(puVar17,puVar17,puVar17 + (int)puVar25,puVar18);\n      iVar12 = *(int *)(puVar36 + -0x68);\n      iVar32 = *(int *)(puVar36 + -0x54);\n      puVar28 = *(uint **)(puVar36 + -0x58);\n      uVar39 = *(undefined4 *)(puVar36 + -0x5c);\n      if (iVar9 == 0) {\nLAB_0005359c:\n        pcVar34 = *(code **)(iVar12 + -0x7d0c);\n      }\n      else {\n        puVar25 = puVar17;\n        if ((int)puVar28 <= (int)puVar18) {\nLAB_00053588:\n          do {\n            uVar3 = *puVar25;\n            *puVar25 = uVar3 + 1;\n            puVar25 = puVar25 + 1;\n          } while (uVar3 + 1 == 0);\n          goto LAB_0005359c;\n        }\n        puVar31 = puVar17 + (int)puVar18;\n        uVar3 = *puVar31;\n        *puVar31 = uVar3 + 1;\n        puVar19 = puVar18;\n        if (uVar3 + 1 == 0) {\n          do {\n            puVar19 = (uint *)((int)puVar19 + 1);\n            if (puVar28 == puVar19) goto LAB_00053588;\n            uVar3 = puVar31[1];\n            puVar31 = puVar31 + 1;\n            *puVar31 = uVar3 + 1;\n          } while (uVar3 + 1 == 0);\n          goto LAB_0005359c;\n        }\n        pcVar34 = *(code **)(iVar12 + -0x7d0c);\n      }\n      *(uint **)(puVar36 + -0x58) = puVar28;\n      *(undefined4 *)(puVar36 + -0x54) = uVar39;\n      iVar9 = (*pcVar34)(puVar21,puVar21,(int)puVar21 + iVar32,puVar18);\n      iVar12 = *(int *)(puVar36 + -0x68);\n      uVar39 = *(undefined4 *)(puVar36 + -0x54);\n      puVar25 = *(uint **)(puVar36 + -0x58);\n      puVar28 = puVar25;\n      if (iVar9 != 0) {\n        puVar19 = puVar21;\n        if ((int)puVar18 < (int)puVar25) {\n          puVar31 = puVar21 + (int)puVar18;\n          uVar3 = *puVar31 + 1;\n          *puVar31 = uVar3;\n          while (uVar3 == 0) {\n            puVar18 = (uint *)((int)puVar18 + 1);\n            if (puVar25 == puVar18) goto LAB_0005361c;\n            puVar5 = puVar31 + 1;\n            puVar31 = puVar31 + 1;\n            uVar3 = *puVar5 + 1;\n            *puVar31 = uVar3;\n          }\n        }\n        else {\nLAB_0005361c:\n          do {\n            uVar3 = *puVar19;\n            *puVar19 = uVar3 + 1;\n            puVar19 = puVar19 + 1;\n          } while (uVar3 + 1 == 0);\n        }\n      }\n    }\n    uVar8 = *(undefined4 *)(iVar24 + 0x14);\n    pcVar34 = *(code **)(iVar12 + -0x7cd8);\n    *(undefined4 *)(puVar36 + -0x5c) = uVar39;\n    *(uint **)(puVar36 + -0x54) = puVar25;\n    *(undefined4 *)(puVar38 + 0x18) = *(undefined4 *)(puVar36 + -0x48);\n    *(undefined4 *)(puVar38 + 0x10) = uVar8;\n    *(int *)(puVar38 + 0x14) = iVar7;\n    (*pcVar34)(puVar4,puVar25,puVar17,puVar28);\n    uVar39 = *(undefined4 *)(iVar24 + 0xc);\n    uVar26 = *(undefined4 *)(puVar36 + -0x54);\n    uVar27 = *(undefined4 *)(puVar36 + -0x5c);\n    uVar8 = *(undefined4 *)(puVar36 + -0x48);\n    pcVar34 = *(code **)(*(int *)(puVar36 + -0x68) + -0x7cd8);\n    uVar15 = *(undefined4 *)(puVar36 + -0x44);\n    *(undefined4 *)(puVar36 + -0x58) = uVar26;\n    *(undefined4 *)(puVar38 + 0x14) = uVar27;\n    *(undefined4 *)(puVar36 + -0x54) = uVar27;\n    *(undefined4 *)(puVar38 + 0x10) = uVar39;\n    *(undefined4 *)(puVar38 + 0x18) = uVar8;\n    (*pcVar34)(uVar15,uVar26,puVar21,puVar28);\n    iVar9 = *(int *)(puVar36 + -0x58);\n    iVar12 = *(int *)(puVar36 + -0x68);\n    iVar32 = *(int *)(puVar36 + -0x54);\n    if ((iVar7 + (int)puVar28 < iVar9) && (iVar7 != iVar9 - (int)puVar28)) {\n      iVar11 = (iVar9 - (int)puVar28) - iVar7;\n      puVar25 = puVar4 + (int)(iVar7 + (int)puVar28);\n      do {\n        iVar11 = iVar11 + -1;\n        *puVar25 = 0;\n        puVar25 = puVar25 + 1;\n      } while (iVar11 != 0);\n    }\n    pcVar34 = *(code **)(iVar12 + -0x7b2c);\n    if (iVar32 + (int)puVar28 < iVar9) {\n      if (iVar32 != iVar9 - (int)puVar28) {\n        iVar7 = (iVar9 - (int)puVar28) - iVar32;\n        puVar6 = (undefined4 *)(*(int *)(puVar36 + -0x44) + (int)(iVar32 + (int)puVar28) * 4);\n        do {\n          iVar7 = iVar7 + -1;\n          *puVar6 = 0;\n          puVar6 = puVar6 + 1;\n        } while (iVar7 != 0);\n        pcVar34 = *(code **)(iVar12 + -0x7b2c);\n      }\n    }\n    *(int *)(puVar36 + -0x54) = iVar9;\n    uVar3 = (*pcVar34)(puVar4,puVar4,*(undefined4 *)(puVar36 + -0x44),iVar9);\n    uVar13 = *puVar4;\n    iVar9 = *(int *)(puVar36 + -0x68);\n    uVar39 = *(undefined4 *)(puVar36 + -0x54);\n    *puVar4 = uVar13 - uVar3;\n    puVar25 = puVar4;\n    if (uVar13 < uVar3) {\n      do {\n        puVar25 = puVar25 + 1;\n        uVar3 = *puVar25;\n        *puVar25 = uVar3 - 1;\n      } while (uVar3 == 0);\n    }\n    uVar8 = *(undefined4 *)(iVar24 + 0x10);\n    pcVar34 = *(code **)(iVar9 + -0x7cd8);\n    uVar15 = *(undefined4 *)(puVar36 + -0x44);\n    *(undefined4 *)(puVar36 + -0x54) = uVar39;\n    *(undefined4 *)(puVar38 + 0x18) = *(undefined4 *)(puVar36 + -0x48);\n    *(int *)(puVar38 + 0x14) = iVar22;\n    *(undefined4 *)(puVar38 + 0x10) = uVar8;\n    (*pcVar34)(uVar15,uVar39,puVar17,puVar28);\n    iVar9 = *(int *)(puVar36 + -0x68);\n    uVar39 = *(undefined4 *)(puVar36 + -0x54);\n    if (puVar29 != (uint *)0x0) {\n      iVar32 = (int)puVar29 + -1;\n      uVar3 = *puVar4;\n      puVar18 = puVar17;\n      puVar25 = puVar4;\n      if (iVar32 == 0) {\n        *puVar17 = uVar3;\n      }\n      else {\n        do {\n          *puVar18 = uVar3;\n          iVar32 = iVar32 + -1;\n          uVar3 = puVar25[1];\n          puVar18 = puVar18 + 1;\n          puVar25 = puVar25 + 1;\n        } while (iVar32 != 0);\n        puVar17[(int)puVar29 + -1] = uVar3;\n      }\n    }\n    uVar8 = *(undefined4 *)(iVar24 + 8);\n    pcVar34 = *(code **)(iVar9 + -0x7cd8);\n    *(undefined4 *)(puVar38 + 0x18) = *(undefined4 *)(puVar36 + -0x48);\n    *(undefined4 *)(puVar36 + -0x48) = uVar39;\n    *(undefined4 *)(puVar38 + 0x10) = uVar8;\n    *(undefined4 *)(puVar38 + 0x14) = *(undefined4 *)(puVar36 + -0x50);\n    (*pcVar34)(puVar4,uVar39,puVar21,puVar28);\n    iVar9 = *(int *)(puVar36 + -0x48);\n    iVar32 = *(int *)(puVar36 + -0x68);\n    if ((int)puVar28 + iVar22 < iVar9) {\n      if (iVar22 != iVar9 - (int)puVar28) {\n        iVar12 = (iVar9 - (int)puVar28) - iVar22;\n        puVar6 = (undefined4 *)(*(int *)(puVar36 + -0x44) + (int)((int)puVar28 + iVar22) * 4);\n        do {\n          iVar12 = iVar12 + -1;\n          *puVar6 = 0;\n          puVar6 = puVar6 + 1;\n        } while (iVar12 != 0);\n      }\n    }\n    pcVar34 = *(code **)(iVar32 + -0x7b2c);\n    if (*(int *)(puVar36 + -0x50) + (int)puVar28 < iVar9) {\n      if (*(int *)(puVar36 + -0x50) != iVar9 - (int)puVar28) {\n        iVar22 = (iVar9 - (int)puVar28) - *(int *)(puVar36 + -0x50);\n        puVar28 = puVar4 + (int)(*(int *)(puVar36 + -0x50) + (int)puVar28);\n        do {\n          iVar22 = iVar22 + -1;\n          *puVar28 = 0;\n          puVar28 = puVar28 + 1;\n        } while (iVar22 != 0);\n        pcVar34 = *(code **)(iVar32 + -0x7b2c);\n      }\n    }\n    uVar3 = (*pcVar34)(puVar4,puVar4,*(undefined4 *)(puVar36 + -0x44),iVar9);\n    uVar13 = *puVar4;\n    iVar9 = *(int *)(puVar36 + -0x68);\n    puVar18 = (uint *)(uVar13 - uVar3);\n    *puVar4 = (uint)puVar18;\n    puVar28 = puVar4;\n    if (uVar13 < uVar3) {\n      do {\n        puVar28 = puVar28 + 1;\n        uVar3 = *puVar28;\n        puVar18 = (uint *)(uVar3 - 1);\n        *puVar28 = (uint)puVar18;\n      } while (uVar3 == 0);\n    }\n    iVar32 = (int)puVar29 + -1;\n    if (puVar29 == (uint *)0x0) {\n      iVar32 = -4;\n    }\n    else {\n      puVar18 = (uint *)*puVar4;\n      puVar28 = puVar21;\n      if (iVar32 != 0) {\n        do {\n          puVar4 = puVar4 + 1;\n          *puVar28 = (uint)puVar18;\n          iVar32 = iVar32 + -1;\n          puVar18 = (uint *)*puVar4;\n          puVar28 = puVar28 + 1;\n        } while (iVar32 != 0);\n        puVar28 = puVar21 + (int)puVar29 + -1;\n      }\n      *puVar28 = (uint)puVar18;\n      iVar32 = (int)puVar29 * 4 + -4;\n    }\n    puVar37 = puVar38;\n    if (*(int *)((int)puVar17 + iVar32) != 0 || *(int *)((int)puVar21 + iVar32) != 0)\n    goto LAB_000530b4;\n    puVar17 = puVar17 + (int)puVar29 + -2;\n    puVar21 = puVar21 + (int)puVar29 + -2;\n    do {\n      uVar3 = *puVar17;\n      puVar29 = (uint *)((int)puVar29 + -1);\n      uVar13 = *puVar21;\n      puVar17 = puVar17 + -1;\n      puVar21 = puVar21 + -1;\n    } while (uVar3 == 0 && uVar13 == 0);\n    piVar30 = *(int **)(puVar36 + -0x4c);\n    if (*(int *)(puVar36 + -0x40) == 0) goto LAB_000530c4;\n    pcVar34 = *(code **)(iVar9 + -0x7a2c);\nLAB_00053478:\n    (*pcVar34)();\n    iVar9 = *(int *)(puVar36 + -0x68);\n    puVar38 = puVar37;\n  }\n  piVar30 = *(int **)(puVar36 + -0x4c);\nLAB_000530c4:\n  iVar32 = *(int *)(puVar36 + -0x2c);\n  pcVar34 = *(code **)(iVar9 + -0x7b70);\n  if (iVar32 == *piVar30) {\n    return puVar29;\n  }\n  pcVar40 = __gmpn_hgcd_reduce_itch;\n  (*pcVar34)();\n  pcVar35 = *(code **)(pcVar34 + 0x43e08);\n  *(uint **)(puVar38 + -0xc) = puVar21;\n  *(int *)(puVar38 + -8) = iVar24;\n  *(uint **)(puVar38 + -0x10) = puVar17;\n  *(code **)(puVar38 + -0x18) = pcVar34 + 0x4b9e4;\n  *(code **)(puVar38 + -4) = pcVar40;\n  puVar28 = (uint *)(*pcVar35)(iVar32 - (int)puVar18);\n  if (999 < iVar32) {\n    return (uint *)((iVar32 - (int)puVar18) * 2 + (int)puVar28);\n  }\n  puVar18 = (uint *)((int)puVar18 + iVar32 + -1);\n  if ((int)puVar28 <= (int)puVar18) {\n    puVar28 = puVar18;\n  }\n  return puVar28;\n}" { (declaration "uint *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "undefined *puVar2;" type_identifier (pointer_declarator "*puVar2" * identifier) ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "uint *puVar4;" type_identifier (pointer_declarator "*puVar4" * identifier) ;) (declaration "uint *puVar5;" type_identifier (pointer_declarator "*puVar5" * identifier) ;) (declaration "undefined4 *puVar6;" type_identifier (pointer_declarator "*puVar6" * identifier) ;) (declaration "int iVar7;" primitive_type identifier ;) (declaration "undefined4 uVar8;" type_identifier identifier ;) (declaration "int iVar9;" primitive_type identifier ;) (declaration "uint uVar10;" type_identifier identifier ;) (declaration "int iVar11;" primitive_type identifier ;) (declaration "int iVar12;" primitive_type identifier ;) (declaration "uint uVar13;" type_identifier identifier ;) (declaration "uint *puVar14;" type_identifier (pointer_declarator "*puVar14" * identifier) ;) (declaration "undefined4 uVar15;" type_identifier identifier ;) (declaration "uint uVar16;" type_identifier identifier ;) (declaration "uint *puVar17;" type_identifier (pointer_declarator "*puVar17" * identifier) ;) (declaration "uint *puVar18;" type_identifier (pointer_declarator "*puVar18" * identifier) ;) (declaration "uint *puVar19;" type_identifier (pointer_declarator "*puVar19" * identifier) ;) (declaration "uint uVar20;" type_identifier identifier ;) (declaration "uint *puVar21;" type_identifier (pointer_declarator "*puVar21" * identifier) ;) (declaration "int iVar22;" primitive_type identifier ;) (declaration "uint uVar23;" type_identifier identifier ;) (declaration "int iVar24;" primitive_type identifier ;) (declaration "uint *puVar25;" type_identifier (pointer_declarator "*puVar25" * identifier) ;) (declaration "undefined4 uVar26;" type_identifier identifier ;) (declaration "undefined4 uVar27;" type_identifier identifier ;) (declaration "uint *puVar28;" type_identifier (pointer_declarator "*puVar28" * identifier) ;) (declaration "uint *puVar29;" type_identifier (pointer_declarator "*puVar29" * identifier) ;) (declaration "int *piVar30;" primitive_type (pointer_declarator "*piVar30" * identifier) ;) (declaration "uint *puVar31;" type_identifier (pointer_declarator "*puVar31" * identifier) ;) (declaration "int iVar32;" primitive_type identifier ;) (declaration "undefined1 *unaff_s5;" type_identifier (pointer_declarator "*unaff_s5" * identifier) ;) (declaration "undefined *puVar33;" type_identifier (pointer_declarator "*puVar33" * identifier) ;) (declaration "code *pcVar34;" type_identifier (pointer_declarator "*pcVar34" * identifier) ;) (declaration "code *pcVar35;" type_identifier (pointer_declarator "*pcVar35" * identifier) ;) (declaration "undefined1 *puVar36;" type_identifier (pointer_declarator "*puVar36" * identifier) ;) (declaration "undefined1 *puVar37;" type_identifier (pointer_declarator "*puVar37" * identifier) ;) (declaration "undefined1 *puVar38;" type_identifier (pointer_declarator "*puVar38" * identifier) ;) (declaration "undefined4 uVar39;" type_identifier identifier ;) (declaration "code *pcVar40;" type_identifier (pointer_declarator "*pcVar40" * identifier) ;) (declaration "undefined1 auStack_c0 [24];" type_identifier (array_declarator "auStack_c0 [24]" identifier [ number_literal ]) ;) (declaration "uint *apuStack_a8 [4];" type_identifier (pointer_declarator "*apuStack_a8 [4]" * (array_declarator "apuStack_a8 [4]" identifier [ number_literal ])) ;) (declaration "int iStack_98;" primitive_type identifier ;) (declaration "int iStack_94;" primitive_type identifier ;) (declaration "uint *puStack_90;" type_identifier (pointer_declarator "*puStack_90" * identifier) ;) (declaration "undefined *puStack_8c;" type_identifier (pointer_declarator "*puStack_8c" * identifier) ;) (declaration "uint *puStack_88;" type_identifier (pointer_declarator "*puStack_88" * identifier) ;) (declaration "uint *puStack_84;" type_identifier (pointer_declarator "*puStack_84" * identifier) ;) (declaration "uint *puStack_80;" type_identifier (pointer_declarator "*puStack_80" * identifier) ;) (declaration "undefined1 *puStack_7c;" type_identifier (pointer_declarator "*puStack_7c" * identifier) ;) (declaration "uint *puStack_78;" type_identifier (pointer_declarator "*puStack_78" * identifier) ;) (declaration "uint *puStack_74;" type_identifier (pointer_declarator "*puStack_74" * identifier) ;) (declaration "int iStack_70;" primitive_type identifier ;) (declaration "undefined4 uStack_6c;" type_identifier identifier ;) (declaration "uint *local_58;" type_identifier (pointer_declarator "*local_58" * identifier) ;) (declaration "int local_54;" primitive_type identifier ;) (declaration "uint *local_50;" type_identifier (pointer_declarator "*local_50" * identifier) ;) (declaration "undefined1 auStack_3c [16];" type_identifier (array_declarator "auStack_3c [16]" identifier [ number_literal ]) ;) (declaration "uint *local_2c;" type_identifier (pointer_declarator "*local_2c" * identifier) ;) (expression_statement "puVar2 = PTR___stack_chk_guard_00097540;" (assignment_expression "puVar2 = PTR___stack_chk_guard_00097540" identifier = identifier) ;) (expression_statement "puVar28 = (uint *)((int)param_1 * 4 + -4);" (assignment_expression "puVar28 = (uint *)((int)param_1 * 4 + -4)" identifier = (cast_expression "(uint *)((int)param_1 * 4 + -4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_1 * 4 + -4)" ( (binary_expression "(int)param_1 * 4 + -4" (binary_expression "(int)param_1 * 4" (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal) + number_literal) )))) ;) (expression_statement "local_2c = *(uint **)PTR___stack_chk_guard_00097540;" (assignment_expression "local_2c = *(uint **)PTR___stack_chk_guard_00097540" identifier = (pointer_expression "*(uint **)PTR___stack_chk_guard_00097540" * (cast_expression "(uint **)PTR___stack_chk_guard_00097540" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) ;) (expression_statement "uVar20 = param_3[(int)param_1 + -1];" (assignment_expression "uVar20 = param_3[(int)param_1 + -1]" identifier = (subscript_expression "param_3[(int)param_1 + -1]" identifier [ (binary_expression "(int)param_1 + -1" (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ])) ;) (expression_statement "uVar13 = param_2[(int)param_1 + -1];" (assignment_expression "uVar13 = param_2[(int)param_1 + -1]" identifier = (subscript_expression "param_2[(int)param_1 + -1]" identifier [ (binary_expression "(int)param_1 + -1" (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ])) ;) (expression_statement "uVar3 = uVar13 | uVar20;" (assignment_expression "uVar3 = uVar13 | uVar20" identifier = (binary_expression "uVar13 | uVar20" identifier | identifier)) ;) (if_statement "if ((uint *)((int)param_4 + 1) == param_1) {\n    if (3 < uVar3) {\n      unaff_s5 = auStack_3c;\n      local_58 = (uint *)unaff_s5;\n      iVar9 = (*(code *)PTR___gmpn_hgcd2_00097460)\n                        (uVar13,param_2[(int)param_1 + -2],uVar20,param_3[(int)param_1 + -2]);\n      if (iVar9 != 0) goto LAB_00052bb8;\n    }\nLAB_00052b18:\n    local_50 = param_6;\n    local_58 = (uint *)(PTR_LAB_0009707c + 0x2960);\n    local_54 = param_5;\n    puVar29 = param_3;\n    puVar25 = param_1;\n    puVar18 = param_4;\n    puVar4 = (uint *)(*(code *)PTR___gmpn_gcd_subdiv_step_00097118)(param_2);\n  }\n  else {\n    uVar16 = param_2[(int)param_1 + -2];\n    uVar23 = param_3[(int)param_1 + -2];\n    if (-1 < (int)uVar3) {\n      if (uVar3 < 0x10000) {\n        iVar9 = 0x18;\n        if (uVar3 < 0x100) {\n          iVar9 = 0;\n        }\n        iVar24 = 9;\n        if (uVar3 < 0x100) {\n          iVar24 = 1;\n        }\n      }\n      else {\n        iVar9 = 8;\n        if (uVar3 < 0x1000000) {\n          iVar9 = 0x10;\n        }\n        iVar24 = 0x19;\n        if (uVar3 < 0x1000000) {\n          iVar24 = 0x11;\n        }\n      }\n      uVar3 = iVar9 - (uint)(byte)PTR___gmpn_clz_tab_0009718c[uVar3 >> iVar24];\n      uVar10 = 0x20 - uVar3;\n      uVar13 = uVar13 << (uVar3 & 0x1f) | uVar16 >> (uVar10 & 0x1f);\n      uVar16 = param_2[(int)param_1 + -3] >> (uVar10 & 0x1f) | uVar16 << (uVar3 & 0x1f);\n      uVar20 = uVar20 << (uVar3 & 0x1f) | uVar23 >> (uVar10 & 0x1f);\n      uVar23 = param_3[(int)param_1 + -3] >> (uVar10 & 0x1f) | uVar23 << (uVar3 & 0x1f);\n    }\n    unaff_s5 = auStack_3c;\n    local_58 = (uint *)unaff_s5;\n    iVar9 = (*(code *)PTR___gmpn_hgcd2_00097460)(uVar13,uVar16,uVar20,uVar23);\n    if (iVar9 == 0) goto LAB_00052b18;\nLAB_00052bb8:\n    unaff_s5 = auStack_3c;\n    (*(code *)PTR___gmpn_hgcd_matrix_mul_1_000973f4)(param_5,unaff_s5,param_6);\n    if (param_1 != (uint *)0x0) {\n      iVar9 = (int)param_1 + -1;\n      uVar3 = *param_2;\n      if (iVar9 == 0) {\n        *param_6 = uVar3;\n        puVar28 = param_6;\n      }\n      else {\n        puVar28 = param_6;\n        puVar29 = param_2 + 1;\n        do {\n          *puVar28 = uVar3;\n          iVar9 = iVar9 + -1;\n          uVar3 = *puVar29;\n          puVar28 = puVar28 + 1;\n          puVar29 = puVar29 + 1;\n        } while (iVar9 != 0);\n        param_6[(int)param_1 + -1] = uVar3;\n        puVar28 = param_6 + (int)param_1 + -1;\n      }\n    }\n    puVar29 = param_2;\n    puVar25 = param_6;\n    puVar18 = param_3;\n    local_58 = param_1;\n    puVar4 = (uint *)(*(code *)PTR___gmpn_matrix22_mul1_inverse_vector_00097488)(unaff_s5);\n  }" if (parenthesized_expression "((uint *)((int)param_4 + 1) == param_1)" ( (binary_expression "(uint *)((int)param_4 + 1) == param_1" (cast_expression "(uint *)((int)param_4 + 1)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_4 + 1)" ( (binary_expression "(int)param_4 + 1" (cast_expression "(int)param_4" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))) == identifier) )) (compound_statement "{\n    if (3 < uVar3) {\n      unaff_s5 = auStack_3c;\n      local_58 = (uint *)unaff_s5;\n      iVar9 = (*(code *)PTR___gmpn_hgcd2_00097460)\n                        (uVar13,param_2[(int)param_1 + -2],uVar20,param_3[(int)param_1 + -2]);\n      if (iVar9 != 0) goto LAB_00052bb8;\n    }\nLAB_00052b18:\n    local_50 = param_6;\n    local_58 = (uint *)(PTR_LAB_0009707c + 0x2960);\n    local_54 = param_5;\n    puVar29 = param_3;\n    puVar25 = param_1;\n    puVar18 = param_4;\n    puVar4 = (uint *)(*(code *)PTR___gmpn_gcd_subdiv_step_00097118)(param_2);\n  }" { (if_statement "if (3 < uVar3) {\n      unaff_s5 = auStack_3c;\n      local_58 = (uint *)unaff_s5;\n      iVar9 = (*(code *)PTR___gmpn_hgcd2_00097460)\n                        (uVar13,param_2[(int)param_1 + -2],uVar20,param_3[(int)param_1 + -2]);\n      if (iVar9 != 0) goto LAB_00052bb8;\n    }" if (parenthesized_expression "(3 < uVar3)" ( (binary_expression "3 < uVar3" number_literal < identifier) )) (compound_statement "{\n      unaff_s5 = auStack_3c;\n      local_58 = (uint *)unaff_s5;\n      iVar9 = (*(code *)PTR___gmpn_hgcd2_00097460)\n                        (uVar13,param_2[(int)param_1 + -2],uVar20,param_3[(int)param_1 + -2]);\n      if (iVar9 != 0) goto LAB_00052bb8;\n    }" { (expression_statement "unaff_s5 = auStack_3c;" (assignment_expression "unaff_s5 = auStack_3c" identifier = identifier) ;) (expression_statement "local_58 = (uint *)unaff_s5;" (assignment_expression "local_58 = (uint *)unaff_s5" identifier = (cast_expression "(uint *)unaff_s5" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "iVar9 = (*(code *)PTR___gmpn_hgcd2_00097460)\n                        (uVar13,param_2[(int)param_1 + -2],uVar20,param_3[(int)param_1 + -2]);" (assignment_expression "iVar9 = (*(code *)PTR___gmpn_hgcd2_00097460)\n                        (uVar13,param_2[(int)param_1 + -2],uVar20,param_3[(int)param_1 + -2])" identifier = (call_expression "(*(code *)PTR___gmpn_hgcd2_00097460)\n                        (uVar13,param_2[(int)param_1 + -2],uVar20,param_3[(int)param_1 + -2])" (parenthesized_expression "(*(code *)PTR___gmpn_hgcd2_00097460)" ( (pointer_expression "*(code *)PTR___gmpn_hgcd2_00097460" * (cast_expression "(code *)PTR___gmpn_hgcd2_00097460" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(uVar13,param_2[(int)param_1 + -2],uVar20,param_3[(int)param_1 + -2])" ( identifier , (subscript_expression "param_2[(int)param_1 + -2]" identifier [ (binary_expression "(int)param_1 + -2" (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ]) , identifier , (subscript_expression "param_3[(int)param_1 + -2]" identifier [ (binary_expression "(int)param_1 + -2" (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ]) )))) ;) (if_statement "if (iVar9 != 0) goto LAB_00052bb8;" if (parenthesized_expression "(iVar9 != 0)" ( (binary_expression "iVar9 != 0" identifier != number_literal) )) (goto_statement "goto LAB_00052bb8;" goto statement_identifier ;)) })) (labeled_statement "LAB_00052b18:\n    local_50 = param_6;" statement_identifier : (expression_statement "local_50 = param_6;" (assignment_expression "local_50 = param_6" identifier = identifier) ;)) (expression_statement "local_58 = (uint *)(PTR_LAB_0009707c + 0x2960);" (assignment_expression "local_58 = (uint *)(PTR_LAB_0009707c + 0x2960)" identifier = (cast_expression "(uint *)(PTR_LAB_0009707c + 0x2960)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_0009707c + 0x2960)" ( (binary_expression "PTR_LAB_0009707c + 0x2960" identifier + number_literal) )))) ;) (expression_statement "local_54 = param_5;" (assignment_expression "local_54 = param_5" identifier = identifier) ;) (expression_statement "puVar29 = param_3;" (assignment_expression "puVar29 = param_3" identifier = identifier) ;) (expression_statement "puVar25 = param_1;" (assignment_expression "puVar25 = param_1" identifier = identifier) ;) (expression_statement "puVar18 = param_4;" (assignment_expression "puVar18 = param_4" identifier = identifier) ;) (expression_statement "puVar4 = (uint *)(*(code *)PTR___gmpn_gcd_subdiv_step_00097118)(param_2);" (assignment_expression "puVar4 = (uint *)(*(code *)PTR___gmpn_gcd_subdiv_step_00097118)(param_2)" identifier = (cast_expression "(uint *)(*(code *)PTR___gmpn_gcd_subdiv_step_00097118)(param_2)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)PTR___gmpn_gcd_subdiv_step_00097118)(param_2)" (parenthesized_expression "(*(code *)PTR___gmpn_gcd_subdiv_step_00097118)" ( (pointer_expression "*(code *)PTR___gmpn_gcd_subdiv_step_00097118" * (cast_expression "(code *)PTR___gmpn_gcd_subdiv_step_00097118" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(param_2)" ( identifier ))))) ;) }) (else_clause "else {\n    uVar16 = param_2[(int)param_1 + -2];\n    uVar23 = param_3[(int)param_1 + -2];\n    if (-1 < (int)uVar3) {\n      if (uVar3 < 0x10000) {\n        iVar9 = 0x18;\n        if (uVar3 < 0x100) {\n          iVar9 = 0;\n        }\n        iVar24 = 9;\n        if (uVar3 < 0x100) {\n          iVar24 = 1;\n        }\n      }\n      else {\n        iVar9 = 8;\n        if (uVar3 < 0x1000000) {\n          iVar9 = 0x10;\n        }\n        iVar24 = 0x19;\n        if (uVar3 < 0x1000000) {\n          iVar24 = 0x11;\n        }\n      }\n      uVar3 = iVar9 - (uint)(byte)PTR___gmpn_clz_tab_0009718c[uVar3 >> iVar24];\n      uVar10 = 0x20 - uVar3;\n      uVar13 = uVar13 << (uVar3 & 0x1f) | uVar16 >> (uVar10 & 0x1f);\n      uVar16 = param_2[(int)param_1 + -3] >> (uVar10 & 0x1f) | uVar16 << (uVar3 & 0x1f);\n      uVar20 = uVar20 << (uVar3 & 0x1f) | uVar23 >> (uVar10 & 0x1f);\n      uVar23 = param_3[(int)param_1 + -3] >> (uVar10 & 0x1f) | uVar23 << (uVar3 & 0x1f);\n    }\n    unaff_s5 = auStack_3c;\n    local_58 = (uint *)unaff_s5;\n    iVar9 = (*(code *)PTR___gmpn_hgcd2_00097460)(uVar13,uVar16,uVar20,uVar23);\n    if (iVar9 == 0) goto LAB_00052b18;\nLAB_00052bb8:\n    unaff_s5 = auStack_3c;\n    (*(code *)PTR___gmpn_hgcd_matrix_mul_1_000973f4)(param_5,unaff_s5,param_6);\n    if (param_1 != (uint *)0x0) {\n      iVar9 = (int)param_1 + -1;\n      uVar3 = *param_2;\n      if (iVar9 == 0) {\n        *param_6 = uVar3;\n        puVar28 = param_6;\n      }\n      else {\n        puVar28 = param_6;\n        puVar29 = param_2 + 1;\n        do {\n          *puVar28 = uVar3;\n          iVar9 = iVar9 + -1;\n          uVar3 = *puVar29;\n          puVar28 = puVar28 + 1;\n          puVar29 = puVar29 + 1;\n        } while (iVar9 != 0);\n        param_6[(int)param_1 + -1] = uVar3;\n        puVar28 = param_6 + (int)param_1 + -1;\n      }\n    }\n    puVar29 = param_2;\n    puVar25 = param_6;\n    puVar18 = param_3;\n    local_58 = param_1;\n    puVar4 = (uint *)(*(code *)PTR___gmpn_matrix22_mul1_inverse_vector_00097488)(unaff_s5);\n  }" else (compound_statement "{\n    uVar16 = param_2[(int)param_1 + -2];\n    uVar23 = param_3[(int)param_1 + -2];\n    if (-1 < (int)uVar3) {\n      if (uVar3 < 0x10000) {\n        iVar9 = 0x18;\n        if (uVar3 < 0x100) {\n          iVar9 = 0;\n        }\n        iVar24 = 9;\n        if (uVar3 < 0x100) {\n          iVar24 = 1;\n        }\n      }\n      else {\n        iVar9 = 8;\n        if (uVar3 < 0x1000000) {\n          iVar9 = 0x10;\n        }\n        iVar24 = 0x19;\n        if (uVar3 < 0x1000000) {\n          iVar24 = 0x11;\n        }\n      }\n      uVar3 = iVar9 - (uint)(byte)PTR___gmpn_clz_tab_0009718c[uVar3 >> iVar24];\n      uVar10 = 0x20 - uVar3;\n      uVar13 = uVar13 << (uVar3 & 0x1f) | uVar16 >> (uVar10 & 0x1f);\n      uVar16 = param_2[(int)param_1 + -3] >> (uVar10 & 0x1f) | uVar16 << (uVar3 & 0x1f);\n      uVar20 = uVar20 << (uVar3 & 0x1f) | uVar23 >> (uVar10 & 0x1f);\n      uVar23 = param_3[(int)param_1 + -3] >> (uVar10 & 0x1f) | uVar23 << (uVar3 & 0x1f);\n    }\n    unaff_s5 = auStack_3c;\n    local_58 = (uint *)unaff_s5;\n    iVar9 = (*(code *)PTR___gmpn_hgcd2_00097460)(uVar13,uVar16,uVar20,uVar23);\n    if (iVar9 == 0) goto LAB_00052b18;\nLAB_00052bb8:\n    unaff_s5 = auStack_3c;\n    (*(code *)PTR___gmpn_hgcd_matrix_mul_1_000973f4)(param_5,unaff_s5,param_6);\n    if (param_1 != (uint *)0x0) {\n      iVar9 = (int)param_1 + -1;\n      uVar3 = *param_2;\n      if (iVar9 == 0) {\n        *param_6 = uVar3;\n        puVar28 = param_6;\n      }\n      else {\n        puVar28 = param_6;\n        puVar29 = param_2 + 1;\n        do {\n          *puVar28 = uVar3;\n          iVar9 = iVar9 + -1;\n          uVar3 = *puVar29;\n          puVar28 = puVar28 + 1;\n          puVar29 = puVar29 + 1;\n        } while (iVar9 != 0);\n        param_6[(int)param_1 + -1] = uVar3;\n        puVar28 = param_6 + (int)param_1 + -1;\n      }\n    }\n    puVar29 = param_2;\n    puVar25 = param_6;\n    puVar18 = param_3;\n    local_58 = param_1;\n    puVar4 = (uint *)(*(code *)PTR___gmpn_matrix22_mul1_inverse_vector_00097488)(unaff_s5);\n  }" { (expression_statement "uVar16 = param_2[(int)param_1 + -2];" (assignment_expression "uVar16 = param_2[(int)param_1 + -2]" identifier = (subscript_expression "param_2[(int)param_1 + -2]" identifier [ (binary_expression "(int)param_1 + -2" (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ])) ;) (expression_statement "uVar23 = param_3[(int)param_1 + -2];" (assignment_expression "uVar23 = param_3[(int)param_1 + -2]" identifier = (subscript_expression "param_3[(int)param_1 + -2]" identifier [ (binary_expression "(int)param_1 + -2" (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ])) ;) (if_statement "if (-1 < (int)uVar3) {\n      if (uVar3 < 0x10000) {\n        iVar9 = 0x18;\n        if (uVar3 < 0x100) {\n          iVar9 = 0;\n        }\n        iVar24 = 9;\n        if (uVar3 < 0x100) {\n          iVar24 = 1;\n        }\n      }\n      else {\n        iVar9 = 8;\n        if (uVar3 < 0x1000000) {\n          iVar9 = 0x10;\n        }\n        iVar24 = 0x19;\n        if (uVar3 < 0x1000000) {\n          iVar24 = 0x11;\n        }\n      }\n      uVar3 = iVar9 - (uint)(byte)PTR___gmpn_clz_tab_0009718c[uVar3 >> iVar24];\n      uVar10 = 0x20 - uVar3;\n      uVar13 = uVar13 << (uVar3 & 0x1f) | uVar16 >> (uVar10 & 0x1f);\n      uVar16 = param_2[(int)param_1 + -3] >> (uVar10 & 0x1f) | uVar16 << (uVar3 & 0x1f);\n      uVar20 = uVar20 << (uVar3 & 0x1f) | uVar23 >> (uVar10 & 0x1f);\n      uVar23 = param_3[(int)param_1 + -3] >> (uVar10 & 0x1f) | uVar23 << (uVar3 & 0x1f);\n    }" if (parenthesized_expression "(-1 < (int)uVar3)" ( (binary_expression "-1 < (int)uVar3" number_literal < (cast_expression "(int)uVar3" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n      if (uVar3 < 0x10000) {\n        iVar9 = 0x18;\n        if (uVar3 < 0x100) {\n          iVar9 = 0;\n        }\n        iVar24 = 9;\n        if (uVar3 < 0x100) {\n          iVar24 = 1;\n        }\n      }\n      else {\n        iVar9 = 8;\n        if (uVar3 < 0x1000000) {\n          iVar9 = 0x10;\n        }\n        iVar24 = 0x19;\n        if (uVar3 < 0x1000000) {\n          iVar24 = 0x11;\n        }\n      }\n      uVar3 = iVar9 - (uint)(byte)PTR___gmpn_clz_tab_0009718c[uVar3 >> iVar24];\n      uVar10 = 0x20 - uVar3;\n      uVar13 = uVar13 << (uVar3 & 0x1f) | uVar16 >> (uVar10 & 0x1f);\n      uVar16 = param_2[(int)param_1 + -3] >> (uVar10 & 0x1f) | uVar16 << (uVar3 & 0x1f);\n      uVar20 = uVar20 << (uVar3 & 0x1f) | uVar23 >> (uVar10 & 0x1f);\n      uVar23 = param_3[(int)param_1 + -3] >> (uVar10 & 0x1f) | uVar23 << (uVar3 & 0x1f);\n    }" { (if_statement "if (uVar3 < 0x10000) {\n        iVar9 = 0x18;\n        if (uVar3 < 0x100) {\n          iVar9 = 0;\n        }\n        iVar24 = 9;\n        if (uVar3 < 0x100) {\n          iVar24 = 1;\n        }\n      }\n      else {\n        iVar9 = 8;\n        if (uVar3 < 0x1000000) {\n          iVar9 = 0x10;\n        }\n        iVar24 = 0x19;\n        if (uVar3 < 0x1000000) {\n          iVar24 = 0x11;\n        }\n      }" if (parenthesized_expression "(uVar3 < 0x10000)" ( (binary_expression "uVar3 < 0x10000" identifier < number_literal) )) (compound_statement "{\n        iVar9 = 0x18;\n        if (uVar3 < 0x100) {\n          iVar9 = 0;\n        }\n        iVar24 = 9;\n        if (uVar3 < 0x100) {\n          iVar24 = 1;\n        }\n      }" { (expression_statement "iVar9 = 0x18;" (assignment_expression "iVar9 = 0x18" identifier = number_literal) ;) (if_statement "if (uVar3 < 0x100) {\n          iVar9 = 0;\n        }" if (parenthesized_expression "(uVar3 < 0x100)" ( (binary_expression "uVar3 < 0x100" identifier < number_literal) )) (compound_statement "{\n          iVar9 = 0;\n        }" { (expression_statement "iVar9 = 0;" (assignment_expression "iVar9 = 0" identifier = number_literal) ;) })) (expression_statement "iVar24 = 9;" (assignment_expression "iVar24 = 9" identifier = number_literal) ;) (if_statement "if (uVar3 < 0x100) {\n          iVar24 = 1;\n        }" if (parenthesized_expression "(uVar3 < 0x100)" ( (binary_expression "uVar3 < 0x100" identifier < number_literal) )) (compound_statement "{\n          iVar24 = 1;\n        }" { (expression_statement "iVar24 = 1;" (assignment_expression "iVar24 = 1" identifier = number_literal) ;) })) }) (else_clause "else {\n        iVar9 = 8;\n        if (uVar3 < 0x1000000) {\n          iVar9 = 0x10;\n        }\n        iVar24 = 0x19;\n        if (uVar3 < 0x1000000) {\n          iVar24 = 0x11;\n        }\n      }" else (compound_statement "{\n        iVar9 = 8;\n        if (uVar3 < 0x1000000) {\n          iVar9 = 0x10;\n        }\n        iVar24 = 0x19;\n        if (uVar3 < 0x1000000) {\n          iVar24 = 0x11;\n        }\n      }" { (expression_statement "iVar9 = 8;" (assignment_expression "iVar9 = 8" identifier = number_literal) ;) (if_statement "if (uVar3 < 0x1000000) {\n          iVar9 = 0x10;\n        }" if (parenthesized_expression "(uVar3 < 0x1000000)" ( (binary_expression "uVar3 < 0x1000000" identifier < number_literal) )) (compound_statement "{\n          iVar9 = 0x10;\n        }" { (expression_statement "iVar9 = 0x10;" (assignment_expression "iVar9 = 0x10" identifier = number_literal) ;) })) (expression_statement "iVar24 = 0x19;" (assignment_expression "iVar24 = 0x19" identifier = number_literal) ;) (if_statement "if (uVar3 < 0x1000000) {\n          iVar24 = 0x11;\n        }" if (parenthesized_expression "(uVar3 < 0x1000000)" ( (binary_expression "uVar3 < 0x1000000" identifier < number_literal) )) (compound_statement "{\n          iVar24 = 0x11;\n        }" { (expression_statement "iVar24 = 0x11;" (assignment_expression "iVar24 = 0x11" identifier = number_literal) ;) })) }))) (expression_statement "uVar3 = iVar9 - (uint)(byte)PTR___gmpn_clz_tab_0009718c[uVar3 >> iVar24];" (assignment_expression "uVar3 = iVar9 - (uint)(byte)PTR___gmpn_clz_tab_0009718c[uVar3 >> iVar24]" identifier = (binary_expression "iVar9 - (uint)(byte)PTR___gmpn_clz_tab_0009718c[uVar3 >> iVar24]" identifier - (cast_expression "(uint)(byte)PTR___gmpn_clz_tab_0009718c[uVar3 >> iVar24]" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(byte)PTR___gmpn_clz_tab_0009718c[uVar3 >> iVar24]" ( (type_descriptor "byte" type_identifier) ) (subscript_expression "PTR___gmpn_clz_tab_0009718c[uVar3 >> iVar24]" identifier [ (binary_expression "uVar3 >> iVar24" identifier >> identifier) ]))))) ;) (expression_statement "uVar10 = 0x20 - uVar3;" (assignment_expression "uVar10 = 0x20 - uVar3" identifier = (binary_expression "0x20 - uVar3" number_literal - identifier)) ;) (expression_statement "uVar13 = uVar13 << (uVar3 & 0x1f) | uVar16 >> (uVar10 & 0x1f);" (assignment_expression "uVar13 = uVar13 << (uVar3 & 0x1f) | uVar16 >> (uVar10 & 0x1f)" identifier = (binary_expression "uVar13 << (uVar3 & 0x1f) | uVar16 >> (uVar10 & 0x1f)" (binary_expression "uVar13 << (uVar3 & 0x1f)" identifier << (parenthesized_expression "(uVar3 & 0x1f)" ( (binary_expression "uVar3 & 0x1f" identifier & number_literal) ))) | (binary_expression "uVar16 >> (uVar10 & 0x1f)" identifier >> (parenthesized_expression "(uVar10 & 0x1f)" ( (binary_expression "uVar10 & 0x1f" identifier & number_literal) ))))) ;) (expression_statement "uVar16 = param_2[(int)param_1 + -3] >> (uVar10 & 0x1f) | uVar16 << (uVar3 & 0x1f);" (assignment_expression "uVar16 = param_2[(int)param_1 + -3] >> (uVar10 & 0x1f) | uVar16 << (uVar3 & 0x1f)" identifier = (binary_expression "param_2[(int)param_1 + -3] >> (uVar10 & 0x1f) | uVar16 << (uVar3 & 0x1f)" (binary_expression "param_2[(int)param_1 + -3] >> (uVar10 & 0x1f)" (subscript_expression "param_2[(int)param_1 + -3]" identifier [ (binary_expression "(int)param_1 + -3" (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ]) >> (parenthesized_expression "(uVar10 & 0x1f)" ( (binary_expression "uVar10 & 0x1f" identifier & number_literal) ))) | (binary_expression "uVar16 << (uVar3 & 0x1f)" identifier << (parenthesized_expression "(uVar3 & 0x1f)" ( (binary_expression "uVar3 & 0x1f" identifier & number_literal) ))))) ;) (expression_statement "uVar20 = uVar20 << (uVar3 & 0x1f) | uVar23 >> (uVar10 & 0x1f);" (assignment_expression "uVar20 = uVar20 << (uVar3 & 0x1f) | uVar23 >> (uVar10 & 0x1f)" identifier = (binary_expression "uVar20 << (uVar3 & 0x1f) | uVar23 >> (uVar10 & 0x1f)" (binary_expression "uVar20 << (uVar3 & 0x1f)" identifier << (parenthesized_expression "(uVar3 & 0x1f)" ( (binary_expression "uVar3 & 0x1f" identifier & number_literal) ))) | (binary_expression "uVar23 >> (uVar10 & 0x1f)" identifier >> (parenthesized_expression "(uVar10 & 0x1f)" ( (binary_expression "uVar10 & 0x1f" identifier & number_literal) ))))) ;) (expression_statement "uVar23 = param_3[(int)param_1 + -3] >> (uVar10 & 0x1f) | uVar23 << (uVar3 & 0x1f);" (assignment_expression "uVar23 = param_3[(int)param_1 + -3] >> (uVar10 & 0x1f) | uVar23 << (uVar3 & 0x1f)" identifier = (binary_expression "param_3[(int)param_1 + -3] >> (uVar10 & 0x1f) | uVar23 << (uVar3 & 0x1f)" (binary_expression "param_3[(int)param_1 + -3] >> (uVar10 & 0x1f)" (subscript_expression "param_3[(int)param_1 + -3]" identifier [ (binary_expression "(int)param_1 + -3" (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ]) >> (parenthesized_expression "(uVar10 & 0x1f)" ( (binary_expression "uVar10 & 0x1f" identifier & number_literal) ))) | (binary_expression "uVar23 << (uVar3 & 0x1f)" identifier << (parenthesized_expression "(uVar3 & 0x1f)" ( (binary_expression "uVar3 & 0x1f" identifier & number_literal) ))))) ;) })) (expression_statement "unaff_s5 = auStack_3c;" (assignment_expression "unaff_s5 = auStack_3c" identifier = identifier) ;) (expression_statement "local_58 = (uint *)unaff_s5;" (assignment_expression "local_58 = (uint *)unaff_s5" identifier = (cast_expression "(uint *)unaff_s5" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "iVar9 = (*(code *)PTR___gmpn_hgcd2_00097460)(uVar13,uVar16,uVar20,uVar23);" (assignment_expression "iVar9 = (*(code *)PTR___gmpn_hgcd2_00097460)(uVar13,uVar16,uVar20,uVar23)" identifier = (call_expression "(*(code *)PTR___gmpn_hgcd2_00097460)(uVar13,uVar16,uVar20,uVar23)" (parenthesized_expression "(*(code *)PTR___gmpn_hgcd2_00097460)" ( (pointer_expression "*(code *)PTR___gmpn_hgcd2_00097460" * (cast_expression "(code *)PTR___gmpn_hgcd2_00097460" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(uVar13,uVar16,uVar20,uVar23)" ( identifier , identifier , identifier , identifier )))) ;) (if_statement "if (iVar9 == 0) goto LAB_00052b18;" if (parenthesized_expression "(iVar9 == 0)" ( (binary_expression "iVar9 == 0" identifier == number_literal) )) (goto_statement "goto LAB_00052b18;" goto statement_identifier ;)) (labeled_statement "LAB_00052bb8:\n    unaff_s5 = auStack_3c;" statement_identifier : (expression_statement "unaff_s5 = auStack_3c;" (assignment_expression "unaff_s5 = auStack_3c" identifier = identifier) ;)) (expression_statement "(*(code *)PTR___gmpn_hgcd_matrix_mul_1_000973f4)(param_5,unaff_s5,param_6);" (call_expression "(*(code *)PTR___gmpn_hgcd_matrix_mul_1_000973f4)(param_5,unaff_s5,param_6)" (parenthesized_expression "(*(code *)PTR___gmpn_hgcd_matrix_mul_1_000973f4)" ( (pointer_expression "*(code *)PTR___gmpn_hgcd_matrix_mul_1_000973f4" * (cast_expression "(code *)PTR___gmpn_hgcd_matrix_mul_1_000973f4" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(param_5,unaff_s5,param_6)" ( identifier , identifier , identifier ))) ;) (if_statement "if (param_1 != (uint *)0x0) {\n      iVar9 = (int)param_1 + -1;\n      uVar3 = *param_2;\n      if (iVar9 == 0) {\n        *param_6 = uVar3;\n        puVar28 = param_6;\n      }\n      else {\n        puVar28 = param_6;\n        puVar29 = param_2 + 1;\n        do {\n          *puVar28 = uVar3;\n          iVar9 = iVar9 + -1;\n          uVar3 = *puVar29;\n          puVar28 = puVar28 + 1;\n          puVar29 = puVar29 + 1;\n        } while (iVar9 != 0);\n        param_6[(int)param_1 + -1] = uVar3;\n        puVar28 = param_6 + (int)param_1 + -1;\n      }\n    }" if (parenthesized_expression "(param_1 != (uint *)0x0)" ( (binary_expression "param_1 != (uint *)0x0" identifier != (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      iVar9 = (int)param_1 + -1;\n      uVar3 = *param_2;\n      if (iVar9 == 0) {\n        *param_6 = uVar3;\n        puVar28 = param_6;\n      }\n      else {\n        puVar28 = param_6;\n        puVar29 = param_2 + 1;\n        do {\n          *puVar28 = uVar3;\n          iVar9 = iVar9 + -1;\n          uVar3 = *puVar29;\n          puVar28 = puVar28 + 1;\n          puVar29 = puVar29 + 1;\n        } while (iVar9 != 0);\n        param_6[(int)param_1 + -1] = uVar3;\n        puVar28 = param_6 + (int)param_1 + -1;\n      }\n    }" { (expression_statement "iVar9 = (int)param_1 + -1;" (assignment_expression "iVar9 = (int)param_1 + -1" identifier = (binary_expression "(int)param_1 + -1" (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal)) ;) (expression_statement "uVar3 = *param_2;" (assignment_expression "uVar3 = *param_2" identifier = (pointer_expression "*param_2" * identifier)) ;) (if_statement "if (iVar9 == 0) {\n        *param_6 = uVar3;\n        puVar28 = param_6;\n      }\n      else {\n        puVar28 = param_6;\n        puVar29 = param_2 + 1;\n        do {\n          *puVar28 = uVar3;\n          iVar9 = iVar9 + -1;\n          uVar3 = *puVar29;\n          puVar28 = puVar28 + 1;\n          puVar29 = puVar29 + 1;\n        } while (iVar9 != 0);\n        param_6[(int)param_1 + -1] = uVar3;\n        puVar28 = param_6 + (int)param_1 + -1;\n      }" if (parenthesized_expression "(iVar9 == 0)" ( (binary_expression "iVar9 == 0" identifier == number_literal) )) (compound_statement "{\n        *param_6 = uVar3;\n        puVar28 = param_6;\n      }" { (expression_statement "*param_6 = uVar3;" (assignment_expression "*param_6 = uVar3" (pointer_expression "*param_6" * identifier) = identifier) ;) (expression_statement "puVar28 = param_6;" (assignment_expression "puVar28 = param_6" identifier = identifier) ;) }) (else_clause "else {\n        puVar28 = param_6;\n        puVar29 = param_2 + 1;\n        do {\n          *puVar28 = uVar3;\n          iVar9 = iVar9 + -1;\n          uVar3 = *puVar29;\n          puVar28 = puVar28 + 1;\n          puVar29 = puVar29 + 1;\n        } while (iVar9 != 0);\n        param_6[(int)param_1 + -1] = uVar3;\n        puVar28 = param_6 + (int)param_1 + -1;\n      }" else (compound_statement "{\n        puVar28 = param_6;\n        puVar29 = param_2 + 1;\n        do {\n          *puVar28 = uVar3;\n          iVar9 = iVar9 + -1;\n          uVar3 = *puVar29;\n          puVar28 = puVar28 + 1;\n          puVar29 = puVar29 + 1;\n        } while (iVar9 != 0);\n        param_6[(int)param_1 + -1] = uVar3;\n        puVar28 = param_6 + (int)param_1 + -1;\n      }" { (expression_statement "puVar28 = param_6;" (assignment_expression "puVar28 = param_6" identifier = identifier) ;) (expression_statement "puVar29 = param_2 + 1;" (assignment_expression "puVar29 = param_2 + 1" identifier = (binary_expression "param_2 + 1" identifier + number_literal)) ;) (do_statement "do {\n          *puVar28 = uVar3;\n          iVar9 = iVar9 + -1;\n          uVar3 = *puVar29;\n          puVar28 = puVar28 + 1;\n          puVar29 = puVar29 + 1;\n        } while (iVar9 != 0);" do (compound_statement "{\n          *puVar28 = uVar3;\n          iVar9 = iVar9 + -1;\n          uVar3 = *puVar29;\n          puVar28 = puVar28 + 1;\n          puVar29 = puVar29 + 1;\n        }" { (expression_statement "*puVar28 = uVar3;" (assignment_expression "*puVar28 = uVar3" (pointer_expression "*puVar28" * identifier) = identifier) ;) (expression_statement "iVar9 = iVar9 + -1;" (assignment_expression "iVar9 = iVar9 + -1" identifier = (binary_expression "iVar9 + -1" identifier + number_literal)) ;) (expression_statement "uVar3 = *puVar29;" (assignment_expression "uVar3 = *puVar29" identifier = (pointer_expression "*puVar29" * identifier)) ;) (expression_statement "puVar28 = puVar28 + 1;" (assignment_expression "puVar28 = puVar28 + 1" identifier = (binary_expression "puVar28 + 1" identifier + number_literal)) ;) (expression_statement "puVar29 = puVar29 + 1;" (assignment_expression "puVar29 = puVar29 + 1" identifier = (binary_expression "puVar29 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar9 != 0)" ( (binary_expression "iVar9 != 0" identifier != number_literal) )) ;) (expression_statement "param_6[(int)param_1 + -1] = uVar3;" (assignment_expression "param_6[(int)param_1 + -1] = uVar3" (subscript_expression "param_6[(int)param_1 + -1]" identifier [ (binary_expression "(int)param_1 + -1" (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ]) = identifier) ;) (expression_statement "puVar28 = param_6 + (int)param_1 + -1;" (assignment_expression "puVar28 = param_6 + (int)param_1 + -1" identifier = (binary_expression "param_6 + (int)param_1 + -1" (binary_expression "param_6 + (int)param_1" identifier + (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier)) + number_literal)) ;) }))) })) (expression_statement "puVar29 = param_2;" (assignment_expression "puVar29 = param_2" identifier = identifier) ;) (expression_statement "puVar25 = param_6;" (assignment_expression "puVar25 = param_6" identifier = identifier) ;) (expression_statement "puVar18 = param_3;" (assignment_expression "puVar18 = param_3" identifier = identifier) ;) (expression_statement "local_58 = param_1;" (assignment_expression "local_58 = param_1" identifier = identifier) ;) (expression_statement "puVar4 = (uint *)(*(code *)PTR___gmpn_matrix22_mul1_inverse_vector_00097488)(unaff_s5);" (assignment_expression "puVar4 = (uint *)(*(code *)PTR___gmpn_matrix22_mul1_inverse_vector_00097488)(unaff_s5)" identifier = (cast_expression "(uint *)(*(code *)PTR___gmpn_matrix22_mul1_inverse_vector_00097488)(unaff_s5)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)PTR___gmpn_matrix22_mul1_inverse_vector_00097488)(unaff_s5)" (parenthesized_expression "(*(code *)PTR___gmpn_matrix22_mul1_inverse_vector_00097488)" ( (pointer_expression "*(code *)PTR___gmpn_matrix22_mul1_inverse_vector_00097488" * (cast_expression "(code *)PTR___gmpn_matrix22_mul1_inverse_vector_00097488" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(unaff_s5)" ( identifier ))))) ;) }))) (if_statement "if (local_2c == *(uint **)puVar2) {\n    return puVar4;\n  }" if (parenthesized_expression "(local_2c == *(uint **)puVar2)" ( (binary_expression "local_2c == *(uint **)puVar2" identifier == (pointer_expression "*(uint **)puVar2" * (cast_expression "(uint **)puVar2" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) )) (compound_statement "{\n    return puVar4;\n  }" { (return_statement "return puVar4;" return identifier ;) })) (expression_statement "uVar39 = 0x52c64;" (assignment_expression "uVar39 = 0x52c64" identifier = number_literal) ;) (expression_statement "puVar4 = local_2c;" (assignment_expression "puVar4 = local_2c" identifier = identifier) ;) (expression_statement "puVar33 = PTR___stack_chk_fail_000974d0;" (assignment_expression "puVar33 = PTR___stack_chk_fail_000974d0" identifier = identifier) ;) (expression_statement "(*(code *)PTR___stack_chk_fail_000974d0)();" (call_expression "(*(code *)PTR___stack_chk_fail_000974d0)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_000974d0)" ( (pointer_expression "*(code *)PTR___stack_chk_fail_000974d0" * (cast_expression "(code *)PTR___stack_chk_fail_000974d0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (expression_statement "iVar9 = local_54;" (assignment_expression "iVar9 = local_54" identifier = identifier) ;) (expression_statement "apuStack_a8[0] = (uint *)(puVar33 + 0x4c3d0);" (assignment_expression "apuStack_a8[0] = (uint *)(puVar33 + 0x4c3d0)" (subscript_expression "apuStack_a8[0]" identifier [ number_literal ]) = (cast_expression "(uint *)(puVar33 + 0x4c3d0)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar33 + 0x4c3d0)" ( (binary_expression "puVar33 + 0x4c3d0" identifier + number_literal) )))) ;) (expression_statement "puVar36 = auStack_c0;" (assignment_expression "puVar36 = auStack_c0" identifier = identifier) ;) (expression_statement "iStack_70 = param_5;" (assignment_expression "iStack_70 = param_5" identifier = identifier) ;) (expression_statement "piVar30 = *(int **)(puVar33 + 0x448d0);" (assignment_expression "piVar30 = *(int **)(puVar33 + 0x448d0)" identifier = (pointer_expression "*(int **)(puVar33 + 0x448d0)" * (cast_expression "(int **)(puVar33 + 0x448d0)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar33 + 0x448d0)" ( (binary_expression "puVar33 + 0x448d0" identifier + number_literal) ))))) ;) (expression_statement "iVar24 = (int)puVar18 + local_54;" (assignment_expression "iVar24 = (int)puVar18 + local_54" identifier = (binary_expression "(int)puVar18 + local_54" (cast_expression "(int)puVar18" ( (type_descriptor "int" primitive_type) ) identifier) + identifier)) ;) (expression_statement "puStack_74 = param_6;" (assignment_expression "puStack_74 = param_6" identifier = identifier) ;) (expression_statement "puStack_8c = puVar2;" (assignment_expression "puStack_8c = puVar2" identifier = identifier) ;) (expression_statement "iStack_98 = 0;" (assignment_expression "iStack_98 = 0" identifier = number_literal) ;) (expression_statement "iStack_94 = *piVar30;" (assignment_expression "iStack_94 = *piVar30" identifier = (pointer_expression "*piVar30" * identifier)) ;) (expression_statement "puStack_90 = puVar28;" (assignment_expression "puStack_90 = puVar28" identifier = identifier) ;) (expression_statement "puStack_88 = param_2;" (assignment_expression "puStack_88 = param_2" identifier = identifier) ;) (expression_statement "puStack_84 = param_3;" (assignment_expression "puStack_84 = param_3" identifier = identifier) ;) (expression_statement "puStack_80 = param_1;" (assignment_expression "puStack_80 = param_1" identifier = identifier) ;) (expression_statement "puStack_7c = unaff_s5;" (assignment_expression "puStack_7c = unaff_s5" identifier = identifier) ;) (expression_statement "puStack_78 = param_4;" (assignment_expression "puStack_78 = param_4" identifier = identifier) ;) (expression_statement "uStack_6c = uVar39;" (assignment_expression "uStack_6c = uVar39" identifier = identifier) ;) (if_statement "if ((uint)(iVar24 * 4) < 0x7f01) {\n    iVar32 = -(iVar24 * 4 + 7U & 0xfffffff8);\n    puVar36 = auStack_c0 + iVar32;\n    puVar19 = (uint *)((int)apuStack_a8 + iVar32);\n    puVar28 = local_58;\n  }\n  else {\n    apuStack_a8[3] = local_58;\n    puVar19 = (uint *)(**(code **)(puVar33 + 0x44680))(&iStack_98);\n    puVar28 = apuStack_a8[3];\n  }" if (parenthesized_expression "((uint)(iVar24 * 4) < 0x7f01)" ( (binary_expression "(uint)(iVar24 * 4) < 0x7f01" (call_expression "(uint)(iVar24 * 4)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(iVar24 * 4)" ( (binary_expression "iVar24 * 4" identifier * number_literal) ))) < number_literal) )) (compound_statement "{\n    iVar32 = -(iVar24 * 4 + 7U & 0xfffffff8);\n    puVar36 = auStack_c0 + iVar32;\n    puVar19 = (uint *)((int)apuStack_a8 + iVar32);\n    puVar28 = local_58;\n  }" { (expression_statement "iVar32 = -(iVar24 * 4 + 7U & 0xfffffff8);" (assignment_expression "iVar32 = -(iVar24 * 4 + 7U & 0xfffffff8)" identifier = (unary_expression "-(iVar24 * 4 + 7U & 0xfffffff8)" - (parenthesized_expression "(iVar24 * 4 + 7U & 0xfffffff8)" ( (binary_expression "iVar24 * 4 + 7U & 0xfffffff8" (binary_expression "iVar24 * 4 + 7U" (binary_expression "iVar24 * 4" identifier * number_literal) + number_literal) & number_literal) )))) ;) (expression_statement "puVar36 = auStack_c0 + iVar32;" (assignment_expression "puVar36 = auStack_c0 + iVar32" identifier = (binary_expression "auStack_c0 + iVar32" identifier + identifier)) ;) (expression_statement "puVar19 = (uint *)((int)apuStack_a8 + iVar32);" (assignment_expression "puVar19 = (uint *)((int)apuStack_a8 + iVar32)" identifier = (cast_expression "(uint *)((int)apuStack_a8 + iVar32)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)apuStack_a8 + iVar32)" ( (binary_expression "(int)apuStack_a8 + iVar32" (cast_expression "(int)apuStack_a8" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) ;) (expression_statement "puVar28 = local_58;" (assignment_expression "puVar28 = local_58" identifier = identifier) ;) }) (else_clause "else {\n    apuStack_a8[3] = local_58;\n    puVar19 = (uint *)(**(code **)(puVar33 + 0x44680))(&iStack_98);\n    puVar28 = apuStack_a8[3];\n  }" else (compound_statement "{\n    apuStack_a8[3] = local_58;\n    puVar19 = (uint *)(**(code **)(puVar33 + 0x44680))(&iStack_98);\n    puVar28 = apuStack_a8[3];\n  }" { (expression_statement "apuStack_a8[3] = local_58;" (assignment_expression "apuStack_a8[3] = local_58" (subscript_expression "apuStack_a8[3]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar19 = (uint *)(**(code **)(puVar33 + 0x44680))(&iStack_98);" (assignment_expression "puVar19 = (uint *)(**(code **)(puVar33 + 0x44680))(&iStack_98)" identifier = (cast_expression "(uint *)(**(code **)(puVar33 + 0x44680))(&iStack_98)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(**(code **)(puVar33 + 0x44680))(&iStack_98)" (parenthesized_expression "(**(code **)(puVar33 + 0x44680))" ( (pointer_expression "**(code **)(puVar33 + 0x44680)" * (pointer_expression "*(code **)(puVar33 + 0x44680)" * (cast_expression "(code **)(puVar33 + 0x44680)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar33 + 0x44680)" ( (binary_expression "puVar33 + 0x44680" identifier + number_literal) ))))) )) (argument_list "(&iStack_98)" ( (pointer_expression "&iStack_98" & identifier) ))))) ;) (expression_statement "puVar28 = apuStack_a8[3];" (assignment_expression "puVar28 = apuStack_a8[3]" identifier = (subscript_expression "apuStack_a8[3]" identifier [ number_literal ])) ;) }))) (expression_statement "pcVar34 = (code *)apuStack_a8[0][-0x1f63];" (assignment_expression "pcVar34 = (code *)apuStack_a8[0][-0x1f63]" identifier = (cast_expression "(code *)apuStack_a8[0][-0x1f63]" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "apuStack_a8[0][-0x1f63]" (subscript_expression "apuStack_a8[0]" identifier [ number_literal ]) [ number_literal ]))) ;) (expression_statement "*(int *)(puVar36 + 0x10) = iVar9;" (assignment_expression "*(int *)(puVar36 + 0x10) = iVar9" (pointer_expression "*(int *)(puVar36 + 0x10)" * (cast_expression "(int *)(puVar36 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar36 + 0x10)" ( (binary_expression "puVar36 + 0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "puVar17 = puVar25;" (assignment_expression "puVar17 = puVar25" identifier = identifier) ;) (expression_statement "puVar21 = puVar18;" (assignment_expression "puVar21 = puVar18" identifier = identifier) ;) (expression_statement "(*pcVar34)(puVar19);" (call_expression "(*pcVar34)(puVar19)" (parenthesized_expression "(*pcVar34)" ( (pointer_expression "*pcVar34" * identifier) )) (argument_list "(puVar19)" ( identifier ))) ;) (expression_statement "puVar31 = (uint *)(iVar24 - (uint)((int)puVar29 < iVar24));" (assignment_expression "puVar31 = (uint *)(iVar24 - (uint)((int)puVar29 < iVar24))" identifier = (cast_expression "(uint *)(iVar24 - (uint)((int)puVar29 < iVar24))" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar24 - (uint)((int)puVar29 < iVar24))" ( (binary_expression "iVar24 - (uint)((int)puVar29 < iVar24)" identifier - (call_expression "(uint)((int)puVar29 < iVar24)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((int)puVar29 < iVar24)" ( (binary_expression "(int)puVar29 < iVar24" (cast_expression "(int)puVar29" ( (type_descriptor "int" primitive_type) ) identifier) < identifier) )))) )))) ;) (if_statement "if (((puVar31 != (uint *)0x0) &&\n      (puVar17 = puVar4, puVar21 = puVar19, puVar28 = puVar31,\n      iVar24 = (*(code *)apuStack_a8[0][-0x1ecb])(puVar4), iVar24 != 0)) &&\n     ((int)puVar31 < (int)puVar29)) {\n    puVar14 = puVar4 + (int)puVar31;\n    uVar3 = *puVar14;\n    puVar17 = (uint *)(uVar3 - 1);\n    *puVar14 = (uint)puVar17;\n    puVar5 = puVar31;\n    while ((uVar3 == 0 && (puVar5 = (uint *)((int)puVar5 + 1), puVar29 != puVar5))) {\n      uVar3 = puVar14[1];\n      puVar14 = puVar14 + 1;\n      puVar17 = (uint *)(uVar3 - 1);\n      *puVar14 = (uint)puVar17;\n    }\n  }" if (parenthesized_expression "(((puVar31 != (uint *)0x0) &&\n      (puVar17 = puVar4, puVar21 = puVar19, puVar28 = puVar31,\n      iVar24 = (*(code *)apuStack_a8[0][-0x1ecb])(puVar4), iVar24 != 0)) &&\n     ((int)puVar31 < (int)puVar29))" ( (binary_expression "((puVar31 != (uint *)0x0) &&\n      (puVar17 = puVar4, puVar21 = puVar19, puVar28 = puVar31,\n      iVar24 = (*(code *)apuStack_a8[0][-0x1ecb])(puVar4), iVar24 != 0)) &&\n     ((int)puVar31 < (int)puVar29)" (parenthesized_expression "((puVar31 != (uint *)0x0) &&\n      (puVar17 = puVar4, puVar21 = puVar19, puVar28 = puVar31,\n      iVar24 = (*(code *)apuStack_a8[0][-0x1ecb])(puVar4), iVar24 != 0))" ( (binary_expression "(puVar31 != (uint *)0x0) &&\n      (puVar17 = puVar4, puVar21 = puVar19, puVar28 = puVar31,\n      iVar24 = (*(code *)apuStack_a8[0][-0x1ecb])(puVar4), iVar24 != 0)" (parenthesized_expression "(puVar31 != (uint *)0x0)" ( (binary_expression "puVar31 != (uint *)0x0" identifier != (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(puVar17 = puVar4, puVar21 = puVar19, puVar28 = puVar31,\n      iVar24 = (*(code *)apuStack_a8[0][-0x1ecb])(puVar4), iVar24 != 0)" ( (comma_expression "puVar17 = puVar4, puVar21 = puVar19, puVar28 = puVar31,\n      iVar24 = (*(code *)apuStack_a8[0][-0x1ecb])(puVar4), iVar24 != 0" (assignment_expression "puVar17 = puVar4" identifier = identifier) , (comma_expression "puVar21 = puVar19, puVar28 = puVar31,\n      iVar24 = (*(code *)apuStack_a8[0][-0x1ecb])(puVar4), iVar24 != 0" (assignment_expression "puVar21 = puVar19" identifier = identifier) , (comma_expression "puVar28 = puVar31,\n      iVar24 = (*(code *)apuStack_a8[0][-0x1ecb])(puVar4), iVar24 != 0" (assignment_expression "puVar28 = puVar31" identifier = identifier) , (comma_expression "iVar24 = (*(code *)apuStack_a8[0][-0x1ecb])(puVar4), iVar24 != 0" (assignment_expression "iVar24 = (*(code *)apuStack_a8[0][-0x1ecb])(puVar4)" identifier = (call_expression "(*(code *)apuStack_a8[0][-0x1ecb])(puVar4)" (parenthesized_expression "(*(code *)apuStack_a8[0][-0x1ecb])" ( (pointer_expression "*(code *)apuStack_a8[0][-0x1ecb]" * (cast_expression "(code *)apuStack_a8[0][-0x1ecb]" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "apuStack_a8[0][-0x1ecb]" (subscript_expression "apuStack_a8[0]" identifier [ number_literal ]) [ number_literal ]))) )) (argument_list "(puVar4)" ( identifier )))) , (binary_expression "iVar24 != 0" identifier != number_literal))))) ))) )) && (parenthesized_expression "((int)puVar31 < (int)puVar29)" ( (binary_expression "(int)puVar31 < (int)puVar29" (cast_expression "(int)puVar31" ( (type_descriptor "int" primitive_type) ) identifier) < (cast_expression "(int)puVar29" ( (type_descriptor "int" primitive_type) ) identifier)) ))) )) (compound_statement "{\n    puVar14 = puVar4 + (int)puVar31;\n    uVar3 = *puVar14;\n    puVar17 = (uint *)(uVar3 - 1);\n    *puVar14 = (uint)puVar17;\n    puVar5 = puVar31;\n    while ((uVar3 == 0 && (puVar5 = (uint *)((int)puVar5 + 1), puVar29 != puVar5))) {\n      uVar3 = puVar14[1];\n      puVar14 = puVar14 + 1;\n      puVar17 = (uint *)(uVar3 - 1);\n      *puVar14 = (uint)puVar17;\n    }\n  }" { (expression_statement "puVar14 = puVar4 + (int)puVar31;" (assignment_expression "puVar14 = puVar4 + (int)puVar31" identifier = (binary_expression "puVar4 + (int)puVar31" identifier + (cast_expression "(int)puVar31" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "uVar3 = *puVar14;" (assignment_expression "uVar3 = *puVar14" identifier = (pointer_expression "*puVar14" * identifier)) ;) (expression_statement "puVar17 = (uint *)(uVar3 - 1);" (assignment_expression "puVar17 = (uint *)(uVar3 - 1)" identifier = (cast_expression "(uint *)(uVar3 - 1)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar3 - 1)" ( (binary_expression "uVar3 - 1" identifier - number_literal) )))) ;) (expression_statement "*puVar14 = (uint)puVar17;" (assignment_expression "*puVar14 = (uint)puVar17" (pointer_expression "*puVar14" * identifier) = (cast_expression "(uint)puVar17" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "puVar5 = puVar31;" (assignment_expression "puVar5 = puVar31" identifier = identifier) ;) (while_statement "while ((uVar3 == 0 && (puVar5 = (uint *)((int)puVar5 + 1), puVar29 != puVar5))) {\n      uVar3 = puVar14[1];\n      puVar14 = puVar14 + 1;\n      puVar17 = (uint *)(uVar3 - 1);\n      *puVar14 = (uint)puVar17;\n    }" while (parenthesized_expression "((uVar3 == 0 && (puVar5 = (uint *)((int)puVar5 + 1), puVar29 != puVar5)))" ( (parenthesized_expression "(uVar3 == 0 && (puVar5 = (uint *)((int)puVar5 + 1), puVar29 != puVar5))" ( (binary_expression "uVar3 == 0 && (puVar5 = (uint *)((int)puVar5 + 1), puVar29 != puVar5)" (binary_expression "uVar3 == 0" identifier == number_literal) && (parenthesized_expression "(puVar5 = (uint *)((int)puVar5 + 1), puVar29 != puVar5)" ( (comma_expression "puVar5 = (uint *)((int)puVar5 + 1), puVar29 != puVar5" (assignment_expression "puVar5 = (uint *)((int)puVar5 + 1)" identifier = (cast_expression "(uint *)((int)puVar5 + 1)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar5 + 1)" ( (binary_expression "(int)puVar5 + 1" (cast_expression "(int)puVar5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) , (binary_expression "puVar29 != puVar5" identifier != identifier)) ))) )) )) (compound_statement "{\n      uVar3 = puVar14[1];\n      puVar14 = puVar14 + 1;\n      puVar17 = (uint *)(uVar3 - 1);\n      *puVar14 = (uint)puVar17;\n    }" { (expression_statement "uVar3 = puVar14[1];" (assignment_expression "uVar3 = puVar14[1]" identifier = (subscript_expression "puVar14[1]" identifier [ number_literal ])) ;) (expression_statement "puVar14 = puVar14 + 1;" (assignment_expression "puVar14 = puVar14 + 1" identifier = (binary_expression "puVar14 + 1" identifier + number_literal)) ;) (expression_statement "puVar17 = (uint *)(uVar3 - 1);" (assignment_expression "puVar17 = (uint *)(uVar3 - 1)" identifier = (cast_expression "(uint *)(uVar3 - 1)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar3 - 1)" ( (binary_expression "uVar3 - 1" identifier - number_literal) )))) ;) (expression_statement "*puVar14 = (uint)puVar17;" (assignment_expression "*puVar14 = (uint)puVar17" (pointer_expression "*puVar14" * identifier) = (cast_expression "(uint)puVar17" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) })) })) (if_statement "if (iStack_98 != 0) {\n    (*(code *)apuStack_a8[0][-0x1e8b])();\n  }" if (parenthesized_expression "(iStack_98 != 0)" ( (binary_expression "iStack_98 != 0" identifier != number_literal) )) (compound_statement "{\n    (*(code *)apuStack_a8[0][-0x1e8b])();\n  }" { (expression_statement "(*(code *)apuStack_a8[0][-0x1e8b])();" (call_expression "(*(code *)apuStack_a8[0][-0x1e8b])()" (parenthesized_expression "(*(code *)apuStack_a8[0][-0x1e8b])" ( (pointer_expression "*(code *)apuStack_a8[0][-0x1e8b]" * (cast_expression "(code *)apuStack_a8[0][-0x1e8b]" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "apuStack_a8[0][-0x1e8b]" (subscript_expression "apuStack_a8[0]" identifier [ number_literal ]) [ number_literal ]))) )) (argument_list "()" ( ))) ;) })) (expression_statement "puVar5 = puVar29;" (assignment_expression "puVar5 = puVar29" identifier = identifier) ;) (if_statement "if (((int)puVar18 < (int)puVar29) && (puVar4[(int)puVar29 + -1] == 0)) {\n    puVar14 = puVar4 + (int)puVar29;\n    do {\n      puVar29 = (uint *)((int)puVar29 + -1);\n      puVar5 = puVar18;\n      if (puVar18 == puVar29) break;\n      puVar1 = puVar14 + -2;\n      puVar5 = puVar29;\n      puVar14 = puVar14 + -1;\n    } while (*puVar1 == 0);\n  }" if (parenthesized_expression "(((int)puVar18 < (int)puVar29) && (puVar4[(int)puVar29 + -1] == 0))" ( (binary_expression "((int)puVar18 < (int)puVar29) && (puVar4[(int)puVar29 + -1] == 0)" (parenthesized_expression "((int)puVar18 < (int)puVar29)" ( (binary_expression "(int)puVar18 < (int)puVar29" (cast_expression "(int)puVar18" ( (type_descriptor "int" primitive_type) ) identifier) < (cast_expression "(int)puVar29" ( (type_descriptor "int" primitive_type) ) identifier)) )) && (parenthesized_expression "(puVar4[(int)puVar29 + -1] == 0)" ( (binary_expression "puVar4[(int)puVar29 + -1] == 0" (subscript_expression "puVar4[(int)puVar29 + -1]" identifier [ (binary_expression "(int)puVar29 + -1" (cast_expression "(int)puVar29" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ]) == number_literal) ))) )) (compound_statement "{\n    puVar14 = puVar4 + (int)puVar29;\n    do {\n      puVar29 = (uint *)((int)puVar29 + -1);\n      puVar5 = puVar18;\n      if (puVar18 == puVar29) break;\n      puVar1 = puVar14 + -2;\n      puVar5 = puVar29;\n      puVar14 = puVar14 + -1;\n    } while (*puVar1 == 0);\n  }" { (expression_statement "puVar14 = puVar4 + (int)puVar29;" (assignment_expression "puVar14 = puVar4 + (int)puVar29" identifier = (binary_expression "puVar4 + (int)puVar29" identifier + (cast_expression "(int)puVar29" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (do_statement "do {\n      puVar29 = (uint *)((int)puVar29 + -1);\n      puVar5 = puVar18;\n      if (puVar18 == puVar29) break;\n      puVar1 = puVar14 + -2;\n      puVar5 = puVar29;\n      puVar14 = puVar14 + -1;\n    } while (*puVar1 == 0);" do (compound_statement "{\n      puVar29 = (uint *)((int)puVar29 + -1);\n      puVar5 = puVar18;\n      if (puVar18 == puVar29) break;\n      puVar1 = puVar14 + -2;\n      puVar5 = puVar29;\n      puVar14 = puVar14 + -1;\n    }" { (expression_statement "puVar29 = (uint *)((int)puVar29 + -1);" (assignment_expression "puVar29 = (uint *)((int)puVar29 + -1)" identifier = (cast_expression "(uint *)((int)puVar29 + -1)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar29 + -1)" ( (binary_expression "(int)puVar29 + -1" (cast_expression "(int)puVar29" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "puVar5 = puVar18;" (assignment_expression "puVar5 = puVar18" identifier = identifier) ;) (if_statement "if (puVar18 == puVar29) break;" if (parenthesized_expression "(puVar18 == puVar29)" ( (binary_expression "puVar18 == puVar29" identifier == identifier) )) (break_statement "break;" break ;)) (expression_statement "puVar1 = puVar14 + -2;" (assignment_expression "puVar1 = puVar14 + -2" identifier = (binary_expression "puVar14 + -2" identifier + number_literal)) ;) (expression_statement "puVar5 = puVar29;" (assignment_expression "puVar5 = puVar29" identifier = identifier) ;) (expression_statement "puVar14 = puVar14 + -1;" (assignment_expression "puVar14 = puVar14 + -1" identifier = (binary_expression "puVar14 + -1" identifier + number_literal)) ;) }) while (parenthesized_expression "(*puVar1 == 0)" ( (binary_expression "*puVar1 == 0" (pointer_expression "*puVar1" * identifier) == number_literal) )) ;) })) (expression_statement "pcVar34 = (code *)apuStack_a8[0][-0x1edc];" (assignment_expression "pcVar34 = (code *)apuStack_a8[0][-0x1edc]" identifier = (cast_expression "(code *)apuStack_a8[0][-0x1edc]" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "apuStack_a8[0][-0x1edc]" (subscript_expression "apuStack_a8[0]" identifier [ number_literal ]) [ number_literal ]))) ;) (if_statement "if (iStack_94 == *piVar30) {\n    return puVar5;\n  }" if (parenthesized_expression "(iStack_94 == *piVar30)" ( (binary_expression "iStack_94 == *piVar30" identifier == (pointer_expression "*piVar30" * identifier)) )) (compound_statement "{\n    return puVar5;\n  }" { (return_statement "return puVar5;" return identifier ;) })) (expression_statement "uVar39 = 0x52e68;" (assignment_expression "uVar39 = 0x52e68" identifier = number_literal) ;) (expression_statement "iVar24 = iStack_94;" (assignment_expression "iVar24 = iStack_94" identifier = identifier) ;) (expression_statement "(*pcVar34)();" (call_expression "(*pcVar34)()" (parenthesized_expression "(*pcVar34)" ( (pointer_expression "*pcVar34" * identifier) )) (argument_list "()" ( ))) ;) (expression_statement "puVar38 = puVar36 + -0x88;" (assignment_expression "puVar38 = puVar36 + -0x88" identifier = (binary_expression "puVar36 + -0x88" identifier + number_literal)) ;) (expression_statement "puVar37 = puVar36 + -0x88;" (assignment_expression "puVar37 = puVar36 + -0x88" identifier = (binary_expression "puVar36 + -0x88" identifier + number_literal)) ;) (expression_statement "puVar6 = *(undefined4 **)(pcVar34 + 0x446d8);" (assignment_expression "puVar6 = *(undefined4 **)(pcVar34 + 0x446d8)" identifier = (pointer_expression "*(undefined4 **)(pcVar34 + 0x446d8)" * (cast_expression "(undefined4 **)(pcVar34 + 0x446d8)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar34 + 0x446d8)" ( (binary_expression "pcVar34 + 0x446d8" identifier + number_literal) ))))) ;) (expression_statement "*(undefined1 **)(puVar36 + -8) = auStack_c0;" (assignment_expression "*(undefined1 **)(puVar36 + -8) = auStack_c0" (pointer_expression "*(undefined1 **)(puVar36 + -8)" * (cast_expression "(undefined1 **)(puVar36 + -8)" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar36 + -8)" ( (binary_expression "puVar36 + -8" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(uint **)(puVar36 + -0x10) = puVar19;" (assignment_expression "*(uint **)(puVar36 + -0x10) = puVar19" (pointer_expression "*(uint **)(puVar36 + -0x10)" * (cast_expression "(uint **)(puVar36 + -0x10)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar36 + -0x10)" ( (binary_expression "puVar36 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 **)(puVar36 + -0x4c) = puVar6;" (assignment_expression "*(undefined4 **)(puVar36 + -0x4c) = puVar6" (pointer_expression "*(undefined4 **)(puVar36 + -0x4c)" * (cast_expression "(undefined4 **)(puVar36 + -0x4c)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar36 + -0x4c)" ( (binary_expression "puVar36 + -0x4c" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(uint **)(puVar36 + -0x20) = puVar18;" (assignment_expression "*(uint **)(puVar36 + -0x20) = puVar18" (pointer_expression "*(uint **)(puVar36 + -0x20)" * (cast_expression "(uint **)(puVar36 + -0x20)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar36 + -0x20)" ( (binary_expression "puVar36 + -0x20" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(uint **)(puVar36 + -0x24) = puVar4;" (assignment_expression "*(uint **)(puVar36 + -0x24) = puVar4" (pointer_expression "*(uint **)(puVar36 + -0x24)" * (cast_expression "(uint **)(puVar36 + -0x24)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar36 + -0x24)" ( (binary_expression "puVar36 + -0x24" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(uint **)(puVar36 + -0x28) = puVar29;" (assignment_expression "*(uint **)(puVar36 + -0x28) = puVar29" (pointer_expression "*(uint **)(puVar36 + -0x28)" * (cast_expression "(uint **)(puVar36 + -0x28)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar36 + -0x28)" ( (binary_expression "puVar36 + -0x28" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar36 + -4) = uVar39;" (assignment_expression "*(undefined4 *)(puVar36 + -4) = uVar39" (pointer_expression "*(undefined4 *)(puVar36 + -4)" * (cast_expression "(undefined4 *)(puVar36 + -4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar36 + -4)" ( (binary_expression "puVar36 + -4" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(uint **)(puVar36 + -0xc) = puVar25;" (assignment_expression "*(uint **)(puVar36 + -0xc) = puVar25" (pointer_expression "*(uint **)(puVar36 + -0xc)" * (cast_expression "(uint **)(puVar36 + -0xc)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar36 + -0xc)" ( (binary_expression "puVar36 + -0xc" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(puVar36 + -0x14) = iVar9;" (assignment_expression "*(int *)(puVar36 + -0x14) = iVar9" (pointer_expression "*(int *)(puVar36 + -0x14)" * (cast_expression "(int *)(puVar36 + -0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar36 + -0x14)" ( (binary_expression "puVar36 + -0x14" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(uint **)(puVar36 + -0x18) = puVar31;" (assignment_expression "*(uint **)(puVar36 + -0x18) = puVar31" (pointer_expression "*(uint **)(puVar36 + -0x18)" * (cast_expression "(uint **)(puVar36 + -0x18)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar36 + -0x18)" ( (binary_expression "puVar36 + -0x18" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int **)(puVar36 + -0x1c) = piVar30;" (assignment_expression "*(int **)(puVar36 + -0x1c) = piVar30" (pointer_expression "*(int **)(puVar36 + -0x1c)" * (cast_expression "(int **)(puVar36 + -0x1c)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar36 + -0x1c)" ( (binary_expression "puVar36 + -0x1c" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(code **)(puVar36 + -0x68) = pcVar34 + 0x4c1d8;" (assignment_expression "*(code **)(puVar36 + -0x68) = pcVar34 + 0x4c1d8" (pointer_expression "*(code **)(puVar36 + -0x68)" * (cast_expression "(code **)(puVar36 + -0x68)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar36 + -0x68)" ( (binary_expression "puVar36 + -0x68" identifier + number_literal) )))) = (binary_expression "pcVar34 + 0x4c1d8" identifier + number_literal)) ;) (expression_statement "*(undefined4 *)(puVar36 + -0x2c) = *puVar6;" (assignment_expression "*(undefined4 *)(puVar36 + -0x2c) = *puVar6" (pointer_expression "*(undefined4 *)(puVar36 + -0x2c)" * (cast_expression "(undefined4 *)(puVar36 + -0x2c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar36 + -0x2c)" ( (binary_expression "puVar36 + -0x2c" identifier + number_literal) )))) = (pointer_expression "*puVar6" * identifier)) ;) (expression_statement "puVar29 = puVar28;" (assignment_expression "puVar29 = puVar28" identifier = identifier) ;) (expression_statement "puVar25 = puVar28;" (assignment_expression "puVar25 = puVar28" identifier = identifier) ;) (if_statement "if (0 < (int)puVar28) {\n    if (puVar17[(int)((int)puVar28 + -1)] == 0) {\n      puVar18 = puVar17 + (int)puVar28;\n      do {\n        puVar25 = (uint *)((int)puVar25 + -1);\n        if (puVar25 == (uint *)0x0) break;\n        puVar4 = puVar18 + -2;\n        puVar18 = puVar18 + -1;\n      } while (*puVar4 == 0);\n    }\n    if (puVar21[(int)((int)puVar28 + -1)] == 0) {\n      puVar18 = puVar21 + (int)puVar28;\n      do {\n        puVar29 = (uint *)((int)puVar29 + -1);\n        if (puVar29 == (uint *)0x0) break;\n        puVar4 = puVar18 + -2;\n        puVar18 = puVar18 + -1;\n      } while (*puVar4 == 0);\n    }\n  }" if (parenthesized_expression "(0 < (int)puVar28)" ( (binary_expression "0 < (int)puVar28" number_literal < (cast_expression "(int)puVar28" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n    if (puVar17[(int)((int)puVar28 + -1)] == 0) {\n      puVar18 = puVar17 + (int)puVar28;\n      do {\n        puVar25 = (uint *)((int)puVar25 + -1);\n        if (puVar25 == (uint *)0x0) break;\n        puVar4 = puVar18 + -2;\n        puVar18 = puVar18 + -1;\n      } while (*puVar4 == 0);\n    }\n    if (puVar21[(int)((int)puVar28 + -1)] == 0) {\n      puVar18 = puVar21 + (int)puVar28;\n      do {\n        puVar29 = (uint *)((int)puVar29 + -1);\n        if (puVar29 == (uint *)0x0) break;\n        puVar4 = puVar18 + -2;\n        puVar18 = puVar18 + -1;\n      } while (*puVar4 == 0);\n    }\n  }" { (if_statement "if (puVar17[(int)((int)puVar28 + -1)] == 0) {\n      puVar18 = puVar17 + (int)puVar28;\n      do {\n        puVar25 = (uint *)((int)puVar25 + -1);\n        if (puVar25 == (uint *)0x0) break;\n        puVar4 = puVar18 + -2;\n        puVar18 = puVar18 + -1;\n      } while (*puVar4 == 0);\n    }" if (parenthesized_expression "(puVar17[(int)((int)puVar28 + -1)] == 0)" ( (binary_expression "puVar17[(int)((int)puVar28 + -1)] == 0" (subscript_expression "puVar17[(int)((int)puVar28 + -1)]" identifier [ (cast_expression "(int)((int)puVar28 + -1)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((int)puVar28 + -1)" ( (binary_expression "(int)puVar28 + -1" (cast_expression "(int)puVar28" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))) ]) == number_literal) )) (compound_statement "{\n      puVar18 = puVar17 + (int)puVar28;\n      do {\n        puVar25 = (uint *)((int)puVar25 + -1);\n        if (puVar25 == (uint *)0x0) break;\n        puVar4 = puVar18 + -2;\n        puVar18 = puVar18 + -1;\n      } while (*puVar4 == 0);\n    }" { (expression_statement "puVar18 = puVar17 + (int)puVar28;" (assignment_expression "puVar18 = puVar17 + (int)puVar28" identifier = (binary_expression "puVar17 + (int)puVar28" identifier + (cast_expression "(int)puVar28" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (do_statement "do {\n        puVar25 = (uint *)((int)puVar25 + -1);\n        if (puVar25 == (uint *)0x0) break;\n        puVar4 = puVar18 + -2;\n        puVar18 = puVar18 + -1;\n      } while (*puVar4 == 0);" do (compound_statement "{\n        puVar25 = (uint *)((int)puVar25 + -1);\n        if (puVar25 == (uint *)0x0) break;\n        puVar4 = puVar18 + -2;\n        puVar18 = puVar18 + -1;\n      }" { (expression_statement "puVar25 = (uint *)((int)puVar25 + -1);" (assignment_expression "puVar25 = (uint *)((int)puVar25 + -1)" identifier = (cast_expression "(uint *)((int)puVar25 + -1)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar25 + -1)" ( (binary_expression "(int)puVar25 + -1" (cast_expression "(int)puVar25" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (if_statement "if (puVar25 == (uint *)0x0) break;" if (parenthesized_expression "(puVar25 == (uint *)0x0)" ( (binary_expression "puVar25 == (uint *)0x0" identifier == (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (break_statement "break;" break ;)) (expression_statement "puVar4 = puVar18 + -2;" (assignment_expression "puVar4 = puVar18 + -2" identifier = (binary_expression "puVar18 + -2" identifier + number_literal)) ;) (expression_statement "puVar18 = puVar18 + -1;" (assignment_expression "puVar18 = puVar18 + -1" identifier = (binary_expression "puVar18 + -1" identifier + number_literal)) ;) }) while (parenthesized_expression "(*puVar4 == 0)" ( (binary_expression "*puVar4 == 0" (pointer_expression "*puVar4" * identifier) == number_literal) )) ;) })) (if_statement "if (puVar21[(int)((int)puVar28 + -1)] == 0) {\n      puVar18 = puVar21 + (int)puVar28;\n      do {\n        puVar29 = (uint *)((int)puVar29 + -1);\n        if (puVar29 == (uint *)0x0) break;\n        puVar4 = puVar18 + -2;\n        puVar18 = puVar18 + -1;\n      } while (*puVar4 == 0);\n    }" if (parenthesized_expression "(puVar21[(int)((int)puVar28 + -1)] == 0)" ( (binary_expression "puVar21[(int)((int)puVar28 + -1)] == 0" (subscript_expression "puVar21[(int)((int)puVar28 + -1)]" identifier [ (cast_expression "(int)((int)puVar28 + -1)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((int)puVar28 + -1)" ( (binary_expression "(int)puVar28 + -1" (cast_expression "(int)puVar28" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))) ]) == number_literal) )) (compound_statement "{\n      puVar18 = puVar21 + (int)puVar28;\n      do {\n        puVar29 = (uint *)((int)puVar29 + -1);\n        if (puVar29 == (uint *)0x0) break;\n        puVar4 = puVar18 + -2;\n        puVar18 = puVar18 + -1;\n      } while (*puVar4 == 0);\n    }" { (expression_statement "puVar18 = puVar21 + (int)puVar28;" (assignment_expression "puVar18 = puVar21 + (int)puVar28" identifier = (binary_expression "puVar21 + (int)puVar28" identifier + (cast_expression "(int)puVar28" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (do_statement "do {\n        puVar29 = (uint *)((int)puVar29 + -1);\n        if (puVar29 == (uint *)0x0) break;\n        puVar4 = puVar18 + -2;\n        puVar18 = puVar18 + -1;\n      } while (*puVar4 == 0);" do (compound_statement "{\n        puVar29 = (uint *)((int)puVar29 + -1);\n        if (puVar29 == (uint *)0x0) break;\n        puVar4 = puVar18 + -2;\n        puVar18 = puVar18 + -1;\n      }" { (expression_statement "puVar29 = (uint *)((int)puVar29 + -1);" (assignment_expression "puVar29 = (uint *)((int)puVar29 + -1)" identifier = (cast_expression "(uint *)((int)puVar29 + -1)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar29 + -1)" ( (binary_expression "(int)puVar29 + -1" (cast_expression "(int)puVar29" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (if_statement "if (puVar29 == (uint *)0x0) break;" if (parenthesized_expression "(puVar29 == (uint *)0x0)" ( (binary_expression "puVar29 == (uint *)0x0" identifier == (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (break_statement "break;" break ;)) (expression_statement "puVar4 = puVar18 + -2;" (assignment_expression "puVar4 = puVar18 + -2" identifier = (binary_expression "puVar18 + -2" identifier + number_literal)) ;) (expression_statement "puVar18 = puVar18 + -1;" (assignment_expression "puVar18 = puVar18 + -1" identifier = (binary_expression "puVar18 + -1" identifier + number_literal)) ;) }) while (parenthesized_expression "(*puVar4 == 0)" ( (binary_expression "*puVar4 == 0" (pointer_expression "*puVar4" * identifier) == number_literal) )) ;) })) })) (expression_statement "iVar32 = *(int *)(iVar24 + 4);" (assignment_expression "iVar32 = *(int *)(iVar24 + 4)" identifier = (pointer_expression "*(int *)(iVar24 + 4)" * (cast_expression "(int *)(iVar24 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar24 + 4)" ( (binary_expression "iVar24 + 4" identifier + number_literal) ))))) ;) (expression_statement "iVar9 = 8;" (assignment_expression "iVar9 = 8" identifier = number_literal) ;) (do_statement "do {\n    iVar22 = iVar9 + -8;\n    do {\n      iVar12 = iVar32;\n      if (0 < iVar32) {\n        iVar7 = *(int *)(iVar24 + iVar22 + 8);\n        iVar11 = *(int *)(iVar7 + iVar32 * 4 + -4);\n        iVar7 = iVar7 + iVar32 * 4;\n        while (iVar11 == 0) {\n          iVar12 = iVar12 + -1;\n          if (iVar12 == 0) break;\n          iVar11 = *(int *)(iVar7 + -8);\n          iVar7 = iVar7 + -4;\n        }\n      }\n      iVar7 = iVar22 + -0x3c;\n      iVar22 = iVar22 + 4;\n      *(int *)(puVar36 + iVar7) = iVar12;\n    } while (iVar9 != iVar22);\n    iVar9 = iVar9 + 8;\n    iVar22 = *(int *)(puVar36 + -0x34);\n  } while (iVar9 != 0x18);" do (compound_statement "{\n    iVar22 = iVar9 + -8;\n    do {\n      iVar12 = iVar32;\n      if (0 < iVar32) {\n        iVar7 = *(int *)(iVar24 + iVar22 + 8);\n        iVar11 = *(int *)(iVar7 + iVar32 * 4 + -4);\n        iVar7 = iVar7 + iVar32 * 4;\n        while (iVar11 == 0) {\n          iVar12 = iVar12 + -1;\n          if (iVar12 == 0) break;\n          iVar11 = *(int *)(iVar7 + -8);\n          iVar7 = iVar7 + -4;\n        }\n      }\n      iVar7 = iVar22 + -0x3c;\n      iVar22 = iVar22 + 4;\n      *(int *)(puVar36 + iVar7) = iVar12;\n    } while (iVar9 != iVar22);\n    iVar9 = iVar9 + 8;\n    iVar22 = *(int *)(puVar36 + -0x34);\n  }" { (expression_statement "iVar22 = iVar9 + -8;" (assignment_expression "iVar22 = iVar9 + -8" identifier = (binary_expression "iVar9 + -8" identifier + number_literal)) ;) (do_statement "do {\n      iVar12 = iVar32;\n      if (0 < iVar32) {\n        iVar7 = *(int *)(iVar24 + iVar22 + 8);\n        iVar11 = *(int *)(iVar7 + iVar32 * 4 + -4);\n        iVar7 = iVar7 + iVar32 * 4;\n        while (iVar11 == 0) {\n          iVar12 = iVar12 + -1;\n          if (iVar12 == 0) break;\n          iVar11 = *(int *)(iVar7 + -8);\n          iVar7 = iVar7 + -4;\n        }\n      }\n      iVar7 = iVar22 + -0x3c;\n      iVar22 = iVar22 + 4;\n      *(int *)(puVar36 + iVar7) = iVar12;\n    } while (iVar9 != iVar22);" do (compound_statement "{\n      iVar12 = iVar32;\n      if (0 < iVar32) {\n        iVar7 = *(int *)(iVar24 + iVar22 + 8);\n        iVar11 = *(int *)(iVar7 + iVar32 * 4 + -4);\n        iVar7 = iVar7 + iVar32 * 4;\n        while (iVar11 == 0) {\n          iVar12 = iVar12 + -1;\n          if (iVar12 == 0) break;\n          iVar11 = *(int *)(iVar7 + -8);\n          iVar7 = iVar7 + -4;\n        }\n      }\n      iVar7 = iVar22 + -0x3c;\n      iVar22 = iVar22 + 4;\n      *(int *)(puVar36 + iVar7) = iVar12;\n    }" { (expression_statement "iVar12 = iVar32;" (assignment_expression "iVar12 = iVar32" identifier = identifier) ;) (if_statement "if (0 < iVar32) {\n        iVar7 = *(int *)(iVar24 + iVar22 + 8);\n        iVar11 = *(int *)(iVar7 + iVar32 * 4 + -4);\n        iVar7 = iVar7 + iVar32 * 4;\n        while (iVar11 == 0) {\n          iVar12 = iVar12 + -1;\n          if (iVar12 == 0) break;\n          iVar11 = *(int *)(iVar7 + -8);\n          iVar7 = iVar7 + -4;\n        }\n      }" if (parenthesized_expression "(0 < iVar32)" ( (binary_expression "0 < iVar32" number_literal < identifier) )) (compound_statement "{\n        iVar7 = *(int *)(iVar24 + iVar22 + 8);\n        iVar11 = *(int *)(iVar7 + iVar32 * 4 + -4);\n        iVar7 = iVar7 + iVar32 * 4;\n        while (iVar11 == 0) {\n          iVar12 = iVar12 + -1;\n          if (iVar12 == 0) break;\n          iVar11 = *(int *)(iVar7 + -8);\n          iVar7 = iVar7 + -4;\n        }\n      }" { (expression_statement "iVar7 = *(int *)(iVar24 + iVar22 + 8);" (assignment_expression "iVar7 = *(int *)(iVar24 + iVar22 + 8)" identifier = (pointer_expression "*(int *)(iVar24 + iVar22 + 8)" * (cast_expression "(int *)(iVar24 + iVar22 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar24 + iVar22 + 8)" ( (binary_expression "iVar24 + iVar22 + 8" (binary_expression "iVar24 + iVar22" identifier + identifier) + number_literal) ))))) ;) (expression_statement "iVar11 = *(int *)(iVar7 + iVar32 * 4 + -4);" (assignment_expression "iVar11 = *(int *)(iVar7 + iVar32 * 4 + -4)" identifier = (pointer_expression "*(int *)(iVar7 + iVar32 * 4 + -4)" * (cast_expression "(int *)(iVar7 + iVar32 * 4 + -4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar7 + iVar32 * 4 + -4)" ( (binary_expression "iVar7 + iVar32 * 4 + -4" (binary_expression "iVar7 + iVar32 * 4" identifier + (binary_expression "iVar32 * 4" identifier * number_literal)) + number_literal) ))))) ;) (expression_statement "iVar7 = iVar7 + iVar32 * 4;" (assignment_expression "iVar7 = iVar7 + iVar32 * 4" identifier = (binary_expression "iVar7 + iVar32 * 4" identifier + (binary_expression "iVar32 * 4" identifier * number_literal))) ;) (while_statement "while (iVar11 == 0) {\n          iVar12 = iVar12 + -1;\n          if (iVar12 == 0) break;\n          iVar11 = *(int *)(iVar7 + -8);\n          iVar7 = iVar7 + -4;\n        }" while (parenthesized_expression "(iVar11 == 0)" ( (binary_expression "iVar11 == 0" identifier == number_literal) )) (compound_statement "{\n          iVar12 = iVar12 + -1;\n          if (iVar12 == 0) break;\n          iVar11 = *(int *)(iVar7 + -8);\n          iVar7 = iVar7 + -4;\n        }" { (expression_statement "iVar12 = iVar12 + -1;" (assignment_expression "iVar12 = iVar12 + -1" identifier = (binary_expression "iVar12 + -1" identifier + number_literal)) ;) (if_statement "if (iVar12 == 0) break;" if (parenthesized_expression "(iVar12 == 0)" ( (binary_expression "iVar12 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar11 = *(int *)(iVar7 + -8);" (assignment_expression "iVar11 = *(int *)(iVar7 + -8)" identifier = (pointer_expression "*(int *)(iVar7 + -8)" * (cast_expression "(int *)(iVar7 + -8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar7 + -8)" ( (binary_expression "iVar7 + -8" identifier + number_literal) ))))) ;) (expression_statement "iVar7 = iVar7 + -4;" (assignment_expression "iVar7 = iVar7 + -4" identifier = (binary_expression "iVar7 + -4" identifier + number_literal)) ;) })) })) (expression_statement "iVar7 = iVar22 + -0x3c;" (assignment_expression "iVar7 = iVar22 + -0x3c" identifier = (binary_expression "iVar22 + -0x3c" identifier + number_literal)) ;) (expression_statement "iVar22 = iVar22 + 4;" (assignment_expression "iVar22 = iVar22 + 4" identifier = (binary_expression "iVar22 + 4" identifier + number_literal)) ;) (expression_statement "*(int *)(puVar36 + iVar7) = iVar12;" (assignment_expression "*(int *)(puVar36 + iVar7) = iVar12" (pointer_expression "*(int *)(puVar36 + iVar7)" * (cast_expression "(int *)(puVar36 + iVar7)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar36 + iVar7)" ( (binary_expression "puVar36 + iVar7" identifier + identifier) )))) = identifier) ;) }) while (parenthesized_expression "(iVar9 != iVar22)" ( (binary_expression "iVar9 != iVar22" identifier != identifier) )) ;) (expression_statement "iVar9 = iVar9 + 8;" (assignment_expression "iVar9 = iVar9 + 8" identifier = (binary_expression "iVar9 + 8" identifier + number_literal)) ;) (expression_statement "iVar22 = *(int *)(puVar36 + -0x34);" (assignment_expression "iVar22 = *(int *)(puVar36 + -0x34)" identifier = (pointer_expression "*(int *)(puVar36 + -0x34)" * (cast_expression "(int *)(puVar36 + -0x34)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar36 + -0x34)" ( (binary_expression "puVar36 + -0x34" identifier + number_literal) ))))) ;) }) while (parenthesized_expression "(iVar9 != 0x18)" ( (binary_expression "iVar9 != 0x18" identifier != number_literal) )) ;) (expression_statement "iVar9 = *(int *)(puVar36 + -0x38);" (assignment_expression "iVar9 = *(int *)(puVar36 + -0x38)" identifier = (pointer_expression "*(int *)(puVar36 + -0x38)" * (cast_expression "(int *)(puVar36 + -0x38)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar36 + -0x38)" ( (binary_expression "puVar36 + -0x38" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar36 + -0x40) = 0;" (assignment_expression "*(undefined4 *)(puVar36 + -0x40) = 0" (pointer_expression "*(undefined4 *)(puVar36 + -0x40)" * (cast_expression "(undefined4 *)(puVar36 + -0x40)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar36 + -0x40)" ( (binary_expression "puVar36 + -0x40" identifier + number_literal) )))) = number_literal) ;) (if_statement "if (iVar9 == 0) {\n    uVar39 = *(undefined4 *)(iVar24 + 0x10);\n    *(int *)(puVar36 + -0x74) = iVar22;\n    *(undefined4 *)(puVar36 + -0x78) = uVar39;\n    puVar28 = puVar21;\n    puVar18 = puVar29;\n    puVar4 = puVar17;\nLAB_0005309c:\n    puVar29 = (uint *)FUN_00052c70(puVar28,puVar18,puVar4,puVar25);\n    iVar9 = *(int *)(puVar36 + -0x68);\nLAB_000530b4:\n    pcVar34 = *(code **)(iVar9 + -0x7a2c);\n    puVar38 = puVar37;\n    if (*(int *)(puVar36 + -0x40) != 0) goto LAB_00053478;\n  }\n  else {\n    if (iVar22 == 0) {\n      uVar39 = *(undefined4 *)(iVar24 + 0xc);\n      *(int *)(puVar36 + -0x74) = iVar9;\n      *(undefined4 *)(puVar36 + -0x78) = uVar39;\n      puVar28 = puVar17;\n      puVar18 = puVar25;\n      puVar4 = puVar21;\n      puVar25 = puVar29;\n      goto LAB_0005309c;\n    }\n    iVar7 = *(int *)(puVar36 + -0x30);\n    pcVar34 = *(code **)(pcVar34 + 0x4454c);\n    iVar12 = (int)puVar25 - *(int *)(puVar36 + -0x3c);\n    *(int *)(puVar36 + -0x50) = *(int *)(puVar36 + -0x3c);\n    *(int *)(puVar36 + -0x44) = iVar9;\n    if ((int)puVar29 - iVar22 <= iVar12) {\n      iVar12 = (int)puVar29 - iVar22;\n    }\n    iVar11 = (int)puVar25 - iVar9;\n    if ((int)puVar29 - iVar7 <= (int)puVar25 - iVar9) {\n      iVar11 = (int)puVar29 - iVar7;\n    }\n    puVar29 = (uint *)(iVar11 + 1);\n    if (iVar11 + 1 <= iVar12 + 1) {\n      puVar29 = (uint *)(iVar12 + 1);\n    }\n    puVar25 = (uint *)(*pcVar34)((int)puVar29 + 1);\n    iVar9 = (int)puVar25 >> 1;\n    iVar12 = *(int *)(puVar36 + -0x68);\n    uVar39 = *(undefined4 *)(puVar36 + -0x44);\n    if (iVar9 < (int)puVar25) {\n      if (iVar32 <= iVar9) {\n        uVar13 = ((int)puVar25 * 3 + iVar9 + 4) * 4;\n        uVar3 = uVar13 + 7;\n        if (0x7f00 < uVar13) {\n          pcVar34 = *(code **)(iVar12 + -0x7d50);\n          goto LAB_0005305c;\n        }\n        goto LAB_00053148;\n      }\n      uVar13 = ((int)puVar25 * 4 + 4) * 4;\n      uVar3 = uVar13 + 7;\n      if (uVar13 < 0x7f01) goto LAB_00053148;\n      pcVar34 = *(code **)(iVar12 + -0x7d50);\nLAB_0005305c:\n      *(uint **)(puVar36 + -0x48) = puVar25;\n      *(undefined4 *)(puVar36 + -0x44) = uVar39;\n      puVar4 = (uint *)(*pcVar34)(puVar36 + -0x40);\n      iVar12 = *(int *)(puVar36 + -0x68);\n      puVar25 = *(uint **)(puVar36 + -0x48);\n      uVar39 = *(undefined4 *)(puVar36 + -0x44);\n    }\n    else {\n      uVar3 = ((int)puVar25 * 3 + 4) * 4;\n      pcVar34 = *(code **)(iVar12 + -0x7d50);\n      if (0x7f00 < uVar3) goto LAB_0005305c;\n      uVar3 = uVar3 + 7;\nLAB_00053148:\n      puVar38 = puVar36 + -(uVar3 & 0xfffffff8) + -0x88;\n      puVar4 = (uint *)(puVar36 + -(uVar3 & 0xfffffff8) + -0x68);\n    }\n    *(uint **)(puVar36 + -0x44) = puVar4 + (int)puVar25;\n    *(uint **)(puVar36 + -0x48) = puVar4 + (int)puVar25 + (int)puVar25;\n    if ((int)puVar25 < (int)puVar28) {\n      pcVar34 = *(code **)(iVar12 + -0x7d0c);\n      puVar18 = (uint *)((int)puVar28 - (int)puVar25);\n      *(undefined4 *)(puVar36 + -0x5c) = uVar39;\n      *(uint **)(puVar36 + -0x58) = puVar25;\n      *(int *)(puVar36 + -0x54) = (int)puVar25 * 4;\n      iVar9 = (*pcVar34)(puVar17,puVar17,puVar17 + (int)puVar25,puVar18);\n      iVar12 = *(int *)(puVar36 + -0x68);\n      iVar32 = *(int *)(puVar36 + -0x54);\n      puVar28 = *(uint **)(puVar36 + -0x58);\n      uVar39 = *(undefined4 *)(puVar36 + -0x5c);\n      if (iVar9 == 0) {\nLAB_0005359c:\n        pcVar34 = *(code **)(iVar12 + -0x7d0c);\n      }\n      else {\n        puVar25 = puVar17;\n        if ((int)puVar28 <= (int)puVar18) {\nLAB_00053588:\n          do {\n            uVar3 = *puVar25;\n            *puVar25 = uVar3 + 1;\n            puVar25 = puVar25 + 1;\n          } while (uVar3 + 1 == 0);\n          goto LAB_0005359c;\n        }\n        puVar31 = puVar17 + (int)puVar18;\n        uVar3 = *puVar31;\n        *puVar31 = uVar3 + 1;\n        puVar19 = puVar18;\n        if (uVar3 + 1 == 0) {\n          do {\n            puVar19 = (uint *)((int)puVar19 + 1);\n            if (puVar28 == puVar19) goto LAB_00053588;\n            uVar3 = puVar31[1];\n            puVar31 = puVar31 + 1;\n            *puVar31 = uVar3 + 1;\n          } while (uVar3 + 1 == 0);\n          goto LAB_0005359c;\n        }\n        pcVar34 = *(code **)(iVar12 + -0x7d0c);\n      }\n      *(uint **)(puVar36 + -0x58) = puVar28;\n      *(undefined4 *)(puVar36 + -0x54) = uVar39;\n      iVar9 = (*pcVar34)(puVar21,puVar21,(int)puVar21 + iVar32,puVar18);\n      iVar12 = *(int *)(puVar36 + -0x68);\n      uVar39 = *(undefined4 *)(puVar36 + -0x54);\n      puVar25 = *(uint **)(puVar36 + -0x58);\n      puVar28 = puVar25;\n      if (iVar9 != 0) {\n        puVar19 = puVar21;\n        if ((int)puVar18 < (int)puVar25) {\n          puVar31 = puVar21 + (int)puVar18;\n          uVar3 = *puVar31 + 1;\n          *puVar31 = uVar3;\n          while (uVar3 == 0) {\n            puVar18 = (uint *)((int)puVar18 + 1);\n            if (puVar25 == puVar18) goto LAB_0005361c;\n            puVar5 = puVar31 + 1;\n            puVar31 = puVar31 + 1;\n            uVar3 = *puVar5 + 1;\n            *puVar31 = uVar3;\n          }\n        }\n        else {\nLAB_0005361c:\n          do {\n            uVar3 = *puVar19;\n            *puVar19 = uVar3 + 1;\n            puVar19 = puVar19 + 1;\n          } while (uVar3 + 1 == 0);\n        }\n      }\n    }\n    uVar8 = *(undefined4 *)(iVar24 + 0x14);\n    pcVar34 = *(code **)(iVar12 + -0x7cd8);\n    *(undefined4 *)(puVar36 + -0x5c) = uVar39;\n    *(uint **)(puVar36 + -0x54) = puVar25;\n    *(undefined4 *)(puVar38 + 0x18) = *(undefined4 *)(puVar36 + -0x48);\n    *(undefined4 *)(puVar38 + 0x10) = uVar8;\n    *(int *)(puVar38 + 0x14) = iVar7;\n    (*pcVar34)(puVar4,puVar25,puVar17,puVar28);\n    uVar39 = *(undefined4 *)(iVar24 + 0xc);\n    uVar26 = *(undefined4 *)(puVar36 + -0x54);\n    uVar27 = *(undefined4 *)(puVar36 + -0x5c);\n    uVar8 = *(undefined4 *)(puVar36 + -0x48);\n    pcVar34 = *(code **)(*(int *)(puVar36 + -0x68) + -0x7cd8);\n    uVar15 = *(undefined4 *)(puVar36 + -0x44);\n    *(undefined4 *)(puVar36 + -0x58) = uVar26;\n    *(undefined4 *)(puVar38 + 0x14) = uVar27;\n    *(undefined4 *)(puVar36 + -0x54) = uVar27;\n    *(undefined4 *)(puVar38 + 0x10) = uVar39;\n    *(undefined4 *)(puVar38 + 0x18) = uVar8;\n    (*pcVar34)(uVar15,uVar26,puVar21,puVar28);\n    iVar9 = *(int *)(puVar36 + -0x58);\n    iVar12 = *(int *)(puVar36 + -0x68);\n    iVar32 = *(int *)(puVar36 + -0x54);\n    if ((iVar7 + (int)puVar28 < iVar9) && (iVar7 != iVar9 - (int)puVar28)) {\n      iVar11 = (iVar9 - (int)puVar28) - iVar7;\n      puVar25 = puVar4 + (int)(iVar7 + (int)puVar28);\n      do {\n        iVar11 = iVar11 + -1;\n        *puVar25 = 0;\n        puVar25 = puVar25 + 1;\n      } while (iVar11 != 0);\n    }\n    pcVar34 = *(code **)(iVar12 + -0x7b2c);\n    if (iVar32 + (int)puVar28 < iVar9) {\n      if (iVar32 != iVar9 - (int)puVar28) {\n        iVar7 = (iVar9 - (int)puVar28) - iVar32;\n        puVar6 = (undefined4 *)(*(int *)(puVar36 + -0x44) + (int)(iVar32 + (int)puVar28) * 4);\n        do {\n          iVar7 = iVar7 + -1;\n          *puVar6 = 0;\n          puVar6 = puVar6 + 1;\n        } while (iVar7 != 0);\n        pcVar34 = *(code **)(iVar12 + -0x7b2c);\n      }\n    }\n    *(int *)(puVar36 + -0x54) = iVar9;\n    uVar3 = (*pcVar34)(puVar4,puVar4,*(undefined4 *)(puVar36 + -0x44),iVar9);\n    uVar13 = *puVar4;\n    iVar9 = *(int *)(puVar36 + -0x68);\n    uVar39 = *(undefined4 *)(puVar36 + -0x54);\n    *puVar4 = uVar13 - uVar3;\n    puVar25 = puVar4;\n    if (uVar13 < uVar3) {\n      do {\n        puVar25 = puVar25 + 1;\n        uVar3 = *puVar25;\n        *puVar25 = uVar3 - 1;\n      } while (uVar3 == 0);\n    }\n    uVar8 = *(undefined4 *)(iVar24 + 0x10);\n    pcVar34 = *(code **)(iVar9 + -0x7cd8);\n    uVar15 = *(undefined4 *)(puVar36 + -0x44);\n    *(undefined4 *)(puVar36 + -0x54) = uVar39;\n    *(undefined4 *)(puVar38 + 0x18) = *(undefined4 *)(puVar36 + -0x48);\n    *(int *)(puVar38 + 0x14) = iVar22;\n    *(undefined4 *)(puVar38 + 0x10) = uVar8;\n    (*pcVar34)(uVar15,uVar39,puVar17,puVar28);\n    iVar9 = *(int *)(puVar36 + -0x68);\n    uVar39 = *(undefined4 *)(puVar36 + -0x54);\n    if (puVar29 != (uint *)0x0) {\n      iVar32 = (int)puVar29 + -1;\n      uVar3 = *puVar4;\n      puVar18 = puVar17;\n      puVar25 = puVar4;\n      if (iVar32 == 0) {\n        *puVar17 = uVar3;\n      }\n      else {\n        do {\n          *puVar18 = uVar3;\n          iVar32 = iVar32 + -1;\n          uVar3 = puVar25[1];\n          puVar18 = puVar18 + 1;\n          puVar25 = puVar25 + 1;\n        } while (iVar32 != 0);\n        puVar17[(int)puVar29 + -1] = uVar3;\n      }\n    }\n    uVar8 = *(undefined4 *)(iVar24 + 8);\n    pcVar34 = *(code **)(iVar9 + -0x7cd8);\n    *(undefined4 *)(puVar38 + 0x18) = *(undefined4 *)(puVar36 + -0x48);\n    *(undefined4 *)(puVar36 + -0x48) = uVar39;\n    *(undefined4 *)(puVar38 + 0x10) = uVar8;\n    *(undefined4 *)(puVar38 + 0x14) = *(undefined4 *)(puVar36 + -0x50);\n    (*pcVar34)(puVar4,uVar39,puVar21,puVar28);\n    iVar9 = *(int *)(puVar36 + -0x48);\n    iVar32 = *(int *)(puVar36 + -0x68);\n    if ((int)puVar28 + iVar22 < iVar9) {\n      if (iVar22 != iVar9 - (int)puVar28) {\n        iVar12 = (iVar9 - (int)puVar28) - iVar22;\n        puVar6 = (undefined4 *)(*(int *)(puVar36 + -0x44) + (int)((int)puVar28 + iVar22) * 4);\n        do {\n          iVar12 = iVar12 + -1;\n          *puVar6 = 0;\n          puVar6 = puVar6 + 1;\n        } while (iVar12 != 0);\n      }\n    }\n    pcVar34 = *(code **)(iVar32 + -0x7b2c);\n    if (*(int *)(puVar36 + -0x50) + (int)puVar28 < iVar9) {\n      if (*(int *)(puVar36 + -0x50) != iVar9 - (int)puVar28) {\n        iVar22 = (iVar9 - (int)puVar28) - *(int *)(puVar36 + -0x50);\n        puVar28 = puVar4 + (int)(*(int *)(puVar36 + -0x50) + (int)puVar28);\n        do {\n          iVar22 = iVar22 + -1;\n          *puVar28 = 0;\n          puVar28 = puVar28 + 1;\n        } while (iVar22 != 0);\n        pcVar34 = *(code **)(iVar32 + -0x7b2c);\n      }\n    }\n    uVar3 = (*pcVar34)(puVar4,puVar4,*(undefined4 *)(puVar36 + -0x44),iVar9);\n    uVar13 = *puVar4;\n    iVar9 = *(int *)(puVar36 + -0x68);\n    puVar18 = (uint *)(uVar13 - uVar3);\n    *puVar4 = (uint)puVar18;\n    puVar28 = puVar4;\n    if (uVar13 < uVar3) {\n      do {\n        puVar28 = puVar28 + 1;\n        uVar3 = *puVar28;\n        puVar18 = (uint *)(uVar3 - 1);\n        *puVar28 = (uint)puVar18;\n      } while (uVar3 == 0);\n    }\n    iVar32 = (int)puVar29 + -1;\n    if (puVar29 == (uint *)0x0) {\n      iVar32 = -4;\n    }\n    else {\n      puVar18 = (uint *)*puVar4;\n      puVar28 = puVar21;\n      if (iVar32 != 0) {\n        do {\n          puVar4 = puVar4 + 1;\n          *puVar28 = (uint)puVar18;\n          iVar32 = iVar32 + -1;\n          puVar18 = (uint *)*puVar4;\n          puVar28 = puVar28 + 1;\n        } while (iVar32 != 0);\n        puVar28 = puVar21 + (int)puVar29 + -1;\n      }\n      *puVar28 = (uint)puVar18;\n      iVar32 = (int)puVar29 * 4 + -4;\n    }\n    puVar37 = puVar38;\n    if (*(int *)((int)puVar17 + iVar32) != 0 || *(int *)((int)puVar21 + iVar32) != 0)\n    goto LAB_000530b4;\n    puVar17 = puVar17 + (int)puVar29 + -2;\n    puVar21 = puVar21 + (int)puVar29 + -2;\n    do {\n      uVar3 = *puVar17;\n      puVar29 = (uint *)((int)puVar29 + -1);\n      uVar13 = *puVar21;\n      puVar17 = puVar17 + -1;\n      puVar21 = puVar21 + -1;\n    } while (uVar3 == 0 && uVar13 == 0);\n    piVar30 = *(int **)(puVar36 + -0x4c);\n    if (*(int *)(puVar36 + -0x40) == 0) goto LAB_000530c4;\n    pcVar34 = *(code **)(iVar9 + -0x7a2c);\nLAB_00053478:\n    (*pcVar34)();\n    iVar9 = *(int *)(puVar36 + -0x68);\n    puVar38 = puVar37;\n  }" if (parenthesized_expression "(iVar9 == 0)" ( (binary_expression "iVar9 == 0" identifier == number_literal) )) (compound_statement "{\n    uVar39 = *(undefined4 *)(iVar24 + 0x10);\n    *(int *)(puVar36 + -0x74) = iVar22;\n    *(undefined4 *)(puVar36 + -0x78) = uVar39;\n    puVar28 = puVar21;\n    puVar18 = puVar29;\n    puVar4 = puVar17;\nLAB_0005309c:\n    puVar29 = (uint *)FUN_00052c70(puVar28,puVar18,puVar4,puVar25);\n    iVar9 = *(int *)(puVar36 + -0x68);\nLAB_000530b4:\n    pcVar34 = *(code **)(iVar9 + -0x7a2c);\n    puVar38 = puVar37;\n    if (*(int *)(puVar36 + -0x40) != 0) goto LAB_00053478;\n  }" { (expression_statement "uVar39 = *(undefined4 *)(iVar24 + 0x10);" (assignment_expression "uVar39 = *(undefined4 *)(iVar24 + 0x10)" identifier = (pointer_expression "*(undefined4 *)(iVar24 + 0x10)" * (cast_expression "(undefined4 *)(iVar24 + 0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar24 + 0x10)" ( (binary_expression "iVar24 + 0x10" identifier + number_literal) ))))) ;) (expression_statement "*(int *)(puVar36 + -0x74) = iVar22;" (assignment_expression "*(int *)(puVar36 + -0x74) = iVar22" (pointer_expression "*(int *)(puVar36 + -0x74)" * (cast_expression "(int *)(puVar36 + -0x74)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar36 + -0x74)" ( (binary_expression "puVar36 + -0x74" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar36 + -0x78) = uVar39;" (assignment_expression "*(undefined4 *)(puVar36 + -0x78) = uVar39" (pointer_expression "*(undefined4 *)(puVar36 + -0x78)" * (cast_expression "(undefined4 *)(puVar36 + -0x78)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar36 + -0x78)" ( (binary_expression "puVar36 + -0x78" identifier + number_literal) )))) = identifier) ;) (expression_statement "puVar28 = puVar21;" (assignment_expression "puVar28 = puVar21" identifier = identifier) ;) (expression_statement "puVar18 = puVar29;" (assignment_expression "puVar18 = puVar29" identifier = identifier) ;) (expression_statement "puVar4 = puVar17;" (assignment_expression "puVar4 = puVar17" identifier = identifier) ;) (labeled_statement "LAB_0005309c:\n    puVar29 = (uint *)FUN_00052c70(puVar28,puVar18,puVar4,puVar25);" statement_identifier : (expression_statement "puVar29 = (uint *)FUN_00052c70(puVar28,puVar18,puVar4,puVar25);" (assignment_expression "puVar29 = (uint *)FUN_00052c70(puVar28,puVar18,puVar4,puVar25)" identifier = (cast_expression "(uint *)FUN_00052c70(puVar28,puVar18,puVar4,puVar25)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00052c70(puVar28,puVar18,puVar4,puVar25)" identifier (argument_list "(puVar28,puVar18,puVar4,puVar25)" ( identifier , identifier , identifier , identifier ))))) ;)) (expression_statement "iVar9 = *(int *)(puVar36 + -0x68);" (assignment_expression "iVar9 = *(int *)(puVar36 + -0x68)" identifier = (pointer_expression "*(int *)(puVar36 + -0x68)" * (cast_expression "(int *)(puVar36 + -0x68)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar36 + -0x68)" ( (binary_expression "puVar36 + -0x68" identifier + number_literal) ))))) ;) (labeled_statement "LAB_000530b4:\n    pcVar34 = *(code **)(iVar9 + -0x7a2c);" statement_identifier : (expression_statement "pcVar34 = *(code **)(iVar9 + -0x7a2c);" (assignment_expression "pcVar34 = *(code **)(iVar9 + -0x7a2c)" identifier = (pointer_expression "*(code **)(iVar9 + -0x7a2c)" * (cast_expression "(code **)(iVar9 + -0x7a2c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar9 + -0x7a2c)" ( (binary_expression "iVar9 + -0x7a2c" identifier + number_literal) ))))) ;)) (expression_statement "puVar38 = puVar37;" (assignment_expression "puVar38 = puVar37" identifier = identifier) ;) (if_statement "if (*(int *)(puVar36 + -0x40) != 0) goto LAB_00053478;" if (parenthesized_expression "(*(int *)(puVar36 + -0x40) != 0)" ( (binary_expression "*(int *)(puVar36 + -0x40) != 0" (pointer_expression "*(int *)(puVar36 + -0x40)" * (cast_expression "(int *)(puVar36 + -0x40)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar36 + -0x40)" ( (binary_expression "puVar36 + -0x40" identifier + number_literal) )))) != number_literal) )) (goto_statement "goto LAB_00053478;" goto statement_identifier ;)) }) (else_clause "else {\n    if (iVar22 == 0) {\n      uVar39 = *(undefined4 *)(iVar24 + 0xc);\n      *(int *)(puVar36 + -0x74) = iVar9;\n      *(undefined4 *)(puVar36 + -0x78) = uVar39;\n      puVar28 = puVar17;\n      puVar18 = puVar25;\n      puVar4 = puVar21;\n      puVar25 = puVar29;\n      goto LAB_0005309c;\n    }\n    iVar7 = *(int *)(puVar36 + -0x30);\n    pcVar34 = *(code **)(pcVar34 + 0x4454c);\n    iVar12 = (int)puVar25 - *(int *)(puVar36 + -0x3c);\n    *(int *)(puVar36 + -0x50) = *(int *)(puVar36 + -0x3c);\n    *(int *)(puVar36 + -0x44) = iVar9;\n    if ((int)puVar29 - iVar22 <= iVar12) {\n      iVar12 = (int)puVar29 - iVar22;\n    }\n    iVar11 = (int)puVar25 - iVar9;\n    if ((int)puVar29 - iVar7 <= (int)puVar25 - iVar9) {\n      iVar11 = (int)puVar29 - iVar7;\n    }\n    puVar29 = (uint *)(iVar11 + 1);\n    if (iVar11 + 1 <= iVar12 + 1) {\n      puVar29 = (uint *)(iVar12 + 1);\n    }\n    puVar25 = (uint *)(*pcVar34)((int)puVar29 + 1);\n    iVar9 = (int)puVar25 >> 1;\n    iVar12 = *(int *)(puVar36 + -0x68);\n    uVar39 = *(undefined4 *)(puVar36 + -0x44);\n    if (iVar9 < (int)puVar25) {\n      if (iVar32 <= iVar9) {\n        uVar13 = ((int)puVar25 * 3 + iVar9 + 4) * 4;\n        uVar3 = uVar13 + 7;\n        if (0x7f00 < uVar13) {\n          pcVar34 = *(code **)(iVar12 + -0x7d50);\n          goto LAB_0005305c;\n        }\n        goto LAB_00053148;\n      }\n      uVar13 = ((int)puVar25 * 4 + 4) * 4;\n      uVar3 = uVar13 + 7;\n      if (uVar13 < 0x7f01) goto LAB_00053148;\n      pcVar34 = *(code **)(iVar12 + -0x7d50);\nLAB_0005305c:\n      *(uint **)(puVar36 + -0x48) = puVar25;\n      *(undefined4 *)(puVar36 + -0x44) = uVar39;\n      puVar4 = (uint *)(*pcVar34)(puVar36 + -0x40);\n      iVar12 = *(int *)(puVar36 + -0x68);\n      puVar25 = *(uint **)(puVar36 + -0x48);\n      uVar39 = *(undefined4 *)(puVar36 + -0x44);\n    }\n    else {\n      uVar3 = ((int)puVar25 * 3 + 4) * 4;\n      pcVar34 = *(code **)(iVar12 + -0x7d50);\n      if (0x7f00 < uVar3) goto LAB_0005305c;\n      uVar3 = uVar3 + 7;\nLAB_00053148:\n      puVar38 = puVar36 + -(uVar3 & 0xfffffff8) + -0x88;\n      puVar4 = (uint *)(puVar36 + -(uVar3 & 0xfffffff8) + -0x68);\n    }\n    *(uint **)(puVar36 + -0x44) = puVar4 + (int)puVar25;\n    *(uint **)(puVar36 + -0x48) = puVar4 + (int)puVar25 + (int)puVar25;\n    if ((int)puVar25 < (int)puVar28) {\n      pcVar34 = *(code **)(iVar12 + -0x7d0c);\n      puVar18 = (uint *)((int)puVar28 - (int)puVar25);\n      *(undefined4 *)(puVar36 + -0x5c) = uVar39;\n      *(uint **)(puVar36 + -0x58) = puVar25;\n      *(int *)(puVar36 + -0x54) = (int)puVar25 * 4;\n      iVar9 = (*pcVar34)(puVar17,puVar17,puVar17 + (int)puVar25,puVar18);\n      iVar12 = *(int *)(puVar36 + -0x68);\n      iVar32 = *(int *)(puVar36 + -0x54);\n      puVar28 = *(uint **)(puVar36 + -0x58);\n      uVar39 = *(undefined4 *)(puVar36 + -0x5c);\n      if (iVar9 == 0) {\nLAB_0005359c:\n        pcVar34 = *(code **)(iVar12 + -0x7d0c);\n      }\n      else {\n        puVar25 = puVar17;\n        if ((int)puVar28 <= (int)puVar18) {\nLAB_00053588:\n          do {\n            uVar3 = *puVar25;\n            *puVar25 = uVar3 + 1;\n            puVar25 = puVar25 + 1;\n          } while (uVar3 + 1 == 0);\n          goto LAB_0005359c;\n        }\n        puVar31 = puVar17 + (int)puVar18;\n        uVar3 = *puVar31;\n        *puVar31 = uVar3 + 1;\n        puVar19 = puVar18;\n        if (uVar3 + 1 == 0) {\n          do {\n            puVar19 = (uint *)((int)puVar19 + 1);\n            if (puVar28 == puVar19) goto LAB_00053588;\n            uVar3 = puVar31[1];\n            puVar31 = puVar31 + 1;\n            *puVar31 = uVar3 + 1;\n          } while (uVar3 + 1 == 0);\n          goto LAB_0005359c;\n        }\n        pcVar34 = *(code **)(iVar12 + -0x7d0c);\n      }\n      *(uint **)(puVar36 + -0x58) = puVar28;\n      *(undefined4 *)(puVar36 + -0x54) = uVar39;\n      iVar9 = (*pcVar34)(puVar21,puVar21,(int)puVar21 + iVar32,puVar18);\n      iVar12 = *(int *)(puVar36 + -0x68);\n      uVar39 = *(undefined4 *)(puVar36 + -0x54);\n      puVar25 = *(uint **)(puVar36 + -0x58);\n      puVar28 = puVar25;\n      if (iVar9 != 0) {\n        puVar19 = puVar21;\n        if ((int)puVar18 < (int)puVar25) {\n          puVar31 = puVar21 + (int)puVar18;\n          uVar3 = *puVar31 + 1;\n          *puVar31 = uVar3;\n          while (uVar3 == 0) {\n            puVar18 = (uint *)((int)puVar18 + 1);\n            if (puVar25 == puVar18) goto LAB_0005361c;\n            puVar5 = puVar31 + 1;\n            puVar31 = puVar31 + 1;\n            uVar3 = *puVar5 + 1;\n            *puVar31 = uVar3;\n          }\n        }\n        else {\nLAB_0005361c:\n          do {\n            uVar3 = *puVar19;\n            *puVar19 = uVar3 + 1;\n            puVar19 = puVar19 + 1;\n          } while (uVar3 + 1 == 0);\n        }\n      }\n    }\n    uVar8 = *(undefined4 *)(iVar24 + 0x14);\n    pcVar34 = *(code **)(iVar12 + -0x7cd8);\n    *(undefined4 *)(puVar36 + -0x5c) = uVar39;\n    *(uint **)(puVar36 + -0x54) = puVar25;\n    *(undefined4 *)(puVar38 + 0x18) = *(undefined4 *)(puVar36 + -0x48);\n    *(undefined4 *)(puVar38 + 0x10) = uVar8;\n    *(int *)(puVar38 + 0x14) = iVar7;\n    (*pcVar34)(puVar4,puVar25,puVar17,puVar28);\n    uVar39 = *(undefined4 *)(iVar24 + 0xc);\n    uVar26 = *(undefined4 *)(puVar36 + -0x54);\n    uVar27 = *(undefined4 *)(puVar36 + -0x5c);\n    uVar8 = *(undefined4 *)(puVar36 + -0x48);\n    pcVar34 = *(code **)(*(int *)(puVar36 + -0x68) + -0x7cd8);\n    uVar15 = *(undefined4 *)(puVar36 + -0x44);\n    *(undefined4 *)(puVar36 + -0x58) = uVar26;\n    *(undefined4 *)(puVar38 + 0x14) = uVar27;\n    *(undefined4 *)(puVar36 + -0x54) = uVar27;\n    *(undefined4 *)(puVar38 + 0x10) = uVar39;\n    *(undefined4 *)(puVar38 + 0x18) = uVar8;\n    (*pcVar34)(uVar15,uVar26,puVar21,puVar28);\n    iVar9 = *(int *)(puVar36 + -0x58);\n    iVar12 = *(int *)(puVar36 + -0x68);\n    iVar32 = *(int *)(puVar36 + -0x54);\n    if ((iVar7 + (int)puVar28 < iVar9) && (iVar7 != iVar9 - (int)puVar28)) {\n      iVar11 = (iVar9 - (int)puVar28) - iVar7;\n      puVar25 = puVar4 + (int)(iVar7 + (int)puVar28);\n      do {\n        iVar11 = iVar11 + -1;\n        *puVar25 = 0;\n        puVar25 = puVar25 + 1;\n      } while (iVar11 != 0);\n    }\n    pcVar34 = *(code **)(iVar12 + -0x7b2c);\n    if (iVar32 + (int)puVar28 < iVar9) {\n      if (iVar32 != iVar9 - (int)puVar28) {\n        iVar7 = (iVar9 - (int)puVar28) - iVar32;\n        puVar6 = (undefined4 *)(*(int *)(puVar36 + -0x44) + (int)(iVar32 + (int)puVar28) * 4);\n        do {\n          iVar7 = iVar7 + -1;\n          *puVar6 = 0;\n          puVar6 = puVar6 + 1;\n        } while (iVar7 != 0);\n        pcVar34 = *(code **)(iVar12 + -0x7b2c);\n      }\n    }\n    *(int *)(puVar36 + -0x54) = iVar9;\n    uVar3 = (*pcVar34)(puVar4,puVar4,*(undefined4 *)(puVar36 + -0x44),iVar9);\n    uVar13 = *puVar4;\n    iVar9 = *(int *)(puVar36 + -0x68);\n    uVar39 = *(undefined4 *)(puVar36 + -0x54);\n    *puVar4 = uVar13 - uVar3;\n    puVar25 = puVar4;\n    if (uVar13 < uVar3) {\n      do {\n        puVar25 = puVar25 + 1;\n        uVar3 = *puVar25;\n        *puVar25 = uVar3 - 1;\n      } while (uVar3 == 0);\n    }\n    uVar8 = *(undefined4 *)(iVar24 + 0x10);\n    pcVar34 = *(code **)(iVar9 + -0x7cd8);\n    uVar15 = *(undefined4 *)(puVar36 + -0x44);\n    *(undefined4 *)(puVar36 + -0x54) = uVar39;\n    *(undefined4 *)(puVar38 + 0x18) = *(undefined4 *)(puVar36 + -0x48);\n    *(int *)(puVar38 + 0x14) = iVar22;\n    *(undefined4 *)(puVar38 + 0x10) = uVar8;\n    (*pcVar34)(uVar15,uVar39,puVar17,puVar28);\n    iVar9 = *(int *)(puVar36 + -0x68);\n    uVar39 = *(undefined4 *)(puVar36 + -0x54);\n    if (puVar29 != (uint *)0x0) {\n      iVar32 = (int)puVar29 + -1;\n      uVar3 = *puVar4;\n      puVar18 = puVar17;\n      puVar25 = puVar4;\n      if (iVar32 == 0) {\n        *puVar17 = uVar3;\n      }\n      else {\n        do {\n          *puVar18 = uVar3;\n          iVar32 = iVar32 + -1;\n          uVar3 = puVar25[1];\n          puVar18 = puVar18 + 1;\n          puVar25 = puVar25 + 1;\n        } while (iVar32 != 0);\n        puVar17[(int)puVar29 + -1] = uVar3;\n      }\n    }\n    uVar8 = *(undefined4 *)(iVar24 + 8);\n    pcVar34 = *(code **)(iVar9 + -0x7cd8);\n    *(undefined4 *)(puVar38 + 0x18) = *(undefined4 *)(puVar36 + -0x48);\n    *(undefined4 *)(puVar36 + -0x48) = uVar39;\n    *(undefined4 *)(puVar38 + 0x10) = uVar8;\n    *(undefined4 *)(puVar38 + 0x14) = *(undefined4 *)(puVar36 + -0x50);\n    (*pcVar34)(puVar4,uVar39,puVar21,puVar28);\n    iVar9 = *(int *)(puVar36 + -0x48);\n    iVar32 = *(int *)(puVar36 + -0x68);\n    if ((int)puVar28 + iVar22 < iVar9) {\n      if (iVar22 != iVar9 - (int)puVar28) {\n        iVar12 = (iVar9 - (int)puVar28) - iVar22;\n        puVar6 = (undefined4 *)(*(int *)(puVar36 + -0x44) + (int)((int)puVar28 + iVar22) * 4);\n        do {\n          iVar12 = iVar12 + -1;\n          *puVar6 = 0;\n          puVar6 = puVar6 + 1;\n        } while (iVar12 != 0);\n      }\n    }\n    pcVar34 = *(code **)(iVar32 + -0x7b2c);\n    if (*(int *)(puVar36 + -0x50) + (int)puVar28 < iVar9) {\n      if (*(int *)(puVar36 + -0x50) != iVar9 - (int)puVar28) {\n        iVar22 = (iVar9 - (int)puVar28) - *(int *)(puVar36 + -0x50);\n        puVar28 = puVar4 + (int)(*(int *)(puVar36 + -0x50) + (int)puVar28);\n        do {\n          iVar22 = iVar22 + -1;\n          *puVar28 = 0;\n          puVar28 = puVar28 + 1;\n        } while (iVar22 != 0);\n        pcVar34 = *(code **)(iVar32 + -0x7b2c);\n      }\n    }\n    uVar3 = (*pcVar34)(puVar4,puVar4,*(undefined4 *)(puVar36 + -0x44),iVar9);\n    uVar13 = *puVar4;\n    iVar9 = *(int *)(puVar36 + -0x68);\n    puVar18 = (uint *)(uVar13 - uVar3);\n    *puVar4 = (uint)puVar18;\n    puVar28 = puVar4;\n    if (uVar13 < uVar3) {\n      do {\n        puVar28 = puVar28 + 1;\n        uVar3 = *puVar28;\n        puVar18 = (uint *)(uVar3 - 1);\n        *puVar28 = (uint)puVar18;\n      } while (uVar3 == 0);\n    }\n    iVar32 = (int)puVar29 + -1;\n    if (puVar29 == (uint *)0x0) {\n      iVar32 = -4;\n    }\n    else {\n      puVar18 = (uint *)*puVar4;\n      puVar28 = puVar21;\n      if (iVar32 != 0) {\n        do {\n          puVar4 = puVar4 + 1;\n          *puVar28 = (uint)puVar18;\n          iVar32 = iVar32 + -1;\n          puVar18 = (uint *)*puVar4;\n          puVar28 = puVar28 + 1;\n        } while (iVar32 != 0);\n        puVar28 = puVar21 + (int)puVar29 + -1;\n      }\n      *puVar28 = (uint)puVar18;\n      iVar32 = (int)puVar29 * 4 + -4;\n    }\n    puVar37 = puVar38;\n    if (*(int *)((int)puVar17 + iVar32) != 0 || *(int *)((int)puVar21 + iVar32) != 0)\n    goto LAB_000530b4;\n    puVar17 = puVar17 + (int)puVar29 + -2;\n    puVar21 = puVar21 + (int)puVar29 + -2;\n    do {\n      uVar3 = *puVar17;\n      puVar29 = (uint *)((int)puVar29 + -1);\n      uVar13 = *puVar21;\n      puVar17 = puVar17 + -1;\n      puVar21 = puVar21 + -1;\n    } while (uVar3 == 0 && uVar13 == 0);\n    piVar30 = *(int **)(puVar36 + -0x4c);\n    if (*(int *)(puVar36 + -0x40) == 0) goto LAB_000530c4;\n    pcVar34 = *(code **)(iVar9 + -0x7a2c);\nLAB_00053478:\n    (*pcVar34)();\n    iVar9 = *(int *)(puVar36 + -0x68);\n    puVar38 = puVar37;\n  }" else (compound_statement "{\n    if (iVar22 == 0) {\n      uVar39 = *(undefined4 *)(iVar24 + 0xc);\n      *(int *)(puVar36 + -0x74) = iVar9;\n      *(undefined4 *)(puVar36 + -0x78) = uVar39;\n      puVar28 = puVar17;\n      puVar18 = puVar25;\n      puVar4 = puVar21;\n      puVar25 = puVar29;\n      goto LAB_0005309c;\n    }\n    iVar7 = *(int *)(puVar36 + -0x30);\n    pcVar34 = *(code **)(pcVar34 + 0x4454c);\n    iVar12 = (int)puVar25 - *(int *)(puVar36 + -0x3c);\n    *(int *)(puVar36 + -0x50) = *(int *)(puVar36 + -0x3c);\n    *(int *)(puVar36 + -0x44) = iVar9;\n    if ((int)puVar29 - iVar22 <= iVar12) {\n      iVar12 = (int)puVar29 - iVar22;\n    }\n    iVar11 = (int)puVar25 - iVar9;\n    if ((int)puVar29 - iVar7 <= (int)puVar25 - iVar9) {\n      iVar11 = (int)puVar29 - iVar7;\n    }\n    puVar29 = (uint *)(iVar11 + 1);\n    if (iVar11 + 1 <= iVar12 + 1) {\n      puVar29 = (uint *)(iVar12 + 1);\n    }\n    puVar25 = (uint *)(*pcVar34)((int)puVar29 + 1);\n    iVar9 = (int)puVar25 >> 1;\n    iVar12 = *(int *)(puVar36 + -0x68);\n    uVar39 = *(undefined4 *)(puVar36 + -0x44);\n    if (iVar9 < (int)puVar25) {\n      if (iVar32 <= iVar9) {\n        uVar13 = ((int)puVar25 * 3 + iVar9 + 4) * 4;\n        uVar3 = uVar13 + 7;\n        if (0x7f00 < uVar13) {\n          pcVar34 = *(code **)(iVar12 + -0x7d50);\n          goto LAB_0005305c;\n        }\n        goto LAB_00053148;\n      }\n      uVar13 = ((int)puVar25 * 4 + 4) * 4;\n      uVar3 = uVar13 + 7;\n      if (uVar13 < 0x7f01) goto LAB_00053148;\n      pcVar34 = *(code **)(iVar12 + -0x7d50);\nLAB_0005305c:\n      *(uint **)(puVar36 + -0x48) = puVar25;\n      *(undefined4 *)(puVar36 + -0x44) = uVar39;\n      puVar4 = (uint *)(*pcVar34)(puVar36 + -0x40);\n      iVar12 = *(int *)(puVar36 + -0x68);\n      puVar25 = *(uint **)(puVar36 + -0x48);\n      uVar39 = *(undefined4 *)(puVar36 + -0x44);\n    }\n    else {\n      uVar3 = ((int)puVar25 * 3 + 4) * 4;\n      pcVar34 = *(code **)(iVar12 + -0x7d50);\n      if (0x7f00 < uVar3) goto LAB_0005305c;\n      uVar3 = uVar3 + 7;\nLAB_00053148:\n      puVar38 = puVar36 + -(uVar3 & 0xfffffff8) + -0x88;\n      puVar4 = (uint *)(puVar36 + -(uVar3 & 0xfffffff8) + -0x68);\n    }\n    *(uint **)(puVar36 + -0x44) = puVar4 + (int)puVar25;\n    *(uint **)(puVar36 + -0x48) = puVar4 + (int)puVar25 + (int)puVar25;\n    if ((int)puVar25 < (int)puVar28) {\n      pcVar34 = *(code **)(iVar12 + -0x7d0c);\n      puVar18 = (uint *)((int)puVar28 - (int)puVar25);\n      *(undefined4 *)(puVar36 + -0x5c) = uVar39;\n      *(uint **)(puVar36 + -0x58) = puVar25;\n      *(int *)(puVar36 + -0x54) = (int)puVar25 * 4;\n      iVar9 = (*pcVar34)(puVar17,puVar17,puVar17 + (int)puVar25,puVar18);\n      iVar12 = *(int *)(puVar36 + -0x68);\n      iVar32 = *(int *)(puVar36 + -0x54);\n      puVar28 = *(uint **)(puVar36 + -0x58);\n      uVar39 = *(undefined4 *)(puVar36 + -0x5c);\n      if (iVar9 == 0) {\nLAB_0005359c:\n        pcVar34 = *(code **)(iVar12 + -0x7d0c);\n      }\n      else {\n        puVar25 = puVar17;\n        if ((int)puVar28 <= (int)puVar18) {\nLAB_00053588:\n          do {\n            uVar3 = *puVar25;\n            *puVar25 = uVar3 + 1;\n            puVar25 = puVar25 + 1;\n          } while (uVar3 + 1 == 0);\n          goto LAB_0005359c;\n        }\n        puVar31 = puVar17 + (int)puVar18;\n        uVar3 = *puVar31;\n        *puVar31 = uVar3 + 1;\n        puVar19 = puVar18;\n        if (uVar3 + 1 == 0) {\n          do {\n            puVar19 = (uint *)((int)puVar19 + 1);\n            if (puVar28 == puVar19) goto LAB_00053588;\n            uVar3 = puVar31[1];\n            puVar31 = puVar31 + 1;\n            *puVar31 = uVar3 + 1;\n          } while (uVar3 + 1 == 0);\n          goto LAB_0005359c;\n        }\n        pcVar34 = *(code **)(iVar12 + -0x7d0c);\n      }\n      *(uint **)(puVar36 + -0x58) = puVar28;\n      *(undefined4 *)(puVar36 + -0x54) = uVar39;\n      iVar9 = (*pcVar34)(puVar21,puVar21,(int)puVar21 + iVar32,puVar18);\n      iVar12 = *(int *)(puVar36 + -0x68);\n      uVar39 = *(undefined4 *)(puVar36 + -0x54);\n      puVar25 = *(uint **)(puVar36 + -0x58);\n      puVar28 = puVar25;\n      if (iVar9 != 0) {\n        puVar19 = puVar21;\n        if ((int)puVar18 < (int)puVar25) {\n          puVar31 = puVar21 + (int)puVar18;\n          uVar3 = *puVar31 + 1;\n          *puVar31 = uVar3;\n          while (uVar3 == 0) {\n            puVar18 = (uint *)((int)puVar18 + 1);\n            if (puVar25 == puVar18) goto LAB_0005361c;\n            puVar5 = puVar31 + 1;\n            puVar31 = puVar31 + 1;\n            uVar3 = *puVar5 + 1;\n            *puVar31 = uVar3;\n          }\n        }\n        else {\nLAB_0005361c:\n          do {\n            uVar3 = *puVar19;\n            *puVar19 = uVar3 + 1;\n            puVar19 = puVar19 + 1;\n          } while (uVar3 + 1 == 0);\n        }\n      }\n    }\n    uVar8 = *(undefined4 *)(iVar24 + 0x14);\n    pcVar34 = *(code **)(iVar12 + -0x7cd8);\n    *(undefined4 *)(puVar36 + -0x5c) = uVar39;\n    *(uint **)(puVar36 + -0x54) = puVar25;\n    *(undefined4 *)(puVar38 + 0x18) = *(undefined4 *)(puVar36 + -0x48);\n    *(undefined4 *)(puVar38 + 0x10) = uVar8;\n    *(int *)(puVar38 + 0x14) = iVar7;\n    (*pcVar34)(puVar4,puVar25,puVar17,puVar28);\n    uVar39 = *(undefined4 *)(iVar24 + 0xc);\n    uVar26 = *(undefined4 *)(puVar36 + -0x54);\n    uVar27 = *(undefined4 *)(puVar36 + -0x5c);\n    uVar8 = *(undefined4 *)(puVar36 + -0x48);\n    pcVar34 = *(code **)(*(int *)(puVar36 + -0x68) + -0x7cd8);\n    uVar15 = *(undefined4 *)(puVar36 + -0x44);\n    *(undefined4 *)(puVar36 + -0x58) = uVar26;\n    *(undefined4 *)(puVar38 + 0x14) = uVar27;\n    *(undefined4 *)(puVar36 + -0x54) = uVar27;\n    *(undefined4 *)(puVar38 + 0x10) = uVar39;\n    *(undefined4 *)(puVar38 + 0x18) = uVar8;\n    (*pcVar34)(uVar15,uVar26,puVar21,puVar28);\n    iVar9 = *(int *)(puVar36 + -0x58);\n    iVar12 = *(int *)(puVar36 + -0x68);\n    iVar32 = *(int *)(puVar36 + -0x54);\n    if ((iVar7 + (int)puVar28 < iVar9) && (iVar7 != iVar9 - (int)puVar28)) {\n      iVar11 = (iVar9 - (int)puVar28) - iVar7;\n      puVar25 = puVar4 + (int)(iVar7 + (int)puVar28);\n      do {\n        iVar11 = iVar11 + -1;\n        *puVar25 = 0;\n        puVar25 = puVar25 + 1;\n      } while (iVar11 != 0);\n    }\n    pcVar34 = *(code **)(iVar12 + -0x7b2c);\n    if (iVar32 + (int)puVar28 < iVar9) {\n      if (iVar32 != iVar9 - (int)puVar28) {\n        iVar7 = (iVar9 - (int)puVar28) - iVar32;\n        puVar6 = (undefined4 *)(*(int *)(puVar36 + -0x44) + (int)(iVar32 + (int)puVar28) * 4);\n        do {\n          iVar7 = iVar7 + -1;\n          *puVar6 = 0;\n          puVar6 = puVar6 + 1;\n        } while (iVar7 != 0);\n        pcVar34 = *(code **)(iVar12 + -0x7b2c);\n      }\n    }\n    *(int *)(puVar36 + -0x54) = iVar9;\n    uVar3 = (*pcVar34)(puVar4,puVar4,*(undefined4 *)(puVar36 + -0x44),iVar9);\n    uVar13 = *puVar4;\n    iVar9 = *(int *)(puVar36 + -0x68);\n    uVar39 = *(undefined4 *)(puVar36 + -0x54);\n    *puVar4 = uVar13 - uVar3;\n    puVar25 = puVar4;\n    if (uVar13 < uVar3) {\n      do {\n        puVar25 = puVar25 + 1;\n        uVar3 = *puVar25;\n        *puVar25 = uVar3 - 1;\n      } while (uVar3 == 0);\n    }\n    uVar8 = *(undefined4 *)(iVar24 + 0x10);\n    pcVar34 = *(code **)(iVar9 + -0x7cd8);\n    uVar15 = *(undefined4 *)(puVar36 + -0x44);\n    *(undefined4 *)(puVar36 + -0x54) = uVar39;\n    *(undefined4 *)(puVar38 + 0x18) = *(undefined4 *)(puVar36 + -0x48);\n    *(int *)(puVar38 + 0x14) = iVar22;\n    *(undefined4 *)(puVar38 + 0x10) = uVar8;\n    (*pcVar34)(uVar15,uVar39,puVar17,puVar28);\n    iVar9 = *(int *)(puVar36 + -0x68);\n    uVar39 = *(undefined4 *)(puVar36 + -0x54);\n    if (puVar29 != (uint *)0x0) {\n      iVar32 = (int)puVar29 + -1;\n      uVar3 = *puVar4;\n      puVar18 = puVar17;\n      puVar25 = puVar4;\n      if (iVar32 == 0) {\n        *puVar17 = uVar3;\n      }\n      else {\n        do {\n          *puVar18 = uVar3;\n          iVar32 = iVar32 + -1;\n          uVar3 = puVar25[1];\n          puVar18 = puVar18 + 1;\n          puVar25 = puVar25 + 1;\n        } while (iVar32 != 0);\n        puVar17[(int)puVar29 + -1] = uVar3;\n      }\n    }\n    uVar8 = *(undefined4 *)(iVar24 + 8);\n    pcVar34 = *(code **)(iVar9 + -0x7cd8);\n    *(undefined4 *)(puVar38 + 0x18) = *(undefined4 *)(puVar36 + -0x48);\n    *(undefined4 *)(puVar36 + -0x48) = uVar39;\n    *(undefined4 *)(puVar38 + 0x10) = uVar8;\n    *(undefined4 *)(puVar38 + 0x14) = *(undefined4 *)(puVar36 + -0x50);\n    (*pcVar34)(puVar4,uVar39,puVar21,puVar28);\n    iVar9 = *(int *)(puVar36 + -0x48);\n    iVar32 = *(int *)(puVar36 + -0x68);\n    if ((int)puVar28 + iVar22 < iVar9) {\n      if (iVar22 != iVar9 - (int)puVar28) {\n        iVar12 = (iVar9 - (int)puVar28) - iVar22;\n        puVar6 = (undefined4 *)(*(int *)(puVar36 + -0x44) + (int)((int)puVar28 + iVar22) * 4);\n        do {\n          iVar12 = iVar12 + -1;\n          *puVar6 = 0;\n          puVar6 = puVar6 + 1;\n        } while (iVar12 != 0);\n      }\n    }\n    pcVar34 = *(code **)(iVar32 + -0x7b2c);\n    if (*(int *)(puVar36 + -0x50) + (int)puVar28 < iVar9) {\n      if (*(int *)(puVar36 + -0x50) != iVar9 - (int)puVar28) {\n        iVar22 = (iVar9 - (int)puVar28) - *(int *)(puVar36 + -0x50);\n        puVar28 = puVar4 + (int)(*(int *)(puVar36 + -0x50) + (int)puVar28);\n        do {\n          iVar22 = iVar22 + -1;\n          *puVar28 = 0;\n          puVar28 = puVar28 + 1;\n        } while (iVar22 != 0);\n        pcVar34 = *(code **)(iVar32 + -0x7b2c);\n      }\n    }\n    uVar3 = (*pcVar34)(puVar4,puVar4,*(undefined4 *)(puVar36 + -0x44),iVar9);\n    uVar13 = *puVar4;\n    iVar9 = *(int *)(puVar36 + -0x68);\n    puVar18 = (uint *)(uVar13 - uVar3);\n    *puVar4 = (uint)puVar18;\n    puVar28 = puVar4;\n    if (uVar13 < uVar3) {\n      do {\n        puVar28 = puVar28 + 1;\n        uVar3 = *puVar28;\n        puVar18 = (uint *)(uVar3 - 1);\n        *puVar28 = (uint)puVar18;\n      } while (uVar3 == 0);\n    }\n    iVar32 = (int)puVar29 + -1;\n    if (puVar29 == (uint *)0x0) {\n      iVar32 = -4;\n    }\n    else {\n      puVar18 = (uint *)*puVar4;\n      puVar28 = puVar21;\n      if (iVar32 != 0) {\n        do {\n          puVar4 = puVar4 + 1;\n          *puVar28 = (uint)puVar18;\n          iVar32 = iVar32 + -1;\n          puVar18 = (uint *)*puVar4;\n          puVar28 = puVar28 + 1;\n        } while (iVar32 != 0);\n        puVar28 = puVar21 + (int)puVar29 + -1;\n      }\n      *puVar28 = (uint)puVar18;\n      iVar32 = (int)puVar29 * 4 + -4;\n    }\n    puVar37 = puVar38;\n    if (*(int *)((int)puVar17 + iVar32) != 0 || *(int *)((int)puVar21 + iVar32) != 0)\n    goto LAB_000530b4;\n    puVar17 = puVar17 + (int)puVar29 + -2;\n    puVar21 = puVar21 + (int)puVar29 + -2;\n    do {\n      uVar3 = *puVar17;\n      puVar29 = (uint *)((int)puVar29 + -1);\n      uVar13 = *puVar21;\n      puVar17 = puVar17 + -1;\n      puVar21 = puVar21 + -1;\n    } while (uVar3 == 0 && uVar13 == 0);\n    piVar30 = *(int **)(puVar36 + -0x4c);\n    if (*(int *)(puVar36 + -0x40) == 0) goto LAB_000530c4;\n    pcVar34 = *(code **)(iVar9 + -0x7a2c);\nLAB_00053478:\n    (*pcVar34)();\n    iVar9 = *(int *)(puVar36 + -0x68);\n    puVar38 = puVar37;\n  }" { (if_statement "if (iVar22 == 0) {\n      uVar39 = *(undefined4 *)(iVar24 + 0xc);\n      *(int *)(puVar36 + -0x74) = iVar9;\n      *(undefined4 *)(puVar36 + -0x78) = uVar39;\n      puVar28 = puVar17;\n      puVar18 = puVar25;\n      puVar4 = puVar21;\n      puVar25 = puVar29;\n      goto LAB_0005309c;\n    }" if (parenthesized_expression "(iVar22 == 0)" ( (binary_expression "iVar22 == 0" identifier == number_literal) )) (compound_statement "{\n      uVar39 = *(undefined4 *)(iVar24 + 0xc);\n      *(int *)(puVar36 + -0x74) = iVar9;\n      *(undefined4 *)(puVar36 + -0x78) = uVar39;\n      puVar28 = puVar17;\n      puVar18 = puVar25;\n      puVar4 = puVar21;\n      puVar25 = puVar29;\n      goto LAB_0005309c;\n    }" { (expression_statement "uVar39 = *(undefined4 *)(iVar24 + 0xc);" (assignment_expression "uVar39 = *(undefined4 *)(iVar24 + 0xc)" identifier = (pointer_expression "*(undefined4 *)(iVar24 + 0xc)" * (cast_expression "(undefined4 *)(iVar24 + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar24 + 0xc)" ( (binary_expression "iVar24 + 0xc" identifier + number_literal) ))))) ;) (expression_statement "*(int *)(puVar36 + -0x74) = iVar9;" (assignment_expression "*(int *)(puVar36 + -0x74) = iVar9" (pointer_expression "*(int *)(puVar36 + -0x74)" * (cast_expression "(int *)(puVar36 + -0x74)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar36 + -0x74)" ( (binary_expression "puVar36 + -0x74" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar36 + -0x78) = uVar39;" (assignment_expression "*(undefined4 *)(puVar36 + -0x78) = uVar39" (pointer_expression "*(undefined4 *)(puVar36 + -0x78)" * (cast_expression "(undefined4 *)(puVar36 + -0x78)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar36 + -0x78)" ( (binary_expression "puVar36 + -0x78" identifier + number_literal) )))) = identifier) ;) (expression_statement "puVar28 = puVar17;" (assignment_expression "puVar28 = puVar17" identifier = identifier) ;) (expression_statement "puVar18 = puVar25;" (assignment_expression "puVar18 = puVar25" identifier = identifier) ;) (expression_statement "puVar4 = puVar21;" (assignment_expression "puVar4 = puVar21" identifier = identifier) ;) (expression_statement "puVar25 = puVar29;" (assignment_expression "puVar25 = puVar29" identifier = identifier) ;) (goto_statement "goto LAB_0005309c;" goto statement_identifier ;) })) (expression_statement "iVar7 = *(int *)(puVar36 + -0x30);" (assignment_expression "iVar7 = *(int *)(puVar36 + -0x30)" identifier = (pointer_expression "*(int *)(puVar36 + -0x30)" * (cast_expression "(int *)(puVar36 + -0x30)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar36 + -0x30)" ( (binary_expression "puVar36 + -0x30" identifier + number_literal) ))))) ;) (expression_statement "pcVar34 = *(code **)(pcVar34 + 0x4454c);" (assignment_expression "pcVar34 = *(code **)(pcVar34 + 0x4454c)" identifier = (pointer_expression "*(code **)(pcVar34 + 0x4454c)" * (cast_expression "(code **)(pcVar34 + 0x4454c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar34 + 0x4454c)" ( (binary_expression "pcVar34 + 0x4454c" identifier + number_literal) ))))) ;) (expression_statement "iVar12 = (int)puVar25 - *(int *)(puVar36 + -0x3c);" (assignment_expression "iVar12 = (int)puVar25 - *(int *)(puVar36 + -0x3c)" identifier = (binary_expression "(int)puVar25 - *(int *)(puVar36 + -0x3c)" (cast_expression "(int)puVar25" ( (type_descriptor "int" primitive_type) ) identifier) - (pointer_expression "*(int *)(puVar36 + -0x3c)" * (cast_expression "(int *)(puVar36 + -0x3c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar36 + -0x3c)" ( (binary_expression "puVar36 + -0x3c" identifier + number_literal) )))))) ;) (expression_statement "*(int *)(puVar36 + -0x50) = *(int *)(puVar36 + -0x3c);" (assignment_expression "*(int *)(puVar36 + -0x50) = *(int *)(puVar36 + -0x3c)" (pointer_expression "*(int *)(puVar36 + -0x50)" * (cast_expression "(int *)(puVar36 + -0x50)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar36 + -0x50)" ( (binary_expression "puVar36 + -0x50" identifier + number_literal) )))) = (pointer_expression "*(int *)(puVar36 + -0x3c)" * (cast_expression "(int *)(puVar36 + -0x3c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar36 + -0x3c)" ( (binary_expression "puVar36 + -0x3c" identifier + number_literal) ))))) ;) (expression_statement "*(int *)(puVar36 + -0x44) = iVar9;" (assignment_expression "*(int *)(puVar36 + -0x44) = iVar9" (pointer_expression "*(int *)(puVar36 + -0x44)" * (cast_expression "(int *)(puVar36 + -0x44)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar36 + -0x44)" ( (binary_expression "puVar36 + -0x44" identifier + number_literal) )))) = identifier) ;) (if_statement "if ((int)puVar29 - iVar22 <= iVar12) {\n      iVar12 = (int)puVar29 - iVar22;\n    }" if (parenthesized_expression "((int)puVar29 - iVar22 <= iVar12)" ( (binary_expression "(int)puVar29 - iVar22 <= iVar12" (binary_expression "(int)puVar29 - iVar22" (cast_expression "(int)puVar29" ( (type_descriptor "int" primitive_type) ) identifier) - identifier) <= identifier) )) (compound_statement "{\n      iVar12 = (int)puVar29 - iVar22;\n    }" { (expression_statement "iVar12 = (int)puVar29 - iVar22;" (assignment_expression "iVar12 = (int)puVar29 - iVar22" identifier = (binary_expression "(int)puVar29 - iVar22" (cast_expression "(int)puVar29" ( (type_descriptor "int" primitive_type) ) identifier) - identifier)) ;) })) (expression_statement "iVar11 = (int)puVar25 - iVar9;" (assignment_expression "iVar11 = (int)puVar25 - iVar9" identifier = (binary_expression "(int)puVar25 - iVar9" (cast_expression "(int)puVar25" ( (type_descriptor "int" primitive_type) ) identifier) - identifier)) ;) (if_statement "if ((int)puVar29 - iVar7 <= (int)puVar25 - iVar9) {\n      iVar11 = (int)puVar29 - iVar7;\n    }" if (parenthesized_expression "((int)puVar29 - iVar7 <= (int)puVar25 - iVar9)" ( (binary_expression "(int)puVar29 - iVar7 <= (int)puVar25 - iVar9" (binary_expression "(int)puVar29 - iVar7" (cast_expression "(int)puVar29" ( (type_descriptor "int" primitive_type) ) identifier) - identifier) <= (binary_expression "(int)puVar25 - iVar9" (cast_expression "(int)puVar25" ( (type_descriptor "int" primitive_type) ) identifier) - identifier)) )) (compound_statement "{\n      iVar11 = (int)puVar29 - iVar7;\n    }" { (expression_statement "iVar11 = (int)puVar29 - iVar7;" (assignment_expression "iVar11 = (int)puVar29 - iVar7" identifier = (binary_expression "(int)puVar29 - iVar7" (cast_expression "(int)puVar29" ( (type_descriptor "int" primitive_type) ) identifier) - identifier)) ;) })) (expression_statement "puVar29 = (uint *)(iVar11 + 1);" (assignment_expression "puVar29 = (uint *)(iVar11 + 1)" identifier = (cast_expression "(uint *)(iVar11 + 1)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar11 + 1)" ( (binary_expression "iVar11 + 1" identifier + number_literal) )))) ;) (if_statement "if (iVar11 + 1 <= iVar12 + 1) {\n      puVar29 = (uint *)(iVar12 + 1);\n    }" if (parenthesized_expression "(iVar11 + 1 <= iVar12 + 1)" ( (binary_expression "iVar11 + 1 <= iVar12 + 1" (binary_expression "iVar11 + 1" identifier + number_literal) <= (binary_expression "iVar12 + 1" identifier + number_literal)) )) (compound_statement "{\n      puVar29 = (uint *)(iVar12 + 1);\n    }" { (expression_statement "puVar29 = (uint *)(iVar12 + 1);" (assignment_expression "puVar29 = (uint *)(iVar12 + 1)" identifier = (cast_expression "(uint *)(iVar12 + 1)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar12 + 1)" ( (binary_expression "iVar12 + 1" identifier + number_literal) )))) ;) })) (expression_statement "puVar25 = (uint *)(*pcVar34)((int)puVar29 + 1);" (assignment_expression "puVar25 = (uint *)(*pcVar34)((int)puVar29 + 1)" identifier = (cast_expression "(uint *)(*pcVar34)((int)puVar29 + 1)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(*pcVar34)((int)puVar29 + 1)" (parenthesized_expression "(*pcVar34)" ( (pointer_expression "*pcVar34" * identifier) )) (argument_list "((int)puVar29 + 1)" ( (binary_expression "(int)puVar29 + 1" (cast_expression "(int)puVar29" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (expression_statement "iVar9 = (int)puVar25 >> 1;" (assignment_expression "iVar9 = (int)puVar25 >> 1" identifier = (binary_expression "(int)puVar25 >> 1" (cast_expression "(int)puVar25" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal)) ;) (expression_statement "iVar12 = *(int *)(puVar36 + -0x68);" (assignment_expression "iVar12 = *(int *)(puVar36 + -0x68)" identifier = (pointer_expression "*(int *)(puVar36 + -0x68)" * (cast_expression "(int *)(puVar36 + -0x68)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar36 + -0x68)" ( (binary_expression "puVar36 + -0x68" identifier + number_literal) ))))) ;) (expression_statement "uVar39 = *(undefined4 *)(puVar36 + -0x44);" (assignment_expression "uVar39 = *(undefined4 *)(puVar36 + -0x44)" identifier = (pointer_expression "*(undefined4 *)(puVar36 + -0x44)" * (cast_expression "(undefined4 *)(puVar36 + -0x44)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar36 + -0x44)" ( (binary_expression "puVar36 + -0x44" identifier + number_literal) ))))) ;) (if_statement "if (iVar9 < (int)puVar25) {\n      if (iVar32 <= iVar9) {\n        uVar13 = ((int)puVar25 * 3 + iVar9 + 4) * 4;\n        uVar3 = uVar13 + 7;\n        if (0x7f00 < uVar13) {\n          pcVar34 = *(code **)(iVar12 + -0x7d50);\n          goto LAB_0005305c;\n        }\n        goto LAB_00053148;\n      }\n      uVar13 = ((int)puVar25 * 4 + 4) * 4;\n      uVar3 = uVar13 + 7;\n      if (uVar13 < 0x7f01) goto LAB_00053148;\n      pcVar34 = *(code **)(iVar12 + -0x7d50);\nLAB_0005305c:\n      *(uint **)(puVar36 + -0x48) = puVar25;\n      *(undefined4 *)(puVar36 + -0x44) = uVar39;\n      puVar4 = (uint *)(*pcVar34)(puVar36 + -0x40);\n      iVar12 = *(int *)(puVar36 + -0x68);\n      puVar25 = *(uint **)(puVar36 + -0x48);\n      uVar39 = *(undefined4 *)(puVar36 + -0x44);\n    }\n    else {\n      uVar3 = ((int)puVar25 * 3 + 4) * 4;\n      pcVar34 = *(code **)(iVar12 + -0x7d50);\n      if (0x7f00 < uVar3) goto LAB_0005305c;\n      uVar3 = uVar3 + 7;\nLAB_00053148:\n      puVar38 = puVar36 + -(uVar3 & 0xfffffff8) + -0x88;\n      puVar4 = (uint *)(puVar36 + -(uVar3 & 0xfffffff8) + -0x68);\n    }" if (parenthesized_expression "(iVar9 < (int)puVar25)" ( (binary_expression "iVar9 < (int)puVar25" identifier < (cast_expression "(int)puVar25" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n      if (iVar32 <= iVar9) {\n        uVar13 = ((int)puVar25 * 3 + iVar9 + 4) * 4;\n        uVar3 = uVar13 + 7;\n        if (0x7f00 < uVar13) {\n          pcVar34 = *(code **)(iVar12 + -0x7d50);\n          goto LAB_0005305c;\n        }\n        goto LAB_00053148;\n      }\n      uVar13 = ((int)puVar25 * 4 + 4) * 4;\n      uVar3 = uVar13 + 7;\n      if (uVar13 < 0x7f01) goto LAB_00053148;\n      pcVar34 = *(code **)(iVar12 + -0x7d50);\nLAB_0005305c:\n      *(uint **)(puVar36 + -0x48) = puVar25;\n      *(undefined4 *)(puVar36 + -0x44) = uVar39;\n      puVar4 = (uint *)(*pcVar34)(puVar36 + -0x40);\n      iVar12 = *(int *)(puVar36 + -0x68);\n      puVar25 = *(uint **)(puVar36 + -0x48);\n      uVar39 = *(undefined4 *)(puVar36 + -0x44);\n    }" { (if_statement "if (iVar32 <= iVar9) {\n        uVar13 = ((int)puVar25 * 3 + iVar9 + 4) * 4;\n        uVar3 = uVar13 + 7;\n        if (0x7f00 < uVar13) {\n          pcVar34 = *(code **)(iVar12 + -0x7d50);\n          goto LAB_0005305c;\n        }\n        goto LAB_00053148;\n      }" if (parenthesized_expression "(iVar32 <= iVar9)" ( (binary_expression "iVar32 <= iVar9" identifier <= identifier) )) (compound_statement "{\n        uVar13 = ((int)puVar25 * 3 + iVar9 + 4) * 4;\n        uVar3 = uVar13 + 7;\n        if (0x7f00 < uVar13) {\n          pcVar34 = *(code **)(iVar12 + -0x7d50);\n          goto LAB_0005305c;\n        }\n        goto LAB_00053148;\n      }" { (expression_statement "uVar13 = ((int)puVar25 * 3 + iVar9 + 4) * 4;" (assignment_expression "uVar13 = ((int)puVar25 * 3 + iVar9 + 4) * 4" identifier = (binary_expression "((int)puVar25 * 3 + iVar9 + 4) * 4" (parenthesized_expression "((int)puVar25 * 3 + iVar9 + 4)" ( (binary_expression "(int)puVar25 * 3 + iVar9 + 4" (binary_expression "(int)puVar25 * 3 + iVar9" (binary_expression "(int)puVar25 * 3" (cast_expression "(int)puVar25" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal) + identifier) + number_literal) )) * number_literal)) ;) (expression_statement "uVar3 = uVar13 + 7;" (assignment_expression "uVar3 = uVar13 + 7" identifier = (binary_expression "uVar13 + 7" identifier + number_literal)) ;) (if_statement "if (0x7f00 < uVar13) {\n          pcVar34 = *(code **)(iVar12 + -0x7d50);\n          goto LAB_0005305c;\n        }" if (parenthesized_expression "(0x7f00 < uVar13)" ( (binary_expression "0x7f00 < uVar13" number_literal < identifier) )) (compound_statement "{\n          pcVar34 = *(code **)(iVar12 + -0x7d50);\n          goto LAB_0005305c;\n        }" { (expression_statement "pcVar34 = *(code **)(iVar12 + -0x7d50);" (assignment_expression "pcVar34 = *(code **)(iVar12 + -0x7d50)" identifier = (pointer_expression "*(code **)(iVar12 + -0x7d50)" * (cast_expression "(code **)(iVar12 + -0x7d50)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar12 + -0x7d50)" ( (binary_expression "iVar12 + -0x7d50" identifier + number_literal) ))))) ;) (goto_statement "goto LAB_0005305c;" goto statement_identifier ;) })) (goto_statement "goto LAB_00053148;" goto statement_identifier ;) })) (expression_statement "uVar13 = ((int)puVar25 * 4 + 4) * 4;" (assignment_expression "uVar13 = ((int)puVar25 * 4 + 4) * 4" identifier = (binary_expression "((int)puVar25 * 4 + 4) * 4" (parenthesized_expression "((int)puVar25 * 4 + 4)" ( (binary_expression "(int)puVar25 * 4 + 4" (binary_expression "(int)puVar25 * 4" (cast_expression "(int)puVar25" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal) + number_literal) )) * number_literal)) ;) (expression_statement "uVar3 = uVar13 + 7;" (assignment_expression "uVar3 = uVar13 + 7" identifier = (binary_expression "uVar13 + 7" identifier + number_literal)) ;) (if_statement "if (uVar13 < 0x7f01) goto LAB_00053148;" if (parenthesized_expression "(uVar13 < 0x7f01)" ( (binary_expression "uVar13 < 0x7f01" identifier < number_literal) )) (goto_statement "goto LAB_00053148;" goto statement_identifier ;)) (expression_statement "pcVar34 = *(code **)(iVar12 + -0x7d50);" (assignment_expression "pcVar34 = *(code **)(iVar12 + -0x7d50)" identifier = (pointer_expression "*(code **)(iVar12 + -0x7d50)" * (cast_expression "(code **)(iVar12 + -0x7d50)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar12 + -0x7d50)" ( (binary_expression "iVar12 + -0x7d50" identifier + number_literal) ))))) ;) (labeled_statement "LAB_0005305c:\n      *(uint **)(puVar36 + -0x48) = puVar25;" statement_identifier : (expression_statement "*(uint **)(puVar36 + -0x48) = puVar25;" (assignment_expression "*(uint **)(puVar36 + -0x48) = puVar25" (pointer_expression "*(uint **)(puVar36 + -0x48)" * (cast_expression "(uint **)(puVar36 + -0x48)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar36 + -0x48)" ( (binary_expression "puVar36 + -0x48" identifier + number_literal) )))) = identifier) ;)) (expression_statement "*(undefined4 *)(puVar36 + -0x44) = uVar39;" (assignment_expression "*(undefined4 *)(puVar36 + -0x44) = uVar39" (pointer_expression "*(undefined4 *)(puVar36 + -0x44)" * (cast_expression "(undefined4 *)(puVar36 + -0x44)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar36 + -0x44)" ( (binary_expression "puVar36 + -0x44" identifier + number_literal) )))) = identifier) ;) (expression_statement "puVar4 = (uint *)(*pcVar34)(puVar36 + -0x40);" (assignment_expression "puVar4 = (uint *)(*pcVar34)(puVar36 + -0x40)" identifier = (cast_expression "(uint *)(*pcVar34)(puVar36 + -0x40)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(*pcVar34)(puVar36 + -0x40)" (parenthesized_expression "(*pcVar34)" ( (pointer_expression "*pcVar34" * identifier) )) (argument_list "(puVar36 + -0x40)" ( (binary_expression "puVar36 + -0x40" identifier + number_literal) ))))) ;) (expression_statement "iVar12 = *(int *)(puVar36 + -0x68);" (assignment_expression "iVar12 = *(int *)(puVar36 + -0x68)" identifier = (pointer_expression "*(int *)(puVar36 + -0x68)" * (cast_expression "(int *)(puVar36 + -0x68)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar36 + -0x68)" ( (binary_expression "puVar36 + -0x68" identifier + number_literal) ))))) ;) (expression_statement "puVar25 = *(uint **)(puVar36 + -0x48);" (assignment_expression "puVar25 = *(uint **)(puVar36 + -0x48)" identifier = (pointer_expression "*(uint **)(puVar36 + -0x48)" * (cast_expression "(uint **)(puVar36 + -0x48)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar36 + -0x48)" ( (binary_expression "puVar36 + -0x48" identifier + number_literal) ))))) ;) (expression_statement "uVar39 = *(undefined4 *)(puVar36 + -0x44);" (assignment_expression "uVar39 = *(undefined4 *)(puVar36 + -0x44)" identifier = (pointer_expression "*(undefined4 *)(puVar36 + -0x44)" * (cast_expression "(undefined4 *)(puVar36 + -0x44)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar36 + -0x44)" ( (binary_expression "puVar36 + -0x44" identifier + number_literal) ))))) ;) }) (else_clause "else {\n      uVar3 = ((int)puVar25 * 3 + 4) * 4;\n      pcVar34 = *(code **)(iVar12 + -0x7d50);\n      if (0x7f00 < uVar3) goto LAB_0005305c;\n      uVar3 = uVar3 + 7;\nLAB_00053148:\n      puVar38 = puVar36 + -(uVar3 & 0xfffffff8) + -0x88;\n      puVar4 = (uint *)(puVar36 + -(uVar3 & 0xfffffff8) + -0x68);\n    }" else (compound_statement "{\n      uVar3 = ((int)puVar25 * 3 + 4) * 4;\n      pcVar34 = *(code **)(iVar12 + -0x7d50);\n      if (0x7f00 < uVar3) goto LAB_0005305c;\n      uVar3 = uVar3 + 7;\nLAB_00053148:\n      puVar38 = puVar36 + -(uVar3 & 0xfffffff8) + -0x88;\n      puVar4 = (uint *)(puVar36 + -(uVar3 & 0xfffffff8) + -0x68);\n    }" { (expression_statement "uVar3 = ((int)puVar25 * 3 + 4) * 4;" (assignment_expression "uVar3 = ((int)puVar25 * 3 + 4) * 4" identifier = (binary_expression "((int)puVar25 * 3 + 4) * 4" (parenthesized_expression "((int)puVar25 * 3 + 4)" ( (binary_expression "(int)puVar25 * 3 + 4" (binary_expression "(int)puVar25 * 3" (cast_expression "(int)puVar25" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal) + number_literal) )) * number_literal)) ;) (expression_statement "pcVar34 = *(code **)(iVar12 + -0x7d50);" (assignment_expression "pcVar34 = *(code **)(iVar12 + -0x7d50)" identifier = (pointer_expression "*(code **)(iVar12 + -0x7d50)" * (cast_expression "(code **)(iVar12 + -0x7d50)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar12 + -0x7d50)" ( (binary_expression "iVar12 + -0x7d50" identifier + number_literal) ))))) ;) (if_statement "if (0x7f00 < uVar3) goto LAB_0005305c;" if (parenthesized_expression "(0x7f00 < uVar3)" ( (binary_expression "0x7f00 < uVar3" number_literal < identifier) )) (goto_statement "goto LAB_0005305c;" goto statement_identifier ;)) (expression_statement "uVar3 = uVar3 + 7;" (assignment_expression "uVar3 = uVar3 + 7" identifier = (binary_expression "uVar3 + 7" identifier + number_literal)) ;) (labeled_statement "LAB_00053148:\n      puVar38 = puVar36 + -(uVar3 & 0xfffffff8) + -0x88;" statement_identifier : (expression_statement "puVar38 = puVar36 + -(uVar3 & 0xfffffff8) + -0x88;" (assignment_expression "puVar38 = puVar36 + -(uVar3 & 0xfffffff8) + -0x88" identifier = (binary_expression "puVar36 + -(uVar3 & 0xfffffff8) + -0x88" (binary_expression "puVar36 + -(uVar3 & 0xfffffff8)" identifier + (unary_expression "-(uVar3 & 0xfffffff8)" - (parenthesized_expression "(uVar3 & 0xfffffff8)" ( (binary_expression "uVar3 & 0xfffffff8" identifier & number_literal) )))) + number_literal)) ;)) (expression_statement "puVar4 = (uint *)(puVar36 + -(uVar3 & 0xfffffff8) + -0x68);" (assignment_expression "puVar4 = (uint *)(puVar36 + -(uVar3 & 0xfffffff8) + -0x68)" identifier = (cast_expression "(uint *)(puVar36 + -(uVar3 & 0xfffffff8) + -0x68)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar36 + -(uVar3 & 0xfffffff8) + -0x68)" ( (binary_expression "puVar36 + -(uVar3 & 0xfffffff8) + -0x68" (binary_expression "puVar36 + -(uVar3 & 0xfffffff8)" identifier + (unary_expression "-(uVar3 & 0xfffffff8)" - (parenthesized_expression "(uVar3 & 0xfffffff8)" ( (binary_expression "uVar3 & 0xfffffff8" identifier & number_literal) )))) + number_literal) )))) ;) }))) (expression_statement "*(uint **)(puVar36 + -0x44) = puVar4 + (int)puVar25;" (assignment_expression "*(uint **)(puVar36 + -0x44) = puVar4 + (int)puVar25" (pointer_expression "*(uint **)(puVar36 + -0x44)" * (cast_expression "(uint **)(puVar36 + -0x44)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar36 + -0x44)" ( (binary_expression "puVar36 + -0x44" identifier + number_literal) )))) = (binary_expression "puVar4 + (int)puVar25" identifier + (cast_expression "(int)puVar25" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "*(uint **)(puVar36 + -0x48) = puVar4 + (int)puVar25 + (int)puVar25;" (assignment_expression "*(uint **)(puVar36 + -0x48) = puVar4 + (int)puVar25 + (int)puVar25" (pointer_expression "*(uint **)(puVar36 + -0x48)" * (cast_expression "(uint **)(puVar36 + -0x48)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar36 + -0x48)" ( (binary_expression "puVar36 + -0x48" identifier + number_literal) )))) = (binary_expression "puVar4 + (int)puVar25 + (int)puVar25" (binary_expression "puVar4 + (int)puVar25" identifier + (cast_expression "(int)puVar25" ( (type_descriptor "int" primitive_type) ) identifier)) + (cast_expression "(int)puVar25" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (if_statement "if ((int)puVar25 < (int)puVar28) {\n      pcVar34 = *(code **)(iVar12 + -0x7d0c);\n      puVar18 = (uint *)((int)puVar28 - (int)puVar25);\n      *(undefined4 *)(puVar36 + -0x5c) = uVar39;\n      *(uint **)(puVar36 + -0x58) = puVar25;\n      *(int *)(puVar36 + -0x54) = (int)puVar25 * 4;\n      iVar9 = (*pcVar34)(puVar17,puVar17,puVar17 + (int)puVar25,puVar18);\n      iVar12 = *(int *)(puVar36 + -0x68);\n      iVar32 = *(int *)(puVar36 + -0x54);\n      puVar28 = *(uint **)(puVar36 + -0x58);\n      uVar39 = *(undefined4 *)(puVar36 + -0x5c);\n      if (iVar9 == 0) {\nLAB_0005359c:\n        pcVar34 = *(code **)(iVar12 + -0x7d0c);\n      }\n      else {\n        puVar25 = puVar17;\n        if ((int)puVar28 <= (int)puVar18) {\nLAB_00053588:\n          do {\n            uVar3 = *puVar25;\n            *puVar25 = uVar3 + 1;\n            puVar25 = puVar25 + 1;\n          } while (uVar3 + 1 == 0);\n          goto LAB_0005359c;\n        }\n        puVar31 = puVar17 + (int)puVar18;\n        uVar3 = *puVar31;\n        *puVar31 = uVar3 + 1;\n        puVar19 = puVar18;\n        if (uVar3 + 1 == 0) {\n          do {\n            puVar19 = (uint *)((int)puVar19 + 1);\n            if (puVar28 == puVar19) goto LAB_00053588;\n            uVar3 = puVar31[1];\n            puVar31 = puVar31 + 1;\n            *puVar31 = uVar3 + 1;\n          } while (uVar3 + 1 == 0);\n          goto LAB_0005359c;\n        }\n        pcVar34 = *(code **)(iVar12 + -0x7d0c);\n      }\n      *(uint **)(puVar36 + -0x58) = puVar28;\n      *(undefined4 *)(puVar36 + -0x54) = uVar39;\n      iVar9 = (*pcVar34)(puVar21,puVar21,(int)puVar21 + iVar32,puVar18);\n      iVar12 = *(int *)(puVar36 + -0x68);\n      uVar39 = *(undefined4 *)(puVar36 + -0x54);\n      puVar25 = *(uint **)(puVar36 + -0x58);\n      puVar28 = puVar25;\n      if (iVar9 != 0) {\n        puVar19 = puVar21;\n        if ((int)puVar18 < (int)puVar25) {\n          puVar31 = puVar21 + (int)puVar18;\n          uVar3 = *puVar31 + 1;\n          *puVar31 = uVar3;\n          while (uVar3 == 0) {\n            puVar18 = (uint *)((int)puVar18 + 1);\n            if (puVar25 == puVar18) goto LAB_0005361c;\n            puVar5 = puVar31 + 1;\n            puVar31 = puVar31 + 1;\n            uVar3 = *puVar5 + 1;\n            *puVar31 = uVar3;\n          }\n        }\n        else {\nLAB_0005361c:\n          do {\n            uVar3 = *puVar19;\n            *puVar19 = uVar3 + 1;\n            puVar19 = puVar19 + 1;\n          } while (uVar3 + 1 == 0);\n        }\n      }\n    }" if (parenthesized_expression "((int)puVar25 < (int)puVar28)" ( (binary_expression "(int)puVar25 < (int)puVar28" (cast_expression "(int)puVar25" ( (type_descriptor "int" primitive_type) ) identifier) < (cast_expression "(int)puVar28" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n      pcVar34 = *(code **)(iVar12 + -0x7d0c);\n      puVar18 = (uint *)((int)puVar28 - (int)puVar25);\n      *(undefined4 *)(puVar36 + -0x5c) = uVar39;\n      *(uint **)(puVar36 + -0x58) = puVar25;\n      *(int *)(puVar36 + -0x54) = (int)puVar25 * 4;\n      iVar9 = (*pcVar34)(puVar17,puVar17,puVar17 + (int)puVar25,puVar18);\n      iVar12 = *(int *)(puVar36 + -0x68);\n      iVar32 = *(int *)(puVar36 + -0x54);\n      puVar28 = *(uint **)(puVar36 + -0x58);\n      uVar39 = *(undefined4 *)(puVar36 + -0x5c);\n      if (iVar9 == 0) {\nLAB_0005359c:\n        pcVar34 = *(code **)(iVar12 + -0x7d0c);\n      }\n      else {\n        puVar25 = puVar17;\n        if ((int)puVar28 <= (int)puVar18) {\nLAB_00053588:\n          do {\n            uVar3 = *puVar25;\n            *puVar25 = uVar3 + 1;\n            puVar25 = puVar25 + 1;\n          } while (uVar3 + 1 == 0);\n          goto LAB_0005359c;\n        }\n        puVar31 = puVar17 + (int)puVar18;\n        uVar3 = *puVar31;\n        *puVar31 = uVar3 + 1;\n        puVar19 = puVar18;\n        if (uVar3 + 1 == 0) {\n          do {\n            puVar19 = (uint *)((int)puVar19 + 1);\n            if (puVar28 == puVar19) goto LAB_00053588;\n            uVar3 = puVar31[1];\n            puVar31 = puVar31 + 1;\n            *puVar31 = uVar3 + 1;\n          } while (uVar3 + 1 == 0);\n          goto LAB_0005359c;\n        }\n        pcVar34 = *(code **)(iVar12 + -0x7d0c);\n      }\n      *(uint **)(puVar36 + -0x58) = puVar28;\n      *(undefined4 *)(puVar36 + -0x54) = uVar39;\n      iVar9 = (*pcVar34)(puVar21,puVar21,(int)puVar21 + iVar32,puVar18);\n      iVar12 = *(int *)(puVar36 + -0x68);\n      uVar39 = *(undefined4 *)(puVar36 + -0x54);\n      puVar25 = *(uint **)(puVar36 + -0x58);\n      puVar28 = puVar25;\n      if (iVar9 != 0) {\n        puVar19 = puVar21;\n        if ((int)puVar18 < (int)puVar25) {\n          puVar31 = puVar21 + (int)puVar18;\n          uVar3 = *puVar31 + 1;\n          *puVar31 = uVar3;\n          while (uVar3 == 0) {\n            puVar18 = (uint *)((int)puVar18 + 1);\n            if (puVar25 == puVar18) goto LAB_0005361c;\n            puVar5 = puVar31 + 1;\n            puVar31 = puVar31 + 1;\n            uVar3 = *puVar5 + 1;\n            *puVar31 = uVar3;\n          }\n        }\n        else {\nLAB_0005361c:\n          do {\n            uVar3 = *puVar19;\n            *puVar19 = uVar3 + 1;\n            puVar19 = puVar19 + 1;\n          } while (uVar3 + 1 == 0);\n        }\n      }\n    }" { (expression_statement "pcVar34 = *(code **)(iVar12 + -0x7d0c);" (assignment_expression "pcVar34 = *(code **)(iVar12 + -0x7d0c)" identifier = (pointer_expression "*(code **)(iVar12 + -0x7d0c)" * (cast_expression "(code **)(iVar12 + -0x7d0c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar12 + -0x7d0c)" ( (binary_expression "iVar12 + -0x7d0c" identifier + number_literal) ))))) ;) (expression_statement "puVar18 = (uint *)((int)puVar28 - (int)puVar25);" (assignment_expression "puVar18 = (uint *)((int)puVar28 - (int)puVar25)" identifier = (cast_expression "(uint *)((int)puVar28 - (int)puVar25)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar28 - (int)puVar25)" ( (binary_expression "(int)puVar28 - (int)puVar25" (cast_expression "(int)puVar28" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)puVar25" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) (expression_statement "*(undefined4 *)(puVar36 + -0x5c) = uVar39;" (assignment_expression "*(undefined4 *)(puVar36 + -0x5c) = uVar39" (pointer_expression "*(undefined4 *)(puVar36 + -0x5c)" * (cast_expression "(undefined4 *)(puVar36 + -0x5c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar36 + -0x5c)" ( (binary_expression "puVar36 + -0x5c" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(uint **)(puVar36 + -0x58) = puVar25;" (assignment_expression "*(uint **)(puVar36 + -0x58) = puVar25" (pointer_expression "*(uint **)(puVar36 + -0x58)" * (cast_expression "(uint **)(puVar36 + -0x58)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar36 + -0x58)" ( (binary_expression "puVar36 + -0x58" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(puVar36 + -0x54) = (int)puVar25 * 4;" (assignment_expression "*(int *)(puVar36 + -0x54) = (int)puVar25 * 4" (pointer_expression "*(int *)(puVar36 + -0x54)" * (cast_expression "(int *)(puVar36 + -0x54)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar36 + -0x54)" ( (binary_expression "puVar36 + -0x54" identifier + number_literal) )))) = (binary_expression "(int)puVar25 * 4" (cast_expression "(int)puVar25" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal)) ;) (expression_statement "iVar9 = (*pcVar34)(puVar17,puVar17,puVar17 + (int)puVar25,puVar18);" (assignment_expression "iVar9 = (*pcVar34)(puVar17,puVar17,puVar17 + (int)puVar25,puVar18)" identifier = (call_expression "(*pcVar34)(puVar17,puVar17,puVar17 + (int)puVar25,puVar18)" (parenthesized_expression "(*pcVar34)" ( (pointer_expression "*pcVar34" * identifier) )) (argument_list "(puVar17,puVar17,puVar17 + (int)puVar25,puVar18)" ( identifier , identifier , (binary_expression "puVar17 + (int)puVar25" identifier + (cast_expression "(int)puVar25" ( (type_descriptor "int" primitive_type) ) identifier)) , identifier )))) ;) (expression_statement "iVar12 = *(int *)(puVar36 + -0x68);" (assignment_expression "iVar12 = *(int *)(puVar36 + -0x68)" identifier = (pointer_expression "*(int *)(puVar36 + -0x68)" * (cast_expression "(int *)(puVar36 + -0x68)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar36 + -0x68)" ( (binary_expression "puVar36 + -0x68" identifier + number_literal) ))))) ;) (expression_statement "iVar32 = *(int *)(puVar36 + -0x54);" (assignment_expression "iVar32 = *(int *)(puVar36 + -0x54)" identifier = (pointer_expression "*(int *)(puVar36 + -0x54)" * (cast_expression "(int *)(puVar36 + -0x54)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar36 + -0x54)" ( (binary_expression "puVar36 + -0x54" identifier + number_literal) ))))) ;) (expression_statement "puVar28 = *(uint **)(puVar36 + -0x58);" (assignment_expression "puVar28 = *(uint **)(puVar36 + -0x58)" identifier = (pointer_expression "*(uint **)(puVar36 + -0x58)" * (cast_expression "(uint **)(puVar36 + -0x58)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar36 + -0x58)" ( (binary_expression "puVar36 + -0x58" identifier + number_literal) ))))) ;) (expression_statement "uVar39 = *(undefined4 *)(puVar36 + -0x5c);" (assignment_expression "uVar39 = *(undefined4 *)(puVar36 + -0x5c)" identifier = (pointer_expression "*(undefined4 *)(puVar36 + -0x5c)" * (cast_expression "(undefined4 *)(puVar36 + -0x5c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar36 + -0x5c)" ( (binary_expression "puVar36 + -0x5c" identifier + number_literal) ))))) ;) (if_statement "if (iVar9 == 0) {\nLAB_0005359c:\n        pcVar34 = *(code **)(iVar12 + -0x7d0c);\n      }\n      else {\n        puVar25 = puVar17;\n        if ((int)puVar28 <= (int)puVar18) {\nLAB_00053588:\n          do {\n            uVar3 = *puVar25;\n            *puVar25 = uVar3 + 1;\n            puVar25 = puVar25 + 1;\n          } while (uVar3 + 1 == 0);\n          goto LAB_0005359c;\n        }\n        puVar31 = puVar17 + (int)puVar18;\n        uVar3 = *puVar31;\n        *puVar31 = uVar3 + 1;\n        puVar19 = puVar18;\n        if (uVar3 + 1 == 0) {\n          do {\n            puVar19 = (uint *)((int)puVar19 + 1);\n            if (puVar28 == puVar19) goto LAB_00053588;\n            uVar3 = puVar31[1];\n            puVar31 = puVar31 + 1;\n            *puVar31 = uVar3 + 1;\n          } while (uVar3 + 1 == 0);\n          goto LAB_0005359c;\n        }\n        pcVar34 = *(code **)(iVar12 + -0x7d0c);\n      }" if (parenthesized_expression "(iVar9 == 0)" ( (binary_expression "iVar9 == 0" identifier == number_literal) )) (compound_statement "{\nLAB_0005359c:\n        pcVar34 = *(code **)(iVar12 + -0x7d0c);\n      }" { (labeled_statement "LAB_0005359c:\n        pcVar34 = *(code **)(iVar12 + -0x7d0c);" statement_identifier : (expression_statement "pcVar34 = *(code **)(iVar12 + -0x7d0c);" (assignment_expression "pcVar34 = *(code **)(iVar12 + -0x7d0c)" identifier = (pointer_expression "*(code **)(iVar12 + -0x7d0c)" * (cast_expression "(code **)(iVar12 + -0x7d0c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar12 + -0x7d0c)" ( (binary_expression "iVar12 + -0x7d0c" identifier + number_literal) ))))) ;)) }) (else_clause "else {\n        puVar25 = puVar17;\n        if ((int)puVar28 <= (int)puVar18) {\nLAB_00053588:\n          do {\n            uVar3 = *puVar25;\n            *puVar25 = uVar3 + 1;\n            puVar25 = puVar25 + 1;\n          } while (uVar3 + 1 == 0);\n          goto LAB_0005359c;\n        }\n        puVar31 = puVar17 + (int)puVar18;\n        uVar3 = *puVar31;\n        *puVar31 = uVar3 + 1;\n        puVar19 = puVar18;\n        if (uVar3 + 1 == 0) {\n          do {\n            puVar19 = (uint *)((int)puVar19 + 1);\n            if (puVar28 == puVar19) goto LAB_00053588;\n            uVar3 = puVar31[1];\n            puVar31 = puVar31 + 1;\n            *puVar31 = uVar3 + 1;\n          } while (uVar3 + 1 == 0);\n          goto LAB_0005359c;\n        }\n        pcVar34 = *(code **)(iVar12 + -0x7d0c);\n      }" else (compound_statement "{\n        puVar25 = puVar17;\n        if ((int)puVar28 <= (int)puVar18) {\nLAB_00053588:\n          do {\n            uVar3 = *puVar25;\n            *puVar25 = uVar3 + 1;\n            puVar25 = puVar25 + 1;\n          } while (uVar3 + 1 == 0);\n          goto LAB_0005359c;\n        }\n        puVar31 = puVar17 + (int)puVar18;\n        uVar3 = *puVar31;\n        *puVar31 = uVar3 + 1;\n        puVar19 = puVar18;\n        if (uVar3 + 1 == 0) {\n          do {\n            puVar19 = (uint *)((int)puVar19 + 1);\n            if (puVar28 == puVar19) goto LAB_00053588;\n            uVar3 = puVar31[1];\n            puVar31 = puVar31 + 1;\n            *puVar31 = uVar3 + 1;\n          } while (uVar3 + 1 == 0);\n          goto LAB_0005359c;\n        }\n        pcVar34 = *(code **)(iVar12 + -0x7d0c);\n      }" { (expression_statement "puVar25 = puVar17;" (assignment_expression "puVar25 = puVar17" identifier = identifier) ;) (if_statement "if ((int)puVar28 <= (int)puVar18) {\nLAB_00053588:\n          do {\n            uVar3 = *puVar25;\n            *puVar25 = uVar3 + 1;\n            puVar25 = puVar25 + 1;\n          } while (uVar3 + 1 == 0);\n          goto LAB_0005359c;\n        }" if (parenthesized_expression "((int)puVar28 <= (int)puVar18)" ( (binary_expression "(int)puVar28 <= (int)puVar18" (cast_expression "(int)puVar28" ( (type_descriptor "int" primitive_type) ) identifier) <= (cast_expression "(int)puVar18" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\nLAB_00053588:\n          do {\n            uVar3 = *puVar25;\n            *puVar25 = uVar3 + 1;\n            puVar25 = puVar25 + 1;\n          } while (uVar3 + 1 == 0);\n          goto LAB_0005359c;\n        }" { (labeled_statement "LAB_00053588:\n          do {\n            uVar3 = *puVar25;\n            *puVar25 = uVar3 + 1;\n            puVar25 = puVar25 + 1;\n          } while (uVar3 + 1 == 0);" statement_identifier : (do_statement "do {\n            uVar3 = *puVar25;\n            *puVar25 = uVar3 + 1;\n            puVar25 = puVar25 + 1;\n          } while (uVar3 + 1 == 0);" do (compound_statement "{\n            uVar3 = *puVar25;\n            *puVar25 = uVar3 + 1;\n            puVar25 = puVar25 + 1;\n          }" { (expression_statement "uVar3 = *puVar25;" (assignment_expression "uVar3 = *puVar25" identifier = (pointer_expression "*puVar25" * identifier)) ;) (expression_statement "*puVar25 = uVar3 + 1;" (assignment_expression "*puVar25 = uVar3 + 1" (pointer_expression "*puVar25" * identifier) = (binary_expression "uVar3 + 1" identifier + number_literal)) ;) (expression_statement "puVar25 = puVar25 + 1;" (assignment_expression "puVar25 = puVar25 + 1" identifier = (binary_expression "puVar25 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar3 + 1 == 0)" ( (binary_expression "uVar3 + 1 == 0" (binary_expression "uVar3 + 1" identifier + number_literal) == number_literal) )) ;)) (goto_statement "goto LAB_0005359c;" goto statement_identifier ;) })) (expression_statement "puVar31 = puVar17 + (int)puVar18;" (assignment_expression "puVar31 = puVar17 + (int)puVar18" identifier = (binary_expression "puVar17 + (int)puVar18" identifier + (cast_expression "(int)puVar18" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "uVar3 = *puVar31;" (assignment_expression "uVar3 = *puVar31" identifier = (pointer_expression "*puVar31" * identifier)) ;) (expression_statement "*puVar31 = uVar3 + 1;" (assignment_expression "*puVar31 = uVar3 + 1" (pointer_expression "*puVar31" * identifier) = (binary_expression "uVar3 + 1" identifier + number_literal)) ;) (expression_statement "puVar19 = puVar18;" (assignment_expression "puVar19 = puVar18" identifier = identifier) ;) (if_statement "if (uVar3 + 1 == 0) {\n          do {\n            puVar19 = (uint *)((int)puVar19 + 1);\n            if (puVar28 == puVar19) goto LAB_00053588;\n            uVar3 = puVar31[1];\n            puVar31 = puVar31 + 1;\n            *puVar31 = uVar3 + 1;\n          } while (uVar3 + 1 == 0);\n          goto LAB_0005359c;\n        }" if (parenthesized_expression "(uVar3 + 1 == 0)" ( (binary_expression "uVar3 + 1 == 0" (binary_expression "uVar3 + 1" identifier + number_literal) == number_literal) )) (compound_statement "{\n          do {\n            puVar19 = (uint *)((int)puVar19 + 1);\n            if (puVar28 == puVar19) goto LAB_00053588;\n            uVar3 = puVar31[1];\n            puVar31 = puVar31 + 1;\n            *puVar31 = uVar3 + 1;\n          } while (uVar3 + 1 == 0);\n          goto LAB_0005359c;\n        }" { (do_statement "do {\n            puVar19 = (uint *)((int)puVar19 + 1);\n            if (puVar28 == puVar19) goto LAB_00053588;\n            uVar3 = puVar31[1];\n            puVar31 = puVar31 + 1;\n            *puVar31 = uVar3 + 1;\n          } while (uVar3 + 1 == 0);" do (compound_statement "{\n            puVar19 = (uint *)((int)puVar19 + 1);\n            if (puVar28 == puVar19) goto LAB_00053588;\n            uVar3 = puVar31[1];\n            puVar31 = puVar31 + 1;\n            *puVar31 = uVar3 + 1;\n          }" { (expression_statement "puVar19 = (uint *)((int)puVar19 + 1);" (assignment_expression "puVar19 = (uint *)((int)puVar19 + 1)" identifier = (cast_expression "(uint *)((int)puVar19 + 1)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar19 + 1)" ( (binary_expression "(int)puVar19 + 1" (cast_expression "(int)puVar19" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (if_statement "if (puVar28 == puVar19) goto LAB_00053588;" if (parenthesized_expression "(puVar28 == puVar19)" ( (binary_expression "puVar28 == puVar19" identifier == identifier) )) (goto_statement "goto LAB_00053588;" goto statement_identifier ;)) (expression_statement "uVar3 = puVar31[1];" (assignment_expression "uVar3 = puVar31[1]" identifier = (subscript_expression "puVar31[1]" identifier [ number_literal ])) ;) (expression_statement "puVar31 = puVar31 + 1;" (assignment_expression "puVar31 = puVar31 + 1" identifier = (binary_expression "puVar31 + 1" identifier + number_literal)) ;) (expression_statement "*puVar31 = uVar3 + 1;" (assignment_expression "*puVar31 = uVar3 + 1" (pointer_expression "*puVar31" * identifier) = (binary_expression "uVar3 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar3 + 1 == 0)" ( (binary_expression "uVar3 + 1 == 0" (binary_expression "uVar3 + 1" identifier + number_literal) == number_literal) )) ;) (goto_statement "goto LAB_0005359c;" goto statement_identifier ;) })) (expression_statement "pcVar34 = *(code **)(iVar12 + -0x7d0c);" (assignment_expression "pcVar34 = *(code **)(iVar12 + -0x7d0c)" identifier = (pointer_expression "*(code **)(iVar12 + -0x7d0c)" * (cast_expression "(code **)(iVar12 + -0x7d0c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar12 + -0x7d0c)" ( (binary_expression "iVar12 + -0x7d0c" identifier + number_literal) ))))) ;) }))) (expression_statement "*(uint **)(puVar36 + -0x58) = puVar28;" (assignment_expression "*(uint **)(puVar36 + -0x58) = puVar28" (pointer_expression "*(uint **)(puVar36 + -0x58)" * (cast_expression "(uint **)(puVar36 + -0x58)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar36 + -0x58)" ( (binary_expression "puVar36 + -0x58" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar36 + -0x54) = uVar39;" (assignment_expression "*(undefined4 *)(puVar36 + -0x54) = uVar39" (pointer_expression "*(undefined4 *)(puVar36 + -0x54)" * (cast_expression "(undefined4 *)(puVar36 + -0x54)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar36 + -0x54)" ( (binary_expression "puVar36 + -0x54" identifier + number_literal) )))) = identifier) ;) (expression_statement "iVar9 = (*pcVar34)(puVar21,puVar21,(int)puVar21 + iVar32,puVar18);" (assignment_expression "iVar9 = (*pcVar34)(puVar21,puVar21,(int)puVar21 + iVar32,puVar18)" identifier = (call_expression "(*pcVar34)(puVar21,puVar21,(int)puVar21 + iVar32,puVar18)" (parenthesized_expression "(*pcVar34)" ( (pointer_expression "*pcVar34" * identifier) )) (argument_list "(puVar21,puVar21,(int)puVar21 + iVar32,puVar18)" ( identifier , identifier , (binary_expression "(int)puVar21 + iVar32" (cast_expression "(int)puVar21" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) , identifier )))) ;) (expression_statement "iVar12 = *(int *)(puVar36 + -0x68);" (assignment_expression "iVar12 = *(int *)(puVar36 + -0x68)" identifier = (pointer_expression "*(int *)(puVar36 + -0x68)" * (cast_expression "(int *)(puVar36 + -0x68)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar36 + -0x68)" ( (binary_expression "puVar36 + -0x68" identifier + number_literal) ))))) ;) (expression_statement "uVar39 = *(undefined4 *)(puVar36 + -0x54);" (assignment_expression "uVar39 = *(undefined4 *)(puVar36 + -0x54)" identifier = (pointer_expression "*(undefined4 *)(puVar36 + -0x54)" * (cast_expression "(undefined4 *)(puVar36 + -0x54)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar36 + -0x54)" ( (binary_expression "puVar36 + -0x54" identifier + number_literal) ))))) ;) (expression_statement "puVar25 = *(uint **)(puVar36 + -0x58);" (assignment_expression "puVar25 = *(uint **)(puVar36 + -0x58)" identifier = (pointer_expression "*(uint **)(puVar36 + -0x58)" * (cast_expression "(uint **)(puVar36 + -0x58)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar36 + -0x58)" ( (binary_expression "puVar36 + -0x58" identifier + number_literal) ))))) ;) (expression_statement "puVar28 = puVar25;" (assignment_expression "puVar28 = puVar25" identifier = identifier) ;) (if_statement "if (iVar9 != 0) {\n        puVar19 = puVar21;\n        if ((int)puVar18 < (int)puVar25) {\n          puVar31 = puVar21 + (int)puVar18;\n          uVar3 = *puVar31 + 1;\n          *puVar31 = uVar3;\n          while (uVar3 == 0) {\n            puVar18 = (uint *)((int)puVar18 + 1);\n            if (puVar25 == puVar18) goto LAB_0005361c;\n            puVar5 = puVar31 + 1;\n            puVar31 = puVar31 + 1;\n            uVar3 = *puVar5 + 1;\n            *puVar31 = uVar3;\n          }\n        }\n        else {\nLAB_0005361c:\n          do {\n            uVar3 = *puVar19;\n            *puVar19 = uVar3 + 1;\n            puVar19 = puVar19 + 1;\n          } while (uVar3 + 1 == 0);\n        }\n      }" if (parenthesized_expression "(iVar9 != 0)" ( (binary_expression "iVar9 != 0" identifier != number_literal) )) (compound_statement "{\n        puVar19 = puVar21;\n        if ((int)puVar18 < (int)puVar25) {\n          puVar31 = puVar21 + (int)puVar18;\n          uVar3 = *puVar31 + 1;\n          *puVar31 = uVar3;\n          while (uVar3 == 0) {\n            puVar18 = (uint *)((int)puVar18 + 1);\n            if (puVar25 == puVar18) goto LAB_0005361c;\n            puVar5 = puVar31 + 1;\n            puVar31 = puVar31 + 1;\n            uVar3 = *puVar5 + 1;\n            *puVar31 = uVar3;\n          }\n        }\n        else {\nLAB_0005361c:\n          do {\n            uVar3 = *puVar19;\n            *puVar19 = uVar3 + 1;\n            puVar19 = puVar19 + 1;\n          } while (uVar3 + 1 == 0);\n        }\n      }" { (expression_statement "puVar19 = puVar21;" (assignment_expression "puVar19 = puVar21" identifier = identifier) ;) (if_statement "if ((int)puVar18 < (int)puVar25) {\n          puVar31 = puVar21 + (int)puVar18;\n          uVar3 = *puVar31 + 1;\n          *puVar31 = uVar3;\n          while (uVar3 == 0) {\n            puVar18 = (uint *)((int)puVar18 + 1);\n            if (puVar25 == puVar18) goto LAB_0005361c;\n            puVar5 = puVar31 + 1;\n            puVar31 = puVar31 + 1;\n            uVar3 = *puVar5 + 1;\n            *puVar31 = uVar3;\n          }\n        }\n        else {\nLAB_0005361c:\n          do {\n            uVar3 = *puVar19;\n            *puVar19 = uVar3 + 1;\n            puVar19 = puVar19 + 1;\n          } while (uVar3 + 1 == 0);\n        }" if (parenthesized_expression "((int)puVar18 < (int)puVar25)" ( (binary_expression "(int)puVar18 < (int)puVar25" (cast_expression "(int)puVar18" ( (type_descriptor "int" primitive_type) ) identifier) < (cast_expression "(int)puVar25" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n          puVar31 = puVar21 + (int)puVar18;\n          uVar3 = *puVar31 + 1;\n          *puVar31 = uVar3;\n          while (uVar3 == 0) {\n            puVar18 = (uint *)((int)puVar18 + 1);\n            if (puVar25 == puVar18) goto LAB_0005361c;\n            puVar5 = puVar31 + 1;\n            puVar31 = puVar31 + 1;\n            uVar3 = *puVar5 + 1;\n            *puVar31 = uVar3;\n          }\n        }" { (expression_statement "puVar31 = puVar21 + (int)puVar18;" (assignment_expression "puVar31 = puVar21 + (int)puVar18" identifier = (binary_expression "puVar21 + (int)puVar18" identifier + (cast_expression "(int)puVar18" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "uVar3 = *puVar31 + 1;" (assignment_expression "uVar3 = *puVar31 + 1" identifier = (binary_expression "*puVar31 + 1" (pointer_expression "*puVar31" * identifier) + number_literal)) ;) (expression_statement "*puVar31 = uVar3;" (assignment_expression "*puVar31 = uVar3" (pointer_expression "*puVar31" * identifier) = identifier) ;) (while_statement "while (uVar3 == 0) {\n            puVar18 = (uint *)((int)puVar18 + 1);\n            if (puVar25 == puVar18) goto LAB_0005361c;\n            puVar5 = puVar31 + 1;\n            puVar31 = puVar31 + 1;\n            uVar3 = *puVar5 + 1;\n            *puVar31 = uVar3;\n          }" while (parenthesized_expression "(uVar3 == 0)" ( (binary_expression "uVar3 == 0" identifier == number_literal) )) (compound_statement "{\n            puVar18 = (uint *)((int)puVar18 + 1);\n            if (puVar25 == puVar18) goto LAB_0005361c;\n            puVar5 = puVar31 + 1;\n            puVar31 = puVar31 + 1;\n            uVar3 = *puVar5 + 1;\n            *puVar31 = uVar3;\n          }" { (expression_statement "puVar18 = (uint *)((int)puVar18 + 1);" (assignment_expression "puVar18 = (uint *)((int)puVar18 + 1)" identifier = (cast_expression "(uint *)((int)puVar18 + 1)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar18 + 1)" ( (binary_expression "(int)puVar18 + 1" (cast_expression "(int)puVar18" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (if_statement "if (puVar25 == puVar18) goto LAB_0005361c;" if (parenthesized_expression "(puVar25 == puVar18)" ( (binary_expression "puVar25 == puVar18" identifier == identifier) )) (goto_statement "goto LAB_0005361c;" goto statement_identifier ;)) (expression_statement "puVar5 = puVar31 + 1;" (assignment_expression "puVar5 = puVar31 + 1" identifier = (binary_expression "puVar31 + 1" identifier + number_literal)) ;) (expression_statement "puVar31 = puVar31 + 1;" (assignment_expression "puVar31 = puVar31 + 1" identifier = (binary_expression "puVar31 + 1" identifier + number_literal)) ;) (expression_statement "uVar3 = *puVar5 + 1;" (assignment_expression "uVar3 = *puVar5 + 1" identifier = (binary_expression "*puVar5 + 1" (pointer_expression "*puVar5" * identifier) + number_literal)) ;) (expression_statement "*puVar31 = uVar3;" (assignment_expression "*puVar31 = uVar3" (pointer_expression "*puVar31" * identifier) = identifier) ;) })) }) (else_clause "else {\nLAB_0005361c:\n          do {\n            uVar3 = *puVar19;\n            *puVar19 = uVar3 + 1;\n            puVar19 = puVar19 + 1;\n          } while (uVar3 + 1 == 0);\n        }" else (compound_statement "{\nLAB_0005361c:\n          do {\n            uVar3 = *puVar19;\n            *puVar19 = uVar3 + 1;\n            puVar19 = puVar19 + 1;\n          } while (uVar3 + 1 == 0);\n        }" { (labeled_statement "LAB_0005361c:\n          do {\n            uVar3 = *puVar19;\n            *puVar19 = uVar3 + 1;\n            puVar19 = puVar19 + 1;\n          } while (uVar3 + 1 == 0);" statement_identifier : (do_statement "do {\n            uVar3 = *puVar19;\n            *puVar19 = uVar3 + 1;\n            puVar19 = puVar19 + 1;\n          } while (uVar3 + 1 == 0);" do (compound_statement "{\n            uVar3 = *puVar19;\n            *puVar19 = uVar3 + 1;\n            puVar19 = puVar19 + 1;\n          }" { (expression_statement "uVar3 = *puVar19;" (assignment_expression "uVar3 = *puVar19" identifier = (pointer_expression "*puVar19" * identifier)) ;) (expression_statement "*puVar19 = uVar3 + 1;" (assignment_expression "*puVar19 = uVar3 + 1" (pointer_expression "*puVar19" * identifier) = (binary_expression "uVar3 + 1" identifier + number_literal)) ;) (expression_statement "puVar19 = puVar19 + 1;" (assignment_expression "puVar19 = puVar19 + 1" identifier = (binary_expression "puVar19 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar3 + 1 == 0)" ( (binary_expression "uVar3 + 1 == 0" (binary_expression "uVar3 + 1" identifier + number_literal) == number_literal) )) ;)) }))) })) })) (expression_statement "uVar8 = *(undefined4 *)(iVar24 + 0x14);" (assignment_expression "uVar8 = *(undefined4 *)(iVar24 + 0x14)" identifier = (pointer_expression "*(undefined4 *)(iVar24 + 0x14)" * (cast_expression "(undefined4 *)(iVar24 + 0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar24 + 0x14)" ( (binary_expression "iVar24 + 0x14" identifier + number_literal) ))))) ;) (expression_statement "pcVar34 = *(code **)(iVar12 + -0x7cd8);" (assignment_expression "pcVar34 = *(code **)(iVar12 + -0x7cd8)" identifier = (pointer_expression "*(code **)(iVar12 + -0x7cd8)" * (cast_expression "(code **)(iVar12 + -0x7cd8)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar12 + -0x7cd8)" ( (binary_expression "iVar12 + -0x7cd8" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar36 + -0x5c) = uVar39;" (assignment_expression "*(undefined4 *)(puVar36 + -0x5c) = uVar39" (pointer_expression "*(undefined4 *)(puVar36 + -0x5c)" * (cast_expression "(undefined4 *)(puVar36 + -0x5c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar36 + -0x5c)" ( (binary_expression "puVar36 + -0x5c" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(uint **)(puVar36 + -0x54) = puVar25;" (assignment_expression "*(uint **)(puVar36 + -0x54) = puVar25" (pointer_expression "*(uint **)(puVar36 + -0x54)" * (cast_expression "(uint **)(puVar36 + -0x54)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar36 + -0x54)" ( (binary_expression "puVar36 + -0x54" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar38 + 0x18) = *(undefined4 *)(puVar36 + -0x48);" (assignment_expression "*(undefined4 *)(puVar38 + 0x18) = *(undefined4 *)(puVar36 + -0x48)" (pointer_expression "*(undefined4 *)(puVar38 + 0x18)" * (cast_expression "(undefined4 *)(puVar38 + 0x18)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar38 + 0x18)" ( (binary_expression "puVar38 + 0x18" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(puVar36 + -0x48)" * (cast_expression "(undefined4 *)(puVar36 + -0x48)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar36 + -0x48)" ( (binary_expression "puVar36 + -0x48" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar38 + 0x10) = uVar8;" (assignment_expression "*(undefined4 *)(puVar38 + 0x10) = uVar8" (pointer_expression "*(undefined4 *)(puVar38 + 0x10)" * (cast_expression "(undefined4 *)(puVar38 + 0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar38 + 0x10)" ( (binary_expression "puVar38 + 0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(puVar38 + 0x14) = iVar7;" (assignment_expression "*(int *)(puVar38 + 0x14) = iVar7" (pointer_expression "*(int *)(puVar38 + 0x14)" * (cast_expression "(int *)(puVar38 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar38 + 0x14)" ( (binary_expression "puVar38 + 0x14" identifier + number_literal) )))) = identifier) ;) (expression_statement "(*pcVar34)(puVar4,puVar25,puVar17,puVar28);" (call_expression "(*pcVar34)(puVar4,puVar25,puVar17,puVar28)" (parenthesized_expression "(*pcVar34)" ( (pointer_expression "*pcVar34" * identifier) )) (argument_list "(puVar4,puVar25,puVar17,puVar28)" ( identifier , identifier , identifier , identifier ))) ;) (expression_statement "uVar39 = *(undefined4 *)(iVar24 + 0xc);" (assignment_expression "uVar39 = *(undefined4 *)(iVar24 + 0xc)" identifier = (pointer_expression "*(undefined4 *)(iVar24 + 0xc)" * (cast_expression "(undefined4 *)(iVar24 + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar24 + 0xc)" ( (binary_expression "iVar24 + 0xc" identifier + number_literal) ))))) ;) (expression_statement "uVar26 = *(undefined4 *)(puVar36 + -0x54);" (assignment_expression "uVar26 = *(undefined4 *)(puVar36 + -0x54)" identifier = (pointer_expression "*(undefined4 *)(puVar36 + -0x54)" * (cast_expression "(undefined4 *)(puVar36 + -0x54)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar36 + -0x54)" ( (binary_expression "puVar36 + -0x54" identifier + number_literal) ))))) ;) (expression_statement "uVar27 = *(undefined4 *)(puVar36 + -0x5c);" (assignment_expression "uVar27 = *(undefined4 *)(puVar36 + -0x5c)" identifier = (pointer_expression "*(undefined4 *)(puVar36 + -0x5c)" * (cast_expression "(undefined4 *)(puVar36 + -0x5c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar36 + -0x5c)" ( (binary_expression "puVar36 + -0x5c" identifier + number_literal) ))))) ;) (expression_statement "uVar8 = *(undefined4 *)(puVar36 + -0x48);" (assignment_expression "uVar8 = *(undefined4 *)(puVar36 + -0x48)" identifier = (pointer_expression "*(undefined4 *)(puVar36 + -0x48)" * (cast_expression "(undefined4 *)(puVar36 + -0x48)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar36 + -0x48)" ( (binary_expression "puVar36 + -0x48" identifier + number_literal) ))))) ;) (expression_statement "pcVar34 = *(code **)(*(int *)(puVar36 + -0x68) + -0x7cd8);" (assignment_expression "pcVar34 = *(code **)(*(int *)(puVar36 + -0x68) + -0x7cd8)" identifier = (pointer_expression "*(code **)(*(int *)(puVar36 + -0x68) + -0x7cd8)" * (cast_expression "(code **)(*(int *)(puVar36 + -0x68) + -0x7cd8)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)(puVar36 + -0x68) + -0x7cd8)" ( (binary_expression "*(int *)(puVar36 + -0x68) + -0x7cd8" (pointer_expression "*(int *)(puVar36 + -0x68)" * (cast_expression "(int *)(puVar36 + -0x68)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar36 + -0x68)" ( (binary_expression "puVar36 + -0x68" identifier + number_literal) )))) + number_literal) ))))) ;) (expression_statement "uVar15 = *(undefined4 *)(puVar36 + -0x44);" (assignment_expression "uVar15 = *(undefined4 *)(puVar36 + -0x44)" identifier = (pointer_expression "*(undefined4 *)(puVar36 + -0x44)" * (cast_expression "(undefined4 *)(puVar36 + -0x44)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar36 + -0x44)" ( (binary_expression "puVar36 + -0x44" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar36 + -0x58) = uVar26;" (assignment_expression "*(undefined4 *)(puVar36 + -0x58) = uVar26" (pointer_expression "*(undefined4 *)(puVar36 + -0x58)" * (cast_expression "(undefined4 *)(puVar36 + -0x58)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar36 + -0x58)" ( (binary_expression "puVar36 + -0x58" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar38 + 0x14) = uVar27;" (assignment_expression "*(undefined4 *)(puVar38 + 0x14) = uVar27" (pointer_expression "*(undefined4 *)(puVar38 + 0x14)" * (cast_expression "(undefined4 *)(puVar38 + 0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar38 + 0x14)" ( (binary_expression "puVar38 + 0x14" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar36 + -0x54) = uVar27;" (assignment_expression "*(undefined4 *)(puVar36 + -0x54) = uVar27" (pointer_expression "*(undefined4 *)(puVar36 + -0x54)" * (cast_expression "(undefined4 *)(puVar36 + -0x54)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar36 + -0x54)" ( (binary_expression "puVar36 + -0x54" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar38 + 0x10) = uVar39;" (assignment_expression "*(undefined4 *)(puVar38 + 0x10) = uVar39" (pointer_expression "*(undefined4 *)(puVar38 + 0x10)" * (cast_expression "(undefined4 *)(puVar38 + 0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar38 + 0x10)" ( (binary_expression "puVar38 + 0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar38 + 0x18) = uVar8;" (assignment_expression "*(undefined4 *)(puVar38 + 0x18) = uVar8" (pointer_expression "*(undefined4 *)(puVar38 + 0x18)" * (cast_expression "(undefined4 *)(puVar38 + 0x18)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar38 + 0x18)" ( (binary_expression "puVar38 + 0x18" identifier + number_literal) )))) = identifier) ;) (expression_statement "(*pcVar34)(uVar15,uVar26,puVar21,puVar28);" (call_expression "(*pcVar34)(uVar15,uVar26,puVar21,puVar28)" (parenthesized_expression "(*pcVar34)" ( (pointer_expression "*pcVar34" * identifier) )) (argument_list "(uVar15,uVar26,puVar21,puVar28)" ( identifier , identifier , identifier , identifier ))) ;) (expression_statement "iVar9 = *(int *)(puVar36 + -0x58);" (assignment_expression "iVar9 = *(int *)(puVar36 + -0x58)" identifier = (pointer_expression "*(int *)(puVar36 + -0x58)" * (cast_expression "(int *)(puVar36 + -0x58)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar36 + -0x58)" ( (binary_expression "puVar36 + -0x58" identifier + number_literal) ))))) ;) (expression_statement "iVar12 = *(int *)(puVar36 + -0x68);" (assignment_expression "iVar12 = *(int *)(puVar36 + -0x68)" identifier = (pointer_expression "*(int *)(puVar36 + -0x68)" * (cast_expression "(int *)(puVar36 + -0x68)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar36 + -0x68)" ( (binary_expression "puVar36 + -0x68" identifier + number_literal) ))))) ;) (expression_statement "iVar32 = *(int *)(puVar36 + -0x54);" (assignment_expression "iVar32 = *(int *)(puVar36 + -0x54)" identifier = (pointer_expression "*(int *)(puVar36 + -0x54)" * (cast_expression "(int *)(puVar36 + -0x54)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar36 + -0x54)" ( (binary_expression "puVar36 + -0x54" identifier + number_literal) ))))) ;) (if_statement "if ((iVar7 + (int)puVar28 < iVar9) && (iVar7 != iVar9 - (int)puVar28)) {\n      iVar11 = (iVar9 - (int)puVar28) - iVar7;\n      puVar25 = puVar4 + (int)(iVar7 + (int)puVar28);\n      do {\n        iVar11 = iVar11 + -1;\n        *puVar25 = 0;\n        puVar25 = puVar25 + 1;\n      } while (iVar11 != 0);\n    }" if (parenthesized_expression "((iVar7 + (int)puVar28 < iVar9) && (iVar7 != iVar9 - (int)puVar28))" ( (binary_expression "(iVar7 + (int)puVar28 < iVar9) && (iVar7 != iVar9 - (int)puVar28)" (parenthesized_expression "(iVar7 + (int)puVar28 < iVar9)" ( (binary_expression "iVar7 + (int)puVar28 < iVar9" (binary_expression "iVar7 + (int)puVar28" identifier + (cast_expression "(int)puVar28" ( (type_descriptor "int" primitive_type) ) identifier)) < identifier) )) && (parenthesized_expression "(iVar7 != iVar9 - (int)puVar28)" ( (binary_expression "iVar7 != iVar9 - (int)puVar28" identifier != (binary_expression "iVar9 - (int)puVar28" identifier - (cast_expression "(int)puVar28" ( (type_descriptor "int" primitive_type) ) identifier))) ))) )) (compound_statement "{\n      iVar11 = (iVar9 - (int)puVar28) - iVar7;\n      puVar25 = puVar4 + (int)(iVar7 + (int)puVar28);\n      do {\n        iVar11 = iVar11 + -1;\n        *puVar25 = 0;\n        puVar25 = puVar25 + 1;\n      } while (iVar11 != 0);\n    }" { (expression_statement "iVar11 = (iVar9 - (int)puVar28) - iVar7;" (assignment_expression "iVar11 = (iVar9 - (int)puVar28) - iVar7" identifier = (binary_expression "(iVar9 - (int)puVar28) - iVar7" (parenthesized_expression "(iVar9 - (int)puVar28)" ( (binary_expression "iVar9 - (int)puVar28" identifier - (cast_expression "(int)puVar28" ( (type_descriptor "int" primitive_type) ) identifier)) )) - identifier)) ;) (expression_statement "puVar25 = puVar4 + (int)(iVar7 + (int)puVar28);" (assignment_expression "puVar25 = puVar4 + (int)(iVar7 + (int)puVar28)" identifier = (binary_expression "puVar4 + (int)(iVar7 + (int)puVar28)" identifier + (cast_expression "(int)(iVar7 + (int)puVar28)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(iVar7 + (int)puVar28)" ( (binary_expression "iVar7 + (int)puVar28" identifier + (cast_expression "(int)puVar28" ( (type_descriptor "int" primitive_type) ) identifier)) ))))) ;) (do_statement "do {\n        iVar11 = iVar11 + -1;\n        *puVar25 = 0;\n        puVar25 = puVar25 + 1;\n      } while (iVar11 != 0);" do (compound_statement "{\n        iVar11 = iVar11 + -1;\n        *puVar25 = 0;\n        puVar25 = puVar25 + 1;\n      }" { (expression_statement "iVar11 = iVar11 + -1;" (assignment_expression "iVar11 = iVar11 + -1" identifier = (binary_expression "iVar11 + -1" identifier + number_literal)) ;) (expression_statement "*puVar25 = 0;" (assignment_expression "*puVar25 = 0" (pointer_expression "*puVar25" * identifier) = number_literal) ;) (expression_statement "puVar25 = puVar25 + 1;" (assignment_expression "puVar25 = puVar25 + 1" identifier = (binary_expression "puVar25 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar11 != 0)" ( (binary_expression "iVar11 != 0" identifier != number_literal) )) ;) })) (expression_statement "pcVar34 = *(code **)(iVar12 + -0x7b2c);" (assignment_expression "pcVar34 = *(code **)(iVar12 + -0x7b2c)" identifier = (pointer_expression "*(code **)(iVar12 + -0x7b2c)" * (cast_expression "(code **)(iVar12 + -0x7b2c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar12 + -0x7b2c)" ( (binary_expression "iVar12 + -0x7b2c" identifier + number_literal) ))))) ;) (if_statement "if (iVar32 + (int)puVar28 < iVar9) {\n      if (iVar32 != iVar9 - (int)puVar28) {\n        iVar7 = (iVar9 - (int)puVar28) - iVar32;\n        puVar6 = (undefined4 *)(*(int *)(puVar36 + -0x44) + (int)(iVar32 + (int)puVar28) * 4);\n        do {\n          iVar7 = iVar7 + -1;\n          *puVar6 = 0;\n          puVar6 = puVar6 + 1;\n        } while (iVar7 != 0);\n        pcVar34 = *(code **)(iVar12 + -0x7b2c);\n      }\n    }" if (parenthesized_expression "(iVar32 + (int)puVar28 < iVar9)" ( (binary_expression "iVar32 + (int)puVar28 < iVar9" (binary_expression "iVar32 + (int)puVar28" identifier + (cast_expression "(int)puVar28" ( (type_descriptor "int" primitive_type) ) identifier)) < identifier) )) (compound_statement "{\n      if (iVar32 != iVar9 - (int)puVar28) {\n        iVar7 = (iVar9 - (int)puVar28) - iVar32;\n        puVar6 = (undefined4 *)(*(int *)(puVar36 + -0x44) + (int)(iVar32 + (int)puVar28) * 4);\n        do {\n          iVar7 = iVar7 + -1;\n          *puVar6 = 0;\n          puVar6 = puVar6 + 1;\n        } while (iVar7 != 0);\n        pcVar34 = *(code **)(iVar12 + -0x7b2c);\n      }\n    }" { (if_statement "if (iVar32 != iVar9 - (int)puVar28) {\n        iVar7 = (iVar9 - (int)puVar28) - iVar32;\n        puVar6 = (undefined4 *)(*(int *)(puVar36 + -0x44) + (int)(iVar32 + (int)puVar28) * 4);\n        do {\n          iVar7 = iVar7 + -1;\n          *puVar6 = 0;\n          puVar6 = puVar6 + 1;\n        } while (iVar7 != 0);\n        pcVar34 = *(code **)(iVar12 + -0x7b2c);\n      }" if (parenthesized_expression "(iVar32 != iVar9 - (int)puVar28)" ( (binary_expression "iVar32 != iVar9 - (int)puVar28" identifier != (binary_expression "iVar9 - (int)puVar28" identifier - (cast_expression "(int)puVar28" ( (type_descriptor "int" primitive_type) ) identifier))) )) (compound_statement "{\n        iVar7 = (iVar9 - (int)puVar28) - iVar32;\n        puVar6 = (undefined4 *)(*(int *)(puVar36 + -0x44) + (int)(iVar32 + (int)puVar28) * 4);\n        do {\n          iVar7 = iVar7 + -1;\n          *puVar6 = 0;\n          puVar6 = puVar6 + 1;\n        } while (iVar7 != 0);\n        pcVar34 = *(code **)(iVar12 + -0x7b2c);\n      }" { (expression_statement "iVar7 = (iVar9 - (int)puVar28) - iVar32;" (assignment_expression "iVar7 = (iVar9 - (int)puVar28) - iVar32" identifier = (binary_expression "(iVar9 - (int)puVar28) - iVar32" (parenthesized_expression "(iVar9 - (int)puVar28)" ( (binary_expression "iVar9 - (int)puVar28" identifier - (cast_expression "(int)puVar28" ( (type_descriptor "int" primitive_type) ) identifier)) )) - identifier)) ;) (expression_statement "puVar6 = (undefined4 *)(*(int *)(puVar36 + -0x44) + (int)(iVar32 + (int)puVar28) * 4);" (assignment_expression "puVar6 = (undefined4 *)(*(int *)(puVar36 + -0x44) + (int)(iVar32 + (int)puVar28) * 4)" identifier = (cast_expression "(undefined4 *)(*(int *)(puVar36 + -0x44) + (int)(iVar32 + (int)puVar28) * 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(puVar36 + -0x44) + (int)(iVar32 + (int)puVar28) * 4)" ( (binary_expression "*(int *)(puVar36 + -0x44) + (int)(iVar32 + (int)puVar28) * 4" (pointer_expression "*(int *)(puVar36 + -0x44)" * (cast_expression "(int *)(puVar36 + -0x44)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar36 + -0x44)" ( (binary_expression "puVar36 + -0x44" identifier + number_literal) )))) + (binary_expression "(int)(iVar32 + (int)puVar28) * 4" (cast_expression "(int)(iVar32 + (int)puVar28)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(iVar32 + (int)puVar28)" ( (binary_expression "iVar32 + (int)puVar28" identifier + (cast_expression "(int)puVar28" ( (type_descriptor "int" primitive_type) ) identifier)) ))) * number_literal)) )))) ;) (do_statement "do {\n          iVar7 = iVar7 + -1;\n          *puVar6 = 0;\n          puVar6 = puVar6 + 1;\n        } while (iVar7 != 0);" do (compound_statement "{\n          iVar7 = iVar7 + -1;\n          *puVar6 = 0;\n          puVar6 = puVar6 + 1;\n        }" { (expression_statement "iVar7 = iVar7 + -1;" (assignment_expression "iVar7 = iVar7 + -1" identifier = (binary_expression "iVar7 + -1" identifier + number_literal)) ;) (expression_statement "*puVar6 = 0;" (assignment_expression "*puVar6 = 0" (pointer_expression "*puVar6" * identifier) = number_literal) ;) (expression_statement "puVar6 = puVar6 + 1;" (assignment_expression "puVar6 = puVar6 + 1" identifier = (binary_expression "puVar6 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar7 != 0)" ( (binary_expression "iVar7 != 0" identifier != number_literal) )) ;) (expression_statement "pcVar34 = *(code **)(iVar12 + -0x7b2c);" (assignment_expression "pcVar34 = *(code **)(iVar12 + -0x7b2c)" identifier = (pointer_expression "*(code **)(iVar12 + -0x7b2c)" * (cast_expression "(code **)(iVar12 + -0x7b2c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar12 + -0x7b2c)" ( (binary_expression "iVar12 + -0x7b2c" identifier + number_literal) ))))) ;) })) })) (expression_statement "*(int *)(puVar36 + -0x54) = iVar9;" (assignment_expression "*(int *)(puVar36 + -0x54) = iVar9" (pointer_expression "*(int *)(puVar36 + -0x54)" * (cast_expression "(int *)(puVar36 + -0x54)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar36 + -0x54)" ( (binary_expression "puVar36 + -0x54" identifier + number_literal) )))) = identifier) ;) (expression_statement "uVar3 = (*pcVar34)(puVar4,puVar4,*(undefined4 *)(puVar36 + -0x44),iVar9);" (assignment_expression "uVar3 = (*pcVar34)(puVar4,puVar4,*(undefined4 *)(puVar36 + -0x44),iVar9)" identifier = (call_expression "(*pcVar34)(puVar4,puVar4,*(undefined4 *)(puVar36 + -0x44),iVar9)" (parenthesized_expression "(*pcVar34)" ( (pointer_expression "*pcVar34" * identifier) )) (argument_list "(puVar4,puVar4,*(undefined4 *)(puVar36 + -0x44),iVar9)" ( identifier , identifier , (pointer_expression "*(undefined4 *)(puVar36 + -0x44)" * (cast_expression "(undefined4 *)(puVar36 + -0x44)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar36 + -0x44)" ( (binary_expression "puVar36 + -0x44" identifier + number_literal) )))) , identifier )))) ;) (expression_statement "uVar13 = *puVar4;" (assignment_expression "uVar13 = *puVar4" identifier = (pointer_expression "*puVar4" * identifier)) ;) (expression_statement "iVar9 = *(int *)(puVar36 + -0x68);" (assignment_expression "iVar9 = *(int *)(puVar36 + -0x68)" identifier = (pointer_expression "*(int *)(puVar36 + -0x68)" * (cast_expression "(int *)(puVar36 + -0x68)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar36 + -0x68)" ( (binary_expression "puVar36 + -0x68" identifier + number_literal) ))))) ;) (expression_statement "uVar39 = *(undefined4 *)(puVar36 + -0x54);" (assignment_expression "uVar39 = *(undefined4 *)(puVar36 + -0x54)" identifier = (pointer_expression "*(undefined4 *)(puVar36 + -0x54)" * (cast_expression "(undefined4 *)(puVar36 + -0x54)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar36 + -0x54)" ( (binary_expression "puVar36 + -0x54" identifier + number_literal) ))))) ;) (expression_statement "*puVar4 = uVar13 - uVar3;" (assignment_expression "*puVar4 = uVar13 - uVar3" (pointer_expression "*puVar4" * identifier) = (binary_expression "uVar13 - uVar3" identifier - identifier)) ;) (expression_statement "puVar25 = puVar4;" (assignment_expression "puVar25 = puVar4" identifier = identifier) ;) (if_statement "if (uVar13 < uVar3) {\n      do {\n        puVar25 = puVar25 + 1;\n        uVar3 = *puVar25;\n        *puVar25 = uVar3 - 1;\n      } while (uVar3 == 0);\n    }" if (parenthesized_expression "(uVar13 < uVar3)" ( (binary_expression "uVar13 < uVar3" identifier < identifier) )) (compound_statement "{\n      do {\n        puVar25 = puVar25 + 1;\n        uVar3 = *puVar25;\n        *puVar25 = uVar3 - 1;\n      } while (uVar3 == 0);\n    }" { (do_statement "do {\n        puVar25 = puVar25 + 1;\n        uVar3 = *puVar25;\n        *puVar25 = uVar3 - 1;\n      } while (uVar3 == 0);" do (compound_statement "{\n        puVar25 = puVar25 + 1;\n        uVar3 = *puVar25;\n        *puVar25 = uVar3 - 1;\n      }" { (expression_statement "puVar25 = puVar25 + 1;" (assignment_expression "puVar25 = puVar25 + 1" identifier = (binary_expression "puVar25 + 1" identifier + number_literal)) ;) (expression_statement "uVar3 = *puVar25;" (assignment_expression "uVar3 = *puVar25" identifier = (pointer_expression "*puVar25" * identifier)) ;) (expression_statement "*puVar25 = uVar3 - 1;" (assignment_expression "*puVar25 = uVar3 - 1" (pointer_expression "*puVar25" * identifier) = (binary_expression "uVar3 - 1" identifier - number_literal)) ;) }) while (parenthesized_expression "(uVar3 == 0)" ( (binary_expression "uVar3 == 0" identifier == number_literal) )) ;) })) (expression_statement "uVar8 = *(undefined4 *)(iVar24 + 0x10);" (assignment_expression "uVar8 = *(undefined4 *)(iVar24 + 0x10)" identifier = (pointer_expression "*(undefined4 *)(iVar24 + 0x10)" * (cast_expression "(undefined4 *)(iVar24 + 0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar24 + 0x10)" ( (binary_expression "iVar24 + 0x10" identifier + number_literal) ))))) ;) (expression_statement "pcVar34 = *(code **)(iVar9 + -0x7cd8);" (assignment_expression "pcVar34 = *(code **)(iVar9 + -0x7cd8)" identifier = (pointer_expression "*(code **)(iVar9 + -0x7cd8)" * (cast_expression "(code **)(iVar9 + -0x7cd8)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar9 + -0x7cd8)" ( (binary_expression "iVar9 + -0x7cd8" identifier + number_literal) ))))) ;) (expression_statement "uVar15 = *(undefined4 *)(puVar36 + -0x44);" (assignment_expression "uVar15 = *(undefined4 *)(puVar36 + -0x44)" identifier = (pointer_expression "*(undefined4 *)(puVar36 + -0x44)" * (cast_expression "(undefined4 *)(puVar36 + -0x44)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar36 + -0x44)" ( (binary_expression "puVar36 + -0x44" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar36 + -0x54) = uVar39;" (assignment_expression "*(undefined4 *)(puVar36 + -0x54) = uVar39" (pointer_expression "*(undefined4 *)(puVar36 + -0x54)" * (cast_expression "(undefined4 *)(puVar36 + -0x54)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar36 + -0x54)" ( (binary_expression "puVar36 + -0x54" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar38 + 0x18) = *(undefined4 *)(puVar36 + -0x48);" (assignment_expression "*(undefined4 *)(puVar38 + 0x18) = *(undefined4 *)(puVar36 + -0x48)" (pointer_expression "*(undefined4 *)(puVar38 + 0x18)" * (cast_expression "(undefined4 *)(puVar38 + 0x18)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar38 + 0x18)" ( (binary_expression "puVar38 + 0x18" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(puVar36 + -0x48)" * (cast_expression "(undefined4 *)(puVar36 + -0x48)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar36 + -0x48)" ( (binary_expression "puVar36 + -0x48" identifier + number_literal) ))))) ;) (expression_statement "*(int *)(puVar38 + 0x14) = iVar22;" (assignment_expression "*(int *)(puVar38 + 0x14) = iVar22" (pointer_expression "*(int *)(puVar38 + 0x14)" * (cast_expression "(int *)(puVar38 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar38 + 0x14)" ( (binary_expression "puVar38 + 0x14" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar38 + 0x10) = uVar8;" (assignment_expression "*(undefined4 *)(puVar38 + 0x10) = uVar8" (pointer_expression "*(undefined4 *)(puVar38 + 0x10)" * (cast_expression "(undefined4 *)(puVar38 + 0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar38 + 0x10)" ( (binary_expression "puVar38 + 0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "(*pcVar34)(uVar15,uVar39,puVar17,puVar28);" (call_expression "(*pcVar34)(uVar15,uVar39,puVar17,puVar28)" (parenthesized_expression "(*pcVar34)" ( (pointer_expression "*pcVar34" * identifier) )) (argument_list "(uVar15,uVar39,puVar17,puVar28)" ( identifier , identifier , identifier , identifier ))) ;) (expression_statement "iVar9 = *(int *)(puVar36 + -0x68);" (assignment_expression "iVar9 = *(int *)(puVar36 + -0x68)" identifier = (pointer_expression "*(int *)(puVar36 + -0x68)" * (cast_expression "(int *)(puVar36 + -0x68)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar36 + -0x68)" ( (binary_expression "puVar36 + -0x68" identifier + number_literal) ))))) ;) (expression_statement "uVar39 = *(undefined4 *)(puVar36 + -0x54);" (assignment_expression "uVar39 = *(undefined4 *)(puVar36 + -0x54)" identifier = (pointer_expression "*(undefined4 *)(puVar36 + -0x54)" * (cast_expression "(undefined4 *)(puVar36 + -0x54)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar36 + -0x54)" ( (binary_expression "puVar36 + -0x54" identifier + number_literal) ))))) ;) (if_statement "if (puVar29 != (uint *)0x0) {\n      iVar32 = (int)puVar29 + -1;\n      uVar3 = *puVar4;\n      puVar18 = puVar17;\n      puVar25 = puVar4;\n      if (iVar32 == 0) {\n        *puVar17 = uVar3;\n      }\n      else {\n        do {\n          *puVar18 = uVar3;\n          iVar32 = iVar32 + -1;\n          uVar3 = puVar25[1];\n          puVar18 = puVar18 + 1;\n          puVar25 = puVar25 + 1;\n        } while (iVar32 != 0);\n        puVar17[(int)puVar29 + -1] = uVar3;\n      }\n    }" if (parenthesized_expression "(puVar29 != (uint *)0x0)" ( (binary_expression "puVar29 != (uint *)0x0" identifier != (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      iVar32 = (int)puVar29 + -1;\n      uVar3 = *puVar4;\n      puVar18 = puVar17;\n      puVar25 = puVar4;\n      if (iVar32 == 0) {\n        *puVar17 = uVar3;\n      }\n      else {\n        do {\n          *puVar18 = uVar3;\n          iVar32 = iVar32 + -1;\n          uVar3 = puVar25[1];\n          puVar18 = puVar18 + 1;\n          puVar25 = puVar25 + 1;\n        } while (iVar32 != 0);\n        puVar17[(int)puVar29 + -1] = uVar3;\n      }\n    }" { (expression_statement "iVar32 = (int)puVar29 + -1;" (assignment_expression "iVar32 = (int)puVar29 + -1" identifier = (binary_expression "(int)puVar29 + -1" (cast_expression "(int)puVar29" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal)) ;) (expression_statement "uVar3 = *puVar4;" (assignment_expression "uVar3 = *puVar4" identifier = (pointer_expression "*puVar4" * identifier)) ;) (expression_statement "puVar18 = puVar17;" (assignment_expression "puVar18 = puVar17" identifier = identifier) ;) (expression_statement "puVar25 = puVar4;" (assignment_expression "puVar25 = puVar4" identifier = identifier) ;) (if_statement "if (iVar32 == 0) {\n        *puVar17 = uVar3;\n      }\n      else {\n        do {\n          *puVar18 = uVar3;\n          iVar32 = iVar32 + -1;\n          uVar3 = puVar25[1];\n          puVar18 = puVar18 + 1;\n          puVar25 = puVar25 + 1;\n        } while (iVar32 != 0);\n        puVar17[(int)puVar29 + -1] = uVar3;\n      }" if (parenthesized_expression "(iVar32 == 0)" ( (binary_expression "iVar32 == 0" identifier == number_literal) )) (compound_statement "{\n        *puVar17 = uVar3;\n      }" { (expression_statement "*puVar17 = uVar3;" (assignment_expression "*puVar17 = uVar3" (pointer_expression "*puVar17" * identifier) = identifier) ;) }) (else_clause "else {\n        do {\n          *puVar18 = uVar3;\n          iVar32 = iVar32 + -1;\n          uVar3 = puVar25[1];\n          puVar18 = puVar18 + 1;\n          puVar25 = puVar25 + 1;\n        } while (iVar32 != 0);\n        puVar17[(int)puVar29 + -1] = uVar3;\n      }" else (compound_statement "{\n        do {\n          *puVar18 = uVar3;\n          iVar32 = iVar32 + -1;\n          uVar3 = puVar25[1];\n          puVar18 = puVar18 + 1;\n          puVar25 = puVar25 + 1;\n        } while (iVar32 != 0);\n        puVar17[(int)puVar29 + -1] = uVar3;\n      }" { (do_statement "do {\n          *puVar18 = uVar3;\n          iVar32 = iVar32 + -1;\n          uVar3 = puVar25[1];\n          puVar18 = puVar18 + 1;\n          puVar25 = puVar25 + 1;\n        } while (iVar32 != 0);" do (compound_statement "{\n          *puVar18 = uVar3;\n          iVar32 = iVar32 + -1;\n          uVar3 = puVar25[1];\n          puVar18 = puVar18 + 1;\n          puVar25 = puVar25 + 1;\n        }" { (expression_statement "*puVar18 = uVar3;" (assignment_expression "*puVar18 = uVar3" (pointer_expression "*puVar18" * identifier) = identifier) ;) (expression_statement "iVar32 = iVar32 + -1;" (assignment_expression "iVar32 = iVar32 + -1" identifier = (binary_expression "iVar32 + -1" identifier + number_literal)) ;) (expression_statement "uVar3 = puVar25[1];" (assignment_expression "uVar3 = puVar25[1]" identifier = (subscript_expression "puVar25[1]" identifier [ number_literal ])) ;) (expression_statement "puVar18 = puVar18 + 1;" (assignment_expression "puVar18 = puVar18 + 1" identifier = (binary_expression "puVar18 + 1" identifier + number_literal)) ;) (expression_statement "puVar25 = puVar25 + 1;" (assignment_expression "puVar25 = puVar25 + 1" identifier = (binary_expression "puVar25 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar32 != 0)" ( (binary_expression "iVar32 != 0" identifier != number_literal) )) ;) (expression_statement "puVar17[(int)puVar29 + -1] = uVar3;" (assignment_expression "puVar17[(int)puVar29 + -1] = uVar3" (subscript_expression "puVar17[(int)puVar29 + -1]" identifier [ (binary_expression "(int)puVar29 + -1" (cast_expression "(int)puVar29" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ]) = identifier) ;) }))) })) (expression_statement "uVar8 = *(undefined4 *)(iVar24 + 8);" (assignment_expression "uVar8 = *(undefined4 *)(iVar24 + 8)" identifier = (pointer_expression "*(undefined4 *)(iVar24 + 8)" * (cast_expression "(undefined4 *)(iVar24 + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar24 + 8)" ( (binary_expression "iVar24 + 8" identifier + number_literal) ))))) ;) (expression_statement "pcVar34 = *(code **)(iVar9 + -0x7cd8);" (assignment_expression "pcVar34 = *(code **)(iVar9 + -0x7cd8)" identifier = (pointer_expression "*(code **)(iVar9 + -0x7cd8)" * (cast_expression "(code **)(iVar9 + -0x7cd8)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar9 + -0x7cd8)" ( (binary_expression "iVar9 + -0x7cd8" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar38 + 0x18) = *(undefined4 *)(puVar36 + -0x48);" (assignment_expression "*(undefined4 *)(puVar38 + 0x18) = *(undefined4 *)(puVar36 + -0x48)" (pointer_expression "*(undefined4 *)(puVar38 + 0x18)" * (cast_expression "(undefined4 *)(puVar38 + 0x18)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar38 + 0x18)" ( (binary_expression "puVar38 + 0x18" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(puVar36 + -0x48)" * (cast_expression "(undefined4 *)(puVar36 + -0x48)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar36 + -0x48)" ( (binary_expression "puVar36 + -0x48" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar36 + -0x48) = uVar39;" (assignment_expression "*(undefined4 *)(puVar36 + -0x48) = uVar39" (pointer_expression "*(undefined4 *)(puVar36 + -0x48)" * (cast_expression "(undefined4 *)(puVar36 + -0x48)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar36 + -0x48)" ( (binary_expression "puVar36 + -0x48" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar38 + 0x10) = uVar8;" (assignment_expression "*(undefined4 *)(puVar38 + 0x10) = uVar8" (pointer_expression "*(undefined4 *)(puVar38 + 0x10)" * (cast_expression "(undefined4 *)(puVar38 + 0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar38 + 0x10)" ( (binary_expression "puVar38 + 0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar38 + 0x14) = *(undefined4 *)(puVar36 + -0x50);" (assignment_expression "*(undefined4 *)(puVar38 + 0x14) = *(undefined4 *)(puVar36 + -0x50)" (pointer_expression "*(undefined4 *)(puVar38 + 0x14)" * (cast_expression "(undefined4 *)(puVar38 + 0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar38 + 0x14)" ( (binary_expression "puVar38 + 0x14" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(puVar36 + -0x50)" * (cast_expression "(undefined4 *)(puVar36 + -0x50)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar36 + -0x50)" ( (binary_expression "puVar36 + -0x50" identifier + number_literal) ))))) ;) (expression_statement "(*pcVar34)(puVar4,uVar39,puVar21,puVar28);" (call_expression "(*pcVar34)(puVar4,uVar39,puVar21,puVar28)" (parenthesized_expression "(*pcVar34)" ( (pointer_expression "*pcVar34" * identifier) )) (argument_list "(puVar4,uVar39,puVar21,puVar28)" ( identifier , identifier , identifier , identifier ))) ;) (expression_statement "iVar9 = *(int *)(puVar36 + -0x48);" (assignment_expression "iVar9 = *(int *)(puVar36 + -0x48)" identifier = (pointer_expression "*(int *)(puVar36 + -0x48)" * (cast_expression "(int *)(puVar36 + -0x48)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar36 + -0x48)" ( (binary_expression "puVar36 + -0x48" identifier + number_literal) ))))) ;) (expression_statement "iVar32 = *(int *)(puVar36 + -0x68);" (assignment_expression "iVar32 = *(int *)(puVar36 + -0x68)" identifier = (pointer_expression "*(int *)(puVar36 + -0x68)" * (cast_expression "(int *)(puVar36 + -0x68)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar36 + -0x68)" ( (binary_expression "puVar36 + -0x68" identifier + number_literal) ))))) ;) (if_statement "if ((int)puVar28 + iVar22 < iVar9) {\n      if (iVar22 != iVar9 - (int)puVar28) {\n        iVar12 = (iVar9 - (int)puVar28) - iVar22;\n        puVar6 = (undefined4 *)(*(int *)(puVar36 + -0x44) + (int)((int)puVar28 + iVar22) * 4);\n        do {\n          iVar12 = iVar12 + -1;\n          *puVar6 = 0;\n          puVar6 = puVar6 + 1;\n        } while (iVar12 != 0);\n      }\n    }" if (parenthesized_expression "((int)puVar28 + iVar22 < iVar9)" ( (binary_expression "(int)puVar28 + iVar22 < iVar9" (binary_expression "(int)puVar28 + iVar22" (cast_expression "(int)puVar28" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) < identifier) )) (compound_statement "{\n      if (iVar22 != iVar9 - (int)puVar28) {\n        iVar12 = (iVar9 - (int)puVar28) - iVar22;\n        puVar6 = (undefined4 *)(*(int *)(puVar36 + -0x44) + (int)((int)puVar28 + iVar22) * 4);\n        do {\n          iVar12 = iVar12 + -1;\n          *puVar6 = 0;\n          puVar6 = puVar6 + 1;\n        } while (iVar12 != 0);\n      }\n    }" { (if_statement "if (iVar22 != iVar9 - (int)puVar28) {\n        iVar12 = (iVar9 - (int)puVar28) - iVar22;\n        puVar6 = (undefined4 *)(*(int *)(puVar36 + -0x44) + (int)((int)puVar28 + iVar22) * 4);\n        do {\n          iVar12 = iVar12 + -1;\n          *puVar6 = 0;\n          puVar6 = puVar6 + 1;\n        } while (iVar12 != 0);\n      }" if (parenthesized_expression "(iVar22 != iVar9 - (int)puVar28)" ( (binary_expression "iVar22 != iVar9 - (int)puVar28" identifier != (binary_expression "iVar9 - (int)puVar28" identifier - (cast_expression "(int)puVar28" ( (type_descriptor "int" primitive_type) ) identifier))) )) (compound_statement "{\n        iVar12 = (iVar9 - (int)puVar28) - iVar22;\n        puVar6 = (undefined4 *)(*(int *)(puVar36 + -0x44) + (int)((int)puVar28 + iVar22) * 4);\n        do {\n          iVar12 = iVar12 + -1;\n          *puVar6 = 0;\n          puVar6 = puVar6 + 1;\n        } while (iVar12 != 0);\n      }" { (expression_statement "iVar12 = (iVar9 - (int)puVar28) - iVar22;" (assignment_expression "iVar12 = (iVar9 - (int)puVar28) - iVar22" identifier = (binary_expression "(iVar9 - (int)puVar28) - iVar22" (parenthesized_expression "(iVar9 - (int)puVar28)" ( (binary_expression "iVar9 - (int)puVar28" identifier - (cast_expression "(int)puVar28" ( (type_descriptor "int" primitive_type) ) identifier)) )) - identifier)) ;) (expression_statement "puVar6 = (undefined4 *)(*(int *)(puVar36 + -0x44) + (int)((int)puVar28 + iVar22) * 4);" (assignment_expression "puVar6 = (undefined4 *)(*(int *)(puVar36 + -0x44) + (int)((int)puVar28 + iVar22) * 4)" identifier = (cast_expression "(undefined4 *)(*(int *)(puVar36 + -0x44) + (int)((int)puVar28 + iVar22) * 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(puVar36 + -0x44) + (int)((int)puVar28 + iVar22) * 4)" ( (binary_expression "*(int *)(puVar36 + -0x44) + (int)((int)puVar28 + iVar22) * 4" (pointer_expression "*(int *)(puVar36 + -0x44)" * (cast_expression "(int *)(puVar36 + -0x44)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar36 + -0x44)" ( (binary_expression "puVar36 + -0x44" identifier + number_literal) )))) + (binary_expression "(int)((int)puVar28 + iVar22) * 4" (cast_expression "(int)((int)puVar28 + iVar22)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((int)puVar28 + iVar22)" ( (binary_expression "(int)puVar28 + iVar22" (cast_expression "(int)puVar28" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) ))) * number_literal)) )))) ;) (do_statement "do {\n          iVar12 = iVar12 + -1;\n          *puVar6 = 0;\n          puVar6 = puVar6 + 1;\n        } while (iVar12 != 0);" do (compound_statement "{\n          iVar12 = iVar12 + -1;\n          *puVar6 = 0;\n          puVar6 = puVar6 + 1;\n        }" { (expression_statement "iVar12 = iVar12 + -1;" (assignment_expression "iVar12 = iVar12 + -1" identifier = (binary_expression "iVar12 + -1" identifier + number_literal)) ;) (expression_statement "*puVar6 = 0;" (assignment_expression "*puVar6 = 0" (pointer_expression "*puVar6" * identifier) = number_literal) ;) (expression_statement "puVar6 = puVar6 + 1;" (assignment_expression "puVar6 = puVar6 + 1" identifier = (binary_expression "puVar6 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar12 != 0)" ( (binary_expression "iVar12 != 0" identifier != number_literal) )) ;) })) })) (expression_statement "pcVar34 = *(code **)(iVar32 + -0x7b2c);" (assignment_expression "pcVar34 = *(code **)(iVar32 + -0x7b2c)" identifier = (pointer_expression "*(code **)(iVar32 + -0x7b2c)" * (cast_expression "(code **)(iVar32 + -0x7b2c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar32 + -0x7b2c)" ( (binary_expression "iVar32 + -0x7b2c" identifier + number_literal) ))))) ;) (if_statement "if (*(int *)(puVar36 + -0x50) + (int)puVar28 < iVar9) {\n      if (*(int *)(puVar36 + -0x50) != iVar9 - (int)puVar28) {\n        iVar22 = (iVar9 - (int)puVar28) - *(int *)(puVar36 + -0x50);\n        puVar28 = puVar4 + (int)(*(int *)(puVar36 + -0x50) + (int)puVar28);\n        do {\n          iVar22 = iVar22 + -1;\n          *puVar28 = 0;\n          puVar28 = puVar28 + 1;\n        } while (iVar22 != 0);\n        pcVar34 = *(code **)(iVar32 + -0x7b2c);\n      }\n    }" if (parenthesized_expression "(*(int *)(puVar36 + -0x50) + (int)puVar28 < iVar9)" ( (binary_expression "*(int *)(puVar36 + -0x50) + (int)puVar28 < iVar9" (binary_expression "*(int *)(puVar36 + -0x50) + (int)puVar28" (pointer_expression "*(int *)(puVar36 + -0x50)" * (cast_expression "(int *)(puVar36 + -0x50)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar36 + -0x50)" ( (binary_expression "puVar36 + -0x50" identifier + number_literal) )))) + (cast_expression "(int)puVar28" ( (type_descriptor "int" primitive_type) ) identifier)) < identifier) )) (compound_statement "{\n      if (*(int *)(puVar36 + -0x50) != iVar9 - (int)puVar28) {\n        iVar22 = (iVar9 - (int)puVar28) - *(int *)(puVar36 + -0x50);\n        puVar28 = puVar4 + (int)(*(int *)(puVar36 + -0x50) + (int)puVar28);\n        do {\n          iVar22 = iVar22 + -1;\n          *puVar28 = 0;\n          puVar28 = puVar28 + 1;\n        } while (iVar22 != 0);\n        pcVar34 = *(code **)(iVar32 + -0x7b2c);\n      }\n    }" { (if_statement "if (*(int *)(puVar36 + -0x50) != iVar9 - (int)puVar28) {\n        iVar22 = (iVar9 - (int)puVar28) - *(int *)(puVar36 + -0x50);\n        puVar28 = puVar4 + (int)(*(int *)(puVar36 + -0x50) + (int)puVar28);\n        do {\n          iVar22 = iVar22 + -1;\n          *puVar28 = 0;\n          puVar28 = puVar28 + 1;\n        } while (iVar22 != 0);\n        pcVar34 = *(code **)(iVar32 + -0x7b2c);\n      }" if (parenthesized_expression "(*(int *)(puVar36 + -0x50) != iVar9 - (int)puVar28)" ( (binary_expression "*(int *)(puVar36 + -0x50) != iVar9 - (int)puVar28" (pointer_expression "*(int *)(puVar36 + -0x50)" * (cast_expression "(int *)(puVar36 + -0x50)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar36 + -0x50)" ( (binary_expression "puVar36 + -0x50" identifier + number_literal) )))) != (binary_expression "iVar9 - (int)puVar28" identifier - (cast_expression "(int)puVar28" ( (type_descriptor "int" primitive_type) ) identifier))) )) (compound_statement "{\n        iVar22 = (iVar9 - (int)puVar28) - *(int *)(puVar36 + -0x50);\n        puVar28 = puVar4 + (int)(*(int *)(puVar36 + -0x50) + (int)puVar28);\n        do {\n          iVar22 = iVar22 + -1;\n          *puVar28 = 0;\n          puVar28 = puVar28 + 1;\n        } while (iVar22 != 0);\n        pcVar34 = *(code **)(iVar32 + -0x7b2c);\n      }" { (expression_statement "iVar22 = (iVar9 - (int)puVar28) - *(int *)(puVar36 + -0x50);" (assignment_expression "iVar22 = (iVar9 - (int)puVar28) - *(int *)(puVar36 + -0x50)" identifier = (binary_expression "(iVar9 - (int)puVar28) - *(int *)(puVar36 + -0x50)" (parenthesized_expression "(iVar9 - (int)puVar28)" ( (binary_expression "iVar9 - (int)puVar28" identifier - (cast_expression "(int)puVar28" ( (type_descriptor "int" primitive_type) ) identifier)) )) - (pointer_expression "*(int *)(puVar36 + -0x50)" * (cast_expression "(int *)(puVar36 + -0x50)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar36 + -0x50)" ( (binary_expression "puVar36 + -0x50" identifier + number_literal) )))))) ;) (expression_statement "puVar28 = puVar4 + (int)(*(int *)(puVar36 + -0x50) + (int)puVar28);" (assignment_expression "puVar28 = puVar4 + (int)(*(int *)(puVar36 + -0x50) + (int)puVar28)" identifier = (binary_expression "puVar4 + (int)(*(int *)(puVar36 + -0x50) + (int)puVar28)" identifier + (cast_expression "(int)(*(int *)(puVar36 + -0x50) + (int)puVar28)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(*(int *)(puVar36 + -0x50) + (int)puVar28)" ( (binary_expression "*(int *)(puVar36 + -0x50) + (int)puVar28" (pointer_expression "*(int *)(puVar36 + -0x50)" * (cast_expression "(int *)(puVar36 + -0x50)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar36 + -0x50)" ( (binary_expression "puVar36 + -0x50" identifier + number_literal) )))) + (cast_expression "(int)puVar28" ( (type_descriptor "int" primitive_type) ) identifier)) ))))) ;) (do_statement "do {\n          iVar22 = iVar22 + -1;\n          *puVar28 = 0;\n          puVar28 = puVar28 + 1;\n        } while (iVar22 != 0);" do (compound_statement "{\n          iVar22 = iVar22 + -1;\n          *puVar28 = 0;\n          puVar28 = puVar28 + 1;\n        }" { (expression_statement "iVar22 = iVar22 + -1;" (assignment_expression "iVar22 = iVar22 + -1" identifier = (binary_expression "iVar22 + -1" identifier + number_literal)) ;) (expression_statement "*puVar28 = 0;" (assignment_expression "*puVar28 = 0" (pointer_expression "*puVar28" * identifier) = number_literal) ;) (expression_statement "puVar28 = puVar28 + 1;" (assignment_expression "puVar28 = puVar28 + 1" identifier = (binary_expression "puVar28 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar22 != 0)" ( (binary_expression "iVar22 != 0" identifier != number_literal) )) ;) (expression_statement "pcVar34 = *(code **)(iVar32 + -0x7b2c);" (assignment_expression "pcVar34 = *(code **)(iVar32 + -0x7b2c)" identifier = (pointer_expression "*(code **)(iVar32 + -0x7b2c)" * (cast_expression "(code **)(iVar32 + -0x7b2c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar32 + -0x7b2c)" ( (binary_expression "iVar32 + -0x7b2c" identifier + number_literal) ))))) ;) })) })) (expression_statement "uVar3 = (*pcVar34)(puVar4,puVar4,*(undefined4 *)(puVar36 + -0x44),iVar9);" (assignment_expression "uVar3 = (*pcVar34)(puVar4,puVar4,*(undefined4 *)(puVar36 + -0x44),iVar9)" identifier = (call_expression "(*pcVar34)(puVar4,puVar4,*(undefined4 *)(puVar36 + -0x44),iVar9)" (parenthesized_expression "(*pcVar34)" ( (pointer_expression "*pcVar34" * identifier) )) (argument_list "(puVar4,puVar4,*(undefined4 *)(puVar36 + -0x44),iVar9)" ( identifier , identifier , (pointer_expression "*(undefined4 *)(puVar36 + -0x44)" * (cast_expression "(undefined4 *)(puVar36 + -0x44)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar36 + -0x44)" ( (binary_expression "puVar36 + -0x44" identifier + number_literal) )))) , identifier )))) ;) (expression_statement "uVar13 = *puVar4;" (assignment_expression "uVar13 = *puVar4" identifier = (pointer_expression "*puVar4" * identifier)) ;) (expression_statement "iVar9 = *(int *)(puVar36 + -0x68);" (assignment_expression "iVar9 = *(int *)(puVar36 + -0x68)" identifier = (pointer_expression "*(int *)(puVar36 + -0x68)" * (cast_expression "(int *)(puVar36 + -0x68)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar36 + -0x68)" ( (binary_expression "puVar36 + -0x68" identifier + number_literal) ))))) ;) (expression_statement "puVar18 = (uint *)(uVar13 - uVar3);" (assignment_expression "puVar18 = (uint *)(uVar13 - uVar3)" identifier = (cast_expression "(uint *)(uVar13 - uVar3)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar13 - uVar3)" ( (binary_expression "uVar13 - uVar3" identifier - identifier) )))) ;) (expression_statement "*puVar4 = (uint)puVar18;" (assignment_expression "*puVar4 = (uint)puVar18" (pointer_expression "*puVar4" * identifier) = (cast_expression "(uint)puVar18" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "puVar28 = puVar4;" (assignment_expression "puVar28 = puVar4" identifier = identifier) ;) (if_statement "if (uVar13 < uVar3) {\n      do {\n        puVar28 = puVar28 + 1;\n        uVar3 = *puVar28;\n        puVar18 = (uint *)(uVar3 - 1);\n        *puVar28 = (uint)puVar18;\n      } while (uVar3 == 0);\n    }" if (parenthesized_expression "(uVar13 < uVar3)" ( (binary_expression "uVar13 < uVar3" identifier < identifier) )) (compound_statement "{\n      do {\n        puVar28 = puVar28 + 1;\n        uVar3 = *puVar28;\n        puVar18 = (uint *)(uVar3 - 1);\n        *puVar28 = (uint)puVar18;\n      } while (uVar3 == 0);\n    }" { (do_statement "do {\n        puVar28 = puVar28 + 1;\n        uVar3 = *puVar28;\n        puVar18 = (uint *)(uVar3 - 1);\n        *puVar28 = (uint)puVar18;\n      } while (uVar3 == 0);" do (compound_statement "{\n        puVar28 = puVar28 + 1;\n        uVar3 = *puVar28;\n        puVar18 = (uint *)(uVar3 - 1);\n        *puVar28 = (uint)puVar18;\n      }" { (expression_statement "puVar28 = puVar28 + 1;" (assignment_expression "puVar28 = puVar28 + 1" identifier = (binary_expression "puVar28 + 1" identifier + number_literal)) ;) (expression_statement "uVar3 = *puVar28;" (assignment_expression "uVar3 = *puVar28" identifier = (pointer_expression "*puVar28" * identifier)) ;) (expression_statement "puVar18 = (uint *)(uVar3 - 1);" (assignment_expression "puVar18 = (uint *)(uVar3 - 1)" identifier = (cast_expression "(uint *)(uVar3 - 1)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar3 - 1)" ( (binary_expression "uVar3 - 1" identifier - number_literal) )))) ;) (expression_statement "*puVar28 = (uint)puVar18;" (assignment_expression "*puVar28 = (uint)puVar18" (pointer_expression "*puVar28" * identifier) = (cast_expression "(uint)puVar18" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) }) while (parenthesized_expression "(uVar3 == 0)" ( (binary_expression "uVar3 == 0" identifier == number_literal) )) ;) })) (expression_statement "iVar32 = (int)puVar29 + -1;" (assignment_expression "iVar32 = (int)puVar29 + -1" identifier = (binary_expression "(int)puVar29 + -1" (cast_expression "(int)puVar29" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal)) ;) (if_statement "if (puVar29 == (uint *)0x0) {\n      iVar32 = -4;\n    }\n    else {\n      puVar18 = (uint *)*puVar4;\n      puVar28 = puVar21;\n      if (iVar32 != 0) {\n        do {\n          puVar4 = puVar4 + 1;\n          *puVar28 = (uint)puVar18;\n          iVar32 = iVar32 + -1;\n          puVar18 = (uint *)*puVar4;\n          puVar28 = puVar28 + 1;\n        } while (iVar32 != 0);\n        puVar28 = puVar21 + (int)puVar29 + -1;\n      }\n      *puVar28 = (uint)puVar18;\n      iVar32 = (int)puVar29 * 4 + -4;\n    }" if (parenthesized_expression "(puVar29 == (uint *)0x0)" ( (binary_expression "puVar29 == (uint *)0x0" identifier == (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      iVar32 = -4;\n    }" { (expression_statement "iVar32 = -4;" (assignment_expression "iVar32 = -4" identifier = number_literal) ;) }) (else_clause "else {\n      puVar18 = (uint *)*puVar4;\n      puVar28 = puVar21;\n      if (iVar32 != 0) {\n        do {\n          puVar4 = puVar4 + 1;\n          *puVar28 = (uint)puVar18;\n          iVar32 = iVar32 + -1;\n          puVar18 = (uint *)*puVar4;\n          puVar28 = puVar28 + 1;\n        } while (iVar32 != 0);\n        puVar28 = puVar21 + (int)puVar29 + -1;\n      }\n      *puVar28 = (uint)puVar18;\n      iVar32 = (int)puVar29 * 4 + -4;\n    }" else (compound_statement "{\n      puVar18 = (uint *)*puVar4;\n      puVar28 = puVar21;\n      if (iVar32 != 0) {\n        do {\n          puVar4 = puVar4 + 1;\n          *puVar28 = (uint)puVar18;\n          iVar32 = iVar32 + -1;\n          puVar18 = (uint *)*puVar4;\n          puVar28 = puVar28 + 1;\n        } while (iVar32 != 0);\n        puVar28 = puVar21 + (int)puVar29 + -1;\n      }\n      *puVar28 = (uint)puVar18;\n      iVar32 = (int)puVar29 * 4 + -4;\n    }" { (expression_statement "puVar18 = (uint *)*puVar4;" (assignment_expression "puVar18 = (uint *)*puVar4" identifier = (cast_expression "(uint *)*puVar4" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar4" * identifier))) ;) (expression_statement "puVar28 = puVar21;" (assignment_expression "puVar28 = puVar21" identifier = identifier) ;) (if_statement "if (iVar32 != 0) {\n        do {\n          puVar4 = puVar4 + 1;\n          *puVar28 = (uint)puVar18;\n          iVar32 = iVar32 + -1;\n          puVar18 = (uint *)*puVar4;\n          puVar28 = puVar28 + 1;\n        } while (iVar32 != 0);\n        puVar28 = puVar21 + (int)puVar29 + -1;\n      }" if (parenthesized_expression "(iVar32 != 0)" ( (binary_expression "iVar32 != 0" identifier != number_literal) )) (compound_statement "{\n        do {\n          puVar4 = puVar4 + 1;\n          *puVar28 = (uint)puVar18;\n          iVar32 = iVar32 + -1;\n          puVar18 = (uint *)*puVar4;\n          puVar28 = puVar28 + 1;\n        } while (iVar32 != 0);\n        puVar28 = puVar21 + (int)puVar29 + -1;\n      }" { (do_statement "do {\n          puVar4 = puVar4 + 1;\n          *puVar28 = (uint)puVar18;\n          iVar32 = iVar32 + -1;\n          puVar18 = (uint *)*puVar4;\n          puVar28 = puVar28 + 1;\n        } while (iVar32 != 0);" do (compound_statement "{\n          puVar4 = puVar4 + 1;\n          *puVar28 = (uint)puVar18;\n          iVar32 = iVar32 + -1;\n          puVar18 = (uint *)*puVar4;\n          puVar28 = puVar28 + 1;\n        }" { (expression_statement "puVar4 = puVar4 + 1;" (assignment_expression "puVar4 = puVar4 + 1" identifier = (binary_expression "puVar4 + 1" identifier + number_literal)) ;) (expression_statement "*puVar28 = (uint)puVar18;" (assignment_expression "*puVar28 = (uint)puVar18" (pointer_expression "*puVar28" * identifier) = (cast_expression "(uint)puVar18" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "iVar32 = iVar32 + -1;" (assignment_expression "iVar32 = iVar32 + -1" identifier = (binary_expression "iVar32 + -1" identifier + number_literal)) ;) (expression_statement "puVar18 = (uint *)*puVar4;" (assignment_expression "puVar18 = (uint *)*puVar4" identifier = (cast_expression "(uint *)*puVar4" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar4" * identifier))) ;) (expression_statement "puVar28 = puVar28 + 1;" (assignment_expression "puVar28 = puVar28 + 1" identifier = (binary_expression "puVar28 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar32 != 0)" ( (binary_expression "iVar32 != 0" identifier != number_literal) )) ;) (expression_statement "puVar28 = puVar21 + (int)puVar29 + -1;" (assignment_expression "puVar28 = puVar21 + (int)puVar29 + -1" identifier = (binary_expression "puVar21 + (int)puVar29 + -1" (binary_expression "puVar21 + (int)puVar29" identifier + (cast_expression "(int)puVar29" ( (type_descriptor "int" primitive_type) ) identifier)) + number_literal)) ;) })) (expression_statement "*puVar28 = (uint)puVar18;" (assignment_expression "*puVar28 = (uint)puVar18" (pointer_expression "*puVar28" * identifier) = (cast_expression "(uint)puVar18" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "iVar32 = (int)puVar29 * 4 + -4;" (assignment_expression "iVar32 = (int)puVar29 * 4 + -4" identifier = (binary_expression "(int)puVar29 * 4 + -4" (binary_expression "(int)puVar29 * 4" (cast_expression "(int)puVar29" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal) + number_literal)) ;) }))) (expression_statement "puVar37 = puVar38;" (assignment_expression "puVar37 = puVar38" identifier = identifier) ;) (if_statement "if (*(int *)((int)puVar17 + iVar32) != 0 || *(int *)((int)puVar21 + iVar32) != 0)\n    goto LAB_000530b4;" if (parenthesized_expression "(*(int *)((int)puVar17 + iVar32) != 0 || *(int *)((int)puVar21 + iVar32) != 0)" ( (binary_expression "*(int *)((int)puVar17 + iVar32) != 0 || *(int *)((int)puVar21 + iVar32) != 0" (binary_expression "*(int *)((int)puVar17 + iVar32) != 0" (pointer_expression "*(int *)((int)puVar17 + iVar32)" * (cast_expression "(int *)((int)puVar17 + iVar32)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar17 + iVar32)" ( (binary_expression "(int)puVar17 + iVar32" (cast_expression "(int)puVar17" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) != number_literal) || (binary_expression "*(int *)((int)puVar21 + iVar32) != 0" (pointer_expression "*(int *)((int)puVar21 + iVar32)" * (cast_expression "(int *)((int)puVar21 + iVar32)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar21 + iVar32)" ( (binary_expression "(int)puVar21 + iVar32" (cast_expression "(int)puVar21" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) != number_literal)) )) (goto_statement "goto LAB_000530b4;" goto statement_identifier ;)) (expression_statement "puVar17 = puVar17 + (int)puVar29 + -2;" (assignment_expression "puVar17 = puVar17 + (int)puVar29 + -2" identifier = (binary_expression "puVar17 + (int)puVar29 + -2" (binary_expression "puVar17 + (int)puVar29" identifier + (cast_expression "(int)puVar29" ( (type_descriptor "int" primitive_type) ) identifier)) + number_literal)) ;) (expression_statement "puVar21 = puVar21 + (int)puVar29 + -2;" (assignment_expression "puVar21 = puVar21 + (int)puVar29 + -2" identifier = (binary_expression "puVar21 + (int)puVar29 + -2" (binary_expression "puVar21 + (int)puVar29" identifier + (cast_expression "(int)puVar29" ( (type_descriptor "int" primitive_type) ) identifier)) + number_literal)) ;) (do_statement "do {\n      uVar3 = *puVar17;\n      puVar29 = (uint *)((int)puVar29 + -1);\n      uVar13 = *puVar21;\n      puVar17 = puVar17 + -1;\n      puVar21 = puVar21 + -1;\n    } while (uVar3 == 0 && uVar13 == 0);" do (compound_statement "{\n      uVar3 = *puVar17;\n      puVar29 = (uint *)((int)puVar29 + -1);\n      uVar13 = *puVar21;\n      puVar17 = puVar17 + -1;\n      puVar21 = puVar21 + -1;\n    }" { (expression_statement "uVar3 = *puVar17;" (assignment_expression "uVar3 = *puVar17" identifier = (pointer_expression "*puVar17" * identifier)) ;) (expression_statement "puVar29 = (uint *)((int)puVar29 + -1);" (assignment_expression "puVar29 = (uint *)((int)puVar29 + -1)" identifier = (cast_expression "(uint *)((int)puVar29 + -1)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar29 + -1)" ( (binary_expression "(int)puVar29 + -1" (cast_expression "(int)puVar29" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "uVar13 = *puVar21;" (assignment_expression "uVar13 = *puVar21" identifier = (pointer_expression "*puVar21" * identifier)) ;) (expression_statement "puVar17 = puVar17 + -1;" (assignment_expression "puVar17 = puVar17 + -1" identifier = (binary_expression "puVar17 + -1" identifier + number_literal)) ;) (expression_statement "puVar21 = puVar21 + -1;" (assignment_expression "puVar21 = puVar21 + -1" identifier = (binary_expression "puVar21 + -1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar3 == 0 && uVar13 == 0)" ( (binary_expression "uVar3 == 0 && uVar13 == 0" (binary_expression "uVar3 == 0" identifier == number_literal) && (binary_expression "uVar13 == 0" identifier == number_literal)) )) ;) (expression_statement "piVar30 = *(int **)(puVar36 + -0x4c);" (assignment_expression "piVar30 = *(int **)(puVar36 + -0x4c)" identifier = (pointer_expression "*(int **)(puVar36 + -0x4c)" * (cast_expression "(int **)(puVar36 + -0x4c)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar36 + -0x4c)" ( (binary_expression "puVar36 + -0x4c" identifier + number_literal) ))))) ;) (if_statement "if (*(int *)(puVar36 + -0x40) == 0) goto LAB_000530c4;" if (parenthesized_expression "(*(int *)(puVar36 + -0x40) == 0)" ( (binary_expression "*(int *)(puVar36 + -0x40) == 0" (pointer_expression "*(int *)(puVar36 + -0x40)" * (cast_expression "(int *)(puVar36 + -0x40)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar36 + -0x40)" ( (binary_expression "puVar36 + -0x40" identifier + number_literal) )))) == number_literal) )) (goto_statement "goto LAB_000530c4;" goto statement_identifier ;)) (expression_statement "pcVar34 = *(code **)(iVar9 + -0x7a2c);" (assignment_expression "pcVar34 = *(code **)(iVar9 + -0x7a2c)" identifier = (pointer_expression "*(code **)(iVar9 + -0x7a2c)" * (cast_expression "(code **)(iVar9 + -0x7a2c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar9 + -0x7a2c)" ( (binary_expression "iVar9 + -0x7a2c" identifier + number_literal) ))))) ;) (labeled_statement "LAB_00053478:\n    (*pcVar34)();" statement_identifier : (expression_statement "(*pcVar34)();" (call_expression "(*pcVar34)()" (parenthesized_expression "(*pcVar34)" ( (pointer_expression "*pcVar34" * identifier) )) (argument_list "()" ( ))) ;)) (expression_statement "iVar9 = *(int *)(puVar36 + -0x68);" (assignment_expression "iVar9 = *(int *)(puVar36 + -0x68)" identifier = (pointer_expression "*(int *)(puVar36 + -0x68)" * (cast_expression "(int *)(puVar36 + -0x68)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar36 + -0x68)" ( (binary_expression "puVar36 + -0x68" identifier + number_literal) ))))) ;) (expression_statement "puVar38 = puVar37;" (assignment_expression "puVar38 = puVar37" identifier = identifier) ;) }))) (expression_statement "piVar30 = *(int **)(puVar36 + -0x4c);" (assignment_expression "piVar30 = *(int **)(puVar36 + -0x4c)" identifier = (pointer_expression "*(int **)(puVar36 + -0x4c)" * (cast_expression "(int **)(puVar36 + -0x4c)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar36 + -0x4c)" ( (binary_expression "puVar36 + -0x4c" identifier + number_literal) ))))) ;) (labeled_statement "LAB_000530c4:\n  iVar32 = *(int *)(puVar36 + -0x2c);" statement_identifier : (expression_statement "iVar32 = *(int *)(puVar36 + -0x2c);" (assignment_expression "iVar32 = *(int *)(puVar36 + -0x2c)" identifier = (pointer_expression "*(int *)(puVar36 + -0x2c)" * (cast_expression "(int *)(puVar36 + -0x2c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar36 + -0x2c)" ( (binary_expression "puVar36 + -0x2c" identifier + number_literal) ))))) ;)) (expression_statement "pcVar34 = *(code **)(iVar9 + -0x7b70);" (assignment_expression "pcVar34 = *(code **)(iVar9 + -0x7b70)" identifier = (pointer_expression "*(code **)(iVar9 + -0x7b70)" * (cast_expression "(code **)(iVar9 + -0x7b70)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar9 + -0x7b70)" ( (binary_expression "iVar9 + -0x7b70" identifier + number_literal) ))))) ;) (if_statement "if (iVar32 == *piVar30) {\n    return puVar29;\n  }" if (parenthesized_expression "(iVar32 == *piVar30)" ( (binary_expression "iVar32 == *piVar30" identifier == (pointer_expression "*piVar30" * identifier)) )) (compound_statement "{\n    return puVar29;\n  }" { (return_statement "return puVar29;" return identifier ;) })) (expression_statement "pcVar40 = __gmpn_hgcd_reduce_itch;" (assignment_expression "pcVar40 = __gmpn_hgcd_reduce_itch" identifier = identifier) ;) (expression_statement "(*pcVar34)();" (call_expression "(*pcVar34)()" (parenthesized_expression "(*pcVar34)" ( (pointer_expression "*pcVar34" * identifier) )) (argument_list "()" ( ))) ;) (expression_statement "pcVar35 = *(code **)(pcVar34 + 0x43e08);" (assignment_expression "pcVar35 = *(code **)(pcVar34 + 0x43e08)" identifier = (pointer_expression "*(code **)(pcVar34 + 0x43e08)" * (cast_expression "(code **)(pcVar34 + 0x43e08)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar34 + 0x43e08)" ( (binary_expression "pcVar34 + 0x43e08" identifier + number_literal) ))))) ;) (expression_statement "*(uint **)(puVar38 + -0xc) = puVar21;" (assignment_expression "*(uint **)(puVar38 + -0xc) = puVar21" (pointer_expression "*(uint **)(puVar38 + -0xc)" * (cast_expression "(uint **)(puVar38 + -0xc)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar38 + -0xc)" ( (binary_expression "puVar38 + -0xc" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(puVar38 + -8) = iVar24;" (assignment_expression "*(int *)(puVar38 + -8) = iVar24" (pointer_expression "*(int *)(puVar38 + -8)" * (cast_expression "(int *)(puVar38 + -8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar38 + -8)" ( (binary_expression "puVar38 + -8" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(uint **)(puVar38 + -0x10) = puVar17;" (assignment_expression "*(uint **)(puVar38 + -0x10) = puVar17" (pointer_expression "*(uint **)(puVar38 + -0x10)" * (cast_expression "(uint **)(puVar38 + -0x10)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar38 + -0x10)" ( (binary_expression "puVar38 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(code **)(puVar38 + -0x18) = pcVar34 + 0x4b9e4;" (assignment_expression "*(code **)(puVar38 + -0x18) = pcVar34 + 0x4b9e4" (pointer_expression "*(code **)(puVar38 + -0x18)" * (cast_expression "(code **)(puVar38 + -0x18)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar38 + -0x18)" ( (binary_expression "puVar38 + -0x18" identifier + number_literal) )))) = (binary_expression "pcVar34 + 0x4b9e4" identifier + number_literal)) ;) (expression_statement "*(code **)(puVar38 + -4) = pcVar40;" (assignment_expression "*(code **)(puVar38 + -4) = pcVar40" (pointer_expression "*(code **)(puVar38 + -4)" * (cast_expression "(code **)(puVar38 + -4)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar38 + -4)" ( (binary_expression "puVar38 + -4" identifier + number_literal) )))) = identifier) ;) (expression_statement "puVar28 = (uint *)(*pcVar35)(iVar32 - (int)puVar18);" (assignment_expression "puVar28 = (uint *)(*pcVar35)(iVar32 - (int)puVar18)" identifier = (cast_expression "(uint *)(*pcVar35)(iVar32 - (int)puVar18)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(*pcVar35)(iVar32 - (int)puVar18)" (parenthesized_expression "(*pcVar35)" ( (pointer_expression "*pcVar35" * identifier) )) (argument_list "(iVar32 - (int)puVar18)" ( (binary_expression "iVar32 - (int)puVar18" identifier - (cast_expression "(int)puVar18" ( (type_descriptor "int" primitive_type) ) identifier)) ))))) ;) (if_statement "if (999 < iVar32) {\n    return (uint *)((iVar32 - (int)puVar18) * 2 + (int)puVar28);\n  }" if (parenthesized_expression "(999 < iVar32)" ( (binary_expression "999 < iVar32" number_literal < identifier) )) (compound_statement "{\n    return (uint *)((iVar32 - (int)puVar18) * 2 + (int)puVar28);\n  }" { (return_statement "return (uint *)((iVar32 - (int)puVar18) * 2 + (int)puVar28);" return (cast_expression "(uint *)((iVar32 - (int)puVar18) * 2 + (int)puVar28)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((iVar32 - (int)puVar18) * 2 + (int)puVar28)" ( (binary_expression "(iVar32 - (int)puVar18) * 2 + (int)puVar28" (binary_expression "(iVar32 - (int)puVar18) * 2" (parenthesized_expression "(iVar32 - (int)puVar18)" ( (binary_expression "iVar32 - (int)puVar18" identifier - (cast_expression "(int)puVar18" ( (type_descriptor "int" primitive_type) ) identifier)) )) * number_literal) + (cast_expression "(int)puVar28" ( (type_descriptor "int" primitive_type) ) identifier)) ))) ;) })) (expression_statement "puVar18 = (uint *)((int)puVar18 + iVar32 + -1);" (assignment_expression "puVar18 = (uint *)((int)puVar18 + iVar32 + -1)" identifier = (cast_expression "(uint *)((int)puVar18 + iVar32 + -1)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar18 + iVar32 + -1)" ( (binary_expression "(int)puVar18 + iVar32 + -1" (binary_expression "(int)puVar18 + iVar32" (cast_expression "(int)puVar18" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) + number_literal) )))) ;) (if_statement "if ((int)puVar28 <= (int)puVar18) {\n    puVar28 = puVar18;\n  }" if (parenthesized_expression "((int)puVar28 <= (int)puVar18)" ( (binary_expression "(int)puVar28 <= (int)puVar18" (cast_expression "(int)puVar28" ( (type_descriptor "int" primitive_type) ) identifier) <= (cast_expression "(int)puVar18" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n    puVar28 = puVar18;\n  }" { (expression_statement "puVar28 = puVar18;" (assignment_expression "puVar28 = puVar18" identifier = identifier) ;) })) (return_statement "return puVar28;" return identifier ;) })))
(translation_unit (function_definition TYPE (pointer_declarator * (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE (pointer_declarator * IDENT)) )))) (compound_statement { (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE 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 (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE (pointer_declarator * (array_declarator IDENT [ LIT ])) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT) + LIT) )))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) IDENT))) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) ])) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) ])) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT | IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) ))) == IDENT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT , (subscript_expression IDENT [ (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) ]) , IDENT , (subscript_expression IDENT [ (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) ]) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (goto_statement goto statement_identifier ;)) })) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = IDENT) ;)) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT ))))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) ])) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) ])) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) })) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) })) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) })) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) })) }))) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - (cast_expression ( (type_descriptor TYPE) ) (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ (binary_expression IDENT >> IDENT) ]))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression LIT - IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT << (parenthesized_expression ( (binary_expression IDENT & LIT) ))) | (binary_expression IDENT >> (parenthesized_expression ( (binary_expression IDENT & LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (subscript_expression IDENT [ (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) ]) >> (parenthesized_expression ( (binary_expression IDENT & LIT) ))) | (binary_expression IDENT << (parenthesized_expression ( (binary_expression IDENT & LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT << (parenthesized_expression ( (binary_expression IDENT & LIT) ))) | (binary_expression IDENT >> (parenthesized_expression ( (binary_expression IDENT & LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (subscript_expression IDENT [ (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) ]) >> (parenthesized_expression ( (binary_expression IDENT & LIT) ))) | (binary_expression IDENT << (parenthesized_expression ( (binary_expression IDENT & LIT) ))))) ;) })) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT , IDENT , IDENT , IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;)) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = IDENT) ;)) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT , IDENT , IDENT ))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != LIT) )) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (cast_expression ( (type_descriptor TYPE) ) IDENT)) + LIT)) ;) }))) })) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT ))))) ;) }))) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) IDENT))) )) (compound_statement { (return_statement return IDENT ;) })) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + IDENT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_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) ;) (expression_statement (assignment_expression IDENT = 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 (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT * LIT) ))) < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (unary_expression - (parenthesized_expression ( (binary_expression (binary_expression (binary_expression IDENT * LIT) + LIT) & LIT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + IDENT) )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( (pointer_expression & IDENT) ))))) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) }))) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression (subscript_expression IDENT [ LIT ]) [ LIT ]))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( IDENT ))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT - (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < IDENT) )))) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = IDENT) , (comma_expression (assignment_expression IDENT = IDENT) , (comma_expression (assignment_expression IDENT = IDENT) , (comma_expression (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression (subscript_expression IDENT [ LIT ]) [ LIT ]))) )) (argument_list ( IDENT )))) , (binary_expression IDENT != LIT))))) ))) )) && (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 + (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT - LIT) )))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (while_statement while (parenthesized_expression ( (parenthesized_expression ( (binary_expression (binary_expression IDENT == LIT) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) , (binary_expression IDENT != IDENT)) ))) )) )) (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_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 - LIT) )))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) })) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression (subscript_expression IDENT [ LIT ]) [ LIT ]))) )) (argument_list ( ))) ;) })) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) && (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) ]) == LIT) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) == LIT) )) ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression (subscript_expression IDENT [ LIT ]) [ LIT ]))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (pointer_expression * IDENT)) )) (compound_statement { (return_statement return IDENT ;) })) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) ))) ]) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) == LIT) )) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) ))) ]) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) == LIT) )) ;) })) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + IDENT) + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + (binary_expression IDENT * LIT)) + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (binary_expression IDENT * LIT))) ;) (while_statement while (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (break_statement break ;)) (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 = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + IDENT) )))) = IDENT) ;) }) while (parenthesized_expression ( (binary_expression IDENT != IDENT) )) ;) (expression_statement (assignment_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 + LIT) ))))) ;) }) while (parenthesized_expression ( (binary_expression IDENT != LIT) )) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (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 IDENT = IDENT) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT , IDENT ))))) ;)) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;)) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != LIT) )) (goto_statement goto statement_identifier ;)) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (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 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 + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) - (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) - IDENT) <= IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) - IDENT)) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) - IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) - IDENT) <= (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) - IDENT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) - IDENT)) ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) <= (binary_expression IDENT + LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT <= IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT) + IDENT) + LIT) )) * LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (goto_statement goto statement_identifier ;) })) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT) + LIT) )) * LIT)) ;) (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 = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (labeled_statement statement_identifier : (expression_statement (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 = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT) + LIT) )) * LIT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (unary_expression - (parenthesized_expression ( (binary_expression IDENT & LIT) )))) + LIT)) ;)) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + (unary_expression - (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 + (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression (binary_expression IDENT + (cast_expression ( (type_descriptor TYPE) ) IDENT)) + (cast_expression ( (type_descriptor TYPE) ) 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 * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) - (cast_expression ( (type_descriptor TYPE) ) 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) )))) = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( IDENT , IDENT , (binary_expression IDENT + (cast_expression ( (type_descriptor TYPE) ) IDENT)) , IDENT )))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;)) }) (else_clause else (compound_statement { (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 { (labeled_statement statement_identifier : (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) == LIT) )) ;)) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) == 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) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) == LIT) )) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) }))) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( IDENT , IDENT , (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + IDENT) , IDENT )))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (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 = (binary_expression IDENT + (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * IDENT) + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (while_statement while (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * IDENT) + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) })) }) (else_clause else (compound_statement { (labeled_statement statement_identifier : (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) == LIT) )) ;)) }))) })) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (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) )))) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( IDENT , IDENT , IDENT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (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 (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( IDENT , IDENT , IDENT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (binary_expression IDENT + (cast_expression ( (type_descriptor TYPE) ) IDENT)) < IDENT) )) && (parenthesized_expression ( (binary_expression IDENT != (binary_expression IDENT - (cast_expression ( (type_descriptor TYPE) ) IDENT))) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression IDENT - (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) - IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression IDENT + (cast_expression ( (type_descriptor TYPE) ) IDENT)) ))))) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != LIT) )) ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT + (cast_expression ( (type_descriptor TYPE) ) IDENT)) < IDENT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT != (binary_expression IDENT - (cast_expression ( (type_descriptor TYPE) ) IDENT))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression IDENT - (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) - IDENT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + (binary_expression (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression IDENT + (cast_expression ( (type_descriptor TYPE) ) IDENT)) ))) * LIT)) )))) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != LIT) )) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) })) })) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( IDENT , IDENT , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , IDENT )))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression IDENT - IDENT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (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 (pointer_expression * IDENT) = (binary_expression IDENT - LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT == LIT) )) ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( IDENT , IDENT , IDENT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) }) (else_clause else (compound_statement { (do_statement do (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != LIT) )) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) ]) = IDENT) ;) }))) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = 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) )))) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( IDENT , IDENT , IDENT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + IDENT) < IDENT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT != (binary_expression IDENT - (cast_expression ( (type_descriptor TYPE) ) IDENT))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression IDENT - (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) - IDENT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + (binary_expression (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + IDENT) ))) * LIT)) )))) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != LIT) )) ;) })) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + (cast_expression ( (type_descriptor TYPE) ) IDENT)) < IDENT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != (binary_expression IDENT - (cast_expression ( (type_descriptor TYPE) ) IDENT))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression IDENT - (cast_expression ( (type_descriptor TYPE) ) 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 + (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + (cast_expression ( (type_descriptor TYPE) ) IDENT)) ))))) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != LIT) )) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) })) })) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( IDENT , IDENT , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , IDENT )))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT - IDENT) )))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (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 = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT - LIT) )))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT == LIT) )) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != LIT) )) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (cast_expression ( (type_descriptor TYPE) ) IDENT)) + LIT)) ;) })) (expression_statement (assignment_expression (pointer_expression * IDENT) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT) + LIT)) ;) }))) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + IDENT) )))) != LIT) || (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + IDENT) )))) != LIT)) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (cast_expression ( (type_descriptor TYPE) ) IDENT)) + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (cast_expression ( (type_descriptor TYPE) ) IDENT)) + LIT)) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression (binary_expression IDENT == LIT) && (binary_expression IDENT == LIT)) )) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (labeled_statement statement_identifier : (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( ))) ;)) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }))) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;)) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (pointer_expression * IDENT)) )) (compound_statement { (return_statement return IDENT ;) })) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( (binary_expression IDENT - (cast_expression ( (type_descriptor TYPE) ) IDENT)) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (return_statement return (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (parenthesized_expression ( (binary_expression IDENT - (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) * LIT) + (cast_expression ( (type_descriptor TYPE) ) IDENT)) ))) ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + IDENT) + LIT) )))) ;) (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) ;) })) (return_statement return IDENT ;) })))
(function_definition "uint * __gmpn_hgcd_step(uint *param_1,uint *param_2,uint *param_3,uint *param_4,int param_5,\n                       uint *param_6)\n\n{\n  uint *puVar1;\n  undefined *puVar2;\n  uint uVar3;\n  uint *puVar4;\n  uint *puVar5;\n  undefined4 *puVar6;\n  int iVar7;\n  undefined4 uVar8;\n  int iVar9;\n  uint uVar10;\n  int iVar11;\n  int iVar12;\n  uint uVar13;\n  uint *puVar14;\n  undefined4 uVar15;\n  uint uVar16;\n  uint *puVar17;\n  uint *puVar18;\n  uint *puVar19;\n  uint uVar20;\n  uint *puVar21;\n  int iVar22;\n  uint uVar23;\n  int iVar24;\n  uint *puVar25;\n  undefined4 uVar26;\n  undefined4 uVar27;\n  uint *puVar28;\n  uint *puVar29;\n  int *piVar30;\n  uint *puVar31;\n  int iVar32;\n  undefined1 *unaff_s5;\n  undefined *puVar33;\n  code *pcVar34;\n  code *pcVar35;\n  undefined1 *puVar36;\n  undefined1 *puVar37;\n  undefined1 *puVar38;\n  undefined4 uVar39;\n  code *pcVar40;\n  undefined1 auStack_c0 [24];\n  uint *apuStack_a8 [4];\n  int iStack_98;\n  int iStack_94;\n  uint *puStack_90;\n  undefined *puStack_8c;\n  uint *puStack_88;\n  uint *puStack_84;\n  uint *puStack_80;\n  undefined1 *puStack_7c;\n  uint *puStack_78;\n  uint *puStack_74;\n  int iStack_70;\n  undefined4 uStack_6c;\n  uint *local_58;\n  int local_54;\n  uint *local_50;\n  undefined1 auStack_3c [16];\n  uint *local_2c;\n  \n  puVar2 = PTR___stack_chk_guard_00097540;\n  puVar28 = (uint *)((int)param_1 * 4 + -4);\n  local_2c = *(uint **)PTR___stack_chk_guard_00097540;\n  uVar20 = param_3[(int)param_1 + -1];\n  uVar13 = param_2[(int)param_1 + -1];\n  uVar3 = uVar13 | uVar20;\n  if ((uint *)((int)param_4 + 1) == param_1) {\n    if (3 < uVar3) {\n      unaff_s5 = auStack_3c;\n      local_58 = (uint *)unaff_s5;\n      iVar9 = (*(code *)PTR___gmpn_hgcd2_00097460)\n                        (uVar13,param_2[(int)param_1 + -2],uVar20,param_3[(int)param_1 + -2]);\n      if (iVar9 != 0) goto LAB_00052bb8;\n    }\nLAB_00052b18:\n    local_50 = param_6;\n    local_58 = (uint *)(PTR_LAB_0009707c + 0x2960);\n    local_54 = param_5;\n    puVar29 = param_3;\n    puVar25 = param_1;\n    puVar18 = param_4;\n    puVar4 = (uint *)(*(code *)PTR___gmpn_gcd_subdiv_step_00097118)(param_2);\n  }\n  else {\n    uVar16 = param_2[(int)param_1 + -2];\n    uVar23 = param_3[(int)param_1 + -2];\n    if (-1 < (int)uVar3) {\n      if (uVar3 < 0x10000) {\n        iVar9 = 0x18;\n        if (uVar3 < 0x100) {\n          iVar9 = 0;\n        }\n        iVar24 = 9;\n        if (uVar3 < 0x100) {\n          iVar24 = 1;\n        }\n      }\n      else {\n        iVar9 = 8;\n        if (uVar3 < 0x1000000) {\n          iVar9 = 0x10;\n        }\n        iVar24 = 0x19;\n        if (uVar3 < 0x1000000) {\n          iVar24 = 0x11;\n        }\n      }\n      uVar3 = iVar9 - (uint)(byte)PTR___gmpn_clz_tab_0009718c[uVar3 >> iVar24];\n      uVar10 = 0x20 - uVar3;\n      uVar13 = uVar13 << (uVar3 & 0x1f) | uVar16 >> (uVar10 & 0x1f);\n      uVar16 = param_2[(int)param_1 + -3] >> (uVar10 & 0x1f) | uVar16 << (uVar3 & 0x1f);\n      uVar20 = uVar20 << (uVar3 & 0x1f) | uVar23 >> (uVar10 & 0x1f);\n      uVar23 = param_3[(int)param_1 + -3] >> (uVar10 & 0x1f) | uVar23 << (uVar3 & 0x1f);\n    }\n    unaff_s5 = auStack_3c;\n    local_58 = (uint *)unaff_s5;\n    iVar9 = (*(code *)PTR___gmpn_hgcd2_00097460)(uVar13,uVar16,uVar20,uVar23);\n    if (iVar9 == 0) goto LAB_00052b18;\nLAB_00052bb8:\n    unaff_s5 = auStack_3c;\n    (*(code *)PTR___gmpn_hgcd_matrix_mul_1_000973f4)(param_5,unaff_s5,param_6);\n    if (param_1 != (uint *)0x0) {\n      iVar9 = (int)param_1 + -1;\n      uVar3 = *param_2;\n      if (iVar9 == 0) {\n        *param_6 = uVar3;\n        puVar28 = param_6;\n      }\n      else {\n        puVar28 = param_6;\n        puVar29 = param_2 + 1;\n        do {\n          *puVar28 = uVar3;\n          iVar9 = iVar9 + -1;\n          uVar3 = *puVar29;\n          puVar28 = puVar28 + 1;\n          puVar29 = puVar29 + 1;\n        } while (iVar9 != 0);\n        param_6[(int)param_1 + -1] = uVar3;\n        puVar28 = param_6 + (int)param_1 + -1;\n      }\n    }\n    puVar29 = param_2;\n    puVar25 = param_6;\n    puVar18 = param_3;\n    local_58 = param_1;\n    puVar4 = (uint *)(*(code *)PTR___gmpn_matrix22_mul1_inverse_vector_00097488)(unaff_s5);\n  }\n  if (local_2c == *(uint **)puVar2) {\n    return puVar4;\n  }\n  uVar39 = 0x52c64;\n  puVar4 = local_2c;\n  puVar33 = PTR___stack_chk_fail_000974d0;\n  (*(code *)PTR___stack_chk_fail_000974d0)();\n  iVar9 = local_54;\n  apuStack_a8[0] = (uint *)(puVar33 + 0x4c3d0);\n  puVar36 = auStack_c0;\n  iStack_70 = param_5;\n  piVar30 = *(int **)(puVar33 + 0x448d0);\n  iVar24 = (int)puVar18 + local_54;\n  puStack_74 = param_6;\n  puStack_8c = puVar2;\n  iStack_98 = 0;\n  iStack_94 = *piVar30;\n  puStack_90 = puVar28;\n  puStack_88 = param_2;\n  puStack_84 = param_3;\n  puStack_80 = param_1;\n  puStack_7c = unaff_s5;\n  puStack_78 = param_4;\n  uStack_6c = uVar39;\n  if ((uint)(iVar24 * 4) < 0x7f01) {\n    iVar32 = -(iVar24 * 4 + 7U & 0xfffffff8);\n    puVar36 = auStack_c0 + iVar32;\n    puVar19 = (uint *)((int)apuStack_a8 + iVar32);\n    puVar28 = local_58;\n  }\n  else {\n    apuStack_a8[3] = local_58;\n    puVar19 = (uint *)(**(code **)(puVar33 + 0x44680))(&iStack_98);\n    puVar28 = apuStack_a8[3];\n  }\n  pcVar34 = (code *)apuStack_a8[0][-0x1f63];\n  *(int *)(puVar36 + 0x10) = iVar9;\n  puVar17 = puVar25;\n  puVar21 = puVar18;\n  (*pcVar34)(puVar19);\n  puVar31 = (uint *)(iVar24 - (uint)((int)puVar29 < iVar24));\n  if (((puVar31 != (uint *)0x0) &&\n      (puVar17 = puVar4, puVar21 = puVar19, puVar28 = puVar31,\n      iVar24 = (*(code *)apuStack_a8[0][-0x1ecb])(puVar4), iVar24 != 0)) &&\n     ((int)puVar31 < (int)puVar29)) {\n    puVar14 = puVar4 + (int)puVar31;\n    uVar3 = *puVar14;\n    puVar17 = (uint *)(uVar3 - 1);\n    *puVar14 = (uint)puVar17;\n    puVar5 = puVar31;\n    while ((uVar3 == 0 && (puVar5 = (uint *)((int)puVar5 + 1), puVar29 != puVar5))) {\n      uVar3 = puVar14[1];\n      puVar14 = puVar14 + 1;\n      puVar17 = (uint *)(uVar3 - 1);\n      *puVar14 = (uint)puVar17;\n    }\n  }\n  if (iStack_98 != 0) {\n    (*(code *)apuStack_a8[0][-0x1e8b])();\n  }\n  puVar5 = puVar29;\n  if (((int)puVar18 < (int)puVar29) && (puVar4[(int)puVar29 + -1] == 0)) {\n    puVar14 = puVar4 + (int)puVar29;\n    do {\n      puVar29 = (uint *)((int)puVar29 + -1);\n      puVar5 = puVar18;\n      if (puVar18 == puVar29) break;\n      puVar1 = puVar14 + -2;\n      puVar5 = puVar29;\n      puVar14 = puVar14 + -1;\n    } while (*puVar1 == 0);\n  }\n  pcVar34 = (code *)apuStack_a8[0][-0x1edc];\n  if (iStack_94 == *piVar30) {\n    return puVar5;\n  }\n  uVar39 = 0x52e68;\n  iVar24 = iStack_94;\n  (*pcVar34)();\n  puVar38 = puVar36 + -0x88;\n  puVar37 = puVar36 + -0x88;\n  puVar6 = *(undefined4 **)(pcVar34 + 0x446d8);\n  *(undefined1 **)(puVar36 + -8) = auStack_c0;\n  *(uint **)(puVar36 + -0x10) = puVar19;\n  *(undefined4 **)(puVar36 + -0x4c) = puVar6;\n  *(uint **)(puVar36 + -0x20) = puVar18;\n  *(uint **)(puVar36 + -0x24) = puVar4;\n  *(uint **)(puVar36 + -0x28) = puVar29;\n  *(undefined4 *)(puVar36 + -4) = uVar39;\n  *(uint **)(puVar36 + -0xc) = puVar25;\n  *(int *)(puVar36 + -0x14) = iVar9;\n  *(uint **)(puVar36 + -0x18) = puVar31;\n  *(int **)(puVar36 + -0x1c) = piVar30;\n  *(code **)(puVar36 + -0x68) = pcVar34 + 0x4c1d8;\n  *(undefined4 *)(puVar36 + -0x2c) = *puVar6;\n  puVar29 = puVar28;\n  puVar25 = puVar28;\n  if (0 < (int)puVar28) {\n    if (puVar17[(int)((int)puVar28 + -1)] == 0) {\n      puVar18 = puVar17 + (int)puVar28;\n      do {\n        puVar25 = (uint *)((int)puVar25 + -1);\n        if (puVar25 == (uint *)0x0) break;\n        puVar4 = puVar18 + -2;\n        puVar18 = puVar18 + -1;\n      } while (*puVar4 == 0);\n    }\n    if (puVar21[(int)((int)puVar28 + -1)] == 0) {\n      puVar18 = puVar21 + (int)puVar28;\n      do {\n        puVar29 = (uint *)((int)puVar29 + -1);\n        if (puVar29 == (uint *)0x0) break;\n        puVar4 = puVar18 + -2;\n        puVar18 = puVar18 + -1;\n      } while (*puVar4 == 0);\n    }\n  }\n  iVar32 = *(int *)(iVar24 + 4);\n  iVar9 = 8;\n  do {\n    iVar22 = iVar9 + -8;\n    do {\n      iVar12 = iVar32;\n      if (0 < iVar32) {\n        iVar7 = *(int *)(iVar24 + iVar22 + 8);\n        iVar11 = *(int *)(iVar7 + iVar32 * 4 + -4);\n        iVar7 = iVar7 + iVar32 * 4;\n        while (iVar11 == 0) {\n          iVar12 = iVar12 + -1;\n          if (iVar12 == 0) break;\n          iVar11 = *(int *)(iVar7 + -8);\n          iVar7 = iVar7 + -4;\n        }\n      }\n      iVar7 = iVar22 + -0x3c;\n      iVar22 = iVar22 + 4;\n      *(int *)(puVar36 + iVar7) = iVar12;\n    } while (iVar9 != iVar22);\n    iVar9 = iVar9 + 8;\n    iVar22 = *(int *)(puVar36 + -0x34);\n  } while (iVar9 != 0x18);\n  iVar9 = *(int *)(puVar36 + -0x38);\n  *(undefined4 *)(puVar36 + -0x40) = 0;\n  if (iVar9 == 0) {\n    uVar39 = *(undefined4 *)(iVar24 + 0x10);\n    *(int *)(puVar36 + -0x74) = iVar22;\n    *(undefined4 *)(puVar36 + -0x78) = uVar39;\n    puVar28 = puVar21;\n    puVar18 = puVar29;\n    puVar4 = puVar17;\nLAB_0005309c:\n    puVar29 = (uint *)FUN_00052c70(puVar28,puVar18,puVar4,puVar25);\n    iVar9 = *(int *)(puVar36 + -0x68);\nLAB_000530b4:\n    pcVar34 = *(code **)(iVar9 + -0x7a2c);\n    puVar38 = puVar37;\n    if (*(int *)(puVar36 + -0x40) != 0) goto LAB_00053478;\n  }\n  else {\n    if (iVar22 == 0) {\n      uVar39 = *(undefined4 *)(iVar24 + 0xc);\n      *(int *)(puVar36 + -0x74) = iVar9;\n      *(undefined4 *)(puVar36 + -0x78) = uVar39;\n      puVar28 = puVar17;\n      puVar18 = puVar25;\n      puVar4 = puVar21;\n      puVar25 = puVar29;\n      goto LAB_0005309c;\n    }\n    iVar7 = *(int *)(puVar36 + -0x30);\n    pcVar34 = *(code **)(pcVar34 + 0x4454c);\n    iVar12 = (int)puVar25 - *(int *)(puVar36 + -0x3c);\n    *(int *)(puVar36 + -0x50) = *(int *)(puVar36 + -0x3c);\n    *(int *)(puVar36 + -0x44) = iVar9;\n    if ((int)puVar29 - iVar22 <= iVar12) {\n      iVar12 = (int)puVar29 - iVar22;\n    }\n    iVar11 = (int)puVar25 - iVar9;\n    if ((int)puVar29 - iVar7 <= (int)puVar25 - iVar9) {\n      iVar11 = (int)puVar29 - iVar7;\n    }\n    puVar29 = (uint *)(iVar11 + 1);\n    if (iVar11 + 1 <= iVar12 + 1) {\n      puVar29 = (uint *)(iVar12 + 1);\n    }\n    puVar25 = (uint *)(*pcVar34)((int)puVar29 + 1);\n    iVar9 = (int)puVar25 >> 1;\n    iVar12 = *(int *)(puVar36 + -0x68);\n    uVar39 = *(undefined4 *)(puVar36 + -0x44);\n    if (iVar9 < (int)puVar25) {\n      if (iVar32 <= iVar9) {\n        uVar13 = ((int)puVar25 * 3 + iVar9 + 4) * 4;\n        uVar3 = uVar13 + 7;\n        if (0x7f00 < uVar13) {\n          pcVar34 = *(code **)(iVar12 + -0x7d50);\n          goto LAB_0005305c;\n        }\n        goto LAB_00053148;\n      }\n      uVar13 = ((int)puVar25 * 4 + 4) * 4;\n      uVar3 = uVar13 + 7;\n      if (uVar13 < 0x7f01) goto LAB_00053148;\n      pcVar34 = *(code **)(iVar12 + -0x7d50);\nLAB_0005305c:\n      *(uint **)(puVar36 + -0x48) = puVar25;\n      *(undefined4 *)(puVar36 + -0x44) = uVar39;\n      puVar4 = (uint *)(*pcVar34)(puVar36 + -0x40);\n      iVar12 = *(int *)(puVar36 + -0x68);\n      puVar25 = *(uint **)(puVar36 + -0x48);\n      uVar39 = *(undefined4 *)(puVar36 + -0x44);\n    }\n    else {\n      uVar3 = ((int)puVar25 * 3 + 4) * 4;\n      pcVar34 = *(code **)(iVar12 + -0x7d50);\n      if (0x7f00 < uVar3) goto LAB_0005305c;\n      uVar3 = uVar3 + 7;\nLAB_00053148:\n      puVar38 = puVar36 + -(uVar3 & 0xfffffff8) + -0x88;\n      puVar4 = (uint *)(puVar36 + -(uVar3 & 0xfffffff8) + -0x68);\n    }\n    *(uint **)(puVar36 + -0x44) = puVar4 + (int)puVar25;\n    *(uint **)(puVar36 + -0x48) = puVar4 + (int)puVar25 + (int)puVar25;\n    if ((int)puVar25 < (int)puVar28) {\n      pcVar34 = *(code **)(iVar12 + -0x7d0c);\n      puVar18 = (uint *)((int)puVar28 - (int)puVar25);\n      *(undefined4 *)(puVar36 + -0x5c) = uVar39;\n      *(uint **)(puVar36 + -0x58) = puVar25;\n      *(int *)(puVar36 + -0x54) = (int)puVar25 * 4;\n      iVar9 = (*pcVar34)(puVar17,puVar17,puVar17 + (int)puVar25,puVar18);\n      iVar12 = *(int *)(puVar36 + -0x68);\n      iVar32 = *(int *)(puVar36 + -0x54);\n      puVar28 = *(uint **)(puVar36 + -0x58);\n      uVar39 = *(undefined4 *)(puVar36 + -0x5c);\n      if (iVar9 == 0) {\nLAB_0005359c:\n        pcVar34 = *(code **)(iVar12 + -0x7d0c);\n      }\n      else {\n        puVar25 = puVar17;\n        if ((int)puVar28 <= (int)puVar18) {\nLAB_00053588:\n          do {\n            uVar3 = *puVar25;\n            *puVar25 = uVar3 + 1;\n            puVar25 = puVar25 + 1;\n          } while (uVar3 + 1 == 0);\n          goto LAB_0005359c;\n        }\n        puVar31 = puVar17 + (int)puVar18;\n        uVar3 = *puVar31;\n        *puVar31 = uVar3 + 1;\n        puVar19 = puVar18;\n        if (uVar3 + 1 == 0) {\n          do {\n            puVar19 = (uint *)((int)puVar19 + 1);\n            if (puVar28 == puVar19) goto LAB_00053588;\n            uVar3 = puVar31[1];\n            puVar31 = puVar31 + 1;\n            *puVar31 = uVar3 + 1;\n          } while (uVar3 + 1 == 0);\n          goto LAB_0005359c;\n        }\n        pcVar34 = *(code **)(iVar12 + -0x7d0c);\n      }\n      *(uint **)(puVar36 + -0x58) = puVar28;\n      *(undefined4 *)(puVar36 + -0x54) = uVar39;\n      iVar9 = (*pcVar34)(puVar21,puVar21,(int)puVar21 + iVar32,puVar18);\n      iVar12 = *(int *)(puVar36 + -0x68);\n      uVar39 = *(undefined4 *)(puVar36 + -0x54);\n      puVar25 = *(uint **)(puVar36 + -0x58);\n      puVar28 = puVar25;\n      if (iVar9 != 0) {\n        puVar19 = puVar21;\n        if ((int)puVar18 < (int)puVar25) {\n          puVar31 = puVar21 + (int)puVar18;\n          uVar3 = *puVar31 + 1;\n          *puVar31 = uVar3;\n          while (uVar3 == 0) {\n            puVar18 = (uint *)((int)puVar18 + 1);\n            if (puVar25 == puVar18) goto LAB_0005361c;\n            puVar5 = puVar31 + 1;\n            puVar31 = puVar31 + 1;\n            uVar3 = *puVar5 + 1;\n            *puVar31 = uVar3;\n          }\n        }\n        else {\nLAB_0005361c:\n          do {\n            uVar3 = *puVar19;\n            *puVar19 = uVar3 + 1;\n            puVar19 = puVar19 + 1;\n          } while (uVar3 + 1 == 0);\n        }\n      }\n    }\n    uVar8 = *(undefined4 *)(iVar24 + 0x14);\n    pcVar34 = *(code **)(iVar12 + -0x7cd8);\n    *(undefined4 *)(puVar36 + -0x5c) = uVar39;\n    *(uint **)(puVar36 + -0x54) = puVar25;\n    *(undefined4 *)(puVar38 + 0x18) = *(undefined4 *)(puVar36 + -0x48);\n    *(undefined4 *)(puVar38 + 0x10) = uVar8;\n    *(int *)(puVar38 + 0x14) = iVar7;\n    (*pcVar34)(puVar4,puVar25,puVar17,puVar28);\n    uVar39 = *(undefined4 *)(iVar24 + 0xc);\n    uVar26 = *(undefined4 *)(puVar36 + -0x54);\n    uVar27 = *(undefined4 *)(puVar36 + -0x5c);\n    uVar8 = *(undefined4 *)(puVar36 + -0x48);\n    pcVar34 = *(code **)(*(int *)(puVar36 + -0x68) + -0x7cd8);\n    uVar15 = *(undefined4 *)(puVar36 + -0x44);\n    *(undefined4 *)(puVar36 + -0x58) = uVar26;\n    *(undefined4 *)(puVar38 + 0x14) = uVar27;\n    *(undefined4 *)(puVar36 + -0x54) = uVar27;\n    *(undefined4 *)(puVar38 + 0x10) = uVar39;\n    *(undefined4 *)(puVar38 + 0x18) = uVar8;\n    (*pcVar34)(uVar15,uVar26,puVar21,puVar28);\n    iVar9 = *(int *)(puVar36 + -0x58);\n    iVar12 = *(int *)(puVar36 + -0x68);\n    iVar32 = *(int *)(puVar36 + -0x54);\n    if ((iVar7 + (int)puVar28 < iVar9) && (iVar7 != iVar9 - (int)puVar28)) {\n      iVar11 = (iVar9 - (int)puVar28) - iVar7;\n      puVar25 = puVar4 + (int)(iVar7 + (int)puVar28);\n      do {\n        iVar11 = iVar11 + -1;\n        *puVar25 = 0;\n        puVar25 = puVar25 + 1;\n      } while (iVar11 != 0);\n    }\n    pcVar34 = *(code **)(iVar12 + -0x7b2c);\n    if (iVar32 + (int)puVar28 < iVar9) {\n      if (iVar32 != iVar9 - (int)puVar28) {\n        iVar7 = (iVar9 - (int)puVar28) - iVar32;\n        puVar6 = (undefined4 *)(*(int *)(puVar36 + -0x44) + (int)(iVar32 + (int)puVar28) * 4);\n        do {\n          iVar7 = iVar7 + -1;\n          *puVar6 = 0;\n          puVar6 = puVar6 + 1;\n        } while (iVar7 != 0);\n        pcVar34 = *(code **)(iVar12 + -0x7b2c);\n      }\n    }\n    *(int *)(puVar36 + -0x54) = iVar9;\n    uVar3 = (*pcVar34)(puVar4,puVar4,*(undefined4 *)(puVar36 + -0x44),iVar9);\n    uVar13 = *puVar4;\n    iVar9 = *(int *)(puVar36 + -0x68);\n    uVar39 = *(undefined4 *)(puVar36 + -0x54);\n    *puVar4 = uVar13 - uVar3;\n    puVar25 = puVar4;\n    if (uVar13 < uVar3) {\n      do {\n        puVar25 = puVar25 + 1;\n        uVar3 = *puVar25;\n        *puVar25 = uVar3 - 1;\n      } while (uVar3 == 0);\n    }\n    uVar8 = *(undefined4 *)(iVar24 + 0x10);\n    pcVar34 = *(code **)(iVar9 + -0x7cd8);\n    uVar15 = *(undefined4 *)(puVar36 + -0x44);\n    *(undefined4 *)(puVar36 + -0x54) = uVar39;\n    *(undefined4 *)(puVar38 + 0x18) = *(undefined4 *)(puVar36 + -0x48);\n    *(int *)(puVar38 + 0x14) = iVar22;\n    *(undefined4 *)(puVar38 + 0x10) = uVar8;\n    (*pcVar34)(uVar15,uVar39,puVar17,puVar28);\n    iVar9 = *(int *)(puVar36 + -0x68);\n    uVar39 = *(undefined4 *)(puVar36 + -0x54);\n    if (puVar29 != (uint *)0x0) {\n      iVar32 = (int)puVar29 + -1;\n      uVar3 = *puVar4;\n      puVar18 = puVar17;\n      puVar25 = puVar4;\n      if (iVar32 == 0) {\n        *puVar17 = uVar3;\n      }\n      else {\n        do {\n          *puVar18 = uVar3;\n          iVar32 = iVar32 + -1;\n          uVar3 = puVar25[1];\n          puVar18 = puVar18 + 1;\n          puVar25 = puVar25 + 1;\n        } while (iVar32 != 0);\n        puVar17[(int)puVar29 + -1] = uVar3;\n      }\n    }\n    uVar8 = *(undefined4 *)(iVar24 + 8);\n    pcVar34 = *(code **)(iVar9 + -0x7cd8);\n    *(undefined4 *)(puVar38 + 0x18) = *(undefined4 *)(puVar36 + -0x48);\n    *(undefined4 *)(puVar36 + -0x48) = uVar39;\n    *(undefined4 *)(puVar38 + 0x10) = uVar8;\n    *(undefined4 *)(puVar38 + 0x14) = *(undefined4 *)(puVar36 + -0x50);\n    (*pcVar34)(puVar4,uVar39,puVar21,puVar28);\n    iVar9 = *(int *)(puVar36 + -0x48);\n    iVar32 = *(int *)(puVar36 + -0x68);\n    if ((int)puVar28 + iVar22 < iVar9) {\n      if (iVar22 != iVar9 - (int)puVar28) {\n        iVar12 = (iVar9 - (int)puVar28) - iVar22;\n        puVar6 = (undefined4 *)(*(int *)(puVar36 + -0x44) + (int)((int)puVar28 + iVar22) * 4);\n        do {\n          iVar12 = iVar12 + -1;\n          *puVar6 = 0;\n          puVar6 = puVar6 + 1;\n        } while (iVar12 != 0);\n      }\n    }\n    pcVar34 = *(code **)(iVar32 + -0x7b2c);\n    if (*(int *)(puVar36 + -0x50) + (int)puVar28 < iVar9) {\n      if (*(int *)(puVar36 + -0x50) != iVar9 - (int)puVar28) {\n        iVar22 = (iVar9 - (int)puVar28) - *(int *)(puVar36 + -0x50);\n        puVar28 = puVar4 + (int)(*(int *)(puVar36 + -0x50) + (int)puVar28);\n        do {\n          iVar22 = iVar22 + -1;\n          *puVar28 = 0;\n          puVar28 = puVar28 + 1;\n        } while (iVar22 != 0);\n        pcVar34 = *(code **)(iVar32 + -0x7b2c);\n      }\n    }\n    uVar3 = (*pcVar34)(puVar4,puVar4,*(undefined4 *)(puVar36 + -0x44),iVar9);\n    uVar13 = *puVar4;\n    iVar9 = *(int *)(puVar36 + -0x68);\n    puVar18 = (uint *)(uVar13 - uVar3);\n    *puVar4 = (uint)puVar18;\n    puVar28 = puVar4;\n    if (uVar13 < uVar3) {\n      do {\n        puVar28 = puVar28 + 1;\n        uVar3 = *puVar28;\n        puVar18 = (uint *)(uVar3 - 1);\n        *puVar28 = (uint)puVar18;\n      } while (uVar3 == 0);\n    }\n    iVar32 = (int)puVar29 + -1;\n    if (puVar29 == (uint *)0x0) {\n      iVar32 = -4;\n    }\n    else {\n      puVar18 = (uint *)*puVar4;\n      puVar28 = puVar21;\n      if (iVar32 != 0) {\n        do {\n          puVar4 = puVar4 + 1;\n          *puVar28 = (uint)puVar18;\n          iVar32 = iVar32 + -1;\n          puVar18 = (uint *)*puVar4;\n          puVar28 = puVar28 + 1;\n        } while (iVar32 != 0);\n        puVar28 = puVar21 + (int)puVar29 + -1;\n      }\n      *puVar28 = (uint)puVar18;\n      iVar32 = (int)puVar29 * 4 + -4;\n    }\n    puVar37 = puVar38;\n    if (*(int *)((int)puVar17 + iVar32) != 0 || *(int *)((int)puVar21 + iVar32) != 0)\n    goto LAB_000530b4;\n    puVar17 = puVar17 + (int)puVar29 + -2;\n    puVar21 = puVar21 + (int)puVar29 + -2;\n    do {\n      uVar3 = *puVar17;\n      puVar29 = (uint *)((int)puVar29 + -1);\n      uVar13 = *puVar21;\n      puVar17 = puVar17 + -1;\n      puVar21 = puVar21 + -1;\n    } while (uVar3 == 0 && uVar13 == 0);\n    piVar30 = *(int **)(puVar36 + -0x4c);\n    if (*(int *)(puVar36 + -0x40) == 0) goto LAB_000530c4;\n    pcVar34 = *(code **)(iVar9 + -0x7a2c);\nLAB_00053478:\n    (*pcVar34)();\n    iVar9 = *(int *)(puVar36 + -0x68);\n    puVar38 = puVar37;\n  }\n  piVar30 = *(int **)(puVar36 + -0x4c);\nLAB_000530c4:\n  iVar32 = *(int *)(puVar36 + -0x2c);\n  pcVar34 = *(code **)(iVar9 + -0x7b70);\n  if (iVar32 == *piVar30) {\n    return puVar29;\n  }\n  pcVar40 = __gmpn_hgcd_reduce_itch;\n  (*pcVar34)();\n  pcVar35 = *(code **)(pcVar34 + 0x43e08);\n  *(uint **)(puVar38 + -0xc) = puVar21;\n  *(int *)(puVar38 + -8) = iVar24;\n  *(uint **)(puVar38 + -0x10) = puVar17;\n  *(code **)(puVar38 + -0x18) = pcVar34 + 0x4b9e4;\n  *(code **)(puVar38 + -4) = pcVar40;\n  puVar28 = (uint *)(*pcVar35)(iVar32 - (int)puVar18);\n  if (999 < iVar32) {\n    return (uint *)((iVar32 - (int)puVar18) * 2 + (int)puVar28);\n  }\n  puVar18 = (uint *)((int)puVar18 + iVar32 + -1);\n  if ((int)puVar28 <= (int)puVar18) {\n    puVar28 = puVar18;\n  }\n  return puVar28;\n}" (type_identifier "uint") (pointer_declarator "* __gmpn_hgcd_step(uint *param_1,uint *param_2,uint *param_3,uint *param_4,int param_5,\n                       uint *param_6)" (* "*") (function_declarator "__gmpn_hgcd_step(uint *param_1,uint *param_2,uint *param_3,uint *param_4,int param_5,\n                       uint *param_6)" (identifier "__gmpn_hgcd_step") (parameter_list "(uint *param_1,uint *param_2,uint *param_3,uint *param_4,int param_5,\n                       uint *param_6)" (( "(") (parameter_declaration "uint *param_1" (type_identifier "uint") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) (, ",") (parameter_declaration "uint *param_2" (type_identifier "uint") (pointer_declarator "*param_2" (* "*") (identifier "param_2"))) (, ",") (parameter_declaration "uint *param_3" (type_identifier "uint") (pointer_declarator "*param_3" (* "*") (identifier "param_3"))) (, ",") (parameter_declaration "uint *param_4" (type_identifier "uint") (pointer_declarator "*param_4" (* "*") (identifier "param_4"))) (, ",") (parameter_declaration "int param_5" (primitive_type "int") (identifier "param_5")) (, ",") (parameter_declaration "uint *param_6" (type_identifier "uint") (pointer_declarator "*param_6" (* "*") (identifier "param_6"))) () ")")))) (compound_statement "{\n  uint *puVar1;\n  undefined *puVar2;\n  uint uVar3;\n  uint *puVar4;\n  uint *puVar5;\n  undefined4 *puVar6;\n  int iVar7;\n  undefined4 uVar8;\n  int iVar9;\n  uint uVar10;\n  int iVar11;\n  int iVar12;\n  uint uVar13;\n  uint *puVar14;\n  undefined4 uVar15;\n  uint uVar16;\n  uint *puVar17;\n  uint *puVar18;\n  uint *puVar19;\n  uint uVar20;\n  uint *puVar21;\n  int iVar22;\n  uint uVar23;\n  int iVar24;\n  uint *puVar25;\n  undefined4 uVar26;\n  undefined4 uVar27;\n  uint *puVar28;\n  uint *puVar29;\n  int *piVar30;\n  uint *puVar31;\n  int iVar32;\n  undefined1 *unaff_s5;\n  undefined *puVar33;\n  code *pcVar34;\n  code *pcVar35;\n  undefined1 *puVar36;\n  undefined1 *puVar37;\n  undefined1 *puVar38;\n  undefined4 uVar39;\n  code *pcVar40;\n  undefined1 auStack_c0 [24];\n  uint *apuStack_a8 [4];\n  int iStack_98;\n  int iStack_94;\n  uint *puStack_90;\n  undefined *puStack_8c;\n  uint *puStack_88;\n  uint *puStack_84;\n  uint *puStack_80;\n  undefined1 *puStack_7c;\n  uint *puStack_78;\n  uint *puStack_74;\n  int iStack_70;\n  undefined4 uStack_6c;\n  uint *local_58;\n  int local_54;\n  uint *local_50;\n  undefined1 auStack_3c [16];\n  uint *local_2c;\n  \n  puVar2 = PTR___stack_chk_guard_00097540;\n  puVar28 = (uint *)((int)param_1 * 4 + -4);\n  local_2c = *(uint **)PTR___stack_chk_guard_00097540;\n  uVar20 = param_3[(int)param_1 + -1];\n  uVar13 = param_2[(int)param_1 + -1];\n  uVar3 = uVar13 | uVar20;\n  if ((uint *)((int)param_4 + 1) == param_1) {\n    if (3 < uVar3) {\n      unaff_s5 = auStack_3c;\n      local_58 = (uint *)unaff_s5;\n      iVar9 = (*(code *)PTR___gmpn_hgcd2_00097460)\n                        (uVar13,param_2[(int)param_1 + -2],uVar20,param_3[(int)param_1 + -2]);\n      if (iVar9 != 0) goto LAB_00052bb8;\n    }\nLAB_00052b18:\n    local_50 = param_6;\n    local_58 = (uint *)(PTR_LAB_0009707c + 0x2960);\n    local_54 = param_5;\n    puVar29 = param_3;\n    puVar25 = param_1;\n    puVar18 = param_4;\n    puVar4 = (uint *)(*(code *)PTR___gmpn_gcd_subdiv_step_00097118)(param_2);\n  }\n  else {\n    uVar16 = param_2[(int)param_1 + -2];\n    uVar23 = param_3[(int)param_1 + -2];\n    if (-1 < (int)uVar3) {\n      if (uVar3 < 0x10000) {\n        iVar9 = 0x18;\n        if (uVar3 < 0x100) {\n          iVar9 = 0;\n        }\n        iVar24 = 9;\n        if (uVar3 < 0x100) {\n          iVar24 = 1;\n        }\n      }\n      else {\n        iVar9 = 8;\n        if (uVar3 < 0x1000000) {\n          iVar9 = 0x10;\n        }\n        iVar24 = 0x19;\n        if (uVar3 < 0x1000000) {\n          iVar24 = 0x11;\n        }\n      }\n      uVar3 = iVar9 - (uint)(byte)PTR___gmpn_clz_tab_0009718c[uVar3 >> iVar24];\n      uVar10 = 0x20 - uVar3;\n      uVar13 = uVar13 << (uVar3 & 0x1f) | uVar16 >> (uVar10 & 0x1f);\n      uVar16 = param_2[(int)param_1 + -3] >> (uVar10 & 0x1f) | uVar16 << (uVar3 & 0x1f);\n      uVar20 = uVar20 << (uVar3 & 0x1f) | uVar23 >> (uVar10 & 0x1f);\n      uVar23 = param_3[(int)param_1 + -3] >> (uVar10 & 0x1f) | uVar23 << (uVar3 & 0x1f);\n    }\n    unaff_s5 = auStack_3c;\n    local_58 = (uint *)unaff_s5;\n    iVar9 = (*(code *)PTR___gmpn_hgcd2_00097460)(uVar13,uVar16,uVar20,uVar23);\n    if (iVar9 == 0) goto LAB_00052b18;\nLAB_00052bb8:\n    unaff_s5 = auStack_3c;\n    (*(code *)PTR___gmpn_hgcd_matrix_mul_1_000973f4)(param_5,unaff_s5,param_6);\n    if (param_1 != (uint *)0x0) {\n      iVar9 = (int)param_1 + -1;\n      uVar3 = *param_2;\n      if (iVar9 == 0) {\n        *param_6 = uVar3;\n        puVar28 = param_6;\n      }\n      else {\n        puVar28 = param_6;\n        puVar29 = param_2 + 1;\n        do {\n          *puVar28 = uVar3;\n          iVar9 = iVar9 + -1;\n          uVar3 = *puVar29;\n          puVar28 = puVar28 + 1;\n          puVar29 = puVar29 + 1;\n        } while (iVar9 != 0);\n        param_6[(int)param_1 + -1] = uVar3;\n        puVar28 = param_6 + (int)param_1 + -1;\n      }\n    }\n    puVar29 = param_2;\n    puVar25 = param_6;\n    puVar18 = param_3;\n    local_58 = param_1;\n    puVar4 = (uint *)(*(code *)PTR___gmpn_matrix22_mul1_inverse_vector_00097488)(unaff_s5);\n  }\n  if (local_2c == *(uint **)puVar2) {\n    return puVar4;\n  }\n  uVar39 = 0x52c64;\n  puVar4 = local_2c;\n  puVar33 = PTR___stack_chk_fail_000974d0;\n  (*(code *)PTR___stack_chk_fail_000974d0)();\n  iVar9 = local_54;\n  apuStack_a8[0] = (uint *)(puVar33 + 0x4c3d0);\n  puVar36 = auStack_c0;\n  iStack_70 = param_5;\n  piVar30 = *(int **)(puVar33 + 0x448d0);\n  iVar24 = (int)puVar18 + local_54;\n  puStack_74 = param_6;\n  puStack_8c = puVar2;\n  iStack_98 = 0;\n  iStack_94 = *piVar30;\n  puStack_90 = puVar28;\n  puStack_88 = param_2;\n  puStack_84 = param_3;\n  puStack_80 = param_1;\n  puStack_7c = unaff_s5;\n  puStack_78 = param_4;\n  uStack_6c = uVar39;\n  if ((uint)(iVar24 * 4) < 0x7f01) {\n    iVar32 = -(iVar24 * 4 + 7U & 0xfffffff8);\n    puVar36 = auStack_c0 + iVar32;\n    puVar19 = (uint *)((int)apuStack_a8 + iVar32);\n    puVar28 = local_58;\n  }\n  else {\n    apuStack_a8[3] = local_58;\n    puVar19 = (uint *)(**(code **)(puVar33 + 0x44680))(&iStack_98);\n    puVar28 = apuStack_a8[3];\n  }\n  pcVar34 = (code *)apuStack_a8[0][-0x1f63];\n  *(int *)(puVar36 + 0x10) = iVar9;\n  puVar17 = puVar25;\n  puVar21 = puVar18;\n  (*pcVar34)(puVar19);\n  puVar31 = (uint *)(iVar24 - (uint)((int)puVar29 < iVar24));\n  if (((puVar31 != (uint *)0x0) &&\n      (puVar17 = puVar4, puVar21 = puVar19, puVar28 = puVar31,\n      iVar24 = (*(code *)apuStack_a8[0][-0x1ecb])(puVar4), iVar24 != 0)) &&\n     ((int)puVar31 < (int)puVar29)) {\n    puVar14 = puVar4 + (int)puVar31;\n    uVar3 = *puVar14;\n    puVar17 = (uint *)(uVar3 - 1);\n    *puVar14 = (uint)puVar17;\n    puVar5 = puVar31;\n    while ((uVar3 == 0 && (puVar5 = (uint *)((int)puVar5 + 1), puVar29 != puVar5))) {\n      uVar3 = puVar14[1];\n      puVar14 = puVar14 + 1;\n      puVar17 = (uint *)(uVar3 - 1);\n      *puVar14 = (uint)puVar17;\n    }\n  }\n  if (iStack_98 != 0) {\n    (*(code *)apuStack_a8[0][-0x1e8b])();\n  }\n  puVar5 = puVar29;\n  if (((int)puVar18 < (int)puVar29) && (puVar4[(int)puVar29 + -1] == 0)) {\n    puVar14 = puVar4 + (int)puVar29;\n    do {\n      puVar29 = (uint *)((int)puVar29 + -1);\n      puVar5 = puVar18;\n      if (puVar18 == puVar29) break;\n      puVar1 = puVar14 + -2;\n      puVar5 = puVar29;\n      puVar14 = puVar14 + -1;\n    } while (*puVar1 == 0);\n  }\n  pcVar34 = (code *)apuStack_a8[0][-0x1edc];\n  if (iStack_94 == *piVar30) {\n    return puVar5;\n  }\n  uVar39 = 0x52e68;\n  iVar24 = iStack_94;\n  (*pcVar34)();\n  puVar38 = puVar36 + -0x88;\n  puVar37 = puVar36 + -0x88;\n  puVar6 = *(undefined4 **)(pcVar34 + 0x446d8);\n  *(undefined1 **)(puVar36 + -8) = auStack_c0;\n  *(uint **)(puVar36 + -0x10) = puVar19;\n  *(undefined4 **)(puVar36 + -0x4c) = puVar6;\n  *(uint **)(puVar36 + -0x20) = puVar18;\n  *(uint **)(puVar36 + -0x24) = puVar4;\n  *(uint **)(puVar36 + -0x28) = puVar29;\n  *(undefined4 *)(puVar36 + -4) = uVar39;\n  *(uint **)(puVar36 + -0xc) = puVar25;\n  *(int *)(puVar36 + -0x14) = iVar9;\n  *(uint **)(puVar36 + -0x18) = puVar31;\n  *(int **)(puVar36 + -0x1c) = piVar30;\n  *(code **)(puVar36 + -0x68) = pcVar34 + 0x4c1d8;\n  *(undefined4 *)(puVar36 + -0x2c) = *puVar6;\n  puVar29 = puVar28;\n  puVar25 = puVar28;\n  if (0 < (int)puVar28) {\n    if (puVar17[(int)((int)puVar28 + -1)] == 0) {\n      puVar18 = puVar17 + (int)puVar28;\n      do {\n        puVar25 = (uint *)((int)puVar25 + -1);\n        if (puVar25 == (uint *)0x0) break;\n        puVar4 = puVar18 + -2;\n        puVar18 = puVar18 + -1;\n      } while (*puVar4 == 0);\n    }\n    if (puVar21[(int)((int)puVar28 + -1)] == 0) {\n      puVar18 = puVar21 + (int)puVar28;\n      do {\n        puVar29 = (uint *)((int)puVar29 + -1);\n        if (puVar29 == (uint *)0x0) break;\n        puVar4 = puVar18 + -2;\n        puVar18 = puVar18 + -1;\n      } while (*puVar4 == 0);\n    }\n  }\n  iVar32 = *(int *)(iVar24 + 4);\n  iVar9 = 8;\n  do {\n    iVar22 = iVar9 + -8;\n    do {\n      iVar12 = iVar32;\n      if (0 < iVar32) {\n        iVar7 = *(int *)(iVar24 + iVar22 + 8);\n        iVar11 = *(int *)(iVar7 + iVar32 * 4 + -4);\n        iVar7 = iVar7 + iVar32 * 4;\n        while (iVar11 == 0) {\n          iVar12 = iVar12 + -1;\n          if (iVar12 == 0) break;\n          iVar11 = *(int *)(iVar7 + -8);\n          iVar7 = iVar7 + -4;\n        }\n      }\n      iVar7 = iVar22 + -0x3c;\n      iVar22 = iVar22 + 4;\n      *(int *)(puVar36 + iVar7) = iVar12;\n    } while (iVar9 != iVar22);\n    iVar9 = iVar9 + 8;\n    iVar22 = *(int *)(puVar36 + -0x34);\n  } while (iVar9 != 0x18);\n  iVar9 = *(int *)(puVar36 + -0x38);\n  *(undefined4 *)(puVar36 + -0x40) = 0;\n  if (iVar9 == 0) {\n    uVar39 = *(undefined4 *)(iVar24 + 0x10);\n    *(int *)(puVar36 + -0x74) = iVar22;\n    *(undefined4 *)(puVar36 + -0x78) = uVar39;\n    puVar28 = puVar21;\n    puVar18 = puVar29;\n    puVar4 = puVar17;\nLAB_0005309c:\n    puVar29 = (uint *)FUN_00052c70(puVar28,puVar18,puVar4,puVar25);\n    iVar9 = *(int *)(puVar36 + -0x68);\nLAB_000530b4:\n    pcVar34 = *(code **)(iVar9 + -0x7a2c);\n    puVar38 = puVar37;\n    if (*(int *)(puVar36 + -0x40) != 0) goto LAB_00053478;\n  }\n  else {\n    if (iVar22 == 0) {\n      uVar39 = *(undefined4 *)(iVar24 + 0xc);\n      *(int *)(puVar36 + -0x74) = iVar9;\n      *(undefined4 *)(puVar36 + -0x78) = uVar39;\n      puVar28 = puVar17;\n      puVar18 = puVar25;\n      puVar4 = puVar21;\n      puVar25 = puVar29;\n      goto LAB_0005309c;\n    }\n    iVar7 = *(int *)(puVar36 + -0x30);\n    pcVar34 = *(code **)(pcVar34 + 0x4454c);\n    iVar12 = (int)puVar25 - *(int *)(puVar36 + -0x3c);\n    *(int *)(puVar36 + -0x50) = *(int *)(puVar36 + -0x3c);\n    *(int *)(puVar36 + -0x44) = iVar9;\n    if ((int)puVar29 - iVar22 <= iVar12) {\n      iVar12 = (int)puVar29 - iVar22;\n    }\n    iVar11 = (int)puVar25 - iVar9;\n    if ((int)puVar29 - iVar7 <= (int)puVar25 - iVar9) {\n      iVar11 = (int)puVar29 - iVar7;\n    }\n    puVar29 = (uint *)(iVar11 + 1);\n    if (iVar11 + 1 <= iVar12 + 1) {\n      puVar29 = (uint *)(iVar12 + 1);\n    }\n    puVar25 = (uint *)(*pcVar34)((int)puVar29 + 1);\n    iVar9 = (int)puVar25 >> 1;\n    iVar12 = *(int *)(puVar36 + -0x68);\n    uVar39 = *(undefined4 *)(puVar36 + -0x44);\n    if (iVar9 < (int)puVar25) {\n      if (iVar32 <= iVar9) {\n        uVar13 = ((int)puVar25 * 3 + iVar9 + 4) * 4;\n        uVar3 = uVar13 + 7;\n        if (0x7f00 < uVar13) {\n          pcVar34 = *(code **)(iVar12 + -0x7d50);\n          goto LAB_0005305c;\n        }\n        goto LAB_00053148;\n      }\n      uVar13 = ((int)puVar25 * 4 + 4) * 4;\n      uVar3 = uVar13 + 7;\n      if (uVar13 < 0x7f01) goto LAB_00053148;\n      pcVar34 = *(code **)(iVar12 + -0x7d50);\nLAB_0005305c:\n      *(uint **)(puVar36 + -0x48) = puVar25;\n      *(undefined4 *)(puVar36 + -0x44) = uVar39;\n      puVar4 = (uint *)(*pcVar34)(puVar36 + -0x40);\n      iVar12 = *(int *)(puVar36 + -0x68);\n      puVar25 = *(uint **)(puVar36 + -0x48);\n      uVar39 = *(undefined4 *)(puVar36 + -0x44);\n    }\n    else {\n      uVar3 = ((int)puVar25 * 3 + 4) * 4;\n      pcVar34 = *(code **)(iVar12 + -0x7d50);\n      if (0x7f00 < uVar3) goto LAB_0005305c;\n      uVar3 = uVar3 + 7;\nLAB_00053148:\n      puVar38 = puVar36 + -(uVar3 & 0xfffffff8) + -0x88;\n      puVar4 = (uint *)(puVar36 + -(uVar3 & 0xfffffff8) + -0x68);\n    }\n    *(uint **)(puVar36 + -0x44) = puVar4 + (int)puVar25;\n    *(uint **)(puVar36 + -0x48) = puVar4 + (int)puVar25 + (int)puVar25;\n    if ((int)puVar25 < (int)puVar28) {\n      pcVar34 = *(code **)(iVar12 + -0x7d0c);\n      puVar18 = (uint *)((int)puVar28 - (int)puVar25);\n      *(undefined4 *)(puVar36 + -0x5c) = uVar39;\n      *(uint **)(puVar36 + -0x58) = puVar25;\n      *(int *)(puVar36 + -0x54) = (int)puVar25 * 4;\n      iVar9 = (*pcVar34)(puVar17,puVar17,puVar17 + (int)puVar25,puVar18);\n      iVar12 = *(int *)(puVar36 + -0x68);\n      iVar32 = *(int *)(puVar36 + -0x54);\n      puVar28 = *(uint **)(puVar36 + -0x58);\n      uVar39 = *(undefined4 *)(puVar36 + -0x5c);\n      if (iVar9 == 0) {\nLAB_0005359c:\n        pcVar34 = *(code **)(iVar12 + -0x7d0c);\n      }\n      else {\n        puVar25 = puVar17;\n        if ((int)puVar28 <= (int)puVar18) {\nLAB_00053588:\n          do {\n            uVar3 = *puVar25;\n            *puVar25 = uVar3 + 1;\n            puVar25 = puVar25 + 1;\n          } while (uVar3 + 1 == 0);\n          goto LAB_0005359c;\n        }\n        puVar31 = puVar17 + (int)puVar18;\n        uVar3 = *puVar31;\n        *puVar31 = uVar3 + 1;\n        puVar19 = puVar18;\n        if (uVar3 + 1 == 0) {\n          do {\n            puVar19 = (uint *)((int)puVar19 + 1);\n            if (puVar28 == puVar19) goto LAB_00053588;\n            uVar3 = puVar31[1];\n            puVar31 = puVar31 + 1;\n            *puVar31 = uVar3 + 1;\n          } while (uVar3 + 1 == 0);\n          goto LAB_0005359c;\n        }\n        pcVar34 = *(code **)(iVar12 + -0x7d0c);\n      }\n      *(uint **)(puVar36 + -0x58) = puVar28;\n      *(undefined4 *)(puVar36 + -0x54) = uVar39;\n      iVar9 = (*pcVar34)(puVar21,puVar21,(int)puVar21 + iVar32,puVar18);\n      iVar12 = *(int *)(puVar36 + -0x68);\n      uVar39 = *(undefined4 *)(puVar36 + -0x54);\n      puVar25 = *(uint **)(puVar36 + -0x58);\n      puVar28 = puVar25;\n      if (iVar9 != 0) {\n        puVar19 = puVar21;\n        if ((int)puVar18 < (int)puVar25) {\n          puVar31 = puVar21 + (int)puVar18;\n          uVar3 = *puVar31 + 1;\n          *puVar31 = uVar3;\n          while (uVar3 == 0) {\n            puVar18 = (uint *)((int)puVar18 + 1);\n            if (puVar25 == puVar18) goto LAB_0005361c;\n            puVar5 = puVar31 + 1;\n            puVar31 = puVar31 + 1;\n            uVar3 = *puVar5 + 1;\n            *puVar31 = uVar3;\n          }\n        }\n        else {\nLAB_0005361c:\n          do {\n            uVar3 = *puVar19;\n            *puVar19 = uVar3 + 1;\n            puVar19 = puVar19 + 1;\n          } while (uVar3 + 1 == 0);\n        }\n      }\n    }\n    uVar8 = *(undefined4 *)(iVar24 + 0x14);\n    pcVar34 = *(code **)(iVar12 + -0x7cd8);\n    *(undefined4 *)(puVar36 + -0x5c) = uVar39;\n    *(uint **)(puVar36 + -0x54) = puVar25;\n    *(undefined4 *)(puVar38 + 0x18) = *(undefined4 *)(puVar36 + -0x48);\n    *(undefined4 *)(puVar38 + 0x10) = uVar8;\n    *(int *)(puVar38 + 0x14) = iVar7;\n    (*pcVar34)(puVar4,puVar25,puVar17,puVar28);\n    uVar39 = *(undefined4 *)(iVar24 + 0xc);\n    uVar26 = *(undefined4 *)(puVar36 + -0x54);\n    uVar27 = *(undefined4 *)(puVar36 + -0x5c);\n    uVar8 = *(undefined4 *)(puVar36 + -0x48);\n    pcVar34 = *(code **)(*(int *)(puVar36 + -0x68) + -0x7cd8);\n    uVar15 = *(undefined4 *)(puVar36 + -0x44);\n    *(undefined4 *)(puVar36 + -0x58) = uVar26;\n    *(undefined4 *)(puVar38 + 0x14) = uVar27;\n    *(undefined4 *)(puVar36 + -0x54) = uVar27;\n    *(undefined4 *)(puVar38 + 0x10) = uVar39;\n    *(undefined4 *)(puVar38 + 0x18) = uVar8;\n    (*pcVar34)(uVar15,uVar26,puVar21,puVar28);\n    iVar9 = *(int *)(puVar36 + -0x58);\n    iVar12 = *(int *)(puVar36 + -0x68);\n    iVar32 = *(int *)(puVar36 + -0x54);\n    if ((iVar7 + (int)puVar28 < iVar9) && (iVar7 != iVar9 - (int)puVar28)) {\n      iVar11 = (iVar9 - (int)puVar28) - iVar7;\n      puVar25 = puVar4 + (int)(iVar7 + (int)puVar28);\n      do {\n        iVar11 = iVar11 + -1;\n        *puVar25 = 0;\n        puVar25 = puVar25 + 1;\n      } while (iVar11 != 0);\n    }\n    pcVar34 = *(code **)(iVar12 + -0x7b2c);\n    if (iVar32 + (int)puVar28 < iVar9) {\n      if (iVar32 != iVar9 - (int)puVar28) {\n        iVar7 = (iVar9 - (int)puVar28) - iVar32;\n        puVar6 = (undefined4 *)(*(int *)(puVar36 + -0x44) + (int)(iVar32 + (int)puVar28) * 4);\n        do {\n          iVar7 = iVar7 + -1;\n          *puVar6 = 0;\n          puVar6 = puVar6 + 1;\n        } while (iVar7 != 0);\n        pcVar34 = *(code **)(iVar12 + -0x7b2c);\n      }\n    }\n    *(int *)(puVar36 + -0x54) = iVar9;\n    uVar3 = (*pcVar34)(puVar4,puVar4,*(undefined4 *)(puVar36 + -0x44),iVar9);\n    uVar13 = *puVar4;\n    iVar9 = *(int *)(puVar36 + -0x68);\n    uVar39 = *(undefined4 *)(puVar36 + -0x54);\n    *puVar4 = uVar13 - uVar3;\n    puVar25 = puVar4;\n    if (uVar13 < uVar3) {\n      do {\n        puVar25 = puVar25 + 1;\n        uVar3 = *puVar25;\n        *puVar25 = uVar3 - 1;\n      } while (uVar3 == 0);\n    }\n    uVar8 = *(undefined4 *)(iVar24 + 0x10);\n    pcVar34 = *(code **)(iVar9 + -0x7cd8);\n    uVar15 = *(undefined4 *)(puVar36 + -0x44);\n    *(undefined4 *)(puVar36 + -0x54) = uVar39;\n    *(undefined4 *)(puVar38 + 0x18) = *(undefined4 *)(puVar36 + -0x48);\n    *(int *)(puVar38 + 0x14) = iVar22;\n    *(undefined4 *)(puVar38 + 0x10) = uVar8;\n    (*pcVar34)(uVar15,uVar39,puVar17,puVar28);\n    iVar9 = *(int *)(puVar36 + -0x68);\n    uVar39 = *(undefined4 *)(puVar36 + -0x54);\n    if (puVar29 != (uint *)0x0) {\n      iVar32 = (int)puVar29 + -1;\n      uVar3 = *puVar4;\n      puVar18 = puVar17;\n      puVar25 = puVar4;\n      if (iVar32 == 0) {\n        *puVar17 = uVar3;\n      }\n      else {\n        do {\n          *puVar18 = uVar3;\n          iVar32 = iVar32 + -1;\n          uVar3 = puVar25[1];\n          puVar18 = puVar18 + 1;\n          puVar25 = puVar25 + 1;\n        } while (iVar32 != 0);\n        puVar17[(int)puVar29 + -1] = uVar3;\n      }\n    }\n    uVar8 = *(undefined4 *)(iVar24 + 8);\n    pcVar34 = *(code **)(iVar9 + -0x7cd8);\n    *(undefined4 *)(puVar38 + 0x18) = *(undefined4 *)(puVar36 + -0x48);\n    *(undefined4 *)(puVar36 + -0x48) = uVar39;\n    *(undefined4 *)(puVar38 + 0x10) = uVar8;\n    *(undefined4 *)(puVar38 + 0x14) = *(undefined4 *)(puVar36 + -0x50);\n    (*pcVar34)(puVar4,uVar39,puVar21,puVar28);\n    iVar9 = *(int *)(puVar36 + -0x48);\n    iVar32 = *(int *)(puVar36 + -0x68);\n    if ((int)puVar28 + iVar22 < iVar9) {\n      if (iVar22 != iVar9 - (int)puVar28) {\n        iVar12 = (iVar9 - (int)puVar28) - iVar22;\n        puVar6 = (undefined4 *)(*(int *)(puVar36 + -0x44) + (int)((int)puVar28 + iVar22) * 4);\n        do {\n          iVar12 = iVar12 + -1;\n          *puVar6 = 0;\n          puVar6 = puVar6 + 1;\n        } while (iVar12 != 0);\n      }\n    }\n    pcVar34 = *(code **)(iVar32 + -0x7b2c);\n    if (*(int *)(puVar36 + -0x50) + (int)puVar28 < iVar9) {\n      if (*(int *)(puVar36 + -0x50) != iVar9 - (int)puVar28) {\n        iVar22 = (iVar9 - (int)puVar28) - *(int *)(puVar36 + -0x50);\n        puVar28 = puVar4 + (int)(*(int *)(puVar36 + -0x50) + (int)puVar28);\n        do {\n          iVar22 = iVar22 + -1;\n          *puVar28 = 0;\n          puVar28 = puVar28 + 1;\n        } while (iVar22 != 0);\n        pcVar34 = *(code **)(iVar32 + -0x7b2c);\n      }\n    }\n    uVar3 = (*pcVar34)(puVar4,puVar4,*(undefined4 *)(puVar36 + -0x44),iVar9);\n    uVar13 = *puVar4;\n    iVar9 = *(int *)(puVar36 + -0x68);\n    puVar18 = (uint *)(uVar13 - uVar3);\n    *puVar4 = (uint)puVar18;\n    puVar28 = puVar4;\n    if (uVar13 < uVar3) {\n      do {\n        puVar28 = puVar28 + 1;\n        uVar3 = *puVar28;\n        puVar18 = (uint *)(uVar3 - 1);\n        *puVar28 = (uint)puVar18;\n      } while (uVar3 == 0);\n    }\n    iVar32 = (int)puVar29 + -1;\n    if (puVar29 == (uint *)0x0) {\n      iVar32 = -4;\n    }\n    else {\n      puVar18 = (uint *)*puVar4;\n      puVar28 = puVar21;\n      if (iVar32 != 0) {\n        do {\n          puVar4 = puVar4 + 1;\n          *puVar28 = (uint)puVar18;\n          iVar32 = iVar32 + -1;\n          puVar18 = (uint *)*puVar4;\n          puVar28 = puVar28 + 1;\n        } while (iVar32 != 0);\n        puVar28 = puVar21 + (int)puVar29 + -1;\n      }\n      *puVar28 = (uint)puVar18;\n      iVar32 = (int)puVar29 * 4 + -4;\n    }\n    puVar37 = puVar38;\n    if (*(int *)((int)puVar17 + iVar32) != 0 || *(int *)((int)puVar21 + iVar32) != 0)\n    goto LAB_000530b4;\n    puVar17 = puVar17 + (int)puVar29 + -2;\n    puVar21 = puVar21 + (int)puVar29 + -2;\n    do {\n      uVar3 = *puVar17;\n      puVar29 = (uint *)((int)puVar29 + -1);\n      uVar13 = *puVar21;\n      puVar17 = puVar17 + -1;\n      puVar21 = puVar21 + -1;\n    } while (uVar3 == 0 && uVar13 == 0);\n    piVar30 = *(int **)(puVar36 + -0x4c);\n    if (*(int *)(puVar36 + -0x40) == 0) goto LAB_000530c4;\n    pcVar34 = *(code **)(iVar9 + -0x7a2c);\nLAB_00053478:\n    (*pcVar34)();\n    iVar9 = *(int *)(puVar36 + -0x68);\n    puVar38 = puVar37;\n  }\n  piVar30 = *(int **)(puVar36 + -0x4c);\nLAB_000530c4:\n  iVar32 = *(int *)(puVar36 + -0x2c);\n  pcVar34 = *(code **)(iVar9 + -0x7b70);\n  if (iVar32 == *piVar30) {\n    return puVar29;\n  }\n  pcVar40 = __gmpn_hgcd_reduce_itch;\n  (*pcVar34)();\n  pcVar35 = *(code **)(pcVar34 + 0x43e08);\n  *(uint **)(puVar38 + -0xc) = puVar21;\n  *(int *)(puVar38 + -8) = iVar24;\n  *(uint **)(puVar38 + -0x10) = puVar17;\n  *(code **)(puVar38 + -0x18) = pcVar34 + 0x4b9e4;\n  *(code **)(puVar38 + -4) = pcVar40;\n  puVar28 = (uint *)(*pcVar35)(iVar32 - (int)puVar18);\n  if (999 < iVar32) {\n    return (uint *)((iVar32 - (int)puVar18) * 2 + (int)puVar28);\n  }\n  puVar18 = (uint *)((int)puVar18 + iVar32 + -1);\n  if ((int)puVar28 <= (int)puVar18) {\n    puVar28 = puVar18;\n  }\n  return puVar28;\n}" ({ "{") (declaration "uint *puVar1;" (type_identifier "uint") (pointer_declarator "*puVar1" (* "*") (identifier "puVar1")) (; ";")) (declaration "undefined *puVar2;" (type_identifier "undefined") (pointer_declarator "*puVar2" (* "*") (identifier "puVar2")) (; ";")) (declaration "uint uVar3;" (type_identifier "uint") (identifier "uVar3") (; ";")) (declaration "uint *puVar4;" (type_identifier "uint") (pointer_declarator "*puVar4" (* "*") (identifier "puVar4")) (; ";")) (declaration "uint *puVar5;" (type_identifier "uint") (pointer_declarator "*puVar5" (* "*") (identifier "puVar5")) (; ";")) (declaration "undefined4 *puVar6;" (type_identifier "undefined4") (pointer_declarator "*puVar6" (* "*") (identifier "puVar6")) (; ";")) (declaration "int iVar7;" (primitive_type "int") (identifier "iVar7") (; ";")) (declaration "undefined4 uVar8;" (type_identifier "undefined4") (identifier "uVar8") (; ";")) (declaration "int iVar9;" (primitive_type "int") (identifier "iVar9") (; ";")) (declaration "uint uVar10;" (type_identifier "uint") (identifier "uVar10") (; ";")) (declaration "int iVar11;" (primitive_type "int") (identifier "iVar11") (; ";")) (declaration "int iVar12;" (primitive_type "int") (identifier "iVar12") (; ";")) (declaration "uint uVar13;" (type_identifier "uint") (identifier "uVar13") (; ";")) (declaration "uint *puVar14;" (type_identifier "uint") (pointer_declarator "*puVar14" (* "*") (identifier "puVar14")) (; ";")) (declaration "undefined4 uVar15;" (type_identifier "undefined4") (identifier "uVar15") (; ";")) (declaration "uint uVar16;" (type_identifier "uint") (identifier "uVar16") (; ";")) (declaration "uint *puVar17;" (type_identifier "uint") (pointer_declarator "*puVar17" (* "*") (identifier "puVar17")) (; ";")) (declaration "uint *puVar18;" (type_identifier "uint") (pointer_declarator "*puVar18" (* "*") (identifier "puVar18")) (; ";")) (declaration "uint *puVar19;" (type_identifier "uint") (pointer_declarator "*puVar19" (* "*") (identifier "puVar19")) (; ";")) (declaration "uint uVar20;" (type_identifier "uint") (identifier "uVar20") (; ";")) (declaration "uint *puVar21;" (type_identifier "uint") (pointer_declarator "*puVar21" (* "*") (identifier "puVar21")) (; ";")) (declaration "int iVar22;" (primitive_type "int") (identifier "iVar22") (; ";")) (declaration "uint uVar23;" (type_identifier "uint") (identifier "uVar23") (; ";")) (declaration "int iVar24;" (primitive_type "int") (identifier "iVar24") (; ";")) (declaration "uint *puVar25;" (type_identifier "uint") (pointer_declarator "*puVar25" (* "*") (identifier "puVar25")) (; ";")) (declaration "undefined4 uVar26;" (type_identifier "undefined4") (identifier "uVar26") (; ";")) (declaration "undefined4 uVar27;" (type_identifier "undefined4") (identifier "uVar27") (; ";")) (declaration "uint *puVar28;" (type_identifier "uint") (pointer_declarator "*puVar28" (* "*") (identifier "puVar28")) (; ";")) (declaration "uint *puVar29;" (type_identifier "uint") (pointer_declarator "*puVar29" (* "*") (identifier "puVar29")) (; ";")) (declaration "int *piVar30;" (primitive_type "int") (pointer_declarator "*piVar30" (* "*") (identifier "piVar30")) (; ";")) (declaration "uint *puVar31;" (type_identifier "uint") (pointer_declarator "*puVar31" (* "*") (identifier "puVar31")) (; ";")) (declaration "int iVar32;" (primitive_type "int") (identifier "iVar32") (; ";")) (declaration "undefined1 *unaff_s5;" (type_identifier "undefined1") (pointer_declarator "*unaff_s5" (* "*") (identifier "unaff_s5")) (; ";")) (declaration "undefined *puVar33;" (type_identifier "undefined") (pointer_declarator "*puVar33" (* "*") (identifier "puVar33")) (; ";")) (declaration "code *pcVar34;" (type_identifier "code") (pointer_declarator "*pcVar34" (* "*") (identifier "pcVar34")) (; ";")) (declaration "code *pcVar35;" (type_identifier "code") (pointer_declarator "*pcVar35" (* "*") (identifier "pcVar35")) (; ";")) (declaration "undefined1 *puVar36;" (type_identifier "undefined1") (pointer_declarator "*puVar36" (* "*") (identifier "puVar36")) (; ";")) (declaration "undefined1 *puVar37;" (type_identifier "undefined1") (pointer_declarator "*puVar37" (* "*") (identifier "puVar37")) (; ";")) (declaration "undefined1 *puVar38;" (type_identifier "undefined1") (pointer_declarator "*puVar38" (* "*") (identifier "puVar38")) (; ";")) (declaration "undefined4 uVar39;" (type_identifier "undefined4") (identifier "uVar39") (; ";")) (declaration "code *pcVar40;" (type_identifier "code") (pointer_declarator "*pcVar40" (* "*") (identifier "pcVar40")) (; ";")) (declaration "undefined1 auStack_c0 [24];" (type_identifier "undefined1") (array_declarator "auStack_c0 [24]" (identifier "auStack_c0") ([ "[") (number_literal "24") (] "]")) (; ";")) (declaration "uint *apuStack_a8 [4];" (type_identifier "uint") (pointer_declarator "*apuStack_a8 [4]" (* "*") (array_declarator "apuStack_a8 [4]" (identifier "apuStack_a8") ([ "[") (number_literal "4") (] "]"))) (; ";")) (declaration "int iStack_98;" (primitive_type "int") (identifier "iStack_98") (; ";")) (declaration "int iStack_94;" (primitive_type "int") (identifier "iStack_94") (; ";")) (declaration "uint *puStack_90;" (type_identifier "uint") (pointer_declarator "*puStack_90" (* "*") (identifier "puStack_90")) (; ";")) (declaration "undefined *puStack_8c;" (type_identifier "undefined") (pointer_declarator "*puStack_8c" (* "*") (identifier "puStack_8c")) (; ";")) (declaration "uint *puStack_88;" (type_identifier "uint") (pointer_declarator "*puStack_88" (* "*") (identifier "puStack_88")) (; ";")) (declaration "uint *puStack_84;" (type_identifier "uint") (pointer_declarator "*puStack_84" (* "*") (identifier "puStack_84")) (; ";")) (declaration "uint *puStack_80;" (type_identifier "uint") (pointer_declarator "*puStack_80" (* "*") (identifier "puStack_80")) (; ";")) (declaration "undefined1 *puStack_7c;" (type_identifier "undefined1") (pointer_declarator "*puStack_7c" (* "*") (identifier "puStack_7c")) (; ";")) (declaration "uint *puStack_78;" (type_identifier "uint") (pointer_declarator "*puStack_78" (* "*") (identifier "puStack_78")) (; ";")) (declaration "uint *puStack_74;" (type_identifier "uint") (pointer_declarator "*puStack_74" (* "*") (identifier "puStack_74")) (; ";")) (declaration "int iStack_70;" (primitive_type "int") (identifier "iStack_70") (; ";")) (declaration "undefined4 uStack_6c;" (type_identifier "undefined4") (identifier "uStack_6c") (; ";")) (declaration "uint *local_58;" (type_identifier "uint") (pointer_declarator "*local_58" (* "*") (identifier "local_58")) (; ";")) (declaration "int local_54;" (primitive_type "int") (identifier "local_54") (; ";")) (declaration "uint *local_50;" (type_identifier "uint") (pointer_declarator "*local_50" (* "*") (identifier "local_50")) (; ";")) (declaration "undefined1 auStack_3c [16];" (type_identifier "undefined1") (array_declarator "auStack_3c [16]" (identifier "auStack_3c") ([ "[") (number_literal "16") (] "]")) (; ";")) (declaration "uint *local_2c;" (type_identifier "uint") (pointer_declarator "*local_2c" (* "*") (identifier "local_2c")) (; ";")) (expression_statement "puVar2 = PTR___stack_chk_guard_00097540;" (assignment_expression "puVar2 = PTR___stack_chk_guard_00097540" (identifier "puVar2") (= "=") (identifier "PTR___stack_chk_guard_00097540")) (; ";")) (expression_statement "puVar28 = (uint *)((int)param_1 * 4 + -4);" (assignment_expression "puVar28 = (uint *)((int)param_1 * 4 + -4)" (identifier "puVar28") (= "=") (cast_expression "(uint *)((int)param_1 * 4 + -4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)param_1 * 4 + -4)" (( "(") (binary_expression "(int)param_1 * 4 + -4" (binary_expression "(int)param_1 * 4" (cast_expression "(int)param_1" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_1")) (* "*") (number_literal "4")) (+ "+") (number_literal "-4")) () ")")))) (; ";")) (expression_statement "local_2c = *(uint **)PTR___stack_chk_guard_00097540;" (assignment_expression "local_2c = *(uint **)PTR___stack_chk_guard_00097540" (identifier "local_2c") (= "=") (pointer_expression "*(uint **)PTR___stack_chk_guard_00097540" (* "*") (cast_expression "(uint **)PTR___stack_chk_guard_00097540" (( "(") (type_descriptor "uint **" (type_identifier "uint") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (identifier "PTR___stack_chk_guard_00097540")))) (; ";")) (expression_statement "uVar20 = param_3[(int)param_1 + -1];" (assignment_expression "uVar20 = param_3[(int)param_1 + -1]" (identifier "uVar20") (= "=") (subscript_expression "param_3[(int)param_1 + -1]" (identifier "param_3") ([ "[") (binary_expression "(int)param_1 + -1" (cast_expression "(int)param_1" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_1")) (+ "+") (number_literal "-1")) (] "]"))) (; ";")) (expression_statement "uVar13 = param_2[(int)param_1 + -1];" (assignment_expression "uVar13 = param_2[(int)param_1 + -1]" (identifier "uVar13") (= "=") (subscript_expression "param_2[(int)param_1 + -1]" (identifier "param_2") ([ "[") (binary_expression "(int)param_1 + -1" (cast_expression "(int)param_1" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_1")) (+ "+") (number_literal "-1")) (] "]"))) (; ";")) (expression_statement "uVar3 = uVar13 | uVar20;" (assignment_expression "uVar3 = uVar13 | uVar20" (identifier "uVar3") (= "=") (binary_expression "uVar13 | uVar20" (identifier "uVar13") (| "|") (identifier "uVar20"))) (; ";")) (if_statement "if ((uint *)((int)param_4 + 1) == param_1) {\n    if (3 < uVar3) {\n      unaff_s5 = auStack_3c;\n      local_58 = (uint *)unaff_s5;\n      iVar9 = (*(code *)PTR___gmpn_hgcd2_00097460)\n                        (uVar13,param_2[(int)param_1 + -2],uVar20,param_3[(int)param_1 + -2]);\n      if (iVar9 != 0) goto LAB_00052bb8;\n    }\nLAB_00052b18:\n    local_50 = param_6;\n    local_58 = (uint *)(PTR_LAB_0009707c + 0x2960);\n    local_54 = param_5;\n    puVar29 = param_3;\n    puVar25 = param_1;\n    puVar18 = param_4;\n    puVar4 = (uint *)(*(code *)PTR___gmpn_gcd_subdiv_step_00097118)(param_2);\n  }\n  else {\n    uVar16 = param_2[(int)param_1 + -2];\n    uVar23 = param_3[(int)param_1 + -2];\n    if (-1 < (int)uVar3) {\n      if (uVar3 < 0x10000) {\n        iVar9 = 0x18;\n        if (uVar3 < 0x100) {\n          iVar9 = 0;\n        }\n        iVar24 = 9;\n        if (uVar3 < 0x100) {\n          iVar24 = 1;\n        }\n      }\n      else {\n        iVar9 = 8;\n        if (uVar3 < 0x1000000) {\n          iVar9 = 0x10;\n        }\n        iVar24 = 0x19;\n        if (uVar3 < 0x1000000) {\n          iVar24 = 0x11;\n        }\n      }\n      uVar3 = iVar9 - (uint)(byte)PTR___gmpn_clz_tab_0009718c[uVar3 >> iVar24];\n      uVar10 = 0x20 - uVar3;\n      uVar13 = uVar13 << (uVar3 & 0x1f) | uVar16 >> (uVar10 & 0x1f);\n      uVar16 = param_2[(int)param_1 + -3] >> (uVar10 & 0x1f) | uVar16 << (uVar3 & 0x1f);\n      uVar20 = uVar20 << (uVar3 & 0x1f) | uVar23 >> (uVar10 & 0x1f);\n      uVar23 = param_3[(int)param_1 + -3] >> (uVar10 & 0x1f) | uVar23 << (uVar3 & 0x1f);\n    }\n    unaff_s5 = auStack_3c;\n    local_58 = (uint *)unaff_s5;\n    iVar9 = (*(code *)PTR___gmpn_hgcd2_00097460)(uVar13,uVar16,uVar20,uVar23);\n    if (iVar9 == 0) goto LAB_00052b18;\nLAB_00052bb8:\n    unaff_s5 = auStack_3c;\n    (*(code *)PTR___gmpn_hgcd_matrix_mul_1_000973f4)(param_5,unaff_s5,param_6);\n    if (param_1 != (uint *)0x0) {\n      iVar9 = (int)param_1 + -1;\n      uVar3 = *param_2;\n      if (iVar9 == 0) {\n        *param_6 = uVar3;\n        puVar28 = param_6;\n      }\n      else {\n        puVar28 = param_6;\n        puVar29 = param_2 + 1;\n        do {\n          *puVar28 = uVar3;\n          iVar9 = iVar9 + -1;\n          uVar3 = *puVar29;\n          puVar28 = puVar28 + 1;\n          puVar29 = puVar29 + 1;\n        } while (iVar9 != 0);\n        param_6[(int)param_1 + -1] = uVar3;\n        puVar28 = param_6 + (int)param_1 + -1;\n      }\n    }\n    puVar29 = param_2;\n    puVar25 = param_6;\n    puVar18 = param_3;\n    local_58 = param_1;\n    puVar4 = (uint *)(*(code *)PTR___gmpn_matrix22_mul1_inverse_vector_00097488)(unaff_s5);\n  }" (if "if") (parenthesized_expression "((uint *)((int)param_4 + 1) == param_1)" (( "(") (binary_expression "(uint *)((int)param_4 + 1) == param_1" (cast_expression "(uint *)((int)param_4 + 1)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)param_4 + 1)" (( "(") (binary_expression "(int)param_4 + 1" (cast_expression "(int)param_4" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_4")) (+ "+") (number_literal "1")) () ")"))) (== "==") (identifier "param_1")) () ")")) (compound_statement "{\n    if (3 < uVar3) {\n      unaff_s5 = auStack_3c;\n      local_58 = (uint *)unaff_s5;\n      iVar9 = (*(code *)PTR___gmpn_hgcd2_00097460)\n                        (uVar13,param_2[(int)param_1 + -2],uVar20,param_3[(int)param_1 + -2]);\n      if (iVar9 != 0) goto LAB_00052bb8;\n    }\nLAB_00052b18:\n    local_50 = param_6;\n    local_58 = (uint *)(PTR_LAB_0009707c + 0x2960);\n    local_54 = param_5;\n    puVar29 = param_3;\n    puVar25 = param_1;\n    puVar18 = param_4;\n    puVar4 = (uint *)(*(code *)PTR___gmpn_gcd_subdiv_step_00097118)(param_2);\n  }" ({ "{") (if_statement "if (3 < uVar3) {\n      unaff_s5 = auStack_3c;\n      local_58 = (uint *)unaff_s5;\n      iVar9 = (*(code *)PTR___gmpn_hgcd2_00097460)\n                        (uVar13,param_2[(int)param_1 + -2],uVar20,param_3[(int)param_1 + -2]);\n      if (iVar9 != 0) goto LAB_00052bb8;\n    }" (if "if") (parenthesized_expression "(3 < uVar3)" (( "(") (binary_expression "3 < uVar3" (number_literal "3") (< "<") (identifier "uVar3")) () ")")) (compound_statement "{\n      unaff_s5 = auStack_3c;\n      local_58 = (uint *)unaff_s5;\n      iVar9 = (*(code *)PTR___gmpn_hgcd2_00097460)\n                        (uVar13,param_2[(int)param_1 + -2],uVar20,param_3[(int)param_1 + -2]);\n      if (iVar9 != 0) goto LAB_00052bb8;\n    }" ({ "{") (expression_statement "unaff_s5 = auStack_3c;" (assignment_expression "unaff_s5 = auStack_3c" (identifier "unaff_s5") (= "=") (identifier "auStack_3c")) (; ";")) (expression_statement "local_58 = (uint *)unaff_s5;" (assignment_expression "local_58 = (uint *)unaff_s5" (identifier "local_58") (= "=") (cast_expression "(uint *)unaff_s5" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "unaff_s5"))) (; ";")) (expression_statement "iVar9 = (*(code *)PTR___gmpn_hgcd2_00097460)\n                        (uVar13,param_2[(int)param_1 + -2],uVar20,param_3[(int)param_1 + -2]);" (assignment_expression "iVar9 = (*(code *)PTR___gmpn_hgcd2_00097460)\n                        (uVar13,param_2[(int)param_1 + -2],uVar20,param_3[(int)param_1 + -2])" (identifier "iVar9") (= "=") (call_expression "(*(code *)PTR___gmpn_hgcd2_00097460)\n                        (uVar13,param_2[(int)param_1 + -2],uVar20,param_3[(int)param_1 + -2])" (parenthesized_expression "(*(code *)PTR___gmpn_hgcd2_00097460)" (( "(") (pointer_expression "*(code *)PTR___gmpn_hgcd2_00097460" (* "*") (cast_expression "(code *)PTR___gmpn_hgcd2_00097460" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___gmpn_hgcd2_00097460"))) () ")")) (argument_list "(uVar13,param_2[(int)param_1 + -2],uVar20,param_3[(int)param_1 + -2])" (( "(") (identifier "uVar13") (, ",") (subscript_expression "param_2[(int)param_1 + -2]" (identifier "param_2") ([ "[") (binary_expression "(int)param_1 + -2" (cast_expression "(int)param_1" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_1")) (+ "+") (number_literal "-2")) (] "]")) (, ",") (identifier "uVar20") (, ",") (subscript_expression "param_3[(int)param_1 + -2]" (identifier "param_3") ([ "[") (binary_expression "(int)param_1 + -2" (cast_expression "(int)param_1" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_1")) (+ "+") (number_literal "-2")) (] "]")) () ")")))) (; ";")) (if_statement "if (iVar9 != 0) goto LAB_00052bb8;" (if "if") (parenthesized_expression "(iVar9 != 0)" (( "(") (binary_expression "iVar9 != 0" (identifier "iVar9") (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_00052bb8;" (goto "goto") (statement_identifier "LAB_00052bb8") (; ";"))) (} "}"))) (labeled_statement "LAB_00052b18:\n    local_50 = param_6;" (statement_identifier "LAB_00052b18") (: ":") (expression_statement "local_50 = param_6;" (assignment_expression "local_50 = param_6" (identifier "local_50") (= "=") (identifier "param_6")) (; ";"))) (expression_statement "local_58 = (uint *)(PTR_LAB_0009707c + 0x2960);" (assignment_expression "local_58 = (uint *)(PTR_LAB_0009707c + 0x2960)" (identifier "local_58") (= "=") (cast_expression "(uint *)(PTR_LAB_0009707c + 0x2960)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_LAB_0009707c + 0x2960)" (( "(") (binary_expression "PTR_LAB_0009707c + 0x2960" (identifier "PTR_LAB_0009707c") (+ "+") (number_literal "0x2960")) () ")")))) (; ";")) (expression_statement "local_54 = param_5;" (assignment_expression "local_54 = param_5" (identifier "local_54") (= "=") (identifier "param_5")) (; ";")) (expression_statement "puVar29 = param_3;" (assignment_expression "puVar29 = param_3" (identifier "puVar29") (= "=") (identifier "param_3")) (; ";")) (expression_statement "puVar25 = param_1;" (assignment_expression "puVar25 = param_1" (identifier "puVar25") (= "=") (identifier "param_1")) (; ";")) (expression_statement "puVar18 = param_4;" (assignment_expression "puVar18 = param_4" (identifier "puVar18") (= "=") (identifier "param_4")) (; ";")) (expression_statement "puVar4 = (uint *)(*(code *)PTR___gmpn_gcd_subdiv_step_00097118)(param_2);" (assignment_expression "puVar4 = (uint *)(*(code *)PTR___gmpn_gcd_subdiv_step_00097118)(param_2)" (identifier "puVar4") (= "=") (cast_expression "(uint *)(*(code *)PTR___gmpn_gcd_subdiv_step_00097118)(param_2)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "(*(code *)PTR___gmpn_gcd_subdiv_step_00097118)(param_2)" (parenthesized_expression "(*(code *)PTR___gmpn_gcd_subdiv_step_00097118)" (( "(") (pointer_expression "*(code *)PTR___gmpn_gcd_subdiv_step_00097118" (* "*") (cast_expression "(code *)PTR___gmpn_gcd_subdiv_step_00097118" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___gmpn_gcd_subdiv_step_00097118"))) () ")")) (argument_list "(param_2)" (( "(") (identifier "param_2") () ")"))))) (; ";")) (} "}")) (else_clause "else {\n    uVar16 = param_2[(int)param_1 + -2];\n    uVar23 = param_3[(int)param_1 + -2];\n    if (-1 < (int)uVar3) {\n      if (uVar3 < 0x10000) {\n        iVar9 = 0x18;\n        if (uVar3 < 0x100) {\n          iVar9 = 0;\n        }\n        iVar24 = 9;\n        if (uVar3 < 0x100) {\n          iVar24 = 1;\n        }\n      }\n      else {\n        iVar9 = 8;\n        if (uVar3 < 0x1000000) {\n          iVar9 = 0x10;\n        }\n        iVar24 = 0x19;\n        if (uVar3 < 0x1000000) {\n          iVar24 = 0x11;\n        }\n      }\n      uVar3 = iVar9 - (uint)(byte)PTR___gmpn_clz_tab_0009718c[uVar3 >> iVar24];\n      uVar10 = 0x20 - uVar3;\n      uVar13 = uVar13 << (uVar3 & 0x1f) | uVar16 >> (uVar10 & 0x1f);\n      uVar16 = param_2[(int)param_1 + -3] >> (uVar10 & 0x1f) | uVar16 << (uVar3 & 0x1f);\n      uVar20 = uVar20 << (uVar3 & 0x1f) | uVar23 >> (uVar10 & 0x1f);\n      uVar23 = param_3[(int)param_1 + -3] >> (uVar10 & 0x1f) | uVar23 << (uVar3 & 0x1f);\n    }\n    unaff_s5 = auStack_3c;\n    local_58 = (uint *)unaff_s5;\n    iVar9 = (*(code *)PTR___gmpn_hgcd2_00097460)(uVar13,uVar16,uVar20,uVar23);\n    if (iVar9 == 0) goto LAB_00052b18;\nLAB_00052bb8:\n    unaff_s5 = auStack_3c;\n    (*(code *)PTR___gmpn_hgcd_matrix_mul_1_000973f4)(param_5,unaff_s5,param_6);\n    if (param_1 != (uint *)0x0) {\n      iVar9 = (int)param_1 + -1;\n      uVar3 = *param_2;\n      if (iVar9 == 0) {\n        *param_6 = uVar3;\n        puVar28 = param_6;\n      }\n      else {\n        puVar28 = param_6;\n        puVar29 = param_2 + 1;\n        do {\n          *puVar28 = uVar3;\n          iVar9 = iVar9 + -1;\n          uVar3 = *puVar29;\n          puVar28 = puVar28 + 1;\n          puVar29 = puVar29 + 1;\n        } while (iVar9 != 0);\n        param_6[(int)param_1 + -1] = uVar3;\n        puVar28 = param_6 + (int)param_1 + -1;\n      }\n    }\n    puVar29 = param_2;\n    puVar25 = param_6;\n    puVar18 = param_3;\n    local_58 = param_1;\n    puVar4 = (uint *)(*(code *)PTR___gmpn_matrix22_mul1_inverse_vector_00097488)(unaff_s5);\n  }" (else "else") (compound_statement "{\n    uVar16 = param_2[(int)param_1 + -2];\n    uVar23 = param_3[(int)param_1 + -2];\n    if (-1 < (int)uVar3) {\n      if (uVar3 < 0x10000) {\n        iVar9 = 0x18;\n        if (uVar3 < 0x100) {\n          iVar9 = 0;\n        }\n        iVar24 = 9;\n        if (uVar3 < 0x100) {\n          iVar24 = 1;\n        }\n      }\n      else {\n        iVar9 = 8;\n        if (uVar3 < 0x1000000) {\n          iVar9 = 0x10;\n        }\n        iVar24 = 0x19;\n        if (uVar3 < 0x1000000) {\n          iVar24 = 0x11;\n        }\n      }\n      uVar3 = iVar9 - (uint)(byte)PTR___gmpn_clz_tab_0009718c[uVar3 >> iVar24];\n      uVar10 = 0x20 - uVar3;\n      uVar13 = uVar13 << (uVar3 & 0x1f) | uVar16 >> (uVar10 & 0x1f);\n      uVar16 = param_2[(int)param_1 + -3] >> (uVar10 & 0x1f) | uVar16 << (uVar3 & 0x1f);\n      uVar20 = uVar20 << (uVar3 & 0x1f) | uVar23 >> (uVar10 & 0x1f);\n      uVar23 = param_3[(int)param_1 + -3] >> (uVar10 & 0x1f) | uVar23 << (uVar3 & 0x1f);\n    }\n    unaff_s5 = auStack_3c;\n    local_58 = (uint *)unaff_s5;\n    iVar9 = (*(code *)PTR___gmpn_hgcd2_00097460)(uVar13,uVar16,uVar20,uVar23);\n    if (iVar9 == 0) goto LAB_00052b18;\nLAB_00052bb8:\n    unaff_s5 = auStack_3c;\n    (*(code *)PTR___gmpn_hgcd_matrix_mul_1_000973f4)(param_5,unaff_s5,param_6);\n    if (param_1 != (uint *)0x0) {\n      iVar9 = (int)param_1 + -1;\n      uVar3 = *param_2;\n      if (iVar9 == 0) {\n        *param_6 = uVar3;\n        puVar28 = param_6;\n      }\n      else {\n        puVar28 = param_6;\n        puVar29 = param_2 + 1;\n        do {\n          *puVar28 = uVar3;\n          iVar9 = iVar9 + -1;\n          uVar3 = *puVar29;\n          puVar28 = puVar28 + 1;\n          puVar29 = puVar29 + 1;\n        } while (iVar9 != 0);\n        param_6[(int)param_1 + -1] = uVar3;\n        puVar28 = param_6 + (int)param_1 + -1;\n      }\n    }\n    puVar29 = param_2;\n    puVar25 = param_6;\n    puVar18 = param_3;\n    local_58 = param_1;\n    puVar4 = (uint *)(*(code *)PTR___gmpn_matrix22_mul1_inverse_vector_00097488)(unaff_s5);\n  }" ({ "{") (expression_statement "uVar16 = param_2[(int)param_1 + -2];" (assignment_expression "uVar16 = param_2[(int)param_1 + -2]" (identifier "uVar16") (= "=") (subscript_expression "param_2[(int)param_1 + -2]" (identifier "param_2") ([ "[") (binary_expression "(int)param_1 + -2" (cast_expression "(int)param_1" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_1")) (+ "+") (number_literal "-2")) (] "]"))) (; ";")) (expression_statement "uVar23 = param_3[(int)param_1 + -2];" (assignment_expression "uVar23 = param_3[(int)param_1 + -2]" (identifier "uVar23") (= "=") (subscript_expression "param_3[(int)param_1 + -2]" (identifier "param_3") ([ "[") (binary_expression "(int)param_1 + -2" (cast_expression "(int)param_1" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_1")) (+ "+") (number_literal "-2")) (] "]"))) (; ";")) (if_statement "if (-1 < (int)uVar3) {\n      if (uVar3 < 0x10000) {\n        iVar9 = 0x18;\n        if (uVar3 < 0x100) {\n          iVar9 = 0;\n        }\n        iVar24 = 9;\n        if (uVar3 < 0x100) {\n          iVar24 = 1;\n        }\n      }\n      else {\n        iVar9 = 8;\n        if (uVar3 < 0x1000000) {\n          iVar9 = 0x10;\n        }\n        iVar24 = 0x19;\n        if (uVar3 < 0x1000000) {\n          iVar24 = 0x11;\n        }\n      }\n      uVar3 = iVar9 - (uint)(byte)PTR___gmpn_clz_tab_0009718c[uVar3 >> iVar24];\n      uVar10 = 0x20 - uVar3;\n      uVar13 = uVar13 << (uVar3 & 0x1f) | uVar16 >> (uVar10 & 0x1f);\n      uVar16 = param_2[(int)param_1 + -3] >> (uVar10 & 0x1f) | uVar16 << (uVar3 & 0x1f);\n      uVar20 = uVar20 << (uVar3 & 0x1f) | uVar23 >> (uVar10 & 0x1f);\n      uVar23 = param_3[(int)param_1 + -3] >> (uVar10 & 0x1f) | uVar23 << (uVar3 & 0x1f);\n    }" (if "if") (parenthesized_expression "(-1 < (int)uVar3)" (( "(") (binary_expression "-1 < (int)uVar3" (number_literal "-1") (< "<") (cast_expression "(int)uVar3" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar3"))) () ")")) (compound_statement "{\n      if (uVar3 < 0x10000) {\n        iVar9 = 0x18;\n        if (uVar3 < 0x100) {\n          iVar9 = 0;\n        }\n        iVar24 = 9;\n        if (uVar3 < 0x100) {\n          iVar24 = 1;\n        }\n      }\n      else {\n        iVar9 = 8;\n        if (uVar3 < 0x1000000) {\n          iVar9 = 0x10;\n        }\n        iVar24 = 0x19;\n        if (uVar3 < 0x1000000) {\n          iVar24 = 0x11;\n        }\n      }\n      uVar3 = iVar9 - (uint)(byte)PTR___gmpn_clz_tab_0009718c[uVar3 >> iVar24];\n      uVar10 = 0x20 - uVar3;\n      uVar13 = uVar13 << (uVar3 & 0x1f) | uVar16 >> (uVar10 & 0x1f);\n      uVar16 = param_2[(int)param_1 + -3] >> (uVar10 & 0x1f) | uVar16 << (uVar3 & 0x1f);\n      uVar20 = uVar20 << (uVar3 & 0x1f) | uVar23 >> (uVar10 & 0x1f);\n      uVar23 = param_3[(int)param_1 + -3] >> (uVar10 & 0x1f) | uVar23 << (uVar3 & 0x1f);\n    }" ({ "{") (if_statement "if (uVar3 < 0x10000) {\n        iVar9 = 0x18;\n        if (uVar3 < 0x100) {\n          iVar9 = 0;\n        }\n        iVar24 = 9;\n        if (uVar3 < 0x100) {\n          iVar24 = 1;\n        }\n      }\n      else {\n        iVar9 = 8;\n        if (uVar3 < 0x1000000) {\n          iVar9 = 0x10;\n        }\n        iVar24 = 0x19;\n        if (uVar3 < 0x1000000) {\n          iVar24 = 0x11;\n        }\n      }" (if "if") (parenthesized_expression "(uVar3 < 0x10000)" (( "(") (binary_expression "uVar3 < 0x10000" (identifier "uVar3") (< "<") (number_literal "0x10000")) () ")")) (compound_statement "{\n        iVar9 = 0x18;\n        if (uVar3 < 0x100) {\n          iVar9 = 0;\n        }\n        iVar24 = 9;\n        if (uVar3 < 0x100) {\n          iVar24 = 1;\n        }\n      }" ({ "{") (expression_statement "iVar9 = 0x18;" (assignment_expression "iVar9 = 0x18" (identifier "iVar9") (= "=") (number_literal "0x18")) (; ";")) (if_statement "if (uVar3 < 0x100) {\n          iVar9 = 0;\n        }" (if "if") (parenthesized_expression "(uVar3 < 0x100)" (( "(") (binary_expression "uVar3 < 0x100" (identifier "uVar3") (< "<") (number_literal "0x100")) () ")")) (compound_statement "{\n          iVar9 = 0;\n        }" ({ "{") (expression_statement "iVar9 = 0;" (assignment_expression "iVar9 = 0" (identifier "iVar9") (= "=") (number_literal "0")) (; ";")) (} "}"))) (expression_statement "iVar24 = 9;" (assignment_expression "iVar24 = 9" (identifier "iVar24") (= "=") (number_literal "9")) (; ";")) (if_statement "if (uVar3 < 0x100) {\n          iVar24 = 1;\n        }" (if "if") (parenthesized_expression "(uVar3 < 0x100)" (( "(") (binary_expression "uVar3 < 0x100" (identifier "uVar3") (< "<") (number_literal "0x100")) () ")")) (compound_statement "{\n          iVar24 = 1;\n        }" ({ "{") (expression_statement "iVar24 = 1;" (assignment_expression "iVar24 = 1" (identifier "iVar24") (= "=") (number_literal "1")) (; ";")) (} "}"))) (} "}")) (else_clause "else {\n        iVar9 = 8;\n        if (uVar3 < 0x1000000) {\n          iVar9 = 0x10;\n        }\n        iVar24 = 0x19;\n        if (uVar3 < 0x1000000) {\n          iVar24 = 0x11;\n        }\n      }" (else "else") (compound_statement "{\n        iVar9 = 8;\n        if (uVar3 < 0x1000000) {\n          iVar9 = 0x10;\n        }\n        iVar24 = 0x19;\n        if (uVar3 < 0x1000000) {\n          iVar24 = 0x11;\n        }\n      }" ({ "{") (expression_statement "iVar9 = 8;" (assignment_expression "iVar9 = 8" (identifier "iVar9") (= "=") (number_literal "8")) (; ";")) (if_statement "if (uVar3 < 0x1000000) {\n          iVar9 = 0x10;\n        }" (if "if") (parenthesized_expression "(uVar3 < 0x1000000)" (( "(") (binary_expression "uVar3 < 0x1000000" (identifier "uVar3") (< "<") (number_literal "0x1000000")) () ")")) (compound_statement "{\n          iVar9 = 0x10;\n        }" ({ "{") (expression_statement "iVar9 = 0x10;" (assignment_expression "iVar9 = 0x10" (identifier "iVar9") (= "=") (number_literal "0x10")) (; ";")) (} "}"))) (expression_statement "iVar24 = 0x19;" (assignment_expression "iVar24 = 0x19" (identifier "iVar24") (= "=") (number_literal "0x19")) (; ";")) (if_statement "if (uVar3 < 0x1000000) {\n          iVar24 = 0x11;\n        }" (if "if") (parenthesized_expression "(uVar3 < 0x1000000)" (( "(") (binary_expression "uVar3 < 0x1000000" (identifier "uVar3") (< "<") (number_literal "0x1000000")) () ")")) (compound_statement "{\n          iVar24 = 0x11;\n        }" ({ "{") (expression_statement "iVar24 = 0x11;" (assignment_expression "iVar24 = 0x11" (identifier "iVar24") (= "=") (number_literal "0x11")) (; ";")) (} "}"))) (} "}")))) (expression_statement "uVar3 = iVar9 - (uint)(byte)PTR___gmpn_clz_tab_0009718c[uVar3 >> iVar24];" (assignment_expression "uVar3 = iVar9 - (uint)(byte)PTR___gmpn_clz_tab_0009718c[uVar3 >> iVar24]" (identifier "uVar3") (= "=") (binary_expression "iVar9 - (uint)(byte)PTR___gmpn_clz_tab_0009718c[uVar3 >> iVar24]" (identifier "iVar9") (- "-") (cast_expression "(uint)(byte)PTR___gmpn_clz_tab_0009718c[uVar3 >> iVar24]" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (cast_expression "(byte)PTR___gmpn_clz_tab_0009718c[uVar3 >> iVar24]" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (subscript_expression "PTR___gmpn_clz_tab_0009718c[uVar3 >> iVar24]" (identifier "PTR___gmpn_clz_tab_0009718c") ([ "[") (binary_expression "uVar3 >> iVar24" (identifier "uVar3") (>> ">>") (identifier "iVar24")) (] "]")))))) (; ";")) (expression_statement "uVar10 = 0x20 - uVar3;" (assignment_expression "uVar10 = 0x20 - uVar3" (identifier "uVar10") (= "=") (binary_expression "0x20 - uVar3" (number_literal "0x20") (- "-") (identifier "uVar3"))) (; ";")) (expression_statement "uVar13 = uVar13 << (uVar3 & 0x1f) | uVar16 >> (uVar10 & 0x1f);" (assignment_expression "uVar13 = uVar13 << (uVar3 & 0x1f) | uVar16 >> (uVar10 & 0x1f)" (identifier "uVar13") (= "=") (binary_expression "uVar13 << (uVar3 & 0x1f) | uVar16 >> (uVar10 & 0x1f)" (binary_expression "uVar13 << (uVar3 & 0x1f)" (identifier "uVar13") (<< "<<") (parenthesized_expression "(uVar3 & 0x1f)" (( "(") (binary_expression "uVar3 & 0x1f" (identifier "uVar3") (& "&") (number_literal "0x1f")) () ")"))) (| "|") (binary_expression "uVar16 >> (uVar10 & 0x1f)" (identifier "uVar16") (>> ">>") (parenthesized_expression "(uVar10 & 0x1f)" (( "(") (binary_expression "uVar10 & 0x1f" (identifier "uVar10") (& "&") (number_literal "0x1f")) () ")"))))) (; ";")) (expression_statement "uVar16 = param_2[(int)param_1 + -3] >> (uVar10 & 0x1f) | uVar16 << (uVar3 & 0x1f);" (assignment_expression "uVar16 = param_2[(int)param_1 + -3] >> (uVar10 & 0x1f) | uVar16 << (uVar3 & 0x1f)" (identifier "uVar16") (= "=") (binary_expression "param_2[(int)param_1 + -3] >> (uVar10 & 0x1f) | uVar16 << (uVar3 & 0x1f)" (binary_expression "param_2[(int)param_1 + -3] >> (uVar10 & 0x1f)" (subscript_expression "param_2[(int)param_1 + -3]" (identifier "param_2") ([ "[") (binary_expression "(int)param_1 + -3" (cast_expression "(int)param_1" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_1")) (+ "+") (number_literal "-3")) (] "]")) (>> ">>") (parenthesized_expression "(uVar10 & 0x1f)" (( "(") (binary_expression "uVar10 & 0x1f" (identifier "uVar10") (& "&") (number_literal "0x1f")) () ")"))) (| "|") (binary_expression "uVar16 << (uVar3 & 0x1f)" (identifier "uVar16") (<< "<<") (parenthesized_expression "(uVar3 & 0x1f)" (( "(") (binary_expression "uVar3 & 0x1f" (identifier "uVar3") (& "&") (number_literal "0x1f")) () ")"))))) (; ";")) (expression_statement "uVar20 = uVar20 << (uVar3 & 0x1f) | uVar23 >> (uVar10 & 0x1f);" (assignment_expression "uVar20 = uVar20 << (uVar3 & 0x1f) | uVar23 >> (uVar10 & 0x1f)" (identifier "uVar20") (= "=") (binary_expression "uVar20 << (uVar3 & 0x1f) | uVar23 >> (uVar10 & 0x1f)" (binary_expression "uVar20 << (uVar3 & 0x1f)" (identifier "uVar20") (<< "<<") (parenthesized_expression "(uVar3 & 0x1f)" (( "(") (binary_expression "uVar3 & 0x1f" (identifier "uVar3") (& "&") (number_literal "0x1f")) () ")"))) (| "|") (binary_expression "uVar23 >> (uVar10 & 0x1f)" (identifier "uVar23") (>> ">>") (parenthesized_expression "(uVar10 & 0x1f)" (( "(") (binary_expression "uVar10 & 0x1f" (identifier "uVar10") (& "&") (number_literal "0x1f")) () ")"))))) (; ";")) (expression_statement "uVar23 = param_3[(int)param_1 + -3] >> (uVar10 & 0x1f) | uVar23 << (uVar3 & 0x1f);" (assignment_expression "uVar23 = param_3[(int)param_1 + -3] >> (uVar10 & 0x1f) | uVar23 << (uVar3 & 0x1f)" (identifier "uVar23") (= "=") (binary_expression "param_3[(int)param_1 + -3] >> (uVar10 & 0x1f) | uVar23 << (uVar3 & 0x1f)" (binary_expression "param_3[(int)param_1 + -3] >> (uVar10 & 0x1f)" (subscript_expression "param_3[(int)param_1 + -3]" (identifier "param_3") ([ "[") (binary_expression "(int)param_1 + -3" (cast_expression "(int)param_1" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_1")) (+ "+") (number_literal "-3")) (] "]")) (>> ">>") (parenthesized_expression "(uVar10 & 0x1f)" (( "(") (binary_expression "uVar10 & 0x1f" (identifier "uVar10") (& "&") (number_literal "0x1f")) () ")"))) (| "|") (binary_expression "uVar23 << (uVar3 & 0x1f)" (identifier "uVar23") (<< "<<") (parenthesized_expression "(uVar3 & 0x1f)" (( "(") (binary_expression "uVar3 & 0x1f" (identifier "uVar3") (& "&") (number_literal "0x1f")) () ")"))))) (; ";")) (} "}"))) (expression_statement "unaff_s5 = auStack_3c;" (assignment_expression "unaff_s5 = auStack_3c" (identifier "unaff_s5") (= "=") (identifier "auStack_3c")) (; ";")) (expression_statement "local_58 = (uint *)unaff_s5;" (assignment_expression "local_58 = (uint *)unaff_s5" (identifier "local_58") (= "=") (cast_expression "(uint *)unaff_s5" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "unaff_s5"))) (; ";")) (expression_statement "iVar9 = (*(code *)PTR___gmpn_hgcd2_00097460)(uVar13,uVar16,uVar20,uVar23);" (assignment_expression "iVar9 = (*(code *)PTR___gmpn_hgcd2_00097460)(uVar13,uVar16,uVar20,uVar23)" (identifier "iVar9") (= "=") (call_expression "(*(code *)PTR___gmpn_hgcd2_00097460)(uVar13,uVar16,uVar20,uVar23)" (parenthesized_expression "(*(code *)PTR___gmpn_hgcd2_00097460)" (( "(") (pointer_expression "*(code *)PTR___gmpn_hgcd2_00097460" (* "*") (cast_expression "(code *)PTR___gmpn_hgcd2_00097460" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___gmpn_hgcd2_00097460"))) () ")")) (argument_list "(uVar13,uVar16,uVar20,uVar23)" (( "(") (identifier "uVar13") (, ",") (identifier "uVar16") (, ",") (identifier "uVar20") (, ",") (identifier "uVar23") () ")")))) (; ";")) (if_statement "if (iVar9 == 0) goto LAB_00052b18;" (if "if") (parenthesized_expression "(iVar9 == 0)" (( "(") (binary_expression "iVar9 == 0" (identifier "iVar9") (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_00052b18;" (goto "goto") (statement_identifier "LAB_00052b18") (; ";"))) (labeled_statement "LAB_00052bb8:\n    unaff_s5 = auStack_3c;" (statement_identifier "LAB_00052bb8") (: ":") (expression_statement "unaff_s5 = auStack_3c;" (assignment_expression "unaff_s5 = auStack_3c" (identifier "unaff_s5") (= "=") (identifier "auStack_3c")) (; ";"))) (expression_statement "(*(code *)PTR___gmpn_hgcd_matrix_mul_1_000973f4)(param_5,unaff_s5,param_6);" (call_expression "(*(code *)PTR___gmpn_hgcd_matrix_mul_1_000973f4)(param_5,unaff_s5,param_6)" (parenthesized_expression "(*(code *)PTR___gmpn_hgcd_matrix_mul_1_000973f4)" (( "(") (pointer_expression "*(code *)PTR___gmpn_hgcd_matrix_mul_1_000973f4" (* "*") (cast_expression "(code *)PTR___gmpn_hgcd_matrix_mul_1_000973f4" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___gmpn_hgcd_matrix_mul_1_000973f4"))) () ")")) (argument_list "(param_5,unaff_s5,param_6)" (( "(") (identifier "param_5") (, ",") (identifier "unaff_s5") (, ",") (identifier "param_6") () ")"))) (; ";")) (if_statement "if (param_1 != (uint *)0x0) {\n      iVar9 = (int)param_1 + -1;\n      uVar3 = *param_2;\n      if (iVar9 == 0) {\n        *param_6 = uVar3;\n        puVar28 = param_6;\n      }\n      else {\n        puVar28 = param_6;\n        puVar29 = param_2 + 1;\n        do {\n          *puVar28 = uVar3;\n          iVar9 = iVar9 + -1;\n          uVar3 = *puVar29;\n          puVar28 = puVar28 + 1;\n          puVar29 = puVar29 + 1;\n        } while (iVar9 != 0);\n        param_6[(int)param_1 + -1] = uVar3;\n        puVar28 = param_6 + (int)param_1 + -1;\n      }\n    }" (if "if") (parenthesized_expression "(param_1 != (uint *)0x0)" (( "(") (binary_expression "param_1 != (uint *)0x0" (identifier "param_1") (!= "!=") (cast_expression "(uint *)0x0" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n      iVar9 = (int)param_1 + -1;\n      uVar3 = *param_2;\n      if (iVar9 == 0) {\n        *param_6 = uVar3;\n        puVar28 = param_6;\n      }\n      else {\n        puVar28 = param_6;\n        puVar29 = param_2 + 1;\n        do {\n          *puVar28 = uVar3;\n          iVar9 = iVar9 + -1;\n          uVar3 = *puVar29;\n          puVar28 = puVar28 + 1;\n          puVar29 = puVar29 + 1;\n        } while (iVar9 != 0);\n        param_6[(int)param_1 + -1] = uVar3;\n        puVar28 = param_6 + (int)param_1 + -1;\n      }\n    }" ({ "{") (expression_statement "iVar9 = (int)param_1 + -1;" (assignment_expression "iVar9 = (int)param_1 + -1" (identifier "iVar9") (= "=") (binary_expression "(int)param_1 + -1" (cast_expression "(int)param_1" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_1")) (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "uVar3 = *param_2;" (assignment_expression "uVar3 = *param_2" (identifier "uVar3") (= "=") (pointer_expression "*param_2" (* "*") (identifier "param_2"))) (; ";")) (if_statement "if (iVar9 == 0) {\n        *param_6 = uVar3;\n        puVar28 = param_6;\n      }\n      else {\n        puVar28 = param_6;\n        puVar29 = param_2 + 1;\n        do {\n          *puVar28 = uVar3;\n          iVar9 = iVar9 + -1;\n          uVar3 = *puVar29;\n          puVar28 = puVar28 + 1;\n          puVar29 = puVar29 + 1;\n        } while (iVar9 != 0);\n        param_6[(int)param_1 + -1] = uVar3;\n        puVar28 = param_6 + (int)param_1 + -1;\n      }" (if "if") (parenthesized_expression "(iVar9 == 0)" (( "(") (binary_expression "iVar9 == 0" (identifier "iVar9") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n        *param_6 = uVar3;\n        puVar28 = param_6;\n      }" ({ "{") (expression_statement "*param_6 = uVar3;" (assignment_expression "*param_6 = uVar3" (pointer_expression "*param_6" (* "*") (identifier "param_6")) (= "=") (identifier "uVar3")) (; ";")) (expression_statement "puVar28 = param_6;" (assignment_expression "puVar28 = param_6" (identifier "puVar28") (= "=") (identifier "param_6")) (; ";")) (} "}")) (else_clause "else {\n        puVar28 = param_6;\n        puVar29 = param_2 + 1;\n        do {\n          *puVar28 = uVar3;\n          iVar9 = iVar9 + -1;\n          uVar3 = *puVar29;\n          puVar28 = puVar28 + 1;\n          puVar29 = puVar29 + 1;\n        } while (iVar9 != 0);\n        param_6[(int)param_1 + -1] = uVar3;\n        puVar28 = param_6 + (int)param_1 + -1;\n      }" (else "else") (compound_statement "{\n        puVar28 = param_6;\n        puVar29 = param_2 + 1;\n        do {\n          *puVar28 = uVar3;\n          iVar9 = iVar9 + -1;\n          uVar3 = *puVar29;\n          puVar28 = puVar28 + 1;\n          puVar29 = puVar29 + 1;\n        } while (iVar9 != 0);\n        param_6[(int)param_1 + -1] = uVar3;\n        puVar28 = param_6 + (int)param_1 + -1;\n      }" ({ "{") (expression_statement "puVar28 = param_6;" (assignment_expression "puVar28 = param_6" (identifier "puVar28") (= "=") (identifier "param_6")) (; ";")) (expression_statement "puVar29 = param_2 + 1;" (assignment_expression "puVar29 = param_2 + 1" (identifier "puVar29") (= "=") (binary_expression "param_2 + 1" (identifier "param_2") (+ "+") (number_literal "1"))) (; ";")) (do_statement "do {\n          *puVar28 = uVar3;\n          iVar9 = iVar9 + -1;\n          uVar3 = *puVar29;\n          puVar28 = puVar28 + 1;\n          puVar29 = puVar29 + 1;\n        } while (iVar9 != 0);" (do "do") (compound_statement "{\n          *puVar28 = uVar3;\n          iVar9 = iVar9 + -1;\n          uVar3 = *puVar29;\n          puVar28 = puVar28 + 1;\n          puVar29 = puVar29 + 1;\n        }" ({ "{") (expression_statement "*puVar28 = uVar3;" (assignment_expression "*puVar28 = uVar3" (pointer_expression "*puVar28" (* "*") (identifier "puVar28")) (= "=") (identifier "uVar3")) (; ";")) (expression_statement "iVar9 = iVar9 + -1;" (assignment_expression "iVar9 = iVar9 + -1" (identifier "iVar9") (= "=") (binary_expression "iVar9 + -1" (identifier "iVar9") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "uVar3 = *puVar29;" (assignment_expression "uVar3 = *puVar29" (identifier "uVar3") (= "=") (pointer_expression "*puVar29" (* "*") (identifier "puVar29"))) (; ";")) (expression_statement "puVar28 = puVar28 + 1;" (assignment_expression "puVar28 = puVar28 + 1" (identifier "puVar28") (= "=") (binary_expression "puVar28 + 1" (identifier "puVar28") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "puVar29 = puVar29 + 1;" (assignment_expression "puVar29 = puVar29 + 1" (identifier "puVar29") (= "=") (binary_expression "puVar29 + 1" (identifier "puVar29") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(iVar9 != 0)" (( "(") (binary_expression "iVar9 != 0" (identifier "iVar9") (!= "!=") (number_literal "0")) () ")")) (; ";")) (expression_statement "param_6[(int)param_1 + -1] = uVar3;" (assignment_expression "param_6[(int)param_1 + -1] = uVar3" (subscript_expression "param_6[(int)param_1 + -1]" (identifier "param_6") ([ "[") (binary_expression "(int)param_1 + -1" (cast_expression "(int)param_1" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_1")) (+ "+") (number_literal "-1")) (] "]")) (= "=") (identifier "uVar3")) (; ";")) (expression_statement "puVar28 = param_6 + (int)param_1 + -1;" (assignment_expression "puVar28 = param_6 + (int)param_1 + -1" (identifier "puVar28") (= "=") (binary_expression "param_6 + (int)param_1 + -1" (binary_expression "param_6 + (int)param_1" (identifier "param_6") (+ "+") (cast_expression "(int)param_1" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_1"))) (+ "+") (number_literal "-1"))) (; ";")) (} "}")))) (} "}"))) (expression_statement "puVar29 = param_2;" (assignment_expression "puVar29 = param_2" (identifier "puVar29") (= "=") (identifier "param_2")) (; ";")) (expression_statement "puVar25 = param_6;" (assignment_expression "puVar25 = param_6" (identifier "puVar25") (= "=") (identifier "param_6")) (; ";")) (expression_statement "puVar18 = param_3;" (assignment_expression "puVar18 = param_3" (identifier "puVar18") (= "=") (identifier "param_3")) (; ";")) (expression_statement "local_58 = param_1;" (assignment_expression "local_58 = param_1" (identifier "local_58") (= "=") (identifier "param_1")) (; ";")) (expression_statement "puVar4 = (uint *)(*(code *)PTR___gmpn_matrix22_mul1_inverse_vector_00097488)(unaff_s5);" (assignment_expression "puVar4 = (uint *)(*(code *)PTR___gmpn_matrix22_mul1_inverse_vector_00097488)(unaff_s5)" (identifier "puVar4") (= "=") (cast_expression "(uint *)(*(code *)PTR___gmpn_matrix22_mul1_inverse_vector_00097488)(unaff_s5)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "(*(code *)PTR___gmpn_matrix22_mul1_inverse_vector_00097488)(unaff_s5)" (parenthesized_expression "(*(code *)PTR___gmpn_matrix22_mul1_inverse_vector_00097488)" (( "(") (pointer_expression "*(code *)PTR___gmpn_matrix22_mul1_inverse_vector_00097488" (* "*") (cast_expression "(code *)PTR___gmpn_matrix22_mul1_inverse_vector_00097488" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___gmpn_matrix22_mul1_inverse_vector_00097488"))) () ")")) (argument_list "(unaff_s5)" (( "(") (identifier "unaff_s5") () ")"))))) (; ";")) (} "}")))) (if_statement "if (local_2c == *(uint **)puVar2) {\n    return puVar4;\n  }" (if "if") (parenthesized_expression "(local_2c == *(uint **)puVar2)" (( "(") (binary_expression "local_2c == *(uint **)puVar2" (identifier "local_2c") (== "==") (pointer_expression "*(uint **)puVar2" (* "*") (cast_expression "(uint **)puVar2" (( "(") (type_descriptor "uint **" (type_identifier "uint") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (identifier "puVar2")))) () ")")) (compound_statement "{\n    return puVar4;\n  }" ({ "{") (return_statement "return puVar4;" (return "return") (identifier "puVar4") (; ";")) (} "}"))) (expression_statement "uVar39 = 0x52c64;" (assignment_expression "uVar39 = 0x52c64" (identifier "uVar39") (= "=") (number_literal "0x52c64")) (; ";")) (expression_statement "puVar4 = local_2c;" (assignment_expression "puVar4 = local_2c" (identifier "puVar4") (= "=") (identifier "local_2c")) (; ";")) (expression_statement "puVar33 = PTR___stack_chk_fail_000974d0;" (assignment_expression "puVar33 = PTR___stack_chk_fail_000974d0" (identifier "puVar33") (= "=") (identifier "PTR___stack_chk_fail_000974d0")) (; ";")) (expression_statement "(*(code *)PTR___stack_chk_fail_000974d0)();" (call_expression "(*(code *)PTR___stack_chk_fail_000974d0)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_000974d0)" (( "(") (pointer_expression "*(code *)PTR___stack_chk_fail_000974d0" (* "*") (cast_expression "(code *)PTR___stack_chk_fail_000974d0" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___stack_chk_fail_000974d0"))) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "iVar9 = local_54;" (assignment_expression "iVar9 = local_54" (identifier "iVar9") (= "=") (identifier "local_54")) (; ";")) (expression_statement "apuStack_a8[0] = (uint *)(puVar33 + 0x4c3d0);" (assignment_expression "apuStack_a8[0] = (uint *)(puVar33 + 0x4c3d0)" (subscript_expression "apuStack_a8[0]" (identifier "apuStack_a8") ([ "[") (number_literal "0") (] "]")) (= "=") (cast_expression "(uint *)(puVar33 + 0x4c3d0)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar33 + 0x4c3d0)" (( "(") (binary_expression "puVar33 + 0x4c3d0" (identifier "puVar33") (+ "+") (number_literal "0x4c3d0")) () ")")))) (; ";")) (expression_statement "puVar36 = auStack_c0;" (assignment_expression "puVar36 = auStack_c0" (identifier "puVar36") (= "=") (identifier "auStack_c0")) (; ";")) (expression_statement "iStack_70 = param_5;" (assignment_expression "iStack_70 = param_5" (identifier "iStack_70") (= "=") (identifier "param_5")) (; ";")) (expression_statement "piVar30 = *(int **)(puVar33 + 0x448d0);" (assignment_expression "piVar30 = *(int **)(puVar33 + 0x448d0)" (identifier "piVar30") (= "=") (pointer_expression "*(int **)(puVar33 + 0x448d0)" (* "*") (cast_expression "(int **)(puVar33 + 0x448d0)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar33 + 0x448d0)" (( "(") (binary_expression "puVar33 + 0x448d0" (identifier "puVar33") (+ "+") (number_literal "0x448d0")) () ")"))))) (; ";")) (expression_statement "iVar24 = (int)puVar18 + local_54;" (assignment_expression "iVar24 = (int)puVar18 + local_54" (identifier "iVar24") (= "=") (binary_expression "(int)puVar18 + local_54" (cast_expression "(int)puVar18" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar18")) (+ "+") (identifier "local_54"))) (; ";")) (expression_statement "puStack_74 = param_6;" (assignment_expression "puStack_74 = param_6" (identifier "puStack_74") (= "=") (identifier "param_6")) (; ";")) (expression_statement "puStack_8c = puVar2;" (assignment_expression "puStack_8c = puVar2" (identifier "puStack_8c") (= "=") (identifier "puVar2")) (; ";")) (expression_statement "iStack_98 = 0;" (assignment_expression "iStack_98 = 0" (identifier "iStack_98") (= "=") (number_literal "0")) (; ";")) (expression_statement "iStack_94 = *piVar30;" (assignment_expression "iStack_94 = *piVar30" (identifier "iStack_94") (= "=") (pointer_expression "*piVar30" (* "*") (identifier "piVar30"))) (; ";")) (expression_statement "puStack_90 = puVar28;" (assignment_expression "puStack_90 = puVar28" (identifier "puStack_90") (= "=") (identifier "puVar28")) (; ";")) (expression_statement "puStack_88 = param_2;" (assignment_expression "puStack_88 = param_2" (identifier "puStack_88") (= "=") (identifier "param_2")) (; ";")) (expression_statement "puStack_84 = param_3;" (assignment_expression "puStack_84 = param_3" (identifier "puStack_84") (= "=") (identifier "param_3")) (; ";")) (expression_statement "puStack_80 = param_1;" (assignment_expression "puStack_80 = param_1" (identifier "puStack_80") (= "=") (identifier "param_1")) (; ";")) (expression_statement "puStack_7c = unaff_s5;" (assignment_expression "puStack_7c = unaff_s5" (identifier "puStack_7c") (= "=") (identifier "unaff_s5")) (; ";")) (expression_statement "puStack_78 = param_4;" (assignment_expression "puStack_78 = param_4" (identifier "puStack_78") (= "=") (identifier "param_4")) (; ";")) (expression_statement "uStack_6c = uVar39;" (assignment_expression "uStack_6c = uVar39" (identifier "uStack_6c") (= "=") (identifier "uVar39")) (; ";")) (if_statement "if ((uint)(iVar24 * 4) < 0x7f01) {\n    iVar32 = -(iVar24 * 4 + 7U & 0xfffffff8);\n    puVar36 = auStack_c0 + iVar32;\n    puVar19 = (uint *)((int)apuStack_a8 + iVar32);\n    puVar28 = local_58;\n  }\n  else {\n    apuStack_a8[3] = local_58;\n    puVar19 = (uint *)(**(code **)(puVar33 + 0x44680))(&iStack_98);\n    puVar28 = apuStack_a8[3];\n  }" (if "if") (parenthesized_expression "((uint)(iVar24 * 4) < 0x7f01)" (( "(") (binary_expression "(uint)(iVar24 * 4) < 0x7f01" (call_expression "(uint)(iVar24 * 4)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(iVar24 * 4)" (( "(") (binary_expression "iVar24 * 4" (identifier "iVar24") (* "*") (number_literal "4")) () ")"))) (< "<") (number_literal "0x7f01")) () ")")) (compound_statement "{\n    iVar32 = -(iVar24 * 4 + 7U & 0xfffffff8);\n    puVar36 = auStack_c0 + iVar32;\n    puVar19 = (uint *)((int)apuStack_a8 + iVar32);\n    puVar28 = local_58;\n  }" ({ "{") (expression_statement "iVar32 = -(iVar24 * 4 + 7U & 0xfffffff8);" (assignment_expression "iVar32 = -(iVar24 * 4 + 7U & 0xfffffff8)" (identifier "iVar32") (= "=") (unary_expression "-(iVar24 * 4 + 7U & 0xfffffff8)" (- "-") (parenthesized_expression "(iVar24 * 4 + 7U & 0xfffffff8)" (( "(") (binary_expression "iVar24 * 4 + 7U & 0xfffffff8" (binary_expression "iVar24 * 4 + 7U" (binary_expression "iVar24 * 4" (identifier "iVar24") (* "*") (number_literal "4")) (+ "+") (number_literal "7U")) (& "&") (number_literal "0xfffffff8")) () ")")))) (; ";")) (expression_statement "puVar36 = auStack_c0 + iVar32;" (assignment_expression "puVar36 = auStack_c0 + iVar32" (identifier "puVar36") (= "=") (binary_expression "auStack_c0 + iVar32" (identifier "auStack_c0") (+ "+") (identifier "iVar32"))) (; ";")) (expression_statement "puVar19 = (uint *)((int)apuStack_a8 + iVar32);" (assignment_expression "puVar19 = (uint *)((int)apuStack_a8 + iVar32)" (identifier "puVar19") (= "=") (cast_expression "(uint *)((int)apuStack_a8 + iVar32)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)apuStack_a8 + iVar32)" (( "(") (binary_expression "(int)apuStack_a8 + iVar32" (cast_expression "(int)apuStack_a8" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "apuStack_a8")) (+ "+") (identifier "iVar32")) () ")")))) (; ";")) (expression_statement "puVar28 = local_58;" (assignment_expression "puVar28 = local_58" (identifier "puVar28") (= "=") (identifier "local_58")) (; ";")) (} "}")) (else_clause "else {\n    apuStack_a8[3] = local_58;\n    puVar19 = (uint *)(**(code **)(puVar33 + 0x44680))(&iStack_98);\n    puVar28 = apuStack_a8[3];\n  }" (else "else") (compound_statement "{\n    apuStack_a8[3] = local_58;\n    puVar19 = (uint *)(**(code **)(puVar33 + 0x44680))(&iStack_98);\n    puVar28 = apuStack_a8[3];\n  }" ({ "{") (expression_statement "apuStack_a8[3] = local_58;" (assignment_expression "apuStack_a8[3] = local_58" (subscript_expression "apuStack_a8[3]" (identifier "apuStack_a8") ([ "[") (number_literal "3") (] "]")) (= "=") (identifier "local_58")) (; ";")) (expression_statement "puVar19 = (uint *)(**(code **)(puVar33 + 0x44680))(&iStack_98);" (assignment_expression "puVar19 = (uint *)(**(code **)(puVar33 + 0x44680))(&iStack_98)" (identifier "puVar19") (= "=") (cast_expression "(uint *)(**(code **)(puVar33 + 0x44680))(&iStack_98)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "(**(code **)(puVar33 + 0x44680))(&iStack_98)" (parenthesized_expression "(**(code **)(puVar33 + 0x44680))" (( "(") (pointer_expression "**(code **)(puVar33 + 0x44680)" (* "*") (pointer_expression "*(code **)(puVar33 + 0x44680)" (* "*") (cast_expression "(code **)(puVar33 + 0x44680)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar33 + 0x44680)" (( "(") (binary_expression "puVar33 + 0x44680" (identifier "puVar33") (+ "+") (number_literal "0x44680")) () ")"))))) () ")")) (argument_list "(&iStack_98)" (( "(") (pointer_expression "&iStack_98" (& "&") (identifier "iStack_98")) () ")"))))) (; ";")) (expression_statement "puVar28 = apuStack_a8[3];" (assignment_expression "puVar28 = apuStack_a8[3]" (identifier "puVar28") (= "=") (subscript_expression "apuStack_a8[3]" (identifier "apuStack_a8") ([ "[") (number_literal "3") (] "]"))) (; ";")) (} "}")))) (expression_statement "pcVar34 = (code *)apuStack_a8[0][-0x1f63];" (assignment_expression "pcVar34 = (code *)apuStack_a8[0][-0x1f63]" (identifier "pcVar34") (= "=") (cast_expression "(code *)apuStack_a8[0][-0x1f63]" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "apuStack_a8[0][-0x1f63]" (subscript_expression "apuStack_a8[0]" (identifier "apuStack_a8") ([ "[") (number_literal "0") (] "]")) ([ "[") (number_literal "-0x1f63") (] "]")))) (; ";")) (expression_statement "*(int *)(puVar36 + 0x10) = iVar9;" (assignment_expression "*(int *)(puVar36 + 0x10) = iVar9" (pointer_expression "*(int *)(puVar36 + 0x10)" (* "*") (cast_expression "(int *)(puVar36 + 0x10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar36 + 0x10)" (( "(") (binary_expression "puVar36 + 0x10" (identifier "puVar36") (+ "+") (number_literal "0x10")) () ")")))) (= "=") (identifier "iVar9")) (; ";")) (expression_statement "puVar17 = puVar25;" (assignment_expression "puVar17 = puVar25" (identifier "puVar17") (= "=") (identifier "puVar25")) (; ";")) (expression_statement "puVar21 = puVar18;" (assignment_expression "puVar21 = puVar18" (identifier "puVar21") (= "=") (identifier "puVar18")) (; ";")) (expression_statement "(*pcVar34)(puVar19);" (call_expression "(*pcVar34)(puVar19)" (parenthesized_expression "(*pcVar34)" (( "(") (pointer_expression "*pcVar34" (* "*") (identifier "pcVar34")) () ")")) (argument_list "(puVar19)" (( "(") (identifier "puVar19") () ")"))) (; ";")) (expression_statement "puVar31 = (uint *)(iVar24 - (uint)((int)puVar29 < iVar24));" (assignment_expression "puVar31 = (uint *)(iVar24 - (uint)((int)puVar29 < iVar24))" (identifier "puVar31") (= "=") (cast_expression "(uint *)(iVar24 - (uint)((int)puVar29 < iVar24))" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar24 - (uint)((int)puVar29 < iVar24))" (( "(") (binary_expression "iVar24 - (uint)((int)puVar29 < iVar24)" (identifier "iVar24") (- "-") (call_expression "(uint)((int)puVar29 < iVar24)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "((int)puVar29 < iVar24)" (( "(") (binary_expression "(int)puVar29 < iVar24" (cast_expression "(int)puVar29" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar29")) (< "<") (identifier "iVar24")) () ")")))) () ")")))) (; ";")) (if_statement "if (((puVar31 != (uint *)0x0) &&\n      (puVar17 = puVar4, puVar21 = puVar19, puVar28 = puVar31,\n      iVar24 = (*(code *)apuStack_a8[0][-0x1ecb])(puVar4), iVar24 != 0)) &&\n     ((int)puVar31 < (int)puVar29)) {\n    puVar14 = puVar4 + (int)puVar31;\n    uVar3 = *puVar14;\n    puVar17 = (uint *)(uVar3 - 1);\n    *puVar14 = (uint)puVar17;\n    puVar5 = puVar31;\n    while ((uVar3 == 0 && (puVar5 = (uint *)((int)puVar5 + 1), puVar29 != puVar5))) {\n      uVar3 = puVar14[1];\n      puVar14 = puVar14 + 1;\n      puVar17 = (uint *)(uVar3 - 1);\n      *puVar14 = (uint)puVar17;\n    }\n  }" (if "if") (parenthesized_expression "(((puVar31 != (uint *)0x0) &&\n      (puVar17 = puVar4, puVar21 = puVar19, puVar28 = puVar31,\n      iVar24 = (*(code *)apuStack_a8[0][-0x1ecb])(puVar4), iVar24 != 0)) &&\n     ((int)puVar31 < (int)puVar29))" (( "(") (binary_expression "((puVar31 != (uint *)0x0) &&\n      (puVar17 = puVar4, puVar21 = puVar19, puVar28 = puVar31,\n      iVar24 = (*(code *)apuStack_a8[0][-0x1ecb])(puVar4), iVar24 != 0)) &&\n     ((int)puVar31 < (int)puVar29)" (parenthesized_expression "((puVar31 != (uint *)0x0) &&\n      (puVar17 = puVar4, puVar21 = puVar19, puVar28 = puVar31,\n      iVar24 = (*(code *)apuStack_a8[0][-0x1ecb])(puVar4), iVar24 != 0))" (( "(") (binary_expression "(puVar31 != (uint *)0x0) &&\n      (puVar17 = puVar4, puVar21 = puVar19, puVar28 = puVar31,\n      iVar24 = (*(code *)apuStack_a8[0][-0x1ecb])(puVar4), iVar24 != 0)" (parenthesized_expression "(puVar31 != (uint *)0x0)" (( "(") (binary_expression "puVar31 != (uint *)0x0" (identifier "puVar31") (!= "!=") (cast_expression "(uint *)0x0" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (&& "&&") (parenthesized_expression "(puVar17 = puVar4, puVar21 = puVar19, puVar28 = puVar31,\n      iVar24 = (*(code *)apuStack_a8[0][-0x1ecb])(puVar4), iVar24 != 0)" (( "(") (comma_expression "puVar17 = puVar4, puVar21 = puVar19, puVar28 = puVar31,\n      iVar24 = (*(code *)apuStack_a8[0][-0x1ecb])(puVar4), iVar24 != 0" (assignment_expression "puVar17 = puVar4" (identifier "puVar17") (= "=") (identifier "puVar4")) (, ",") (comma_expression "puVar21 = puVar19, puVar28 = puVar31,\n      iVar24 = (*(code *)apuStack_a8[0][-0x1ecb])(puVar4), iVar24 != 0" (assignment_expression "puVar21 = puVar19" (identifier "puVar21") (= "=") (identifier "puVar19")) (, ",") (comma_expression "puVar28 = puVar31,\n      iVar24 = (*(code *)apuStack_a8[0][-0x1ecb])(puVar4), iVar24 != 0" (assignment_expression "puVar28 = puVar31" (identifier "puVar28") (= "=") (identifier "puVar31")) (, ",") (comma_expression "iVar24 = (*(code *)apuStack_a8[0][-0x1ecb])(puVar4), iVar24 != 0" (assignment_expression "iVar24 = (*(code *)apuStack_a8[0][-0x1ecb])(puVar4)" (identifier "iVar24") (= "=") (call_expression "(*(code *)apuStack_a8[0][-0x1ecb])(puVar4)" (parenthesized_expression "(*(code *)apuStack_a8[0][-0x1ecb])" (( "(") (pointer_expression "*(code *)apuStack_a8[0][-0x1ecb]" (* "*") (cast_expression "(code *)apuStack_a8[0][-0x1ecb]" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "apuStack_a8[0][-0x1ecb]" (subscript_expression "apuStack_a8[0]" (identifier "apuStack_a8") ([ "[") (number_literal "0") (] "]")) ([ "[") (number_literal "-0x1ecb") (] "]")))) () ")")) (argument_list "(puVar4)" (( "(") (identifier "puVar4") () ")")))) (, ",") (binary_expression "iVar24 != 0" (identifier "iVar24") (!= "!=") (number_literal "0")))))) () ")"))) () ")")) (&& "&&") (parenthesized_expression "((int)puVar31 < (int)puVar29)" (( "(") (binary_expression "(int)puVar31 < (int)puVar29" (cast_expression "(int)puVar31" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar31")) (< "<") (cast_expression "(int)puVar29" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar29"))) () ")"))) () ")")) (compound_statement "{\n    puVar14 = puVar4 + (int)puVar31;\n    uVar3 = *puVar14;\n    puVar17 = (uint *)(uVar3 - 1);\n    *puVar14 = (uint)puVar17;\n    puVar5 = puVar31;\n    while ((uVar3 == 0 && (puVar5 = (uint *)((int)puVar5 + 1), puVar29 != puVar5))) {\n      uVar3 = puVar14[1];\n      puVar14 = puVar14 + 1;\n      puVar17 = (uint *)(uVar3 - 1);\n      *puVar14 = (uint)puVar17;\n    }\n  }" ({ "{") (expression_statement "puVar14 = puVar4 + (int)puVar31;" (assignment_expression "puVar14 = puVar4 + (int)puVar31" (identifier "puVar14") (= "=") (binary_expression "puVar4 + (int)puVar31" (identifier "puVar4") (+ "+") (cast_expression "(int)puVar31" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar31")))) (; ";")) (expression_statement "uVar3 = *puVar14;" (assignment_expression "uVar3 = *puVar14" (identifier "uVar3") (= "=") (pointer_expression "*puVar14" (* "*") (identifier "puVar14"))) (; ";")) (expression_statement "puVar17 = (uint *)(uVar3 - 1);" (assignment_expression "puVar17 = (uint *)(uVar3 - 1)" (identifier "puVar17") (= "=") (cast_expression "(uint *)(uVar3 - 1)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar3 - 1)" (( "(") (binary_expression "uVar3 - 1" (identifier "uVar3") (- "-") (number_literal "1")) () ")")))) (; ";")) (expression_statement "*puVar14 = (uint)puVar17;" (assignment_expression "*puVar14 = (uint)puVar17" (pointer_expression "*puVar14" (* "*") (identifier "puVar14")) (= "=") (cast_expression "(uint)puVar17" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "puVar17"))) (; ";")) (expression_statement "puVar5 = puVar31;" (assignment_expression "puVar5 = puVar31" (identifier "puVar5") (= "=") (identifier "puVar31")) (; ";")) (while_statement "while ((uVar3 == 0 && (puVar5 = (uint *)((int)puVar5 + 1), puVar29 != puVar5))) {\n      uVar3 = puVar14[1];\n      puVar14 = puVar14 + 1;\n      puVar17 = (uint *)(uVar3 - 1);\n      *puVar14 = (uint)puVar17;\n    }" (while "while") (parenthesized_expression "((uVar3 == 0 && (puVar5 = (uint *)((int)puVar5 + 1), puVar29 != puVar5)))" (( "(") (parenthesized_expression "(uVar3 == 0 && (puVar5 = (uint *)((int)puVar5 + 1), puVar29 != puVar5))" (( "(") (binary_expression "uVar3 == 0 && (puVar5 = (uint *)((int)puVar5 + 1), puVar29 != puVar5)" (binary_expression "uVar3 == 0" (identifier "uVar3") (== "==") (number_literal "0")) (&& "&&") (parenthesized_expression "(puVar5 = (uint *)((int)puVar5 + 1), puVar29 != puVar5)" (( "(") (comma_expression "puVar5 = (uint *)((int)puVar5 + 1), puVar29 != puVar5" (assignment_expression "puVar5 = (uint *)((int)puVar5 + 1)" (identifier "puVar5") (= "=") (cast_expression "(uint *)((int)puVar5 + 1)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar5 + 1)" (( "(") (binary_expression "(int)puVar5 + 1" (cast_expression "(int)puVar5" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar5")) (+ "+") (number_literal "1")) () ")")))) (, ",") (binary_expression "puVar29 != puVar5" (identifier "puVar29") (!= "!=") (identifier "puVar5"))) () ")"))) () ")")) () ")")) (compound_statement "{\n      uVar3 = puVar14[1];\n      puVar14 = puVar14 + 1;\n      puVar17 = (uint *)(uVar3 - 1);\n      *puVar14 = (uint)puVar17;\n    }" ({ "{") (expression_statement "uVar3 = puVar14[1];" (assignment_expression "uVar3 = puVar14[1]" (identifier "uVar3") (= "=") (subscript_expression "puVar14[1]" (identifier "puVar14") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "puVar14 = puVar14 + 1;" (assignment_expression "puVar14 = puVar14 + 1" (identifier "puVar14") (= "=") (binary_expression "puVar14 + 1" (identifier "puVar14") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "puVar17 = (uint *)(uVar3 - 1);" (assignment_expression "puVar17 = (uint *)(uVar3 - 1)" (identifier "puVar17") (= "=") (cast_expression "(uint *)(uVar3 - 1)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar3 - 1)" (( "(") (binary_expression "uVar3 - 1" (identifier "uVar3") (- "-") (number_literal "1")) () ")")))) (; ";")) (expression_statement "*puVar14 = (uint)puVar17;" (assignment_expression "*puVar14 = (uint)puVar17" (pointer_expression "*puVar14" (* "*") (identifier "puVar14")) (= "=") (cast_expression "(uint)puVar17" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "puVar17"))) (; ";")) (} "}"))) (} "}"))) (if_statement "if (iStack_98 != 0) {\n    (*(code *)apuStack_a8[0][-0x1e8b])();\n  }" (if "if") (parenthesized_expression "(iStack_98 != 0)" (( "(") (binary_expression "iStack_98 != 0" (identifier "iStack_98") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    (*(code *)apuStack_a8[0][-0x1e8b])();\n  }" ({ "{") (expression_statement "(*(code *)apuStack_a8[0][-0x1e8b])();" (call_expression "(*(code *)apuStack_a8[0][-0x1e8b])()" (parenthesized_expression "(*(code *)apuStack_a8[0][-0x1e8b])" (( "(") (pointer_expression "*(code *)apuStack_a8[0][-0x1e8b]" (* "*") (cast_expression "(code *)apuStack_a8[0][-0x1e8b]" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "apuStack_a8[0][-0x1e8b]" (subscript_expression "apuStack_a8[0]" (identifier "apuStack_a8") ([ "[") (number_literal "0") (] "]")) ([ "[") (number_literal "-0x1e8b") (] "]")))) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (expression_statement "puVar5 = puVar29;" (assignment_expression "puVar5 = puVar29" (identifier "puVar5") (= "=") (identifier "puVar29")) (; ";")) (if_statement "if (((int)puVar18 < (int)puVar29) && (puVar4[(int)puVar29 + -1] == 0)) {\n    puVar14 = puVar4 + (int)puVar29;\n    do {\n      puVar29 = (uint *)((int)puVar29 + -1);\n      puVar5 = puVar18;\n      if (puVar18 == puVar29) break;\n      puVar1 = puVar14 + -2;\n      puVar5 = puVar29;\n      puVar14 = puVar14 + -1;\n    } while (*puVar1 == 0);\n  }" (if "if") (parenthesized_expression "(((int)puVar18 < (int)puVar29) && (puVar4[(int)puVar29 + -1] == 0))" (( "(") (binary_expression "((int)puVar18 < (int)puVar29) && (puVar4[(int)puVar29 + -1] == 0)" (parenthesized_expression "((int)puVar18 < (int)puVar29)" (( "(") (binary_expression "(int)puVar18 < (int)puVar29" (cast_expression "(int)puVar18" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar18")) (< "<") (cast_expression "(int)puVar29" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar29"))) () ")")) (&& "&&") (parenthesized_expression "(puVar4[(int)puVar29 + -1] == 0)" (( "(") (binary_expression "puVar4[(int)puVar29 + -1] == 0" (subscript_expression "puVar4[(int)puVar29 + -1]" (identifier "puVar4") ([ "[") (binary_expression "(int)puVar29 + -1" (cast_expression "(int)puVar29" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar29")) (+ "+") (number_literal "-1")) (] "]")) (== "==") (number_literal "0")) () ")"))) () ")")) (compound_statement "{\n    puVar14 = puVar4 + (int)puVar29;\n    do {\n      puVar29 = (uint *)((int)puVar29 + -1);\n      puVar5 = puVar18;\n      if (puVar18 == puVar29) break;\n      puVar1 = puVar14 + -2;\n      puVar5 = puVar29;\n      puVar14 = puVar14 + -1;\n    } while (*puVar1 == 0);\n  }" ({ "{") (expression_statement "puVar14 = puVar4 + (int)puVar29;" (assignment_expression "puVar14 = puVar4 + (int)puVar29" (identifier "puVar14") (= "=") (binary_expression "puVar4 + (int)puVar29" (identifier "puVar4") (+ "+") (cast_expression "(int)puVar29" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar29")))) (; ";")) (do_statement "do {\n      puVar29 = (uint *)((int)puVar29 + -1);\n      puVar5 = puVar18;\n      if (puVar18 == puVar29) break;\n      puVar1 = puVar14 + -2;\n      puVar5 = puVar29;\n      puVar14 = puVar14 + -1;\n    } while (*puVar1 == 0);" (do "do") (compound_statement "{\n      puVar29 = (uint *)((int)puVar29 + -1);\n      puVar5 = puVar18;\n      if (puVar18 == puVar29) break;\n      puVar1 = puVar14 + -2;\n      puVar5 = puVar29;\n      puVar14 = puVar14 + -1;\n    }" ({ "{") (expression_statement "puVar29 = (uint *)((int)puVar29 + -1);" (assignment_expression "puVar29 = (uint *)((int)puVar29 + -1)" (identifier "puVar29") (= "=") (cast_expression "(uint *)((int)puVar29 + -1)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar29 + -1)" (( "(") (binary_expression "(int)puVar29 + -1" (cast_expression "(int)puVar29" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar29")) (+ "+") (number_literal "-1")) () ")")))) (; ";")) (expression_statement "puVar5 = puVar18;" (assignment_expression "puVar5 = puVar18" (identifier "puVar5") (= "=") (identifier "puVar18")) (; ";")) (if_statement "if (puVar18 == puVar29) break;" (if "if") (parenthesized_expression "(puVar18 == puVar29)" (( "(") (binary_expression "puVar18 == puVar29" (identifier "puVar18") (== "==") (identifier "puVar29")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "puVar1 = puVar14 + -2;" (assignment_expression "puVar1 = puVar14 + -2" (identifier "puVar1") (= "=") (binary_expression "puVar14 + -2" (identifier "puVar14") (+ "+") (number_literal "-2"))) (; ";")) (expression_statement "puVar5 = puVar29;" (assignment_expression "puVar5 = puVar29" (identifier "puVar5") (= "=") (identifier "puVar29")) (; ";")) (expression_statement "puVar14 = puVar14 + -1;" (assignment_expression "puVar14 = puVar14 + -1" (identifier "puVar14") (= "=") (binary_expression "puVar14 + -1" (identifier "puVar14") (+ "+") (number_literal "-1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(*puVar1 == 0)" (( "(") (binary_expression "*puVar1 == 0" (pointer_expression "*puVar1" (* "*") (identifier "puVar1")) (== "==") (number_literal "0")) () ")")) (; ";")) (} "}"))) (expression_statement "pcVar34 = (code *)apuStack_a8[0][-0x1edc];" (assignment_expression "pcVar34 = (code *)apuStack_a8[0][-0x1edc]" (identifier "pcVar34") (= "=") (cast_expression "(code *)apuStack_a8[0][-0x1edc]" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "apuStack_a8[0][-0x1edc]" (subscript_expression "apuStack_a8[0]" (identifier "apuStack_a8") ([ "[") (number_literal "0") (] "]")) ([ "[") (number_literal "-0x1edc") (] "]")))) (; ";")) (if_statement "if (iStack_94 == *piVar30) {\n    return puVar5;\n  }" (if "if") (parenthesized_expression "(iStack_94 == *piVar30)" (( "(") (binary_expression "iStack_94 == *piVar30" (identifier "iStack_94") (== "==") (pointer_expression "*piVar30" (* "*") (identifier "piVar30"))) () ")")) (compound_statement "{\n    return puVar5;\n  }" ({ "{") (return_statement "return puVar5;" (return "return") (identifier "puVar5") (; ";")) (} "}"))) (expression_statement "uVar39 = 0x52e68;" (assignment_expression "uVar39 = 0x52e68" (identifier "uVar39") (= "=") (number_literal "0x52e68")) (; ";")) (expression_statement "iVar24 = iStack_94;" (assignment_expression "iVar24 = iStack_94" (identifier "iVar24") (= "=") (identifier "iStack_94")) (; ";")) (expression_statement "(*pcVar34)();" (call_expression "(*pcVar34)()" (parenthesized_expression "(*pcVar34)" (( "(") (pointer_expression "*pcVar34" (* "*") (identifier "pcVar34")) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "puVar38 = puVar36 + -0x88;" (assignment_expression "puVar38 = puVar36 + -0x88" (identifier "puVar38") (= "=") (binary_expression "puVar36 + -0x88" (identifier "puVar36") (+ "+") (number_literal "-0x88"))) (; ";")) (expression_statement "puVar37 = puVar36 + -0x88;" (assignment_expression "puVar37 = puVar36 + -0x88" (identifier "puVar37") (= "=") (binary_expression "puVar36 + -0x88" (identifier "puVar36") (+ "+") (number_literal "-0x88"))) (; ";")) (expression_statement "puVar6 = *(undefined4 **)(pcVar34 + 0x446d8);" (assignment_expression "puVar6 = *(undefined4 **)(pcVar34 + 0x446d8)" (identifier "puVar6") (= "=") (pointer_expression "*(undefined4 **)(pcVar34 + 0x446d8)" (* "*") (cast_expression "(undefined4 **)(pcVar34 + 0x446d8)" (( "(") (type_descriptor "undefined4 **" (type_identifier "undefined4") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(pcVar34 + 0x446d8)" (( "(") (binary_expression "pcVar34 + 0x446d8" (identifier "pcVar34") (+ "+") (number_literal "0x446d8")) () ")"))))) (; ";")) (expression_statement "*(undefined1 **)(puVar36 + -8) = auStack_c0;" (assignment_expression "*(undefined1 **)(puVar36 + -8) = auStack_c0" (pointer_expression "*(undefined1 **)(puVar36 + -8)" (* "*") (cast_expression "(undefined1 **)(puVar36 + -8)" (( "(") (type_descriptor "undefined1 **" (type_identifier "undefined1") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar36 + -8)" (( "(") (binary_expression "puVar36 + -8" (identifier "puVar36") (+ "+") (number_literal "-8")) () ")")))) (= "=") (identifier "auStack_c0")) (; ";")) (expression_statement "*(uint **)(puVar36 + -0x10) = puVar19;" (assignment_expression "*(uint **)(puVar36 + -0x10) = puVar19" (pointer_expression "*(uint **)(puVar36 + -0x10)" (* "*") (cast_expression "(uint **)(puVar36 + -0x10)" (( "(") (type_descriptor "uint **" (type_identifier "uint") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar36 + -0x10)" (( "(") (binary_expression "puVar36 + -0x10" (identifier "puVar36") (+ "+") (number_literal "-0x10")) () ")")))) (= "=") (identifier "puVar19")) (; ";")) (expression_statement "*(undefined4 **)(puVar36 + -0x4c) = puVar6;" (assignment_expression "*(undefined4 **)(puVar36 + -0x4c) = puVar6" (pointer_expression "*(undefined4 **)(puVar36 + -0x4c)" (* "*") (cast_expression "(undefined4 **)(puVar36 + -0x4c)" (( "(") (type_descriptor "undefined4 **" (type_identifier "undefined4") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar36 + -0x4c)" (( "(") (binary_expression "puVar36 + -0x4c" (identifier "puVar36") (+ "+") (number_literal "-0x4c")) () ")")))) (= "=") (identifier "puVar6")) (; ";")) (expression_statement "*(uint **)(puVar36 + -0x20) = puVar18;" (assignment_expression "*(uint **)(puVar36 + -0x20) = puVar18" (pointer_expression "*(uint **)(puVar36 + -0x20)" (* "*") (cast_expression "(uint **)(puVar36 + -0x20)" (( "(") (type_descriptor "uint **" (type_identifier "uint") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar36 + -0x20)" (( "(") (binary_expression "puVar36 + -0x20" (identifier "puVar36") (+ "+") (number_literal "-0x20")) () ")")))) (= "=") (identifier "puVar18")) (; ";")) (expression_statement "*(uint **)(puVar36 + -0x24) = puVar4;" (assignment_expression "*(uint **)(puVar36 + -0x24) = puVar4" (pointer_expression "*(uint **)(puVar36 + -0x24)" (* "*") (cast_expression "(uint **)(puVar36 + -0x24)" (( "(") (type_descriptor "uint **" (type_identifier "uint") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar36 + -0x24)" (( "(") (binary_expression "puVar36 + -0x24" (identifier "puVar36") (+ "+") (number_literal "-0x24")) () ")")))) (= "=") (identifier "puVar4")) (; ";")) (expression_statement "*(uint **)(puVar36 + -0x28) = puVar29;" (assignment_expression "*(uint **)(puVar36 + -0x28) = puVar29" (pointer_expression "*(uint **)(puVar36 + -0x28)" (* "*") (cast_expression "(uint **)(puVar36 + -0x28)" (( "(") (type_descriptor "uint **" (type_identifier "uint") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar36 + -0x28)" (( "(") (binary_expression "puVar36 + -0x28" (identifier "puVar36") (+ "+") (number_literal "-0x28")) () ")")))) (= "=") (identifier "puVar29")) (; ";")) (expression_statement "*(undefined4 *)(puVar36 + -4) = uVar39;" (assignment_expression "*(undefined4 *)(puVar36 + -4) = uVar39" (pointer_expression "*(undefined4 *)(puVar36 + -4)" (* "*") (cast_expression "(undefined4 *)(puVar36 + -4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar36 + -4)" (( "(") (binary_expression "puVar36 + -4" (identifier "puVar36") (+ "+") (number_literal "-4")) () ")")))) (= "=") (identifier "uVar39")) (; ";")) (expression_statement "*(uint **)(puVar36 + -0xc) = puVar25;" (assignment_expression "*(uint **)(puVar36 + -0xc) = puVar25" (pointer_expression "*(uint **)(puVar36 + -0xc)" (* "*") (cast_expression "(uint **)(puVar36 + -0xc)" (( "(") (type_descriptor "uint **" (type_identifier "uint") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar36 + -0xc)" (( "(") (binary_expression "puVar36 + -0xc" (identifier "puVar36") (+ "+") (number_literal "-0xc")) () ")")))) (= "=") (identifier "puVar25")) (; ";")) (expression_statement "*(int *)(puVar36 + -0x14) = iVar9;" (assignment_expression "*(int *)(puVar36 + -0x14) = iVar9" (pointer_expression "*(int *)(puVar36 + -0x14)" (* "*") (cast_expression "(int *)(puVar36 + -0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar36 + -0x14)" (( "(") (binary_expression "puVar36 + -0x14" (identifier "puVar36") (+ "+") (number_literal "-0x14")) () ")")))) (= "=") (identifier "iVar9")) (; ";")) (expression_statement "*(uint **)(puVar36 + -0x18) = puVar31;" (assignment_expression "*(uint **)(puVar36 + -0x18) = puVar31" (pointer_expression "*(uint **)(puVar36 + -0x18)" (* "*") (cast_expression "(uint **)(puVar36 + -0x18)" (( "(") (type_descriptor "uint **" (type_identifier "uint") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar36 + -0x18)" (( "(") (binary_expression "puVar36 + -0x18" (identifier "puVar36") (+ "+") (number_literal "-0x18")) () ")")))) (= "=") (identifier "puVar31")) (; ";")) (expression_statement "*(int **)(puVar36 + -0x1c) = piVar30;" (assignment_expression "*(int **)(puVar36 + -0x1c) = piVar30" (pointer_expression "*(int **)(puVar36 + -0x1c)" (* "*") (cast_expression "(int **)(puVar36 + -0x1c)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar36 + -0x1c)" (( "(") (binary_expression "puVar36 + -0x1c" (identifier "puVar36") (+ "+") (number_literal "-0x1c")) () ")")))) (= "=") (identifier "piVar30")) (; ";")) (expression_statement "*(code **)(puVar36 + -0x68) = pcVar34 + 0x4c1d8;" (assignment_expression "*(code **)(puVar36 + -0x68) = pcVar34 + 0x4c1d8" (pointer_expression "*(code **)(puVar36 + -0x68)" (* "*") (cast_expression "(code **)(puVar36 + -0x68)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar36 + -0x68)" (( "(") (binary_expression "puVar36 + -0x68" (identifier "puVar36") (+ "+") (number_literal "-0x68")) () ")")))) (= "=") (binary_expression "pcVar34 + 0x4c1d8" (identifier "pcVar34") (+ "+") (number_literal "0x4c1d8"))) (; ";")) (expression_statement "*(undefined4 *)(puVar36 + -0x2c) = *puVar6;" (assignment_expression "*(undefined4 *)(puVar36 + -0x2c) = *puVar6" (pointer_expression "*(undefined4 *)(puVar36 + -0x2c)" (* "*") (cast_expression "(undefined4 *)(puVar36 + -0x2c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar36 + -0x2c)" (( "(") (binary_expression "puVar36 + -0x2c" (identifier "puVar36") (+ "+") (number_literal "-0x2c")) () ")")))) (= "=") (pointer_expression "*puVar6" (* "*") (identifier "puVar6"))) (; ";")) (expression_statement "puVar29 = puVar28;" (assignment_expression "puVar29 = puVar28" (identifier "puVar29") (= "=") (identifier "puVar28")) (; ";")) (expression_statement "puVar25 = puVar28;" (assignment_expression "puVar25 = puVar28" (identifier "puVar25") (= "=") (identifier "puVar28")) (; ";")) (if_statement "if (0 < (int)puVar28) {\n    if (puVar17[(int)((int)puVar28 + -1)] == 0) {\n      puVar18 = puVar17 + (int)puVar28;\n      do {\n        puVar25 = (uint *)((int)puVar25 + -1);\n        if (puVar25 == (uint *)0x0) break;\n        puVar4 = puVar18 + -2;\n        puVar18 = puVar18 + -1;\n      } while (*puVar4 == 0);\n    }\n    if (puVar21[(int)((int)puVar28 + -1)] == 0) {\n      puVar18 = puVar21 + (int)puVar28;\n      do {\n        puVar29 = (uint *)((int)puVar29 + -1);\n        if (puVar29 == (uint *)0x0) break;\n        puVar4 = puVar18 + -2;\n        puVar18 = puVar18 + -1;\n      } while (*puVar4 == 0);\n    }\n  }" (if "if") (parenthesized_expression "(0 < (int)puVar28)" (( "(") (binary_expression "0 < (int)puVar28" (number_literal "0") (< "<") (cast_expression "(int)puVar28" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar28"))) () ")")) (compound_statement "{\n    if (puVar17[(int)((int)puVar28 + -1)] == 0) {\n      puVar18 = puVar17 + (int)puVar28;\n      do {\n        puVar25 = (uint *)((int)puVar25 + -1);\n        if (puVar25 == (uint *)0x0) break;\n        puVar4 = puVar18 + -2;\n        puVar18 = puVar18 + -1;\n      } while (*puVar4 == 0);\n    }\n    if (puVar21[(int)((int)puVar28 + -1)] == 0) {\n      puVar18 = puVar21 + (int)puVar28;\n      do {\n        puVar29 = (uint *)((int)puVar29 + -1);\n        if (puVar29 == (uint *)0x0) break;\n        puVar4 = puVar18 + -2;\n        puVar18 = puVar18 + -1;\n      } while (*puVar4 == 0);\n    }\n  }" ({ "{") (if_statement "if (puVar17[(int)((int)puVar28 + -1)] == 0) {\n      puVar18 = puVar17 + (int)puVar28;\n      do {\n        puVar25 = (uint *)((int)puVar25 + -1);\n        if (puVar25 == (uint *)0x0) break;\n        puVar4 = puVar18 + -2;\n        puVar18 = puVar18 + -1;\n      } while (*puVar4 == 0);\n    }" (if "if") (parenthesized_expression "(puVar17[(int)((int)puVar28 + -1)] == 0)" (( "(") (binary_expression "puVar17[(int)((int)puVar28 + -1)] == 0" (subscript_expression "puVar17[(int)((int)puVar28 + -1)]" (identifier "puVar17") ([ "[") (cast_expression "(int)((int)puVar28 + -1)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "((int)puVar28 + -1)" (( "(") (binary_expression "(int)puVar28 + -1" (cast_expression "(int)puVar28" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar28")) (+ "+") (number_literal "-1")) () ")"))) (] "]")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      puVar18 = puVar17 + (int)puVar28;\n      do {\n        puVar25 = (uint *)((int)puVar25 + -1);\n        if (puVar25 == (uint *)0x0) break;\n        puVar4 = puVar18 + -2;\n        puVar18 = puVar18 + -1;\n      } while (*puVar4 == 0);\n    }" ({ "{") (expression_statement "puVar18 = puVar17 + (int)puVar28;" (assignment_expression "puVar18 = puVar17 + (int)puVar28" (identifier "puVar18") (= "=") (binary_expression "puVar17 + (int)puVar28" (identifier "puVar17") (+ "+") (cast_expression "(int)puVar28" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar28")))) (; ";")) (do_statement "do {\n        puVar25 = (uint *)((int)puVar25 + -1);\n        if (puVar25 == (uint *)0x0) break;\n        puVar4 = puVar18 + -2;\n        puVar18 = puVar18 + -1;\n      } while (*puVar4 == 0);" (do "do") (compound_statement "{\n        puVar25 = (uint *)((int)puVar25 + -1);\n        if (puVar25 == (uint *)0x0) break;\n        puVar4 = puVar18 + -2;\n        puVar18 = puVar18 + -1;\n      }" ({ "{") (expression_statement "puVar25 = (uint *)((int)puVar25 + -1);" (assignment_expression "puVar25 = (uint *)((int)puVar25 + -1)" (identifier "puVar25") (= "=") (cast_expression "(uint *)((int)puVar25 + -1)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar25 + -1)" (( "(") (binary_expression "(int)puVar25 + -1" (cast_expression "(int)puVar25" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar25")) (+ "+") (number_literal "-1")) () ")")))) (; ";")) (if_statement "if (puVar25 == (uint *)0x0) break;" (if "if") (parenthesized_expression "(puVar25 == (uint *)0x0)" (( "(") (binary_expression "puVar25 == (uint *)0x0" (identifier "puVar25") (== "==") (cast_expression "(uint *)0x0" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "puVar4 = puVar18 + -2;" (assignment_expression "puVar4 = puVar18 + -2" (identifier "puVar4") (= "=") (binary_expression "puVar18 + -2" (identifier "puVar18") (+ "+") (number_literal "-2"))) (; ";")) (expression_statement "puVar18 = puVar18 + -1;" (assignment_expression "puVar18 = puVar18 + -1" (identifier "puVar18") (= "=") (binary_expression "puVar18 + -1" (identifier "puVar18") (+ "+") (number_literal "-1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(*puVar4 == 0)" (( "(") (binary_expression "*puVar4 == 0" (pointer_expression "*puVar4" (* "*") (identifier "puVar4")) (== "==") (number_literal "0")) () ")")) (; ";")) (} "}"))) (if_statement "if (puVar21[(int)((int)puVar28 + -1)] == 0) {\n      puVar18 = puVar21 + (int)puVar28;\n      do {\n        puVar29 = (uint *)((int)puVar29 + -1);\n        if (puVar29 == (uint *)0x0) break;\n        puVar4 = puVar18 + -2;\n        puVar18 = puVar18 + -1;\n      } while (*puVar4 == 0);\n    }" (if "if") (parenthesized_expression "(puVar21[(int)((int)puVar28 + -1)] == 0)" (( "(") (binary_expression "puVar21[(int)((int)puVar28 + -1)] == 0" (subscript_expression "puVar21[(int)((int)puVar28 + -1)]" (identifier "puVar21") ([ "[") (cast_expression "(int)((int)puVar28 + -1)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "((int)puVar28 + -1)" (( "(") (binary_expression "(int)puVar28 + -1" (cast_expression "(int)puVar28" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar28")) (+ "+") (number_literal "-1")) () ")"))) (] "]")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      puVar18 = puVar21 + (int)puVar28;\n      do {\n        puVar29 = (uint *)((int)puVar29 + -1);\n        if (puVar29 == (uint *)0x0) break;\n        puVar4 = puVar18 + -2;\n        puVar18 = puVar18 + -1;\n      } while (*puVar4 == 0);\n    }" ({ "{") (expression_statement "puVar18 = puVar21 + (int)puVar28;" (assignment_expression "puVar18 = puVar21 + (int)puVar28" (identifier "puVar18") (= "=") (binary_expression "puVar21 + (int)puVar28" (identifier "puVar21") (+ "+") (cast_expression "(int)puVar28" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar28")))) (; ";")) (do_statement "do {\n        puVar29 = (uint *)((int)puVar29 + -1);\n        if (puVar29 == (uint *)0x0) break;\n        puVar4 = puVar18 + -2;\n        puVar18 = puVar18 + -1;\n      } while (*puVar4 == 0);" (do "do") (compound_statement "{\n        puVar29 = (uint *)((int)puVar29 + -1);\n        if (puVar29 == (uint *)0x0) break;\n        puVar4 = puVar18 + -2;\n        puVar18 = puVar18 + -1;\n      }" ({ "{") (expression_statement "puVar29 = (uint *)((int)puVar29 + -1);" (assignment_expression "puVar29 = (uint *)((int)puVar29 + -1)" (identifier "puVar29") (= "=") (cast_expression "(uint *)((int)puVar29 + -1)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar29 + -1)" (( "(") (binary_expression "(int)puVar29 + -1" (cast_expression "(int)puVar29" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar29")) (+ "+") (number_literal "-1")) () ")")))) (; ";")) (if_statement "if (puVar29 == (uint *)0x0) break;" (if "if") (parenthesized_expression "(puVar29 == (uint *)0x0)" (( "(") (binary_expression "puVar29 == (uint *)0x0" (identifier "puVar29") (== "==") (cast_expression "(uint *)0x0" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "puVar4 = puVar18 + -2;" (assignment_expression "puVar4 = puVar18 + -2" (identifier "puVar4") (= "=") (binary_expression "puVar18 + -2" (identifier "puVar18") (+ "+") (number_literal "-2"))) (; ";")) (expression_statement "puVar18 = puVar18 + -1;" (assignment_expression "puVar18 = puVar18 + -1" (identifier "puVar18") (= "=") (binary_expression "puVar18 + -1" (identifier "puVar18") (+ "+") (number_literal "-1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(*puVar4 == 0)" (( "(") (binary_expression "*puVar4 == 0" (pointer_expression "*puVar4" (* "*") (identifier "puVar4")) (== "==") (number_literal "0")) () ")")) (; ";")) (} "}"))) (} "}"))) (expression_statement "iVar32 = *(int *)(iVar24 + 4);" (assignment_expression "iVar32 = *(int *)(iVar24 + 4)" (identifier "iVar32") (= "=") (pointer_expression "*(int *)(iVar24 + 4)" (* "*") (cast_expression "(int *)(iVar24 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar24 + 4)" (( "(") (binary_expression "iVar24 + 4" (identifier "iVar24") (+ "+") (number_literal "4")) () ")"))))) (; ";")) (expression_statement "iVar9 = 8;" (assignment_expression "iVar9 = 8" (identifier "iVar9") (= "=") (number_literal "8")) (; ";")) (do_statement "do {\n    iVar22 = iVar9 + -8;\n    do {\n      iVar12 = iVar32;\n      if (0 < iVar32) {\n        iVar7 = *(int *)(iVar24 + iVar22 + 8);\n        iVar11 = *(int *)(iVar7 + iVar32 * 4 + -4);\n        iVar7 = iVar7 + iVar32 * 4;\n        while (iVar11 == 0) {\n          iVar12 = iVar12 + -1;\n          if (iVar12 == 0) break;\n          iVar11 = *(int *)(iVar7 + -8);\n          iVar7 = iVar7 + -4;\n        }\n      }\n      iVar7 = iVar22 + -0x3c;\n      iVar22 = iVar22 + 4;\n      *(int *)(puVar36 + iVar7) = iVar12;\n    } while (iVar9 != iVar22);\n    iVar9 = iVar9 + 8;\n    iVar22 = *(int *)(puVar36 + -0x34);\n  } while (iVar9 != 0x18);" (do "do") (compound_statement "{\n    iVar22 = iVar9 + -8;\n    do {\n      iVar12 = iVar32;\n      if (0 < iVar32) {\n        iVar7 = *(int *)(iVar24 + iVar22 + 8);\n        iVar11 = *(int *)(iVar7 + iVar32 * 4 + -4);\n        iVar7 = iVar7 + iVar32 * 4;\n        while (iVar11 == 0) {\n          iVar12 = iVar12 + -1;\n          if (iVar12 == 0) break;\n          iVar11 = *(int *)(iVar7 + -8);\n          iVar7 = iVar7 + -4;\n        }\n      }\n      iVar7 = iVar22 + -0x3c;\n      iVar22 = iVar22 + 4;\n      *(int *)(puVar36 + iVar7) = iVar12;\n    } while (iVar9 != iVar22);\n    iVar9 = iVar9 + 8;\n    iVar22 = *(int *)(puVar36 + -0x34);\n  }" ({ "{") (expression_statement "iVar22 = iVar9 + -8;" (assignment_expression "iVar22 = iVar9 + -8" (identifier "iVar22") (= "=") (binary_expression "iVar9 + -8" (identifier "iVar9") (+ "+") (number_literal "-8"))) (; ";")) (do_statement "do {\n      iVar12 = iVar32;\n      if (0 < iVar32) {\n        iVar7 = *(int *)(iVar24 + iVar22 + 8);\n        iVar11 = *(int *)(iVar7 + iVar32 * 4 + -4);\n        iVar7 = iVar7 + iVar32 * 4;\n        while (iVar11 == 0) {\n          iVar12 = iVar12 + -1;\n          if (iVar12 == 0) break;\n          iVar11 = *(int *)(iVar7 + -8);\n          iVar7 = iVar7 + -4;\n        }\n      }\n      iVar7 = iVar22 + -0x3c;\n      iVar22 = iVar22 + 4;\n      *(int *)(puVar36 + iVar7) = iVar12;\n    } while (iVar9 != iVar22);" (do "do") (compound_statement "{\n      iVar12 = iVar32;\n      if (0 < iVar32) {\n        iVar7 = *(int *)(iVar24 + iVar22 + 8);\n        iVar11 = *(int *)(iVar7 + iVar32 * 4 + -4);\n        iVar7 = iVar7 + iVar32 * 4;\n        while (iVar11 == 0) {\n          iVar12 = iVar12 + -1;\n          if (iVar12 == 0) break;\n          iVar11 = *(int *)(iVar7 + -8);\n          iVar7 = iVar7 + -4;\n        }\n      }\n      iVar7 = iVar22 + -0x3c;\n      iVar22 = iVar22 + 4;\n      *(int *)(puVar36 + iVar7) = iVar12;\n    }" ({ "{") (expression_statement "iVar12 = iVar32;" (assignment_expression "iVar12 = iVar32" (identifier "iVar12") (= "=") (identifier "iVar32")) (; ";")) (if_statement "if (0 < iVar32) {\n        iVar7 = *(int *)(iVar24 + iVar22 + 8);\n        iVar11 = *(int *)(iVar7 + iVar32 * 4 + -4);\n        iVar7 = iVar7 + iVar32 * 4;\n        while (iVar11 == 0) {\n          iVar12 = iVar12 + -1;\n          if (iVar12 == 0) break;\n          iVar11 = *(int *)(iVar7 + -8);\n          iVar7 = iVar7 + -4;\n        }\n      }" (if "if") (parenthesized_expression "(0 < iVar32)" (( "(") (binary_expression "0 < iVar32" (number_literal "0") (< "<") (identifier "iVar32")) () ")")) (compound_statement "{\n        iVar7 = *(int *)(iVar24 + iVar22 + 8);\n        iVar11 = *(int *)(iVar7 + iVar32 * 4 + -4);\n        iVar7 = iVar7 + iVar32 * 4;\n        while (iVar11 == 0) {\n          iVar12 = iVar12 + -1;\n          if (iVar12 == 0) break;\n          iVar11 = *(int *)(iVar7 + -8);\n          iVar7 = iVar7 + -4;\n        }\n      }" ({ "{") (expression_statement "iVar7 = *(int *)(iVar24 + iVar22 + 8);" (assignment_expression "iVar7 = *(int *)(iVar24 + iVar22 + 8)" (identifier "iVar7") (= "=") (pointer_expression "*(int *)(iVar24 + iVar22 + 8)" (* "*") (cast_expression "(int *)(iVar24 + iVar22 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar24 + iVar22 + 8)" (( "(") (binary_expression "iVar24 + iVar22 + 8" (binary_expression "iVar24 + iVar22" (identifier "iVar24") (+ "+") (identifier "iVar22")) (+ "+") (number_literal "8")) () ")"))))) (; ";")) (expression_statement "iVar11 = *(int *)(iVar7 + iVar32 * 4 + -4);" (assignment_expression "iVar11 = *(int *)(iVar7 + iVar32 * 4 + -4)" (identifier "iVar11") (= "=") (pointer_expression "*(int *)(iVar7 + iVar32 * 4 + -4)" (* "*") (cast_expression "(int *)(iVar7 + iVar32 * 4 + -4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar7 + iVar32 * 4 + -4)" (( "(") (binary_expression "iVar7 + iVar32 * 4 + -4" (binary_expression "iVar7 + iVar32 * 4" (identifier "iVar7") (+ "+") (binary_expression "iVar32 * 4" (identifier "iVar32") (* "*") (number_literal "4"))) (+ "+") (number_literal "-4")) () ")"))))) (; ";")) (expression_statement "iVar7 = iVar7 + iVar32 * 4;" (assignment_expression "iVar7 = iVar7 + iVar32 * 4" (identifier "iVar7") (= "=") (binary_expression "iVar7 + iVar32 * 4" (identifier "iVar7") (+ "+") (binary_expression "iVar32 * 4" (identifier "iVar32") (* "*") (number_literal "4")))) (; ";")) (while_statement "while (iVar11 == 0) {\n          iVar12 = iVar12 + -1;\n          if (iVar12 == 0) break;\n          iVar11 = *(int *)(iVar7 + -8);\n          iVar7 = iVar7 + -4;\n        }" (while "while") (parenthesized_expression "(iVar11 == 0)" (( "(") (binary_expression "iVar11 == 0" (identifier "iVar11") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n          iVar12 = iVar12 + -1;\n          if (iVar12 == 0) break;\n          iVar11 = *(int *)(iVar7 + -8);\n          iVar7 = iVar7 + -4;\n        }" ({ "{") (expression_statement "iVar12 = iVar12 + -1;" (assignment_expression "iVar12 = iVar12 + -1" (identifier "iVar12") (= "=") (binary_expression "iVar12 + -1" (identifier "iVar12") (+ "+") (number_literal "-1"))) (; ";")) (if_statement "if (iVar12 == 0) break;" (if "if") (parenthesized_expression "(iVar12 == 0)" (( "(") (binary_expression "iVar12 == 0" (identifier "iVar12") (== "==") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "iVar11 = *(int *)(iVar7 + -8);" (assignment_expression "iVar11 = *(int *)(iVar7 + -8)" (identifier "iVar11") (= "=") (pointer_expression "*(int *)(iVar7 + -8)" (* "*") (cast_expression "(int *)(iVar7 + -8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar7 + -8)" (( "(") (binary_expression "iVar7 + -8" (identifier "iVar7") (+ "+") (number_literal "-8")) () ")"))))) (; ";")) (expression_statement "iVar7 = iVar7 + -4;" (assignment_expression "iVar7 = iVar7 + -4" (identifier "iVar7") (= "=") (binary_expression "iVar7 + -4" (identifier "iVar7") (+ "+") (number_literal "-4"))) (; ";")) (} "}"))) (} "}"))) (expression_statement "iVar7 = iVar22 + -0x3c;" (assignment_expression "iVar7 = iVar22 + -0x3c" (identifier "iVar7") (= "=") (binary_expression "iVar22 + -0x3c" (identifier "iVar22") (+ "+") (number_literal "-0x3c"))) (; ";")) (expression_statement "iVar22 = iVar22 + 4;" (assignment_expression "iVar22 = iVar22 + 4" (identifier "iVar22") (= "=") (binary_expression "iVar22 + 4" (identifier "iVar22") (+ "+") (number_literal "4"))) (; ";")) (expression_statement "*(int *)(puVar36 + iVar7) = iVar12;" (assignment_expression "*(int *)(puVar36 + iVar7) = iVar12" (pointer_expression "*(int *)(puVar36 + iVar7)" (* "*") (cast_expression "(int *)(puVar36 + iVar7)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar36 + iVar7)" (( "(") (binary_expression "puVar36 + iVar7" (identifier "puVar36") (+ "+") (identifier "iVar7")) () ")")))) (= "=") (identifier "iVar12")) (; ";")) (} "}")) (while "while") (parenthesized_expression "(iVar9 != iVar22)" (( "(") (binary_expression "iVar9 != iVar22" (identifier "iVar9") (!= "!=") (identifier "iVar22")) () ")")) (; ";")) (expression_statement "iVar9 = iVar9 + 8;" (assignment_expression "iVar9 = iVar9 + 8" (identifier "iVar9") (= "=") (binary_expression "iVar9 + 8" (identifier "iVar9") (+ "+") (number_literal "8"))) (; ";")) (expression_statement "iVar22 = *(int *)(puVar36 + -0x34);" (assignment_expression "iVar22 = *(int *)(puVar36 + -0x34)" (identifier "iVar22") (= "=") (pointer_expression "*(int *)(puVar36 + -0x34)" (* "*") (cast_expression "(int *)(puVar36 + -0x34)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar36 + -0x34)" (( "(") (binary_expression "puVar36 + -0x34" (identifier "puVar36") (+ "+") (number_literal "-0x34")) () ")"))))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(iVar9 != 0x18)" (( "(") (binary_expression "iVar9 != 0x18" (identifier "iVar9") (!= "!=") (number_literal "0x18")) () ")")) (; ";")) (expression_statement "iVar9 = *(int *)(puVar36 + -0x38);" (assignment_expression "iVar9 = *(int *)(puVar36 + -0x38)" (identifier "iVar9") (= "=") (pointer_expression "*(int *)(puVar36 + -0x38)" (* "*") (cast_expression "(int *)(puVar36 + -0x38)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar36 + -0x38)" (( "(") (binary_expression "puVar36 + -0x38" (identifier "puVar36") (+ "+") (number_literal "-0x38")) () ")"))))) (; ";")) (expression_statement "*(undefined4 *)(puVar36 + -0x40) = 0;" (assignment_expression "*(undefined4 *)(puVar36 + -0x40) = 0" (pointer_expression "*(undefined4 *)(puVar36 + -0x40)" (* "*") (cast_expression "(undefined4 *)(puVar36 + -0x40)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar36 + -0x40)" (( "(") (binary_expression "puVar36 + -0x40" (identifier "puVar36") (+ "+") (number_literal "-0x40")) () ")")))) (= "=") (number_literal "0")) (; ";")) (if_statement "if (iVar9 == 0) {\n    uVar39 = *(undefined4 *)(iVar24 + 0x10);\n    *(int *)(puVar36 + -0x74) = iVar22;\n    *(undefined4 *)(puVar36 + -0x78) = uVar39;\n    puVar28 = puVar21;\n    puVar18 = puVar29;\n    puVar4 = puVar17;\nLAB_0005309c:\n    puVar29 = (uint *)FUN_00052c70(puVar28,puVar18,puVar4,puVar25);\n    iVar9 = *(int *)(puVar36 + -0x68);\nLAB_000530b4:\n    pcVar34 = *(code **)(iVar9 + -0x7a2c);\n    puVar38 = puVar37;\n    if (*(int *)(puVar36 + -0x40) != 0) goto LAB_00053478;\n  }\n  else {\n    if (iVar22 == 0) {\n      uVar39 = *(undefined4 *)(iVar24 + 0xc);\n      *(int *)(puVar36 + -0x74) = iVar9;\n      *(undefined4 *)(puVar36 + -0x78) = uVar39;\n      puVar28 = puVar17;\n      puVar18 = puVar25;\n      puVar4 = puVar21;\n      puVar25 = puVar29;\n      goto LAB_0005309c;\n    }\n    iVar7 = *(int *)(puVar36 + -0x30);\n    pcVar34 = *(code **)(pcVar34 + 0x4454c);\n    iVar12 = (int)puVar25 - *(int *)(puVar36 + -0x3c);\n    *(int *)(puVar36 + -0x50) = *(int *)(puVar36 + -0x3c);\n    *(int *)(puVar36 + -0x44) = iVar9;\n    if ((int)puVar29 - iVar22 <= iVar12) {\n      iVar12 = (int)puVar29 - iVar22;\n    }\n    iVar11 = (int)puVar25 - iVar9;\n    if ((int)puVar29 - iVar7 <= (int)puVar25 - iVar9) {\n      iVar11 = (int)puVar29 - iVar7;\n    }\n    puVar29 = (uint *)(iVar11 + 1);\n    if (iVar11 + 1 <= iVar12 + 1) {\n      puVar29 = (uint *)(iVar12 + 1);\n    }\n    puVar25 = (uint *)(*pcVar34)((int)puVar29 + 1);\n    iVar9 = (int)puVar25 >> 1;\n    iVar12 = *(int *)(puVar36 + -0x68);\n    uVar39 = *(undefined4 *)(puVar36 + -0x44);\n    if (iVar9 < (int)puVar25) {\n      if (iVar32 <= iVar9) {\n        uVar13 = ((int)puVar25 * 3 + iVar9 + 4) * 4;\n        uVar3 = uVar13 + 7;\n        if (0x7f00 < uVar13) {\n          pcVar34 = *(code **)(iVar12 + -0x7d50);\n          goto LAB_0005305c;\n        }\n        goto LAB_00053148;\n      }\n      uVar13 = ((int)puVar25 * 4 + 4) * 4;\n      uVar3 = uVar13 + 7;\n      if (uVar13 < 0x7f01) goto LAB_00053148;\n      pcVar34 = *(code **)(iVar12 + -0x7d50);\nLAB_0005305c:\n      *(uint **)(puVar36 + -0x48) = puVar25;\n      *(undefined4 *)(puVar36 + -0x44) = uVar39;\n      puVar4 = (uint *)(*pcVar34)(puVar36 + -0x40);\n      iVar12 = *(int *)(puVar36 + -0x68);\n      puVar25 = *(uint **)(puVar36 + -0x48);\n      uVar39 = *(undefined4 *)(puVar36 + -0x44);\n    }\n    else {\n      uVar3 = ((int)puVar25 * 3 + 4) * 4;\n      pcVar34 = *(code **)(iVar12 + -0x7d50);\n      if (0x7f00 < uVar3) goto LAB_0005305c;\n      uVar3 = uVar3 + 7;\nLAB_00053148:\n      puVar38 = puVar36 + -(uVar3 & 0xfffffff8) + -0x88;\n      puVar4 = (uint *)(puVar36 + -(uVar3 & 0xfffffff8) + -0x68);\n    }\n    *(uint **)(puVar36 + -0x44) = puVar4 + (int)puVar25;\n    *(uint **)(puVar36 + -0x48) = puVar4 + (int)puVar25 + (int)puVar25;\n    if ((int)puVar25 < (int)puVar28) {\n      pcVar34 = *(code **)(iVar12 + -0x7d0c);\n      puVar18 = (uint *)((int)puVar28 - (int)puVar25);\n      *(undefined4 *)(puVar36 + -0x5c) = uVar39;\n      *(uint **)(puVar36 + -0x58) = puVar25;\n      *(int *)(puVar36 + -0x54) = (int)puVar25 * 4;\n      iVar9 = (*pcVar34)(puVar17,puVar17,puVar17 + (int)puVar25,puVar18);\n      iVar12 = *(int *)(puVar36 + -0x68);\n      iVar32 = *(int *)(puVar36 + -0x54);\n      puVar28 = *(uint **)(puVar36 + -0x58);\n      uVar39 = *(undefined4 *)(puVar36 + -0x5c);\n      if (iVar9 == 0) {\nLAB_0005359c:\n        pcVar34 = *(code **)(iVar12 + -0x7d0c);\n      }\n      else {\n        puVar25 = puVar17;\n        if ((int)puVar28 <= (int)puVar18) {\nLAB_00053588:\n          do {\n            uVar3 = *puVar25;\n            *puVar25 = uVar3 + 1;\n            puVar25 = puVar25 + 1;\n          } while (uVar3 + 1 == 0);\n          goto LAB_0005359c;\n        }\n        puVar31 = puVar17 + (int)puVar18;\n        uVar3 = *puVar31;\n        *puVar31 = uVar3 + 1;\n        puVar19 = puVar18;\n        if (uVar3 + 1 == 0) {\n          do {\n            puVar19 = (uint *)((int)puVar19 + 1);\n            if (puVar28 == puVar19) goto LAB_00053588;\n            uVar3 = puVar31[1];\n            puVar31 = puVar31 + 1;\n            *puVar31 = uVar3 + 1;\n          } while (uVar3 + 1 == 0);\n          goto LAB_0005359c;\n        }\n        pcVar34 = *(code **)(iVar12 + -0x7d0c);\n      }\n      *(uint **)(puVar36 + -0x58) = puVar28;\n      *(undefined4 *)(puVar36 + -0x54) = uVar39;\n      iVar9 = (*pcVar34)(puVar21,puVar21,(int)puVar21 + iVar32,puVar18);\n      iVar12 = *(int *)(puVar36 + -0x68);\n      uVar39 = *(undefined4 *)(puVar36 + -0x54);\n      puVar25 = *(uint **)(puVar36 + -0x58);\n      puVar28 = puVar25;\n      if (iVar9 != 0) {\n        puVar19 = puVar21;\n        if ((int)puVar18 < (int)puVar25) {\n          puVar31 = puVar21 + (int)puVar18;\n          uVar3 = *puVar31 + 1;\n          *puVar31 = uVar3;\n          while (uVar3 == 0) {\n            puVar18 = (uint *)((int)puVar18 + 1);\n            if (puVar25 == puVar18) goto LAB_0005361c;\n            puVar5 = puVar31 + 1;\n            puVar31 = puVar31 + 1;\n            uVar3 = *puVar5 + 1;\n            *puVar31 = uVar3;\n          }\n        }\n        else {\nLAB_0005361c:\n          do {\n            uVar3 = *puVar19;\n            *puVar19 = uVar3 + 1;\n            puVar19 = puVar19 + 1;\n          } while (uVar3 + 1 == 0);\n        }\n      }\n    }\n    uVar8 = *(undefined4 *)(iVar24 + 0x14);\n    pcVar34 = *(code **)(iVar12 + -0x7cd8);\n    *(undefined4 *)(puVar36 + -0x5c) = uVar39;\n    *(uint **)(puVar36 + -0x54) = puVar25;\n    *(undefined4 *)(puVar38 + 0x18) = *(undefined4 *)(puVar36 + -0x48);\n    *(undefined4 *)(puVar38 + 0x10) = uVar8;\n    *(int *)(puVar38 + 0x14) = iVar7;\n    (*pcVar34)(puVar4,puVar25,puVar17,puVar28);\n    uVar39 = *(undefined4 *)(iVar24 + 0xc);\n    uVar26 = *(undefined4 *)(puVar36 + -0x54);\n    uVar27 = *(undefined4 *)(puVar36 + -0x5c);\n    uVar8 = *(undefined4 *)(puVar36 + -0x48);\n    pcVar34 = *(code **)(*(int *)(puVar36 + -0x68) + -0x7cd8);\n    uVar15 = *(undefined4 *)(puVar36 + -0x44);\n    *(undefined4 *)(puVar36 + -0x58) = uVar26;\n    *(undefined4 *)(puVar38 + 0x14) = uVar27;\n    *(undefined4 *)(puVar36 + -0x54) = uVar27;\n    *(undefined4 *)(puVar38 + 0x10) = uVar39;\n    *(undefined4 *)(puVar38 + 0x18) = uVar8;\n    (*pcVar34)(uVar15,uVar26,puVar21,puVar28);\n    iVar9 = *(int *)(puVar36 + -0x58);\n    iVar12 = *(int *)(puVar36 + -0x68);\n    iVar32 = *(int *)(puVar36 + -0x54);\n    if ((iVar7 + (int)puVar28 < iVar9) && (iVar7 != iVar9 - (int)puVar28)) {\n      iVar11 = (iVar9 - (int)puVar28) - iVar7;\n      puVar25 = puVar4 + (int)(iVar7 + (int)puVar28);\n      do {\n        iVar11 = iVar11 + -1;\n        *puVar25 = 0;\n        puVar25 = puVar25 + 1;\n      } while (iVar11 != 0);\n    }\n    pcVar34 = *(code **)(iVar12 + -0x7b2c);\n    if (iVar32 + (int)puVar28 < iVar9) {\n      if (iVar32 != iVar9 - (int)puVar28) {\n        iVar7 = (iVar9 - (int)puVar28) - iVar32;\n        puVar6 = (undefined4 *)(*(int *)(puVar36 + -0x44) + (int)(iVar32 + (int)puVar28) * 4);\n        do {\n          iVar7 = iVar7 + -1;\n          *puVar6 = 0;\n          puVar6 = puVar6 + 1;\n        } while (iVar7 != 0);\n        pcVar34 = *(code **)(iVar12 + -0x7b2c);\n      }\n    }\n    *(int *)(puVar36 + -0x54) = iVar9;\n    uVar3 = (*pcVar34)(puVar4,puVar4,*(undefined4 *)(puVar36 + -0x44),iVar9);\n    uVar13 = *puVar4;\n    iVar9 = *(int *)(puVar36 + -0x68);\n    uVar39 = *(undefined4 *)(puVar36 + -0x54);\n    *puVar4 = uVar13 - uVar3;\n    puVar25 = puVar4;\n    if (uVar13 < uVar3) {\n      do {\n        puVar25 = puVar25 + 1;\n        uVar3 = *puVar25;\n        *puVar25 = uVar3 - 1;\n      } while (uVar3 == 0);\n    }\n    uVar8 = *(undefined4 *)(iVar24 + 0x10);\n    pcVar34 = *(code **)(iVar9 + -0x7cd8);\n    uVar15 = *(undefined4 *)(puVar36 + -0x44);\n    *(undefined4 *)(puVar36 + -0x54) = uVar39;\n    *(undefined4 *)(puVar38 + 0x18) = *(undefined4 *)(puVar36 + -0x48);\n    *(int *)(puVar38 + 0x14) = iVar22;\n    *(undefined4 *)(puVar38 + 0x10) = uVar8;\n    (*pcVar34)(uVar15,uVar39,puVar17,puVar28);\n    iVar9 = *(int *)(puVar36 + -0x68);\n    uVar39 = *(undefined4 *)(puVar36 + -0x54);\n    if (puVar29 != (uint *)0x0) {\n      iVar32 = (int)puVar29 + -1;\n      uVar3 = *puVar4;\n      puVar18 = puVar17;\n      puVar25 = puVar4;\n      if (iVar32 == 0) {\n        *puVar17 = uVar3;\n      }\n      else {\n        do {\n          *puVar18 = uVar3;\n          iVar32 = iVar32 + -1;\n          uVar3 = puVar25[1];\n          puVar18 = puVar18 + 1;\n          puVar25 = puVar25 + 1;\n        } while (iVar32 != 0);\n        puVar17[(int)puVar29 + -1] = uVar3;\n      }\n    }\n    uVar8 = *(undefined4 *)(iVar24 + 8);\n    pcVar34 = *(code **)(iVar9 + -0x7cd8);\n    *(undefined4 *)(puVar38 + 0x18) = *(undefined4 *)(puVar36 + -0x48);\n    *(undefined4 *)(puVar36 + -0x48) = uVar39;\n    *(undefined4 *)(puVar38 + 0x10) = uVar8;\n    *(undefined4 *)(puVar38 + 0x14) = *(undefined4 *)(puVar36 + -0x50);\n    (*pcVar34)(puVar4,uVar39,puVar21,puVar28);\n    iVar9 = *(int *)(puVar36 + -0x48);\n    iVar32 = *(int *)(puVar36 + -0x68);\n    if ((int)puVar28 + iVar22 < iVar9) {\n      if (iVar22 != iVar9 - (int)puVar28) {\n        iVar12 = (iVar9 - (int)puVar28) - iVar22;\n        puVar6 = (undefined4 *)(*(int *)(puVar36 + -0x44) + (int)((int)puVar28 + iVar22) * 4);\n        do {\n          iVar12 = iVar12 + -1;\n          *puVar6 = 0;\n          puVar6 = puVar6 + 1;\n        } while (iVar12 != 0);\n      }\n    }\n    pcVar34 = *(code **)(iVar32 + -0x7b2c);\n    if (*(int *)(puVar36 + -0x50) + (int)puVar28 < iVar9) {\n      if (*(int *)(puVar36 + -0x50) != iVar9 - (int)puVar28) {\n        iVar22 = (iVar9 - (int)puVar28) - *(int *)(puVar36 + -0x50);\n        puVar28 = puVar4 + (int)(*(int *)(puVar36 + -0x50) + (int)puVar28);\n        do {\n          iVar22 = iVar22 + -1;\n          *puVar28 = 0;\n          puVar28 = puVar28 + 1;\n        } while (iVar22 != 0);\n        pcVar34 = *(code **)(iVar32 + -0x7b2c);\n      }\n    }\n    uVar3 = (*pcVar34)(puVar4,puVar4,*(undefined4 *)(puVar36 + -0x44),iVar9);\n    uVar13 = *puVar4;\n    iVar9 = *(int *)(puVar36 + -0x68);\n    puVar18 = (uint *)(uVar13 - uVar3);\n    *puVar4 = (uint)puVar18;\n    puVar28 = puVar4;\n    if (uVar13 < uVar3) {\n      do {\n        puVar28 = puVar28 + 1;\n        uVar3 = *puVar28;\n        puVar18 = (uint *)(uVar3 - 1);\n        *puVar28 = (uint)puVar18;\n      } while (uVar3 == 0);\n    }\n    iVar32 = (int)puVar29 + -1;\n    if (puVar29 == (uint *)0x0) {\n      iVar32 = -4;\n    }\n    else {\n      puVar18 = (uint *)*puVar4;\n      puVar28 = puVar21;\n      if (iVar32 != 0) {\n        do {\n          puVar4 = puVar4 + 1;\n          *puVar28 = (uint)puVar18;\n          iVar32 = iVar32 + -1;\n          puVar18 = (uint *)*puVar4;\n          puVar28 = puVar28 + 1;\n        } while (iVar32 != 0);\n        puVar28 = puVar21 + (int)puVar29 + -1;\n      }\n      *puVar28 = (uint)puVar18;\n      iVar32 = (int)puVar29 * 4 + -4;\n    }\n    puVar37 = puVar38;\n    if (*(int *)((int)puVar17 + iVar32) != 0 || *(int *)((int)puVar21 + iVar32) != 0)\n    goto LAB_000530b4;\n    puVar17 = puVar17 + (int)puVar29 + -2;\n    puVar21 = puVar21 + (int)puVar29 + -2;\n    do {\n      uVar3 = *puVar17;\n      puVar29 = (uint *)((int)puVar29 + -1);\n      uVar13 = *puVar21;\n      puVar17 = puVar17 + -1;\n      puVar21 = puVar21 + -1;\n    } while (uVar3 == 0 && uVar13 == 0);\n    piVar30 = *(int **)(puVar36 + -0x4c);\n    if (*(int *)(puVar36 + -0x40) == 0) goto LAB_000530c4;\n    pcVar34 = *(code **)(iVar9 + -0x7a2c);\nLAB_00053478:\n    (*pcVar34)();\n    iVar9 = *(int *)(puVar36 + -0x68);\n    puVar38 = puVar37;\n  }" (if "if") (parenthesized_expression "(iVar9 == 0)" (( "(") (binary_expression "iVar9 == 0" (identifier "iVar9") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    uVar39 = *(undefined4 *)(iVar24 + 0x10);\n    *(int *)(puVar36 + -0x74) = iVar22;\n    *(undefined4 *)(puVar36 + -0x78) = uVar39;\n    puVar28 = puVar21;\n    puVar18 = puVar29;\n    puVar4 = puVar17;\nLAB_0005309c:\n    puVar29 = (uint *)FUN_00052c70(puVar28,puVar18,puVar4,puVar25);\n    iVar9 = *(int *)(puVar36 + -0x68);\nLAB_000530b4:\n    pcVar34 = *(code **)(iVar9 + -0x7a2c);\n    puVar38 = puVar37;\n    if (*(int *)(puVar36 + -0x40) != 0) goto LAB_00053478;\n  }" ({ "{") (expression_statement "uVar39 = *(undefined4 *)(iVar24 + 0x10);" (assignment_expression "uVar39 = *(undefined4 *)(iVar24 + 0x10)" (identifier "uVar39") (= "=") (pointer_expression "*(undefined4 *)(iVar24 + 0x10)" (* "*") (cast_expression "(undefined4 *)(iVar24 + 0x10)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar24 + 0x10)" (( "(") (binary_expression "iVar24 + 0x10" (identifier "iVar24") (+ "+") (number_literal "0x10")) () ")"))))) (; ";")) (expression_statement "*(int *)(puVar36 + -0x74) = iVar22;" (assignment_expression "*(int *)(puVar36 + -0x74) = iVar22" (pointer_expression "*(int *)(puVar36 + -0x74)" (* "*") (cast_expression "(int *)(puVar36 + -0x74)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar36 + -0x74)" (( "(") (binary_expression "puVar36 + -0x74" (identifier "puVar36") (+ "+") (number_literal "-0x74")) () ")")))) (= "=") (identifier "iVar22")) (; ";")) (expression_statement "*(undefined4 *)(puVar36 + -0x78) = uVar39;" (assignment_expression "*(undefined4 *)(puVar36 + -0x78) = uVar39" (pointer_expression "*(undefined4 *)(puVar36 + -0x78)" (* "*") (cast_expression "(undefined4 *)(puVar36 + -0x78)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar36 + -0x78)" (( "(") (binary_expression "puVar36 + -0x78" (identifier "puVar36") (+ "+") (number_literal "-0x78")) () ")")))) (= "=") (identifier "uVar39")) (; ";")) (expression_statement "puVar28 = puVar21;" (assignment_expression "puVar28 = puVar21" (identifier "puVar28") (= "=") (identifier "puVar21")) (; ";")) (expression_statement "puVar18 = puVar29;" (assignment_expression "puVar18 = puVar29" (identifier "puVar18") (= "=") (identifier "puVar29")) (; ";")) (expression_statement "puVar4 = puVar17;" (assignment_expression "puVar4 = puVar17" (identifier "puVar4") (= "=") (identifier "puVar17")) (; ";")) (labeled_statement "LAB_0005309c:\n    puVar29 = (uint *)FUN_00052c70(puVar28,puVar18,puVar4,puVar25);" (statement_identifier "LAB_0005309c") (: ":") (expression_statement "puVar29 = (uint *)FUN_00052c70(puVar28,puVar18,puVar4,puVar25);" (assignment_expression "puVar29 = (uint *)FUN_00052c70(puVar28,puVar18,puVar4,puVar25)" (identifier "puVar29") (= "=") (cast_expression "(uint *)FUN_00052c70(puVar28,puVar18,puVar4,puVar25)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_00052c70(puVar28,puVar18,puVar4,puVar25)" (identifier "FUN_00052c70") (argument_list "(puVar28,puVar18,puVar4,puVar25)" (( "(") (identifier "puVar28") (, ",") (identifier "puVar18") (, ",") (identifier "puVar4") (, ",") (identifier "puVar25") () ")"))))) (; ";"))) (expression_statement "iVar9 = *(int *)(puVar36 + -0x68);" (assignment_expression "iVar9 = *(int *)(puVar36 + -0x68)" (identifier "iVar9") (= "=") (pointer_expression "*(int *)(puVar36 + -0x68)" (* "*") (cast_expression "(int *)(puVar36 + -0x68)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar36 + -0x68)" (( "(") (binary_expression "puVar36 + -0x68" (identifier "puVar36") (+ "+") (number_literal "-0x68")) () ")"))))) (; ";")) (labeled_statement "LAB_000530b4:\n    pcVar34 = *(code **)(iVar9 + -0x7a2c);" (statement_identifier "LAB_000530b4") (: ":") (expression_statement "pcVar34 = *(code **)(iVar9 + -0x7a2c);" (assignment_expression "pcVar34 = *(code **)(iVar9 + -0x7a2c)" (identifier "pcVar34") (= "=") (pointer_expression "*(code **)(iVar9 + -0x7a2c)" (* "*") (cast_expression "(code **)(iVar9 + -0x7a2c)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar9 + -0x7a2c)" (( "(") (binary_expression "iVar9 + -0x7a2c" (identifier "iVar9") (+ "+") (number_literal "-0x7a2c")) () ")"))))) (; ";"))) (expression_statement "puVar38 = puVar37;" (assignment_expression "puVar38 = puVar37" (identifier "puVar38") (= "=") (identifier "puVar37")) (; ";")) (if_statement "if (*(int *)(puVar36 + -0x40) != 0) goto LAB_00053478;" (if "if") (parenthesized_expression "(*(int *)(puVar36 + -0x40) != 0)" (( "(") (binary_expression "*(int *)(puVar36 + -0x40) != 0" (pointer_expression "*(int *)(puVar36 + -0x40)" (* "*") (cast_expression "(int *)(puVar36 + -0x40)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar36 + -0x40)" (( "(") (binary_expression "puVar36 + -0x40" (identifier "puVar36") (+ "+") (number_literal "-0x40")) () ")")))) (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_00053478;" (goto "goto") (statement_identifier "LAB_00053478") (; ";"))) (} "}")) (else_clause "else {\n    if (iVar22 == 0) {\n      uVar39 = *(undefined4 *)(iVar24 + 0xc);\n      *(int *)(puVar36 + -0x74) = iVar9;\n      *(undefined4 *)(puVar36 + -0x78) = uVar39;\n      puVar28 = puVar17;\n      puVar18 = puVar25;\n      puVar4 = puVar21;\n      puVar25 = puVar29;\n      goto LAB_0005309c;\n    }\n    iVar7 = *(int *)(puVar36 + -0x30);\n    pcVar34 = *(code **)(pcVar34 + 0x4454c);\n    iVar12 = (int)puVar25 - *(int *)(puVar36 + -0x3c);\n    *(int *)(puVar36 + -0x50) = *(int *)(puVar36 + -0x3c);\n    *(int *)(puVar36 + -0x44) = iVar9;\n    if ((int)puVar29 - iVar22 <= iVar12) {\n      iVar12 = (int)puVar29 - iVar22;\n    }\n    iVar11 = (int)puVar25 - iVar9;\n    if ((int)puVar29 - iVar7 <= (int)puVar25 - iVar9) {\n      iVar11 = (int)puVar29 - iVar7;\n    }\n    puVar29 = (uint *)(iVar11 + 1);\n    if (iVar11 + 1 <= iVar12 + 1) {\n      puVar29 = (uint *)(iVar12 + 1);\n    }\n    puVar25 = (uint *)(*pcVar34)((int)puVar29 + 1);\n    iVar9 = (int)puVar25 >> 1;\n    iVar12 = *(int *)(puVar36 + -0x68);\n    uVar39 = *(undefined4 *)(puVar36 + -0x44);\n    if (iVar9 < (int)puVar25) {\n      if (iVar32 <= iVar9) {\n        uVar13 = ((int)puVar25 * 3 + iVar9 + 4) * 4;\n        uVar3 = uVar13 + 7;\n        if (0x7f00 < uVar13) {\n          pcVar34 = *(code **)(iVar12 + -0x7d50);\n          goto LAB_0005305c;\n        }\n        goto LAB_00053148;\n      }\n      uVar13 = ((int)puVar25 * 4 + 4) * 4;\n      uVar3 = uVar13 + 7;\n      if (uVar13 < 0x7f01) goto LAB_00053148;\n      pcVar34 = *(code **)(iVar12 + -0x7d50);\nLAB_0005305c:\n      *(uint **)(puVar36 + -0x48) = puVar25;\n      *(undefined4 *)(puVar36 + -0x44) = uVar39;\n      puVar4 = (uint *)(*pcVar34)(puVar36 + -0x40);\n      iVar12 = *(int *)(puVar36 + -0x68);\n      puVar25 = *(uint **)(puVar36 + -0x48);\n      uVar39 = *(undefined4 *)(puVar36 + -0x44);\n    }\n    else {\n      uVar3 = ((int)puVar25 * 3 + 4) * 4;\n      pcVar34 = *(code **)(iVar12 + -0x7d50);\n      if (0x7f00 < uVar3) goto LAB_0005305c;\n      uVar3 = uVar3 + 7;\nLAB_00053148:\n      puVar38 = puVar36 + -(uVar3 & 0xfffffff8) + -0x88;\n      puVar4 = (uint *)(puVar36 + -(uVar3 & 0xfffffff8) + -0x68);\n    }\n    *(uint **)(puVar36 + -0x44) = puVar4 + (int)puVar25;\n    *(uint **)(puVar36 + -0x48) = puVar4 + (int)puVar25 + (int)puVar25;\n    if ((int)puVar25 < (int)puVar28) {\n      pcVar34 = *(code **)(iVar12 + -0x7d0c);\n      puVar18 = (uint *)((int)puVar28 - (int)puVar25);\n      *(undefined4 *)(puVar36 + -0x5c) = uVar39;\n      *(uint **)(puVar36 + -0x58) = puVar25;\n      *(int *)(puVar36 + -0x54) = (int)puVar25 * 4;\n      iVar9 = (*pcVar34)(puVar17,puVar17,puVar17 + (int)puVar25,puVar18);\n      iVar12 = *(int *)(puVar36 + -0x68);\n      iVar32 = *(int *)(puVar36 + -0x54);\n      puVar28 = *(uint **)(puVar36 + -0x58);\n      uVar39 = *(undefined4 *)(puVar36 + -0x5c);\n      if (iVar9 == 0) {\nLAB_0005359c:\n        pcVar34 = *(code **)(iVar12 + -0x7d0c);\n      }\n      else {\n        puVar25 = puVar17;\n        if ((int)puVar28 <= (int)puVar18) {\nLAB_00053588:\n          do {\n            uVar3 = *puVar25;\n            *puVar25 = uVar3 + 1;\n            puVar25 = puVar25 + 1;\n          } while (uVar3 + 1 == 0);\n          goto LAB_0005359c;\n        }\n        puVar31 = puVar17 + (int)puVar18;\n        uVar3 = *puVar31;\n        *puVar31 = uVar3 + 1;\n        puVar19 = puVar18;\n        if (uVar3 + 1 == 0) {\n          do {\n            puVar19 = (uint *)((int)puVar19 + 1);\n            if (puVar28 == puVar19) goto LAB_00053588;\n            uVar3 = puVar31[1];\n            puVar31 = puVar31 + 1;\n            *puVar31 = uVar3 + 1;\n          } while (uVar3 + 1 == 0);\n          goto LAB_0005359c;\n        }\n        pcVar34 = *(code **)(iVar12 + -0x7d0c);\n      }\n      *(uint **)(puVar36 + -0x58) = puVar28;\n      *(undefined4 *)(puVar36 + -0x54) = uVar39;\n      iVar9 = (*pcVar34)(puVar21,puVar21,(int)puVar21 + iVar32,puVar18);\n      iVar12 = *(int *)(puVar36 + -0x68);\n      uVar39 = *(undefined4 *)(puVar36 + -0x54);\n      puVar25 = *(uint **)(puVar36 + -0x58);\n      puVar28 = puVar25;\n      if (iVar9 != 0) {\n        puVar19 = puVar21;\n        if ((int)puVar18 < (int)puVar25) {\n          puVar31 = puVar21 + (int)puVar18;\n          uVar3 = *puVar31 + 1;\n          *puVar31 = uVar3;\n          while (uVar3 == 0) {\n            puVar18 = (uint *)((int)puVar18 + 1);\n            if (puVar25 == puVar18) goto LAB_0005361c;\n            puVar5 = puVar31 + 1;\n            puVar31 = puVar31 + 1;\n            uVar3 = *puVar5 + 1;\n            *puVar31 = uVar3;\n          }\n        }\n        else {\nLAB_0005361c:\n          do {\n            uVar3 = *puVar19;\n            *puVar19 = uVar3 + 1;\n            puVar19 = puVar19 + 1;\n          } while (uVar3 + 1 == 0);\n        }\n      }\n    }\n    uVar8 = *(undefined4 *)(iVar24 + 0x14);\n    pcVar34 = *(code **)(iVar12 + -0x7cd8);\n    *(undefined4 *)(puVar36 + -0x5c) = uVar39;\n    *(uint **)(puVar36 + -0x54) = puVar25;\n    *(undefined4 *)(puVar38 + 0x18) = *(undefined4 *)(puVar36 + -0x48);\n    *(undefined4 *)(puVar38 + 0x10) = uVar8;\n    *(int *)(puVar38 + 0x14) = iVar7;\n    (*pcVar34)(puVar4,puVar25,puVar17,puVar28);\n    uVar39 = *(undefined4 *)(iVar24 + 0xc);\n    uVar26 = *(undefined4 *)(puVar36 + -0x54);\n    uVar27 = *(undefined4 *)(puVar36 + -0x5c);\n    uVar8 = *(undefined4 *)(puVar36 + -0x48);\n    pcVar34 = *(code **)(*(int *)(puVar36 + -0x68) + -0x7cd8);\n    uVar15 = *(undefined4 *)(puVar36 + -0x44);\n    *(undefined4 *)(puVar36 + -0x58) = uVar26;\n    *(undefined4 *)(puVar38 + 0x14) = uVar27;\n    *(undefined4 *)(puVar36 + -0x54) = uVar27;\n    *(undefined4 *)(puVar38 + 0x10) = uVar39;\n    *(undefined4 *)(puVar38 + 0x18) = uVar8;\n    (*pcVar34)(uVar15,uVar26,puVar21,puVar28);\n    iVar9 = *(int *)(puVar36 + -0x58);\n    iVar12 = *(int *)(puVar36 + -0x68);\n    iVar32 = *(int *)(puVar36 + -0x54);\n    if ((iVar7 + (int)puVar28 < iVar9) && (iVar7 != iVar9 - (int)puVar28)) {\n      iVar11 = (iVar9 - (int)puVar28) - iVar7;\n      puVar25 = puVar4 + (int)(iVar7 + (int)puVar28);\n      do {\n        iVar11 = iVar11 + -1;\n        *puVar25 = 0;\n        puVar25 = puVar25 + 1;\n      } while (iVar11 != 0);\n    }\n    pcVar34 = *(code **)(iVar12 + -0x7b2c);\n    if (iVar32 + (int)puVar28 < iVar9) {\n      if (iVar32 != iVar9 - (int)puVar28) {\n        iVar7 = (iVar9 - (int)puVar28) - iVar32;\n        puVar6 = (undefined4 *)(*(int *)(puVar36 + -0x44) + (int)(iVar32 + (int)puVar28) * 4);\n        do {\n          iVar7 = iVar7 + -1;\n          *puVar6 = 0;\n          puVar6 = puVar6 + 1;\n        } while (iVar7 != 0);\n        pcVar34 = *(code **)(iVar12 + -0x7b2c);\n      }\n    }\n    *(int *)(puVar36 + -0x54) = iVar9;\n    uVar3 = (*pcVar34)(puVar4,puVar4,*(undefined4 *)(puVar36 + -0x44),iVar9);\n    uVar13 = *puVar4;\n    iVar9 = *(int *)(puVar36 + -0x68);\n    uVar39 = *(undefined4 *)(puVar36 + -0x54);\n    *puVar4 = uVar13 - uVar3;\n    puVar25 = puVar4;\n    if (uVar13 < uVar3) {\n      do {\n        puVar25 = puVar25 + 1;\n        uVar3 = *puVar25;\n        *puVar25 = uVar3 - 1;\n      } while (uVar3 == 0);\n    }\n    uVar8 = *(undefined4 *)(iVar24 + 0x10);\n    pcVar34 = *(code **)(iVar9 + -0x7cd8);\n    uVar15 = *(undefined4 *)(puVar36 + -0x44);\n    *(undefined4 *)(puVar36 + -0x54) = uVar39;\n    *(undefined4 *)(puVar38 + 0x18) = *(undefined4 *)(puVar36 + -0x48);\n    *(int *)(puVar38 + 0x14) = iVar22;\n    *(undefined4 *)(puVar38 + 0x10) = uVar8;\n    (*pcVar34)(uVar15,uVar39,puVar17,puVar28);\n    iVar9 = *(int *)(puVar36 + -0x68);\n    uVar39 = *(undefined4 *)(puVar36 + -0x54);\n    if (puVar29 != (uint *)0x0) {\n      iVar32 = (int)puVar29 + -1;\n      uVar3 = *puVar4;\n      puVar18 = puVar17;\n      puVar25 = puVar4;\n      if (iVar32 == 0) {\n        *puVar17 = uVar3;\n      }\n      else {\n        do {\n          *puVar18 = uVar3;\n          iVar32 = iVar32 + -1;\n          uVar3 = puVar25[1];\n          puVar18 = puVar18 + 1;\n          puVar25 = puVar25 + 1;\n        } while (iVar32 != 0);\n        puVar17[(int)puVar29 + -1] = uVar3;\n      }\n    }\n    uVar8 = *(undefined4 *)(iVar24 + 8);\n    pcVar34 = *(code **)(iVar9 + -0x7cd8);\n    *(undefined4 *)(puVar38 + 0x18) = *(undefined4 *)(puVar36 + -0x48);\n    *(undefined4 *)(puVar36 + -0x48) = uVar39;\n    *(undefined4 *)(puVar38 + 0x10) = uVar8;\n    *(undefined4 *)(puVar38 + 0x14) = *(undefined4 *)(puVar36 + -0x50);\n    (*pcVar34)(puVar4,uVar39,puVar21,puVar28);\n    iVar9 = *(int *)(puVar36 + -0x48);\n    iVar32 = *(int *)(puVar36 + -0x68);\n    if ((int)puVar28 + iVar22 < iVar9) {\n      if (iVar22 != iVar9 - (int)puVar28) {\n        iVar12 = (iVar9 - (int)puVar28) - iVar22;\n        puVar6 = (undefined4 *)(*(int *)(puVar36 + -0x44) + (int)((int)puVar28 + iVar22) * 4);\n        do {\n          iVar12 = iVar12 + -1;\n          *puVar6 = 0;\n          puVar6 = puVar6 + 1;\n        } while (iVar12 != 0);\n      }\n    }\n    pcVar34 = *(code **)(iVar32 + -0x7b2c);\n    if (*(int *)(puVar36 + -0x50) + (int)puVar28 < iVar9) {\n      if (*(int *)(puVar36 + -0x50) != iVar9 - (int)puVar28) {\n        iVar22 = (iVar9 - (int)puVar28) - *(int *)(puVar36 + -0x50);\n        puVar28 = puVar4 + (int)(*(int *)(puVar36 + -0x50) + (int)puVar28);\n        do {\n          iVar22 = iVar22 + -1;\n          *puVar28 = 0;\n          puVar28 = puVar28 + 1;\n        } while (iVar22 != 0);\n        pcVar34 = *(code **)(iVar32 + -0x7b2c);\n      }\n    }\n    uVar3 = (*pcVar34)(puVar4,puVar4,*(undefined4 *)(puVar36 + -0x44),iVar9);\n    uVar13 = *puVar4;\n    iVar9 = *(int *)(puVar36 + -0x68);\n    puVar18 = (uint *)(uVar13 - uVar3);\n    *puVar4 = (uint)puVar18;\n    puVar28 = puVar4;\n    if (uVar13 < uVar3) {\n      do {\n        puVar28 = puVar28 + 1;\n        uVar3 = *puVar28;\n        puVar18 = (uint *)(uVar3 - 1);\n        *puVar28 = (uint)puVar18;\n      } while (uVar3 == 0);\n    }\n    iVar32 = (int)puVar29 + -1;\n    if (puVar29 == (uint *)0x0) {\n      iVar32 = -4;\n    }\n    else {\n      puVar18 = (uint *)*puVar4;\n      puVar28 = puVar21;\n      if (iVar32 != 0) {\n        do {\n          puVar4 = puVar4 + 1;\n          *puVar28 = (uint)puVar18;\n          iVar32 = iVar32 + -1;\n          puVar18 = (uint *)*puVar4;\n          puVar28 = puVar28 + 1;\n        } while (iVar32 != 0);\n        puVar28 = puVar21 + (int)puVar29 + -1;\n      }\n      *puVar28 = (uint)puVar18;\n      iVar32 = (int)puVar29 * 4 + -4;\n    }\n    puVar37 = puVar38;\n    if (*(int *)((int)puVar17 + iVar32) != 0 || *(int *)((int)puVar21 + iVar32) != 0)\n    goto LAB_000530b4;\n    puVar17 = puVar17 + (int)puVar29 + -2;\n    puVar21 = puVar21 + (int)puVar29 + -2;\n    do {\n      uVar3 = *puVar17;\n      puVar29 = (uint *)((int)puVar29 + -1);\n      uVar13 = *puVar21;\n      puVar17 = puVar17 + -1;\n      puVar21 = puVar21 + -1;\n    } while (uVar3 == 0 && uVar13 == 0);\n    piVar30 = *(int **)(puVar36 + -0x4c);\n    if (*(int *)(puVar36 + -0x40) == 0) goto LAB_000530c4;\n    pcVar34 = *(code **)(iVar9 + -0x7a2c);\nLAB_00053478:\n    (*pcVar34)();\n    iVar9 = *(int *)(puVar36 + -0x68);\n    puVar38 = puVar37;\n  }" (else "else") (compound_statement "{\n    if (iVar22 == 0) {\n      uVar39 = *(undefined4 *)(iVar24 + 0xc);\n      *(int *)(puVar36 + -0x74) = iVar9;\n      *(undefined4 *)(puVar36 + -0x78) = uVar39;\n      puVar28 = puVar17;\n      puVar18 = puVar25;\n      puVar4 = puVar21;\n      puVar25 = puVar29;\n      goto LAB_0005309c;\n    }\n    iVar7 = *(int *)(puVar36 + -0x30);\n    pcVar34 = *(code **)(pcVar34 + 0x4454c);\n    iVar12 = (int)puVar25 - *(int *)(puVar36 + -0x3c);\n    *(int *)(puVar36 + -0x50) = *(int *)(puVar36 + -0x3c);\n    *(int *)(puVar36 + -0x44) = iVar9;\n    if ((int)puVar29 - iVar22 <= iVar12) {\n      iVar12 = (int)puVar29 - iVar22;\n    }\n    iVar11 = (int)puVar25 - iVar9;\n    if ((int)puVar29 - iVar7 <= (int)puVar25 - iVar9) {\n      iVar11 = (int)puVar29 - iVar7;\n    }\n    puVar29 = (uint *)(iVar11 + 1);\n    if (iVar11 + 1 <= iVar12 + 1) {\n      puVar29 = (uint *)(iVar12 + 1);\n    }\n    puVar25 = (uint *)(*pcVar34)((int)puVar29 + 1);\n    iVar9 = (int)puVar25 >> 1;\n    iVar12 = *(int *)(puVar36 + -0x68);\n    uVar39 = *(undefined4 *)(puVar36 + -0x44);\n    if (iVar9 < (int)puVar25) {\n      if (iVar32 <= iVar9) {\n        uVar13 = ((int)puVar25 * 3 + iVar9 + 4) * 4;\n        uVar3 = uVar13 + 7;\n        if (0x7f00 < uVar13) {\n          pcVar34 = *(code **)(iVar12 + -0x7d50);\n          goto LAB_0005305c;\n        }\n        goto LAB_00053148;\n      }\n      uVar13 = ((int)puVar25 * 4 + 4) * 4;\n      uVar3 = uVar13 + 7;\n      if (uVar13 < 0x7f01) goto LAB_00053148;\n      pcVar34 = *(code **)(iVar12 + -0x7d50);\nLAB_0005305c:\n      *(uint **)(puVar36 + -0x48) = puVar25;\n      *(undefined4 *)(puVar36 + -0x44) = uVar39;\n      puVar4 = (uint *)(*pcVar34)(puVar36 + -0x40);\n      iVar12 = *(int *)(puVar36 + -0x68);\n      puVar25 = *(uint **)(puVar36 + -0x48);\n      uVar39 = *(undefined4 *)(puVar36 + -0x44);\n    }\n    else {\n      uVar3 = ((int)puVar25 * 3 + 4) * 4;\n      pcVar34 = *(code **)(iVar12 + -0x7d50);\n      if (0x7f00 < uVar3) goto LAB_0005305c;\n      uVar3 = uVar3 + 7;\nLAB_00053148:\n      puVar38 = puVar36 + -(uVar3 & 0xfffffff8) + -0x88;\n      puVar4 = (uint *)(puVar36 + -(uVar3 & 0xfffffff8) + -0x68);\n    }\n    *(uint **)(puVar36 + -0x44) = puVar4 + (int)puVar25;\n    *(uint **)(puVar36 + -0x48) = puVar4 + (int)puVar25 + (int)puVar25;\n    if ((int)puVar25 < (int)puVar28) {\n      pcVar34 = *(code **)(iVar12 + -0x7d0c);\n      puVar18 = (uint *)((int)puVar28 - (int)puVar25);\n      *(undefined4 *)(puVar36 + -0x5c) = uVar39;\n      *(uint **)(puVar36 + -0x58) = puVar25;\n      *(int *)(puVar36 + -0x54) = (int)puVar25 * 4;\n      iVar9 = (*pcVar34)(puVar17,puVar17,puVar17 + (int)puVar25,puVar18);\n      iVar12 = *(int *)(puVar36 + -0x68);\n      iVar32 = *(int *)(puVar36 + -0x54);\n      puVar28 = *(uint **)(puVar36 + -0x58);\n      uVar39 = *(undefined4 *)(puVar36 + -0x5c);\n      if (iVar9 == 0) {\nLAB_0005359c:\n        pcVar34 = *(code **)(iVar12 + -0x7d0c);\n      }\n      else {\n        puVar25 = puVar17;\n        if ((int)puVar28 <= (int)puVar18) {\nLAB_00053588:\n          do {\n            uVar3 = *puVar25;\n            *puVar25 = uVar3 + 1;\n            puVar25 = puVar25 + 1;\n          } while (uVar3 + 1 == 0);\n          goto LAB_0005359c;\n        }\n        puVar31 = puVar17 + (int)puVar18;\n        uVar3 = *puVar31;\n        *puVar31 = uVar3 + 1;\n        puVar19 = puVar18;\n        if (uVar3 + 1 == 0) {\n          do {\n            puVar19 = (uint *)((int)puVar19 + 1);\n            if (puVar28 == puVar19) goto LAB_00053588;\n            uVar3 = puVar31[1];\n            puVar31 = puVar31 + 1;\n            *puVar31 = uVar3 + 1;\n          } while (uVar3 + 1 == 0);\n          goto LAB_0005359c;\n        }\n        pcVar34 = *(code **)(iVar12 + -0x7d0c);\n      }\n      *(uint **)(puVar36 + -0x58) = puVar28;\n      *(undefined4 *)(puVar36 + -0x54) = uVar39;\n      iVar9 = (*pcVar34)(puVar21,puVar21,(int)puVar21 + iVar32,puVar18);\n      iVar12 = *(int *)(puVar36 + -0x68);\n      uVar39 = *(undefined4 *)(puVar36 + -0x54);\n      puVar25 = *(uint **)(puVar36 + -0x58);\n      puVar28 = puVar25;\n      if (iVar9 != 0) {\n        puVar19 = puVar21;\n        if ((int)puVar18 < (int)puVar25) {\n          puVar31 = puVar21 + (int)puVar18;\n          uVar3 = *puVar31 + 1;\n          *puVar31 = uVar3;\n          while (uVar3 == 0) {\n            puVar18 = (uint *)((int)puVar18 + 1);\n            if (puVar25 == puVar18) goto LAB_0005361c;\n            puVar5 = puVar31 + 1;\n            puVar31 = puVar31 + 1;\n            uVar3 = *puVar5 + 1;\n            *puVar31 = uVar3;\n          }\n        }\n        else {\nLAB_0005361c:\n          do {\n            uVar3 = *puVar19;\n            *puVar19 = uVar3 + 1;\n            puVar19 = puVar19 + 1;\n          } while (uVar3 + 1 == 0);\n        }\n      }\n    }\n    uVar8 = *(undefined4 *)(iVar24 + 0x14);\n    pcVar34 = *(code **)(iVar12 + -0x7cd8);\n    *(undefined4 *)(puVar36 + -0x5c) = uVar39;\n    *(uint **)(puVar36 + -0x54) = puVar25;\n    *(undefined4 *)(puVar38 + 0x18) = *(undefined4 *)(puVar36 + -0x48);\n    *(undefined4 *)(puVar38 + 0x10) = uVar8;\n    *(int *)(puVar38 + 0x14) = iVar7;\n    (*pcVar34)(puVar4,puVar25,puVar17,puVar28);\n    uVar39 = *(undefined4 *)(iVar24 + 0xc);\n    uVar26 = *(undefined4 *)(puVar36 + -0x54);\n    uVar27 = *(undefined4 *)(puVar36 + -0x5c);\n    uVar8 = *(undefined4 *)(puVar36 + -0x48);\n    pcVar34 = *(code **)(*(int *)(puVar36 + -0x68) + -0x7cd8);\n    uVar15 = *(undefined4 *)(puVar36 + -0x44);\n    *(undefined4 *)(puVar36 + -0x58) = uVar26;\n    *(undefined4 *)(puVar38 + 0x14) = uVar27;\n    *(undefined4 *)(puVar36 + -0x54) = uVar27;\n    *(undefined4 *)(puVar38 + 0x10) = uVar39;\n    *(undefined4 *)(puVar38 + 0x18) = uVar8;\n    (*pcVar34)(uVar15,uVar26,puVar21,puVar28);\n    iVar9 = *(int *)(puVar36 + -0x58);\n    iVar12 = *(int *)(puVar36 + -0x68);\n    iVar32 = *(int *)(puVar36 + -0x54);\n    if ((iVar7 + (int)puVar28 < iVar9) && (iVar7 != iVar9 - (int)puVar28)) {\n      iVar11 = (iVar9 - (int)puVar28) - iVar7;\n      puVar25 = puVar4 + (int)(iVar7 + (int)puVar28);\n      do {\n        iVar11 = iVar11 + -1;\n        *puVar25 = 0;\n        puVar25 = puVar25 + 1;\n      } while (iVar11 != 0);\n    }\n    pcVar34 = *(code **)(iVar12 + -0x7b2c);\n    if (iVar32 + (int)puVar28 < iVar9) {\n      if (iVar32 != iVar9 - (int)puVar28) {\n        iVar7 = (iVar9 - (int)puVar28) - iVar32;\n        puVar6 = (undefined4 *)(*(int *)(puVar36 + -0x44) + (int)(iVar32 + (int)puVar28) * 4);\n        do {\n          iVar7 = iVar7 + -1;\n          *puVar6 = 0;\n          puVar6 = puVar6 + 1;\n        } while (iVar7 != 0);\n        pcVar34 = *(code **)(iVar12 + -0x7b2c);\n      }\n    }\n    *(int *)(puVar36 + -0x54) = iVar9;\n    uVar3 = (*pcVar34)(puVar4,puVar4,*(undefined4 *)(puVar36 + -0x44),iVar9);\n    uVar13 = *puVar4;\n    iVar9 = *(int *)(puVar36 + -0x68);\n    uVar39 = *(undefined4 *)(puVar36 + -0x54);\n    *puVar4 = uVar13 - uVar3;\n    puVar25 = puVar4;\n    if (uVar13 < uVar3) {\n      do {\n        puVar25 = puVar25 + 1;\n        uVar3 = *puVar25;\n        *puVar25 = uVar3 - 1;\n      } while (uVar3 == 0);\n    }\n    uVar8 = *(undefined4 *)(iVar24 + 0x10);\n    pcVar34 = *(code **)(iVar9 + -0x7cd8);\n    uVar15 = *(undefined4 *)(puVar36 + -0x44);\n    *(undefined4 *)(puVar36 + -0x54) = uVar39;\n    *(undefined4 *)(puVar38 + 0x18) = *(undefined4 *)(puVar36 + -0x48);\n    *(int *)(puVar38 + 0x14) = iVar22;\n    *(undefined4 *)(puVar38 + 0x10) = uVar8;\n    (*pcVar34)(uVar15,uVar39,puVar17,puVar28);\n    iVar9 = *(int *)(puVar36 + -0x68);\n    uVar39 = *(undefined4 *)(puVar36 + -0x54);\n    if (puVar29 != (uint *)0x0) {\n      iVar32 = (int)puVar29 + -1;\n      uVar3 = *puVar4;\n      puVar18 = puVar17;\n      puVar25 = puVar4;\n      if (iVar32 == 0) {\n        *puVar17 = uVar3;\n      }\n      else {\n        do {\n          *puVar18 = uVar3;\n          iVar32 = iVar32 + -1;\n          uVar3 = puVar25[1];\n          puVar18 = puVar18 + 1;\n          puVar25 = puVar25 + 1;\n        } while (iVar32 != 0);\n        puVar17[(int)puVar29 + -1] = uVar3;\n      }\n    }\n    uVar8 = *(undefined4 *)(iVar24 + 8);\n    pcVar34 = *(code **)(iVar9 + -0x7cd8);\n    *(undefined4 *)(puVar38 + 0x18) = *(undefined4 *)(puVar36 + -0x48);\n    *(undefined4 *)(puVar36 + -0x48) = uVar39;\n    *(undefined4 *)(puVar38 + 0x10) = uVar8;\n    *(undefined4 *)(puVar38 + 0x14) = *(undefined4 *)(puVar36 + -0x50);\n    (*pcVar34)(puVar4,uVar39,puVar21,puVar28);\n    iVar9 = *(int *)(puVar36 + -0x48);\n    iVar32 = *(int *)(puVar36 + -0x68);\n    if ((int)puVar28 + iVar22 < iVar9) {\n      if (iVar22 != iVar9 - (int)puVar28) {\n        iVar12 = (iVar9 - (int)puVar28) - iVar22;\n        puVar6 = (undefined4 *)(*(int *)(puVar36 + -0x44) + (int)((int)puVar28 + iVar22) * 4);\n        do {\n          iVar12 = iVar12 + -1;\n          *puVar6 = 0;\n          puVar6 = puVar6 + 1;\n        } while (iVar12 != 0);\n      }\n    }\n    pcVar34 = *(code **)(iVar32 + -0x7b2c);\n    if (*(int *)(puVar36 + -0x50) + (int)puVar28 < iVar9) {\n      if (*(int *)(puVar36 + -0x50) != iVar9 - (int)puVar28) {\n        iVar22 = (iVar9 - (int)puVar28) - *(int *)(puVar36 + -0x50);\n        puVar28 = puVar4 + (int)(*(int *)(puVar36 + -0x50) + (int)puVar28);\n        do {\n          iVar22 = iVar22 + -1;\n          *puVar28 = 0;\n          puVar28 = puVar28 + 1;\n        } while (iVar22 != 0);\n        pcVar34 = *(code **)(iVar32 + -0x7b2c);\n      }\n    }\n    uVar3 = (*pcVar34)(puVar4,puVar4,*(undefined4 *)(puVar36 + -0x44),iVar9);\n    uVar13 = *puVar4;\n    iVar9 = *(int *)(puVar36 + -0x68);\n    puVar18 = (uint *)(uVar13 - uVar3);\n    *puVar4 = (uint)puVar18;\n    puVar28 = puVar4;\n    if (uVar13 < uVar3) {\n      do {\n        puVar28 = puVar28 + 1;\n        uVar3 = *puVar28;\n        puVar18 = (uint *)(uVar3 - 1);\n        *puVar28 = (uint)puVar18;\n      } while (uVar3 == 0);\n    }\n    iVar32 = (int)puVar29 + -1;\n    if (puVar29 == (uint *)0x0) {\n      iVar32 = -4;\n    }\n    else {\n      puVar18 = (uint *)*puVar4;\n      puVar28 = puVar21;\n      if (iVar32 != 0) {\n        do {\n          puVar4 = puVar4 + 1;\n          *puVar28 = (uint)puVar18;\n          iVar32 = iVar32 + -1;\n          puVar18 = (uint *)*puVar4;\n          puVar28 = puVar28 + 1;\n        } while (iVar32 != 0);\n        puVar28 = puVar21 + (int)puVar29 + -1;\n      }\n      *puVar28 = (uint)puVar18;\n      iVar32 = (int)puVar29 * 4 + -4;\n    }\n    puVar37 = puVar38;\n    if (*(int *)((int)puVar17 + iVar32) != 0 || *(int *)((int)puVar21 + iVar32) != 0)\n    goto LAB_000530b4;\n    puVar17 = puVar17 + (int)puVar29 + -2;\n    puVar21 = puVar21 + (int)puVar29 + -2;\n    do {\n      uVar3 = *puVar17;\n      puVar29 = (uint *)((int)puVar29 + -1);\n      uVar13 = *puVar21;\n      puVar17 = puVar17 + -1;\n      puVar21 = puVar21 + -1;\n    } while (uVar3 == 0 && uVar13 == 0);\n    piVar30 = *(int **)(puVar36 + -0x4c);\n    if (*(int *)(puVar36 + -0x40) == 0) goto LAB_000530c4;\n    pcVar34 = *(code **)(iVar9 + -0x7a2c);\nLAB_00053478:\n    (*pcVar34)();\n    iVar9 = *(int *)(puVar36 + -0x68);\n    puVar38 = puVar37;\n  }" ({ "{") (if_statement "if (iVar22 == 0) {\n      uVar39 = *(undefined4 *)(iVar24 + 0xc);\n      *(int *)(puVar36 + -0x74) = iVar9;\n      *(undefined4 *)(puVar36 + -0x78) = uVar39;\n      puVar28 = puVar17;\n      puVar18 = puVar25;\n      puVar4 = puVar21;\n      puVar25 = puVar29;\n      goto LAB_0005309c;\n    }" (if "if") (parenthesized_expression "(iVar22 == 0)" (( "(") (binary_expression "iVar22 == 0" (identifier "iVar22") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      uVar39 = *(undefined4 *)(iVar24 + 0xc);\n      *(int *)(puVar36 + -0x74) = iVar9;\n      *(undefined4 *)(puVar36 + -0x78) = uVar39;\n      puVar28 = puVar17;\n      puVar18 = puVar25;\n      puVar4 = puVar21;\n      puVar25 = puVar29;\n      goto LAB_0005309c;\n    }" ({ "{") (expression_statement "uVar39 = *(undefined4 *)(iVar24 + 0xc);" (assignment_expression "uVar39 = *(undefined4 *)(iVar24 + 0xc)" (identifier "uVar39") (= "=") (pointer_expression "*(undefined4 *)(iVar24 + 0xc)" (* "*") (cast_expression "(undefined4 *)(iVar24 + 0xc)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar24 + 0xc)" (( "(") (binary_expression "iVar24 + 0xc" (identifier "iVar24") (+ "+") (number_literal "0xc")) () ")"))))) (; ";")) (expression_statement "*(int *)(puVar36 + -0x74) = iVar9;" (assignment_expression "*(int *)(puVar36 + -0x74) = iVar9" (pointer_expression "*(int *)(puVar36 + -0x74)" (* "*") (cast_expression "(int *)(puVar36 + -0x74)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar36 + -0x74)" (( "(") (binary_expression "puVar36 + -0x74" (identifier "puVar36") (+ "+") (number_literal "-0x74")) () ")")))) (= "=") (identifier "iVar9")) (; ";")) (expression_statement "*(undefined4 *)(puVar36 + -0x78) = uVar39;" (assignment_expression "*(undefined4 *)(puVar36 + -0x78) = uVar39" (pointer_expression "*(undefined4 *)(puVar36 + -0x78)" (* "*") (cast_expression "(undefined4 *)(puVar36 + -0x78)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar36 + -0x78)" (( "(") (binary_expression "puVar36 + -0x78" (identifier "puVar36") (+ "+") (number_literal "-0x78")) () ")")))) (= "=") (identifier "uVar39")) (; ";")) (expression_statement "puVar28 = puVar17;" (assignment_expression "puVar28 = puVar17" (identifier "puVar28") (= "=") (identifier "puVar17")) (; ";")) (expression_statement "puVar18 = puVar25;" (assignment_expression "puVar18 = puVar25" (identifier "puVar18") (= "=") (identifier "puVar25")) (; ";")) (expression_statement "puVar4 = puVar21;" (assignment_expression "puVar4 = puVar21" (identifier "puVar4") (= "=") (identifier "puVar21")) (; ";")) (expression_statement "puVar25 = puVar29;" (assignment_expression "puVar25 = puVar29" (identifier "puVar25") (= "=") (identifier "puVar29")) (; ";")) (goto_statement "goto LAB_0005309c;" (goto "goto") (statement_identifier "LAB_0005309c") (; ";")) (} "}"))) (expression_statement "iVar7 = *(int *)(puVar36 + -0x30);" (assignment_expression "iVar7 = *(int *)(puVar36 + -0x30)" (identifier "iVar7") (= "=") (pointer_expression "*(int *)(puVar36 + -0x30)" (* "*") (cast_expression "(int *)(puVar36 + -0x30)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar36 + -0x30)" (( "(") (binary_expression "puVar36 + -0x30" (identifier "puVar36") (+ "+") (number_literal "-0x30")) () ")"))))) (; ";")) (expression_statement "pcVar34 = *(code **)(pcVar34 + 0x4454c);" (assignment_expression "pcVar34 = *(code **)(pcVar34 + 0x4454c)" (identifier "pcVar34") (= "=") (pointer_expression "*(code **)(pcVar34 + 0x4454c)" (* "*") (cast_expression "(code **)(pcVar34 + 0x4454c)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(pcVar34 + 0x4454c)" (( "(") (binary_expression "pcVar34 + 0x4454c" (identifier "pcVar34") (+ "+") (number_literal "0x4454c")) () ")"))))) (; ";")) (expression_statement "iVar12 = (int)puVar25 - *(int *)(puVar36 + -0x3c);" (assignment_expression "iVar12 = (int)puVar25 - *(int *)(puVar36 + -0x3c)" (identifier "iVar12") (= "=") (binary_expression "(int)puVar25 - *(int *)(puVar36 + -0x3c)" (cast_expression "(int)puVar25" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar25")) (- "-") (pointer_expression "*(int *)(puVar36 + -0x3c)" (* "*") (cast_expression "(int *)(puVar36 + -0x3c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar36 + -0x3c)" (( "(") (binary_expression "puVar36 + -0x3c" (identifier "puVar36") (+ "+") (number_literal "-0x3c")) () ")")))))) (; ";")) (expression_statement "*(int *)(puVar36 + -0x50) = *(int *)(puVar36 + -0x3c);" (assignment_expression "*(int *)(puVar36 + -0x50) = *(int *)(puVar36 + -0x3c)" (pointer_expression "*(int *)(puVar36 + -0x50)" (* "*") (cast_expression "(int *)(puVar36 + -0x50)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar36 + -0x50)" (( "(") (binary_expression "puVar36 + -0x50" (identifier "puVar36") (+ "+") (number_literal "-0x50")) () ")")))) (= "=") (pointer_expression "*(int *)(puVar36 + -0x3c)" (* "*") (cast_expression "(int *)(puVar36 + -0x3c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar36 + -0x3c)" (( "(") (binary_expression "puVar36 + -0x3c" (identifier "puVar36") (+ "+") (number_literal "-0x3c")) () ")"))))) (; ";")) (expression_statement "*(int *)(puVar36 + -0x44) = iVar9;" (assignment_expression "*(int *)(puVar36 + -0x44) = iVar9" (pointer_expression "*(int *)(puVar36 + -0x44)" (* "*") (cast_expression "(int *)(puVar36 + -0x44)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar36 + -0x44)" (( "(") (binary_expression "puVar36 + -0x44" (identifier "puVar36") (+ "+") (number_literal "-0x44")) () ")")))) (= "=") (identifier "iVar9")) (; ";")) (if_statement "if ((int)puVar29 - iVar22 <= iVar12) {\n      iVar12 = (int)puVar29 - iVar22;\n    }" (if "if") (parenthesized_expression "((int)puVar29 - iVar22 <= iVar12)" (( "(") (binary_expression "(int)puVar29 - iVar22 <= iVar12" (binary_expression "(int)puVar29 - iVar22" (cast_expression "(int)puVar29" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar29")) (- "-") (identifier "iVar22")) (<= "<=") (identifier "iVar12")) () ")")) (compound_statement "{\n      iVar12 = (int)puVar29 - iVar22;\n    }" ({ "{") (expression_statement "iVar12 = (int)puVar29 - iVar22;" (assignment_expression "iVar12 = (int)puVar29 - iVar22" (identifier "iVar12") (= "=") (binary_expression "(int)puVar29 - iVar22" (cast_expression "(int)puVar29" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar29")) (- "-") (identifier "iVar22"))) (; ";")) (} "}"))) (expression_statement "iVar11 = (int)puVar25 - iVar9;" (assignment_expression "iVar11 = (int)puVar25 - iVar9" (identifier "iVar11") (= "=") (binary_expression "(int)puVar25 - iVar9" (cast_expression "(int)puVar25" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar25")) (- "-") (identifier "iVar9"))) (; ";")) (if_statement "if ((int)puVar29 - iVar7 <= (int)puVar25 - iVar9) {\n      iVar11 = (int)puVar29 - iVar7;\n    }" (if "if") (parenthesized_expression "((int)puVar29 - iVar7 <= (int)puVar25 - iVar9)" (( "(") (binary_expression "(int)puVar29 - iVar7 <= (int)puVar25 - iVar9" (binary_expression "(int)puVar29 - iVar7" (cast_expression "(int)puVar29" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar29")) (- "-") (identifier "iVar7")) (<= "<=") (binary_expression "(int)puVar25 - iVar9" (cast_expression "(int)puVar25" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar25")) (- "-") (identifier "iVar9"))) () ")")) (compound_statement "{\n      iVar11 = (int)puVar29 - iVar7;\n    }" ({ "{") (expression_statement "iVar11 = (int)puVar29 - iVar7;" (assignment_expression "iVar11 = (int)puVar29 - iVar7" (identifier "iVar11") (= "=") (binary_expression "(int)puVar29 - iVar7" (cast_expression "(int)puVar29" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar29")) (- "-") (identifier "iVar7"))) (; ";")) (} "}"))) (expression_statement "puVar29 = (uint *)(iVar11 + 1);" (assignment_expression "puVar29 = (uint *)(iVar11 + 1)" (identifier "puVar29") (= "=") (cast_expression "(uint *)(iVar11 + 1)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar11 + 1)" (( "(") (binary_expression "iVar11 + 1" (identifier "iVar11") (+ "+") (number_literal "1")) () ")")))) (; ";")) (if_statement "if (iVar11 + 1 <= iVar12 + 1) {\n      puVar29 = (uint *)(iVar12 + 1);\n    }" (if "if") (parenthesized_expression "(iVar11 + 1 <= iVar12 + 1)" (( "(") (binary_expression "iVar11 + 1 <= iVar12 + 1" (binary_expression "iVar11 + 1" (identifier "iVar11") (+ "+") (number_literal "1")) (<= "<=") (binary_expression "iVar12 + 1" (identifier "iVar12") (+ "+") (number_literal "1"))) () ")")) (compound_statement "{\n      puVar29 = (uint *)(iVar12 + 1);\n    }" ({ "{") (expression_statement "puVar29 = (uint *)(iVar12 + 1);" (assignment_expression "puVar29 = (uint *)(iVar12 + 1)" (identifier "puVar29") (= "=") (cast_expression "(uint *)(iVar12 + 1)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar12 + 1)" (( "(") (binary_expression "iVar12 + 1" (identifier "iVar12") (+ "+") (number_literal "1")) () ")")))) (; ";")) (} "}"))) (expression_statement "puVar25 = (uint *)(*pcVar34)((int)puVar29 + 1);" (assignment_expression "puVar25 = (uint *)(*pcVar34)((int)puVar29 + 1)" (identifier "puVar25") (= "=") (cast_expression "(uint *)(*pcVar34)((int)puVar29 + 1)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "(*pcVar34)((int)puVar29 + 1)" (parenthesized_expression "(*pcVar34)" (( "(") (pointer_expression "*pcVar34" (* "*") (identifier "pcVar34")) () ")")) (argument_list "((int)puVar29 + 1)" (( "(") (binary_expression "(int)puVar29 + 1" (cast_expression "(int)puVar29" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar29")) (+ "+") (number_literal "1")) () ")"))))) (; ";")) (expression_statement "iVar9 = (int)puVar25 >> 1;" (assignment_expression "iVar9 = (int)puVar25 >> 1" (identifier "iVar9") (= "=") (binary_expression "(int)puVar25 >> 1" (cast_expression "(int)puVar25" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar25")) (>> ">>") (number_literal "1"))) (; ";")) (expression_statement "iVar12 = *(int *)(puVar36 + -0x68);" (assignment_expression "iVar12 = *(int *)(puVar36 + -0x68)" (identifier "iVar12") (= "=") (pointer_expression "*(int *)(puVar36 + -0x68)" (* "*") (cast_expression "(int *)(puVar36 + -0x68)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar36 + -0x68)" (( "(") (binary_expression "puVar36 + -0x68" (identifier "puVar36") (+ "+") (number_literal "-0x68")) () ")"))))) (; ";")) (expression_statement "uVar39 = *(undefined4 *)(puVar36 + -0x44);" (assignment_expression "uVar39 = *(undefined4 *)(puVar36 + -0x44)" (identifier "uVar39") (= "=") (pointer_expression "*(undefined4 *)(puVar36 + -0x44)" (* "*") (cast_expression "(undefined4 *)(puVar36 + -0x44)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar36 + -0x44)" (( "(") (binary_expression "puVar36 + -0x44" (identifier "puVar36") (+ "+") (number_literal "-0x44")) () ")"))))) (; ";")) (if_statement "if (iVar9 < (int)puVar25) {\n      if (iVar32 <= iVar9) {\n        uVar13 = ((int)puVar25 * 3 + iVar9 + 4) * 4;\n        uVar3 = uVar13 + 7;\n        if (0x7f00 < uVar13) {\n          pcVar34 = *(code **)(iVar12 + -0x7d50);\n          goto LAB_0005305c;\n        }\n        goto LAB_00053148;\n      }\n      uVar13 = ((int)puVar25 * 4 + 4) * 4;\n      uVar3 = uVar13 + 7;\n      if (uVar13 < 0x7f01) goto LAB_00053148;\n      pcVar34 = *(code **)(iVar12 + -0x7d50);\nLAB_0005305c:\n      *(uint **)(puVar36 + -0x48) = puVar25;\n      *(undefined4 *)(puVar36 + -0x44) = uVar39;\n      puVar4 = (uint *)(*pcVar34)(puVar36 + -0x40);\n      iVar12 = *(int *)(puVar36 + -0x68);\n      puVar25 = *(uint **)(puVar36 + -0x48);\n      uVar39 = *(undefined4 *)(puVar36 + -0x44);\n    }\n    else {\n      uVar3 = ((int)puVar25 * 3 + 4) * 4;\n      pcVar34 = *(code **)(iVar12 + -0x7d50);\n      if (0x7f00 < uVar3) goto LAB_0005305c;\n      uVar3 = uVar3 + 7;\nLAB_00053148:\n      puVar38 = puVar36 + -(uVar3 & 0xfffffff8) + -0x88;\n      puVar4 = (uint *)(puVar36 + -(uVar3 & 0xfffffff8) + -0x68);\n    }" (if "if") (parenthesized_expression "(iVar9 < (int)puVar25)" (( "(") (binary_expression "iVar9 < (int)puVar25" (identifier "iVar9") (< "<") (cast_expression "(int)puVar25" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar25"))) () ")")) (compound_statement "{\n      if (iVar32 <= iVar9) {\n        uVar13 = ((int)puVar25 * 3 + iVar9 + 4) * 4;\n        uVar3 = uVar13 + 7;\n        if (0x7f00 < uVar13) {\n          pcVar34 = *(code **)(iVar12 + -0x7d50);\n          goto LAB_0005305c;\n        }\n        goto LAB_00053148;\n      }\n      uVar13 = ((int)puVar25 * 4 + 4) * 4;\n      uVar3 = uVar13 + 7;\n      if (uVar13 < 0x7f01) goto LAB_00053148;\n      pcVar34 = *(code **)(iVar12 + -0x7d50);\nLAB_0005305c:\n      *(uint **)(puVar36 + -0x48) = puVar25;\n      *(undefined4 *)(puVar36 + -0x44) = uVar39;\n      puVar4 = (uint *)(*pcVar34)(puVar36 + -0x40);\n      iVar12 = *(int *)(puVar36 + -0x68);\n      puVar25 = *(uint **)(puVar36 + -0x48);\n      uVar39 = *(undefined4 *)(puVar36 + -0x44);\n    }" ({ "{") (if_statement "if (iVar32 <= iVar9) {\n        uVar13 = ((int)puVar25 * 3 + iVar9 + 4) * 4;\n        uVar3 = uVar13 + 7;\n        if (0x7f00 < uVar13) {\n          pcVar34 = *(code **)(iVar12 + -0x7d50);\n          goto LAB_0005305c;\n        }\n        goto LAB_00053148;\n      }" (if "if") (parenthesized_expression "(iVar32 <= iVar9)" (( "(") (binary_expression "iVar32 <= iVar9" (identifier "iVar32") (<= "<=") (identifier "iVar9")) () ")")) (compound_statement "{\n        uVar13 = ((int)puVar25 * 3 + iVar9 + 4) * 4;\n        uVar3 = uVar13 + 7;\n        if (0x7f00 < uVar13) {\n          pcVar34 = *(code **)(iVar12 + -0x7d50);\n          goto LAB_0005305c;\n        }\n        goto LAB_00053148;\n      }" ({ "{") (expression_statement "uVar13 = ((int)puVar25 * 3 + iVar9 + 4) * 4;" (assignment_expression "uVar13 = ((int)puVar25 * 3 + iVar9 + 4) * 4" (identifier "uVar13") (= "=") (binary_expression "((int)puVar25 * 3 + iVar9 + 4) * 4" (parenthesized_expression "((int)puVar25 * 3 + iVar9 + 4)" (( "(") (binary_expression "(int)puVar25 * 3 + iVar9 + 4" (binary_expression "(int)puVar25 * 3 + iVar9" (binary_expression "(int)puVar25 * 3" (cast_expression "(int)puVar25" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar25")) (* "*") (number_literal "3")) (+ "+") (identifier "iVar9")) (+ "+") (number_literal "4")) () ")")) (* "*") (number_literal "4"))) (; ";")) (expression_statement "uVar3 = uVar13 + 7;" (assignment_expression "uVar3 = uVar13 + 7" (identifier "uVar3") (= "=") (binary_expression "uVar13 + 7" (identifier "uVar13") (+ "+") (number_literal "7"))) (; ";")) (if_statement "if (0x7f00 < uVar13) {\n          pcVar34 = *(code **)(iVar12 + -0x7d50);\n          goto LAB_0005305c;\n        }" (if "if") (parenthesized_expression "(0x7f00 < uVar13)" (( "(") (binary_expression "0x7f00 < uVar13" (number_literal "0x7f00") (< "<") (identifier "uVar13")) () ")")) (compound_statement "{\n          pcVar34 = *(code **)(iVar12 + -0x7d50);\n          goto LAB_0005305c;\n        }" ({ "{") (expression_statement "pcVar34 = *(code **)(iVar12 + -0x7d50);" (assignment_expression "pcVar34 = *(code **)(iVar12 + -0x7d50)" (identifier "pcVar34") (= "=") (pointer_expression "*(code **)(iVar12 + -0x7d50)" (* "*") (cast_expression "(code **)(iVar12 + -0x7d50)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar12 + -0x7d50)" (( "(") (binary_expression "iVar12 + -0x7d50" (identifier "iVar12") (+ "+") (number_literal "-0x7d50")) () ")"))))) (; ";")) (goto_statement "goto LAB_0005305c;" (goto "goto") (statement_identifier "LAB_0005305c") (; ";")) (} "}"))) (goto_statement "goto LAB_00053148;" (goto "goto") (statement_identifier "LAB_00053148") (; ";")) (} "}"))) (expression_statement "uVar13 = ((int)puVar25 * 4 + 4) * 4;" (assignment_expression "uVar13 = ((int)puVar25 * 4 + 4) * 4" (identifier "uVar13") (= "=") (binary_expression "((int)puVar25 * 4 + 4) * 4" (parenthesized_expression "((int)puVar25 * 4 + 4)" (( "(") (binary_expression "(int)puVar25 * 4 + 4" (binary_expression "(int)puVar25 * 4" (cast_expression "(int)puVar25" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar25")) (* "*") (number_literal "4")) (+ "+") (number_literal "4")) () ")")) (* "*") (number_literal "4"))) (; ";")) (expression_statement "uVar3 = uVar13 + 7;" (assignment_expression "uVar3 = uVar13 + 7" (identifier "uVar3") (= "=") (binary_expression "uVar13 + 7" (identifier "uVar13") (+ "+") (number_literal "7"))) (; ";")) (if_statement "if (uVar13 < 0x7f01) goto LAB_00053148;" (if "if") (parenthesized_expression "(uVar13 < 0x7f01)" (( "(") (binary_expression "uVar13 < 0x7f01" (identifier "uVar13") (< "<") (number_literal "0x7f01")) () ")")) (goto_statement "goto LAB_00053148;" (goto "goto") (statement_identifier "LAB_00053148") (; ";"))) (expression_statement "pcVar34 = *(code **)(iVar12 + -0x7d50);" (assignment_expression "pcVar34 = *(code **)(iVar12 + -0x7d50)" (identifier "pcVar34") (= "=") (pointer_expression "*(code **)(iVar12 + -0x7d50)" (* "*") (cast_expression "(code **)(iVar12 + -0x7d50)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar12 + -0x7d50)" (( "(") (binary_expression "iVar12 + -0x7d50" (identifier "iVar12") (+ "+") (number_literal "-0x7d50")) () ")"))))) (; ";")) (labeled_statement "LAB_0005305c:\n      *(uint **)(puVar36 + -0x48) = puVar25;" (statement_identifier "LAB_0005305c") (: ":") (expression_statement "*(uint **)(puVar36 + -0x48) = puVar25;" (assignment_expression "*(uint **)(puVar36 + -0x48) = puVar25" (pointer_expression "*(uint **)(puVar36 + -0x48)" (* "*") (cast_expression "(uint **)(puVar36 + -0x48)" (( "(") (type_descriptor "uint **" (type_identifier "uint") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar36 + -0x48)" (( "(") (binary_expression "puVar36 + -0x48" (identifier "puVar36") (+ "+") (number_literal "-0x48")) () ")")))) (= "=") (identifier "puVar25")) (; ";"))) (expression_statement "*(undefined4 *)(puVar36 + -0x44) = uVar39;" (assignment_expression "*(undefined4 *)(puVar36 + -0x44) = uVar39" (pointer_expression "*(undefined4 *)(puVar36 + -0x44)" (* "*") (cast_expression "(undefined4 *)(puVar36 + -0x44)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar36 + -0x44)" (( "(") (binary_expression "puVar36 + -0x44" (identifier "puVar36") (+ "+") (number_literal "-0x44")) () ")")))) (= "=") (identifier "uVar39")) (; ";")) (expression_statement "puVar4 = (uint *)(*pcVar34)(puVar36 + -0x40);" (assignment_expression "puVar4 = (uint *)(*pcVar34)(puVar36 + -0x40)" (identifier "puVar4") (= "=") (cast_expression "(uint *)(*pcVar34)(puVar36 + -0x40)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "(*pcVar34)(puVar36 + -0x40)" (parenthesized_expression "(*pcVar34)" (( "(") (pointer_expression "*pcVar34" (* "*") (identifier "pcVar34")) () ")")) (argument_list "(puVar36 + -0x40)" (( "(") (binary_expression "puVar36 + -0x40" (identifier "puVar36") (+ "+") (number_literal "-0x40")) () ")"))))) (; ";")) (expression_statement "iVar12 = *(int *)(puVar36 + -0x68);" (assignment_expression "iVar12 = *(int *)(puVar36 + -0x68)" (identifier "iVar12") (= "=") (pointer_expression "*(int *)(puVar36 + -0x68)" (* "*") (cast_expression "(int *)(puVar36 + -0x68)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar36 + -0x68)" (( "(") (binary_expression "puVar36 + -0x68" (identifier "puVar36") (+ "+") (number_literal "-0x68")) () ")"))))) (; ";")) (expression_statement "puVar25 = *(uint **)(puVar36 + -0x48);" (assignment_expression "puVar25 = *(uint **)(puVar36 + -0x48)" (identifier "puVar25") (= "=") (pointer_expression "*(uint **)(puVar36 + -0x48)" (* "*") (cast_expression "(uint **)(puVar36 + -0x48)" (( "(") (type_descriptor "uint **" (type_identifier "uint") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar36 + -0x48)" (( "(") (binary_expression "puVar36 + -0x48" (identifier "puVar36") (+ "+") (number_literal "-0x48")) () ")"))))) (; ";")) (expression_statement "uVar39 = *(undefined4 *)(puVar36 + -0x44);" (assignment_expression "uVar39 = *(undefined4 *)(puVar36 + -0x44)" (identifier "uVar39") (= "=") (pointer_expression "*(undefined4 *)(puVar36 + -0x44)" (* "*") (cast_expression "(undefined4 *)(puVar36 + -0x44)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar36 + -0x44)" (( "(") (binary_expression "puVar36 + -0x44" (identifier "puVar36") (+ "+") (number_literal "-0x44")) () ")"))))) (; ";")) (} "}")) (else_clause "else {\n      uVar3 = ((int)puVar25 * 3 + 4) * 4;\n      pcVar34 = *(code **)(iVar12 + -0x7d50);\n      if (0x7f00 < uVar3) goto LAB_0005305c;\n      uVar3 = uVar3 + 7;\nLAB_00053148:\n      puVar38 = puVar36 + -(uVar3 & 0xfffffff8) + -0x88;\n      puVar4 = (uint *)(puVar36 + -(uVar3 & 0xfffffff8) + -0x68);\n    }" (else "else") (compound_statement "{\n      uVar3 = ((int)puVar25 * 3 + 4) * 4;\n      pcVar34 = *(code **)(iVar12 + -0x7d50);\n      if (0x7f00 < uVar3) goto LAB_0005305c;\n      uVar3 = uVar3 + 7;\nLAB_00053148:\n      puVar38 = puVar36 + -(uVar3 & 0xfffffff8) + -0x88;\n      puVar4 = (uint *)(puVar36 + -(uVar3 & 0xfffffff8) + -0x68);\n    }" ({ "{") (expression_statement "uVar3 = ((int)puVar25 * 3 + 4) * 4;" (assignment_expression "uVar3 = ((int)puVar25 * 3 + 4) * 4" (identifier "uVar3") (= "=") (binary_expression "((int)puVar25 * 3 + 4) * 4" (parenthesized_expression "((int)puVar25 * 3 + 4)" (( "(") (binary_expression "(int)puVar25 * 3 + 4" (binary_expression "(int)puVar25 * 3" (cast_expression "(int)puVar25" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar25")) (* "*") (number_literal "3")) (+ "+") (number_literal "4")) () ")")) (* "*") (number_literal "4"))) (; ";")) (expression_statement "pcVar34 = *(code **)(iVar12 + -0x7d50);" (assignment_expression "pcVar34 = *(code **)(iVar12 + -0x7d50)" (identifier "pcVar34") (= "=") (pointer_expression "*(code **)(iVar12 + -0x7d50)" (* "*") (cast_expression "(code **)(iVar12 + -0x7d50)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar12 + -0x7d50)" (( "(") (binary_expression "iVar12 + -0x7d50" (identifier "iVar12") (+ "+") (number_literal "-0x7d50")) () ")"))))) (; ";")) (if_statement "if (0x7f00 < uVar3) goto LAB_0005305c;" (if "if") (parenthesized_expression "(0x7f00 < uVar3)" (( "(") (binary_expression "0x7f00 < uVar3" (number_literal "0x7f00") (< "<") (identifier "uVar3")) () ")")) (goto_statement "goto LAB_0005305c;" (goto "goto") (statement_identifier "LAB_0005305c") (; ";"))) (expression_statement "uVar3 = uVar3 + 7;" (assignment_expression "uVar3 = uVar3 + 7" (identifier "uVar3") (= "=") (binary_expression "uVar3 + 7" (identifier "uVar3") (+ "+") (number_literal "7"))) (; ";")) (labeled_statement "LAB_00053148:\n      puVar38 = puVar36 + -(uVar3 & 0xfffffff8) + -0x88;" (statement_identifier "LAB_00053148") (: ":") (expression_statement "puVar38 = puVar36 + -(uVar3 & 0xfffffff8) + -0x88;" (assignment_expression "puVar38 = puVar36 + -(uVar3 & 0xfffffff8) + -0x88" (identifier "puVar38") (= "=") (binary_expression "puVar36 + -(uVar3 & 0xfffffff8) + -0x88" (binary_expression "puVar36 + -(uVar3 & 0xfffffff8)" (identifier "puVar36") (+ "+") (unary_expression "-(uVar3 & 0xfffffff8)" (- "-") (parenthesized_expression "(uVar3 & 0xfffffff8)" (( "(") (binary_expression "uVar3 & 0xfffffff8" (identifier "uVar3") (& "&") (number_literal "0xfffffff8")) () ")")))) (+ "+") (number_literal "-0x88"))) (; ";"))) (expression_statement "puVar4 = (uint *)(puVar36 + -(uVar3 & 0xfffffff8) + -0x68);" (assignment_expression "puVar4 = (uint *)(puVar36 + -(uVar3 & 0xfffffff8) + -0x68)" (identifier "puVar4") (= "=") (cast_expression "(uint *)(puVar36 + -(uVar3 & 0xfffffff8) + -0x68)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar36 + -(uVar3 & 0xfffffff8) + -0x68)" (( "(") (binary_expression "puVar36 + -(uVar3 & 0xfffffff8) + -0x68" (binary_expression "puVar36 + -(uVar3 & 0xfffffff8)" (identifier "puVar36") (+ "+") (unary_expression "-(uVar3 & 0xfffffff8)" (- "-") (parenthesized_expression "(uVar3 & 0xfffffff8)" (( "(") (binary_expression "uVar3 & 0xfffffff8" (identifier "uVar3") (& "&") (number_literal "0xfffffff8")) () ")")))) (+ "+") (number_literal "-0x68")) () ")")))) (; ";")) (} "}")))) (expression_statement "*(uint **)(puVar36 + -0x44) = puVar4 + (int)puVar25;" (assignment_expression "*(uint **)(puVar36 + -0x44) = puVar4 + (int)puVar25" (pointer_expression "*(uint **)(puVar36 + -0x44)" (* "*") (cast_expression "(uint **)(puVar36 + -0x44)" (( "(") (type_descriptor "uint **" (type_identifier "uint") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar36 + -0x44)" (( "(") (binary_expression "puVar36 + -0x44" (identifier "puVar36") (+ "+") (number_literal "-0x44")) () ")")))) (= "=") (binary_expression "puVar4 + (int)puVar25" (identifier "puVar4") (+ "+") (cast_expression "(int)puVar25" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar25")))) (; ";")) (expression_statement "*(uint **)(puVar36 + -0x48) = puVar4 + (int)puVar25 + (int)puVar25;" (assignment_expression "*(uint **)(puVar36 + -0x48) = puVar4 + (int)puVar25 + (int)puVar25" (pointer_expression "*(uint **)(puVar36 + -0x48)" (* "*") (cast_expression "(uint **)(puVar36 + -0x48)" (( "(") (type_descriptor "uint **" (type_identifier "uint") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar36 + -0x48)" (( "(") (binary_expression "puVar36 + -0x48" (identifier "puVar36") (+ "+") (number_literal "-0x48")) () ")")))) (= "=") (binary_expression "puVar4 + (int)puVar25 + (int)puVar25" (binary_expression "puVar4 + (int)puVar25" (identifier "puVar4") (+ "+") (cast_expression "(int)puVar25" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar25"))) (+ "+") (cast_expression "(int)puVar25" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar25")))) (; ";")) (if_statement "if ((int)puVar25 < (int)puVar28) {\n      pcVar34 = *(code **)(iVar12 + -0x7d0c);\n      puVar18 = (uint *)((int)puVar28 - (int)puVar25);\n      *(undefined4 *)(puVar36 + -0x5c) = uVar39;\n      *(uint **)(puVar36 + -0x58) = puVar25;\n      *(int *)(puVar36 + -0x54) = (int)puVar25 * 4;\n      iVar9 = (*pcVar34)(puVar17,puVar17,puVar17 + (int)puVar25,puVar18);\n      iVar12 = *(int *)(puVar36 + -0x68);\n      iVar32 = *(int *)(puVar36 + -0x54);\n      puVar28 = *(uint **)(puVar36 + -0x58);\n      uVar39 = *(undefined4 *)(puVar36 + -0x5c);\n      if (iVar9 == 0) {\nLAB_0005359c:\n        pcVar34 = *(code **)(iVar12 + -0x7d0c);\n      }\n      else {\n        puVar25 = puVar17;\n        if ((int)puVar28 <= (int)puVar18) {\nLAB_00053588:\n          do {\n            uVar3 = *puVar25;\n            *puVar25 = uVar3 + 1;\n            puVar25 = puVar25 + 1;\n          } while (uVar3 + 1 == 0);\n          goto LAB_0005359c;\n        }\n        puVar31 = puVar17 + (int)puVar18;\n        uVar3 = *puVar31;\n        *puVar31 = uVar3 + 1;\n        puVar19 = puVar18;\n        if (uVar3 + 1 == 0) {\n          do {\n            puVar19 = (uint *)((int)puVar19 + 1);\n            if (puVar28 == puVar19) goto LAB_00053588;\n            uVar3 = puVar31[1];\n            puVar31 = puVar31 + 1;\n            *puVar31 = uVar3 + 1;\n          } while (uVar3 + 1 == 0);\n          goto LAB_0005359c;\n        }\n        pcVar34 = *(code **)(iVar12 + -0x7d0c);\n      }\n      *(uint **)(puVar36 + -0x58) = puVar28;\n      *(undefined4 *)(puVar36 + -0x54) = uVar39;\n      iVar9 = (*pcVar34)(puVar21,puVar21,(int)puVar21 + iVar32,puVar18);\n      iVar12 = *(int *)(puVar36 + -0x68);\n      uVar39 = *(undefined4 *)(puVar36 + -0x54);\n      puVar25 = *(uint **)(puVar36 + -0x58);\n      puVar28 = puVar25;\n      if (iVar9 != 0) {\n        puVar19 = puVar21;\n        if ((int)puVar18 < (int)puVar25) {\n          puVar31 = puVar21 + (int)puVar18;\n          uVar3 = *puVar31 + 1;\n          *puVar31 = uVar3;\n          while (uVar3 == 0) {\n            puVar18 = (uint *)((int)puVar18 + 1);\n            if (puVar25 == puVar18) goto LAB_0005361c;\n            puVar5 = puVar31 + 1;\n            puVar31 = puVar31 + 1;\n            uVar3 = *puVar5 + 1;\n            *puVar31 = uVar3;\n          }\n        }\n        else {\nLAB_0005361c:\n          do {\n            uVar3 = *puVar19;\n            *puVar19 = uVar3 + 1;\n            puVar19 = puVar19 + 1;\n          } while (uVar3 + 1 == 0);\n        }\n      }\n    }" (if "if") (parenthesized_expression "((int)puVar25 < (int)puVar28)" (( "(") (binary_expression "(int)puVar25 < (int)puVar28" (cast_expression "(int)puVar25" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar25")) (< "<") (cast_expression "(int)puVar28" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar28"))) () ")")) (compound_statement "{\n      pcVar34 = *(code **)(iVar12 + -0x7d0c);\n      puVar18 = (uint *)((int)puVar28 - (int)puVar25);\n      *(undefined4 *)(puVar36 + -0x5c) = uVar39;\n      *(uint **)(puVar36 + -0x58) = puVar25;\n      *(int *)(puVar36 + -0x54) = (int)puVar25 * 4;\n      iVar9 = (*pcVar34)(puVar17,puVar17,puVar17 + (int)puVar25,puVar18);\n      iVar12 = *(int *)(puVar36 + -0x68);\n      iVar32 = *(int *)(puVar36 + -0x54);\n      puVar28 = *(uint **)(puVar36 + -0x58);\n      uVar39 = *(undefined4 *)(puVar36 + -0x5c);\n      if (iVar9 == 0) {\nLAB_0005359c:\n        pcVar34 = *(code **)(iVar12 + -0x7d0c);\n      }\n      else {\n        puVar25 = puVar17;\n        if ((int)puVar28 <= (int)puVar18) {\nLAB_00053588:\n          do {\n            uVar3 = *puVar25;\n            *puVar25 = uVar3 + 1;\n            puVar25 = puVar25 + 1;\n          } while (uVar3 + 1 == 0);\n          goto LAB_0005359c;\n        }\n        puVar31 = puVar17 + (int)puVar18;\n        uVar3 = *puVar31;\n        *puVar31 = uVar3 + 1;\n        puVar19 = puVar18;\n        if (uVar3 + 1 == 0) {\n          do {\n            puVar19 = (uint *)((int)puVar19 + 1);\n            if (puVar28 == puVar19) goto LAB_00053588;\n            uVar3 = puVar31[1];\n            puVar31 = puVar31 + 1;\n            *puVar31 = uVar3 + 1;\n          } while (uVar3 + 1 == 0);\n          goto LAB_0005359c;\n        }\n        pcVar34 = *(code **)(iVar12 + -0x7d0c);\n      }\n      *(uint **)(puVar36 + -0x58) = puVar28;\n      *(undefined4 *)(puVar36 + -0x54) = uVar39;\n      iVar9 = (*pcVar34)(puVar21,puVar21,(int)puVar21 + iVar32,puVar18);\n      iVar12 = *(int *)(puVar36 + -0x68);\n      uVar39 = *(undefined4 *)(puVar36 + -0x54);\n      puVar25 = *(uint **)(puVar36 + -0x58);\n      puVar28 = puVar25;\n      if (iVar9 != 0) {\n        puVar19 = puVar21;\n        if ((int)puVar18 < (int)puVar25) {\n          puVar31 = puVar21 + (int)puVar18;\n          uVar3 = *puVar31 + 1;\n          *puVar31 = uVar3;\n          while (uVar3 == 0) {\n            puVar18 = (uint *)((int)puVar18 + 1);\n            if (puVar25 == puVar18) goto LAB_0005361c;\n            puVar5 = puVar31 + 1;\n            puVar31 = puVar31 + 1;\n            uVar3 = *puVar5 + 1;\n            *puVar31 = uVar3;\n          }\n        }\n        else {\nLAB_0005361c:\n          do {\n            uVar3 = *puVar19;\n            *puVar19 = uVar3 + 1;\n            puVar19 = puVar19 + 1;\n          } while (uVar3 + 1 == 0);\n        }\n      }\n    }" ({ "{") (expression_statement "pcVar34 = *(code **)(iVar12 + -0x7d0c);" (assignment_expression "pcVar34 = *(code **)(iVar12 + -0x7d0c)" (identifier "pcVar34") (= "=") (pointer_expression "*(code **)(iVar12 + -0x7d0c)" (* "*") (cast_expression "(code **)(iVar12 + -0x7d0c)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar12 + -0x7d0c)" (( "(") (binary_expression "iVar12 + -0x7d0c" (identifier "iVar12") (+ "+") (number_literal "-0x7d0c")) () ")"))))) (; ";")) (expression_statement "puVar18 = (uint *)((int)puVar28 - (int)puVar25);" (assignment_expression "puVar18 = (uint *)((int)puVar28 - (int)puVar25)" (identifier "puVar18") (= "=") (cast_expression "(uint *)((int)puVar28 - (int)puVar25)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar28 - (int)puVar25)" (( "(") (binary_expression "(int)puVar28 - (int)puVar25" (cast_expression "(int)puVar28" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar28")) (- "-") (cast_expression "(int)puVar25" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar25"))) () ")")))) (; ";")) (expression_statement "*(undefined4 *)(puVar36 + -0x5c) = uVar39;" (assignment_expression "*(undefined4 *)(puVar36 + -0x5c) = uVar39" (pointer_expression "*(undefined4 *)(puVar36 + -0x5c)" (* "*") (cast_expression "(undefined4 *)(puVar36 + -0x5c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar36 + -0x5c)" (( "(") (binary_expression "puVar36 + -0x5c" (identifier "puVar36") (+ "+") (number_literal "-0x5c")) () ")")))) (= "=") (identifier "uVar39")) (; ";")) (expression_statement "*(uint **)(puVar36 + -0x58) = puVar25;" (assignment_expression "*(uint **)(puVar36 + -0x58) = puVar25" (pointer_expression "*(uint **)(puVar36 + -0x58)" (* "*") (cast_expression "(uint **)(puVar36 + -0x58)" (( "(") (type_descriptor "uint **" (type_identifier "uint") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar36 + -0x58)" (( "(") (binary_expression "puVar36 + -0x58" (identifier "puVar36") (+ "+") (number_literal "-0x58")) () ")")))) (= "=") (identifier "puVar25")) (; ";")) (expression_statement "*(int *)(puVar36 + -0x54) = (int)puVar25 * 4;" (assignment_expression "*(int *)(puVar36 + -0x54) = (int)puVar25 * 4" (pointer_expression "*(int *)(puVar36 + -0x54)" (* "*") (cast_expression "(int *)(puVar36 + -0x54)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar36 + -0x54)" (( "(") (binary_expression "puVar36 + -0x54" (identifier "puVar36") (+ "+") (number_literal "-0x54")) () ")")))) (= "=") (binary_expression "(int)puVar25 * 4" (cast_expression "(int)puVar25" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar25")) (* "*") (number_literal "4"))) (; ";")) (expression_statement "iVar9 = (*pcVar34)(puVar17,puVar17,puVar17 + (int)puVar25,puVar18);" (assignment_expression "iVar9 = (*pcVar34)(puVar17,puVar17,puVar17 + (int)puVar25,puVar18)" (identifier "iVar9") (= "=") (call_expression "(*pcVar34)(puVar17,puVar17,puVar17 + (int)puVar25,puVar18)" (parenthesized_expression "(*pcVar34)" (( "(") (pointer_expression "*pcVar34" (* "*") (identifier "pcVar34")) () ")")) (argument_list "(puVar17,puVar17,puVar17 + (int)puVar25,puVar18)" (( "(") (identifier "puVar17") (, ",") (identifier "puVar17") (, ",") (binary_expression "puVar17 + (int)puVar25" (identifier "puVar17") (+ "+") (cast_expression "(int)puVar25" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar25"))) (, ",") (identifier "puVar18") () ")")))) (; ";")) (expression_statement "iVar12 = *(int *)(puVar36 + -0x68);" (assignment_expression "iVar12 = *(int *)(puVar36 + -0x68)" (identifier "iVar12") (= "=") (pointer_expression "*(int *)(puVar36 + -0x68)" (* "*") (cast_expression "(int *)(puVar36 + -0x68)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar36 + -0x68)" (( "(") (binary_expression "puVar36 + -0x68" (identifier "puVar36") (+ "+") (number_literal "-0x68")) () ")"))))) (; ";")) (expression_statement "iVar32 = *(int *)(puVar36 + -0x54);" (assignment_expression "iVar32 = *(int *)(puVar36 + -0x54)" (identifier "iVar32") (= "=") (pointer_expression "*(int *)(puVar36 + -0x54)" (* "*") (cast_expression "(int *)(puVar36 + -0x54)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar36 + -0x54)" (( "(") (binary_expression "puVar36 + -0x54" (identifier "puVar36") (+ "+") (number_literal "-0x54")) () ")"))))) (; ";")) (expression_statement "puVar28 = *(uint **)(puVar36 + -0x58);" (assignment_expression "puVar28 = *(uint **)(puVar36 + -0x58)" (identifier "puVar28") (= "=") (pointer_expression "*(uint **)(puVar36 + -0x58)" (* "*") (cast_expression "(uint **)(puVar36 + -0x58)" (( "(") (type_descriptor "uint **" (type_identifier "uint") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar36 + -0x58)" (( "(") (binary_expression "puVar36 + -0x58" (identifier "puVar36") (+ "+") (number_literal "-0x58")) () ")"))))) (; ";")) (expression_statement "uVar39 = *(undefined4 *)(puVar36 + -0x5c);" (assignment_expression "uVar39 = *(undefined4 *)(puVar36 + -0x5c)" (identifier "uVar39") (= "=") (pointer_expression "*(undefined4 *)(puVar36 + -0x5c)" (* "*") (cast_expression "(undefined4 *)(puVar36 + -0x5c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar36 + -0x5c)" (( "(") (binary_expression "puVar36 + -0x5c" (identifier "puVar36") (+ "+") (number_literal "-0x5c")) () ")"))))) (; ";")) (if_statement "if (iVar9 == 0) {\nLAB_0005359c:\n        pcVar34 = *(code **)(iVar12 + -0x7d0c);\n      }\n      else {\n        puVar25 = puVar17;\n        if ((int)puVar28 <= (int)puVar18) {\nLAB_00053588:\n          do {\n            uVar3 = *puVar25;\n            *puVar25 = uVar3 + 1;\n            puVar25 = puVar25 + 1;\n          } while (uVar3 + 1 == 0);\n          goto LAB_0005359c;\n        }\n        puVar31 = puVar17 + (int)puVar18;\n        uVar3 = *puVar31;\n        *puVar31 = uVar3 + 1;\n        puVar19 = puVar18;\n        if (uVar3 + 1 == 0) {\n          do {\n            puVar19 = (uint *)((int)puVar19 + 1);\n            if (puVar28 == puVar19) goto LAB_00053588;\n            uVar3 = puVar31[1];\n            puVar31 = puVar31 + 1;\n            *puVar31 = uVar3 + 1;\n          } while (uVar3 + 1 == 0);\n          goto LAB_0005359c;\n        }\n        pcVar34 = *(code **)(iVar12 + -0x7d0c);\n      }" (if "if") (parenthesized_expression "(iVar9 == 0)" (( "(") (binary_expression "iVar9 == 0" (identifier "iVar9") (== "==") (number_literal "0")) () ")")) (compound_statement "{\nLAB_0005359c:\n        pcVar34 = *(code **)(iVar12 + -0x7d0c);\n      }" ({ "{") (labeled_statement "LAB_0005359c:\n        pcVar34 = *(code **)(iVar12 + -0x7d0c);" (statement_identifier "LAB_0005359c") (: ":") (expression_statement "pcVar34 = *(code **)(iVar12 + -0x7d0c);" (assignment_expression "pcVar34 = *(code **)(iVar12 + -0x7d0c)" (identifier "pcVar34") (= "=") (pointer_expression "*(code **)(iVar12 + -0x7d0c)" (* "*") (cast_expression "(code **)(iVar12 + -0x7d0c)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar12 + -0x7d0c)" (( "(") (binary_expression "iVar12 + -0x7d0c" (identifier "iVar12") (+ "+") (number_literal "-0x7d0c")) () ")"))))) (; ";"))) (} "}")) (else_clause "else {\n        puVar25 = puVar17;\n        if ((int)puVar28 <= (int)puVar18) {\nLAB_00053588:\n          do {\n            uVar3 = *puVar25;\n            *puVar25 = uVar3 + 1;\n            puVar25 = puVar25 + 1;\n          } while (uVar3 + 1 == 0);\n          goto LAB_0005359c;\n        }\n        puVar31 = puVar17 + (int)puVar18;\n        uVar3 = *puVar31;\n        *puVar31 = uVar3 + 1;\n        puVar19 = puVar18;\n        if (uVar3 + 1 == 0) {\n          do {\n            puVar19 = (uint *)((int)puVar19 + 1);\n            if (puVar28 == puVar19) goto LAB_00053588;\n            uVar3 = puVar31[1];\n            puVar31 = puVar31 + 1;\n            *puVar31 = uVar3 + 1;\n          } while (uVar3 + 1 == 0);\n          goto LAB_0005359c;\n        }\n        pcVar34 = *(code **)(iVar12 + -0x7d0c);\n      }" (else "else") (compound_statement "{\n        puVar25 = puVar17;\n        if ((int)puVar28 <= (int)puVar18) {\nLAB_00053588:\n          do {\n            uVar3 = *puVar25;\n            *puVar25 = uVar3 + 1;\n            puVar25 = puVar25 + 1;\n          } while (uVar3 + 1 == 0);\n          goto LAB_0005359c;\n        }\n        puVar31 = puVar17 + (int)puVar18;\n        uVar3 = *puVar31;\n        *puVar31 = uVar3 + 1;\n        puVar19 = puVar18;\n        if (uVar3 + 1 == 0) {\n          do {\n            puVar19 = (uint *)((int)puVar19 + 1);\n            if (puVar28 == puVar19) goto LAB_00053588;\n            uVar3 = puVar31[1];\n            puVar31 = puVar31 + 1;\n            *puVar31 = uVar3 + 1;\n          } while (uVar3 + 1 == 0);\n          goto LAB_0005359c;\n        }\n        pcVar34 = *(code **)(iVar12 + -0x7d0c);\n      }" ({ "{") (expression_statement "puVar25 = puVar17;" (assignment_expression "puVar25 = puVar17" (identifier "puVar25") (= "=") (identifier "puVar17")) (; ";")) (if_statement "if ((int)puVar28 <= (int)puVar18) {\nLAB_00053588:\n          do {\n            uVar3 = *puVar25;\n            *puVar25 = uVar3 + 1;\n            puVar25 = puVar25 + 1;\n          } while (uVar3 + 1 == 0);\n          goto LAB_0005359c;\n        }" (if "if") (parenthesized_expression "((int)puVar28 <= (int)puVar18)" (( "(") (binary_expression "(int)puVar28 <= (int)puVar18" (cast_expression "(int)puVar28" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar28")) (<= "<=") (cast_expression "(int)puVar18" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar18"))) () ")")) (compound_statement "{\nLAB_00053588:\n          do {\n            uVar3 = *puVar25;\n            *puVar25 = uVar3 + 1;\n            puVar25 = puVar25 + 1;\n          } while (uVar3 + 1 == 0);\n          goto LAB_0005359c;\n        }" ({ "{") (labeled_statement "LAB_00053588:\n          do {\n            uVar3 = *puVar25;\n            *puVar25 = uVar3 + 1;\n            puVar25 = puVar25 + 1;\n          } while (uVar3 + 1 == 0);" (statement_identifier "LAB_00053588") (: ":") (do_statement "do {\n            uVar3 = *puVar25;\n            *puVar25 = uVar3 + 1;\n            puVar25 = puVar25 + 1;\n          } while (uVar3 + 1 == 0);" (do "do") (compound_statement "{\n            uVar3 = *puVar25;\n            *puVar25 = uVar3 + 1;\n            puVar25 = puVar25 + 1;\n          }" ({ "{") (expression_statement "uVar3 = *puVar25;" (assignment_expression "uVar3 = *puVar25" (identifier "uVar3") (= "=") (pointer_expression "*puVar25" (* "*") (identifier "puVar25"))) (; ";")) (expression_statement "*puVar25 = uVar3 + 1;" (assignment_expression "*puVar25 = uVar3 + 1" (pointer_expression "*puVar25" (* "*") (identifier "puVar25")) (= "=") (binary_expression "uVar3 + 1" (identifier "uVar3") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "puVar25 = puVar25 + 1;" (assignment_expression "puVar25 = puVar25 + 1" (identifier "puVar25") (= "=") (binary_expression "puVar25 + 1" (identifier "puVar25") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(uVar3 + 1 == 0)" (( "(") (binary_expression "uVar3 + 1 == 0" (binary_expression "uVar3 + 1" (identifier "uVar3") (+ "+") (number_literal "1")) (== "==") (number_literal "0")) () ")")) (; ";"))) (goto_statement "goto LAB_0005359c;" (goto "goto") (statement_identifier "LAB_0005359c") (; ";")) (} "}"))) (expression_statement "puVar31 = puVar17 + (int)puVar18;" (assignment_expression "puVar31 = puVar17 + (int)puVar18" (identifier "puVar31") (= "=") (binary_expression "puVar17 + (int)puVar18" (identifier "puVar17") (+ "+") (cast_expression "(int)puVar18" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar18")))) (; ";")) (expression_statement "uVar3 = *puVar31;" (assignment_expression "uVar3 = *puVar31" (identifier "uVar3") (= "=") (pointer_expression "*puVar31" (* "*") (identifier "puVar31"))) (; ";")) (expression_statement "*puVar31 = uVar3 + 1;" (assignment_expression "*puVar31 = uVar3 + 1" (pointer_expression "*puVar31" (* "*") (identifier "puVar31")) (= "=") (binary_expression "uVar3 + 1" (identifier "uVar3") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "puVar19 = puVar18;" (assignment_expression "puVar19 = puVar18" (identifier "puVar19") (= "=") (identifier "puVar18")) (; ";")) (if_statement "if (uVar3 + 1 == 0) {\n          do {\n            puVar19 = (uint *)((int)puVar19 + 1);\n            if (puVar28 == puVar19) goto LAB_00053588;\n            uVar3 = puVar31[1];\n            puVar31 = puVar31 + 1;\n            *puVar31 = uVar3 + 1;\n          } while (uVar3 + 1 == 0);\n          goto LAB_0005359c;\n        }" (if "if") (parenthesized_expression "(uVar3 + 1 == 0)" (( "(") (binary_expression "uVar3 + 1 == 0" (binary_expression "uVar3 + 1" (identifier "uVar3") (+ "+") (number_literal "1")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n          do {\n            puVar19 = (uint *)((int)puVar19 + 1);\n            if (puVar28 == puVar19) goto LAB_00053588;\n            uVar3 = puVar31[1];\n            puVar31 = puVar31 + 1;\n            *puVar31 = uVar3 + 1;\n          } while (uVar3 + 1 == 0);\n          goto LAB_0005359c;\n        }" ({ "{") (do_statement "do {\n            puVar19 = (uint *)((int)puVar19 + 1);\n            if (puVar28 == puVar19) goto LAB_00053588;\n            uVar3 = puVar31[1];\n            puVar31 = puVar31 + 1;\n            *puVar31 = uVar3 + 1;\n          } while (uVar3 + 1 == 0);" (do "do") (compound_statement "{\n            puVar19 = (uint *)((int)puVar19 + 1);\n            if (puVar28 == puVar19) goto LAB_00053588;\n            uVar3 = puVar31[1];\n            puVar31 = puVar31 + 1;\n            *puVar31 = uVar3 + 1;\n          }" ({ "{") (expression_statement "puVar19 = (uint *)((int)puVar19 + 1);" (assignment_expression "puVar19 = (uint *)((int)puVar19 + 1)" (identifier "puVar19") (= "=") (cast_expression "(uint *)((int)puVar19 + 1)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar19 + 1)" (( "(") (binary_expression "(int)puVar19 + 1" (cast_expression "(int)puVar19" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar19")) (+ "+") (number_literal "1")) () ")")))) (; ";")) (if_statement "if (puVar28 == puVar19) goto LAB_00053588;" (if "if") (parenthesized_expression "(puVar28 == puVar19)" (( "(") (binary_expression "puVar28 == puVar19" (identifier "puVar28") (== "==") (identifier "puVar19")) () ")")) (goto_statement "goto LAB_00053588;" (goto "goto") (statement_identifier "LAB_00053588") (; ";"))) (expression_statement "uVar3 = puVar31[1];" (assignment_expression "uVar3 = puVar31[1]" (identifier "uVar3") (= "=") (subscript_expression "puVar31[1]" (identifier "puVar31") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "puVar31 = puVar31 + 1;" (assignment_expression "puVar31 = puVar31 + 1" (identifier "puVar31") (= "=") (binary_expression "puVar31 + 1" (identifier "puVar31") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "*puVar31 = uVar3 + 1;" (assignment_expression "*puVar31 = uVar3 + 1" (pointer_expression "*puVar31" (* "*") (identifier "puVar31")) (= "=") (binary_expression "uVar3 + 1" (identifier "uVar3") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(uVar3 + 1 == 0)" (( "(") (binary_expression "uVar3 + 1 == 0" (binary_expression "uVar3 + 1" (identifier "uVar3") (+ "+") (number_literal "1")) (== "==") (number_literal "0")) () ")")) (; ";")) (goto_statement "goto LAB_0005359c;" (goto "goto") (statement_identifier "LAB_0005359c") (; ";")) (} "}"))) (expression_statement "pcVar34 = *(code **)(iVar12 + -0x7d0c);" (assignment_expression "pcVar34 = *(code **)(iVar12 + -0x7d0c)" (identifier "pcVar34") (= "=") (pointer_expression "*(code **)(iVar12 + -0x7d0c)" (* "*") (cast_expression "(code **)(iVar12 + -0x7d0c)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar12 + -0x7d0c)" (( "(") (binary_expression "iVar12 + -0x7d0c" (identifier "iVar12") (+ "+") (number_literal "-0x7d0c")) () ")"))))) (; ";")) (} "}")))) (expression_statement "*(uint **)(puVar36 + -0x58) = puVar28;" (assignment_expression "*(uint **)(puVar36 + -0x58) = puVar28" (pointer_expression "*(uint **)(puVar36 + -0x58)" (* "*") (cast_expression "(uint **)(puVar36 + -0x58)" (( "(") (type_descriptor "uint **" (type_identifier "uint") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar36 + -0x58)" (( "(") (binary_expression "puVar36 + -0x58" (identifier "puVar36") (+ "+") (number_literal "-0x58")) () ")")))) (= "=") (identifier "puVar28")) (; ";")) (expression_statement "*(undefined4 *)(puVar36 + -0x54) = uVar39;" (assignment_expression "*(undefined4 *)(puVar36 + -0x54) = uVar39" (pointer_expression "*(undefined4 *)(puVar36 + -0x54)" (* "*") (cast_expression "(undefined4 *)(puVar36 + -0x54)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar36 + -0x54)" (( "(") (binary_expression "puVar36 + -0x54" (identifier "puVar36") (+ "+") (number_literal "-0x54")) () ")")))) (= "=") (identifier "uVar39")) (; ";")) (expression_statement "iVar9 = (*pcVar34)(puVar21,puVar21,(int)puVar21 + iVar32,puVar18);" (assignment_expression "iVar9 = (*pcVar34)(puVar21,puVar21,(int)puVar21 + iVar32,puVar18)" (identifier "iVar9") (= "=") (call_expression "(*pcVar34)(puVar21,puVar21,(int)puVar21 + iVar32,puVar18)" (parenthesized_expression "(*pcVar34)" (( "(") (pointer_expression "*pcVar34" (* "*") (identifier "pcVar34")) () ")")) (argument_list "(puVar21,puVar21,(int)puVar21 + iVar32,puVar18)" (( "(") (identifier "puVar21") (, ",") (identifier "puVar21") (, ",") (binary_expression "(int)puVar21 + iVar32" (cast_expression "(int)puVar21" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar21")) (+ "+") (identifier "iVar32")) (, ",") (identifier "puVar18") () ")")))) (; ";")) (expression_statement "iVar12 = *(int *)(puVar36 + -0x68);" (assignment_expression "iVar12 = *(int *)(puVar36 + -0x68)" (identifier "iVar12") (= "=") (pointer_expression "*(int *)(puVar36 + -0x68)" (* "*") (cast_expression "(int *)(puVar36 + -0x68)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar36 + -0x68)" (( "(") (binary_expression "puVar36 + -0x68" (identifier "puVar36") (+ "+") (number_literal "-0x68")) () ")"))))) (; ";")) (expression_statement "uVar39 = *(undefined4 *)(puVar36 + -0x54);" (assignment_expression "uVar39 = *(undefined4 *)(puVar36 + -0x54)" (identifier "uVar39") (= "=") (pointer_expression "*(undefined4 *)(puVar36 + -0x54)" (* "*") (cast_expression "(undefined4 *)(puVar36 + -0x54)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar36 + -0x54)" (( "(") (binary_expression "puVar36 + -0x54" (identifier "puVar36") (+ "+") (number_literal "-0x54")) () ")"))))) (; ";")) (expression_statement "puVar25 = *(uint **)(puVar36 + -0x58);" (assignment_expression "puVar25 = *(uint **)(puVar36 + -0x58)" (identifier "puVar25") (= "=") (pointer_expression "*(uint **)(puVar36 + -0x58)" (* "*") (cast_expression "(uint **)(puVar36 + -0x58)" (( "(") (type_descriptor "uint **" (type_identifier "uint") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar36 + -0x58)" (( "(") (binary_expression "puVar36 + -0x58" (identifier "puVar36") (+ "+") (number_literal "-0x58")) () ")"))))) (; ";")) (expression_statement "puVar28 = puVar25;" (assignment_expression "puVar28 = puVar25" (identifier "puVar28") (= "=") (identifier "puVar25")) (; ";")) (if_statement "if (iVar9 != 0) {\n        puVar19 = puVar21;\n        if ((int)puVar18 < (int)puVar25) {\n          puVar31 = puVar21 + (int)puVar18;\n          uVar3 = *puVar31 + 1;\n          *puVar31 = uVar3;\n          while (uVar3 == 0) {\n            puVar18 = (uint *)((int)puVar18 + 1);\n            if (puVar25 == puVar18) goto LAB_0005361c;\n            puVar5 = puVar31 + 1;\n            puVar31 = puVar31 + 1;\n            uVar3 = *puVar5 + 1;\n            *puVar31 = uVar3;\n          }\n        }\n        else {\nLAB_0005361c:\n          do {\n            uVar3 = *puVar19;\n            *puVar19 = uVar3 + 1;\n            puVar19 = puVar19 + 1;\n          } while (uVar3 + 1 == 0);\n        }\n      }" (if "if") (parenthesized_expression "(iVar9 != 0)" (( "(") (binary_expression "iVar9 != 0" (identifier "iVar9") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n        puVar19 = puVar21;\n        if ((int)puVar18 < (int)puVar25) {\n          puVar31 = puVar21 + (int)puVar18;\n          uVar3 = *puVar31 + 1;\n          *puVar31 = uVar3;\n          while (uVar3 == 0) {\n            puVar18 = (uint *)((int)puVar18 + 1);\n            if (puVar25 == puVar18) goto LAB_0005361c;\n            puVar5 = puVar31 + 1;\n            puVar31 = puVar31 + 1;\n            uVar3 = *puVar5 + 1;\n            *puVar31 = uVar3;\n          }\n        }\n        else {\nLAB_0005361c:\n          do {\n            uVar3 = *puVar19;\n            *puVar19 = uVar3 + 1;\n            puVar19 = puVar19 + 1;\n          } while (uVar3 + 1 == 0);\n        }\n      }" ({ "{") (expression_statement "puVar19 = puVar21;" (assignment_expression "puVar19 = puVar21" (identifier "puVar19") (= "=") (identifier "puVar21")) (; ";")) (if_statement "if ((int)puVar18 < (int)puVar25) {\n          puVar31 = puVar21 + (int)puVar18;\n          uVar3 = *puVar31 + 1;\n          *puVar31 = uVar3;\n          while (uVar3 == 0) {\n            puVar18 = (uint *)((int)puVar18 + 1);\n            if (puVar25 == puVar18) goto LAB_0005361c;\n            puVar5 = puVar31 + 1;\n            puVar31 = puVar31 + 1;\n            uVar3 = *puVar5 + 1;\n            *puVar31 = uVar3;\n          }\n        }\n        else {\nLAB_0005361c:\n          do {\n            uVar3 = *puVar19;\n            *puVar19 = uVar3 + 1;\n            puVar19 = puVar19 + 1;\n          } while (uVar3 + 1 == 0);\n        }" (if "if") (parenthesized_expression "((int)puVar18 < (int)puVar25)" (( "(") (binary_expression "(int)puVar18 < (int)puVar25" (cast_expression "(int)puVar18" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar18")) (< "<") (cast_expression "(int)puVar25" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar25"))) () ")")) (compound_statement "{\n          puVar31 = puVar21 + (int)puVar18;\n          uVar3 = *puVar31 + 1;\n          *puVar31 = uVar3;\n          while (uVar3 == 0) {\n            puVar18 = (uint *)((int)puVar18 + 1);\n            if (puVar25 == puVar18) goto LAB_0005361c;\n            puVar5 = puVar31 + 1;\n            puVar31 = puVar31 + 1;\n            uVar3 = *puVar5 + 1;\n            *puVar31 = uVar3;\n          }\n        }" ({ "{") (expression_statement "puVar31 = puVar21 + (int)puVar18;" (assignment_expression "puVar31 = puVar21 + (int)puVar18" (identifier "puVar31") (= "=") (binary_expression "puVar21 + (int)puVar18" (identifier "puVar21") (+ "+") (cast_expression "(int)puVar18" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar18")))) (; ";")) (expression_statement "uVar3 = *puVar31 + 1;" (assignment_expression "uVar3 = *puVar31 + 1" (identifier "uVar3") (= "=") (binary_expression "*puVar31 + 1" (pointer_expression "*puVar31" (* "*") (identifier "puVar31")) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "*puVar31 = uVar3;" (assignment_expression "*puVar31 = uVar3" (pointer_expression "*puVar31" (* "*") (identifier "puVar31")) (= "=") (identifier "uVar3")) (; ";")) (while_statement "while (uVar3 == 0) {\n            puVar18 = (uint *)((int)puVar18 + 1);\n            if (puVar25 == puVar18) goto LAB_0005361c;\n            puVar5 = puVar31 + 1;\n            puVar31 = puVar31 + 1;\n            uVar3 = *puVar5 + 1;\n            *puVar31 = uVar3;\n          }" (while "while") (parenthesized_expression "(uVar3 == 0)" (( "(") (binary_expression "uVar3 == 0" (identifier "uVar3") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n            puVar18 = (uint *)((int)puVar18 + 1);\n            if (puVar25 == puVar18) goto LAB_0005361c;\n            puVar5 = puVar31 + 1;\n            puVar31 = puVar31 + 1;\n            uVar3 = *puVar5 + 1;\n            *puVar31 = uVar3;\n          }" ({ "{") (expression_statement "puVar18 = (uint *)((int)puVar18 + 1);" (assignment_expression "puVar18 = (uint *)((int)puVar18 + 1)" (identifier "puVar18") (= "=") (cast_expression "(uint *)((int)puVar18 + 1)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar18 + 1)" (( "(") (binary_expression "(int)puVar18 + 1" (cast_expression "(int)puVar18" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar18")) (+ "+") (number_literal "1")) () ")")))) (; ";")) (if_statement "if (puVar25 == puVar18) goto LAB_0005361c;" (if "if") (parenthesized_expression "(puVar25 == puVar18)" (( "(") (binary_expression "puVar25 == puVar18" (identifier "puVar25") (== "==") (identifier "puVar18")) () ")")) (goto_statement "goto LAB_0005361c;" (goto "goto") (statement_identifier "LAB_0005361c") (; ";"))) (expression_statement "puVar5 = puVar31 + 1;" (assignment_expression "puVar5 = puVar31 + 1" (identifier "puVar5") (= "=") (binary_expression "puVar31 + 1" (identifier "puVar31") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "puVar31 = puVar31 + 1;" (assignment_expression "puVar31 = puVar31 + 1" (identifier "puVar31") (= "=") (binary_expression "puVar31 + 1" (identifier "puVar31") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "uVar3 = *puVar5 + 1;" (assignment_expression "uVar3 = *puVar5 + 1" (identifier "uVar3") (= "=") (binary_expression "*puVar5 + 1" (pointer_expression "*puVar5" (* "*") (identifier "puVar5")) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "*puVar31 = uVar3;" (assignment_expression "*puVar31 = uVar3" (pointer_expression "*puVar31" (* "*") (identifier "puVar31")) (= "=") (identifier "uVar3")) (; ";")) (} "}"))) (} "}")) (else_clause "else {\nLAB_0005361c:\n          do {\n            uVar3 = *puVar19;\n            *puVar19 = uVar3 + 1;\n            puVar19 = puVar19 + 1;\n          } while (uVar3 + 1 == 0);\n        }" (else "else") (compound_statement "{\nLAB_0005361c:\n          do {\n            uVar3 = *puVar19;\n            *puVar19 = uVar3 + 1;\n            puVar19 = puVar19 + 1;\n          } while (uVar3 + 1 == 0);\n        }" ({ "{") (labeled_statement "LAB_0005361c:\n          do {\n            uVar3 = *puVar19;\n            *puVar19 = uVar3 + 1;\n            puVar19 = puVar19 + 1;\n          } while (uVar3 + 1 == 0);" (statement_identifier "LAB_0005361c") (: ":") (do_statement "do {\n            uVar3 = *puVar19;\n            *puVar19 = uVar3 + 1;\n            puVar19 = puVar19 + 1;\n          } while (uVar3 + 1 == 0);" (do "do") (compound_statement "{\n            uVar3 = *puVar19;\n            *puVar19 = uVar3 + 1;\n            puVar19 = puVar19 + 1;\n          }" ({ "{") (expression_statement "uVar3 = *puVar19;" (assignment_expression "uVar3 = *puVar19" (identifier "uVar3") (= "=") (pointer_expression "*puVar19" (* "*") (identifier "puVar19"))) (; ";")) (expression_statement "*puVar19 = uVar3 + 1;" (assignment_expression "*puVar19 = uVar3 + 1" (pointer_expression "*puVar19" (* "*") (identifier "puVar19")) (= "=") (binary_expression "uVar3 + 1" (identifier "uVar3") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "puVar19 = puVar19 + 1;" (assignment_expression "puVar19 = puVar19 + 1" (identifier "puVar19") (= "=") (binary_expression "puVar19 + 1" (identifier "puVar19") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(uVar3 + 1 == 0)" (( "(") (binary_expression "uVar3 + 1 == 0" (binary_expression "uVar3 + 1" (identifier "uVar3") (+ "+") (number_literal "1")) (== "==") (number_literal "0")) () ")")) (; ";"))) (} "}")))) (} "}"))) (} "}"))) (expression_statement "uVar8 = *(undefined4 *)(iVar24 + 0x14);" (assignment_expression "uVar8 = *(undefined4 *)(iVar24 + 0x14)" (identifier "uVar8") (= "=") (pointer_expression "*(undefined4 *)(iVar24 + 0x14)" (* "*") (cast_expression "(undefined4 *)(iVar24 + 0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar24 + 0x14)" (( "(") (binary_expression "iVar24 + 0x14" (identifier "iVar24") (+ "+") (number_literal "0x14")) () ")"))))) (; ";")) (expression_statement "pcVar34 = *(code **)(iVar12 + -0x7cd8);" (assignment_expression "pcVar34 = *(code **)(iVar12 + -0x7cd8)" (identifier "pcVar34") (= "=") (pointer_expression "*(code **)(iVar12 + -0x7cd8)" (* "*") (cast_expression "(code **)(iVar12 + -0x7cd8)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar12 + -0x7cd8)" (( "(") (binary_expression "iVar12 + -0x7cd8" (identifier "iVar12") (+ "+") (number_literal "-0x7cd8")) () ")"))))) (; ";")) (expression_statement "*(undefined4 *)(puVar36 + -0x5c) = uVar39;" (assignment_expression "*(undefined4 *)(puVar36 + -0x5c) = uVar39" (pointer_expression "*(undefined4 *)(puVar36 + -0x5c)" (* "*") (cast_expression "(undefined4 *)(puVar36 + -0x5c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar36 + -0x5c)" (( "(") (binary_expression "puVar36 + -0x5c" (identifier "puVar36") (+ "+") (number_literal "-0x5c")) () ")")))) (= "=") (identifier "uVar39")) (; ";")) (expression_statement "*(uint **)(puVar36 + -0x54) = puVar25;" (assignment_expression "*(uint **)(puVar36 + -0x54) = puVar25" (pointer_expression "*(uint **)(puVar36 + -0x54)" (* "*") (cast_expression "(uint **)(puVar36 + -0x54)" (( "(") (type_descriptor "uint **" (type_identifier "uint") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar36 + -0x54)" (( "(") (binary_expression "puVar36 + -0x54" (identifier "puVar36") (+ "+") (number_literal "-0x54")) () ")")))) (= "=") (identifier "puVar25")) (; ";")) (expression_statement "*(undefined4 *)(puVar38 + 0x18) = *(undefined4 *)(puVar36 + -0x48);" (assignment_expression "*(undefined4 *)(puVar38 + 0x18) = *(undefined4 *)(puVar36 + -0x48)" (pointer_expression "*(undefined4 *)(puVar38 + 0x18)" (* "*") (cast_expression "(undefined4 *)(puVar38 + 0x18)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar38 + 0x18)" (( "(") (binary_expression "puVar38 + 0x18" (identifier "puVar38") (+ "+") (number_literal "0x18")) () ")")))) (= "=") (pointer_expression "*(undefined4 *)(puVar36 + -0x48)" (* "*") (cast_expression "(undefined4 *)(puVar36 + -0x48)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar36 + -0x48)" (( "(") (binary_expression "puVar36 + -0x48" (identifier "puVar36") (+ "+") (number_literal "-0x48")) () ")"))))) (; ";")) (expression_statement "*(undefined4 *)(puVar38 + 0x10) = uVar8;" (assignment_expression "*(undefined4 *)(puVar38 + 0x10) = uVar8" (pointer_expression "*(undefined4 *)(puVar38 + 0x10)" (* "*") (cast_expression "(undefined4 *)(puVar38 + 0x10)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar38 + 0x10)" (( "(") (binary_expression "puVar38 + 0x10" (identifier "puVar38") (+ "+") (number_literal "0x10")) () ")")))) (= "=") (identifier "uVar8")) (; ";")) (expression_statement "*(int *)(puVar38 + 0x14) = iVar7;" (assignment_expression "*(int *)(puVar38 + 0x14) = iVar7" (pointer_expression "*(int *)(puVar38 + 0x14)" (* "*") (cast_expression "(int *)(puVar38 + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar38 + 0x14)" (( "(") (binary_expression "puVar38 + 0x14" (identifier "puVar38") (+ "+") (number_literal "0x14")) () ")")))) (= "=") (identifier "iVar7")) (; ";")) (expression_statement "(*pcVar34)(puVar4,puVar25,puVar17,puVar28);" (call_expression "(*pcVar34)(puVar4,puVar25,puVar17,puVar28)" (parenthesized_expression "(*pcVar34)" (( "(") (pointer_expression "*pcVar34" (* "*") (identifier "pcVar34")) () ")")) (argument_list "(puVar4,puVar25,puVar17,puVar28)" (( "(") (identifier "puVar4") (, ",") (identifier "puVar25") (, ",") (identifier "puVar17") (, ",") (identifier "puVar28") () ")"))) (; ";")) (expression_statement "uVar39 = *(undefined4 *)(iVar24 + 0xc);" (assignment_expression "uVar39 = *(undefined4 *)(iVar24 + 0xc)" (identifier "uVar39") (= "=") (pointer_expression "*(undefined4 *)(iVar24 + 0xc)" (* "*") (cast_expression "(undefined4 *)(iVar24 + 0xc)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar24 + 0xc)" (( "(") (binary_expression "iVar24 + 0xc" (identifier "iVar24") (+ "+") (number_literal "0xc")) () ")"))))) (; ";")) (expression_statement "uVar26 = *(undefined4 *)(puVar36 + -0x54);" (assignment_expression "uVar26 = *(undefined4 *)(puVar36 + -0x54)" (identifier "uVar26") (= "=") (pointer_expression "*(undefined4 *)(puVar36 + -0x54)" (* "*") (cast_expression "(undefined4 *)(puVar36 + -0x54)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar36 + -0x54)" (( "(") (binary_expression "puVar36 + -0x54" (identifier "puVar36") (+ "+") (number_literal "-0x54")) () ")"))))) (; ";")) (expression_statement "uVar27 = *(undefined4 *)(puVar36 + -0x5c);" (assignment_expression "uVar27 = *(undefined4 *)(puVar36 + -0x5c)" (identifier "uVar27") (= "=") (pointer_expression "*(undefined4 *)(puVar36 + -0x5c)" (* "*") (cast_expression "(undefined4 *)(puVar36 + -0x5c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar36 + -0x5c)" (( "(") (binary_expression "puVar36 + -0x5c" (identifier "puVar36") (+ "+") (number_literal "-0x5c")) () ")"))))) (; ";")) (expression_statement "uVar8 = *(undefined4 *)(puVar36 + -0x48);" (assignment_expression "uVar8 = *(undefined4 *)(puVar36 + -0x48)" (identifier "uVar8") (= "=") (pointer_expression "*(undefined4 *)(puVar36 + -0x48)" (* "*") (cast_expression "(undefined4 *)(puVar36 + -0x48)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar36 + -0x48)" (( "(") (binary_expression "puVar36 + -0x48" (identifier "puVar36") (+ "+") (number_literal "-0x48")) () ")"))))) (; ";")) (expression_statement "pcVar34 = *(code **)(*(int *)(puVar36 + -0x68) + -0x7cd8);" (assignment_expression "pcVar34 = *(code **)(*(int *)(puVar36 + -0x68) + -0x7cd8)" (identifier "pcVar34") (= "=") (pointer_expression "*(code **)(*(int *)(puVar36 + -0x68) + -0x7cd8)" (* "*") (cast_expression "(code **)(*(int *)(puVar36 + -0x68) + -0x7cd8)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*(int *)(puVar36 + -0x68) + -0x7cd8)" (( "(") (binary_expression "*(int *)(puVar36 + -0x68) + -0x7cd8" (pointer_expression "*(int *)(puVar36 + -0x68)" (* "*") (cast_expression "(int *)(puVar36 + -0x68)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar36 + -0x68)" (( "(") (binary_expression "puVar36 + -0x68" (identifier "puVar36") (+ "+") (number_literal "-0x68")) () ")")))) (+ "+") (number_literal "-0x7cd8")) () ")"))))) (; ";")) (expression_statement "uVar15 = *(undefined4 *)(puVar36 + -0x44);" (assignment_expression "uVar15 = *(undefined4 *)(puVar36 + -0x44)" (identifier "uVar15") (= "=") (pointer_expression "*(undefined4 *)(puVar36 + -0x44)" (* "*") (cast_expression "(undefined4 *)(puVar36 + -0x44)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar36 + -0x44)" (( "(") (binary_expression "puVar36 + -0x44" (identifier "puVar36") (+ "+") (number_literal "-0x44")) () ")"))))) (; ";")) (expression_statement "*(undefined4 *)(puVar36 + -0x58) = uVar26;" (assignment_expression "*(undefined4 *)(puVar36 + -0x58) = uVar26" (pointer_expression "*(undefined4 *)(puVar36 + -0x58)" (* "*") (cast_expression "(undefined4 *)(puVar36 + -0x58)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar36 + -0x58)" (( "(") (binary_expression "puVar36 + -0x58" (identifier "puVar36") (+ "+") (number_literal "-0x58")) () ")")))) (= "=") (identifier "uVar26")) (; ";")) (expression_statement "*(undefined4 *)(puVar38 + 0x14) = uVar27;" (assignment_expression "*(undefined4 *)(puVar38 + 0x14) = uVar27" (pointer_expression "*(undefined4 *)(puVar38 + 0x14)" (* "*") (cast_expression "(undefined4 *)(puVar38 + 0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar38 + 0x14)" (( "(") (binary_expression "puVar38 + 0x14" (identifier "puVar38") (+ "+") (number_literal "0x14")) () ")")))) (= "=") (identifier "uVar27")) (; ";")) (expression_statement "*(undefined4 *)(puVar36 + -0x54) = uVar27;" (assignment_expression "*(undefined4 *)(puVar36 + -0x54) = uVar27" (pointer_expression "*(undefined4 *)(puVar36 + -0x54)" (* "*") (cast_expression "(undefined4 *)(puVar36 + -0x54)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar36 + -0x54)" (( "(") (binary_expression "puVar36 + -0x54" (identifier "puVar36") (+ "+") (number_literal "-0x54")) () ")")))) (= "=") (identifier "uVar27")) (; ";")) (expression_statement "*(undefined4 *)(puVar38 + 0x10) = uVar39;" (assignment_expression "*(undefined4 *)(puVar38 + 0x10) = uVar39" (pointer_expression "*(undefined4 *)(puVar38 + 0x10)" (* "*") (cast_expression "(undefined4 *)(puVar38 + 0x10)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar38 + 0x10)" (( "(") (binary_expression "puVar38 + 0x10" (identifier "puVar38") (+ "+") (number_literal "0x10")) () ")")))) (= "=") (identifier "uVar39")) (; ";")) (expression_statement "*(undefined4 *)(puVar38 + 0x18) = uVar8;" (assignment_expression "*(undefined4 *)(puVar38 + 0x18) = uVar8" (pointer_expression "*(undefined4 *)(puVar38 + 0x18)" (* "*") (cast_expression "(undefined4 *)(puVar38 + 0x18)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar38 + 0x18)" (( "(") (binary_expression "puVar38 + 0x18" (identifier "puVar38") (+ "+") (number_literal "0x18")) () ")")))) (= "=") (identifier "uVar8")) (; ";")) (expression_statement "(*pcVar34)(uVar15,uVar26,puVar21,puVar28);" (call_expression "(*pcVar34)(uVar15,uVar26,puVar21,puVar28)" (parenthesized_expression "(*pcVar34)" (( "(") (pointer_expression "*pcVar34" (* "*") (identifier "pcVar34")) () ")")) (argument_list "(uVar15,uVar26,puVar21,puVar28)" (( "(") (identifier "uVar15") (, ",") (identifier "uVar26") (, ",") (identifier "puVar21") (, ",") (identifier "puVar28") () ")"))) (; ";")) (expression_statement "iVar9 = *(int *)(puVar36 + -0x58);" (assignment_expression "iVar9 = *(int *)(puVar36 + -0x58)" (identifier "iVar9") (= "=") (pointer_expression "*(int *)(puVar36 + -0x58)" (* "*") (cast_expression "(int *)(puVar36 + -0x58)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar36 + -0x58)" (( "(") (binary_expression "puVar36 + -0x58" (identifier "puVar36") (+ "+") (number_literal "-0x58")) () ")"))))) (; ";")) (expression_statement "iVar12 = *(int *)(puVar36 + -0x68);" (assignment_expression "iVar12 = *(int *)(puVar36 + -0x68)" (identifier "iVar12") (= "=") (pointer_expression "*(int *)(puVar36 + -0x68)" (* "*") (cast_expression "(int *)(puVar36 + -0x68)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar36 + -0x68)" (( "(") (binary_expression "puVar36 + -0x68" (identifier "puVar36") (+ "+") (number_literal "-0x68")) () ")"))))) (; ";")) (expression_statement "iVar32 = *(int *)(puVar36 + -0x54);" (assignment_expression "iVar32 = *(int *)(puVar36 + -0x54)" (identifier "iVar32") (= "=") (pointer_expression "*(int *)(puVar36 + -0x54)" (* "*") (cast_expression "(int *)(puVar36 + -0x54)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar36 + -0x54)" (( "(") (binary_expression "puVar36 + -0x54" (identifier "puVar36") (+ "+") (number_literal "-0x54")) () ")"))))) (; ";")) (if_statement "if ((iVar7 + (int)puVar28 < iVar9) && (iVar7 != iVar9 - (int)puVar28)) {\n      iVar11 = (iVar9 - (int)puVar28) - iVar7;\n      puVar25 = puVar4 + (int)(iVar7 + (int)puVar28);\n      do {\n        iVar11 = iVar11 + -1;\n        *puVar25 = 0;\n        puVar25 = puVar25 + 1;\n      } while (iVar11 != 0);\n    }" (if "if") (parenthesized_expression "((iVar7 + (int)puVar28 < iVar9) && (iVar7 != iVar9 - (int)puVar28))" (( "(") (binary_expression "(iVar7 + (int)puVar28 < iVar9) && (iVar7 != iVar9 - (int)puVar28)" (parenthesized_expression "(iVar7 + (int)puVar28 < iVar9)" (( "(") (binary_expression "iVar7 + (int)puVar28 < iVar9" (binary_expression "iVar7 + (int)puVar28" (identifier "iVar7") (+ "+") (cast_expression "(int)puVar28" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar28"))) (< "<") (identifier "iVar9")) () ")")) (&& "&&") (parenthesized_expression "(iVar7 != iVar9 - (int)puVar28)" (( "(") (binary_expression "iVar7 != iVar9 - (int)puVar28" (identifier "iVar7") (!= "!=") (binary_expression "iVar9 - (int)puVar28" (identifier "iVar9") (- "-") (cast_expression "(int)puVar28" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar28")))) () ")"))) () ")")) (compound_statement "{\n      iVar11 = (iVar9 - (int)puVar28) - iVar7;\n      puVar25 = puVar4 + (int)(iVar7 + (int)puVar28);\n      do {\n        iVar11 = iVar11 + -1;\n        *puVar25 = 0;\n        puVar25 = puVar25 + 1;\n      } while (iVar11 != 0);\n    }" ({ "{") (expression_statement "iVar11 = (iVar9 - (int)puVar28) - iVar7;" (assignment_expression "iVar11 = (iVar9 - (int)puVar28) - iVar7" (identifier "iVar11") (= "=") (binary_expression "(iVar9 - (int)puVar28) - iVar7" (parenthesized_expression "(iVar9 - (int)puVar28)" (( "(") (binary_expression "iVar9 - (int)puVar28" (identifier "iVar9") (- "-") (cast_expression "(int)puVar28" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar28"))) () ")")) (- "-") (identifier "iVar7"))) (; ";")) (expression_statement "puVar25 = puVar4 + (int)(iVar7 + (int)puVar28);" (assignment_expression "puVar25 = puVar4 + (int)(iVar7 + (int)puVar28)" (identifier "puVar25") (= "=") (binary_expression "puVar4 + (int)(iVar7 + (int)puVar28)" (identifier "puVar4") (+ "+") (cast_expression "(int)(iVar7 + (int)puVar28)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "(iVar7 + (int)puVar28)" (( "(") (binary_expression "iVar7 + (int)puVar28" (identifier "iVar7") (+ "+") (cast_expression "(int)puVar28" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar28"))) () ")"))))) (; ";")) (do_statement "do {\n        iVar11 = iVar11 + -1;\n        *puVar25 = 0;\n        puVar25 = puVar25 + 1;\n      } while (iVar11 != 0);" (do "do") (compound_statement "{\n        iVar11 = iVar11 + -1;\n        *puVar25 = 0;\n        puVar25 = puVar25 + 1;\n      }" ({ "{") (expression_statement "iVar11 = iVar11 + -1;" (assignment_expression "iVar11 = iVar11 + -1" (identifier "iVar11") (= "=") (binary_expression "iVar11 + -1" (identifier "iVar11") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "*puVar25 = 0;" (assignment_expression "*puVar25 = 0" (pointer_expression "*puVar25" (* "*") (identifier "puVar25")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar25 = puVar25 + 1;" (assignment_expression "puVar25 = puVar25 + 1" (identifier "puVar25") (= "=") (binary_expression "puVar25 + 1" (identifier "puVar25") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(iVar11 != 0)" (( "(") (binary_expression "iVar11 != 0" (identifier "iVar11") (!= "!=") (number_literal "0")) () ")")) (; ";")) (} "}"))) (expression_statement "pcVar34 = *(code **)(iVar12 + -0x7b2c);" (assignment_expression "pcVar34 = *(code **)(iVar12 + -0x7b2c)" (identifier "pcVar34") (= "=") (pointer_expression "*(code **)(iVar12 + -0x7b2c)" (* "*") (cast_expression "(code **)(iVar12 + -0x7b2c)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar12 + -0x7b2c)" (( "(") (binary_expression "iVar12 + -0x7b2c" (identifier "iVar12") (+ "+") (number_literal "-0x7b2c")) () ")"))))) (; ";")) (if_statement "if (iVar32 + (int)puVar28 < iVar9) {\n      if (iVar32 != iVar9 - (int)puVar28) {\n        iVar7 = (iVar9 - (int)puVar28) - iVar32;\n        puVar6 = (undefined4 *)(*(int *)(puVar36 + -0x44) + (int)(iVar32 + (int)puVar28) * 4);\n        do {\n          iVar7 = iVar7 + -1;\n          *puVar6 = 0;\n          puVar6 = puVar6 + 1;\n        } while (iVar7 != 0);\n        pcVar34 = *(code **)(iVar12 + -0x7b2c);\n      }\n    }" (if "if") (parenthesized_expression "(iVar32 + (int)puVar28 < iVar9)" (( "(") (binary_expression "iVar32 + (int)puVar28 < iVar9" (binary_expression "iVar32 + (int)puVar28" (identifier "iVar32") (+ "+") (cast_expression "(int)puVar28" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar28"))) (< "<") (identifier "iVar9")) () ")")) (compound_statement "{\n      if (iVar32 != iVar9 - (int)puVar28) {\n        iVar7 = (iVar9 - (int)puVar28) - iVar32;\n        puVar6 = (undefined4 *)(*(int *)(puVar36 + -0x44) + (int)(iVar32 + (int)puVar28) * 4);\n        do {\n          iVar7 = iVar7 + -1;\n          *puVar6 = 0;\n          puVar6 = puVar6 + 1;\n        } while (iVar7 != 0);\n        pcVar34 = *(code **)(iVar12 + -0x7b2c);\n      }\n    }" ({ "{") (if_statement "if (iVar32 != iVar9 - (int)puVar28) {\n        iVar7 = (iVar9 - (int)puVar28) - iVar32;\n        puVar6 = (undefined4 *)(*(int *)(puVar36 + -0x44) + (int)(iVar32 + (int)puVar28) * 4);\n        do {\n          iVar7 = iVar7 + -1;\n          *puVar6 = 0;\n          puVar6 = puVar6 + 1;\n        } while (iVar7 != 0);\n        pcVar34 = *(code **)(iVar12 + -0x7b2c);\n      }" (if "if") (parenthesized_expression "(iVar32 != iVar9 - (int)puVar28)" (( "(") (binary_expression "iVar32 != iVar9 - (int)puVar28" (identifier "iVar32") (!= "!=") (binary_expression "iVar9 - (int)puVar28" (identifier "iVar9") (- "-") (cast_expression "(int)puVar28" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar28")))) () ")")) (compound_statement "{\n        iVar7 = (iVar9 - (int)puVar28) - iVar32;\n        puVar6 = (undefined4 *)(*(int *)(puVar36 + -0x44) + (int)(iVar32 + (int)puVar28) * 4);\n        do {\n          iVar7 = iVar7 + -1;\n          *puVar6 = 0;\n          puVar6 = puVar6 + 1;\n        } while (iVar7 != 0);\n        pcVar34 = *(code **)(iVar12 + -0x7b2c);\n      }" ({ "{") (expression_statement "iVar7 = (iVar9 - (int)puVar28) - iVar32;" (assignment_expression "iVar7 = (iVar9 - (int)puVar28) - iVar32" (identifier "iVar7") (= "=") (binary_expression "(iVar9 - (int)puVar28) - iVar32" (parenthesized_expression "(iVar9 - (int)puVar28)" (( "(") (binary_expression "iVar9 - (int)puVar28" (identifier "iVar9") (- "-") (cast_expression "(int)puVar28" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar28"))) () ")")) (- "-") (identifier "iVar32"))) (; ";")) (expression_statement "puVar6 = (undefined4 *)(*(int *)(puVar36 + -0x44) + (int)(iVar32 + (int)puVar28) * 4);" (assignment_expression "puVar6 = (undefined4 *)(*(int *)(puVar36 + -0x44) + (int)(iVar32 + (int)puVar28) * 4)" (identifier "puVar6") (= "=") (cast_expression "(undefined4 *)(*(int *)(puVar36 + -0x44) + (int)(iVar32 + (int)puVar28) * 4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(puVar36 + -0x44) + (int)(iVar32 + (int)puVar28) * 4)" (( "(") (binary_expression "*(int *)(puVar36 + -0x44) + (int)(iVar32 + (int)puVar28) * 4" (pointer_expression "*(int *)(puVar36 + -0x44)" (* "*") (cast_expression "(int *)(puVar36 + -0x44)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar36 + -0x44)" (( "(") (binary_expression "puVar36 + -0x44" (identifier "puVar36") (+ "+") (number_literal "-0x44")) () ")")))) (+ "+") (binary_expression "(int)(iVar32 + (int)puVar28) * 4" (cast_expression "(int)(iVar32 + (int)puVar28)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "(iVar32 + (int)puVar28)" (( "(") (binary_expression "iVar32 + (int)puVar28" (identifier "iVar32") (+ "+") (cast_expression "(int)puVar28" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar28"))) () ")"))) (* "*") (number_literal "4"))) () ")")))) (; ";")) (do_statement "do {\n          iVar7 = iVar7 + -1;\n          *puVar6 = 0;\n          puVar6 = puVar6 + 1;\n        } while (iVar7 != 0);" (do "do") (compound_statement "{\n          iVar7 = iVar7 + -1;\n          *puVar6 = 0;\n          puVar6 = puVar6 + 1;\n        }" ({ "{") (expression_statement "iVar7 = iVar7 + -1;" (assignment_expression "iVar7 = iVar7 + -1" (identifier "iVar7") (= "=") (binary_expression "iVar7 + -1" (identifier "iVar7") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "*puVar6 = 0;" (assignment_expression "*puVar6 = 0" (pointer_expression "*puVar6" (* "*") (identifier "puVar6")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar6 = puVar6 + 1;" (assignment_expression "puVar6 = puVar6 + 1" (identifier "puVar6") (= "=") (binary_expression "puVar6 + 1" (identifier "puVar6") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(iVar7 != 0)" (( "(") (binary_expression "iVar7 != 0" (identifier "iVar7") (!= "!=") (number_literal "0")) () ")")) (; ";")) (expression_statement "pcVar34 = *(code **)(iVar12 + -0x7b2c);" (assignment_expression "pcVar34 = *(code **)(iVar12 + -0x7b2c)" (identifier "pcVar34") (= "=") (pointer_expression "*(code **)(iVar12 + -0x7b2c)" (* "*") (cast_expression "(code **)(iVar12 + -0x7b2c)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar12 + -0x7b2c)" (( "(") (binary_expression "iVar12 + -0x7b2c" (identifier "iVar12") (+ "+") (number_literal "-0x7b2c")) () ")"))))) (; ";")) (} "}"))) (} "}"))) (expression_statement "*(int *)(puVar36 + -0x54) = iVar9;" (assignment_expression "*(int *)(puVar36 + -0x54) = iVar9" (pointer_expression "*(int *)(puVar36 + -0x54)" (* "*") (cast_expression "(int *)(puVar36 + -0x54)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar36 + -0x54)" (( "(") (binary_expression "puVar36 + -0x54" (identifier "puVar36") (+ "+") (number_literal "-0x54")) () ")")))) (= "=") (identifier "iVar9")) (; ";")) (expression_statement "uVar3 = (*pcVar34)(puVar4,puVar4,*(undefined4 *)(puVar36 + -0x44),iVar9);" (assignment_expression "uVar3 = (*pcVar34)(puVar4,puVar4,*(undefined4 *)(puVar36 + -0x44),iVar9)" (identifier "uVar3") (= "=") (call_expression "(*pcVar34)(puVar4,puVar4,*(undefined4 *)(puVar36 + -0x44),iVar9)" (parenthesized_expression "(*pcVar34)" (( "(") (pointer_expression "*pcVar34" (* "*") (identifier "pcVar34")) () ")")) (argument_list "(puVar4,puVar4,*(undefined4 *)(puVar36 + -0x44),iVar9)" (( "(") (identifier "puVar4") (, ",") (identifier "puVar4") (, ",") (pointer_expression "*(undefined4 *)(puVar36 + -0x44)" (* "*") (cast_expression "(undefined4 *)(puVar36 + -0x44)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar36 + -0x44)" (( "(") (binary_expression "puVar36 + -0x44" (identifier "puVar36") (+ "+") (number_literal "-0x44")) () ")")))) (, ",") (identifier "iVar9") () ")")))) (; ";")) (expression_statement "uVar13 = *puVar4;" (assignment_expression "uVar13 = *puVar4" (identifier "uVar13") (= "=") (pointer_expression "*puVar4" (* "*") (identifier "puVar4"))) (; ";")) (expression_statement "iVar9 = *(int *)(puVar36 + -0x68);" (assignment_expression "iVar9 = *(int *)(puVar36 + -0x68)" (identifier "iVar9") (= "=") (pointer_expression "*(int *)(puVar36 + -0x68)" (* "*") (cast_expression "(int *)(puVar36 + -0x68)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar36 + -0x68)" (( "(") (binary_expression "puVar36 + -0x68" (identifier "puVar36") (+ "+") (number_literal "-0x68")) () ")"))))) (; ";")) (expression_statement "uVar39 = *(undefined4 *)(puVar36 + -0x54);" (assignment_expression "uVar39 = *(undefined4 *)(puVar36 + -0x54)" (identifier "uVar39") (= "=") (pointer_expression "*(undefined4 *)(puVar36 + -0x54)" (* "*") (cast_expression "(undefined4 *)(puVar36 + -0x54)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar36 + -0x54)" (( "(") (binary_expression "puVar36 + -0x54" (identifier "puVar36") (+ "+") (number_literal "-0x54")) () ")"))))) (; ";")) (expression_statement "*puVar4 = uVar13 - uVar3;" (assignment_expression "*puVar4 = uVar13 - uVar3" (pointer_expression "*puVar4" (* "*") (identifier "puVar4")) (= "=") (binary_expression "uVar13 - uVar3" (identifier "uVar13") (- "-") (identifier "uVar3"))) (; ";")) (expression_statement "puVar25 = puVar4;" (assignment_expression "puVar25 = puVar4" (identifier "puVar25") (= "=") (identifier "puVar4")) (; ";")) (if_statement "if (uVar13 < uVar3) {\n      do {\n        puVar25 = puVar25 + 1;\n        uVar3 = *puVar25;\n        *puVar25 = uVar3 - 1;\n      } while (uVar3 == 0);\n    }" (if "if") (parenthesized_expression "(uVar13 < uVar3)" (( "(") (binary_expression "uVar13 < uVar3" (identifier "uVar13") (< "<") (identifier "uVar3")) () ")")) (compound_statement "{\n      do {\n        puVar25 = puVar25 + 1;\n        uVar3 = *puVar25;\n        *puVar25 = uVar3 - 1;\n      } while (uVar3 == 0);\n    }" ({ "{") (do_statement "do {\n        puVar25 = puVar25 + 1;\n        uVar3 = *puVar25;\n        *puVar25 = uVar3 - 1;\n      } while (uVar3 == 0);" (do "do") (compound_statement "{\n        puVar25 = puVar25 + 1;\n        uVar3 = *puVar25;\n        *puVar25 = uVar3 - 1;\n      }" ({ "{") (expression_statement "puVar25 = puVar25 + 1;" (assignment_expression "puVar25 = puVar25 + 1" (identifier "puVar25") (= "=") (binary_expression "puVar25 + 1" (identifier "puVar25") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "uVar3 = *puVar25;" (assignment_expression "uVar3 = *puVar25" (identifier "uVar3") (= "=") (pointer_expression "*puVar25" (* "*") (identifier "puVar25"))) (; ";")) (expression_statement "*puVar25 = uVar3 - 1;" (assignment_expression "*puVar25 = uVar3 - 1" (pointer_expression "*puVar25" (* "*") (identifier "puVar25")) (= "=") (binary_expression "uVar3 - 1" (identifier "uVar3") (- "-") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(uVar3 == 0)" (( "(") (binary_expression "uVar3 == 0" (identifier "uVar3") (== "==") (number_literal "0")) () ")")) (; ";")) (} "}"))) (expression_statement "uVar8 = *(undefined4 *)(iVar24 + 0x10);" (assignment_expression "uVar8 = *(undefined4 *)(iVar24 + 0x10)" (identifier "uVar8") (= "=") (pointer_expression "*(undefined4 *)(iVar24 + 0x10)" (* "*") (cast_expression "(undefined4 *)(iVar24 + 0x10)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar24 + 0x10)" (( "(") (binary_expression "iVar24 + 0x10" (identifier "iVar24") (+ "+") (number_literal "0x10")) () ")"))))) (; ";")) (expression_statement "pcVar34 = *(code **)(iVar9 + -0x7cd8);" (assignment_expression "pcVar34 = *(code **)(iVar9 + -0x7cd8)" (identifier "pcVar34") (= "=") (pointer_expression "*(code **)(iVar9 + -0x7cd8)" (* "*") (cast_expression "(code **)(iVar9 + -0x7cd8)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar9 + -0x7cd8)" (( "(") (binary_expression "iVar9 + -0x7cd8" (identifier "iVar9") (+ "+") (number_literal "-0x7cd8")) () ")"))))) (; ";")) (expression_statement "uVar15 = *(undefined4 *)(puVar36 + -0x44);" (assignment_expression "uVar15 = *(undefined4 *)(puVar36 + -0x44)" (identifier "uVar15") (= "=") (pointer_expression "*(undefined4 *)(puVar36 + -0x44)" (* "*") (cast_expression "(undefined4 *)(puVar36 + -0x44)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar36 + -0x44)" (( "(") (binary_expression "puVar36 + -0x44" (identifier "puVar36") (+ "+") (number_literal "-0x44")) () ")"))))) (; ";")) (expression_statement "*(undefined4 *)(puVar36 + -0x54) = uVar39;" (assignment_expression "*(undefined4 *)(puVar36 + -0x54) = uVar39" (pointer_expression "*(undefined4 *)(puVar36 + -0x54)" (* "*") (cast_expression "(undefined4 *)(puVar36 + -0x54)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar36 + -0x54)" (( "(") (binary_expression "puVar36 + -0x54" (identifier "puVar36") (+ "+") (number_literal "-0x54")) () ")")))) (= "=") (identifier "uVar39")) (; ";")) (expression_statement "*(undefined4 *)(puVar38 + 0x18) = *(undefined4 *)(puVar36 + -0x48);" (assignment_expression "*(undefined4 *)(puVar38 + 0x18) = *(undefined4 *)(puVar36 + -0x48)" (pointer_expression "*(undefined4 *)(puVar38 + 0x18)" (* "*") (cast_expression "(undefined4 *)(puVar38 + 0x18)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar38 + 0x18)" (( "(") (binary_expression "puVar38 + 0x18" (identifier "puVar38") (+ "+") (number_literal "0x18")) () ")")))) (= "=") (pointer_expression "*(undefined4 *)(puVar36 + -0x48)" (* "*") (cast_expression "(undefined4 *)(puVar36 + -0x48)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar36 + -0x48)" (( "(") (binary_expression "puVar36 + -0x48" (identifier "puVar36") (+ "+") (number_literal "-0x48")) () ")"))))) (; ";")) (expression_statement "*(int *)(puVar38 + 0x14) = iVar22;" (assignment_expression "*(int *)(puVar38 + 0x14) = iVar22" (pointer_expression "*(int *)(puVar38 + 0x14)" (* "*") (cast_expression "(int *)(puVar38 + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar38 + 0x14)" (( "(") (binary_expression "puVar38 + 0x14" (identifier "puVar38") (+ "+") (number_literal "0x14")) () ")")))) (= "=") (identifier "iVar22")) (; ";")) (expression_statement "*(undefined4 *)(puVar38 + 0x10) = uVar8;" (assignment_expression "*(undefined4 *)(puVar38 + 0x10) = uVar8" (pointer_expression "*(undefined4 *)(puVar38 + 0x10)" (* "*") (cast_expression "(undefined4 *)(puVar38 + 0x10)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar38 + 0x10)" (( "(") (binary_expression "puVar38 + 0x10" (identifier "puVar38") (+ "+") (number_literal "0x10")) () ")")))) (= "=") (identifier "uVar8")) (; ";")) (expression_statement "(*pcVar34)(uVar15,uVar39,puVar17,puVar28);" (call_expression "(*pcVar34)(uVar15,uVar39,puVar17,puVar28)" (parenthesized_expression "(*pcVar34)" (( "(") (pointer_expression "*pcVar34" (* "*") (identifier "pcVar34")) () ")")) (argument_list "(uVar15,uVar39,puVar17,puVar28)" (( "(") (identifier "uVar15") (, ",") (identifier "uVar39") (, ",") (identifier "puVar17") (, ",") (identifier "puVar28") () ")"))) (; ";")) (expression_statement "iVar9 = *(int *)(puVar36 + -0x68);" (assignment_expression "iVar9 = *(int *)(puVar36 + -0x68)" (identifier "iVar9") (= "=") (pointer_expression "*(int *)(puVar36 + -0x68)" (* "*") (cast_expression "(int *)(puVar36 + -0x68)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar36 + -0x68)" (( "(") (binary_expression "puVar36 + -0x68" (identifier "puVar36") (+ "+") (number_literal "-0x68")) () ")"))))) (; ";")) (expression_statement "uVar39 = *(undefined4 *)(puVar36 + -0x54);" (assignment_expression "uVar39 = *(undefined4 *)(puVar36 + -0x54)" (identifier "uVar39") (= "=") (pointer_expression "*(undefined4 *)(puVar36 + -0x54)" (* "*") (cast_expression "(undefined4 *)(puVar36 + -0x54)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar36 + -0x54)" (( "(") (binary_expression "puVar36 + -0x54" (identifier "puVar36") (+ "+") (number_literal "-0x54")) () ")"))))) (; ";")) (if_statement "if (puVar29 != (uint *)0x0) {\n      iVar32 = (int)puVar29 + -1;\n      uVar3 = *puVar4;\n      puVar18 = puVar17;\n      puVar25 = puVar4;\n      if (iVar32 == 0) {\n        *puVar17 = uVar3;\n      }\n      else {\n        do {\n          *puVar18 = uVar3;\n          iVar32 = iVar32 + -1;\n          uVar3 = puVar25[1];\n          puVar18 = puVar18 + 1;\n          puVar25 = puVar25 + 1;\n        } while (iVar32 != 0);\n        puVar17[(int)puVar29 + -1] = uVar3;\n      }\n    }" (if "if") (parenthesized_expression "(puVar29 != (uint *)0x0)" (( "(") (binary_expression "puVar29 != (uint *)0x0" (identifier "puVar29") (!= "!=") (cast_expression "(uint *)0x0" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n      iVar32 = (int)puVar29 + -1;\n      uVar3 = *puVar4;\n      puVar18 = puVar17;\n      puVar25 = puVar4;\n      if (iVar32 == 0) {\n        *puVar17 = uVar3;\n      }\n      else {\n        do {\n          *puVar18 = uVar3;\n          iVar32 = iVar32 + -1;\n          uVar3 = puVar25[1];\n          puVar18 = puVar18 + 1;\n          puVar25 = puVar25 + 1;\n        } while (iVar32 != 0);\n        puVar17[(int)puVar29 + -1] = uVar3;\n      }\n    }" ({ "{") (expression_statement "iVar32 = (int)puVar29 + -1;" (assignment_expression "iVar32 = (int)puVar29 + -1" (identifier "iVar32") (= "=") (binary_expression "(int)puVar29 + -1" (cast_expression "(int)puVar29" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar29")) (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "uVar3 = *puVar4;" (assignment_expression "uVar3 = *puVar4" (identifier "uVar3") (= "=") (pointer_expression "*puVar4" (* "*") (identifier "puVar4"))) (; ";")) (expression_statement "puVar18 = puVar17;" (assignment_expression "puVar18 = puVar17" (identifier "puVar18") (= "=") (identifier "puVar17")) (; ";")) (expression_statement "puVar25 = puVar4;" (assignment_expression "puVar25 = puVar4" (identifier "puVar25") (= "=") (identifier "puVar4")) (; ";")) (if_statement "if (iVar32 == 0) {\n        *puVar17 = uVar3;\n      }\n      else {\n        do {\n          *puVar18 = uVar3;\n          iVar32 = iVar32 + -1;\n          uVar3 = puVar25[1];\n          puVar18 = puVar18 + 1;\n          puVar25 = puVar25 + 1;\n        } while (iVar32 != 0);\n        puVar17[(int)puVar29 + -1] = uVar3;\n      }" (if "if") (parenthesized_expression "(iVar32 == 0)" (( "(") (binary_expression "iVar32 == 0" (identifier "iVar32") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n        *puVar17 = uVar3;\n      }" ({ "{") (expression_statement "*puVar17 = uVar3;" (assignment_expression "*puVar17 = uVar3" (pointer_expression "*puVar17" (* "*") (identifier "puVar17")) (= "=") (identifier "uVar3")) (; ";")) (} "}")) (else_clause "else {\n        do {\n          *puVar18 = uVar3;\n          iVar32 = iVar32 + -1;\n          uVar3 = puVar25[1];\n          puVar18 = puVar18 + 1;\n          puVar25 = puVar25 + 1;\n        } while (iVar32 != 0);\n        puVar17[(int)puVar29 + -1] = uVar3;\n      }" (else "else") (compound_statement "{\n        do {\n          *puVar18 = uVar3;\n          iVar32 = iVar32 + -1;\n          uVar3 = puVar25[1];\n          puVar18 = puVar18 + 1;\n          puVar25 = puVar25 + 1;\n        } while (iVar32 != 0);\n        puVar17[(int)puVar29 + -1] = uVar3;\n      }" ({ "{") (do_statement "do {\n          *puVar18 = uVar3;\n          iVar32 = iVar32 + -1;\n          uVar3 = puVar25[1];\n          puVar18 = puVar18 + 1;\n          puVar25 = puVar25 + 1;\n        } while (iVar32 != 0);" (do "do") (compound_statement "{\n          *puVar18 = uVar3;\n          iVar32 = iVar32 + -1;\n          uVar3 = puVar25[1];\n          puVar18 = puVar18 + 1;\n          puVar25 = puVar25 + 1;\n        }" ({ "{") (expression_statement "*puVar18 = uVar3;" (assignment_expression "*puVar18 = uVar3" (pointer_expression "*puVar18" (* "*") (identifier "puVar18")) (= "=") (identifier "uVar3")) (; ";")) (expression_statement "iVar32 = iVar32 + -1;" (assignment_expression "iVar32 = iVar32 + -1" (identifier "iVar32") (= "=") (binary_expression "iVar32 + -1" (identifier "iVar32") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "uVar3 = puVar25[1];" (assignment_expression "uVar3 = puVar25[1]" (identifier "uVar3") (= "=") (subscript_expression "puVar25[1]" (identifier "puVar25") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "puVar18 = puVar18 + 1;" (assignment_expression "puVar18 = puVar18 + 1" (identifier "puVar18") (= "=") (binary_expression "puVar18 + 1" (identifier "puVar18") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "puVar25 = puVar25 + 1;" (assignment_expression "puVar25 = puVar25 + 1" (identifier "puVar25") (= "=") (binary_expression "puVar25 + 1" (identifier "puVar25") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(iVar32 != 0)" (( "(") (binary_expression "iVar32 != 0" (identifier "iVar32") (!= "!=") (number_literal "0")) () ")")) (; ";")) (expression_statement "puVar17[(int)puVar29 + -1] = uVar3;" (assignment_expression "puVar17[(int)puVar29 + -1] = uVar3" (subscript_expression "puVar17[(int)puVar29 + -1]" (identifier "puVar17") ([ "[") (binary_expression "(int)puVar29 + -1" (cast_expression "(int)puVar29" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar29")) (+ "+") (number_literal "-1")) (] "]")) (= "=") (identifier "uVar3")) (; ";")) (} "}")))) (} "}"))) (expression_statement "uVar8 = *(undefined4 *)(iVar24 + 8);" (assignment_expression "uVar8 = *(undefined4 *)(iVar24 + 8)" (identifier "uVar8") (= "=") (pointer_expression "*(undefined4 *)(iVar24 + 8)" (* "*") (cast_expression "(undefined4 *)(iVar24 + 8)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar24 + 8)" (( "(") (binary_expression "iVar24 + 8" (identifier "iVar24") (+ "+") (number_literal "8")) () ")"))))) (; ";")) (expression_statement "pcVar34 = *(code **)(iVar9 + -0x7cd8);" (assignment_expression "pcVar34 = *(code **)(iVar9 + -0x7cd8)" (identifier "pcVar34") (= "=") (pointer_expression "*(code **)(iVar9 + -0x7cd8)" (* "*") (cast_expression "(code **)(iVar9 + -0x7cd8)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar9 + -0x7cd8)" (( "(") (binary_expression "iVar9 + -0x7cd8" (identifier "iVar9") (+ "+") (number_literal "-0x7cd8")) () ")"))))) (; ";")) (expression_statement "*(undefined4 *)(puVar38 + 0x18) = *(undefined4 *)(puVar36 + -0x48);" (assignment_expression "*(undefined4 *)(puVar38 + 0x18) = *(undefined4 *)(puVar36 + -0x48)" (pointer_expression "*(undefined4 *)(puVar38 + 0x18)" (* "*") (cast_expression "(undefined4 *)(puVar38 + 0x18)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar38 + 0x18)" (( "(") (binary_expression "puVar38 + 0x18" (identifier "puVar38") (+ "+") (number_literal "0x18")) () ")")))) (= "=") (pointer_expression "*(undefined4 *)(puVar36 + -0x48)" (* "*") (cast_expression "(undefined4 *)(puVar36 + -0x48)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar36 + -0x48)" (( "(") (binary_expression "puVar36 + -0x48" (identifier "puVar36") (+ "+") (number_literal "-0x48")) () ")"))))) (; ";")) (expression_statement "*(undefined4 *)(puVar36 + -0x48) = uVar39;" (assignment_expression "*(undefined4 *)(puVar36 + -0x48) = uVar39" (pointer_expression "*(undefined4 *)(puVar36 + -0x48)" (* "*") (cast_expression "(undefined4 *)(puVar36 + -0x48)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar36 + -0x48)" (( "(") (binary_expression "puVar36 + -0x48" (identifier "puVar36") (+ "+") (number_literal "-0x48")) () ")")))) (= "=") (identifier "uVar39")) (; ";")) (expression_statement "*(undefined4 *)(puVar38 + 0x10) = uVar8;" (assignment_expression "*(undefined4 *)(puVar38 + 0x10) = uVar8" (pointer_expression "*(undefined4 *)(puVar38 + 0x10)" (* "*") (cast_expression "(undefined4 *)(puVar38 + 0x10)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar38 + 0x10)" (( "(") (binary_expression "puVar38 + 0x10" (identifier "puVar38") (+ "+") (number_literal "0x10")) () ")")))) (= "=") (identifier "uVar8")) (; ";")) (expression_statement "*(undefined4 *)(puVar38 + 0x14) = *(undefined4 *)(puVar36 + -0x50);" (assignment_expression "*(undefined4 *)(puVar38 + 0x14) = *(undefined4 *)(puVar36 + -0x50)" (pointer_expression "*(undefined4 *)(puVar38 + 0x14)" (* "*") (cast_expression "(undefined4 *)(puVar38 + 0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar38 + 0x14)" (( "(") (binary_expression "puVar38 + 0x14" (identifier "puVar38") (+ "+") (number_literal "0x14")) () ")")))) (= "=") (pointer_expression "*(undefined4 *)(puVar36 + -0x50)" (* "*") (cast_expression "(undefined4 *)(puVar36 + -0x50)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar36 + -0x50)" (( "(") (binary_expression "puVar36 + -0x50" (identifier "puVar36") (+ "+") (number_literal "-0x50")) () ")"))))) (; ";")) (expression_statement "(*pcVar34)(puVar4,uVar39,puVar21,puVar28);" (call_expression "(*pcVar34)(puVar4,uVar39,puVar21,puVar28)" (parenthesized_expression "(*pcVar34)" (( "(") (pointer_expression "*pcVar34" (* "*") (identifier "pcVar34")) () ")")) (argument_list "(puVar4,uVar39,puVar21,puVar28)" (( "(") (identifier "puVar4") (, ",") (identifier "uVar39") (, ",") (identifier "puVar21") (, ",") (identifier "puVar28") () ")"))) (; ";")) (expression_statement "iVar9 = *(int *)(puVar36 + -0x48);" (assignment_expression "iVar9 = *(int *)(puVar36 + -0x48)" (identifier "iVar9") (= "=") (pointer_expression "*(int *)(puVar36 + -0x48)" (* "*") (cast_expression "(int *)(puVar36 + -0x48)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar36 + -0x48)" (( "(") (binary_expression "puVar36 + -0x48" (identifier "puVar36") (+ "+") (number_literal "-0x48")) () ")"))))) (; ";")) (expression_statement "iVar32 = *(int *)(puVar36 + -0x68);" (assignment_expression "iVar32 = *(int *)(puVar36 + -0x68)" (identifier "iVar32") (= "=") (pointer_expression "*(int *)(puVar36 + -0x68)" (* "*") (cast_expression "(int *)(puVar36 + -0x68)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar36 + -0x68)" (( "(") (binary_expression "puVar36 + -0x68" (identifier "puVar36") (+ "+") (number_literal "-0x68")) () ")"))))) (; ";")) (if_statement "if ((int)puVar28 + iVar22 < iVar9) {\n      if (iVar22 != iVar9 - (int)puVar28) {\n        iVar12 = (iVar9 - (int)puVar28) - iVar22;\n        puVar6 = (undefined4 *)(*(int *)(puVar36 + -0x44) + (int)((int)puVar28 + iVar22) * 4);\n        do {\n          iVar12 = iVar12 + -1;\n          *puVar6 = 0;\n          puVar6 = puVar6 + 1;\n        } while (iVar12 != 0);\n      }\n    }" (if "if") (parenthesized_expression "((int)puVar28 + iVar22 < iVar9)" (( "(") (binary_expression "(int)puVar28 + iVar22 < iVar9" (binary_expression "(int)puVar28 + iVar22" (cast_expression "(int)puVar28" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar28")) (+ "+") (identifier "iVar22")) (< "<") (identifier "iVar9")) () ")")) (compound_statement "{\n      if (iVar22 != iVar9 - (int)puVar28) {\n        iVar12 = (iVar9 - (int)puVar28) - iVar22;\n        puVar6 = (undefined4 *)(*(int *)(puVar36 + -0x44) + (int)((int)puVar28 + iVar22) * 4);\n        do {\n          iVar12 = iVar12 + -1;\n          *puVar6 = 0;\n          puVar6 = puVar6 + 1;\n        } while (iVar12 != 0);\n      }\n    }" ({ "{") (if_statement "if (iVar22 != iVar9 - (int)puVar28) {\n        iVar12 = (iVar9 - (int)puVar28) - iVar22;\n        puVar6 = (undefined4 *)(*(int *)(puVar36 + -0x44) + (int)((int)puVar28 + iVar22) * 4);\n        do {\n          iVar12 = iVar12 + -1;\n          *puVar6 = 0;\n          puVar6 = puVar6 + 1;\n        } while (iVar12 != 0);\n      }" (if "if") (parenthesized_expression "(iVar22 != iVar9 - (int)puVar28)" (( "(") (binary_expression "iVar22 != iVar9 - (int)puVar28" (identifier "iVar22") (!= "!=") (binary_expression "iVar9 - (int)puVar28" (identifier "iVar9") (- "-") (cast_expression "(int)puVar28" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar28")))) () ")")) (compound_statement "{\n        iVar12 = (iVar9 - (int)puVar28) - iVar22;\n        puVar6 = (undefined4 *)(*(int *)(puVar36 + -0x44) + (int)((int)puVar28 + iVar22) * 4);\n        do {\n          iVar12 = iVar12 + -1;\n          *puVar6 = 0;\n          puVar6 = puVar6 + 1;\n        } while (iVar12 != 0);\n      }" ({ "{") (expression_statement "iVar12 = (iVar9 - (int)puVar28) - iVar22;" (assignment_expression "iVar12 = (iVar9 - (int)puVar28) - iVar22" (identifier "iVar12") (= "=") (binary_expression "(iVar9 - (int)puVar28) - iVar22" (parenthesized_expression "(iVar9 - (int)puVar28)" (( "(") (binary_expression "iVar9 - (int)puVar28" (identifier "iVar9") (- "-") (cast_expression "(int)puVar28" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar28"))) () ")")) (- "-") (identifier "iVar22"))) (; ";")) (expression_statement "puVar6 = (undefined4 *)(*(int *)(puVar36 + -0x44) + (int)((int)puVar28 + iVar22) * 4);" (assignment_expression "puVar6 = (undefined4 *)(*(int *)(puVar36 + -0x44) + (int)((int)puVar28 + iVar22) * 4)" (identifier "puVar6") (= "=") (cast_expression "(undefined4 *)(*(int *)(puVar36 + -0x44) + (int)((int)puVar28 + iVar22) * 4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(puVar36 + -0x44) + (int)((int)puVar28 + iVar22) * 4)" (( "(") (binary_expression "*(int *)(puVar36 + -0x44) + (int)((int)puVar28 + iVar22) * 4" (pointer_expression "*(int *)(puVar36 + -0x44)" (* "*") (cast_expression "(int *)(puVar36 + -0x44)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar36 + -0x44)" (( "(") (binary_expression "puVar36 + -0x44" (identifier "puVar36") (+ "+") (number_literal "-0x44")) () ")")))) (+ "+") (binary_expression "(int)((int)puVar28 + iVar22) * 4" (cast_expression "(int)((int)puVar28 + iVar22)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "((int)puVar28 + iVar22)" (( "(") (binary_expression "(int)puVar28 + iVar22" (cast_expression "(int)puVar28" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar28")) (+ "+") (identifier "iVar22")) () ")"))) (* "*") (number_literal "4"))) () ")")))) (; ";")) (do_statement "do {\n          iVar12 = iVar12 + -1;\n          *puVar6 = 0;\n          puVar6 = puVar6 + 1;\n        } while (iVar12 != 0);" (do "do") (compound_statement "{\n          iVar12 = iVar12 + -1;\n          *puVar6 = 0;\n          puVar6 = puVar6 + 1;\n        }" ({ "{") (expression_statement "iVar12 = iVar12 + -1;" (assignment_expression "iVar12 = iVar12 + -1" (identifier "iVar12") (= "=") (binary_expression "iVar12 + -1" (identifier "iVar12") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "*puVar6 = 0;" (assignment_expression "*puVar6 = 0" (pointer_expression "*puVar6" (* "*") (identifier "puVar6")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar6 = puVar6 + 1;" (assignment_expression "puVar6 = puVar6 + 1" (identifier "puVar6") (= "=") (binary_expression "puVar6 + 1" (identifier "puVar6") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(iVar12 != 0)" (( "(") (binary_expression "iVar12 != 0" (identifier "iVar12") (!= "!=") (number_literal "0")) () ")")) (; ";")) (} "}"))) (} "}"))) (expression_statement "pcVar34 = *(code **)(iVar32 + -0x7b2c);" (assignment_expression "pcVar34 = *(code **)(iVar32 + -0x7b2c)" (identifier "pcVar34") (= "=") (pointer_expression "*(code **)(iVar32 + -0x7b2c)" (* "*") (cast_expression "(code **)(iVar32 + -0x7b2c)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar32 + -0x7b2c)" (( "(") (binary_expression "iVar32 + -0x7b2c" (identifier "iVar32") (+ "+") (number_literal "-0x7b2c")) () ")"))))) (; ";")) (if_statement "if (*(int *)(puVar36 + -0x50) + (int)puVar28 < iVar9) {\n      if (*(int *)(puVar36 + -0x50) != iVar9 - (int)puVar28) {\n        iVar22 = (iVar9 - (int)puVar28) - *(int *)(puVar36 + -0x50);\n        puVar28 = puVar4 + (int)(*(int *)(puVar36 + -0x50) + (int)puVar28);\n        do {\n          iVar22 = iVar22 + -1;\n          *puVar28 = 0;\n          puVar28 = puVar28 + 1;\n        } while (iVar22 != 0);\n        pcVar34 = *(code **)(iVar32 + -0x7b2c);\n      }\n    }" (if "if") (parenthesized_expression "(*(int *)(puVar36 + -0x50) + (int)puVar28 < iVar9)" (( "(") (binary_expression "*(int *)(puVar36 + -0x50) + (int)puVar28 < iVar9" (binary_expression "*(int *)(puVar36 + -0x50) + (int)puVar28" (pointer_expression "*(int *)(puVar36 + -0x50)" (* "*") (cast_expression "(int *)(puVar36 + -0x50)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar36 + -0x50)" (( "(") (binary_expression "puVar36 + -0x50" (identifier "puVar36") (+ "+") (number_literal "-0x50")) () ")")))) (+ "+") (cast_expression "(int)puVar28" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar28"))) (< "<") (identifier "iVar9")) () ")")) (compound_statement "{\n      if (*(int *)(puVar36 + -0x50) != iVar9 - (int)puVar28) {\n        iVar22 = (iVar9 - (int)puVar28) - *(int *)(puVar36 + -0x50);\n        puVar28 = puVar4 + (int)(*(int *)(puVar36 + -0x50) + (int)puVar28);\n        do {\n          iVar22 = iVar22 + -1;\n          *puVar28 = 0;\n          puVar28 = puVar28 + 1;\n        } while (iVar22 != 0);\n        pcVar34 = *(code **)(iVar32 + -0x7b2c);\n      }\n    }" ({ "{") (if_statement "if (*(int *)(puVar36 + -0x50) != iVar9 - (int)puVar28) {\n        iVar22 = (iVar9 - (int)puVar28) - *(int *)(puVar36 + -0x50);\n        puVar28 = puVar4 + (int)(*(int *)(puVar36 + -0x50) + (int)puVar28);\n        do {\n          iVar22 = iVar22 + -1;\n          *puVar28 = 0;\n          puVar28 = puVar28 + 1;\n        } while (iVar22 != 0);\n        pcVar34 = *(code **)(iVar32 + -0x7b2c);\n      }" (if "if") (parenthesized_expression "(*(int *)(puVar36 + -0x50) != iVar9 - (int)puVar28)" (( "(") (binary_expression "*(int *)(puVar36 + -0x50) != iVar9 - (int)puVar28" (pointer_expression "*(int *)(puVar36 + -0x50)" (* "*") (cast_expression "(int *)(puVar36 + -0x50)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar36 + -0x50)" (( "(") (binary_expression "puVar36 + -0x50" (identifier "puVar36") (+ "+") (number_literal "-0x50")) () ")")))) (!= "!=") (binary_expression "iVar9 - (int)puVar28" (identifier "iVar9") (- "-") (cast_expression "(int)puVar28" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar28")))) () ")")) (compound_statement "{\n        iVar22 = (iVar9 - (int)puVar28) - *(int *)(puVar36 + -0x50);\n        puVar28 = puVar4 + (int)(*(int *)(puVar36 + -0x50) + (int)puVar28);\n        do {\n          iVar22 = iVar22 + -1;\n          *puVar28 = 0;\n          puVar28 = puVar28 + 1;\n        } while (iVar22 != 0);\n        pcVar34 = *(code **)(iVar32 + -0x7b2c);\n      }" ({ "{") (expression_statement "iVar22 = (iVar9 - (int)puVar28) - *(int *)(puVar36 + -0x50);" (assignment_expression "iVar22 = (iVar9 - (int)puVar28) - *(int *)(puVar36 + -0x50)" (identifier "iVar22") (= "=") (binary_expression "(iVar9 - (int)puVar28) - *(int *)(puVar36 + -0x50)" (parenthesized_expression "(iVar9 - (int)puVar28)" (( "(") (binary_expression "iVar9 - (int)puVar28" (identifier "iVar9") (- "-") (cast_expression "(int)puVar28" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar28"))) () ")")) (- "-") (pointer_expression "*(int *)(puVar36 + -0x50)" (* "*") (cast_expression "(int *)(puVar36 + -0x50)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar36 + -0x50)" (( "(") (binary_expression "puVar36 + -0x50" (identifier "puVar36") (+ "+") (number_literal "-0x50")) () ")")))))) (; ";")) (expression_statement "puVar28 = puVar4 + (int)(*(int *)(puVar36 + -0x50) + (int)puVar28);" (assignment_expression "puVar28 = puVar4 + (int)(*(int *)(puVar36 + -0x50) + (int)puVar28)" (identifier "puVar28") (= "=") (binary_expression "puVar4 + (int)(*(int *)(puVar36 + -0x50) + (int)puVar28)" (identifier "puVar4") (+ "+") (cast_expression "(int)(*(int *)(puVar36 + -0x50) + (int)puVar28)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "(*(int *)(puVar36 + -0x50) + (int)puVar28)" (( "(") (binary_expression "*(int *)(puVar36 + -0x50) + (int)puVar28" (pointer_expression "*(int *)(puVar36 + -0x50)" (* "*") (cast_expression "(int *)(puVar36 + -0x50)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar36 + -0x50)" (( "(") (binary_expression "puVar36 + -0x50" (identifier "puVar36") (+ "+") (number_literal "-0x50")) () ")")))) (+ "+") (cast_expression "(int)puVar28" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar28"))) () ")"))))) (; ";")) (do_statement "do {\n          iVar22 = iVar22 + -1;\n          *puVar28 = 0;\n          puVar28 = puVar28 + 1;\n        } while (iVar22 != 0);" (do "do") (compound_statement "{\n          iVar22 = iVar22 + -1;\n          *puVar28 = 0;\n          puVar28 = puVar28 + 1;\n        }" ({ "{") (expression_statement "iVar22 = iVar22 + -1;" (assignment_expression "iVar22 = iVar22 + -1" (identifier "iVar22") (= "=") (binary_expression "iVar22 + -1" (identifier "iVar22") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "*puVar28 = 0;" (assignment_expression "*puVar28 = 0" (pointer_expression "*puVar28" (* "*") (identifier "puVar28")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar28 = puVar28 + 1;" (assignment_expression "puVar28 = puVar28 + 1" (identifier "puVar28") (= "=") (binary_expression "puVar28 + 1" (identifier "puVar28") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(iVar22 != 0)" (( "(") (binary_expression "iVar22 != 0" (identifier "iVar22") (!= "!=") (number_literal "0")) () ")")) (; ";")) (expression_statement "pcVar34 = *(code **)(iVar32 + -0x7b2c);" (assignment_expression "pcVar34 = *(code **)(iVar32 + -0x7b2c)" (identifier "pcVar34") (= "=") (pointer_expression "*(code **)(iVar32 + -0x7b2c)" (* "*") (cast_expression "(code **)(iVar32 + -0x7b2c)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar32 + -0x7b2c)" (( "(") (binary_expression "iVar32 + -0x7b2c" (identifier "iVar32") (+ "+") (number_literal "-0x7b2c")) () ")"))))) (; ";")) (} "}"))) (} "}"))) (expression_statement "uVar3 = (*pcVar34)(puVar4,puVar4,*(undefined4 *)(puVar36 + -0x44),iVar9);" (assignment_expression "uVar3 = (*pcVar34)(puVar4,puVar4,*(undefined4 *)(puVar36 + -0x44),iVar9)" (identifier "uVar3") (= "=") (call_expression "(*pcVar34)(puVar4,puVar4,*(undefined4 *)(puVar36 + -0x44),iVar9)" (parenthesized_expression "(*pcVar34)" (( "(") (pointer_expression "*pcVar34" (* "*") (identifier "pcVar34")) () ")")) (argument_list "(puVar4,puVar4,*(undefined4 *)(puVar36 + -0x44),iVar9)" (( "(") (identifier "puVar4") (, ",") (identifier "puVar4") (, ",") (pointer_expression "*(undefined4 *)(puVar36 + -0x44)" (* "*") (cast_expression "(undefined4 *)(puVar36 + -0x44)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar36 + -0x44)" (( "(") (binary_expression "puVar36 + -0x44" (identifier "puVar36") (+ "+") (number_literal "-0x44")) () ")")))) (, ",") (identifier "iVar9") () ")")))) (; ";")) (expression_statement "uVar13 = *puVar4;" (assignment_expression "uVar13 = *puVar4" (identifier "uVar13") (= "=") (pointer_expression "*puVar4" (* "*") (identifier "puVar4"))) (; ";")) (expression_statement "iVar9 = *(int *)(puVar36 + -0x68);" (assignment_expression "iVar9 = *(int *)(puVar36 + -0x68)" (identifier "iVar9") (= "=") (pointer_expression "*(int *)(puVar36 + -0x68)" (* "*") (cast_expression "(int *)(puVar36 + -0x68)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar36 + -0x68)" (( "(") (binary_expression "puVar36 + -0x68" (identifier "puVar36") (+ "+") (number_literal "-0x68")) () ")"))))) (; ";")) (expression_statement "puVar18 = (uint *)(uVar13 - uVar3);" (assignment_expression "puVar18 = (uint *)(uVar13 - uVar3)" (identifier "puVar18") (= "=") (cast_expression "(uint *)(uVar13 - uVar3)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar13 - uVar3)" (( "(") (binary_expression "uVar13 - uVar3" (identifier "uVar13") (- "-") (identifier "uVar3")) () ")")))) (; ";")) (expression_statement "*puVar4 = (uint)puVar18;" (assignment_expression "*puVar4 = (uint)puVar18" (pointer_expression "*puVar4" (* "*") (identifier "puVar4")) (= "=") (cast_expression "(uint)puVar18" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "puVar18"))) (; ";")) (expression_statement "puVar28 = puVar4;" (assignment_expression "puVar28 = puVar4" (identifier "puVar28") (= "=") (identifier "puVar4")) (; ";")) (if_statement "if (uVar13 < uVar3) {\n      do {\n        puVar28 = puVar28 + 1;\n        uVar3 = *puVar28;\n        puVar18 = (uint *)(uVar3 - 1);\n        *puVar28 = (uint)puVar18;\n      } while (uVar3 == 0);\n    }" (if "if") (parenthesized_expression "(uVar13 < uVar3)" (( "(") (binary_expression "uVar13 < uVar3" (identifier "uVar13") (< "<") (identifier "uVar3")) () ")")) (compound_statement "{\n      do {\n        puVar28 = puVar28 + 1;\n        uVar3 = *puVar28;\n        puVar18 = (uint *)(uVar3 - 1);\n        *puVar28 = (uint)puVar18;\n      } while (uVar3 == 0);\n    }" ({ "{") (do_statement "do {\n        puVar28 = puVar28 + 1;\n        uVar3 = *puVar28;\n        puVar18 = (uint *)(uVar3 - 1);\n        *puVar28 = (uint)puVar18;\n      } while (uVar3 == 0);" (do "do") (compound_statement "{\n        puVar28 = puVar28 + 1;\n        uVar3 = *puVar28;\n        puVar18 = (uint *)(uVar3 - 1);\n        *puVar28 = (uint)puVar18;\n      }" ({ "{") (expression_statement "puVar28 = puVar28 + 1;" (assignment_expression "puVar28 = puVar28 + 1" (identifier "puVar28") (= "=") (binary_expression "puVar28 + 1" (identifier "puVar28") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "uVar3 = *puVar28;" (assignment_expression "uVar3 = *puVar28" (identifier "uVar3") (= "=") (pointer_expression "*puVar28" (* "*") (identifier "puVar28"))) (; ";")) (expression_statement "puVar18 = (uint *)(uVar3 - 1);" (assignment_expression "puVar18 = (uint *)(uVar3 - 1)" (identifier "puVar18") (= "=") (cast_expression "(uint *)(uVar3 - 1)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar3 - 1)" (( "(") (binary_expression "uVar3 - 1" (identifier "uVar3") (- "-") (number_literal "1")) () ")")))) (; ";")) (expression_statement "*puVar28 = (uint)puVar18;" (assignment_expression "*puVar28 = (uint)puVar18" (pointer_expression "*puVar28" (* "*") (identifier "puVar28")) (= "=") (cast_expression "(uint)puVar18" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "puVar18"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(uVar3 == 0)" (( "(") (binary_expression "uVar3 == 0" (identifier "uVar3") (== "==") (number_literal "0")) () ")")) (; ";")) (} "}"))) (expression_statement "iVar32 = (int)puVar29 + -1;" (assignment_expression "iVar32 = (int)puVar29 + -1" (identifier "iVar32") (= "=") (binary_expression "(int)puVar29 + -1" (cast_expression "(int)puVar29" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar29")) (+ "+") (number_literal "-1"))) (; ";")) (if_statement "if (puVar29 == (uint *)0x0) {\n      iVar32 = -4;\n    }\n    else {\n      puVar18 = (uint *)*puVar4;\n      puVar28 = puVar21;\n      if (iVar32 != 0) {\n        do {\n          puVar4 = puVar4 + 1;\n          *puVar28 = (uint)puVar18;\n          iVar32 = iVar32 + -1;\n          puVar18 = (uint *)*puVar4;\n          puVar28 = puVar28 + 1;\n        } while (iVar32 != 0);\n        puVar28 = puVar21 + (int)puVar29 + -1;\n      }\n      *puVar28 = (uint)puVar18;\n      iVar32 = (int)puVar29 * 4 + -4;\n    }" (if "if") (parenthesized_expression "(puVar29 == (uint *)0x0)" (( "(") (binary_expression "puVar29 == (uint *)0x0" (identifier "puVar29") (== "==") (cast_expression "(uint *)0x0" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n      iVar32 = -4;\n    }" ({ "{") (expression_statement "iVar32 = -4;" (assignment_expression "iVar32 = -4" (identifier "iVar32") (= "=") (number_literal "-4")) (; ";")) (} "}")) (else_clause "else {\n      puVar18 = (uint *)*puVar4;\n      puVar28 = puVar21;\n      if (iVar32 != 0) {\n        do {\n          puVar4 = puVar4 + 1;\n          *puVar28 = (uint)puVar18;\n          iVar32 = iVar32 + -1;\n          puVar18 = (uint *)*puVar4;\n          puVar28 = puVar28 + 1;\n        } while (iVar32 != 0);\n        puVar28 = puVar21 + (int)puVar29 + -1;\n      }\n      *puVar28 = (uint)puVar18;\n      iVar32 = (int)puVar29 * 4 + -4;\n    }" (else "else") (compound_statement "{\n      puVar18 = (uint *)*puVar4;\n      puVar28 = puVar21;\n      if (iVar32 != 0) {\n        do {\n          puVar4 = puVar4 + 1;\n          *puVar28 = (uint)puVar18;\n          iVar32 = iVar32 + -1;\n          puVar18 = (uint *)*puVar4;\n          puVar28 = puVar28 + 1;\n        } while (iVar32 != 0);\n        puVar28 = puVar21 + (int)puVar29 + -1;\n      }\n      *puVar28 = (uint)puVar18;\n      iVar32 = (int)puVar29 * 4 + -4;\n    }" ({ "{") (expression_statement "puVar18 = (uint *)*puVar4;" (assignment_expression "puVar18 = (uint *)*puVar4" (identifier "puVar18") (= "=") (cast_expression "(uint *)*puVar4" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*puVar4" (* "*") (identifier "puVar4")))) (; ";")) (expression_statement "puVar28 = puVar21;" (assignment_expression "puVar28 = puVar21" (identifier "puVar28") (= "=") (identifier "puVar21")) (; ";")) (if_statement "if (iVar32 != 0) {\n        do {\n          puVar4 = puVar4 + 1;\n          *puVar28 = (uint)puVar18;\n          iVar32 = iVar32 + -1;\n          puVar18 = (uint *)*puVar4;\n          puVar28 = puVar28 + 1;\n        } while (iVar32 != 0);\n        puVar28 = puVar21 + (int)puVar29 + -1;\n      }" (if "if") (parenthesized_expression "(iVar32 != 0)" (( "(") (binary_expression "iVar32 != 0" (identifier "iVar32") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n        do {\n          puVar4 = puVar4 + 1;\n          *puVar28 = (uint)puVar18;\n          iVar32 = iVar32 + -1;\n          puVar18 = (uint *)*puVar4;\n          puVar28 = puVar28 + 1;\n        } while (iVar32 != 0);\n        puVar28 = puVar21 + (int)puVar29 + -1;\n      }" ({ "{") (do_statement "do {\n          puVar4 = puVar4 + 1;\n          *puVar28 = (uint)puVar18;\n          iVar32 = iVar32 + -1;\n          puVar18 = (uint *)*puVar4;\n          puVar28 = puVar28 + 1;\n        } while (iVar32 != 0);" (do "do") (compound_statement "{\n          puVar4 = puVar4 + 1;\n          *puVar28 = (uint)puVar18;\n          iVar32 = iVar32 + -1;\n          puVar18 = (uint *)*puVar4;\n          puVar28 = puVar28 + 1;\n        }" ({ "{") (expression_statement "puVar4 = puVar4 + 1;" (assignment_expression "puVar4 = puVar4 + 1" (identifier "puVar4") (= "=") (binary_expression "puVar4 + 1" (identifier "puVar4") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "*puVar28 = (uint)puVar18;" (assignment_expression "*puVar28 = (uint)puVar18" (pointer_expression "*puVar28" (* "*") (identifier "puVar28")) (= "=") (cast_expression "(uint)puVar18" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "puVar18"))) (; ";")) (expression_statement "iVar32 = iVar32 + -1;" (assignment_expression "iVar32 = iVar32 + -1" (identifier "iVar32") (= "=") (binary_expression "iVar32 + -1" (identifier "iVar32") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "puVar18 = (uint *)*puVar4;" (assignment_expression "puVar18 = (uint *)*puVar4" (identifier "puVar18") (= "=") (cast_expression "(uint *)*puVar4" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*puVar4" (* "*") (identifier "puVar4")))) (; ";")) (expression_statement "puVar28 = puVar28 + 1;" (assignment_expression "puVar28 = puVar28 + 1" (identifier "puVar28") (= "=") (binary_expression "puVar28 + 1" (identifier "puVar28") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(iVar32 != 0)" (( "(") (binary_expression "iVar32 != 0" (identifier "iVar32") (!= "!=") (number_literal "0")) () ")")) (; ";")) (expression_statement "puVar28 = puVar21 + (int)puVar29 + -1;" (assignment_expression "puVar28 = puVar21 + (int)puVar29 + -1" (identifier "puVar28") (= "=") (binary_expression "puVar21 + (int)puVar29 + -1" (binary_expression "puVar21 + (int)puVar29" (identifier "puVar21") (+ "+") (cast_expression "(int)puVar29" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar29"))) (+ "+") (number_literal "-1"))) (; ";")) (} "}"))) (expression_statement "*puVar28 = (uint)puVar18;" (assignment_expression "*puVar28 = (uint)puVar18" (pointer_expression "*puVar28" (* "*") (identifier "puVar28")) (= "=") (cast_expression "(uint)puVar18" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "puVar18"))) (; ";")) (expression_statement "iVar32 = (int)puVar29 * 4 + -4;" (assignment_expression "iVar32 = (int)puVar29 * 4 + -4" (identifier "iVar32") (= "=") (binary_expression "(int)puVar29 * 4 + -4" (binary_expression "(int)puVar29 * 4" (cast_expression "(int)puVar29" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar29")) (* "*") (number_literal "4")) (+ "+") (number_literal "-4"))) (; ";")) (} "}")))) (expression_statement "puVar37 = puVar38;" (assignment_expression "puVar37 = puVar38" (identifier "puVar37") (= "=") (identifier "puVar38")) (; ";")) (if_statement "if (*(int *)((int)puVar17 + iVar32) != 0 || *(int *)((int)puVar21 + iVar32) != 0)\n    goto LAB_000530b4;" (if "if") (parenthesized_expression "(*(int *)((int)puVar17 + iVar32) != 0 || *(int *)((int)puVar21 + iVar32) != 0)" (( "(") (binary_expression "*(int *)((int)puVar17 + iVar32) != 0 || *(int *)((int)puVar21 + iVar32) != 0" (binary_expression "*(int *)((int)puVar17 + iVar32) != 0" (pointer_expression "*(int *)((int)puVar17 + iVar32)" (* "*") (cast_expression "(int *)((int)puVar17 + iVar32)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar17 + iVar32)" (( "(") (binary_expression "(int)puVar17 + iVar32" (cast_expression "(int)puVar17" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar17")) (+ "+") (identifier "iVar32")) () ")")))) (!= "!=") (number_literal "0")) (|| "||") (binary_expression "*(int *)((int)puVar21 + iVar32) != 0" (pointer_expression "*(int *)((int)puVar21 + iVar32)" (* "*") (cast_expression "(int *)((int)puVar21 + iVar32)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar21 + iVar32)" (( "(") (binary_expression "(int)puVar21 + iVar32" (cast_expression "(int)puVar21" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar21")) (+ "+") (identifier "iVar32")) () ")")))) (!= "!=") (number_literal "0"))) () ")")) (goto_statement "goto LAB_000530b4;" (goto "goto") (statement_identifier "LAB_000530b4") (; ";"))) (expression_statement "puVar17 = puVar17 + (int)puVar29 + -2;" (assignment_expression "puVar17 = puVar17 + (int)puVar29 + -2" (identifier "puVar17") (= "=") (binary_expression "puVar17 + (int)puVar29 + -2" (binary_expression "puVar17 + (int)puVar29" (identifier "puVar17") (+ "+") (cast_expression "(int)puVar29" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar29"))) (+ "+") (number_literal "-2"))) (; ";")) (expression_statement "puVar21 = puVar21 + (int)puVar29 + -2;" (assignment_expression "puVar21 = puVar21 + (int)puVar29 + -2" (identifier "puVar21") (= "=") (binary_expression "puVar21 + (int)puVar29 + -2" (binary_expression "puVar21 + (int)puVar29" (identifier "puVar21") (+ "+") (cast_expression "(int)puVar29" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar29"))) (+ "+") (number_literal "-2"))) (; ";")) (do_statement "do {\n      uVar3 = *puVar17;\n      puVar29 = (uint *)((int)puVar29 + -1);\n      uVar13 = *puVar21;\n      puVar17 = puVar17 + -1;\n      puVar21 = puVar21 + -1;\n    } while (uVar3 == 0 && uVar13 == 0);" (do "do") (compound_statement "{\n      uVar3 = *puVar17;\n      puVar29 = (uint *)((int)puVar29 + -1);\n      uVar13 = *puVar21;\n      puVar17 = puVar17 + -1;\n      puVar21 = puVar21 + -1;\n    }" ({ "{") (expression_statement "uVar3 = *puVar17;" (assignment_expression "uVar3 = *puVar17" (identifier "uVar3") (= "=") (pointer_expression "*puVar17" (* "*") (identifier "puVar17"))) (; ";")) (expression_statement "puVar29 = (uint *)((int)puVar29 + -1);" (assignment_expression "puVar29 = (uint *)((int)puVar29 + -1)" (identifier "puVar29") (= "=") (cast_expression "(uint *)((int)puVar29 + -1)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar29 + -1)" (( "(") (binary_expression "(int)puVar29 + -1" (cast_expression "(int)puVar29" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar29")) (+ "+") (number_literal "-1")) () ")")))) (; ";")) (expression_statement "uVar13 = *puVar21;" (assignment_expression "uVar13 = *puVar21" (identifier "uVar13") (= "=") (pointer_expression "*puVar21" (* "*") (identifier "puVar21"))) (; ";")) (expression_statement "puVar17 = puVar17 + -1;" (assignment_expression "puVar17 = puVar17 + -1" (identifier "puVar17") (= "=") (binary_expression "puVar17 + -1" (identifier "puVar17") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "puVar21 = puVar21 + -1;" (assignment_expression "puVar21 = puVar21 + -1" (identifier "puVar21") (= "=") (binary_expression "puVar21 + -1" (identifier "puVar21") (+ "+") (number_literal "-1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(uVar3 == 0 && uVar13 == 0)" (( "(") (binary_expression "uVar3 == 0 && uVar13 == 0" (binary_expression "uVar3 == 0" (identifier "uVar3") (== "==") (number_literal "0")) (&& "&&") (binary_expression "uVar13 == 0" (identifier "uVar13") (== "==") (number_literal "0"))) () ")")) (; ";")) (expression_statement "piVar30 = *(int **)(puVar36 + -0x4c);" (assignment_expression "piVar30 = *(int **)(puVar36 + -0x4c)" (identifier "piVar30") (= "=") (pointer_expression "*(int **)(puVar36 + -0x4c)" (* "*") (cast_expression "(int **)(puVar36 + -0x4c)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar36 + -0x4c)" (( "(") (binary_expression "puVar36 + -0x4c" (identifier "puVar36") (+ "+") (number_literal "-0x4c")) () ")"))))) (; ";")) (if_statement "if (*(int *)(puVar36 + -0x40) == 0) goto LAB_000530c4;" (if "if") (parenthesized_expression "(*(int *)(puVar36 + -0x40) == 0)" (( "(") (binary_expression "*(int *)(puVar36 + -0x40) == 0" (pointer_expression "*(int *)(puVar36 + -0x40)" (* "*") (cast_expression "(int *)(puVar36 + -0x40)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar36 + -0x40)" (( "(") (binary_expression "puVar36 + -0x40" (identifier "puVar36") (+ "+") (number_literal "-0x40")) () ")")))) (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_000530c4;" (goto "goto") (statement_identifier "LAB_000530c4") (; ";"))) (expression_statement "pcVar34 = *(code **)(iVar9 + -0x7a2c);" (assignment_expression "pcVar34 = *(code **)(iVar9 + -0x7a2c)" (identifier "pcVar34") (= "=") (pointer_expression "*(code **)(iVar9 + -0x7a2c)" (* "*") (cast_expression "(code **)(iVar9 + -0x7a2c)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar9 + -0x7a2c)" (( "(") (binary_expression "iVar9 + -0x7a2c" (identifier "iVar9") (+ "+") (number_literal "-0x7a2c")) () ")"))))) (; ";")) (labeled_statement "LAB_00053478:\n    (*pcVar34)();" (statement_identifier "LAB_00053478") (: ":") (expression_statement "(*pcVar34)();" (call_expression "(*pcVar34)()" (parenthesized_expression "(*pcVar34)" (( "(") (pointer_expression "*pcVar34" (* "*") (identifier "pcVar34")) () ")")) (argument_list "()" (( "(") () ")"))) (; ";"))) (expression_statement "iVar9 = *(int *)(puVar36 + -0x68);" (assignment_expression "iVar9 = *(int *)(puVar36 + -0x68)" (identifier "iVar9") (= "=") (pointer_expression "*(int *)(puVar36 + -0x68)" (* "*") (cast_expression "(int *)(puVar36 + -0x68)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar36 + -0x68)" (( "(") (binary_expression "puVar36 + -0x68" (identifier "puVar36") (+ "+") (number_literal "-0x68")) () ")"))))) (; ";")) (expression_statement "puVar38 = puVar37;" (assignment_expression "puVar38 = puVar37" (identifier "puVar38") (= "=") (identifier "puVar37")) (; ";")) (} "}")))) (expression_statement "piVar30 = *(int **)(puVar36 + -0x4c);" (assignment_expression "piVar30 = *(int **)(puVar36 + -0x4c)" (identifier "piVar30") (= "=") (pointer_expression "*(int **)(puVar36 + -0x4c)" (* "*") (cast_expression "(int **)(puVar36 + -0x4c)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar36 + -0x4c)" (( "(") (binary_expression "puVar36 + -0x4c" (identifier "puVar36") (+ "+") (number_literal "-0x4c")) () ")"))))) (; ";")) (labeled_statement "LAB_000530c4:\n  iVar32 = *(int *)(puVar36 + -0x2c);" (statement_identifier "LAB_000530c4") (: ":") (expression_statement "iVar32 = *(int *)(puVar36 + -0x2c);" (assignment_expression "iVar32 = *(int *)(puVar36 + -0x2c)" (identifier "iVar32") (= "=") (pointer_expression "*(int *)(puVar36 + -0x2c)" (* "*") (cast_expression "(int *)(puVar36 + -0x2c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar36 + -0x2c)" (( "(") (binary_expression "puVar36 + -0x2c" (identifier "puVar36") (+ "+") (number_literal "-0x2c")) () ")"))))) (; ";"))) (expression_statement "pcVar34 = *(code **)(iVar9 + -0x7b70);" (assignment_expression "pcVar34 = *(code **)(iVar9 + -0x7b70)" (identifier "pcVar34") (= "=") (pointer_expression "*(code **)(iVar9 + -0x7b70)" (* "*") (cast_expression "(code **)(iVar9 + -0x7b70)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar9 + -0x7b70)" (( "(") (binary_expression "iVar9 + -0x7b70" (identifier "iVar9") (+ "+") (number_literal "-0x7b70")) () ")"))))) (; ";")) (if_statement "if (iVar32 == *piVar30) {\n    return puVar29;\n  }" (if "if") (parenthesized_expression "(iVar32 == *piVar30)" (( "(") (binary_expression "iVar32 == *piVar30" (identifier "iVar32") (== "==") (pointer_expression "*piVar30" (* "*") (identifier "piVar30"))) () ")")) (compound_statement "{\n    return puVar29;\n  }" ({ "{") (return_statement "return puVar29;" (return "return") (identifier "puVar29") (; ";")) (} "}"))) (expression_statement "pcVar40 = __gmpn_hgcd_reduce_itch;" (assignment_expression "pcVar40 = __gmpn_hgcd_reduce_itch" (identifier "pcVar40") (= "=") (identifier "__gmpn_hgcd_reduce_itch")) (; ";")) (expression_statement "(*pcVar34)();" (call_expression "(*pcVar34)()" (parenthesized_expression "(*pcVar34)" (( "(") (pointer_expression "*pcVar34" (* "*") (identifier "pcVar34")) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "pcVar35 = *(code **)(pcVar34 + 0x43e08);" (assignment_expression "pcVar35 = *(code **)(pcVar34 + 0x43e08)" (identifier "pcVar35") (= "=") (pointer_expression "*(code **)(pcVar34 + 0x43e08)" (* "*") (cast_expression "(code **)(pcVar34 + 0x43e08)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(pcVar34 + 0x43e08)" (( "(") (binary_expression "pcVar34 + 0x43e08" (identifier "pcVar34") (+ "+") (number_literal "0x43e08")) () ")"))))) (; ";")) (expression_statement "*(uint **)(puVar38 + -0xc) = puVar21;" (assignment_expression "*(uint **)(puVar38 + -0xc) = puVar21" (pointer_expression "*(uint **)(puVar38 + -0xc)" (* "*") (cast_expression "(uint **)(puVar38 + -0xc)" (( "(") (type_descriptor "uint **" (type_identifier "uint") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar38 + -0xc)" (( "(") (binary_expression "puVar38 + -0xc" (identifier "puVar38") (+ "+") (number_literal "-0xc")) () ")")))) (= "=") (identifier "puVar21")) (; ";")) (expression_statement "*(int *)(puVar38 + -8) = iVar24;" (assignment_expression "*(int *)(puVar38 + -8) = iVar24" (pointer_expression "*(int *)(puVar38 + -8)" (* "*") (cast_expression "(int *)(puVar38 + -8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar38 + -8)" (( "(") (binary_expression "puVar38 + -8" (identifier "puVar38") (+ "+") (number_literal "-8")) () ")")))) (= "=") (identifier "iVar24")) (; ";")) (expression_statement "*(uint **)(puVar38 + -0x10) = puVar17;" (assignment_expression "*(uint **)(puVar38 + -0x10) = puVar17" (pointer_expression "*(uint **)(puVar38 + -0x10)" (* "*") (cast_expression "(uint **)(puVar38 + -0x10)" (( "(") (type_descriptor "uint **" (type_identifier "uint") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar38 + -0x10)" (( "(") (binary_expression "puVar38 + -0x10" (identifier "puVar38") (+ "+") (number_literal "-0x10")) () ")")))) (= "=") (identifier "puVar17")) (; ";")) (expression_statement "*(code **)(puVar38 + -0x18) = pcVar34 + 0x4b9e4;" (assignment_expression "*(code **)(puVar38 + -0x18) = pcVar34 + 0x4b9e4" (pointer_expression "*(code **)(puVar38 + -0x18)" (* "*") (cast_expression "(code **)(puVar38 + -0x18)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar38 + -0x18)" (( "(") (binary_expression "puVar38 + -0x18" (identifier "puVar38") (+ "+") (number_literal "-0x18")) () ")")))) (= "=") (binary_expression "pcVar34 + 0x4b9e4" (identifier "pcVar34") (+ "+") (number_literal "0x4b9e4"))) (; ";")) (expression_statement "*(code **)(puVar38 + -4) = pcVar40;" (assignment_expression "*(code **)(puVar38 + -4) = pcVar40" (pointer_expression "*(code **)(puVar38 + -4)" (* "*") (cast_expression "(code **)(puVar38 + -4)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar38 + -4)" (( "(") (binary_expression "puVar38 + -4" (identifier "puVar38") (+ "+") (number_literal "-4")) () ")")))) (= "=") (identifier "pcVar40")) (; ";")) (expression_statement "puVar28 = (uint *)(*pcVar35)(iVar32 - (int)puVar18);" (assignment_expression "puVar28 = (uint *)(*pcVar35)(iVar32 - (int)puVar18)" (identifier "puVar28") (= "=") (cast_expression "(uint *)(*pcVar35)(iVar32 - (int)puVar18)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "(*pcVar35)(iVar32 - (int)puVar18)" (parenthesized_expression "(*pcVar35)" (( "(") (pointer_expression "*pcVar35" (* "*") (identifier "pcVar35")) () ")")) (argument_list "(iVar32 - (int)puVar18)" (( "(") (binary_expression "iVar32 - (int)puVar18" (identifier "iVar32") (- "-") (cast_expression "(int)puVar18" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar18"))) () ")"))))) (; ";")) (if_statement "if (999 < iVar32) {\n    return (uint *)((iVar32 - (int)puVar18) * 2 + (int)puVar28);\n  }" (if "if") (parenthesized_expression "(999 < iVar32)" (( "(") (binary_expression "999 < iVar32" (number_literal "999") (< "<") (identifier "iVar32")) () ")")) (compound_statement "{\n    return (uint *)((iVar32 - (int)puVar18) * 2 + (int)puVar28);\n  }" ({ "{") (return_statement "return (uint *)((iVar32 - (int)puVar18) * 2 + (int)puVar28);" (return "return") (cast_expression "(uint *)((iVar32 - (int)puVar18) * 2 + (int)puVar28)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((iVar32 - (int)puVar18) * 2 + (int)puVar28)" (( "(") (binary_expression "(iVar32 - (int)puVar18) * 2 + (int)puVar28" (binary_expression "(iVar32 - (int)puVar18) * 2" (parenthesized_expression "(iVar32 - (int)puVar18)" (( "(") (binary_expression "iVar32 - (int)puVar18" (identifier "iVar32") (- "-") (cast_expression "(int)puVar18" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar18"))) () ")")) (* "*") (number_literal "2")) (+ "+") (cast_expression "(int)puVar28" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar28"))) () ")"))) (; ";")) (} "}"))) (expression_statement "puVar18 = (uint *)((int)puVar18 + iVar32 + -1);" (assignment_expression "puVar18 = (uint *)((int)puVar18 + iVar32 + -1)" (identifier "puVar18") (= "=") (cast_expression "(uint *)((int)puVar18 + iVar32 + -1)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar18 + iVar32 + -1)" (( "(") (binary_expression "(int)puVar18 + iVar32 + -1" (binary_expression "(int)puVar18 + iVar32" (cast_expression "(int)puVar18" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar18")) (+ "+") (identifier "iVar32")) (+ "+") (number_literal "-1")) () ")")))) (; ";")) (if_statement "if ((int)puVar28 <= (int)puVar18) {\n    puVar28 = puVar18;\n  }" (if "if") (parenthesized_expression "((int)puVar28 <= (int)puVar18)" (( "(") (binary_expression "(int)puVar28 <= (int)puVar18" (cast_expression "(int)puVar28" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar28")) (<= "<=") (cast_expression "(int)puVar18" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar18"))) () ")")) (compound_statement "{\n    puVar28 = puVar18;\n  }" ({ "{") (expression_statement "puVar28 = puVar18;" (assignment_expression "puVar28 = puVar18" (identifier "puVar28") (= "=") (identifier "puVar18")) (; ";")) (} "}"))) (return_statement "return puVar28;" (return "return") (identifier "puVar28") (; ";")) (} "}")))

type_1 function_1(type_1 var_1,type_2 var_12,type_2 bp,type_1 var_4,type_3 *M,type_2 var_15)

{
  type_2 pmVar1;
  type_3 *phVar2;
  type_4 var_5;
  type_1 mVar4;
  type_2 var_22;
  type_2 var_37;
  type_5 *var_41;
  type_2 var_29;
  int var_33;
  type_5 uVar10;
  type_6 *var_38;
  type_7 *var_44;
  int var_6;
  type_4 var_10;
  int var_34;
  int var_35;
  type_2 var_16;
  type_4 var_2;
  type_2 var_23;
  type_5 uVar20;
  type_6 var_21;
  type_6 *var_42;
  type_6 var_43;
  type_4 var_9;
  type_2 var_28;
  type_2 var_25;
  type_4 var_3;
  type_2 var_30;
  int var_32;
  type_4 var_11;
  type_8 *phVar31;
  int var_8;
  type_5 uVar33;
  type_5 uVar34;
  type_6 *var_14;
  type_2 var_13;
  type_7 *var_17;
  int *piVar38;
  type_2 var_20;
  int var_31;
  type_8 *unaff_s5;
  int var_40;
  type_9 *var_27;
  type_10 *var_19;
  type_10 *puVar44;
  type_10 *var_39;
  type_5 uVar46;
  type_9 *pcVar47;
  type_9 *pcVar48;
  type_10 var_18 [24];
  type_2 apmStack_a8 [4];
  int var_24;
  int var_26;
  type_6 *pmStack_90;
  type_7 *puStack_8c;
  type_2 pmStack_88;
  type_2 pmStack_84;
  type_1 mStack_80;
  type_8 *phStack_7c;
  type_1 mStack_78;
  type_2 pmStack_74;
  type_3 *phStack_70;
  type_5 uStack_6c;
  type_8 *local_58;
  type_3 *local_54;
  type_2 local_50;
  type_8 M1;
  
  var_44 = PTR___stack_chk_guard_00097540;
  var_14 = (type_6 *)(var_1 * 4 + -4);
  var_16 = *(type_2 *)PTR___stack_chk_guard_00097540;
  var_3 = bp[var_1 + -1];
  var_2 = var_12[var_1 + -1];
  var_5 = var_2 | var_3;
  if (var_4 + 1 == var_1) {
    if (3 < var_5) {
      unaff_s5 = &M1;
      local_58 = unaff_s5;
      var_6 = (*(type_9 *)PTR___gmpn_hgcd2_00097460)(var_2,var_12[var_1 + -2],var_3,bp[var_1 + -2]);
      if (var_6 != 0) goto LAB_00052bb8;
    }
LAB_00052b18:
    local_50 = var_15;
    local_58 = (type_8 *)(var_7 + 0x2960);
    local_54 = M;
    var_13 = bp;
    var_29 = (type_2)var_1;
    var_25 = (type_2)var_4;
    mVar4 = (*(type_9 *)PTR___gmpn_gcd_subdiv_step_00097118)(var_12);
  }
  else {
    var_9 = var_12[var_1 + -2];
    var_11 = bp[var_1 + -2];
    if (-1 < (int)var_5) {
      if (var_5 < 0x10000) {
        var_6 = 0x18;
        if (var_5 < 0x100) {
          var_6 = 0;
        }
        var_8 = 9;
        if (var_5 < 0x100) {
          var_8 = 1;
        }
      }
      else {
        var_6 = 8;
        if (var_5 < 0x1000000) {
          var_6 = 0x10;
        }
        var_8 = 0x19;
        if (var_5 < 0x1000000) {
          var_8 = 0x11;
        }
      }
      var_5 = var_6 - (type_4)(type_11)PTR___gmpn_clz_tab_0009718c[var_5 >> var_8];
      var_10 = 0x20 - var_5;
      var_2 = var_2 << (var_5 & 0x1f) | var_9 >> (var_10 & 0x1f);
      var_9 = var_12[var_1 + -3] >> (var_10 & 0x1f) | var_9 << (var_5 & 0x1f);
      var_3 = var_3 << (var_5 & 0x1f) | var_11 >> (var_10 & 0x1f);
      var_11 = bp[var_1 + -3] >> (var_10 & 0x1f) | var_11 << (var_5 & 0x1f);
    }
    unaff_s5 = &M1;
    local_58 = unaff_s5;
    var_6 = (*(type_9 *)PTR___gmpn_hgcd2_00097460)(var_2,var_9,var_3,var_11);
    if (var_6 == 0) goto LAB_00052b18;
LAB_00052bb8:
    unaff_s5 = &M1;
    (*(type_9 *)PTR___gmpn_hgcd_matrix_mul_1_000973f4)(M,unaff_s5,var_15);
    if (var_1 != 0) {
      var_6 = var_1 + -1;
      var_21 = *var_12;
      if (var_6 == 0) {
        *var_15 = var_21;
        var_14 = var_15;
      }
      else {
        var_13 = var_15;
        var_14 = var_12 + 1;
        do {
          *var_13 = var_21;
          var_6 = var_6 + -1;
          var_21 = *var_14;
          var_13 = var_13 + 1;
          var_14 = var_14 + 1;
        } while (var_6 != 0);
        var_15[var_1 + -1] = var_21;
        var_14 = var_15 + var_1 + -1;
      }
    }
    var_13 = var_12;
    var_29 = var_15;
    var_25 = bp;
    local_58 = (type_8 *)var_1;
    mVar4 = (*(type_9 *)PTR___gmpn_matrix22_mul1_inverse_vector_00097488)(unaff_s5);
  }
  if (var_16 == *(type_2 *)var_44) {
    return mVar4;
  }
  uVar46 = 0x52c64;
  var_17 = PTR___stack_chk_fail_000974d0;
  (*(type_9 *)PTR___stack_chk_fail_000974d0)();
  phVar2 = local_54;
  apmStack_a8[0] = (type_2)(var_17 + 0x4c3d0);
  var_19 = var_18;
  phStack_70 = M;
  piVar38 = *(int **)(var_17 + 0x448d0);
  var_6 = (int)var_25 + (int)local_54;
  pmStack_74 = var_15;
  puStack_8c = var_44;
  var_24 = 0;
  var_26 = *piVar38;
  pmStack_90 = var_14;
  pmStack_88 = var_12;
  pmStack_84 = bp;
  mStack_80 = var_1;
  phStack_7c = unaff_s5;
  mStack_78 = var_4;
  uStack_6c = uVar46;
  if ((type_4)(var_6 * 4) < 0x7f01) {
    var_8 = -(var_6 * 4 + 7U & 0xfffffff8);
    var_19 = var_18 + var_8;
    var_37 = (type_2)((int)apmStack_a8 + var_8);
    phVar31 = local_58;
  }
  else {
    apmStack_a8[3] = (type_2)local_58;
    var_37 = (type_2)(**(type_9 **)(var_17 + 0x44680))(&var_24);
    phVar31 = (type_8 *)apmStack_a8[3];
  }
  var_27 = (type_9 *)apmStack_a8[0][-0x1f63];
  *(type_3 **)(var_19 + 0x10) = phVar2;
  var_28 = var_29;
  var_30 = var_25;
  (*var_27)(var_37);
  var_20 = (type_2)(var_6 - (type_4)((int)var_13 < var_6));
  if (((var_20 != (type_2)0x0) &&
      (var_28 = var_16, var_30 = var_37, phVar31 = (type_8 *)var_20,
      var_6 = (*(type_9 *)apmStack_a8[0][-0x1ecb])(var_16), var_6 != 0)) &&
     ((int)var_20 < (int)var_13)) {
    var_23 = var_16 + (int)var_20;
    var_21 = *var_23;
    var_28 = (type_2)(var_21 - 1);
    *var_23 = (type_6)var_28;
    var_22 = var_20;
    while ((var_21 == 0 && (var_22 = (type_2)((int)var_22 + 1), var_13 != var_22))) {
      var_21 = var_23[1];
      var_23 = var_23 + 1;
      var_28 = (type_2)(var_21 - 1);
      *var_23 = (type_6)var_28;
    }
  }
  if (var_24 != 0) {
    (*(type_9 *)apmStack_a8[0][-0x1e8b])();
  }
  var_22 = var_13;
  if (((int)var_25 < (int)var_13) && (var_16[(int)var_13 + -1] == 0)) {
    var_23 = var_16 + (int)var_13;
    do {
      var_13 = (type_2)((int)var_13 + -1);
      var_22 = var_25;
      if (var_25 == var_13) break;
      pmVar1 = var_23 + -2;
      var_22 = var_13;
      var_23 = var_23 + -1;
    } while (*pmVar1 == 0);
  }
  var_27 = (type_9 *)apmStack_a8[0][-0x1edc];
  if (var_26 == *piVar38) {
    return (type_1)var_22;
  }
  pcVar47 = hgcd_matrix_apply;
  var_6 = var_26;
  (*var_27)();
  var_39 = var_19 + -0x88;
  puVar44 = var_19 + -0x88;
  var_41 = *(type_5 **)(var_27 + 0x446d8);
  *(type_10 **)(var_19 + -8) = var_18;
  *(type_2 *)(var_19 + -0x10) = var_37;
  *(type_5 **)(var_19 + -0x4c) = var_41;
  *(type_2 *)(var_19 + -0x20) = var_25;
  *(type_2 *)(var_19 + -0x24) = var_16;
  *(type_2 *)(var_19 + -0x28) = var_13;
  *(type_9 **)(var_19 + -4) = pcVar47;
  *(type_2 *)(var_19 + -0xc) = var_29;
  *(type_3 **)(var_19 + -0x14) = phVar2;
  *(type_2 *)(var_19 + -0x18) = var_20;
  *(int **)(var_19 + -0x1c) = piVar38;
  *(type_9 **)(var_19 + -0x68) = var_27 + 0x4c1d8;
  *(type_5 *)(var_19 + -0x2c) = *var_41;
  var_16 = (type_2)phVar31;
  var_13 = (type_2)phVar31;
  if (0 < (int)phVar31) {
    if (var_28[(int)((int)phVar31 + -1)] == 0) {
      var_29 = var_28 + (int)phVar31;
      do {
        var_13 = (type_2)((int)var_13 + -1);
        if (var_13 == (type_2)0x0) break;
        var_25 = var_29 + -2;
        var_29 = var_29 + -1;
      } while (*var_25 == 0);
    }
    if (var_30[(int)((int)phVar31 + -1)] == 0) {
      var_29 = var_30 + (int)phVar31;
      do {
        var_16 = (type_2)((int)var_16 + -1);
        if (var_16 == (type_2)0x0) break;
        var_25 = var_29 + -2;
        var_29 = var_29 + -1;
      } while (*var_25 == 0);
    }
  }
  var_31 = *(int *)(var_6 + 4);
  var_8 = 8;
  do {
    var_32 = var_8 + -8;
    do {
      var_35 = var_31;
      if (0 < var_31) {
        var_33 = *(int *)(var_6 + var_32 + 8);
        var_34 = *(int *)(var_33 + var_31 * 4 + -4);
        var_33 = var_33 + var_31 * 4;
        while (var_34 == 0) {
          var_35 = var_35 + -1;
          if (var_35 == 0) break;
          var_34 = *(int *)(var_33 + -8);
          var_33 = var_33 + -4;
        }
      }
      var_33 = var_32 + -0x3c;
      var_32 = var_32 + 4;
      *(int *)(var_19 + var_33) = var_35;
    } while (var_8 != var_32);
    var_8 = var_8 + 8;
    var_32 = *(int *)(var_19 + -0x34);
  } while (var_8 != 0x18);
  var_8 = *(int *)(var_19 + -0x38);
  *(type_5 *)(var_19 + -0x40) = 0;
  if (var_8 == 0) {
    uVar46 = *(type_5 *)(var_6 + 0x10);
    *(int *)(var_19 + -0x74) = var_32;
    *(type_5 *)(var_19 + -0x78) = uVar46;
    var_29 = var_30;
    var_25 = var_16;
    var_37 = var_28;
LAB_0005309c:
    var_8 = var_36(var_29,(type_1)var_25,var_37,(type_1)var_13,
                    *(type_12 *)(var_19 + -0x78),*(type_1 *)(var_19 + -0x74));
    var_31 = *(int *)(var_19 + -0x68);
LAB_000530b4:
    var_27 = *(type_9 **)(var_31 + -0x7a2c);
    var_39 = puVar44;
    if (*(int *)(var_19 + -0x40) != 0) goto LAB_00053478;
  }
  else {
    if (var_32 == 0) {
      uVar46 = *(type_5 *)(var_6 + 0xc);
      *(int *)(var_19 + -0x74) = var_8;
      *(type_5 *)(var_19 + -0x78) = uVar46;
      var_29 = var_28;
      var_25 = var_13;
      var_37 = var_30;
      var_13 = var_16;
      goto LAB_0005309c;
    }
    var_33 = *(int *)(var_19 + -0x30);
    var_27 = *(type_9 **)(var_27 + 0x4454c);
    var_35 = (int)var_13 - *(int *)(var_19 + -0x3c);
    *(int *)(var_19 + -0x50) = *(int *)(var_19 + -0x3c);
    *(int *)(var_19 + -0x44) = var_8;
    if ((int)var_16 - var_32 <= var_35) {
      var_35 = (int)var_16 - var_32;
    }
    var_34 = (int)var_13 - var_8;
    if ((int)var_16 - var_33 <= (int)var_13 - var_8) {
      var_34 = (int)var_16 - var_33;
    }
    var_8 = var_34 + 1;
    if (var_34 + 1 <= var_35 + 1) {
      var_8 = var_35 + 1;
    }
    var_16 = (type_2)(*var_27)(var_8 + 1);
    var_35 = (int)var_16 >> 1;
    var_34 = *(int *)(var_19 + -0x68);
    uVar46 = *(type_5 *)(var_19 + -0x44);
    if (var_35 < (int)var_16) {
      if (var_31 <= var_35) {
        var_2 = ((int)var_16 * 3 + var_35 + 4) * 4;
        var_5 = var_2 + 7;
        if (0x7f00 < var_2) {
          var_27 = *(type_9 **)(var_34 + -0x7d50);
          goto LAB_0005305c;
        }
        goto LAB_00053148;
      }
      var_2 = ((int)var_16 * 4 + 4) * 4;
      var_5 = var_2 + 7;
      if (var_2 < 0x7f01) goto LAB_00053148;
      var_27 = *(type_9 **)(var_34 + -0x7d50);
LAB_0005305c:
      *(type_2 *)(var_19 + -0x48) = var_16;
      *(type_5 *)(var_19 + -0x44) = uVar46;
      var_14 = (type_6 *)(*var_27)(var_19 + -0x40);
      var_34 = *(int *)(var_19 + -0x68);
      var_16 = *(type_2 *)(var_19 + -0x48);
      uVar46 = *(type_5 *)(var_19 + -0x44);
    }
    else {
      var_5 = ((int)var_16 * 3 + 4) * 4;
      var_27 = *(type_9 **)(var_34 + -0x7d50);
      if (0x7f00 < var_5) goto LAB_0005305c;
      var_5 = var_5 + 7;
LAB_00053148:
      var_39 = var_19 + -(var_5 & 0xfffffff8) + -0x88;
      var_14 = (type_6 *)(var_19 + -(var_5 & 0xfffffff8) + -0x68);
    }
    *(type_6 **)(var_19 + -0x44) = var_14 + (int)var_16;
    *(type_6 **)(var_19 + -0x48) = var_14 + (int)var_16 + (int)var_16;
    if ((int)var_16 < (int)phVar31) {
      var_27 = *(type_9 **)(var_34 + -0x7d0c);
      var_13 = (type_2)((int)phVar31 - (int)var_16);
      *(type_5 *)(var_19 + -0x5c) = uVar46;
      *(type_2 *)(var_19 + -0x58) = var_16;
      *(int *)(var_19 + -0x54) = (int)var_16 * 4;
      var_31 = (*var_27)(var_28,var_28,var_28 + (int)var_16,var_13);
      var_34 = *(int *)(var_19 + -0x68);
      var_35 = *(int *)(var_19 + -0x54);
      var_16 = *(type_2 *)(var_19 + -0x58);
      uVar46 = *(type_5 *)(var_19 + -0x5c);
      if (var_31 == 0) {
LAB_0005359c:
        var_27 = *(type_9 **)(var_34 + -0x7d0c);
      }
      else {
        var_29 = var_28;
        if ((int)var_16 <= (int)var_13) {
LAB_00053588:
          do {
            var_21 = *var_29;
            *var_29 = var_21 + 1;
            var_29 = var_29 + 1;
          } while (var_21 + 1 == 0);
          goto LAB_0005359c;
        }
        var_37 = var_28 + (int)var_13;
        var_21 = *var_37;
        *var_37 = var_21 + 1;
        var_25 = var_13;
        if (var_21 + 1 == 0) {
          do {
            var_25 = (type_2)((int)var_25 + 1);
            if (var_16 == var_25) goto LAB_00053588;
            var_21 = var_37[1];
            var_37 = var_37 + 1;
            *var_37 = var_21 + 1;
          } while (var_21 + 1 == 0);
          goto LAB_0005359c;
        }
        var_27 = *(type_9 **)(var_34 + -0x7d0c);
      }
      *(type_2 *)(var_19 + -0x58) = var_16;
      *(type_5 *)(var_19 + -0x54) = uVar46;
      var_31 = (*var_27)(var_30,var_30,(int)var_30 + var_35,var_13);
      var_34 = *(int *)(var_19 + -0x68);
      uVar46 = *(type_5 *)(var_19 + -0x54);
      var_16 = *(type_2 *)(var_19 + -0x58);
      phVar31 = (type_8 *)var_16;
      if (var_31 != 0) {
        var_29 = var_30;
        if ((int)var_13 < (int)var_16) {
          var_38 = var_30 + (int)var_13;
          var_21 = *var_38 + 1;
          *var_38 = var_21;
          while (var_21 == 0) {
            var_13 = (type_2)((int)var_13 + 1);
            if (var_16 == var_13) goto LAB_0005361c;
            var_42 = var_38 + 1;
            var_38 = var_38 + 1;
            var_21 = *var_42 + 1;
            *var_38 = var_21;
          }
        }
        else {
LAB_0005361c:
          do {
            var_21 = *var_29;
            *var_29 = var_21 + 1;
            var_29 = var_29 + 1;
          } while (var_21 + 1 == 0);
        }
      }
    }
    uVar10 = *(type_5 *)(var_6 + 0x14);
    var_27 = *(type_9 **)(var_34 + -0x7cd8);
    *(type_5 *)(var_19 + -0x5c) = uVar46;
    *(type_2 *)(var_19 + -0x54) = var_16;
    *(type_5 *)(var_39 + 0x18) = *(type_5 *)(var_19 + -0x48);
    *(type_5 *)(var_39 + 0x10) = uVar10;
    *(int *)(var_39 + 0x14) = var_33;
    (*var_27)(var_14,var_16,var_28,phVar31);
    uVar46 = *(type_5 *)(var_6 + 0xc);
    uVar33 = *(type_5 *)(var_19 + -0x54);
    uVar34 = *(type_5 *)(var_19 + -0x5c);
    uVar10 = *(type_5 *)(var_19 + -0x48);
    var_27 = *(type_9 **)(*(int *)(var_19 + -0x68) + -0x7cd8);
    uVar20 = *(type_5 *)(var_19 + -0x44);
    *(type_5 *)(var_19 + -0x58) = uVar33;
    *(type_5 *)(var_39 + 0x14) = uVar34;
    *(type_5 *)(var_19 + -0x54) = uVar34;
    *(type_5 *)(var_39 + 0x10) = uVar46;
    *(type_5 *)(var_39 + 0x18) = uVar10;
    (*var_27)(uVar20,uVar33,var_30,phVar31);
    var_31 = *(int *)(var_19 + -0x58);
    var_34 = *(int *)(var_19 + -0x68);
    var_35 = *(int *)(var_19 + -0x54);
    if ((var_33 + (int)phVar31 < var_31) && (var_33 != var_31 - (int)phVar31)) {
      var_40 = (var_31 - (int)phVar31) - var_33;
      var_38 = var_14 + (int)(var_33 + (int)phVar31);
      do {
        var_40 = var_40 + -1;
        *var_38 = 0;
        var_38 = var_38 + 1;
      } while (var_40 != 0);
    }
    var_27 = *(type_9 **)(var_34 + -0x7b2c);
    if (var_35 + (int)phVar31 < var_31) {
      if (var_35 != var_31 - (int)phVar31) {
        var_33 = (var_31 - (int)phVar31) - var_35;
        var_41 = (type_5 *)(*(int *)(var_19 + -0x44) + (int)(var_35 + (int)phVar31) * 4);
        do {
          var_33 = var_33 + -1;
          *var_41 = 0;
          var_41 = var_41 + 1;
        } while (var_33 != 0);
        var_27 = *(type_9 **)(var_34 + -0x7b2c);
      }
    }
    *(int *)(var_19 + -0x54) = var_31;
    var_5 = (*var_27)(var_14,var_14,*(type_5 *)(var_19 + -0x44),var_31);
    var_2 = *var_14;
    var_31 = *(int *)(var_19 + -0x68);
    uVar46 = *(type_5 *)(var_19 + -0x54);
    *var_14 = var_2 - var_5;
    var_38 = var_14;
    if (var_2 < var_5) {
      do {
        var_38 = var_38 + 1;
        var_21 = *var_38;
        *var_38 = var_21 - 1;
      } while (var_21 == 0);
    }
    uVar10 = *(type_5 *)(var_6 + 0x10);
    var_27 = *(type_9 **)(var_31 + -0x7cd8);
    uVar20 = *(type_5 *)(var_19 + -0x44);
    *(type_5 *)(var_19 + -0x54) = uVar46;
    *(type_5 *)(var_39 + 0x18) = *(type_5 *)(var_19 + -0x48);
    *(int *)(var_39 + 0x14) = var_32;
    *(type_5 *)(var_39 + 0x10) = uVar10;
    (*var_27)(uVar20,uVar46,var_28,phVar31);
    var_31 = *(int *)(var_19 + -0x68);
    uVar46 = *(type_5 *)(var_19 + -0x54);
    if (var_8 != 0) {
      var_35 = var_8 + -1;
      var_21 = *var_14;
      var_42 = var_28;
      var_38 = var_14;
      if (var_35 == 0) {
        *var_28 = var_21;
      }
      else {
        do {
          *var_42 = var_21;
          var_35 = var_35 + -1;
          var_21 = var_38[1];
          var_42 = var_42 + 1;
          var_38 = var_38 + 1;
        } while (var_35 != 0);
        var_28[var_8 + -1] = var_21;
      }
    }
    uVar10 = *(type_5 *)(var_6 + 8);
    var_27 = *(type_9 **)(var_31 + -0x7cd8);
    *(type_5 *)(var_39 + 0x18) = *(type_5 *)(var_19 + -0x48);
    *(type_5 *)(var_19 + -0x48) = uVar46;
    *(type_5 *)(var_39 + 0x10) = uVar10;
    *(type_5 *)(var_39 + 0x14) = *(type_5 *)(var_19 + -0x50);
    (*var_27)(var_14,uVar46,var_30,phVar31);
    var_31 = *(int *)(var_19 + -0x48);
    var_35 = *(int *)(var_19 + -0x68);
    if ((int)phVar31 + var_32 < var_31) {
      if (var_32 != var_31 - (int)phVar31) {
        var_33 = (var_31 - (int)phVar31) - var_32;
        var_41 = (type_5 *)(*(int *)(var_19 + -0x44) + (int)((int)phVar31 + var_32) * 4);
        do {
          var_33 = var_33 + -1;
          *var_41 = 0;
          var_41 = var_41 + 1;
        } while (var_33 != 0);
      }
    }
    var_27 = *(type_9 **)(var_35 + -0x7b2c);
    if (*(int *)(var_19 + -0x50) + (int)phVar31 < var_31) {
      if (*(int *)(var_19 + -0x50) != var_31 - (int)phVar31) {
        var_32 = (var_31 - (int)phVar31) - *(int *)(var_19 + -0x50);
        var_38 = var_14 + (int)(*(int *)(var_19 + -0x50) + (int)phVar31);
        do {
          var_32 = var_32 + -1;
          *var_38 = 0;
          var_38 = var_38 + 1;
        } while (var_32 != 0);
        var_27 = *(type_9 **)(var_35 + -0x7b2c);
      }
    }
    var_5 = (*var_27)(var_14,var_14,*(type_5 *)(var_19 + -0x44),var_31);
    var_2 = *var_14;
    var_31 = *(int *)(var_19 + -0x68);
    var_25 = (type_2)(var_2 - var_5);
    *var_14 = (type_6)var_25;
    var_38 = var_14;
    if (var_2 < var_5) {
      do {
        var_38 = var_38 + 1;
        var_21 = *var_38;
        var_25 = (type_2)(var_21 - 1);
        *var_38 = (type_6)var_25;
      } while (var_21 == 0);
    }
    var_32 = var_8 + -1;
    if (var_8 == 0) {
      var_32 = -4;
    }
    else {
      var_25 = (type_2)*var_14;
      var_16 = var_30;
      if (var_32 != 0) {
        do {
          var_14 = var_14 + 1;
          *var_16 = (type_6)var_25;
          var_32 = var_32 + -1;
          var_25 = (type_2)*var_14;
          var_16 = var_16 + 1;
        } while (var_32 != 0);
        var_16 = var_30 + var_8 + -1;
      }
      *var_16 = (type_6)var_25;
      var_32 = var_8 * 4 + -4;
    }
    puVar44 = var_39;
    if (*(int *)((int)var_28 + var_32) != 0 || *(int *)((int)var_30 + var_32) != 0)
    goto LAB_000530b4;
    var_28 = var_28 + var_8 + -2;
    var_30 = var_30 + var_8 + -2;
    do {
      var_21 = *var_28;
      var_8 = var_8 + -1;
      var_43 = *var_30;
      var_28 = var_28 + -1;
      var_30 = var_30 + -1;
    } while (var_21 == 0 && var_43 == 0);
    piVar38 = *(int **)(var_19 + -0x4c);
    if (*(int *)(var_19 + -0x40) == 0) goto LAB_000530c4;
    var_27 = *(type_9 **)(var_31 + -0x7a2c);
LAB_00053478:
    (*var_27)();
    var_31 = *(int *)(var_19 + -0x68);
    var_39 = puVar44;
  }
  piVar38 = *(int **)(var_19 + -0x4c);
LAB_000530c4:
  var_32 = *(int *)(var_19 + -0x2c);
  var_27 = *(type_9 **)(var_31 + -0x7b70);
  if (var_32 == *piVar38) {
    return var_8;
  }
  pcVar48 = __gmpn_hgcd_reduce_itch;
  (*var_27)();
  pcVar47 = *(type_9 **)(var_27 + 0x43e08);
  *(type_2 *)(var_39 + -0xc) = var_30;
  *(int *)(var_39 + -8) = var_6;
  *(type_2 *)(var_39 + -0x10) = var_28;
  *(type_9 **)(var_39 + -0x18) = var_27 + 0x4b9e4;
  *(type_9 **)(var_39 + -4) = pcVar48;
  var_44 = (type_7 *)(*pcVar47)(var_32 - (int)var_25);
  if (999 < var_32) {
    return (type_1)(var_44 + (var_32 - (int)var_25) * 2);
  }
  var_17 = (type_7 *)((int)var_25 + var_32 + -1);
  if ((int)var_44 <= (int)var_17) {
    var_44 = var_17;
  }
  return (type_1)var_44;
}


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

uint * MASKED(uint *param_1,uint *param_2,uint *param_3,uint *param_4,int param_5,
                       uint *param_6)

{
  uint *puVar1;
  undefined *puVar2;
  uint uVar3;
  uint *puVar4;
  uint *puVar5;
  undefined4 *puVar6;
  int iVar7;
  undefined4 uVar8;
  int iVar9;
  uint uVar10;
  int iVar11;
  int iVar12;
  uint uVar13;
  uint *puVar14;
  undefined4 uVar15;
  uint uVar16;
  uint *puVar17;
  uint *puVar18;
  uint *puVar19;
  uint uVar20;
  uint *puVar21;
  int iVar22;
  uint uVar23;
  int iVar24;
  uint *puVar25;
  undefined4 uVar26;
  undefined4 uVar27;
  uint *puVar28;
  uint *puVar29;
  int *piVar30;
  uint *puVar31;
  int iVar32;
  undefined1 *unaff_s5;
  undefined *puVar33;
  code *pcVar34;
  code *pcVar35;
  undefined1 *puVar36;
  undefined1 *puVar37;
  undefined1 *puVar38;
  undefined4 uVar39;
  code *pcVar40;
  undefined1 auStack_c0 [24];
  uint *apuStack_a8 [4];
  int iStack_98;
  int iStack_94;
  uint *puStack_90;
  undefined *puStack_8c;
  uint *puStack_88;
  uint *puStack_84;
  uint *puStack_80;
  undefined1 *puStack_7c;
  uint *puStack_78;
  uint *puStack_74;
  int iStack_70;
  undefined4 uStack_6c;
  uint *local_58;
  int local_54;
  uint *local_50;
  undefined1 auStack_3c [16];
  uint *local_2c;
  
  puVar2 = PTR___stack_chk_guard_00097540;
  puVar28 = (uint *)((int)param_1 * 4 + -4);
  local_2c = *(uint **)PTR___stack_chk_guard_00097540;
  uVar20 = param_3[(int)param_1 + -1];
  uVar13 = param_2[(int)param_1 + -1];
  uVar3 = uVar13 | uVar20;
  if ((uint *)((int)param_4 + 1) == param_1) {
    if (3 < uVar3) {
      unaff_s5 = auStack_3c;
      local_58 = (uint *)unaff_s5;
      iVar9 = (*(code *)PTR___gmpn_hgcd2_00097460)
                        (uVar13,param_2[(int)param_1 + -2],uVar20,param_3[(int)param_1 + -2]);
      if (iVar9 != 0) goto LAB_00052bb8;
    }
LAB_00052b18:
    local_50 = param_6;
    local_58 = (uint *)(PTR_LAB_0009707c + 0x2960);
    local_54 = param_5;
    puVar29 = param_3;
    puVar25 = param_1;
    puVar18 = param_4;
    puVar4 = (uint *)(*(code *)PTR___gmpn_gcd_subdiv_step_00097118)(param_2);
  }
  else {
    uVar16 = param_2[(int)param_1 + -2];
    uVar23 = param_3[(int)param_1 + -2];
    if (-1 < (int)uVar3) {
      if (uVar3 < 0x10000) {
        iVar9 = 0x18;
        if (uVar3 < 0x100) {
          iVar9 = 0;
        }
        iVar24 = 9;
        if (uVar3 < 0x100) {
          iVar24 = 1;
        }
      }
      else {
        iVar9 = 8;
        if (uVar3 < 0x1000000) {
          iVar9 = 0x10;
        }
        iVar24 = 0x19;
        if (uVar3 < 0x1000000) {
          iVar24 = 0x11;
        }
      }
      uVar3 = iVar9 - (uint)(byte)PTR___gmpn_clz_tab_0009718c[uVar3 >> iVar24];
      uVar10 = 0x20 - uVar3;
      uVar13 = uVar13 << (uVar3 & 0x1f) | uVar16 >> (uVar10 & 0x1f);
      uVar16 = param_2[(int)param_1 + -3] >> (uVar10 & 0x1f) | uVar16 << (uVar3 & 0x1f);
      uVar20 = uVar20 << (uVar3 & 0x1f) | uVar23 >> (uVar10 & 0x1f);
      uVar23 = param_3[(int)param_1 + -3] >> (uVar10 & 0x1f) | uVar23 << (uVar3 & 0x1f);
    }
    unaff_s5 = auStack_3c;
    local_58 = (uint *)unaff_s5;
    iVar9 = (*(code *)PTR___gmpn_hgcd2_00097460)(uVar13,uVar16,uVar20,uVar23);
    if (iVar9 == 0) goto LAB_00052b18;
LAB_00052bb8:
    unaff_s5 = auStack_3c;
    (*(code *)PTR___gmpn_hgcd_matrix_mul_1_000973f4)(param_5,unaff_s5,param_6);
    if (param_1 != (uint *)0x0) {
      iVar9 = (int)param_1 + -1;
      uVar3 = *param_2;
      if (iVar9 == 0) {
        *param_6 = uVar3;
        puVar28 = param_6;
      }
      else {
        puVar28 = param_6;
        puVar29 = param_2 + 1;
        do {
          *puVar28 = uVar3;
          iVar9 = iVar9 + -1;
          uVar3 = *puVar29;
          puVar28 = puVar28 + 1;
          puVar29 = puVar29 + 1;
        } while (iVar9 != 0);
        param_6[(int)param_1 + -1] = uVar3;
        puVar28 = param_6 + (int)param_1 + -1;
      }
    }
    puVar29 = param_2;
    puVar25 = param_6;
    puVar18 = param_3;
    local_58 = param_1;
    puVar4 = (uint *)(*(code *)PTR___gmpn_matrix22_mul1_inverse_vector_00097488)(unaff_s5);
  }
  if (local_2c == *(uint **)puVar2) {
    return puVar4;
  }
  uVar39 = 0x52c64;
  puVar4 = local_2c;
  puVar33 = PTR___stack_chk_fail_000974d0;
  (*(code *)PTR___stack_chk_fail_000974d0)();
  iVar9 = local_54;
  apuStack_a8[0] = (uint *)(puVar33 + 0x4c3d0);
  puVar36 = auStack_c0;
  iStack_70 = param_5;
  piVar30 = *(int **)(puVar33 + 0x448d0);
  iVar24 = (int)puVar18 + local_54;
  puStack_74 = param_6;
  puStack_8c = puVar2;
  iStack_98 = 0;
  iStack_94 = *piVar30;
  puStack_90 = puVar28;
  puStack_88 = param_2;
  puStack_84 = param_3;
  puStack_80 = param_1;
  puStack_7c = unaff_s5;
  puStack_78 = param_4;
  uStack_6c = uVar39;
  if ((uint)(iVar24 * 4) < 0x7f01) {
    iVar32 = -(iVar24 * 4 + 7U & 0xfffffff8);
    puVar36 = auStack_c0 + iVar32;
    puVar19 = (uint *)((int)apuStack_a8 + iVar32);
    puVar28 = local_58;
  }
  else {
    apuStack_a8[3] = local_58;
    puVar19 = (uint *)(**(code **)(puVar33 + 0x44680))(&iStack_98);
    puVar28 = apuStack_a8[3];
  }
  pcVar34 = (code *)apuStack_a8[0][-0x1f63];
  *(int *)(puVar36 + 0x10) = iVar9;
  puVar17 = puVar25;
  puVar21 = puVar18;
  (*pcVar34)(puVar19);
  puVar31 = (uint *)(iVar24 - (uint)((int)puVar29 < iVar24));
  if (((puVar31 != (uint *)0x0) &&
      (puVar17 = puVar4, puVar21 = puVar19, puVar28 = puVar31,
      iVar24 = (*(code *)apuStack_a8[0][-0x1ecb])(puVar4), iVar24 != 0)) &&
     ((int)puVar31 < (int)puVar29)) {
    puVar14 = puVar4 + (int)puVar31;
    uVar3 = *puVar14;
    puVar17 = (uint *)(uVar3 - 1);
    *puVar14 = (uint)puVar17;
    puVar5 = puVar31;
    while ((uVar3 == 0 && (puVar5 = (uint *)((int)puVar5 + 1), puVar29 != puVar5))) {
      uVar3 = puVar14[1];
      puVar14 = puVar14 + 1;
      puVar17 = (uint *)(uVar3 - 1);
      *puVar14 = (uint)puVar17;
    }
  }
  if (iStack_98 != 0) {
    (*(code *)apuStack_a8[0][-0x1e8b])();
  }
  puVar5 = puVar29;
  if (((int)puVar18 < (int)puVar29) && (puVar4[(int)puVar29 + -1] == 0)) {
    puVar14 = puVar4 + (int)puVar29;
    do {
      puVar29 = (uint *)((int)puVar29 + -1);
      puVar5 = puVar18;
      if (puVar18 == puVar29) break;
      puVar1 = puVar14 + -2;
      puVar5 = puVar29;
      puVar14 = puVar14 + -1;
    } while (*puVar1 == 0);
  }
  pcVar34 = (code *)apuStack_a8[0][-0x1edc];
  if (iStack_94 == *piVar30) {
    return puVar5;
  }
  uVar39 = 0x52e68;
  iVar24 = iStack_94;
  (*pcVar34)();
  puVar38 = puVar36 + -0x88;
  puVar37 = puVar36 + -0x88;
  puVar6 = *(undefined4 **)(pcVar34 + 0x446d8);
  *(undefined1 **)(puVar36 + -8) = auStack_c0;
  *(uint **)(puVar36 + -0x10) = puVar19;
  *(undefined4 **)(puVar36 + -0x4c) = puVar6;
  *(uint **)(puVar36 + -0x20) = puVar18;
  *(uint **)(puVar36 + -0x24) = puVar4;
  *(uint **)(puVar36 + -0x28) = puVar29;
  *(undefined4 *)(puVar36 + -4) = uVar39;
  *(uint **)(puVar36 + -0xc) = puVar25;
  *(int *)(puVar36 + -0x14) = iVar9;
  *(uint **)(puVar36 + -0x18) = puVar31;
  *(int **)(puVar36 + -0x1c) = piVar30;
  *(code **)(puVar36 + -0x68) = pcVar34 + 0x4c1d8;
  *(undefined4 *)(puVar36 + -0x2c) = *puVar6;
  puVar29 = puVar28;
  puVar25 = puVar28;
  if (0 < (int)puVar28) {
    if (puVar17[(int)((int)puVar28 + -1)] == 0) {
      puVar18 = puVar17 + (int)puVar28;
      do {
        puVar25 = (uint *)((int)puVar25 + -1);
        if (puVar25 == (uint *)0x0) break;
        puVar4 = puVar18 + -2;
        puVar18 = puVar18 + -1;
      } while (*puVar4 == 0);
    }
    if (puVar21[(int)((int)puVar28 + -1)] == 0) {
      puVar18 = puVar21 + (int)puVar28;
      do {
        puVar29 = (uint *)((int)puVar29 + -1);
        if (puVar29 == (uint *)0x0) break;
        puVar4 = puVar18 + -2;
        puVar18 = puVar18 + -1;
      } while (*puVar4 == 0);
    }
  }
  iVar32 = *(int *)(iVar24 + 4);
  iVar9 = 8;
  do {
    iVar22 = iVar9 + -8;
    do {
      iVar12 = iVar32;
      if (0 < iVar32) {
        iVar7 = *(int *)(iVar24 + iVar22 + 8);
        iVar11 = *(int *)(iVar7 + iVar32 * 4 + -4);
        iVar7 = iVar7 + iVar32 * 4;
        while (iVar11 == 0) {
          iVar12 = iVar12 + -1;
          if (iVar12 == 0) break;
          iVar11 = *(int *)(iVar7 + -8);
          iVar7 = iVar7 + -4;
        }
      }
      iVar7 = iVar22 + -0x3c;
      iVar22 = iVar22 + 4;
      *(int *)(puVar36 + iVar7) = iVar12;
    } while (iVar9 != iVar22);
    iVar9 = iVar9 + 8;
    iVar22 = *(int *)(puVar36 + -0x34);
  } while (iVar9 != 0x18);
  iVar9 = *(int *)(puVar36 + -0x38);
  *(undefined4 *)(puVar36 + -0x40) = 0;
  if (iVar9 == 0) {
    uVar39 = *(undefined4 *)(iVar24 + 0x10);
    *(int *)(puVar36 + -0x74) = iVar22;
    *(undefined4 *)(puVar36 + -0x78) = uVar39;
    puVar28 = puVar21;
    puVar18 = puVar29;
    puVar4 = puVar17;
LAB_0005309c:
    puVar29 = (uint *)FUN_00052c70(puVar28,puVar18,puVar4,puVar25);
    iVar9 = *(int *)(puVar36 + -0x68);
LAB_000530b4:
    pcVar34 = *(code **)(iVar9 + -0x7a2c);
    puVar38 = puVar37;
    if (*(int *)(puVar36 + -0x40) != 0) goto LAB_00053478;
  }
  else {
    if (iVar22 == 0) {
      uVar39 = *(undefined4 *)(iVar24 + 0xc);
      *(int *)(puVar36 + -0x74) = iVar9;
      *(undefined4 *)(puVar36 + -0x78) = uVar39;
      puVar28 = puVar17;
      puVar18 = puVar25;
      puVar4 = puVar21;
      puVar25 = puVar29;
      goto LAB_0005309c;
    }
    iVar7 = *(int *)(puVar36 + -0x30);
    pcVar34 = *(code **)(pcVar34 + 0x4454c);
    iVar12 = (int)puVar25 - *(int *)(puVar36 + -0x3c);
    *(int *)(puVar36 + -0x50) = *(int *)(puVar36 + -0x3c);
    *(int *)(puVar36 + -0x44) = iVar9;
    if ((int)puVar29 - iVar22 <= iVar12) {
      iVar12 = (int)puVar29 - iVar22;
    }
    iVar11 = (int)puVar25 - iVar9;
    if ((int)puVar29 - iVar7 <= (int)puVar25 - iVar9) {
      iVar11 = (int)puVar29 - iVar7;
    }
    puVar29 = (uint *)(iVar11 + 1);
    if (iVar11 + 1 <= iVar12 + 1) {
      puVar29 = (uint *)(iVar12 + 1);
    }
    puVar25 = (uint *)(*pcVar34)((int)puVar29 + 1);
    iVar9 = (int)puVar25 >> 1;
    iVar12 = *(int *)(puVar36 + -0x68);
    uVar39 = *(undefined4 *)(puVar36 + -0x44);
    if (iVar9 < (int)puVar25) {
      if (iVar32 <= iVar9) {
        uVar13 = ((int)puVar25 * 3 + iVar9 + 4) * 4;
        uVar3 = uVar13 + 7;
        if (0x7f00 < uVar13) {
          pcVar34 = *(code **)(iVar12 + -0x7d50);
          goto LAB_0005305c;
        }
        goto LAB_00053148;
      }
      uVar13 = ((int)puVar25 * 4 + 4) * 4;
      uVar3 = uVar13 + 7;
      if (uVar13 < 0x7f01) goto LAB_00053148;
      pcVar34 = *(code **)(iVar12 + -0x7d50);
LAB_0005305c:
      *(uint **)(puVar36 + -0x48) = puVar25;
      *(undefined4 *)(puVar36 + -0x44) = uVar39;
      puVar4 = (uint *)(*pcVar34)(puVar36 + -0x40);
      iVar12 = *(int *)(puVar36 + -0x68);
      puVar25 = *(uint **)(puVar36 + -0x48);
      uVar39 = *(undefined4 *)(puVar36 + -0x44);
    }
    else {
      uVar3 = ((int)puVar25 * 3 + 4) * 4;
      pcVar34 = *(code **)(iVar12 + -0x7d50);
      if (0x7f00 < uVar3) goto LAB_0005305c;
      uVar3 = uVar3 + 7;
LAB_00053148:
      puVar38 = puVar36 + -(uVar3 & 0xfffffff8) + -0x88;
      puVar4 = (uint *)(puVar36 + -(uVar3 & 0xfffffff8) + -0x68);
    }
    *(uint **)(puVar36 + -0x44) = puVar4 + (int)puVar25;
    *(uint **)(puVar36 + -0x48) = puVar4 + (int)puVar25 + (int)puVar25;
    if ((int)puVar25 < (int)puVar28) {
      pcVar34 = *(code **)(iVar12 + -0x7d0c);
      puVar18 = (uint *)((int)puVar28 - (int)puVar25);
      *(undefined4 *)(puVar36 + -0x5c) = uVar39;
      *(uint **)(puVar36 + -0x58) = puVar25;
      *(int *)(puVar36 + -0x54) = (int)puVar25 * 4;
      iVar9 = (*pcVar34)(puVar17,puVar17,puVar17 + (int)puVar25,puVar18);
      iVar12 = *(int *)(puVar36 + -0x68);
      iVar32 = *(int *)(puVar36 + -0x54);
      puVar28 = *(uint **)(puVar36 + -0x58);
      uVar39 = *(undefined4 *)(puVar36 + -0x5c);
      if (iVar9 == 0) {
LAB_0005359c:
        pcVar34 = *(code **)(iVar12 + -0x7d0c);
      }
      else {
        puVar25 = puVar17;
        if ((int)puVar28 <= (int)puVar18) {
LAB_00053588:
          do {
            uVar3 = *puVar25;
            *puVar25 = uVar3 + 1;
            puVar25 = puVar25 + 1;
          } while (uVar3 + 1 == 0);
          goto LAB_0005359c;
        }
        puVar31 = puVar17 + (int)puVar18;
        uVar3 = *puVar31;
        *puVar31 = uVar3 + 1;
        puVar19 = puVar18;
        if (uVar3 + 1 == 0) {
          do {
            puVar19 = (uint *)((int)puVar19 + 1);
            if (puVar28 == puVar19) goto LAB_00053588;
            uVar3 = puVar31[1];
            puVar31 = puVar31 + 1;
            *puVar31 = uVar3 + 1;
          } while (uVar3 + 1 == 0);
          goto LAB_0005359c;
        }
        pcVar34 = *(code **)(iVar12 + -0x7d0c);
      }
      *(uint **)(puVar36 + -0x58) = puVar28;
      *(undefined4 *)(puVar36 + -0x54) = uVar39;
      iVar9 = (*pcVar34)(puVar21,puVar21,(int)puVar21 + iVar32,puVar18);
      iVar12 = *(int *)(puVar36 + -0x68);
      uVar39 = *(undefined4 *)(puVar36 + -0x54);
      puVar25 = *(uint **)(puVar36 + -0x58);
      puVar28 = puVar25;
      if (iVar9 != 0) {
        puVar19 = puVar21;
        if ((int)puVar18 < (int)puVar25) {
          puVar31 = puVar21 + (int)puVar18;
          uVar3 = *puVar31 + 1;
          *puVar31 = uVar3;
          while (uVar3 == 0) {
            puVar18 = (uint *)((int)puVar18 + 1);
            if (puVar25 == puVar18) goto LAB_0005361c;
            puVar5 = puVar31 + 1;
            puVar31 = puVar31 + 1;
            uVar3 = *puVar5 + 1;
            *puVar31 = uVar3;
          }
        }
        else {
LAB_0005361c:
          do {
            uVar3 = *puVar19;
            *puVar19 = uVar3 + 1;
            puVar19 = puVar19 + 1;
          } while (uVar3 + 1 == 0);
        }
      }
    }
    uVar8 = *(undefined4 *)(iVar24 + 0x14);
    pcVar34 = *(code **)(iVar12 + -0x7cd8);
    *(undefined4 *)(puVar36 + -0x5c) = uVar39;
    *(uint **)(puVar36 + -0x54) = puVar25;
    *(undefined4 *)(puVar38 + 0x18) = *(undefined4 *)(puVar36 + -0x48);
    *(undefined4 *)(puVar38 + 0x10) = uVar8;
    *(int *)(puVar38 + 0x14) = iVar7;
    (*pcVar34)(puVar4,puVar25,puVar17,puVar28);
    uVar39 = *(undefined4 *)(iVar24 + 0xc);
    uVar26 = *(undefined4 *)(puVar36 + -0x54);
    uVar27 = *(undefined4 *)(puVar36 + -0x5c);
    uVar8 = *(undefined4 *)(puVar36 + -0x48);
    pcVar34 = *(code **)(*(int *)(puVar36 + -0x68) + -0x7cd8);
    uVar15 = *(undefined4 *)(puVar36 + -0x44);
    *(undefined4 *)(puVar36 + -0x58) = uVar26;
    *(undefined4 *)(puVar38 + 0x14) = uVar27;
    *(undefined4 *)(puVar36 + -0x54) = uVar27;
    *(undefined4 *)(puVar38 + 0x10) = uVar39;
    *(undefined4 *)(puVar38 + 0x18) = uVar8;
    (*pcVar34)(uVar15,uVar26,puVar21,puVar28);
    iVar9 = *(int *)(puVar36 + -0x58);
    iVar12 = *(int *)(puVar36 + -0x68);
    iVar32 = *(int *)(puVar36 + -0x54);
    if ((iVar7 + (int)puVar28 < iVar9) && (iVar7 != iVar9 - (int)puVar28)) {
      iVar11 = (iVar9 - (int)puVar28) - iVar7;
      puVar25 = puVar4 + (int)(iVar7 + (int)puVar28);
      do {
        iVar11 = iVar11 + -1;
        *puVar25 = 0;
        puVar25 = puVar25 + 1;
      } while (iVar11 != 0);
    }
    pcVar34 = *(code **)(iVar12 + -0x7b2c);
    if (iVar32 + (int)puVar28 < iVar9) {
      if (iVar32 != iVar9 - (int)puVar28) {
        iVar7 = (iVar9 - (int)puVar28) - iVar32;
        puVar6 = (undefined4 *)(*(int *)(puVar36 + -0x44) + (int)(iVar32 + (int)puVar28) * 4);
        do {
          iVar7 = iVar7 + -1;
          *puVar6 = 0;
          puVar6 = puVar6 + 1;
        } while (iVar7 != 0);
        pcVar34 = *(code **)(iVar12 + -0x7b2c);
      }
    }
    *(int *)(puVar36 + -0x54) = iVar9;
    uVar3 = (*pcVar34)(puVar4,puVar4,*(undefined4 *)(puVar36 + -0x44),iVar9);
    uVar13 = *puVar4;
    iVar9 = *(int *)(puVar36 + -0x68);
    uVar39 = *(undefined4 *)(puVar36 + -0x54);
    *puVar4 = uVar13 - uVar3;
    puVar25 = puVar4;
    if (uVar13 < uVar3) {
      do {
        puVar25 = puVar25 + 1;
        uVar3 = *puVar25;
        *puVar25 = uVar3 - 1;
      } while (uVar3 == 0);
    }
    uVar8 = *(undefined4 *)(iVar24 + 0x10);
    pcVar34 = *(code **)(iVar9 + -0x7cd8);
    uVar15 = *(undefined4 *)(puVar36 + -0x44);
    *(undefined4 *)(puVar36 + -0x54) = uVar39;
    *(undefined4 *)(puVar38 + 0x18) = *(undefined4 *)(puVar36 + -0x48);
    *(int *)(puVar38 + 0x14) = iVar22;
    *(undefined4 *)(puVar38 + 0x10) = uVar8;
    (*pcVar34)(uVar15,uVar39,puVar17,puVar28);
    iVar9 = *(int *)(puVar36 + -0x68);
    uVar39 = *(undefined4 *)(puVar36 + -0x54);
    if (puVar29 != (uint *)0x0) {
      iVar32 = (int)puVar29 + -1;
      uVar3 = *puVar4;
      puVar18 = puVar17;
      puVar25 = puVar4;
      if (iVar32 == 0) {
        *puVar17 = uVar3;
      }
      else {
        do {
          *puVar18 = uVar3;
          iVar32 = iVar32 + -1;
          uVar3 = puVar25[1];
          puVar18 = puVar18 + 1;
          puVar25 = puVar25 + 1;
        } while (iVar32 != 0);
        puVar17[(int)puVar29 + -1] = uVar3;
      }
    }
    uVar8 = *(undefined4 *)(iVar24 + 8);
    pcVar34 = *(code **)(iVar9 + -0x7cd8);
    *(undefined4 *)(puVar38 + 0x18) = *(undefined4 *)(puVar36 + -0x48);
    *(undefined4 *)(puVar36 + -0x48) = uVar39;
    *(undefined4 *)(puVar38 + 0x10) = uVar8;
    *(undefined4 *)(puVar38 + 0x14) = *(undefined4 *)(puVar36 + -0x50);
    (*pcVar34)(puVar4,uVar39,puVar21,puVar28);
    iVar9 = *(int *)(puVar36 + -0x48);
    iVar32 = *(int *)(puVar36 + -0x68);
    if ((int)puVar28 + iVar22 < iVar9) {
      if (iVar22 != iVar9 - (int)puVar28) {
        iVar12 = (iVar9 - (int)puVar28) - iVar22;
        puVar6 = (undefined4 *)(*(int *)(puVar36 + -0x44) + (int)((int)puVar28 + iVar22) * 4);
        do {
          iVar12 = iVar12 + -1;
          *puVar6 = 0;
          puVar6 = puVar6 + 1;
        } while (iVar12 != 0);
      }
    }
    pcVar34 = *(code **)(iVar32 + -0x7b2c);
    if (*(int *)(puVar36 + -0x50) + (int)puVar28 < iVar9) {
      if (*(int *)(puVar36 + -0x50) != iVar9 - (int)puVar28) {
        iVar22 = (iVar9 - (int)puVar28) - *(int *)(puVar36 + -0x50);
        puVar28 = puVar4 + (int)(*(int *)(puVar36 + -0x50) + (int)puVar28);
        do {
          iVar22 = iVar22 + -1;
          *puVar28 = 0;
          puVar28 = puVar28 + 1;
        } while (iVar22 != 0);
        pcVar34 = *(code **)(iVar32 + -0x7b2c);
      }
    }
    uVar3 = (*pcVar34)(puVar4,puVar4,*(undefined4 *)(puVar36 + -0x44),iVar9);
    uVar13 = *puVar4;
    iVar9 = *(int *)(puVar36 + -0x68);
    puVar18 = (uint *)(uVar13 - uVar3);
    *puVar4 = (uint)puVar18;
    puVar28 = puVar4;
    if (uVar13 < uVar3) {
      do {
        puVar28 = puVar28 + 1;
        uVar3 = *puVar28;
        puVar18 = (uint *)(uVar3 - 1);
        *puVar28 = (uint)puVar18;
      } while (uVar3 == 0);
    }
    iVar32 = (int)puVar29 + -1;
    if (puVar29 == (uint *)0x0) {
      iVar32 = -4;
    }
    else {
      puVar18 = (uint *)*puVar4;
      puVar28 = puVar21;
      if (iVar32 != 0) {
        do {
          puVar4 = puVar4 + 1;
          *puVar28 = (uint)puVar18;
          iVar32 = iVar32 + -1;
          puVar18 = (uint *)*puVar4;
          puVar28 = puVar28 + 1;
        } while (iVar32 != 0);
        puVar28 = puVar21 + (int)puVar29 + -1;
      }
      *puVar28 = (uint)puVar18;
      iVar32 = (int)puVar29 * 4 + -4;
    }
    puVar37 = puVar38;
    if (*(int *)((int)puVar17 + iVar32) != 0 || *(int *)((int)puVar21 + iVar32) != 0)
    goto LAB_000530b4;
    puVar17 = puVar17 + (int)puVar29 + -2;
    puVar21 = puVar21 + (int)puVar29 + -2;
    do {
      uVar3 = *puVar17;
      puVar29 = (uint *)((int)puVar29 + -1);
      uVar13 = *puVar21;
      puVar17 = puVar17 + -1;
      puVar21 = puVar21 + -1;
    } while (uVar3 == 0 && uVar13 == 0);
    piVar30 = *(int **)(puVar36 + -0x4c);
    if (*(int *)(puVar36 + -0x40) == 0) goto LAB_000530c4;
    pcVar34 = *(code **)(iVar9 + -0x7a2c);
LAB_00053478:
    (*pcVar34)();
    iVar9 = *(int *)(puVar36 + -0x68);
    puVar38 = puVar37;
  }
  piVar30 = *(int **)(puVar36 + -0x4c);
LAB_000530c4:
  iVar32 = *(int *)(puVar36 + -0x2c);
  pcVar34 = *(code **)(iVar9 + -0x7b70);
  if (iVar32 == *piVar30) {
    return puVar29;
  }
  pcVar40 = __gmpn_hgcd_reduce_itch;
  (*pcVar34)();
  pcVar35 = *(code **)(pcVar34 + 0x43e08);
  *(uint **)(puVar38 + -0xc) = puVar21;
  *(int *)(puVar38 + -8) = iVar24;
  *(uint **)(puVar38 + -0x10) = puVar17;
  *(code **)(puVar38 + -0x18) = pcVar34 + 0x4b9e4;
  *(code **)(puVar38 + -4) = pcVar40;
  puVar28 = (uint *)(*pcVar35)(iVar32 - (int)puVar18);
  if (999 < iVar32) {
    return (uint *)((iVar32 - (int)puVar18) * 2 + (int)puVar28);
  }
  puVar18 = (uint *)((int)puVar18 + iVar32 + -1);
  if ((int)puVar28 <= (int)puVar18) {
    puVar28 = puVar18;
  }
  return puVar28;
}

